NDIS_HD_SPLIT_ATTRIBUTES 構造体 (ndis.h)

NDIS_HD_SPLIT_ATTRIBUTES構造体は、ミニポート アダプターに関連付けられているヘッダー データ分割属性 (存在する場合) を定義します。

構文

typedef struct _NDIS_HD_SPLIT_ATTRIBUTES {
  NDIS_OBJECT_HEADER Header;
  ULONG              HardwareCapabilities;
  ULONG              CurrentCapabilities;
  ULONG              HDSplitFlags;
  ULONG              BackfillSize;
  ULONG              MaxHeaderSize;
} NDIS_HD_SPLIT_ATTRIBUTES, *PNDIS_HD_SPLIT_ATTRIBUTES;

メンバー

Header

プロバイダー特性構造の NDIS_OBJECT_HEADER 構造 (NDIS_HD_SPLIT_ATTRIBUTES)。 ドライバーは、Header が指定する構造体の Type メンバーをNDIS_OBJECT_TYPE_HD_SPLIT_ATTRIBUTES、Revision メンバーをNDIS_OBJECT_HD_SPLIT_ATTRIBUTES_REVISION_1に、Size メンバーをNDIS_SIZEOF_HD_SPLIT_ATTRIBUTES_REVISION_1に設定します。

HardwareCapabilities

ミニポート アダプターがサポートするヘッダー データ分割ハードウェア機能。 これらの機能には、INF ファイルの設定または [高度な プロパティ] ページで現在無効になっている機能が含まれている必要があります。 HardwareCapabilities の値は、次のフラグのビットごとの OR です。

NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT

ミニポート アダプターは、ヘッダーとデータを、ヘッダーデータ分割サポートの要件を満たす個別の MDL に分割できます。

NDIS_HD_SPLIT_CAPS_SUPPORTS_IPV4_OPTIONS

ミニポート アダプターは、IPv4 オプションを含む IPv4 イーサネット フレームを分割できます。 ミニポート アダプターは、一部の IPv4 オプションの分割をサポートしながら、他のオプションを分割することはできません。

メモ NIC は、サポートされていない IPv4 オプションを含む IPv4 フレームを分割することはできません。 IPv4 フレームが分割される場合、分割フレームのヘッダー部分には、IPv4 ヘッダー全体と、存在するすべての IPv4 オプションが含まれている必要があります。
 

NDIS_HD_SPLIT_CAPS_SUPPORTS_IPV6_EXTENSION_HEADERS

ミニポート アダプターは、IPv6 拡張ヘッダーを含む IPv6 イーサネット フレームを分割できます。 ミニポート アダプターは、一部の IPv6 拡張機能ヘッダーをサポートできますが、他のヘッダーはサポートしていません。

メモ NIC は、サポートされていない IPv6 拡張ヘッダーを含む IPv6 フレームを分割することはできません。 IPv6 フレームが分割される場合、分割フレームのヘッダー部分には、IPv6 ヘッダー全体と、存在するすべての IPv6 拡張ヘッダーが含まれている必要があります。
 

NDIS_HD_SPLIT_CAPS_SUPPORTS_TCP_OPTIONS

ミニポート アダプターは、タイムスタンプ オプションに加えて、他の TCP オプションで TCP フレームを分割できます。 ミニポート アダプターは、一部の TCP オプションをサポートし、他のオプションをサポートすることはできません。

メモ フレーム内の唯一の TCP オプションがタイムスタンプ オプションである場合、データ分割プロバイダーはフレームを分割できる必要があります。
 
メモ TCP ヘッダーにサポートされていない TCP オプションが含まれている場合、NIC は TCP ヘッダーの先頭でフレームを分割するか、フレームを分割しないでください。
 

CurrentCapabilities

ミニポート アダプターがサポートする現在のヘッダー データ分割機能。 ミニポート ドライバーは、 HardwareCapabilities メンバーに対して定義されているのと同じフラグを使用します。 この場合、フラグは、現在の構成設定に依存する現在の機能を示すように設定されます。

HDSplitFlags

ミニポート アダプターのヘッダー データ分割の状態を制御するフラグのセット。 ミニポート ドライバーは、 を呼び出す前に、このメンバーを 0 に設定する必要があります。 NdisMSetMiniportAttributes 関数。 NdisMSetMiniportAttributes が正常に戻った後、ドライバーはフラグをチェックし、それに応じてハードウェアを構成する必要があります。 NDIS は、次のフラグのビットごとの OR でこのメンバーを設定します。

NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT

このフラグが設定されている場合、ミニポート ドライバーは、ハードウェアでヘッダー データ分割を有効にする必要があります。 それ以外の場合、ヘッダーデータ分割は無効になります。 コンピューターがヘッダー データ分割を使用し、ミニポート ドライバーも CurrentCapabilities メンバーのNDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT フラグを設定する場合、NDIS はNDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLITを設定します。

BackfillSize

分割フレームのデータ部分のバックフィル サイズ (バイト単位)。 ミニポート ドライバーを設定する必要があります
NdisMSetMiniportAttributes を呼び出す前に BackfillSize を 0 に設定します。 ミニポート ドライバーが分割フレームのデータ部分にバックフィル 記憶域を事前に割り当てる必要がある場合、NDIS は、このメンバーを設定します。 NdisMSetMiniportAttributes が正常に返された後、ドライバーは、データ バッファーを事前に割り当てるために NDIS が設定した BackfillSize 値を使用する必要があります。

MaxHeaderSize

分割フレームのヘッダー部分の最大サイズ (バイト単位)。 ミニポート ドライバーは、NdisMSetMiniportAttributes を呼び出す前に、MaxHeaderSize を 0 に設定する必要があります。 NDIS は、分割フレームのヘッダー バッファーの最大サイズにこのメンバーを設定します。 NdisMSetMiniportAttributes が正常に返された後、ドライバーは NDIS が提供した値を使用する必要があります。

メモ IPv4 オプション、IPSec ヘッダー、または IPv6 拡張ヘッダーが存在するため、ヘッダーの長さが MaxHeaderSize を超える場合、フレームを分割することはできません。 TCP ヘッダー、TCP オプション、または UDP ヘッダーが存在するため、TCP ヘッダーまたは UDP ヘッダーを含むヘッダーが MaxHeaderSize を 超える場合、NIC は上位レイヤー プロトコル ヘッダーの先頭でフレームを分割するか、フレームを分割しないでください。
 

注釈

ヘッダー データ分割をサポートするために、ミニポート ドライバーは へのポインターを渡します。 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTESMiniportAttributes パラメーター内の構造体 NdisMSetMiniportAttributes 関数。 NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTESの HDSplitAttributes メンバーには、NDIS_HD_SPLIT_ATTRIBUTES構造体へのポインターが含まれています。 ミニポート ドライバーは、初期化中にミニポートInitializeEx 関数から NdisMSetMiniportAttributes を呼び出します。

要件

要件
サポートされている最小のクライアント NDIS 6.1 以降でサポートされています。
Header ndis.h (Ndis.h を含む)

こちらもご覧ください

MiniportInitializeEx

NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES

NDIS_OBJECT_HEADER

NdisMSetMiniportAttributes