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 liberar uma fila de recebimento, um driver sobreposto emite uma solicitação para definir o OID OID_RECEIVE_FILTER_FREE_QUEUE. O InformationBuffer membro da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_RECEIVE_QUEUE_FREE_PARAMETERS com um identificador de fila do tipo NDIS_RECEIVE_QUEUE_ID.
OID_RECEIVE_FILTER_FREE_QUEUE libera uma fila de recebimento que um driver superior alocou através do OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID. Para obter mais informações sobre como alocar uma fila de recebimento, consulte Alocando uma fila de VM.
Nota A fila padrão, que tem um identificador de fila de NDIS_DEFAULT_RECEIVE_QUEUE_ID, é sempre alocada e não pode ser liberada.
Um driver superior deve liberar todos os filtros que define numa fila antes de liberar a fila. Além disso, um driver de nível superior deve liberar todas as filas de receção que alocou em um adaptador de rede antes de chamar a função NdisCloseAdapterEx para fechar uma associação ao adaptador de rede. O NDIS liberta todas as filas alocadas num adaptador de rede antes de chamar a função MiniportHaltEx do miniport driver .
Quando um driver de miniporta recebe uma solicitação para liberar uma fila, ele faz o seguinte:
Deve parar imediatamente o DMA para recursos de memória compartilhada que estão associados à fila.
Gera uma indicação de status para indicar que o DMA está parado.
Aguarda que todas as estruturas de NET_BUFFER_LIST pendentes, associadas à fila, sejam devolvidas.
Libera a memória compartilhada associada e os recursos de hardware.
Quando um driver de miniporta recebe uma solicitação de definição de OID_RECEIVE_FILTER_FREE_QUEUE, a fila deve entrar no estado Stop DMA, parando o DMA na fila, e o driver de miniporta deve indicar a alteração de estado utilizando a indicação de status NDIS_STATUS_RECEIVE_QUEUE_STATE. Para obter mais informações sobre estados de fila, consulte Estados da fila e operações.
Depois que o driver de miniporta emite a indicação de status NDIS_STATUS_RECEIVE_QUEUE_STATE, ele deve aguardar todas as indicações de recebimento pendentes serem concluídas antes de poder liberar a memória compartilhada associada. Para obter mais informações sobre como liberar memória compartilhada, consulte Shared Memory Resource Allocation.