Freigeben über


MINIPORT_CANCEL_SEND Rückruffunktion (ndis.h)

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

Hinweis Sie müssen die Funktion mithilfe des MINIPORT_CANCEL_SEND Typs deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt "Beispiele".
 

Syntax

MINIPORT_CANCEL_SEND MiniportCancelSend;

void MiniportCancelSend(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PVOID CancelId
)
{...}

Parameter

[in] MiniportAdapterContext

Ein Handle zu einem Kontextbereich, den der Miniporttreiber in seiner MiniportInitializeEx--Funktion zugewiesen hat. Der Miniporttreiber verwendet diesen Kontextbereich, um Zustandsinformationen zu einem Adapter beizubehalten.

[in] CancelId

Eine Abbruch-ID. Dieser Bezeichner gibt die NET_BUFFER_LIST Strukturen an, die abgebrochen werden.

Rückgabewert

Nichts

Bemerkungen

Miniport-Treiber und Zwischentreiber, die in der Warteschlange NET_BUFFER_LIST Strukturen senden, exportieren eine MiniportCancelSend--Funktion. Die MiniportCancelSend-Funktion bricht die ausstehende Übertragung der angegebenen NET_BUFFER_LIST Strukturen ab.

Wenn ein übermäßiger NDIS-Treiber den NdisCancelSendNetBufferLists-Funktion ruft NDIS die MiniportCancelSend- funktion des entsprechenden Treibers auf niedrigerer Ebene für die Bindung auf. NDIS führt diesen Aufruf nur aus, wenn der Treiber auf niedrigerer Ebene eine MiniportCancelSend--Funktion exportiert.

Die MiniportCancelSend- funktion eines Miniporttreibers führt die folgenden Vorgänge aus:

  1. Durchläuft die Liste der in die Warteschlange eingereihten NET_BUFFER_LIST Strukturen für den angegebenen Adapter und ruft die NDIS_GET_NET_BUFFER_LIST_CANCEL_ID Makro, um den Abbruchbezeichner für jede Warteschlange NET_BUFFER_LIST Struktur abzurufen. Der Miniporttreiber vergleicht den Abbruchbezeichner, der NDIS_GET_NET_BUFFER_LIST_CANCEL_ID zurückgibt, mit dem Abbruchbezeichner, den NDIS an MiniportCancelSendübergeben hat.
  2. Entfernt aus der Sendewarteschlange (Nichtverknüpfungen) alle NET_BUFFER_LIST Strukturen, deren Abbruchbezeichner mit dem angegebenen Abbruchbezeichner übereinstimmen.
  3. Ruft die NdisMSendNetBufferListsComplete Funktion für alle nicht verknüpften NET_BUFFER_LIST Strukturen, um die Strukturen zurückzugeben. Der Miniporttreiber legt das Statusfeld der NET_BUFFER_LIST Strukturen auf NDIS_STATUS_SEND_ABORTED fest.
Die MiniportCancelSend--Funktion eines Zwischentreibers führt die folgenden Vorgänge aus:
  1. Führt die Vorgänge in der vorherigen Liste für die MiniportCancelSend-Funktion eines Miniporttreibers aus.
  2. Ruft die NdisCancelSendNetBufferLists Funktion, die die Bindung angibt, die dem Adapter zugeordnet ist, den NDIS im Aufruf von MiniportCancelSendangegeben hat.
NDIS ruft MiniportCancelSend- bei IRQL-<= DISPATCH_LEVEL auf.

beispiele für

Um eine MiniportCancelSend--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine MiniportCancelSend--Funktion zu definieren, die den Namen "MyCancelSend" hat, verwenden Sie den MINIPORT_CANCEL_SEND Typ, wie in diesem Codebeispiel gezeigt:

MINIPORT_CANCEL_SEND MyCancelSend;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyCancelSend(
    NDIS_HANDLE  MiniportAdapterContext,
    PVOID  CancelId
    )
  {...}

Der MINIPORT_CANCEL_SEND Funktionstyp wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den funktionstyp MINIPORT_CANCEL_SEND in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

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

Siehe auch

MiniportInitializeEx-

NDIS_GET_NET_BUFFER_LIST_CANCEL_ID

NET_BUFFER

NET_BUFFER_LIST

NdisCancelSendNetBufferLists

NdisMSendNetBufferListsComplete