Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para alocar recursos de memória compartilhada para uma fila de VM, um driver de miniporta chama a função NdisAllocateSharedMemory. Por exemplo, o driver de miniport aloca memória partilhada quando recebe o OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID. Além disso, um driver de miniporta pode alocar memória compartilhada para a fila padrão durante a inicialização do adaptador de rede. Para obter mais informações sobre como alocar filas, consulte Alocando uma fila de VM.
O driver de miniporta pode alocar mais memória para a fila até que a fila seja liberada. Para obter mais informações sobre como liberar uma fila, consulte liberando uma fila de VM.
A estrutura NDIS_SHARED_MEMORY_PARAMETERS especifica os parâmetros de memória compartilhada para uma solicitação de alocação de memória compartilhada. Os drivers de miniporta passam essa estrutura para a função NdisAllocateSharedMemory. O NDIS passa essa estrutura para a função NetAllocateSharedMemory (isto é, o ponto de entrada ALLOCATE_SHARED_MEMORY_HANDLER).
Quando um driver de miniporta aloca memória compartilhada, ele especifica o seguinte:
Identificador de fila.
Comprimento da memória partilhada.
Como a memória compartilhada é usada. Por exemplo, o driver de miniporta especifica NdisSharedMemoryUsageReceive se a memória partilhada deve ser usada para buffers de receção.
Se o sinalizador NDIS_SHARED_MEM_PARAMETERS_CONTIGOUS não estiver definido no membro Flags, a memória partilhada pode ser especificada numa lista scatter-gather que está em memória não contígua.
A enumeração NDIS_SHARED_MEMORY_USAGE especifica como a memória compartilhada é usada. A enumeração NDIS_SHARED_MEMORY_USAGE é usada nas estruturas NDIS_SHARED_MEMORY_PARAMETERS e NDIS_SCATTER_GATHER_LIST_PARAMETERS. Para obter informações sobre os parâmetros de memória partilhada nos buffers de recepção de dados VMQ, consulte Memória Partilhada em Buffers de Recepção.
A funçãoNdisAllocateSharedMemory fornece o seguinte ao chamador:
Endereço virtual da memória alocada.
Lista de dispersão e recolha.
Alça de memória compartilhada - para receber indicações.
Identificador de alocação - utilizado para identificar a memória posteriormente.
Os drivers de miniporta chamam a função NdisFreeSharedMemory para libertar memória partilhada para uma fila. Se o driver de miniporta alocou a memória partilhada para uma fila não padrão, ele liberta a memória partilhada no contexto do OID_RECEIVE_FILTER_FREE_QUEUE OID ao libertar a fila. Os drivers de miniporta liberam a memória compartilhada que alocaram para a fila padrão no contexto da função MiniportHaltEx.