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:

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.

Nota I driver Miniport che supportano l'unione dei pacchetti NDIS o l'interfaccia SR-IOV devono impostare il membro QueueId su NDIS_DEFAULT_RECEIVE_QUEUE_ID.
 

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 .

Nota Se FieldParametersArrayNumElements è impostato su zero, questo membro viene ignorato.
 

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.

Nota I driver miniport che non supportano l'unione dei pacchetti NDIS devono ignorare questo membro.
 

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.

Nota Questo membro è valido solo per l'interfaccia SR-IOV.
 

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_OBJECT_HEADER

NDIS_RECEIVE_FILTER_FIELD_PARAMETERS

NET_BUFFER_LIST

OID_RECEIVE_FILTER_PARAMETERS

OID_RECEIVE_FILTER_SET_FILTER