NDIS_RECEIVE_FILTER_PARAMETERS struttura (ntddndis.h)
La struttura NDIS_RECEIVE_FILTER_PARAMETERS specifica i parametri per un filtro di ricezione NDIS.
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 tecnologia, 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 tecnologia, vedere Impostazione di un filtro di ricezione su 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_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;
Members
Header
Struttura NDIS_OBJECT_HEADER per la struttura NDIS_RECEIVE_FILTER_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_PARAMETERS , il driver imposta il membro Revision su uno dei valori seguenti:
NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_2
Aggiunta dei membri VPortId e MaxCoalescingDelay per NDIS 6.30.
Il driver imposta il membro Size su NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_2.
NDIS_RECEIVE_FILTER_PARAMETERS_REVISION_1
Versione originale per NDIS 6.20.
Il driver imposta il membro Size su NDIS_SIZEOF_RECEIVE_FILTER_PARAMETERS_REVISION_1.
Flags
Or bit per bit dei flag seguenti.
Versione | Valore | Significato |
---|---|---|
NDIS 6.50 e versioni successive | NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION 0x00000002 | Se questo flag è impostato sul filtro di ricezione, la scheda di rete deve corrispondere a questo indirizzo MAC nella cornice Ethernet interna nei pacchetti incapsulati. |
NDIS 6.20 a NDIS 6.40 | NDIS_RECEIVE_FILTER_PACKET_ENCAPSULATION_GRE 0x00000002 | Se questo flag è impostato nel filtro di ricezione, la scheda di rete deve corrispondere a questo indirizzo MAC nel frame Ethernet interno nei pacchetti incapsulati GRE. |
FilterType
Tipo del filtro di ricezione.
QueueId
Identificatore della coda di ricezione. Questo identificatore è un intero compreso tra zero e il numero di code supportate dalla scheda di rete. Un valore di NDIS_DEFAULT_RECEIVE_QUEUE_ID specifica la coda di ricezione predefinita.
FilterId
Identificatore di filtro di ricezione. L'identificatore del filtro è un numero intero compreso tra uno e il numero di filtri di ricezione supportati dalla scheda di rete. Un valore pari a zero non è valido.
FieldParametersArrayOffset
Offset, in byte, al primo elemento in una matrice di elementi che seguono questa struttura. L'offset viene misurato dall'inizio della struttura NDIS_RECEIVE_FILTER_PARAMETERS fino all'inizio del primo elemento. Ogni elemento della matrice è una struttura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS .
FieldParametersArrayNumElements
Numero di elementi nella matrice.
FieldParametersArrayElementSize
Dimensione in byte di ogni elemento nella matrice.
RequestedFilterIdBitCount
Numero di bit in un identificatore di filtro. Il driver miniport usa questo numero di bit per l'identificatore di filtro nei dati NetBufferListFilteringInfo out-of-band (OOB) nelle strutture NET_BUFFER_LIST . Se questo membro è zero, un driver miniport non deve specificare l'identificatore del filtro nei dati OOB NetBufferListFilteringInfo .
A partire da NDIS 6.20, questo membro deve essere impostato su zero.
MaxCoalescingDelay
Tempo massimo, in millisecondi, che il primo pacchetto corrispondente a questo filtro di ricezione viene salvato all'interno del buffer di coalescing hardware nella scheda di rete.
Non appena viene ricevuto il primo pacchetto che corrisponde al filtro, l'adattatore di rete esegue il carbone del pacchetto. L'adattatore avvia anche un timer hardware la cui ora di scadenza è impostata sul valore del membro MaxCoalescingDelay . I pacchetti aggiuntivi che corrispondono allo stesso filtro devono essere uniti dall'adattatore senza reimpostare e riavviare il timer hardware.
Al termine del timer hardware, l'adattatore deve generare un interruzione di ricezione per segnalare all'host pacchetti coalescenti che corrispondono al filtro di ricezione.
VPortId
Identificatore VPort in cui deve essere configurato il filtro di ricezione. Un valore di NDIS_DEFAULT_VPORT_ID specifica il VPort predefinito collegato alla funzione fisica PCI Express (PCIe) della scheda di rete.
Commenti
La struttura NDIS_RECEIVE_FILTER_PARAMETERS viene usata con richieste OID di
OID_RECEIVE_FILTER_PARAMETERS e
OID_RECEIVE_FILTER_SET_FILTER. Queste richieste OID specificano i parametri di configurazione di un filtro. Una specifica del filtro può includere test per più campi in un pacchetto di rete.
I membri FieldParametersArrayOffset, FieldParametersArrayNumElements e FieldParametersArrayElementSize della struttura NDIS_RECEIVE_FILTER_PARAMETERS definiscono una matrice di NDIS_RECEIVE_FILTER_FIELD_PARAMETERS strutture. Ogni struttura NDIS_RECEIVE_FILTER_FIELD_PARAMETERS nella matrice imposta il criterio di test del filtro per un campo in un'intestazione di rete.
La scheda di rete combina i risultati di tutti i test di campo con un'operazione AND logica. Ovvero, se qualsiasi test di campo incluso nella matrice di strutture NDIS_RECEIVE_FILTER_FIELD_PARAMETERS ha esito negativo, il pacchetto di rete non soddisfa il criterio di filtro specificato.
Quando una scheda di rete verifica un pacchetto ricevuto rispetto a questi criteri di filtro, deve ignorare tutti i campi nel pacchetto in cui non viene specificato alcun criterio di test.
Se il pacchetto soddisfa il criterio di filtro, la scheda di rete deve eseguire una delle operazioni seguenti:
-
Se la scheda di rete supporta l'unione dei pacchetti NDIS, l'adattatore deve unire il pacchetto corrispondente al filtro. L'adattatore deve inoltre unire pacchetti ricevuti che corrispondono allo stesso filtro di ricezione o diverso. L'adattatore deve essere bloccato per generare l'interruzione della ricezione fino a quando non si verifica un altro evento hardware, ad esempio quanto segue:
- Scadenza di un timer hardware la cui ora di scadenza è impostata sul valore del membro MaxCoalescingDelay .
- Lo spazio disponibile all'interno del buffer di coalescing hardware raggiunge un segno di bassa acqua specifico dell'adattatore.
Per altre informazioni, vedere Gestione dei filtri di ricezione del carbone dei pacchetti.
-
Se la scheda di rete supporta l'interfaccia SR-IOV, la scheda deve inoltrare il pacchetto alla coda di ricezione di un VPort predefinito o non definito. La coda di ricezione viene specificata dal membro QueueId e la VPort viene specificata dal membro VPortId .
Nota A partire da Windows Server 2012, l'interfaccia SR-IOV supporta solo la coda di ricezione predefinita in VPort predefiniti e non definiti. La coda di ricezione predefinita viene specificata impostando il membro QueueId su NDIS_DEFAULT_RECEIVE_QUEUE_ID.
- Se la scheda di rete supporta l'interfaccia VMQ, la scheda deve inoltrare il pacchetto alla coda di ricezione specificata dal membro QueueId .
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_FIELD_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