Freigeben über


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 den Handle an den Filtertreiber in einem Aufruf der FilterAttach--Funktion übergeben.

NetBufferList

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

[in] PortNumber

Eine Portnummer, die einen Miniportadapteranschluss identifiziert. Miniportadapternummern werden durch Aufrufen der funktion NdisMAllocatePort zugewiesen. Ein Nullwert identifiziert den Standardport eines Miniportadapters.

[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 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 Kennzeichen finden Sie unter IRQL Tracking.

NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK

Gibt an, dass NDIS auf Loopback überprüfen soll. Standardmäßig werden von NDIS keine Daten in einer Schleife an den Treiber übergeben, der die Sendeanforderung übermittelt hat. Ein übermäßiger Treiber kann dieses Verhalten überschreiben, indem dieses Kennzeichen festgelegt wird. Wenn dieses Kennzeichen 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 übermäßigen Treibers entsprechen. Dieses Flag hat keine Auswirkungen auf die Überprüfung auf Loopback oder Schleifenrücklauf 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 Hyper-V erweiterbaren Switch-Quellport.

Weitere Informationen finden Sie unter 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 ist.
 
Hinweis Dieses Kennzeichen ist in NDIS 6.30 und höher verfügbar.
 

NDIS_SEND_FLAGS_SWITCH_DESTINATION_GROUP

Wenn dieses Flag festgelegt ist, werden alle Pakete in einer verknüpften Liste von NET_BUFFER_LIST Strukturen an denselben erweiterbaren Switch-Zielport weitergeleitet.

Weitere Informationen finden Sie unter Hyper-V Extensible Switch Send and Receive Flags.

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

Rückgabewert

Nichts

Bemerkungen

Nachdem ein Filtertreiber die NdisFSendNetBufferLists--Funktion aufruft, sendet NDIS die NET_BUFFER_LIST Strukturen an die zugrunde liegenden Treiber.

Ein Filtertreiber kann sendeanforderungen oder die Anforderungen filtern, die er von übermäßigen Treibern empfängt. Wenn der Filtertreiber Sendeanforderungen erstellt, muss der Treiber Pufferpools zuweisen. Der Filtertreiber weist jede NET_BUFFER_LIST Struktur aus einem Pool zu.

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

Ein Filtertreiber muss das SourceHandle Member jeder NET_BUFFER_LIST Struktur festlegen, die auf denselben Wert wie an den NdisFilterHandle Parameter übergeben wird. Der 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, die nicht stammen.

Vor dem Aufrufen NdisFSendNetBufferListskann ein Filtertreiber Informationen festlegen, die die Sendeanforderung mit dem NET_BUFFER_LIST_INFO-Makro begleiten. Die zugrunde liegenden Treiber können diese Informationen mit dem NET_BUFFER_LIST_INFO Makro abrufen.

NDIS ruft die Filtertreiber auf FilterSendNetBufferLists Funktion zum Übergeben von Sendeanforderungen von übermäßigen Treibern. Ein Filtertreiber kann solche Anforderungen weitergeben, indem die in FilterSendNetBufferList s empfangenen NET_BUFFER_LISTT-Strukturen an NdisFSendNetBufferListsübergeben werden.

Sobald ein Filtertreiber den NdisFSendNetBufferLists Funktion aufruft, gibt er den Besitz der NET_BUFFER_LIST Strukturen und aller zugehörigen Ressourcen zurück. NDIS ruft die 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 mit NET_BUFFER_LIST Strukturen sammeln, bevor sie die Liste an FilterSendNetBufferListsCompleteübergeben.

Bis NDIS FilterSendNetBufferListsCompleteaufruft, ist der 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 NdisFSendNetBufferListsaufruft. Ein Filtertreiber sollte niemals versuchen, die NET_BUFFER_LIST Strukturen oder zugeordneten Daten nach dem Aufruf NdisFSendNetBufferListszu untersuchen.

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

Anforderungen

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

Siehe auch

FilterAttach-

FilterSendNetBufferLists

FilterSendNetBufferListsComplete-

NET_BUFFER

NET_BUFFER_LIST

NET_BUFFER_LIST_INFO

NdisMAllocatePort