次の方法で共有


TCP_OFFLOAD_STATE_DELEGATED 構造体 (ndischimney.h)

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

TCP_OFFLOAD_STATE_DELEGATED構造体には、TCP 接続状態オブジェクトの委任された変数が含まれています。

構文

typedef struct _TCP_OFFLOAD_STATE_DELEGATED {
  OFFLOAD_STATE_HEADER         Header;
  TCP_OFFLOAD_CONNECTION_STATE State;
  USHORT                       Flags;
  ULONG                        RcvNxt;
  ULONG                        RcvWnd;
  ULONG                        SndUna;
  ULONG                        SndNxt;
  ULONG                        SndMax;
  ULONG                        SndWnd;
  ULONG                        MaxSndWnd;
  ULONG                        SendWL1;
  ULONG                        CWnd;
  ULONG                        SsThresh;
  USHORT                       SRtt;
  USHORT                       RttVar;
  ULONG                        TsRecent;
  ULONG                        TsRecentAge;
  ULONG                        TsTime;
  ULONG                        TotalRT;
  UCHAR                        DupAckCount;
  UCHAR                        SndWndProbeCount;
  struct {
    UCHAR ProbeCount;
    ULONG TimeoutDelta;
  } KeepAlive;
  struct {
    UCHAR Count;
    ULONG TimeoutDelta;
  } Retransmit;
  union {
    struct {
      PNET_BUFFER_LIST SendDataHead;
      PNET_BUFFER_LIST SendDataTail;
    };
    ULONG SendBacklogSize;
  };
  union {
    PNET_BUFFER_LIST BufferedData;
    ULONG            ReceiveBacklogSize;
  };
  ULONG                        DWnd;
} TCP_OFFLOAD_STATE_DELEGATED, *PTCP_OFFLOAD_STATE_DELEGATED;

メンバー

Header

OFFLOAD_STATE_HEADER構造体。 NDIS は、HeaderLength メンバーを、TCP_OFFLOAD_STATE_DELEGATED構造体のサイズ (バイト単位) に設定します。 HeaderRecognizedOptions メンバーが予約されています。

State

TCP 接続の現在の状態 (RFC 793 を参照) は、次のTCP_OFFLOAD_CONNECTION_STATE値のいずれかです。

TcpConnectionClosed

接続状態がありません。

TcpConnectionListen

任意のリモート TCP とポートからの接続要求を待機しています。

TcpConnectionSynSent

接続要求を送信した後、一致する接続要求を待機しています。

TcpConnectionSynRcvd

接続要求の受信と送信の両方を行った後、接続要求の確認を待機しています。

TcpConnectionEstablished

開いている接続: 受信したデータをユーザーに配信できます。 データ転送フェーズにおける接続の通常の状態。

TcpConnectionFinWait1

リモート TCP からの接続終了要求、または以前に送信された接続終了要求の受信確認を待機しています。

TcpConnectionFinWait2

リモート TCP からの接続終了要求を待機しています。

TcpConnectionCloseWait

ローカル ユーザーからの接続終了要求を待機しています。

TcpConnectionClosing

リモート TCP からの接続終了要求受信確認を待機しています。

TcpConnectionLastAck

以前にリモート TCP に送信された接続終了要求の受信確認を待機しています。これには、接続終了要求の受信確認が含まれます。

TcpConnectionTimeWait

リモート TCP が接続終了要求の受信確認を確実に受信するまでの十分な時間を待機しています。

接続が TcpConnectionClosed、TcpConnectionListen、TcpConnectionSynRcvd を除く任意の状態の場合、ホスト スタックは TCP 接続をオフロードできることに注意してください。

TcpConnectionSynSent、または TcpConnectionTimeWait 状態。 ホスト スタックは、接続状態に関係なく、TCP 接続のクエリ、更新、無効化、または終了を行うことができます。

Flags

システムで使用するために予約されています。

RcvNxt

次の受信セグメントのシーケンス番号 (RCV を参照)。RFC 793 の NEXT)。

RcvWnd

受信ウィンドウ のサイズ (バイト単位)。RFC 793 の WND)。

SndUna

未確認データの最初のバイトのシーケンス番号 (SND を参照)。RFC 793 の UNA)。 詳細については、「 再送信するデータを含むデータを送信する」を参照してください。

SndNxt

接続で送信する次のバイトのシーケンス番号 (SND を参照)。RFC 793 の NXT)。 詳細については、「 再送信するデータを含むデータを送信する」を参照してください。

