Freigeben über


Abbrechen einer Sendeanforderung in einem Miniporttreiber

Die folgende Abbildung veranschaulicht einen Miniporttreiberabbruchvorgang.

Diagramm, das einen Miniporttreiber zeigt, bricht den Sendevorgang ab.

Protokoll-, Filter- und Zwischentreiber können NdisCancelSendNetBufferLists aufrufen, um ausstehende Sendeanforderungen abzubrechen. Diese überlastenden Treiber müssen die Sendedaten mit einer Abbruch-ID markieren, bevor sie eine Sendeanforderung stellen.

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

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

  1. Durchläuft die Liste der ausstehenden Sendeanforderungen für den angegebenen Adapter und ruft NDIS_GET_NET_BUFFER_LIST_CANCEL_ID auf, um den Abbruchbezeichner für jede NET_BUFFER_LIST Struktur abzurufen. Der Miniporttreiber vergleicht die Abbruch-ID, die NDIS_GET_NET_BUFFER_LIST_CANCEL_ID zurückgibt, mit der Abbruch-ID, die NDIS an MiniportCancelSend übergeben hat.

  2. Entfernt aus allen NET_BUFFER_LIST Strukturen, deren Abbruchbezeichner dem angegebenen Abbruchbezeichner aus der Liste der ausstehenden Sendeanforderungen entsprechen.

  3. Ruft die NdisMSendNetBufferListsComplete-Funktion für alle abgebrochenen NET_BUFFER_LIST-Strukturen auf, um die Strukturen zurückzugeben. Der Miniporttreiber legt das status Feld der NET_BUFFER_LIST-Strukturen auf NDIS_STATUS_SEND_ABORTED fest.