NDIS_RECEIVE_FILTER_FIELD_PARAMETERS struttura (ntddndis.h)

La struttura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS specifica il criterio di test del filtro per un campo in un'intestazione di pacchetto di rete.

I filtri di ricezione NDIS vengono usati nelle interfacce NDIS seguenti:

Sintassi

typedef struct _NDIS_RECEIVE_FILTER_FIELD_PARAMETERS {
  NDIS_OBJECT_HEADER       Header;
  ULONG                    Flags;
  NDIS_FRAME_HEADER        FrameHeader;
  NDIS_RECEIVE_FILTER_TEST ReceiveFilterTest;
  union {
    NDIS_MAC_HEADER_FIELD  MacHeaderField;
    NDIS_ARP_HEADER_FIELD  ArpHeaderField;
    NDIS_IPV4_HEADER_FIELD IPv4HeaderField;
    NDIS_IPV6_HEADER_FIELD IPv6HeaderField;
    NDIS_UDP_HEADER_FIELD  UdpHeaderField;
  } HeaderField;
  _HEADER_FIELD            _HEADER_FIELD;
  union {
    UCHAR   FieldByteValue;
    USHORT  FieldShortValue;
    ULONG   FieldLongValue;
    ULONG64 FieldLong64Value;
    UCHAR   FieldByteArrayValue[16];
  } FieldValue;
  _FIELD_VALUE             _FIELD_VALUE;
  union {
    UCHAR   ResultByteValue;
    USHORT  ResultShortValue;
    ULONG   ResultLongValue;
    ULONG64 ResultLong64Value;
    UCHAR   ResultByteArrayValue[16];
  } ResultValue;
  _RESULT_VALUE            _RESULT_VALUE;
} NDIS_RECEIVE_FILTER_FIELD_PARAMETERS, *PNDIS_RECEIVE_FILTER_FIELD_PARAMETERS;

Members

Header

Struttura NDIS_OBJECT_HEADER per la struttura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS . Il driver imposta il membro Type della struttura che Header specifica su NDIS_OBJECT_TYPE_DEFAULT.

Per indicare la versione della struttura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS , il driver imposta il membro Revision su uno dei valori seguenti:

Valore Significato
NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_2
2
Aggiunta di membri aggiuntivi all'unione HeaderField per NDIS 6.30.

Il driver imposta il membro Size su NDIS_SIZEOF_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_2.

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_1
1
Versione originale per NDIS 6.20.

Il driver imposta il membro Size su NDIS_SIZEOF_RECEIVE_FILTER_FIELD_PARAMETERS_REVISION_1.

Flags

Or bit per bit dei flag. I flag seguenti sono validi per OID_RECEIVE_FILTER_SET_FILTER OID.

Valore Significato
NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO
0x00000001
Se questo flag è impostato, la scheda di rete deve indicare solo i pacchetti ricevuti che superano i criteri seguenti:
  • L'indirizzo mac (Media Access Control) del pacchetto corrisponde al test del campo di intestazione MAC specificato.
  • Il pacchetto non contiene un tag VLAN o ha un tag VLAN con un ID pari a zero.
Per altre informazioni su questo flag, vedere la sezione Osservazioni.
Nota Se un driver overlying imposta un filtro di indirizzi MAC e un filtro di identificatore VLAN con una richiesta OID di OID_RECEIVE_FILTER_SET_FILTER, non imposta questo flag in uno dei campi filtro. In questo caso, il driver miniport deve indicare pacchetti che corrispondono sia all'indirizzo MAC specificato che all'identificatore VLAN. Vale a dire, il driver miniport non deve indicare pacchetti con un indirizzo MAC corrispondente con un identificatore VLAN zero o pacchetti non contrassegnati.
 

FrameHeader

Tipo di intestazione nel frame di dati di rete.

ReceiveFilterTest

Tipo di test da eseguire per il filtro di ricezione.

HeaderField

Tipo di campo in un'intestazione. Il tipo di campo (ad esempio, NDIS_MAC_HEADER_FIELD) corrisponde al tipo di intestazione specificato nel membro FrameHeader .

Questa unione contiene i membri seguenti:

HeaderField.MacHeaderField

Tipo di campo in un'intestazione MAC.

HeaderField.ArpHeaderField

Tipo di campo in un'intestazione ARP (Address Resolution Protocol).

HeaderField.IPv4HeaderField

Valore di enumerazione NDIS_IPV4_HEADER_FIELD che specifica il tipo di campo in un'intestazione IP versione 4 (IPv4).

HeaderField.IPv6HeaderField

Valore di enumerazione NDIS_IPV6_HEADER_FIELD che specifica il tipo di campo in un'intestazione IP versione 6 (IPv6).

HeaderField.UdpHeaderField

Tipo di campo in un'intestazione UDP (User Datagram Protocol).

_HEADER_FIELD

FieldValue

Valore che l'adattatore miniport confronta con il valore del campo di intestazione corrispondente nei pacchetti in ingresso. Il percorso del valore del campo di intestazione è determinato dal tipo di campo specificato nel membro HeaderField .

Per altre informazioni, vedere la sezione Osservazioni.

Questa unione contiene i membri seguenti:

FieldValue.FieldByteValue

Valore UCHAR da confrontare con un campo in un pacchetto di rete.

