FILTER_SEND_NET_BUFFER_LISTS_COMPLETE Rückruffunktion (ndis.h)

NDIS ruft die FilterSendNetBufferListsComplete-Funktion auf, um eine Sendeanforderung abzuschließen, die ein Filtertreiber gestartet hat, indem er die NdisFSendNetBufferLists-Funktion .

Hinweis Sie müssen die Funktion mit dem FILTER_SEND_NET_BUFFER_LISTS_COMPLETE-Typ deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE FilterSendNetBufferListsComplete;

void FilterSendNetBufferListsComplete(
  [in] NDIS_HANDLE FilterModuleContext,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG SendCompleteFlags
)
{...}

Parameter

[in] FilterModuleContext

Ein Handle für den Kontextbereich für das Filtermodul. Der Filtertreiber hat diesen Kontextbereich in der FilterAttach-Funktion erstellt und initialisiert.

NetBufferList

Ein Zeiger auf eine verknüpfte Liste von NET_BUFFER_LIST Strukturen, an die der Filtertreiber übergeben hat NdisFSendNetBufferLists.

[in] SendCompleteFlags

NDIS-Flags, die mit einem OR-Vorgang kombiniert werden können. Um alle Flags zu löschen, legen Sie diesen Member auf 0 fest. Diese Funktion unterstützt die folgenden Flags:

NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL

Gibt an, dass die aktuelle IRQL DISPATCH_LEVEL ist. Weitere Informationen zu diesem Flag finden Sie unter Dispatch IRQL Tracking.

NDIS_SEND_COMPLETE_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_FLAGS_SWITCH_SINGLE_SOURCE-Flag im SendFlags-Parameter von SendNetBufferLists festlegen, wenn die Anforderung gesendet wird.
 
Hinweis Dieses Flag ist in NDIS 6.30 und höher verfügbar.
 

Rückgabewert

Keine

Bemerkungen

FilterSendNetBufferListsComplete ist eine optionale Funktion. Wenn ein Filtertreiber keine Sendeanforderungen filtert, kann er den Einstiegspunkt für diese Funktion auf NULL festlegen, wenn er die NdisFRegisterFilterDriver-Funktion .

Der Filtertreiber kann die NdisSetOptionalHandlers-Funktion über die FilterSetModuleOptions-Funktion aufrufen, um eine FilterSendNetBufferListsComplete-Funktion für ein Filtermodul anzugeben.

Hinweis Ein Filtertreiber, der keine FilterSendNetBufferListsComplete-Funktion bereitstellt, kann die NdisFSendNetBufferLists-Funktion nicht aufrufen.
 
Wenn NDIS FilterSendNetBufferListsComplete aufruft, erhält der Filtertreiber den Besitz der NET_BUFFER_LIST Strukturen und zugeordneten Daten wieder.

Wenn ein überlastbarer Treiber die Sendeanforderung initiiert hat, sollte der Filtertreiber die Funktion NdisFSendNetBufferListsComplete aufrufen, um die Sendeanforderung abzuschließen.

Wenn der Filtertreiber aus der Sendeanforderung stammt, kann FilterSendNetBufferListsComplete entweder die NET_BUFFER_LIST Strukturen und zugehörigen Daten freigeben oder sie für die Wiederverwendung in einem nachfolgenden Aufruf von NdisFSendNetBufferLists vorbereiten.

Hinweis Ein Filtertreiber sollte die Sendeanforderungen nachverfolgen, die er initiiert, und sicherstellen, dass er nicht NdisFSendNetBufferListsComplete aufruft , wenn NDIS FilterSendNetBufferListsComplete für solche Anforderungen aufruft.
 
NDIS ruft FilterSendNetBufferListsComplete bei IRQL <= DISPATCH_LEVEL auf.

Beispiele

Um eine FilterSendNetBufferListsComplete-Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine FilterSendNetBufferListsComplete-Funktion mit dem Namen "MySendNetBufferListsComplete" zu definieren, verwenden Sie den typ FILTER_SEND_NET_BUFFER_LISTS_COMPLETE , wie in diesem Codebeispiel gezeigt:

FILTER_SEND_NET_BUFFER_LISTS_COMPLETE MySendNetBufferListsComplete;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MySendNetBufferListsComplete(
    NDIS_HANDLE  FilterModuleContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  SendCompleteFlags
    )
  {...}

Der FILTER_SEND_NET_BUFFER_LISTS_COMPLETE Funktionstyp ist in der Headerdatei Ndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzu. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den FILTER_SEND_NET_BUFFER_LISTS_COMPLETE Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Windows
Kopfzeile ndis.h (einschließlich Ndis.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

FilterAttach

FilterSetModuleOptions

NET_BUFFER

NET_BUFFER_LIST

NdisFRegisterFilterDriver

NdisFSendNetBufferLists

NdisFSendNetBufferListsComplete

NdisSetOptionalHandlers