OID_TCP_TASK_OFFLOAD

ホスト スタックは、ミニポート ドライバーの NIC またはオフロード ターゲットの TCP オフロード機能を取得する OID_TCP_TASK_OFFLOAD OID を照会します。 NIC またはオフロード ターゲットがサポートするオフロード機能を決定した後、ホスト スタックは、報告された機能の1つ以上を有効にするように、この OID を設定します。 ホスト スタックでは、OID_TCP_TASK_OFFLOAD を設定することで、NIC またはオフロード ターゲットの TCP オフロード機能をすべて無効にすることもできます。 特定の NIC の TCP オフロード機能を有効にできるのは、一度に 1 つのプロトコルだけです。

オフロード機能のクエリ

ホスト スタッククエリが OID_TCP_TASK_OFFLOAD されると、 InformationBufferNDIS_TASK_OFFLOAD_HEADER が提供されます。 この構造体は、次を指定します:

  • ホスト スタックでサポートされているオフロード バージョン。
  • ホスト スタックによって処理される送受信パケットのカプセル化フォーマット。
  • このようなパケット内のカプセル化ヘッダーのサイズ。

この情報を使用すると、ミニポート ドライバーまたはその NIC は、オフロード タスクを実行するための前提条件である送信パケットの最初の IP ヘッダーの先頭を見つけることができます。 オフロード ターゲットは、受信パケットを処理するためのカプセル化形式を認識している必要があります。 OID_TCP_TASK_OFFLOADのクエリに応答して、ミニポート ドライバーまたはオフロード ターゲットは、 InformationBuffer で、NDIS_TASK_OFFLOAD_HEADER構造体の直後に1つ以上の NDIS_TASK_OFFLOAD 構造体を返します。 各 NDIS_TASK_OFFLOAD 構造体は、ミニポート ドライバーの NIC またはオフロード ターゲットによってサポートされるオフロード機能について説明します。 ミニポート ドライバーの NIC またはオフロード ターゲットが特定のオフロード機能の複数のバージョンをサポートしている場合は、バージョンごとに1つの NDIS_TASK_OFFLOAD 構造体を返す必要があります。

各 NDIS_TASK_OFFLOAD 構造体には、この構造体が適用される特定のオフロード機能を指定する Task メンバーがあります。 各NDIS_TASK_OFFLOAD 構造体には、指定されたオフロード機能に関連する情報を含む TaskBuffer もあります。 TaskBuffer の情報は、次のいずれかの構造体としてフォーマットされます:

Note

中間ドライバーがパケットに対して TCP オフロード関数を実行できないように、下位ミニポート ドライバーに転送するパケットの内容を変更する場合、中間ドライバーは、下位ミニポート ドライバーまたはオフロード ターゲットに OID 要求を渡す代わりに、NDIS_STATUS_NOT_SUPPORTEDの状態でOID_TCP_TASK_OFFLOAD クエリに応答する必要があります。

オフロード機能の有効化

NIC またはオフロード ターゲットのオフロード機能に対してクエリを実行した後、ホスト スタックは、OID_TCP_TASK_OFFLOAD を設定することで、これらの機能の1つ以上を有効にします。 OID_TCP_TASK_OFFLOADを設定すると、ホスト スタックは InformationBufferで、NDIS_TASK_OFFLOAD_HEADER 構造体の直後に、ホスト スタックが有効にしている各オフロード機能の NDIS_TASK_OFFLOAD 構造体を提供します。

各NDIS_TASK_OFFLOAD構造体の タスク は、ホスト スタックが有効にしているオフロード機能を示します。 ホスト スタックでは、各NDIS_TASK_OFFLOAD 構造体の TaskBuffer に、構造体のメンバーを設定することで、特定のオフロード機能の特定の側面も有効にします。

オフロード機能の変更

NIC またはオフロード ターゲットに対して有効になっているオフロード機能を変更するには、ホスト スタックが OID_TCP_TASK_OFFLOAD を設定します。 ミニポート ドライバーまたはオフロード ターゲットは、OID_TCP_TASK_OFFLOAD の最新のセットで指定されたオフロード機能のみを有効にする必要があります。 ミニポート ドライバーまたはオフロード ターゲットは、他のすべてのオフロード機能を無効にする必要があります。 特定の TCP チムニー オフロード機能を無効にする前に、ホスト スタックは、その機能を使用するオフロードされた TCP 接続のオフロードを終了することに注意してください。

オフロード ターゲットは、一時停止または再開オフロード表示を使用して、報告された TCP オフロード機能を変更できます。

  • オフロード ターゲットは、NDIS_STATUS_INDICATION StatusCode メンバーを NDIS_STATUS_OFFLOAD_PAUSE に設定して>NdisMIndicateStatusEx 関数を呼び出すことによって一時停止の指示を出します。
  • オフロード ターゲットは、NDIS_STATUS_INDICATION StatusCode メンバーを NDIS_STATUS_OFFLOAD_RESUMEに設定して>NdisMIndicateStatusEx 関数を呼び出すことによって再開の指示を出します。

オフロード ターゲットがオフロード状態オブジェクトの再開をホスト スタックに要求した後、ホスト スタックは再び OID_TCP_TASK_OFFLOAD を照会して、オフロード ターゲットの TCP オフロードの変更された機能を取得します。 詳細については、 NDIS_STATUS_OFFLOAD_RESUME を参照してください。

オフロード機能の無効化

NIC またはオフロード ターゲットでサポートされているすべてのオフロード機能を無効にするには、ホスト スタックが OID_TCP_TASK_OFFLOAD を設定します。 InformationBuffer では、ホスト スタックは、この構造体の OffsetFirstTas メンバーが 0 に設定された NDIS_TASK_OFFLOAD_HEADER 構造体を提供します。

要件

バージョン: Windows Vista 以降の ヘッダー: Ntddndis.h (Ndis.h を含む)