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 typs MINIPORT_CANCEL_SEND 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 für einen Kontextbereich, den der Miniporttreiber in seiner MiniportInitializeEx-Funktion zugeordnet hat. Der Miniporttreiber verwendet diesen Kontextbereich, um Zustandsinformationen zu einem Adapter zu verwalten.

[in] CancelId

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

Rückgabewert

Keine

Bemerkungen

Miniporttreiber und Zwischentreiber, die 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 Überlastungs-NDIS-Treiber den aufruft NdisCancelSendNetBufferLists-Funktion , NDIS ruft 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 NET_BUFFER_LIST-Strukturen in der Warteschlange für den angegebenen Adapter 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 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 alle NET_BUFFER_LIST Strukturen, deren Abbruchbezeichner mit dem angegebenen Abbruchbezeichner übereinstimmen, aus der Sendewarteschlange (Aufheben der Verknüpfungen).
  3. Ruft die NdisMSendNetBufferListsComplete-Funktion für alle nicht verknüpften NET_BUFFER_LIST-Strukturen, um die Strukturen zurückzugeben. Der Miniporttreiber legt das status Feld der NET_BUFFER_LIST-Strukturen auf NDIS_STATUS_SEND_ABORTED fest.
Die MiniportCancelSend-Funktion eines zwischengeschalteten Treibers 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 MiniportCancelSend angegeben hat.
NDIS ruft MiniportCancelSend unter IRQL <= DISPATCH_LEVEL auf.

Beispiele

Um eine MiniportCancelSend-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows bietet eine Reihe von Rückruffunktionstypen 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 MiniportCancelSend-Funktion mit dem Namen "MyCancelSend" zu definieren, verwenden Sie den typ MINIPORT_CANCEL_SEND , 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 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 MINIPORT_CANCEL_SEND 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 (include Ndis.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

MiniportInitializeEx

NDIS_GET_NET_BUFFER_LIST_CANCEL_ID

NET_BUFFER

NET_BUFFER_LIST

NdisCancelSendNetBufferLists

NdisMSendNetBufferListsComplete