SndMax

接続で送信された最大シーケンス番号。 詳細については、「 再送信するデータを含むデータを送信する」を参照してください。

SndWnd

送信ウィンドウのサイズ (バイト単位)。RFC 793 の WND)。

MaxSndWnd

送信ウィンドウの最大サイズ (バイト単位) (RFC 813 を参照)。

SendWL1

最後のウィンドウ更新に使用されたセグメント シーケンス番号 (SND を参照)。RFC 793 の WL1)。

CWnd

輻輳ウィンドウのサイズ (バイト単位)。

SsThresh

低速開始しきい値 (バイト単位)。

SRtt

スムーズなラウンドトリップ時間 (クロック ティック単位) (RFC 793 および 2988 の SRTT を参照)。 パス、ホスト、場合によってはアプリケーションの動作が考慮されるため、接続ごとに維持されます。

RttVar

クロック ティック単位のラウンド トリップ時間の変動 (RFC 2988 の RTTVAR を参照)。

TsRecent

次の ACK で送信するタイムスタンプ値 (TS を参照)。RFC 1323 の最近のバージョン)

TsRecentAge

最新のタイムスタンプが受信されてからの時間 (クロック ティック単位) (RFC 1323 を参照)。

TsTime

調整されたタイムスタンプの現在の値。

TotalRT

現在の TCP セグメントの再送信に費やされた合計時間 (クロック ティック単位)。

DupAckCount

同じシーケンス番号に対して受け入れられた ACL の数 (RFC 1323 を参照)。

SndWndProbeCount

現在の送信ウィンドウ プローブラウンド。 送信ウィンドウ プローブラウンドの説明については、「 永続化タイマー」を参照してください。

KeepAlive

このメンバーは、次のメンバーで構成される共用体です。

KeepAlive.ProbeCount

応答を受信していない送信されたキープアライブ プローブの数 (RFC 1122 を参照)。

KeepAlive.TimeoutDelta

次のキープアライブ タイムアウトまでの残りの時間をクロック ティック単位で指定します (RFC 1122 を参照)。 TCP 接続がオフロードされた直後に -1 の値は、接続がオフロードされたときにキープアライブ タイマーが実行されなかったことを示します。 オフロード ターゲットのキープアライブ タイマーが実行されていない場合、オフロード ターゲットは、MiniportQueryOffload 関数または MiniportTerminateOffload 関数の呼び出しに応答するときに、このメンバーで -1 を返す必要があります。

Retransmit

このメンバーは、次のメンバーで構成される共用体です。

Retransmit.Count

送信された再送信の数 (RFC 2581 を参照)。

Retransmit.TimeoutDelta

次の再送信タイムアウトまでの時間 (クロック ティック単位) (RFC 2581 を参照)。 TCP 接続がオフロードされた直後に -1 の値は、接続がオフロードされたときに再送信タイマーが実行されなかったことを示します。 接続がオフロードされたときに、接続に未処理の送信データがなかったため、再送信タイマーが実行されませんでした。 オフロード ターゲットの再送信タイマーが実行されていない場合、オフロード ターゲットは、MiniportQueryOffload 関数または MiniportTerminateOffload 関数の呼び出しに応答するときに、このメンバーで -1 を返す必要があります。

SendDataHead

NET_BUFFER_LIST構造体へのポインター。 このNET_BUFFER_LIST構造体は、 の NetBufferListChain メンバーが指すリンク リスト内にあります。 TCP_OFFLOAD_STATE_DELEGATED 構造体の直前にあるNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体。 NetBufferListChain ポインターが NULL の場合、SendDataHead は重要ではありません。

SendDataHead ポインターは、NET_BUFFER構造体が関連付けられた送信データをバッファーに格納した最初のNET_BUFFER_LIST構造体を指します。

この変数は、オフロード開始操作または終了オフロード操作でのみ使用されます。 この変数の使用方法の詳細については、「オフロード操作中およびオフロード後の未処理の送信データの処理」および「終了オフロード操作中の未処理の送信データの処理」を参照してください。

SendDataTail

NET_BUFFER_LIST構造体へのポインター。 このNET_BUFFER_LIST構造体は、TCP_OFFLOAD_STATE_DELEGATED構造体の直前にあるNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の NetBufferListChain メンバーが指すリンク リスト内にあります。 NetBufferListChain ポインターが NULL の場合、SendDataTail は重要ではありません。

SendDataTail ポインターは、NET_BUFFER構造体が関連付けられた送信データをバッファーに格納した最後のNET_BUFFER_LIST構造体を指します。

