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.
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) |