estrutura NDIS_RECEIVE_FILTER_PARAMETERS (ntddndis.h)

A estrutura NDIS_RECEIVE_FILTER_PARAMETERS especifica os parâmetros para um filtro de recebimento de NDIS.

Os filtros de recebimento do NDIS são usados nas seguintes interfaces NDIS:

Sintaxe

typedef struct _NDIS_RECEIVE_FILTER_PARAMETERS {
  NDIS_OBJECT_HEADER       Header;
  ULONG                    Flags;
  NDIS_RECEIVE_FILTER_TYPE FilterType;
  NDIS_RECEIVE_QUEUE_ID    QueueId;
  NDIS_RECEIVE_FILTER_ID   FilterId;
  ULONG                    FieldParametersArrayOffset;
  ULONG                    FieldParametersArrayNumElements;
  ULONG                    FieldParametersArrayElementSize;
  ULONG                    RequestedFilterIdBitCount;
  ULONG                    MaxCoalescingDelay;
  NDIS_NIC_SWITCH_VPORT_ID VPortId;
} NDIS_RECEIVE_FILTER_PARAMETERS, *PNDIS_RECEIVE_FILTER_PARAMETERS;

Membros

Header

A estrutura NDIS_OBJECT_HEADER para a estrutura NDIS_RECEIVE_FILTER_PARAMETERS . O driver define o membro Type da estrutura especificada por Header como NDIS_OBJECT_TYPE_DEFAULT.

Para indicar a versão da estrutura NDIS_RECEIVE_FILTER_PARAMETERS , o driver define o membro Revision como um dos seguintes valores:

NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2

Foram adicionados os membros VPortId e MaxCoalescingDelay para o NDIS 6.30.

O driver define o membro Size como NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2.

NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1

Versão original do NDIS 6.20.

O driver define o membro Size como NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1.

Flags

Um OR bit a bit dos sinalizadores a seguir.

Versão Valor Significado
NDIS 6.50 e posterior NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION 0x00000002 Se esse sinalizador estiver definido no filtro de recebimento, o adaptador de rede deverá corresponder a esse endereço MAC no quadro Ethernet interno em pacotes encapsulados.
NDIS 6.20 a NDIS 6.40 NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE 0x00000002 Se esse sinalizador estiver definido no filtro de recebimento, o adaptador de rede deverá corresponder a esse endereço MAC no quadro Ethernet interno em pacotes encapsulados por GRE.

FilterType

O tipo do filtro de recebimento.

QueueId

Um identificador de fila de recebimento. Esse identificador é um inteiro entre zero e o número de filas compatíveis com o adaptador de rede. Um valor de NDIS_DEFAULT_RECEIVE_QUEUE_ID especifica a fila de recebimento padrão.

Nota Os drivers de miniport que dão suporte à união de pacotes NDIS ou à interface SR-IOV devem definir o membro QueueId como NDIS_DEFAULT_RECEIVE_QUEUE_ID.
 

FilterId

Um identificador de filtro de recebimento. O identificador de filtro é um inteiro de um para o número de filtros de recebimento compatíveis com o adaptador de rede. Um valor zero é inválido.

FieldParametersArrayOffset

O deslocamento, em bytes, para o primeiro elemento em uma matriz de elementos que seguem essa estrutura. O deslocamento é medido desde o início da estrutura NDIS_RECEIVE_FILTER_PARAMETERS até o início do primeiro elemento. Cada elemento na matriz é uma estrutura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS .

Nota Se FieldParametersArrayNumElements estiver definido como zero, esse membro será ignorado.
 

FieldParametersArrayNumElements

O número de elementos na matriz.

FieldParametersArrayElementSize

O tamanho, em bytes, de cada elemento da matriz.

RequestedFilterIdBitCount

O número de bits em um identificador de filtro. O driver de miniporto usa esse número de bits para o identificador de filtro nos dados OOB (out-of-band) do NetBufferListFilteringInfo em estruturas de NET_BUFFER_LIST . Se esse membro for zero, um driver de miniporto não deverá especificar o identificador de filtro nos dados OOB NetBufferListFilteringInfo .

A partir do NDIS 6.20, esse membro deve ser definido como zero.

MaxCoalescingDelay

O tempo máximo, em milissegundos, em que o primeiro pacote que corresponde a esse filtro de recebimento é salvo dentro do buffer de agrupamento de hardware no adaptador de rede.

Assim que o primeiro pacote que corresponde ao filtro for recebido, o adaptador de rede unirá o pacote. O adaptador também inicia um temporizador de hardware cujo tempo de expiração é definido como o valor do membro MaxCoalescingDelay . Pacotes adicionais que correspondam ao mesmo filtro devem ser unidos pelo adaptador sem redefinir e reiniciar o temporizador de hardware.

Quando o temporizador de hardware expira, o adaptador deve gerar uma interrupção de recebimento para sinalizar ao host sobre pacotes unidos que correspondam ao filtro de recebimento.

Nota Os drivers de miniport que não dão suporte à união de pacotes NDIS devem ignorar esse membro.
 

VPortId

O identificador VPort no qual o filtro de recebimento deve ser configurado. Um valor de NDIS_DEFAULT_VPORT_ID especifica o VPort padrão anexado à função física PCI Express (PCIe) do adaptador de rede.

Nota Esse membro é válido apenas para a interface SR-IOV.
 

Comentários

A estrutura NDIS_RECEIVE_FILTER_PARAMETERS é usada com solicitações OID de
OID_RECEIVE_FILTER_PARAMETERS e
OID_RECEIVE_FILTER_SET_FILTER. Essas solicitações de OID especificam os parâmetros de configuração de um filtro. Uma especificação de filtro pode incluir testes para vários campos em um pacote de rede.

Os membros FieldParametersArrayOffset, FieldParametersArrayNumElements e FieldParametersArrayElementSize da estrutura NDIS_RECEIVE_FILTER_PARAMETERS definem uma matriz de NDIS_RECEIVE_FILTER_FIELD_PARAMETERS estruturas. Cada estrutura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS na matriz define o critério de teste de filtro para um campo em um cabeçalho de rede.

O adaptador de rede combina os resultados de todos os testes de campo com uma operação AND lógica. Ou seja, se qualquer teste de campo incluído na matriz de estruturas de NDIS_RECEIVE_FILTER_FIELD_PARAMETERS falhar, o pacote de rede não atenderá ao critério de filtro especificado.

Quando um adaptador de rede testa um pacote recebido em relação a esses critérios de filtro, ele deve ignorar todos os campos no pacote em que nenhum critério de teste é especificado.

Se o pacote atender ao critério de filtro, o adaptador de rede deverá fazer um dos seguintes procedimentos:

  • Se o adaptador de rede der suporte à união de pacotes de recebimento de NDIS, o adaptador deverá unir o pacote que corresponde ao filtro. O adaptador também deve unir pacotes recebidos que correspondam aos mesmos ou diferentes filtros de recebimento. O adaptador deve reter a geração da interrupção de recebimento até que outro evento de hardware ocorra, como o seguinte:
    • A expiração de um temporizador de hardware cujo tempo de expiração é definido como o valor do membro MaxCoalescingDelay .
    • O espaço disponível dentro do buffer de união de hardware atinge uma marca de baixa água específica do adaptador.

    Para obter mais informações, consulte Manipulando filtros de recebimento de agrupamento de pacotes.

  • Se o adaptador de rede der suporte à interface SR-IOV, o adaptador deverá encaminhar o pacote para a fila de recebimento de um VPort padrão ou não padrão. A fila de recebimento é especificada pelo membro QueueId e o VPort é especificado pelo membro VPortId .
    Nota Começando com Windows Server 2012, a interface SR-IOV dá suporte apenas à fila de recebimento padrão em VPorts padrão e não padrão. A fila de recebimento padrão é especificada definindo o membro QueueId como NDIS_DEFAULT_RECEIVE_QUEUE_ID.
     
  • Se o adaptador de rede der suporte à interface VMQ, o adaptador deverá encaminhar o pacote para a fila de recebimento especificada pelo membro QueueId .

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte no NDIS 6.20 e posterior.
Cabeçalho ntddndis.h (inclua Ndis.h)

Confira também

NDIS_OBJECT_HEADER

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS

NET_BUFFER_LIST

OID_RECEIVE_FILTER_PARAMETERS

OID_RECEIVE_FILTER_SET_FILTER