Share via


NdisFSendNetBufferLists-Funktion (ndis.h)

Filtertreiber rufen die NdisFSendNetBufferLists-Funktion auf, um eine Liste von Netzwerkdatenpuffern zu senden.

Syntax

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

Parameter

[in] NdisFilterHandle

Das NDIS-Handle, das dieses Filtermodul identifiziert. NDIS hat das Handle in einem Aufruf der FilterAttach-Funktion an den Filtertreiber übergeben.

NetBufferList

Ein Zeiger auf eine verknüpfte Liste von NET_BUFFER_LIST Strukturen. Jede NET_BUFFER_LIST-Struktur beschreibt eine Liste mit NET_BUFFER Strukturen.

[in] PortNumber

Eine Portnummer, die einen Miniportadapterport angibt. Portnummern des Miniport-Adapters werden durch Aufrufen der NdisMAllocatePort-Funktion zugewiesen. Ein Nullwert gibt den Standardport eines Miniportadapters an.

[in] SendFlags

Flags, die Attribute für den Sendevorgang definieren. Die Flags können mit einem OR-Vorgang kombiniert werden. Um alle Flags zu löschen, legen Sie dieses Element auf 0 (null) fest. Diese Funktion unterstützt die folgenden Flags:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

Gibt an, dass die aktuelle IRQL DISPATCH_LEVEL ist. Weitere Informationen zu diesem Flag finden Sie unter Dispatch IRQL Tracking.For more information about this flag, see Dispatch IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

Gibt an, dass NDIS auf Loopback überprüfen soll. Standardmäßig führt NDIS keine Datenschleife an den Treiber zurück, der die Sendeanforderung übermittelt hat. Ein überlastender Treiber kann dieses Verhalten überschreiben, indem dieses Flag festgelegt wird. Wenn dieses Flag festgelegt ist, identifiziert NDIS alle NET_BUFFER Strukturen, die Daten enthalten, die den Empfangskriterien für die Bindung entsprechen. NDIS gibt NET_BUFFER Strukturen an, die den Kriterien des übergeordneten Treibers entsprechen. Dieses Flag hat keine Auswirkungen auf die Suche nach Loopback oder zurück auf andere Bindungen.

NDIS_SEND_FLAGS_SWITCH_SINGLE_SOURCE

Wenn dieses Flag festgelegt ist, stammen alle Pakete in einer verknüpften Liste von NET_BUFFER_LIST Strukturen vom gleichen erweiterbaren Hyper-V-Switch-Quellport.

Weitere Informationen finden Sie unter Hyper-V Extensible Switch Send and Receive Flags.For more information, see Hyper-V Extensible Switch Send and Receive Flags.

Hinweis Wenn jedes Paket in der verknüpften Liste der NET_BUFFER_LIST-Strukturen denselben Quellport verwendet, sollte die Erweiterung das NDIS_SEND_COMPLETE_FLAGS_SWITCH_SINGLE_SOURCE-Flag im SendCompleteFlags-Parameter von NdisFSendNetBufferListsComplete festlegen, wenn die Sendeanforderung abgeschlossen wird.
 
Hinweis Dieses Flag ist in NDIS 6.30 und höher verfügbar.
 

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP

Wenn dieses Flag festgelegt ist, sollen alle Pakete in einer verknüpften Liste von NET_BUFFER_LIST Strukturen an den gleichen erweiterbaren Switchzielport weitergeleitet werden.

Weitere Informationen finden Sie unter Hyper-V Extensible Switch Send and Receive Flags.For more information, see Hyper-V Extensible Switch Send and Receive Flags.

Hinweis Dieses Flag ist in NDIS 6.30 und höher verfügbar.
 

Rückgabewert

Keine

Bemerkungen

Nachdem ein Filtertreiber die Funktion NdisFSendNetBufferLists aufgerufen hat, übermittelt NDIS die NET_BUFFER_LIST Strukturen an die zugrunde liegenden Treiber.

Ein Filtertreiber kann Sendeanforderungen erstellen oder die Anforderungen filtern, die er von überlastenden Treibern empfängt. Wenn der Filtertreiber Sendeanforderungen erstellt, muss der Treiber Pufferpools zuordnen. Der Filtertreiber ordnet jede NET_BUFFER_LIST-Struktur aus einem Pool zu.

Der Filtertreiber kann NET_BUFFER_LIST Strukturen vorab zuordnen oder die Strukturen direkt vor dem Aufruf von NdisFSendNetBufferLists zuordnen und sie dann freigeben, wenn der Sendevorgang abgeschlossen ist.

Ein Filtertreiber muss den SourceHandle-Member jeder NET_BUFFER_LIST Struktur, die er hat, auf denselben Wert festlegen, den er an den NdisFilterHandle-Parameter übergibt. Das Filterhandle stellt die Informationen bereit, die NDIS benötigt, um die NET_BUFFER_LIST-Struktur an den Filtertreiber zurückzugeben. Der Filtertreiber darf das SourceHandle-Element nicht in NET_BUFFER_LIST Strukturen ändern, von denen er nicht stammt.

Vor dem Aufruf von NdisFSendNetBufferLists kann ein Filtertreiber Informationen festlegen, die die Sendeanforderung mit dem makro NET_BUFFER_LIST_INFO begleiten. Die zugrunde liegenden Treiber können diese Informationen mit dem makro NET_BUFFER_LIST_INFO abrufen.

NDIS ruft einen Filtertreiber auf. FilterSendNetBufferLists-Funktion zum Übergeben von Sendeanforderungen von überlastenden Treibern. Ein Filtertreiber kann solche Anforderungen übergeben, indem er die inFilterSendNetBufferLists empfangenen NET_BUFFER_LIST T-Strukturen an NdisFSendNetBufferLists übergibt.

Sobald ein Filtertreiber die NdisFSendNetBufferLists-Funktion aufruft , gibt er den Besitz der NET_BUFFER_LIST-Strukturen und aller zugehörigen Ressourcen auf. NDIS ruft die auf FilterSendNetBufferListsComplete-Funktion , um die Strukturen und Daten an den Filtertreiber zurückzugeben. NDIS kann die Strukturen und Daten aus mehreren Sendeanforderungen in einer einzigen verknüpften Liste von NET_BUFFER_LIST Strukturen sammeln, bevor die Liste an FilterSendNetBufferListsComplete übergeben wird.

Bis NDIS FilterSendNetBufferListsComplete aufruft, ist die aktuelle status der Sendeanforderung für den Filtertreiber nicht verfügbar. Ein Filtertreiber gibt vorübergehend den Besitz aller Ressourcen frei, die einer Sendeanforderung zugeordnet sind, wenn er NdisFSendNetBufferLists aufruft. Ein Filtertreiber sollte nach dem Aufruf von NdisFSendNetBufferLists niemals versuchen, die NET_BUFFER_LIST Strukturen oder zugeordneten Daten zu untersuchen.

Hinweis Ein Filtertreiber sollte die Sendeanforderungen nachverfolgen, von denen er stammt, und sicherstellen, dass er nicht die NdisFSendNetBufferListsComplete-Funktion , wenn solche Anforderungen abgeschlossen sind.
 

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Desktop
Kopfzeile ndis.h (include Ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Filter_Driver_Function(ndis)

Weitere Informationen

FilterAttach

FilterSendNetBufferLists

FilterSendNetBufferListsComplete

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisMAllocatePort