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:
-
Unione dei pacchetti NDIS. Per altre informazioni su come usare i filtri di ricezione in questa interfaccia, vedere Gestione dei filtri di ricezione del carbone dei pacchetti.
-
Virtualizzazione I/O radice singola (SR-IOV). Per altre informazioni su come usare i filtri di ricezione in questa interfaccia, vedere Impostazione di un filtro di ricezione in una porta virtuale.
-
VMQ (Virtual Machine Queue). Per altre informazioni sull'uso dei filtri di ricezione in questa interfaccia, vedere Impostazione e cancellazione dei filtri VMQ.
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:
Flags
Or bit per bit dei flag. I flag seguenti sono validi per OID_RECEIVE_FILTER_SET_FILTER OID.
Valore | Significato |
---|---|
|
Se questo flag è impostato, la scheda di rete deve indicare solo i pacchetti ricevuti che superano i criteri seguenti:
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.
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) |
- 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.
-
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_RECEIVE_FILTER_PARAMETERSCommenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per