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.
Os drivers de protocolo NDIS emitem solicitações de identificador de objeto (OID) de conjunto de OID_RECEIVE_FILTER_FREE_QUEUE para liberar uma fila de recebimento.
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.
Comentários
A solicitação de conjunto OID de OID_RECEIVE_FILTER_FREE_QUEUE é opcional para drivers de miniporta NDIS 6.20 e posteriores. É obrigatório para drivers de miniporta que suportam a interface de fila da máquina virtual.
Depois que um driver sobreposto emite o OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID para alocar uma fila de recebimento, ele emite o OID_RECEIVE_FILTER_FREE_QUEUE OID para liberar a fila de recebimento.
Quando o NDIS solicita um driver de miniporta para liberar uma fila de recebimento VMQ, ele segue estas etapas:
O adaptador de rede interrompe a transferência DMA de dados para receber buffers associados à fila de recebimento, após o que a fila deve entrar no estado DMA Parado. O adaptador de rede provavelmente parou a atividade DMA quando recebeu a solicitação OID OID_RECEIVE_FILTER_CLEAR_FILTER para limpar o último filtro de conjunto na fila de recebimento.
O driver de miniporta gera uma indicação de status NDIS_STATUS_RECEIVE_QUEUE_STATE com o QueueState membro da estrutura de NDIS_RECEIVE_QUEUE_STATE definido como NdisReceiveQueueOperationalStateDmaStopped para notificar o NDIS de que a transferência DMA foi interrompida.
O driver de miniporta aguarda todos os pacotes de recebimento indicados para que essa fila seja retornada ao driver de miniporta.
O driver de miniporta libera toda a memória compartilhada alocada para os buffers de recebimento do adaptador de rede associados à fila chamando NdisFreeSharedMemory.
O driver de miniporta conclui a solicitação OID OID_RECEIVE_FILTER_FREE_QUEUE para liberar a fila de recebimento.
Os drivers de miniporta chamam a funçãoNdisFreeSharedMemory para liberar memória compartilhada para uma fila. Se o driver de miniporta alocou a memória compartilhada para uma fila não padrão, o driver libera a memória compartilhada no contexto do OID_RECEIVE_FILTER_FREE_QUEUE OID enquanto está liberando a fila. Os drivers de miniporta liberam memória compartilhada alocada para a fila padrão no contexto da funçãoMiniportHaltEx.
Um driver sobreposto deve liberar todos os filtros que definiu em uma fila antes de liberar a fila. Além disso, um driver sobreposto deve liberar todas as filas de recebimento que alocou em um adaptador de rede antes de chamar a funçãoNdisCloseAdapterEx para fechar uma ligação ao adaptador de rede. O NDIS libera todas as filas alocadas em um adaptador de rede antes de chamar a função deMiniportHaltEx do driver de miniporta.
Códigos de status de retorno
A funçãoMiniportOidRequest do driver de miniportaretorna um dos seguintes valores para essa solicitação:
O NDIS retorna um dos seguintes códigos de status para essa solicitação:
| Código de status | Descrição |
|---|---|
NDIS_STATUS_SUCCESS |
A fila solicitada foi liberada com êxito. |
NDIS_STATUS_PENDING |
O pedido está pendente de conclusão. O NDIS passará o código de status final e os resultados para o manipulador de conclusão de solicitação OID para o chamador após a conclusão da solicitação. |
NDIS_STATUS_INVALID_PARAMETER |
O identificador de fila é inválido. |
NDIS_STATUS_INVALID_LENGTH |
O buffer de informações é muito curto. O NDIS define a DATA.METHOD_INFORMATION.BytesNeeded membro na estrutura NDIS_OID_REQUEST para o tamanho mínimo de buffer necessário. |
Requerimentos
Versão |
Suportado no NDIS 6.20 e posterior. |
Cabeçalho |
Ntddndis.h (inclui Ndis.h) |
Ver também
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS