Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Para alocar recursos de memória compartilhada para uma fila de VM, um driver de miniport chama a função NdisAllocateSharedMemory. Por exemplo, o miniport driver aloca memória compartilhada quando recebe o OID OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE. Além disso, um driver de miniporto pode alocar memória compartilhada para a fila padrão durante o processo de 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 ela seja liberada. Para obter mais informações sobre como liberar uma fila, consulte Como liberar 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 miniport passam essa estrutura para a função NdisAllocateSharedMemory . O NDIS passa essa estrutura para a função NetAllocateSharedMemory (ou seja, o ponto de entrada ALLOCATE_SHARED_MEMORY_HANDLER).
Quando um driver de miniporto aloca memória compartilhada, ele especifica o seguinte:
Identificador de fila.
Comprimento da memória compartilhada.
Como a memória compartilhada é usada. Por exemplo, o driver de miniporto especifica NdisSharedMemoryUsageReceive se a memória compartilhada será utilizada para buffers de recebimento.
Se o sinalizador NDIS_SHARED_MEM_PARAMETERS_CONTIGUOUS não estiver definido no membro Sinalizadores, a memória compartilhada poderá ser especificada em uma lista de scatter-gather que se encontra na 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 parâmetros de memória compartilhada em buffers de dados de recepção do VMQ, consulte Memória Compartilhada em Buffers de Recebimento.
A função NdisAllocateSharedMemory fornece o seguinte para o chamador:
Endereço virtual da memória alocada.
Lista de coleta de dispersão.
Identificador de memória compartilhado – para indicações de recebimento.
Identificador de alocação – usado para identificar a memória posteriormente.
Os drivers de miniport chamam a função NdisFreeSharedMemory para liberar memória compartilhada para uma fila. Se o driver de miniporto alocou a memória compartilhada para uma fila não padrão, ele libera a memória compartilhada no contexto da OID OID_RECEIVE_FILTER_FREE_QUEUE enquanto está liberando a fila. Miniporte drivers memória compartilhada gratuita que eles alocaram para a fila padrão no contexto da função MiniportHaltEx.