この変数は、オフロード開始操作または終了オフロード操作でのみ使用されます。 この変数の使用方法の詳細については、「オフロード操作中およびオフロード後の未処理の送信データの処理」および「終了オフロード操作中の未処理の送信データの処理」を参照してください。

SendBacklogSize

オフロード ターゲットは、最適なパフォーマンスを得るために、オフロード ターゲットでホスト スタックが未処理のデータ バイト数を示すためにこの値を指定します。 (これは、オフロード ターゲットに渡されたが、オフロード ターゲットによってまだ完了していない送信バイト数です)。オフロード ターゲットが送信バックログ サイズの計算に使用する特定の変数とアルゴリズムは、実装固有です。 送信バックログ サイズには、接続、インターフェイス帯域幅、およびその他のパラメーターのラウンドトリップ時間 (RTT) の関数を指定できます。 たとえば、オフロード ターゲットでは、帯域幅/遅延製品の最小値と、アドバタイズされた受信ウィンドウを使用できます。 ただし、送信バックログ のサイズは、接続での送信のために現在投稿されているデータ バイト数によって異ならない点に注意してください。

ホスト スタックは、接続の TCP 委任状態に対してクエリを実行して、送信バックログ サイズを取得できます。 さらに、オフロード ターゲットは、 を呼び出すことによって、送信バックログ サイズの変更を示すことができます。 NdisTcpOffloadEventHandler 関数。

オフロード ターゲットが send-backlog-size 機能をサポートしていない場合は、接続の TCP 委任状態が照会されるときに、 sendBacklogSize に 0xFFFFFFFF の値を書き込む必要があります。 SendBacklogSize 変数は、終了オフロード操作では使用されません。

BufferedData

バッファーに格納された受信データへのポインター。 ホスト スタックは、TCP 接続をオフロードするときに、このようなデータをオフロード ターゲットに渡すことができます。 (詳細については、「 オフロード操作中およびオフロード操作後にバッファーされた受信データを処理する」を参照してください)。オフロード ターゲットは、TCP 接続をアップロードするときに、このようなデータをホスト スタックに渡すことができます。 (詳細については、「 オフロードの終了操作中にバッファーに格納された受信データを処理する」を参照してください)。

ReceiveBacklogSize

オフロード ターゲットは、オフロードされた TCP 接続のオフロード ターゲットでバッファーされる受信データ バイト数を示すために、この値を指定します。 ホスト スタックは、接続の TCP 委任状態に対してクエリを実行して、この値を取得できます。 ホスト スタックは、この値を使用して、バッファー内のすべてのデータを保持するのに十分な大きさの 1 つ以上の受信要求を接続に送信します。

オフロード ターゲットが受信バックログ サイズ機能をサポートしていない場合は、値 0xFFFFFFFF を ReceiveBacklogSize に書き込む必要があります。

DWnd

注釈

ホスト スタックは、これらの変数をオフロード ターゲットにオフロードするときに、TCP 委任された変数の初期値を提供します。 オフロードされた後、TCP の委任された変数は、オフロード ターゲットによって所有および管理されます。 オフロード ターゲットのみが、オフロードされた TCP 委任変数の値を変更できます。 オフロード ターゲットは、オフロードされた TCP 委任変数の値に対する変更をホスト スタックに通知しません。 ただし、ホスト スタックは、オフロードされた TCP 委任された変数の値に対してクエリを実行できます。これにより、NDIS はオフロード ターゲットの MiniportQueryOffload 関数を呼び出します。 ホスト スタックが TCP 接続状態オブジェクトのオフロードを終了するとき、NDIS がオフロード ターゲットの を呼び出すようにします。 MiniportTerminateOffload 関数を使用すると、オフロード ターゲットは、終了した TCP 接続状態オブジェクト内の TCP 委任された変数の値をホスト スタックに戻します。

オフロード ターゲットに渡されると、TCP_OFFLOAD_STATE_DELEGATED構造体は に関連付けられます。 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 構造体。 NDIS_OBJECT_HEADER構造体として 書式設定されたヘッダーが含まれます。 この場合、NDIS_OBJECT_HEADER 構造体の Revision メンバーは、TCP_OFFLOAD_STATE_DELEGATED構造体のリビジョン番号を指定します。

要件

要件
Header ndischimney.h (Ndischimney.h を含む)

こちらもご覧ください

MiniportQueryOffload

MiniportTerminateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST