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_OFFLOAD_STATE_CONST構造体として書式設定され、その後にTCP_OFFLOAD_STATE_CACHED構造体、TCP_OFFLOAD_STATE_DELEGATED構造体が続きます。
FilterReservedOffloadState
フィルター ドライバー用に予約されています。
NextBlock
Header メンバーの 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 。
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
オフロードの開始: オフロード ターゲットは、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられている状態をオフロードできませんでした。ホスト スタックで、以外の NULLDlSourceAddress メンバーが指定されているためです。 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構造体に関連付けられている状態を格納するオフロード コンテキスト領域を参照します。 状態がオフロード ターゲットによってオフロードされる新しい状態である場合、ミニポートOffloadContext が指すメモリの場所には、NULL 値が含まれます。 状態をオフロードした後、オフロード ターゲットはこのメモリ位置に PVOID 値を書き込みます。 オフロード ターゲットによって提供される PVOID 値は、状態がオフロードされたオフロード コンテキスト領域を参照します。 ミニポートOffloadContext メンバー自体が NULL 場合、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体はオフロード状態ツリーのプレースホルダーです。
NdisOffloadHandle
オフロード ターゲットが後続の呼び出しで提供するハンドル。NdisTcpOffloadEventHandler 関数またはNdisTcpOffloadReceiveHandler 関数を、このNDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体に関連付けられているオフロード状態を示します。
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構造体に関連付けられている MDL には、オフロード操作の一環として、ホスト スタックがオフロード ターゲットに渡すデータが含まれています。 オフロード ターゲットは、適切な NdisTcpOffloadXxxComplete 関数を呼び出すことによって、このようなデータをホスト スタックに非同期的に完了します。 現時点では、リンクリストには、未処理の送信データという 1 種類のデータのみを含めることができます。 詳細については、「オフロード操作 中およびオフロード操作後の未処理の送信データの処理を参照してください。
オフロード ターゲットは、TCP 接続のオフロードを終了するときに、未処理の送信データをホスト スタックに渡すことができます。 この場合、オフロード ターゲットは、NetBufferListChain メンバーの非NULL 値を呼び出すときに指定します。NdisMTerminateOffloadComplete 関数を します。 オフロード ターゲットが、終了する TCP 接続の送信データを渡さない場合は、NetBufferListChain メンバーに NULL 値を指定する必要があります。
備考
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造をリンクして、オフロード状態ツリー TCP チムニーのフレームワークを構築することができます。
NDIS を通じて、ホスト スタックはオフロード ターゲットの次の関数のいずれかにオフロード状態ツリーを参照する OffloadBlockList ポインターを渡します。
オフロード ターゲットは、対応する完了関数に同じポインターを渡すことによって、ツリーをホスト スタックに返します。- NdisMInitiateOffloadComplete の
- NdisMQueryOffloadStateComplete の
-
NdisMUpdateOffloadComplete の
- NdisMInvalidateOffloadComplete の
- NdisMTerminateOffloadComplete の
ホスト スタックとオフロード ターゲットは、*ミニポートOffloadContext を使用し、NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の ndisOffloadHandle メンバーを してオフロード状態を参照します。 詳細については、「オフロード状態 格納および参照する」を参照してください。
NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体は、オフロード状態ツリーで複数の関数のいずれかを実行できます。 プレースホルダー、リンカーとして機能するか、オフロード ターゲットによってオフロードされる新しい状態を伝えることができます。 詳細については、「プレースホルダー、リンカー、および新しいオフロード をする」を参照してください。
オフロードの開始、オフロードのクエリ、オフロードの更新、オフロードの無効化、またはオフロードの終了操作を完了する前に、オフロード ターゲットは、状態ツリー内の各NDIS_MINIPORT_OFFLOAD_BLOCK_LIST構造体の 状態 メンバーに完了状態を書き込む必要があります。
必要条件
要件 | 価値 |
---|---|
ヘッダー | ndischimney.h (Ndischimney.h を含む) |
関連項目
NEIGHBOR_OFFLOAD_STATE_DELEGATEDNdisMAllocatePort の
NdisMInitiateOffloadComplete の
NdisMInvalidateOffloadComplete NdisMQueryOffloadStateComplete NdisMTerminateOffloadCompleteNdisMUpdateOffloadComplete の
NdisTcpOffloadEventHandler の
NdisTcpOffloadReceiveHandler の