次の方法で共有


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

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

オフロード ターゲットは、NdisTcpOffloadSendComplete 関数を呼び出して、オフロード ターゲットの MiniportTcpOffloadSend 関数に対して行われた 1 つ以上の送信要求を完了します。

構文

NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;

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

パラメーター

[in] NdisMiniportHandle

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

[in] NetBufferList

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

戻り値

何一つ

備考

システム パフォーマンスを向上させるために、オフロード ターゲットは、ミニポートTcpOffloadSend 関数への複数の呼び出しから NET_BUFFER_LIST 構造体を含むリンクリストを作成できます。 その後、ドライバーは、このようなリンクされたリストを、NdisTcpOffloadSendComplete 関数に 1 回の呼び出しで渡すことができます。

1 つ以上の送信要求を完了する前に、オフロード ターゲットは、NdisTcpOffloadSendComplete 関数に渡す各NET_BUFFER_LIST構造体に対して次の操作を行う必要があります。

  • status 値を Status メンバーに書き込みます。
    • NDIS_STATUS_SUCCESSは、NET_BUFFER_LISTに関連付けられているすべてのデータがオフロード ターゲットによって正常に送信され、オフロード ターゲットがリモート ホストからすべての送信データの受信確認を受信したことを示します。 これは、オフロード以外の送信関数とは異なります。 ミニポートSendNetBufferLists。これは受信確認を監視しません。
    • NDIS_STATUS_SUCCESS以外の状態値 (たとえば、NDIS_STATUS_REQUEST_ABORTEDまたはNDIS_STATUS_UPLOAD_IN_PROGRESSの状態値) は、送信データが正常に確認されなかったことを示します。 オフロード ターゲットがデータを送信した場合と送信されていない可能性があります。 オフロード ターゲットは、これらの構造体に関連付けられているデータをこれ以上送信せずに、リンク リスト内の後続のすべてのNET_BUFFER_LIST構造体の送信操作を失敗させる必要があります。 オフロード ターゲットは、データを送信する TCP 接続のオフロードが終了するときに、NDIS_STATUS_UPLOAD_IN_PROGRESSの状態値を書き込みます。 この場合、ホスト スタックは TCP データをキューに入れ、処理します。 オフロード ターゲットは、データが送信される TCP 接続で RST セグメントを受信した場合、NDIS_STATUS_REQUEST_ABORTEDの状態値を書き込みます。 この場合、ホスト スタックは TCP データを処理しません。
    • オフロード ターゲットは、リンク リスト内の 1 つのNET_BUFFER_LIST構造体に対して、最大で 1 つの部分的な送信を完了する必要があります。 オフロード ターゲットは、NDIS_STATUS_SUCCESS以外の状態値を書き込みます。たとえば、NDIS_STATUS_ABORTEDまたはNDIS_STATUS_UPLOAD_IN_PROGRESSの状態値をこのようなNET_BUFFER_LIST構造体に書き込みます。
    • 中間ドライバーは、基になるオフロード ターゲットに送信操作を伝達するメモリを割り当てることができない場合は、リンクリスト内の最初のNET_BUFFER_LIST構造体にNDIS_STATUS_REQUEST_UPLOADの状態値を書き込み、リンクリスト内の後続のすべてのNET_BUFFER_LIST構造体にNDIS_STATUS_UPLOAD_REQUESTEDします。 中間ドライバーは、基になるオフロード ターゲットにNET_BUFFER_LIST構造体を伝達できません。 ホスト スタックが送信操作を実行します。
  • 送信されるデータ バイト数を指定します。 オフロード ターゲットは、tcpOffloadBytesTransferred id を持つ NET_BUFFER_LIST_INFO マクロ呼び出すことによってこれを行います。
  • を呼び出します。NET_BUFFER_LIST構造体に関連付けられている各NET_BUFFER構造体の NdisAdvanceNetBufferDataStart 関数を します。 NdisAdvanceNetBufferDataStart 関数に渡される NetBuffer パラメーターは、NET_BUFFER構造体を指している必要があります。 DataOffsetDelta パラメーターは、オフロード ターゲットによって送信され、リモート ホストによって確認されたNET_BUFFER構造体からのデータ バイト数を指定する必要があります。 FreeMdl パラメーターは NULL です。

必要条件

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

関連項目

ミニポートSendNetBufferLists

ミニポートTcpOffloadSend

NET_BUFFER

NET_BUFFER_LIST

NdisAdvanceNetBufferDataStart

NdisMRegisterMiniportDriver