OID_RECEIVE_FILTER_FREE_QUEUE
Os drivers de protocolo NDIS emitem solicitações de conjunto de OID (identificador de objeto) de OID_RECEIVE_FILTER_FREE_QUEUE para liberar uma fila de recebimento.
O membro InformationBuffer 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 de OID de OID_RECEIVE_FILTER_FREE_QUEUE é opcional para drivers de miniporto NDIS 6.20 e posteriores. É obrigatório para drivers de miniporte 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_RECEIVE_FILTER_FREE_QUEUE OID 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 DMA Parado. 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 NDIS_STATUS_RECEIVE_QUEUE_STATE status com o membro QueueState da estrutura de 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 todos os pacotes de recebimento indicados para que essa fila seja retornada ao 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 o OID_RECEIVE_FILTER_FREE_QUEUE solicitação de OID 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 estiver liberando a fila. Miniportar drivers liberam memória compartilhada que eles alocaram para a fila padrão no contexto da função MiniportHaltEx .
Um driver subjacente deve liberar todos os filtros que ele definiu em uma fila antes de liberar a fila. Além disso, um driver sobreposto deve liberar todas as filas de recebimento alocadas em um adaptador de rede antes de chamar a função NdisCloseAdapterEx para 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.
Retornar códigos de status
A função MiniportOidRequest do driver de miniport retorna um dos seguintes valores para esta solicitação:
Termo | Descrição |
---|---|
NDIS_STATUS_SUCCESS |
O driver de miniporte concluiu a solicitação com êxito. |
NDIS_STATUS_PENDING |
O driver de miniporte 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ção NdisMOidRequestComplete , passando NDIS_STATUS_SUCCESS para o parâmetro Status . |
NDIS_STATUS_NOT_ACCEPTED |
O driver de miniporte 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 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 os DADOS. 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) |
Confira também
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS