Abbrechen einer Sendeanforderung in einem Miniporttreiber
Die folgende Abbildung veranschaulicht einen Miniporttreiberabbruchvorgang.
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:
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.
Entfernt aus allen NET_BUFFER_LIST Strukturen, deren Abbruchbezeichner dem angegebenen Abbruchbezeichner aus der Liste der ausstehenden Sendeanforderungen entsprechen.
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.