Condividi tramite


Funzione NdisFSendNetBufferLists (ndis.h)

I driver di filtro chiamano la funzione NdisFSendNetBufferLists per inviare un elenco di buffer di dati di rete.

Sintassi

void NdisFSendNetBufferLists(
  [in] NDIS_HANDLE                       NdisFilterHandle,
       __drv_aliasesMem PNET_BUFFER_LIST NetBufferList,
  [in] NDIS_PORT_NUMBER                  PortNumber,
  [in] ULONG                             SendFlags
);

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

NetBufferList

Puntatore a un elenco collegato di strutture NET_BUFFER_LIST. Ogni struttura NET_BUFFER_LIST descrive un elenco di strutture 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] SendFlags

Flag che definiscono gli attributi per l'operazione di invio. 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_SEND_FLAGS_DISPATCH_LEVEL

Specifica che il runtime di integrazione corrente è DISPATCH_LEVEL. Per altre informazioni su questo flag, vedere Dispatch IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

Specifica che NDIS deve verificare la presenza di loopback. Per impostazione predefinita, NDIS non esegue il loopback dei dati al driver che ha inviato la richiesta di invio. Un driver overlying può eseguire l'override di questo comportamento impostando questo flag. Quando questo flag è impostato, NDIS identifica tutte le strutture NET_BUFFER che contengono dati che corrispondono ai criteri di ricezione per l'associazione. NDIS indica NET_BUFFER strutture che corrispondono ai criteri al driver overlying. Questo flag non influisce sul controllo del loopback o sul loopback su altre associazioni.

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE

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

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

Nota Se ogni pacchetto nell'elenco collegato delle strutture di NET_BUFFER_LIST utilizza la stessa porta di origine, l'estensione deve impostare il flag di NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE nel SendCompleteFlags parametro di NdisFSendNetBufferListsComplete quando completa la richiesta di invio.
 
Nota Questo flag è disponibile in NDIS 6.30 e versioni successive.
 

NDIS_SEND_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 Hyper-V flag di invio e ricezione del commutatore estendibile.

Nota Questo flag è disponibile in NDIS 6.30 e versioni successive.
 

Valore restituito

Nessuno

Osservazioni

Dopo che un driver di filtro chiama il NdisFSendNetBufferLists funzione, NDIS invia le strutture NET_BUFFER_LIST ai driver sottostanti.

Un driver di filtro può avere origine richieste di invio oppure può filtrare le richieste ricevute dai driver eccessivamente in grado di filtrare. Se il driver di filtro ha origine richieste di invio, il driver deve allocare pool di buffer. Il driver di filtro alloca ogni struttura NET_BUFFER_LIST da un pool.

Il driver di filtro può preallocare NET_BUFFER_LIST strutture oppure può allocare le strutture subito prima di chiamare NdisFSendNetBufferLists e quindi liberarle al termine dell'operazione di invio.

Un driver di filtro deve impostare il membro SourceHandle di ogni struttura NET_BUFFER_LIST originata sullo stesso valore passato al parametro NdisFilterHandle. L'handle di filtro fornisce le informazioni richieste da NDIS per restituire la struttura NET_BUFFER_LIST al driver di filtro. Il driver di filtro non deve modificare il membro SourceHandle in qualsiasi struttura NET_BUFFER_LIST non originato.

Prima di chiamare NdisFSendNetBufferLists, un driver di filtro può impostare informazioni che accompagnano la richiesta di invio con la macro NET_BUFFER_LIST_INFO. I driver sottostanti possono recuperare queste informazioni con la macro NET_BUFFER_LIST_INFO.

NDIS chiama un driver di filtro FilterSendNetBufferLists funzione per passare le richieste di invio da driver sovrascrivitori. Un driver di filtro può passare tali richieste passando le strutture T NET_BUFFER_LISTricevute in FilterSendNetBufferLists a NdisFSendNetBufferLists.

Non appena un driver di filtro chiama la funzione NdisFSendNetBufferLists, rinuncia alla proprietà delle strutture NET_BUFFER_LIST e di tutte le risorse associate. NDIS chiama il funzione FilterSendNetBufferListsComplete per restituire le strutture e i dati al driver di filtro. NDIS può raccogliere le strutture e i dati da più richieste di invio in un singolo elenco collegato di strutture NET_BUFFER_LIST prima di passare l'elenco a FilterSendNetBufferListsComplete.

Finché NDIS non chiama FilterSendNetBufferListsComplete, lo stato corrente della richiesta di invio non è disponibile per il driver di filtro. Un driver di filtro rilascia temporaneamente la proprietà di tutte le risorse associate a una richiesta di invio quando chiama NdisFSendNetBufferLists. Un driver di filtro non deve mai provare a esaminare le strutture di NET_BUFFER_LIST o i dati associati dopo aver chiamato NdisFSendNetBufferLists.

Nota Un driver di filtro deve tenere traccia delle richieste di invio che ha origine e assicurarsi che non chiami il NdisFSendNetBufferListsComplete funzione al termine di tali richieste.
 

Fabbisogno

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)

Vedere anche

FilterAttach

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisMAllocatePort