Compartilhar via


OID_RECEIVE_FILTER_ALLOCATE_QUEUE

Os drivers em excesso emitem solicitações de método OID (identificador de objeto) de OID_RECEIVE_FILTER_ALLOCATE_QUEUE para alocar uma fila que tem um conjunto inicial de parâmetros de configuração.

O membro InformationBuffer 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 membro InformationBuffer 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 do método OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE é opcional para drivers de miniporta NDIS 6.20 e posteriores. É obrigatório para drivers de miniporta que dão suporte à interface VMQ (fila de máquina virtual).

O driver de sobreposição inicializa a estrutura NDIS_RECEIVE_QUEUE_PARAMETERS com sua configuração de fila solicitada. O NDIS atribui um identificador de fila no membro QueueId da estrutura NDIS_RECEIVE_QUEUE_PARAMETERS e passa a solicitação de método para o driver de miniporto.

Nota O driver de sobreposição pode definir os sinalizadores NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION e NDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED no membro Flags da estrutura NDIS_RECEIVE_QUEUE_PARAMETERS . Os outros sinalizadores não são usados para alocação de fila.

Depois que um driver de miniporto é emitido uma solicitação OID de OID_RECEIVE_FILTER_ALLOCATE_QUEUE e lida com ele 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 está incluído nos dados OOB (fora de banda) em todas as estruturas 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 do adaptador de rede associado.

Se o driver de miniporto 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 reter 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 para o driver de miniporto 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 miniporto de que a alocação está concluída para o lote atual de filas de recebimento.

O driver de miniporta não deverá reter nenhum pacote em uma fila de recebimento se não houver filtros definidos nessa fila. Se uma fila nunca tiver nenhum filtro definido ou todos os filtros tiverem sido limpos, a fila deverá estar vazia e todos os pacotes deverão ser descartados. Ou seja, os pacotes não são indicados na pilha do driver ou retidos na fila.

Os drivers excessivamente usados usam solicitações OID de OID_RECEIVE_FILTER_FREE_QUEUE para liberar filas alocadas.

Códigos de status de retorno

O 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

A solicitação 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 fornecidos pelo driver em excesso não eram válidos.

NDIS_STATUS_INVALID_LENGTH

O buffer de informações era 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.

NDIS_STATUS_NOT_SUPPORTED

A versão NDIS do driver de miniporto é anterior à versão 6.20.

NDIS_STATUS_FAILURE

A solicitação falhou por outros motivos.

Requisitos

Versão

Com suporte no NDIS 6.20 e posterior.

Cabeçalho

Ntddndis.h (inclua Ndis.h)

Confira também

NDIS_OID_REQUEST

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_QUEUE_ID

OID_RECEIVE_FILTER_FREE_QUEUE

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS_RECEIVE_QUEUE_PARAMETERS