次の方法で共有


NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 構造体 (ndischimney.h)

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

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造は、TCP チムニー オフロード状態ツリーの基本的な構成要素です。 オフロード状態ツリーには、1 つ以上のNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体を含めることができます。

構文

typedef struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST {
  IN NDIS_OBJECT_HEADER                Header;
  IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *NextBlock;
#if ...
  struct                               _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
  IN _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *DependentBlockList;
#else
  struct                               _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
#endif
  OUT NDIS_STATUS                      Status;
  IN PVOID                             NdisReserved[2];
  IN OUT PVOID                         *MiniportOffloadContext;
  IN NDIS_HANDLE                       NdisOffloadHandle;
  IN PVOID                             ProtocolReserved[2];
  IN PVOID                             MiniportReserved[2];
  IN PVOID                             ImReserved[2];
  IN PVOID                             Scratch[2];
  IN PVOID                             SourceHandle;
  IN NDIS_PORT_NUMBER                  PortNumber;
  IN OUT PNET_BUFFER_LIST              NetBufferListChain;
} NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, *PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST;

メンバー

Header

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体のヘッダー。 ヘッダーは、 NDIS_OBJECT_HEADER 構造体として書式設定されます。 NDIS_OBJECT_HEADER構造体には、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体のリビジョン番号、メモリ内のNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に直ちに続くオフロード状態の種類、およびヘッダーを含むNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体のサイズ (バイト単位) が含まれます。

NDIS_OBJECT_HEADER構造体の Type メンバーは、オフロード状態の種類を示し、メモリ内のNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の直後にある特定のオフロード状態構造 (または構造体) を意味します。

次のOFFLOAD_STATE_TYPE値がサポートされています。

NeighborOffloadConstState

定数近隣状態を指定します。 この状態は、 NEIGHBOR_OFFLOAD_STATE_CONST 構造体。

NeighborOffloadCachedState

キャッシュされた近隣状態を指定します。 この状態は、 NEIGHBOR_OFFLOAD_STATE_CACHED 構造体。

NeighborOffloadDelegatedState

委任された近隣状態を指定します。 この状態は、 NEIGHBOR_OFFLOAD_STATE_DELEGATED 構造体。

NeighborOffloadState

定数、キャッシュ済み、委任された近隣状態など、すべての近隣状態情報を指定します。 この状態は、NEIGHBOR_OFFLOAD_STATE_CONST構造体として書式設定され、その後にNEIGHBOR_OFFLOAD_STATE_CACHED構造体が続き、その後に NEIGHBOR_OFFLOAD_STATE_DELEGATED 構造体が続きます。

Ip4OffloadConstState

定数パスの状態 (IPv4) を指定します。 この状態は、 PATH_OFFLOAD_STATE_CONST 構造体。

Ip4OffloadCachedState

キャッシュされたパスの状態 (IPv4) を指定します。 この状態は、 PATH_OFFLOAD_STATE_CACHED 構造体。

Ip4OffloadDelegatedState

委任されたパスの状態 (IPv4) を指定します。 この状態は、 PATH_OFFLOAD_STATE_DELEGATED 構造体。 現在、委任されたパスの状態はありません。 PATH_OFFLOAD_STATE_DELEGATED構造体には変数が含まれていません。

Ip4OffloadState

定数、キャッシュ、委任されたパスの状態を含むすべてのパス状態 (IPv4) を指定します。 この状態は、PATH_OFFLOAD_STATE_CONST構造体として書式設定され、その後にPATH_OFFLOAD_STATE_CACHED構造体が続き、その後に PATH_OFFLOAD_STATE_DELEGATED 構造体が続きます。

Ip6OffloadConstState

定数パスの状態 (IPv6) を指定します。 この状態は、PATH_OFFLOAD_STATE_CONST構造体として書式設定されます。

Ip6OffloadCachedState

キャッシュされたパスの状態 (IPv6) を指定します。 この状態は、PATH_OFFLOAD_STATE_CACHED構造体として書式設定されます。

Ip6OffloadDelegatedState

委任されたパスの状態 (IPv6) を指定します。 この状態は、PATH_OFFLOAD_STATE_DELEGATED構造体として書式設定されます。 現在、委任されたパスの状態はありません。 PATH_OFFLOAD_STATE_DELEGATED構造体には変数が含まれていません。

