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.
Os drivers de protocolo NDIS emitem solicitações do OID (identificador de objeto) 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 de NDIS_RECEIVE_QUEUE_FREE_PARAMETERS com um identificador de fila do tipo NDIS_RECEIVE_QUEUE_ID.
Observações
A solicitação de conjunto de OID de OID_RECEIVE_FILTER_FREE_QUEUE é opcional para drivers de miniporto NDIS 6.20 e posteriores. É obrigatório para drivers de miniporto que dão suporte à interface da fila da máquina virtual.
Depois que um driver sobreposto emite o OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE para alocar uma fila de recebimento, ele emite o OID OID_RECEIVE_FILTER_FREE_QUEUE para liberar a fila de recebimento.
Quando o NDIS solicita um driver de miniporto para liberar uma fila de recebimento de VMQ, ele segue estas etapas:
O adaptador de rede interrompe a transferência de dados de DMA para receber buffers associados à fila de recebimento, após o qual a fila deve entrar no estado parado do DMA. O adaptador de rede provavelmente interrompeu a atividade de DMA quando recebeu a solicitação OID OID_RECEIVE_FILTER_CLEAR_FILTER para limpar o último filtro definido na fila de recebimento.
O driver de miniporto gera uma indicação de status NDIS_STATUS_RECEIVE_QUEUE_STATE com o QueueState membro da estrutura NDIS_RECEIVE_QUEUE_STATE definida como NdisReceiveQueueOperationalStateDmaStopped para notificar o NDIS de que a transferência de DMA foi interrompida.
O driver de miniporto aguarda que todos os pacotes de recebimento indicados sejam retornados para o driver de miniporto.
O driver de miniporto libera toda a memória compartilhada alocada para os buffers de recebimento do adaptador de rede associados à fila chamando NdisFreeSharedMemory.
O driver de miniporto conclui a solicitação OID OID_RECEIVE_FILTER_FREE_QUEUE para liberar a fila de recebimento.
Os drivers de miniport chamam a função NdisFreeSharedMemory para liberar memória compartilhada para uma fila. Se o driver de miniporto alocar a memória compartilhada para uma fila não padrão, o driver liberará a memória compartilhada no contexto do OID_RECEIVE_FILTER_FREE_QUEUE OID enquanto ele está liberando a fila. Miniporte drivers memória compartilhada gratuita que eles alocaram para a fila padrão no contexto da função MiniportHaltEx.
Um driver em excesso deve liberar todos os filtros que ele definiu em uma fila antes de liberar a fila. Além disso, um driver em excesso deve liberar todas as filas de recebimento alocadas em um adaptador de rede antes de chamar a funçãoNdisCloseAdapterEx dopara fechar uma associação ao adaptador de rede. O NDIS libera todas as filas alocadas em um adaptador de rede antes de chamar a função MiniportHaltEx do driver de miniport.
Códigos de status de retorno
A funçãoMiniportOidRequestdo driver de miniporto retorna um dos seguintes valores para esta solicitação:
| Prazo | Descrição |
|---|---|
NDIS_STATUS_SUCCESS |
O driver de miniporto concluiu a solicitação com êxito. |
NDIS_STATUS_PENDING |
O driver de miniporto concluirá a solicitação de forma assíncrona. Depois que o driver de miniporto tiver concluído todo o processamento, ele deverá ter êxito na solicitação chamando a funçãoNdisMOidRequestComplete, passando NDIS_STATUS_SUCCESS para o parâmetro status do. |
NDIS_STATUS_NOT_ACCEPTED |
O driver de miniporto está sendo redefinido. |
NDIS_STATUS_REQUEST_ABORTED |
O driver de miniporto parou de processar a solicitação. Por exemplo, o NDIS chamou a função MiniportResetEx. |
O NDIS retorna um dos seguintes códigos de status para esta solicitação:
| Código de status | Descrição |
|---|---|
NDIS_STATUS_SUCCESS |
A fila solicitada foi liberada com êxito. |
NDIS_STATUS_PENDING |
A solicitação está pendente de conclusão. O NDIS passará o código de status final e os resultados para o manipulador de conclusão da 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 o DATA.METHOD_INFORMATION.membro BytesNeeded na estrutura NDIS_OID_REQUEST para o tamanho mínimo do buffer necessário. |
Requisitos
Versão |
Com suporte no NDIS 6.20 e posterior. |
Cabeçalho |
Ntddndis.h (inclua Ndis.h) |
Consulte também
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS