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 |