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 .

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.For more information about this flag, see 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 ciclo dei dati al driver che ha inviato la richiesta di invio. Un driver eccessivamente in grado di 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 del 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 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_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE nel parametro SendCompleteFlags di NdisFSendNetBufferListsComplete al termine della 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 Flag di invio e ricezione del commutatore estendibile Hyper-V.

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

Valore restituito

nessuno

Osservazioni

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

Un driver di filtro può avere origine richieste di invio o può filtrare le richieste ricevute dai driver eccessivamente in corso. 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 appena 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 allo 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 alcuna struttura NET_BUFFER_LIST che non ha avuto origine.

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 Funzione FilterSendNetBufferLists per passare richieste di invio da driver overlying. 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 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.

Fino a quando NDIS 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 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 Funzione NdisFSendNetBufferListsComplete al termine di tali richieste.
 

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

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisMAllocatePort