次の方法で共有


NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE コールバック関数 (ndischimney.h)

[TCP のチムニー オフロード機能は非推奨であり、使用しないでください。]

オフロード ターゲットは、NdisTcpOffloadReceiveComplete 関数を呼び出して、ポストされた受信要求 (受信バッファー) をホスト スタックに返します。 オフロード ターゲットは、以前に受信要求を 1 つ以上の呼び出しで受信しました。ミニポートTcpOffloadReceive 関数を します。

構文

NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;

void NdisTcpOffloadReceiveComplete(
  [in] IN NDIS_HANDLE NdisMiniportHandle,
  [in] IN PNET_BUFFER_LIST NetBufferList
)
{...}

パラメーター

[in] NdisMiniportHandle

前の呼び出しでオフロード ターゲットが取得したハンドル。NdisMRegisterMiniportDriver 関数を します。

[in] NetBufferList

NET_BUFFER_LIST 構造体へのポインター。 この構造体は、スタンドアロンでも、NET_BUFFER_LIST構造体のリンクされたリスト内の最初の構造体でもかまいません。 オフロード ターゲットは、その構造体に対する 1 つ以上の呼び出しでこれらの構造体を取得しましたミニポートTcpOffloadReceive 関数を します。

戻り値

何一つ

備考

オフロード ターゲットは、要求がポストされた順序で事前にポストされた受信要求を使用して返す必要があります。オフロード ターゲットのミニポートTcpOffloadReceive 関数を します。 つまり、オフロード ターゲットは、先入れ先出し (FIFO) の順序で事前にポストされた受信要求を使用して返す必要があります。

オフロード ターゲットは、NdisTcpOffloadReceiveComplete 関数への呼び出しをシリアル化する必要があります。NdisTcpOffloadReceiveHandler 関数、-connection ごとに実行されます。

オフロード ターゲットの ミニポートTcpOffloadReceive 関数は、NdisTcpOffloadReceiveComplete 関数へのオフロード ターゲットの呼び出しのコンテキストで呼び出すことができます。 この場合、NdisTcpOffloadReceiveComplete 関数を再び呼び出す必要 ndisTcpOffloadReceiveComplete への前回の呼び出しが返されるまで、オフロード ターゲットは必要があります。

システム パフォーマンスを向上させるために、オフロード ターゲットは、複数の呼び出しからその NET_BUFFER_LIST 構造体を含むリンク リストを作成できます。ミニポートTcpOffloadReceive 関数を します。 オフロード ターゲットは、NdisTcpOffloadReceiveComplete 関数への 1 回の呼び出しで、このようなリンクされたリストを渡すことができます。 オフロード ターゲットは、1 回の呼び出しでポストされた受信要求を分散できることに注意してください。 ミニポートTcpOffloadReceive 関数は、オフロード ターゲットが、ミニポートTcpOffloadReceive 関数にポストされたのと同じ順序で受信要求を完了する限り、複数の完了呼び出しを実行します。

NdisTcpOffloadReceiveComplete 関数を呼び出す前に、オフロード ターゲットは、関数に渡す各NET_BUFFER_LIST構造体に対して次の処理を行います。

  • 次のいずれかの状態値を Status メンバーに書き込みます。
    NDIS_STATUS_SUCCESS
    オフロード ターゲットは、NetBufferList パラメーターによって参照されるNET_BUFFER_LIST構造体に関連付けられているすべてのデータを受け取りました。 また、オフロード ターゲットは、RcvNxt を拡張し、TCP 接続の TCP 委任状態で RcvWnd 変数を しました。 オフロード ターゲットは、オフロード ターゲットが遅延受信確認の送信を待機しているかどうかに応じて、受信したデータの受信確認を生成した場合と生成されていない可能性があります。
    NDIS_STATUS_REQUEST_ABORTED
    オフロード ターゲットが受信したデータの処理中にエラーが発生しました。 オフロード ターゲットが、NetBufferList パラメーターによって指されるNET_BUFFER_LIST構造体を持つ有効なデータを提供している場合、オフロード ターゲットは、NET_BUFFER_LIST_INFO マクロを呼び出すことによって有効なデータ バイト数を指定します。 オフロード ターゲットは、受信したデータの一部を確認した場合と受信していない可能性があります。
    NDIS_STATUS_UPLOAD_IN_PROGRESS
    バッファーがポストされた接続がアップロードされています。
    NDIS_STATUS_INVALID_STATE
    オフロード ターゲットが呼び出しによって切断を示した後、受信要求がポストされましたNdisTcpOffloadEventHandler します。
  • TcpOffloadBytesTransferred id を使用して NET_BUFFER_LIST_INFO マクロを呼び出すことによって返されるデータ バイト数指定します。
  • を呼び出します。NdisAdvanceNetBufferDataStart 関数を します。 NetBufferList パラメーターは、NET_BUFFER_LIST構造体に関連付けられているNET_BUFFER構造体を指す必要があります。 DataOffsetDelta パラメーターは、オフロード ターゲットがNET_BUFFER構造体に関連付けられているメモリ記述子リスト (MDL) に配置したデータ バイト数を指定する必要があります。 FreeMdl パラメーターは NULL する必要があります。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー ndischimney.h (Ndischimney.h を含む)
IRQL 任意のレベル

関連項目

ミニポートTcpOffloadReceive

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver