Freigeben über


FILTER_CANCEL_SEND_NET_BUFFER_LISTS Rückruffunktion (ndis.h)

NDIS ruft die FilterCancelSendNetBufferLists-Funktion eines Filtertreibers auf, um die Übertragung aller NET_BUFFER_LIST Strukturen abzubrechen, die mit einem angegebenen Abbruchbezeichner gekennzeichnet sind.

Hinweis Sie müssen die Funktion mit dem typ FILTER_CANCEL_SEND_NET_BUFFER_LISTS deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

FILTER_CANCEL_SEND_NET_BUFFER_LISTS FilterCancelSendNetBufferLists;

void FilterCancelSendNetBufferLists(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PVOID CancelId
)
{...}

Parameter

[in] FilterModuleContext

Ein Handle für einen Kontextbereich, den der Filtertreiber in seiner FilterAttach-Funktion zugeordnet hat. Der Filtertreiber verwendet diesen Kontextbereich, um Zustandsinformationen für ein Filtermodul zu verwalten.

[in] CancelId

Ein Abbruchbezeichner. Dieser Bezeichner gibt die NET_BUFFER_LIST Strukturen an, die abgebrochen werden.

Rückgabewert

Keine

Bemerkungen

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

Filtertreiber, die NET_BUFFER_LIST Strukturen vor dem Senden in die Warteschlange stellen, sollten eine FilterCancelSendNetBufferLists-Funktion exportieren. Die FilterCancelSendNetBufferLists-Funktion bricht die ausstehende Übertragung der angegebenen NET_BUFFER_LIST-Strukturen ab.

Wenn ein Überlastungs-NDIS-Treiber den aufruft NdisCancelSendNetBufferLists oder NdisFCancelSendNetBufferLists-Funktion , NDIS ruft die FilterCancelSendNetBufferLists-Funktion der Filtermodule für die Bindung auf.

Die FilterCancelSendNetBufferLists-Funktion eines Filtertreibers führt die folgenden Vorgänge aus:

  1. Durchläuft die Liste der NET_BUFFER_LIST-Strukturen in der Warteschlange für das angegebene Filtermodul und ruft die NDIS_GET_NET_BUFFER_LIST_CANCEL_ID Makro, um den Abbruchbezeichner für jede NET_BUFFER_LIST-Struktur in der Warteschlange abzurufen. Der Filtertreiber vergleicht die Abbruch-ID, die NDIS_GET_NET_BUFFER_LIST_CANCEL_ID zurückgibt, mit der Abbruch-ID, die NDIS an FilterCancelSendNetBufferLists übergeben hat.
  2. Entfernt alle NET_BUFFER_LIST Strukturen, deren Abbruchbezeichner mit dem angegebenen Abbruchbezeichner übereinstimmen, aus der Sendewarteschlange (hebt die Verknüpfungen auf).
  3. Ruft die NdisFSendNetBufferListsComplete-Funktion für alle nicht verknüpften NET_BUFFER_LIST Strukturen, um die Strukturen zurückzugeben. Der Filtertreiber legt das status Feld der NET_BUFFER_LIST-Strukturen auf NDIS_STATUS_SEND_ABORTED fest.
  4. Ruft die NdisFCancelSendNetBufferLists-Funktion auf, um die Anforderung zum Senden des Abbrechens an die zugrunde liegenden Treiber zu übergeben.
NDIS ruft FilterCancelSendNetBufferLists unter IRQL <= DISPATCH_LEVEL auf.

Beispiele

Um eine FilterCancelSendNetBufferLists-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows bietet eine Reihe von Funktionstypen für Treiber. 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 Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine FilterCancelSendNetBufferLists-Funktion mit dem Namen "MyCancelSendNetBufferLists" zu definieren, verwenden Sie den typ FILTER_CANCEL_SEND_NET_BUFFER_LISTS , wie in diesem Codebeispiel gezeigt:

FILTER_CANCEL_SEND_NET_BUFFER_LISTS MyCancelSendNetBufferLists;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyCancelSendNetBufferLists(
    NDIS_HANDLE  FilterModuleContext,
    PVOID  CancelId
    )
  {...}

Der FILTER_CANCEL_SEND_NET_BUFFER_LISTS Funktionstyp ist in der Ndis.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den funktionstyp FILTER_CANCEL_SEND_NET_BUFFER_LISTS 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 (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

FilterAttach

NDIS_GET_NET_BUFFER_LIST_CANCEL_ID

NET_BUFFER

NET_BUFFER_LIST

NdisCancelSendNetBufferLists

NdisFCancelSendNetBufferLists

NdisFRegisterFilterDriver

NdisFSendNetBufferListsComplete