次の方法で共有


NdisMSendNetBufferListsComplete 関数 (ndis.h)

ミニポート ドライバーは NdisMSendNetBufferListsComplete 関数を呼び出して NET_BUFFER_LIST構造体のリンクされたリストを上にあるドライバーに返し、送信要求の最終状態を返します。

構文

void NdisMSendNetBufferListsComplete(
  [in] NDIS_HANDLE      MiniportAdapterHandle,
       PNET_BUFFER_LIST NetBufferList,
  [in] ULONG            SendCompleteFlags
);

パラメーター

[in] MiniportAdapterHandle

NDIS が MiniportInitializeEx 関数に渡したミニポート ハンドル。

NetBufferList

NET_BUFFER_LIST構造体のリンクされたリストへのポインター。 ミニポート ドライバーは、 そのミニポートSendNetBufferLists 関数への以前の呼び出しでNET_BUFFER_LIST構造体を受信しました。

[in] SendCompleteFlags

OR 操作と組み合わせることができる NDIS フラグ。 すべてのフラグをクリアするには、このメンバーを 0 に設定します。 この関数は、NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL フラグをサポートします。が設定されている場合は、現在の IRQL がDISPATCH_LEVELされていることを示します。 このフラグの詳細については、「 ディスパッチ IRQL 追跡」を参照してください。

戻り値

なし

解説

ミニポート ドライバーは 、NdisMSendNetBufferListsComplete を呼び出して、NDIS がドライバーの MiniportSendNetBufferLists 関数に対して行った送信要求を完了します。 ミニポート ドライバーは、完了した送信要求に関連付けられている NET_BUFFER_LIST 構造体のリンクされた一覧を指定します。 送信要求の状態が保留中の間、ミニポート ドライバーは、NET_BUFFER_LIST構造体と、NET_BUFFER_LIST構造体に関連付けられているすべてのプロトコル割り当てリソースの所有権を保持します。

ミニポート ドライバーが NdisMSendNetBufferListsComplete を呼び出した後、NDIS は、送信要求を開始するために NdisSendNetBufferLists 関数を呼び出したドライバーの ProtocolSendNetBufferListsComplete 関数を呼び出します。

ミニポート ドライバーは、任意の順序で送信要求を完了できます。 たとえば、ミニポート ドライバーは、複数の MiniportSendNetBufferLists 呼び出しからNET_BUFFER_LIST構造リストを連結したり、 MiniportSendNetBufferLists 呼び出しからリストを分割したりできます。 ただし、ミニポート ドライバーは、NET_BUFFER_LIST構造体に関連付けられている NET_BUFFER 構造体の一覧を変更することはできません。

ミニポート ドライバーは、NetBufferLists パラメーターが指定する各NET_BUFFER_LIST構造体の Status メンバーに次のいずれかの状態コードを設定する必要があります。

構造体 説明
NDIS_STATUS_SUCCESS NET_BUFFER_LIST構造および関連するNET_BUFFER構造が記述するすべてのネットワーク・データは、伝送のために正常に処理されました。 たとえば、ミニポート ドライバーは、キューにデータをコピーするか、データが既に送信されています。
NDIS_STATUS_INVALID_LENGTH このNET_BUFFER_LIST構造に関連付けられている一部のNET_BUFFER構造体内のデータのサイズが、基になる NIC に対して大きすぎます。
NDIS_STATUS_RESOURCES リソースが不足しているため、このNET_BUFFER_LIST構造体の送信要求が失敗しました。
NDIS_STATUS_PAUSED ミニポート アダプターは、ミニポートPause 関数のリファレンス ページで説明されているように、一時停止状態です。
NDIS_STATUS_SEND_ABORTED NDIS は、このNET_BUFFER_LIST構造体の送信操作を取り消すために、MiniportCancelSend 関数を呼び出しました。
NDIS_STATUS_RESET_IN_PROGRESS ミニポート ドライバーは、リセットのために送信要求を中止しました。
NDIS_STATUS_FAILURE ミニポート ドライバーは、前に説明した以外の何らかの理由で送信要求に失敗しました。 たとえば、ミニポート ドライバーは、ハードウェア障害が原因で送信要求を失敗させることができます。

NdisMSendNetBufferListsComplete へのミニポート ドライバーの呼び出しは、送信要求のデータがネットワーク経由で送信されたことを必ずしも意味するとは限りません。 データは NIC ハードウェアでキューに入れられます。

要件

要件
サポートされている最小のクライアント NDIS 6.0 以降でサポートされています。
対象プラットフォーム ユニバーサル
Header ndis.h (Ndis.h を含む)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 Irql_SendRcv_Function(ndis)、NdisTimedDataHang、NdisTimedDataSend

こちらもご覧ください

MiniportCancelSend

MiniportInitializeEx

MiniportSendNetBufferLists

NET_BUFFER

NET_BUFFER_LIST

NdisSendNetBufferLists