Nota Se il membro MacHeaderField specifica un valore di enumerazione NdisMacHeaderFieldPacketType , questo membro contiene un valore di enumerazione NDIS_MAC_PACKET_TYPE .
 

FieldValue.FieldShortValue

Valore USHORT da confrontare con un campo in un pacchetto di rete.

FieldValue.FieldLongValue

Valore ULONG da confrontare con un campo in un pacchetto di rete.

FieldValue.FieldLong64Value

Valore ULONG64 da confrontare con un campo in un pacchetto di rete.

FieldValue.FieldByteArrayValue[16]

Matrice UCHAR da confrontare con un campo in un pacchetto di rete.

_FIELD_VALUE

ResultValue

Unione che contiene un valore di risultato del test.

Se il membro ReceiveFilterTest è impostato su NdisReceiveFilterTestMaskEqual, la scheda di rete calcola prima un risultato dal valore nel membro FieldValue e il valore del campo di intestazione come specificato dal membro HeaderField . L'adapter confronta quindi il risultato calcolato con ResultValue.

Per altre informazioni, vedere la sezione Osservazioni.

Questa unione contiene i membri seguenti:

ResultValue.ResultByteValue

Valore UCHAR da confrontare con un risultato del test.

ResultValue.ResultShortValue

Valore USHORT da confrontare con un risultato del test.

ResultValue.ResultLongValue

Valore ULONG da confrontare con un risultato del test.

ResultValue.ResultLong64Value

Valore ULONG64 da confrontare con un risultato del test.

ResultValue.ResultByteArrayValue[16]

Matrice UCHAR da confrontare con un risultato di test.

_RESULT_VALUE

Commenti

La struttura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS specifica il criterio di test del filtro per un campo in una possibile matrice di test di campo che è possibile specificare con l'oggetto NDIS_RECEIVE_FILTER_PARAMETERS struttura.

Nella tabella seguente viene descritto come la scheda di rete usa i membri ReceiveFilterTest, FieldValue e ResultValue per eseguire un test di filtro sul valore del campo di intestazione specificato di un pacchetto ricevuto.

Valore ReceiveFilterTest Test di filtro eseguito dalla scheda di rete
NdisReceiveFilterTestEqual (<valore campo intestazione> == FieldValue)
NdisReceiveFilterTestMaskEqual ((<valore campo intestazione> & FieldValue) == ResultValue)
NdisReceiveFilterTestNotEqual (<valore del campo intestazione> != FieldValue)
 
Nota Tutti i valori di campo e risultato multibyte, ad esempio i membri FieldShortValue e ResultLong64Value , devono essere specificati in formato byte di rete (big-endian).
 
Se il flag NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO non è impostato e non esiste alcun filtro di identificatore VLAN configurato da una richiesta di set OID di OID_RECEIVE_FILTER_SET_FILTER, il driver miniport deve eseguire una delle operazioni seguenti:
  • Per NDIS 6.20, il driver miniport deve restituire uno stato non riuscito per la richiesta OID di OID_RECEIVE_FILTER_SET_FILTER.
  • A partire da NDIS 6.30, se il flag di NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO non è impostato e non esiste alcun filtro identificatore VLAN configurato dalla richiesta del metodo OID_RECEIVE_FILTER_SET_FILTER , il driver miniport deve eseguire una delle operazioni seguenti:
    • Il driver miniport deve restituire uno stato non riuscito per la richiesta di OID_RECEIVE_FILTER_SET_FILTER metodo.
    • Il driver miniport deve configurare la scheda di rete per controllare e filtrare i campi di indirizzo MAC specificati. Se nel pacchetto ricevuto è presente un tag VLAN, la scheda di rete deve rimuoverla dai dati del pacchetto. Il driver miniport deve inserire il tag VLAN in un NDIS_NET_BUFFER_LIST_8021Q_INFO associato alla struttura di NET_BUFFER_LIST del pacchetto.
A partire da NDIS 6.30, se il flag NDIS_RECEIVE_FILTER_FIELD_MAC_HEADER_VLAN_UNTAGGED_OR_ZERO non è impostato e esiste un filtro identificatore VLAN diverso da zero configurato da una richiesta di set OID di OID_RECEIVE_FILTER_SET_FILTER, il driver miniport deve eseguire le operazioni seguenti:
  • Il driver miniport deve configurare la scheda di rete per controllare e filtrare i campi di identificatore MAC e VLAN specificati.

    Se nel pacchetto ricevuto è presente un tag VLAN, la scheda di rete deve rimuoverla dai dati del pacchetto. Il driver miniport deve inserire il tag VLAN in un NDIS_NET_BUFFER_LIST_8021Q_INFO associato alla struttura di NET_BUFFER_LIST del pacchetto.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.20 e versioni successive.
Intestazione ntddndis.h (include Ndis.h)

Vedi anche

NDIS_ARP_HEADER_FIELD

NDIS_FRAME_HEADER

NDIS_IPV4_HEADER_FIELD

NDIS_IPV6_HEADER_FIELD

NDIS_MAC_HEADER_FIELD

NDIS_MAC_PACKET_TYPE

NDIS_OBJECT_HEADER

NDIS_RECEIVE_FILTER_PARAMETERS

NDIS_RECEIVE_FILTER_TEST

NDIS_UDP_HEADER_FIELD

OID_RECEIVE_FILTER_SET_FILTER