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