ヘッダー データの分割プロバイダーの初期化
ヘッダー データ分割をサポートするには、ミニポート ドライバーが NDIS 6.1 以降のドライバーとして登録する必要があります。 ミニポート ドライバーのソース ファイルは、DNDIS60_MINIPORT = 1 ではなく、DNDIS61_MINIPORT = 1 を指定する必要があります。 また、ミニポート ドライバーは、NDIS 6.1 以降のバージョンを NDIS_MINIPORT_DRIVER_CHARACTERISTICS 構造で指定する必要があります。
ヘッダー データ分割属性を登録するために、NDIS 6.1 ミニポート ドライバーは、その MiniportInitializeEx 関数から NdisMSetMiniportAttributes 関数を呼び出し、NdisMSetMiniportAttributes に初期化された NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 構造体を渡します。
NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES 構造体には、次の情報が含まれています。
NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES の HDSplitAttributes メンバーには、ミニポート アダプターが提供するヘッダー データ分割機能を指定する NDIS_HD_SPLIT_ATTRIBUTES 構造体へのポインターが含まれています。
NDIS_HD_SPLIT_ATTRIBUTES の HardwareCapabilities メンバーには、ミニポート アダプターがサポートするヘッダー データ分割機能が含まれています。 これらの機能には、INF ファイルの設定または「詳細」プロパティ ページによって現在無効にされている機能を含めることができます。
NDIS_HD_SPLIT_ATTRIBUTES の CurrentCapabilities メンバーには、ミニポート アダプターがサポートする現在のヘッダー データ分割機能が含まれています。 *HeaderDataSplit 標準化 INF キーワードによってヘッダー データ分割が有効になっている場合、ミニポート ドライバーは、現在のヘッダー データ分割構成を示すために HardwareCapabilities メンバーと同じフラグを使用します。 *HeaderDataSplit の詳細については、「ヘッダー データ分割における標準化された INF キーワード」を参照してください。
NDIS_HD_SPLIT_ATTRIBUTES の HDSplitFlags メンバーには、ヘッダー データ分割構成フラグが含まれています。 ミニポート ドライバーは、NdisMSetMiniportAttributes を呼び出す前に、このメンバーをゼロに設定する必要があります。 NDIS は、構成フラグのビットごとの OR でこのメンバーを設定します。 NdisMSetMiniportAttributes が正常に返された後、ミニポート ドライバーは HDSplitFlags でフラグ設定をチェックし、それに応じてハードウェアを構成する必要があります。
NDIS は、ミニポート アダプターのヘッダー データ分割を有効にするのに NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT フラグを使用します。 ミニポート ドライバーが NDIS_HD_SPLIT_ATTRIBUTES 構造体の CurrentCapabilities メンバーに NDIS_HD_SPLIT_CAPS_SUPPORTS_HEADER_DATA_SPLIT フラグを設定しなかった場合、NDIS は NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT を設定しません。 NDIS が NDIS_HD_SPLIT_ENABLE_HEADER_DATA_SPLIT フラグを設定する場合、ミニポート ドライバーは、NIC でヘッダー データ分割を有効にする必要があります。
ミニポート ドライバーは、NdisMSetMiniportAttributes を呼び出す前に、NDIS_HD_SPLIT_ATTRIBUTES 構造体の BackfillSize メンバーをゼロに設定する必要があります。 NDIS は、ミニポート ドライバーが 分割フレームのデータ バッファーにバックフィル ストレージを事前に割り当てる必要がある場合、BackfillSize メンバーを設定します。 NdisMSetMiniportAttributes が正常に返された後、ミニポート ドライバーは、NDIS が指定した BackfillSize 値を使用し、データ バッファーを事前に割り当てる必要があります。 データ バッファーのバックフィル サイズの詳細については、「データ バッファーのバックフィルの割り当て」を参照してください。
ミニポート ドライバーは、NdisMSetMiniportAttributes を呼び出す前に、NDIS_HD_SPLIT_ATTRIBUTES 構造体の MaxHeaderSize メンバーをゼロに設定する必要があります。 NDIS は、分割フレームのヘッダー バッファーに許可される最大サイズにこのメンバーを設定します。 NdisMSetMiniportAttributes が正常に返された後、ミニポート ドライバーは、NDIS が指定した MaxHeaderSize 値を使用する必要があります。 最大ヘッダー サイズの詳細については「ヘッダー バッファーの割り当て」を参照してください。