Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die folgende Abbildung veranschaulicht das Abbrechen eines Sendevorgangs.
Ein Treiber ruft das NDIS_SET_NET_BUFFER_LIST_CANCEL_ID-Makro für jede NET_BUFFER_LIST Struktur auf, die er für die Übertragung an Treiber auf niedrigerer Ebene übergibt. Die NDIS_SET_NET_BUFFER_LIST_CANCEL_ID-Funktion kennzeichnet das angegebene Paket mit einem Abbruchbezeichner.
Vor dem Zuweisen von Abbruch-IDs zu Paketen sollte ein Treiber NdisGeneratePartialCancelId aufrufen, um das hochgeordnete Byte jeder Abbruch-ID abzurufen, die er zuweist. Dadurch wird sichergestellt, dass der Treiber keine Abbruch-IDs dupliziert, die von anderen Treibern im System zugewiesen wurden. Treiber rufen NdisGeneratePartialCancelId in der Regel einmal aus der DriverEntry-Routine auf. Treiber können jedoch mehr als einen Partiellen Abbruchbezeichner abrufen, indem sie NdisGeneratePartialCancelId mehrmals aufrufen.
Um die ausstehende Übertragung von Daten in einer markierten NET_BUFFER_LIST-Struktur abzubrechen, übergibt ein Treiber die Abbruch-ID an die NdisCancelSendNetBufferLists-Funktion . Treiber können die Abbruch-ID einer NET_BUFFER_LIST Struktur abrufen, indem sie das makro NDIS_GET_NET_BUFFER_LIST_CANCEL_ID aufrufen.
Wenn ein Treiber alle NET_BUFFER_LIST Strukturen mit demselben Abbruchbezeichner markiert, kann er alle ausstehenden Übertragungen mit einem einzigen Aufruf von NdisCancelSendNetBufferLists abbrechen. Wenn ein Treiber alle NET_BUFFER_LIST Strukturen innerhalb einer Untergruppe von NET_BUFFER_LIST Strukturen mit einem eindeutigen Bezeichner markiert, kann er alle ausstehenden Übertragungen innerhalb dieser Untergruppe mit einem einzelnen Aufruf von NdisCancelSendNetBufferLists abbrechen.
NDIS ruft die MiniportCancelSend-Funktion des entsprechenden Treibers der unteren Ebene für die Bindung auf. Nach dem Abbrechen der ausstehenden Übertragung ruft der zugrunde liegende Miniporttreiber die NdisMSendNetBufferListsComplete-Funktion auf, um die NET_BUFFER_LIST Strukturen und einen Abschluss status von NDIS_STATUS_SEND_ABORTED zurückzugeben. NDIS ruft wiederum die ProtocolSendNetBufferListsComplete-Funktion des entsprechenden Treibers auf.
In der Funktion ProtocolSendNetBufferListsComplete kann ein Protokolltreiber NDIS_SET_NET_BUFFER_LIST_CANCEL_ID aufrufen, wobei CancelId auf NULL festgelegt ist. Dadurch wird verhindert, dass der NET_BUFFER_LIST versehentlich mit einer veralteten Abbruch-ID erneut verwendet wird.