OID_RECEIVE_FILTER_ALLOCATE_QUEUE
Drivers sobrepostos emitem solicitações de método de identificador de objeto (OID) de OID_RECEIVE_FILTER_ALLOCATE_QUEUE alocar uma fila que tenha um conjunto inicial de parâmetros de configuração.
O InformationBuffer membro da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_RECEIVE_QUEUE_PARAMETERS. Após um retorno bem-sucedido da solicitação do método OID, o InformationBuffer membro da estrutura NDIS_OID_REQUEST contém um ponteiro para uma estrutura NDIS_RECEIVE_QUEUE_PARAMETERS que tem um novo identificador de fila.
Comentários
A solicitação de método OID do OID_RECEIVE_FILTER_ALLOCATE_QUEUE é opcional para drivers de miniporta NDIS 6.20 e posteriores. É obrigatório para drivers de miniporta que suportam a interface de fila de máquina virtual (VMQ).
O driver sobreposto inicializa a estrutura NDIS_RECEIVE_QUEUE_PARAMETERS com sua configuração de fila solicitada. O NDIS atribui um identificador de fila no QueueId membro da estrutura NDIS_RECEIVE_QUEUE_PARAMETERS e passa a solicitação de método para o driver de miniporta.
Nota O condutor sobrejacente pode definir as bandeiras NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION e NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED nas bandeiras membro da estrutura NDIS_RECEIVE_QUEUE_PARAMETERS. Os outros sinalizadores não são usados para alocação de filas.
Depois que um driver de miniporta recebe uma solicitação OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE e a manipula com êxito, a fila está no estado Pausado.
O driver sobreposto deve usar o identificador de fila que o NDIS fornece em solicitações OID subsequentes, por exemplo, para modificar os parâmetros da fila ou liberar a fila. O identificador de fila também é incluído nos dados fora de banda (OOB) em todas as estruturas de NET_BUFFER_LIST associadas à fila. Os drivers usam a macro NET_BUFFER_LIST_RECEIVE_QUEUE_ID para recuperar o identificador de fila em uma estrutura NET_BUFFER_LIST.
Quando o NDIS recebe uma solicitação OID para alocar uma fila de recebimento, ele verifica os parâmetros da fila. Depois que o NDIS aloca os recursos necessários e o identificador de fila, ele envia a solicitação OID para o driver de miniporta subjacente. O identificador de fila é exclusivo para o adaptador de rede associado.
Se o driver de miniporta puder alocar com êxito os recursos de software e hardware necessários para a fila de recebimento, ele concluirá a solicitação OID retornando NDIS_STATUS_SUCCESS.
O driver de miniporta deve manter os identificadores de fila para as filas de recebimento alocadas. O NDIS usa o identificador de fila de uma fila de recebimento para chamadas subsequentes ao driver de miniporta para definir um filtro de recebimento na fila de recebimento, alterar os parâmetros da fila de recebimento ou liberar a fila de recebimento.
Depois que um driver sobreposto aloca uma ou mais filas de recebimento e, opcionalmente, define os filtros iniciais, ele deve emitir OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE definir solicitações OID para notificar o driver de miniporta de que a alocação foi concluída para o lote atual de filas de recebimento.
O driver de miniporta não deve reter nenhum pacote em uma fila de recebimento se não houver filtros definidos nessa fila. Se uma fila nunca teve nenhum filtro definido ou todos os filtros foram limpos, a fila deve estar vazia e todos os pacotes devem ser descartados. Ou seja, os pacotes não são indicados na pilha de drivers ou retidos na fila.
Os drivers sobrepostos usam solicitações OID de OID_RECEIVE_FILTER_FREE_QUEUE para liberar filas que eles alocam.
Códigos de status de retorno
NDIS ou o driver de miniporta retorna um dos seguintes códigos de status para a solicitação de método OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE.
Código de status | Descrição |
---|---|
NDIS_STATUS_SUCCESS |
A fila foi alocada com êxito. O buffer de informações contém a estrutura de NDIS_RECEIVE_QUEUE_PARAMETERS atualizada. |
NDIS_STATUS_PENDING |
O pedido está pendente de conclusão. O código de status final e os resultados serão passados para um manipulador de conclusão de solicitação OID do chamador. |
NDIS_STATUS_INVALID_PARAMETER |
Um ou mais dos parâmetros que o driver sobrejacente forneceu não eram válidos. |
NDIS_STATUS_INVALID_LENGTH |
O buffer de informações era muito curto. NDIS definir o DATA.METHOD_INFORMATION.BytesNeeded membro na estrutura NDIS_OID_REQUEST para o tamanho mínimo de buffer necessário. |
NDIS_STATUS_NOT_SUPPORTED |
A versão NDIS do driver de miniporta é anterior à versão 6.20. |
NDIS_STATUS_FAILURE |
O pedido foi rejeitado por outros motivos. |
Requerimentos
Versão |
Suportado no NDIS 6.20 e posterior. |
Cabeçalho |
Ntddndis.h (inclui Ndis.h) |
Ver também
NET_BUFFER_LIST_RECEIVE_QUEUE_ID