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