Funzione NdisFIndicateReceiveNetBufferLists (ndis.h)

Un driver di filtro chiama NdisFIndicateReceiveNetBufferLists per indicare che ha ricevuto dati di rete. Per altre informazioni, vedere Ricezione di dati in un driver di filtro.

Sintassi

void NdisFIndicateReceiveNetBufferLists(
  [in] NDIS_HANDLE      NdisFilterHandle,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] NDIS_PORT_NUMBER PortNumber,
  [in] ULONG            NumberOfNetBufferLists,
  [in] ULONG            ReceiveFlags
);

Parametri

[in] NdisFilterHandle

Handle NDIS che identifica questo modulo di filtro. NDIS ha passato l'handle al driver di filtro in una chiamata alla funzione FilterAttach .

[in] NetBufferLists

Elenco collegato di strutture NET_BUFFER_LIST . Ogni struttura NET_BUFFER_LIST contiene una struttura NET_BUFFER .

[in] PortNumber

Numero di porta che identifica una porta dell'adattatore miniport. I numeri di porta dell'adattatore Miniport vengono assegnati chiamando la funzione NdisMAllocatePort . Un valore zero identifica la porta predefinita di un adattatore miniport.

[in] NumberOfNetBufferLists

Numero di strutture NET_BUFFER_LIST presenti nell'elenco collegato di strutture in NetBufferLists .

[in] ReceiveFlags

Flag che definiscono gli attributi per l'indicazione di ricezione. I flag possono essere combinati con un'operazione OR. Per cancellare tutti i flag, impostare questo membro su zero. Questa funzione supporta i flag seguenti:

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

Specifica che il runtime di integrazione corrente è DISPATCH_LEVEL. Per altre informazioni su questo flag, vedere Dispatch IRQL Tracking.For more information about this flag, see Dispatch IRQL Tracking.

NDIS_RECEIVE_FLAGS_RESOURCES

Specifica che il driver di filtro recupera la proprietà delle strutture NET_BUFFER_LIST e le strutture NET_BUFFER associate immediatamente dopo la chiamata a NdisFIndicateReceiveNetBufferLists restituisce .

NDIS_RECEIVE_FLAGS_SINGLE_ETHER_TYPE

Specifica che tutte le strutture NET_BUFFER_LIST nell'elenco in NetBufferLists hanno lo stesso tipo di protocollo (EtherType).

NDIS_RECEIVE_FLAGS_SINGLE_VLAN

Specifica che tutte le strutture NET_BUFFER_LIST nell'elenco in NetBufferLists appartengono alla stessa VLAN.

NDIS_RECEIVE_FLAGS_PERFECT_FILTERED

Specifica che tutte le strutture NET_BUFFER_LIST nell'elenco in NetBufferLists includono solo i dati corrispondenti al filtro di pacchetti e all'elenco di indirizzi multicast assegnati all'adattatore miniport.

NDIS_RECEIVE_FLAGS_SINGLE_QUEUE

Specifica che tutte le strutture NET_BUFFER_LIST nell'elenco in NetBufferLists appartengono alla stessa coda di macchine virtuali. Un driver miniport deve impostare questo flag per tutte le indicazioni di ricezione in una coda se il flag NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATION è stato impostato nel membro Flags del NDIS_RECEIVE_QUEUE_PARAMETERS struttura al momento dell'allocazione della coda.

NDIS_RECEIVE_FLAGS_SHARED_MEMORY_INFO_VALID

Specifica che tutte le strutture NET_BUFFER_LIST nell'elenco in NetBufferLists contengono informazioni sulla memoria condivise valide. Quando questo flag viene impostato su un NET_BUFFER_LIST ricevuto, NDIS considera le informazioni sulla memoria condivisa come valide. Quando questo flag non è impostato, NDIS e driver ignorano le informazioni sulla memoria condivisa. Ad esempio, i driver intermedi che modificano i dati dei pacchetti possono usare questo flag per determinare se i dati devono essere copiati. I driver Miniport possono usare il flag per determinare come liberare la memoria associata a una coda di macchine virtuali quando viene eliminata una coda.

NDIS_RECEIVE_FLAGS_MORE_NBLS

Riservato.

NDIS_RECEIVE_FLAGS_SWITCH_SINGLE_SOURCE

Se questo flag è impostato, tutti i pacchetti in un elenco collegato di strutture NET_BUFFER_LIST hanno origine dalla stessa porta di origine del commutatore estendibile Hyper-V.

Per altre informazioni, vedere Flag di invio e ricezione del commutatore estendibile Hyper-V.

Nota Se ogni pacchetto nell'elenco collegato di strutture NET_BUFFER_LIST utilizza la stessa porta di origine, l'estensione deve impostare il flag NDIS_RETURN_FLAGS_SWITCH_SINGLE_SOURCE nel parametro ReturnFlags di FilterReturnNetBufferLists al termine della richiesta di ricezione. L'estensione deve impostare questo flag nel parametro ReturnFlags se chiama NdisFReturnNetBufferLists per restituire pacchetti non originato o clonato.
 

NDIS_RECEIVE_FLAGS_SWITCH_DESTINATION_GROUP

Se questo flag è impostato, tutti i pacchetti in un elenco collegato di strutture NET_BUFFER_LIST devono essere inoltrati alla stessa porta di destinazione del commutatore estendibile.

Per altre informazioni, vedere Flag di invio e ricezione del commutatore estendibile Hyper-V.

Valore restituito

nessuno

Osservazioni

Quando un driver di filtro chiama la funzione NdisFIndicateReceiveNetBufferLists , specifica un elenco di strutture NET_BUFFER_LIST nel parametro NetBufferLists . NDIS passa le strutture NET_BUFFER_LIST ai driver overlying.

I driver di filtro possono chiamare NdisFIndicateReceiveNetBufferLists per ottenere un'indicazione di ricezione.

I driver di filtro possono anche filtrare ricevono indicazioni originate dai driver sottostanti. NDIS chiama Funzione FilterReceiveNetBufferLists per filtrare tali indicazioni di ricezione.

Un driver di filtro deve impostare il membro SourceHandle di ogni struttura NET_BUFFER_LIST originata sullo stesso valore del parametro NdisFilterHandle . Il driver di filtro non deve modificare il membro SourceHandle in alcuna struttura NET_BUFFER_LIST che non ha avuto origine.

Il driver di filtro deve inizializzare correttamente le strutture di NET_BUFFER_LIST , le strutture associate NET_BUFFER e tutti gli ELENCHI di dati MDL associati.

Se un driver di filtro chiama la funzione NdisFIndicateReceiveNetBufferLists e cancella il flag NDIS_RECEIVE_FLAG_RESOURCES nel parametro ReceiveFlags , NDIS restituisce le strutture NET_BUFFER_LIST indicate al driver di filtro Funzione FilterReturnNetBufferLists . In questo caso, il driver di filtro non deve recuperare le strutture NET_BUFFER_LIST finché NDIS non restituisce le strutture NET_BUFFER_LIST in FilterReturnNetBufferLists.

Se un driver di filtro chiama NdisFIndicateReceiveNetBufferLists e imposta il flag NDIS_RECEIVE_FLAG_RESOURCES nel parametro ReceiveFlags , questo indica che il driver di filtro deve recuperare immediatamente la proprietà delle strutture NET_BUFFER_LIST . In questo caso, NDIS non chiama la funzione FilterReturnNetBufferLists del driver di filtro per restituire le strutture NET_BUFFER_LIST . Al contrario, NDIS restituisce le strutture NET_BUFFER_LIST al driver di filtro al momento della restituzione da NdisFIndicateReceiveNetBufferLists. Il driver di filtro deve recuperare le strutture NET_BUFFER_LIST immediatamente dopo la restituzione di NdisFIndicateReceiveNetBufferLists . Per recuperare le strutture NET_BUFFER_LIST , un driver di filtro può chiamare la propria funzione FilterReturnNetBufferLists .

L'impostazione del flag NDIS_RECEIVE_FLAG_RESOURCES nel parametro ReceiveFlags forza i driver overlying a copiare i dati di rete e rilasciare le strutture NET_BUFFER_LIST al driver di filtro.

Requisiti

Requisito Valore
Client minimo supportato Supportato in NDIS 6.0 e versioni successive.
Piattaforma di destinazione Desktop
Intestazione ndis.h (include Ndis.h)
Libreria Ndis.lib
IRQL <= DISPATCH_LEVEL
Regole di conformità DDI Irql_Filter_Driver_Function(ndis)

Vedi anche

FilterAttach

FilterReceiveNetBufferLists

FilterReturnNetBufferLists

NDIS_RECEIVE_QUEUE_PARAMETERS

NET_BUFFER

NET_BUFFER_LIST

NdisMAllocatePort

Ricezione di dati in un driver di filtro