次の方法で共有


ミニポート ドライバーでの送信要求のキャンセル

次の図は、ミニポート ドライバーの送信の取り消し操作を示しています。

Diagram illustrating a miniport driver cancel send operation.

プロトコル、フィルター、および中間ドライバーは、未処理の送信要求を取り消すために NdisCancelSendNetBufferLists を呼び出すことができます。 これらの上にあるドライバーは、送信要求を行う前に、キャンセル ID で送信データをマークする必要があります。

NDIS は、ミニポート ドライバーの MiniportCancelSend 関数を呼び出して、指定したキャンセル識別子でマークされているすべての NET_BUFFER_LIST 構造体の送信を取り消します。

ミニポート ドライバーの MiniportCancelSend 関数は、次の操作を実行します。

  1. 指定したアダプターの未処理の送信要求の一覧を走査し、各NET_BUFFER_LIST 構造のキャンセル識別子を取得する NDIS_GET_NET_BUFFER_LIST_CANCEL_ID を呼び出します。 ミニポート ドライバーは、NDIS_GET_NET_BUFFER_LIST_CANCEL_ID に返されるキャンセル ID と NDIS が MiniportCancelSend に渡したキャンセル ID を比較します。

  2. 取り消し識別子が指定したキャンセル識別子と一致するすべての NET_BUFFER_LIST 構造を、未処理の送信要求の一覧から削除します。

  3. 取り消されたすべての NET_BUFFER_LIST 構造に対して NdisMSendNetBufferListsComplete 関数を呼び出して構造を返します。ミニポート ドライバーは、NET_BUFFER_LIST 構造の状態フィールドを NDIS_STATUS_SEND_ABORTED に設定します。