Ip6OffloadState

定数、キャッシュ、委任されたパスの状態を含むすべてのパス状態情報 (IPv6) を指定します。 この状態は、PATH_OFFLOAD_STATE_CONST構造体として書式設定され、その後にPATH_OFFLOAD_STATE_CACHED構造体が続き、その後に PATH_OFFLOAD_STATE_DELEGATED 構造体が続きます。

TcpOffloadConstState

定数 TCP 状態を指定します。 この状態は、 TCP_OFFLOAD_STATE_CONST 構造体。

TcpOffloadCachedState

キャッシュされた TCP 状態を指定します。 この状態は、 TCP_OFFLOAD_STATE_CACHED 構造体。

TcpOffloadDelegatedState

委任された TCP 状態を指定します。 この状態は、 TCP_OFFLOAD_STATE_DELEGATED 構造体。

TcpOffloadResourceState

予約済み。 このOFFLOAD_STATE_TYPE値とTCP_OFFLOAD_RESOURCE_STATE構造体は現在使用されていません。

TcpOffloadState

定数、キャッシュされた TCP 状態、委任された TCP 状態など、すべての TCP 状態情報を指定します。 この状態は、TCP_OFFLOAD_STATE_CONST構造体として書式設定され、その後にTCP_OFFLOAD_STATE_CACHED構造体が続き、その後に TCP_OFFLOAD_STATE_DELEGATED 構造体が続きます。

FilterReservedOffloadState

フィルター ドライバー用に予約されています。

NextBlock

ヘッダー メンバーの Type メンバーによって示されるオフロード状態レイヤー (近隣、パス、または TCP) にある次のNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体へのポインター。 NextBlock ポインターを介してリンクされているNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体は、常にオフロード状態の同じレイヤーにあります。 NextBlock の値が NULL の場合、このレベルに次のNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体が追加されていないことを示します。

_NDIS_MINIPORT_OFFLOAD_BLOCK_LIST

DependentBlockList

オフロード状態の依存レイヤー (オフロード状態ツリーの上位レイヤー) にあるNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体へのポインター。 TCP チムニー オフロードの場合:

  • 近隣レイヤーのNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の DependentBlockList メンバーは、パス レイヤーのNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体のみを指すことができます。
  • パス レイヤーのNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の DependentBlockList メンバーは、TCP レイヤーのNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体のみを指すことができます。
  • TCP レイヤーのNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の DependentBlockList メンバーは常に NULL です
DependentBlockList の値が NULL の場合、依存NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体がないことを示します。

Status

オフロードの開始、クエリ オフロード、更新オフロード、オフロードの無効化、オフロードの無効化、またはオフロード操作の終了の完了状態。オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態で実行されるか、またはによって参照されます。 オフロード ターゲットは、操作に応じて、次のいずれかのNDIS_STATUS値を Status メンバーに書き込みます。

NDIS_STATUS_SUCCESS

オフロードの開始: オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態と、直ちに依存するすべてのNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態を正常にオフロードしました。

クエリ、更新、無効化、または終了オフロード: オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態または参照先の状態に対して操作を正常に実行しました。

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS

オフロードの開始: オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態を正常にオフロードしましたが、直ちに依存する 1 つ以上のNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態をオフロードできませんでした。

クエリ、更新、無効化、または終了オフロード: 許可された状態値ではありません。

NDIS_STATUS_FAILURE

オフロードの開始: オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造に関連付けられている状態をオフロードできませんでした。 エラーの原因を分類することはできません。

クエリ、更新、無効化、または終了オフロード: オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている、または参照されている状態に対して操作を実行できませんでした。

NDIS_STATUS_RESOURCES

オフロードの開始: オフロード ターゲットは、十分なホスト メモリを割り当てることができなかったため、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態をオフロードできませんでした。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_TCP_ENTRIES

オフロードの開始: オフロード ターゲットは TCP 接続状態オブジェクトを割り当てられなかったため、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態をオフロードできませんでした。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_PATH_ENTRIES

