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:
-
Agrupamento de pacotes NDIS. Para obter mais informações sobre como usar filtros de recebimento nessa tecnologia, consulte Gerenciando filtros de recebimento de agrupamento de pacotes.
-
Virtualização de E/S de Raiz Única (SR-IOV). Para obter mais informações sobre como usar filtros de recebimento nessa tecnologia, consulte Configurando um filtro de recebimento em uma porta virtual.
-
VMQ (Fila de Máquinas Virtuais). Para obter mais informações sobre como usar filtros de recebimento nessa interface, consulte Configuração e limpeza de filtros VMQ.
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.
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 .
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.
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.
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_RECEIVE_FILTER_FIELD_PARAMETERSComentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de