オフロードの開始: オフロード ターゲットはパス状態オブジェクトを割り当てられなかったため、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態をオフロードできませんでした。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES

オフロードの開始: オフロード ターゲットは近隣状態オブジェクトを割り当てられなかったため、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態をオフロードできませんでした。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES

オフロードの開始: オフロード ターゲットは、ホスト スタックで NULL 以外の DlSourceAddress メンバーを指定したため、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態をオフロードできませんでした。 NEIGHBOR_OFFLOAD_STATE_CONST 構造とオフロード ターゲットは、構成可能なソース MAC アドレスをサポートしていないか、追加のソース MAC アドレスを受け入れることができません。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES

オフロードの開始: オフロード ターゲットは、 の SourceAddress ポインターによって参照されるソース IP アドレスのデータ構造を割り当てられなかったため、オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造に関連付けられている状態をオフロードできませんでした PATH_OFFLOAD_STATE_CONST 構造体。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER

オフロードの開始: オフロード ターゲットが十分な TCP 送信バッファーを割り当てられなかったため、オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造に関連付けられている状態をオフロードできませんでした。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER

オフロードの開始: オフロード ターゲットが十分な TCP 受信バッファーを割り当てられなかったため、オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造に関連付けられている状態をオフロードできませんでした。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW

オフロードの開始: で指定された InitialRcvWnd メンバーが原因で、オフロード ターゲットがNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態をオフロードできませんでした TCP_OFFLOAD_STATE_CACHED 構造体は、オフロード ターゲットがサポートできるよりも大きくなります。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES

オフロードの開始: オフロード ターゲットでは、追加の VLAN ID を追跡するためのリソースが不足しています。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH

オフロードを開始する: 近隣 VlanId は 0 以外であり、インターフェイス VLAN ID の 1 つと一致しません。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NDIS_STATUS_OFFLOAD_PATH_MTU

TCP 接続のパス MTU は、オフロード ターゲットがサポートするパスよりも大きくなります。

クエリ、更新、無効化、または終了オフロード: 許可されている状態値ではありません。

NdisReserved[2]

NDIS で使用するために予約されています。

MiniportOffloadContext

オフロード ターゲットが PVOID 値を書き込むメモリ位置へのポインター。 PVOID 値は、オフロード ターゲットがNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態を格納するオフロード コンテキスト領域を参照します。 状態がオフロード ターゲットによってオフロードされる新しい状態である場合、 MiniportOffloadContext によって指されるメモリの場所には NULL 値が含まれます。 状態をオフロードした後、オフロード ターゲットは PVOID 値をこのメモリの場所に書き込みます。 オフロード ターゲットによって提供される PVOID 値は、状態がオフロードされたオフロード コンテキスト領域を参照します。 MiniportOffloadContext メンバー自体が NULL の場合、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体はオフロード状態ツリーのプレースホルダーです。

NdisOffloadHandle

後続の への呼び出しでオフロード ターゲットが提供するハンドル。 NdisTcpOffloadEventHandler 関数またはこのNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられているオフロード状態を示す場合の NdisTcpOffloadReceiveHandler 関数。

ProtocolReserved[2]

この領域を独自の目的で使用できるプロトコル ドライバーで使用するために予約されています。 オフロード ターゲットでは、この値を変更することはできません。

MiniportReserved[2]

オフロード ターゲットで使用するために予約されています。この領域は、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられているオフロード状態をキューに入れるなど、独自の目的で使用できます。

ImReserved[2]

中間ドライバーで使用するために予約されており、この領域を独自の目的で使用できます。 オフロード ターゲットでは、この値を変更することはできません。

Scratch[2]

オフロード ターゲットは、内部追跡にこの領域を使用できます。 この領域の情報は、オフロード ターゲットがNDIS_MINIPORT_OFFLOAD_BLOCK_LISTの所有権を持っている間にのみ有効です。

SourceHandle

このメンバーは、オフロード ターゲットでは重要ではありません。 オフロード ターゲットでは、このメンバーを変更することはできません。

PortNumber

ミニポート アダプターのポートを識別するポート番号。 ミニポート アダプターのポート番号を割り当てるには、 NdisMAllocatePort 関数を呼び出します。 0 の値は、ミニポート アダプターの既定のポートを識別します。 ミニポート ドライバーが指定したアダプターのポートを割り当てされていない場合は、既定のポートを使用します。

NetBufferListChain

ホスト スタックで NULL 値が指定されている場合、 NetBufferListChain は重要ではなく、オフロード ターゲットでは無視できます。

ホスト スタックで NULL 以外の値が指定されている場合、 NetBufferListChain は 、スタンドアロン構造体またはそのような構造体のリンクされたリスト内の最初の構造体である可能性がある NET_BUFFER_LIST 構造体を指します。 リンク リスト内の各NET_BUFFER_LIST構造体は、1 つの NET_BUFFER 構造について説明します。 NET_BUFFER構造体は、メモリ記述子リスト (MDL) のチェーンにマップされます。 NET_BUFFER_LISTおよび関連する構造体は、物理メモリに常駐し続けることができるようにロックされます。 ただし、システム メモリにはマップされません。

NET_BUFFER構造体に関連付けられている MPL には、オフロード操作の一環としてホスト スタックがオフロード ターゲットに渡すデータが含まれています。 オフロード ターゲットは、適切な NdisTcpOffloadXxxComplete 関数を呼び出すことによって、このようなデータをホスト スタックに非同期的に完了します。 現時点では、リンク リストには、未処理の送信データという 1 種類のデータのみを含めることができます。 詳細については、「 オフロード操作中およびオフロード後の未処理の送信データの処理」を参照してください。

オフロード ターゲットは、TCP 接続のオフロードを終了するときに、未処理の送信データをホスト スタックに渡すことができます。 この場合、オフロード ターゲットは、 を呼び出すときに NetBufferListChain メンバーに NULL 以外の値を指定します。 NdisMTerminateOffloadComplete 関数。 オフロード ターゲットが終了している TCP 接続の送信データを渡さない場合は、NetBufferListChain メンバーに NULL 値を指定する必要があります。

注釈

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体をリンクして、TCP チムニー オフロード状態ツリーのフレームワークを構築できます。

NDIS を使用して、ホスト スタックはオフロード ターゲットの次のいずれかの関数にオフロード状態ツリーを参照する OffloadBlockList ポインターを渡します。

オフロード ターゲットは、対応する完了関数に同じポインターを渡すことによって、ツリーをホスト スタックに返します。 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体は、オフロード、照会、更新、無効化、または終了される状態を含む オフロード状態構造体 によって、メモリ内ですぐに実行できます。 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の HeaderType メンバーは、オフロード状態の種類を指定し、メモリ内のNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に続く特定のオフロード状態構造体 (または構造体) を意味します。

ホスト スタックとオフロード ターゲットは、オフロードされた状態を参照するために、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の *MiniportOffloadContext メンバーと NdisOffloadHandle メンバーを使用します。 詳細については、「 オフロード状態の格納と参照」を参照してください。

NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体は、オフロード状態ツリーで複数の関数のいずれかを実行できます。 プレースホルダー、リンカーとして機能することも、オフロード ターゲットによってオフロードされる新しい状態を伝えることもできます。 詳細については、「 プレースホルダー、リンカー、および新しいオフロード」を参照してください。

オフロードの開始、オフロードのクエリ、オフロードの更新、オフロードの無効化、またはオフロードの終了操作を完了する前に、オフロード ターゲットは状態ツリー内の各NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の Status メンバーに完了状態を書き込む必要があります。

要件

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

こちらもご覧ください

MiniportInitiateOffload

MiniportInvalidateOffload

MiniportQueryOffload

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

NEIGHBOR_OFFLOAD_STATE_CACHED

NEIGHBOR_OFFLOAD_STATE_DELEGATED

NdisMAllocatePort

NdisMInitiateOffloadComplete

NdisMInvalidateOffloadComplete NdisMQueryOffloadStateComplete NdisMTerminateOffloadComplete

NdisMUpdateOffloadComplete

NdisTcpOffloadEventHandler

NdisTcpOffloadReceiveHandler

PATH_OFFLOAD_STATE_CACHED

PATH_OFFLOAD_STATE_CONST

PATH_OFFLOAD_STATE_DELEGATED

TCP_OFFLOAD_STATE_CACHED

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED