HW_INITIALIZATION_DATA 構造体 (storport.h)

HW_INITIALIZATION_DATA (Storport) 構造体には、各ミニポート ドライバーとミニポート ドライバーが管理するハードウェアに特有の情報が含まれています。

構文

typedef struct _HW_INITIALIZATION_DATA {
  ULONG                       HwInitializationDataSize;
  INTERFACE_TYPE              AdapterInterfaceType;
  PHW_INITIALIZE              HwInitialize;
  PHW_STARTIO                 HwStartIo;
  PHW_INTERRUPT               HwInterrupt;
  PVOID                       HwFindAdapter;
  PHW_RESET_BUS               HwResetBus;
  PHW_DMA_STARTED             HwDmaStarted;
  PHW_ADAPTER_STATE           HwAdapterState;
  ULONG                       DeviceExtensionSize;
  ULONG                       SpecificLuExtensionSize;
  ULONG                       SrbExtensionSize;
  ULONG                       NumberOfAccessRanges;
  PVOID                       Reserved;
  UCHAR                       MapBuffers;
  BOOLEAN                     NeedPhysicalAddresses;
  BOOLEAN                     TaggedQueuing;
  BOOLEAN                     AutoRequestSense;
  BOOLEAN                     MultipleRequestPerLu;
  BOOLEAN                     ReceiveEvent;
  USHORT                      VendorIdLength;
  PVOID                       VendorId;
  union {
    USHORT ReservedUshort;
    USHORT PortVersionFlags;
  };
  USHORT                      DeviceIdLength;
  PVOID                       DeviceId;
  PHW_ADAPTER_CONTROL         HwAdapterControl;
  PHW_BUILDIO                 HwBuildIo;
  PHW_FREE_ADAPTER_RESOURCES  HwFreeAdapterResources;
  PHW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest;
  PHW_COMPLETE_SERVICE_IRP    HwCompleteServiceIrp;
  PHW_INITIALIZE_TRACING      HwInitializeTracing;
  PHW_CLEANUP_TRACING         HwCleanupTracing;
  PHW_TRACING_ENABLED         HwTracingEnabled;
  ULONG                       FeatureSupport;
  ULONG                       SrbTypeFlags;
  ULONG                       AddressTypeFlags;
  ULONG                       Reserved1;
  PHW_UNIT_CONTROL            HwUnitControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;

メンバー

HwInitializationDataSize

sizeof(HW_INITIALIZATION_DATA) によって返されるこの構造体のサイズをバイト単位で指定します。 実際には、このメンバーは、ミニポート ドライバーによって使用されているこの構造体のバージョンを示します。 ミニポート ドライバーの DriverEntry ルーチンは、ポート ドライバーのこのメンバーの値を設定する必要があります。

AdapterInterfaceType

Storport ドライバーは、レガシ バスをサポートしていません。 そのため、SCSI ポート ドライバーで使用されるアダプター インターフェイスの種類のほとんどは、Storport では無効です。 特に、 IsaEisaMicroChannelTurboChannel はサポートされていません。 さらに、SCSI ポートの場合とは異なり、Storport ドライバーで動作するミニポート ドライバーは、VendorIdLength、VendorIdDeviceIdLength、および DeviceId メンバーの値を指定する必要はありません。

HwInitialize

ミニポート ドライバーの HwStorInitialize ルーチンへのポインター。これは、すべてのミニポート ドライバーに必要なエントリ ポイントです。

HwStartIo

ミニポート ドライバーの HwStorStartIo ルーチンへのポインター。これは、すべてのミニポート ドライバーに必要なエントリ ポイントです。

HwInterrupt

ミニポート ドライバーの HwStorInterrupt ルーチンへのポインター。これは、すべてのミニポート ドライバーに必要なエントリ ポイントです。

HwFindAdapter

ミニポート ドライバーの HwStorFindAdapter ルーチンへのポインター。これは、すべてのミニポート ドライバーに必要なエントリ ポイントです。

HwResetBus

ミニポート ドライバーの HwStorResetBus ルーチンへのポインター。これは、すべてのミニポート ドライバーに必要なエントリ ポイントです。

HwDmaStarted

Storport ドライバーは下位モード DMA をサポートしていません。 したがって、このメンバーは NULL である必要があります。

HwAdapterState

Storport ドライバーでは、レガシ ドライバーはサポートされていません。 したがって、このメンバーは NULL である必要があります。

DeviceExtensionSize

アダプターごとのデバイス拡張機能のミニポート ドライバーに必要なサイズ (バイト単位) を指定します。 ミニポート ドライバーは、ドライバーによって決定されたホスト バス アダプター (HBA) 情報の記憶域として、そのデバイス拡張機能を使用します。 オペレーティング システム固有のポート ドライバーは、各デバイス拡張機能を 1 回初期化します。最初に拡張機能が割り当てられ、0 が設定されます。 ミニポート ドライバーの呼び出しごとに HBA 固有のデバイス拡張機能へのポインターを渡します。 指定されたサイズには、ミニポート ドライバーが要求した論理ユニットごとの記憶域は含まれません。 論理ユニットごとのストレージのサイズは、このトピックで後述する SpecificLuExtensionSize フィールドを使用して指定します。

SCSIPort は、アダプターが停止し、その後 の HwScsiFindAdapter への呼び出しがゼロアウト デバイス拡張機能を受け取るたびにデバイス拡張機能を再初期化しますが、Storport はそのモデルに従いません。 代わりに、Storport は最初に割り当てられたときにのみデバイス拡張機能を 0 にリセットするため、特定のアダプターに対する HwStorFindAdapter の最初の呼び出しのみがゼロアウト デバイス拡張機能を受け取ります。 HwStorFindAdapter およびその他のミニポート関数への後続の呼び出しは、ミニポートによって最後に変更されたデバイス拡張機能を受け取ります。 これにより、ミニポート ドライバーは、プラグ アンド プレイ (PnP) の停止と再起動の間にアダプターの状態に関する知識を維持し、場合によっては、ミニポート ドライバーが初期化手順を最適化できるようにします。

SpecificLuExtensionSize

ミニポート ドライバーが論理ユニットごとの記憶域に必要なサイズ (存在する場合) をバイト単位で指定します。 ミニポート ドライバーは、バス上の周辺機器に関するドライバーによって決定された論理ユニット情報の記憶域として、その LU 拡張機能を使用できます。 Storport ドライバーは、割り当てる各 LU 拡張機能をゼロで初期化します。 ミニポート ドライバーが記憶域を必要とする LU ごとの情報を保持しない場合は、このメンバーを 0 のままにします。 この値は、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 64 ビット アドレスを処理するために LUN または SRB 拡張機能に追加の領域が必要な場合は、 StorPortGetUncachedExtension などのルーチンで使用する前に、この値に対して適切な調整を行う必要があります。

SrbExtensionSize

要求ごとの記憶域にミニポート ドライバーが必要とするサイズ (バイト単位) を指定します (存在する場合)。 ミニポート ドライバーは、特定の要求を処理するために必要なデータなど、ドライバーによって決定された要求固有の情報の記憶域として SRB 拡張機能を使用できます。 Storport ドライバーは SRB 拡張機能を初期化しませんが、ミニポート ドライバーに送信する各 SRB 内のこのストレージへのポインターを設定します。 SRB 拡張機能には、HBA ハードウェアから安全にアクセスできます。 Storport ドライバーで動作するミニポート ドライバーは、散布図/収集リストをサポートする必要があり、SRB ごとの散布/収集リストは通常、SRB 拡張機能に割り当てられるため、このメンバーはめったにゼロではありません。 ミニポート ドライバーが記憶域を必要とする SRB ごとの情報を維持しない場合は、このメンバーを 0 のままにします。

この値は、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 64 ビット アドレスを処理するために LUN または SRB 拡張機能に追加の領域が必要な場合は、 StorPortGetUncachedExtension などのルーチンで使用する前に、この値に対して適切な調整を行う必要があります。

NumberOfAccessRanges

アダプターが使用するアクセス範囲の数を指定します。 各アドレスは、メモリ アドレスまたは I/O ポート アドレスの範囲です。

Reserved

システム使用用に予約されており、ミニポート ドライバーでは使用できません。

MapBuffers

Storport ドライバーが SRB データ バッファー アドレスをシステム仮想アドレスにマップするかどうかを示します。 MapBuffers メンバーには、次のいずれかの値を指定できます。

意味
STOR_MAP_NO_BUFFERS SRB_FUNCTION_IO_CONTROLとSRB_FUNCTION_WMIを除き、SRB にマップしないでください。
STOR_MAP_ALL_BUFFERS 互換性のために残されています。 この値は、STOR_MAP_NON_READ_WRITE_BUFFERSと同じ効果を持ちます。
STOR_MAP_NON_READ_WRITE_BUFFERS 読み取り要求または書き込み要求を除くすべての I/O のバッファーをマップします。
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE 読み取り要求と書き込み要求を含むすべての I/O のバッファーをマップします。 この値は、Windows 8 以降で有効です。

NeedPhysicalAddresses

TRUE に設定する必要があります。 TRUE の値は、ミニポート ドライバーが特定の種類のアドレスを物理アドレスに変換する必要があることを示します。 Storport ドライバーで動作するミニポート ドライバーは、バス マスター DMA をサポートする必要があります。そのため、アドレス変換を行うには常に必要になります。

TaggedQueuing

TRUE に設定する必要があります。 TRUE の値は、ミニポート ドライバーが SCSI タグ付きキューをサポートしていることを示します。 Storport ドライバーで動作するすべてのミニポート ドライバーは、タグ付けされたキューをサポートする必要があります。

AutoRequestSense

TRUE である必要があります。 TRUE の値は、明示的な要求を必要とせずに、HBA が要求センス操作を実行できることを示します。 Storport ドライバーで動作するすべてのミニポート ドライバーは、SCSI 自動要求センサーをサポートする必要があります。

MultipleRequestPerLu

TRUE に設定する必要があります。 TRUE の値は、ミニポート ドライバーが論理ユニットごとに複数の要求をキューに入れる可能性があることを示します。 Storport ドライバーと連携するミニポート ドライバーは、論理ユニットごとに複数の要求をサポートする必要があります。

ReceiveEvent

Storport ドライバーは、このメンバーを無視します。

VendorIdLength

Storport ドライバーで動作するミニポート ドライバーは PnP をサポートする必要があるため、Storport ドライバーはこのメンバーを無視します。

VendorId

Storport ドライバーで動作するミニポート ドライバーは PnP をサポートする必要があるため、Storport ドライバーはこのメンバーを無視します。

ReservedUshort

PortVersionFlags

サポートされている機能を示すフラグ。

DeviceIdLength

Storport ドライバーで動作するミニポート ドライバーは PnP をサポートする必要があるため、Storport ドライバーはこのメンバーを無視します。

DeviceId

Storport ドライバーで動作するミニポート ドライバーは PnP をサポートする必要があるため、Storport ドライバーはこのメンバーを無視します。

HwAdapterControl

ミニポート ドライバーの HwStorAdapterControl ルーチンへのポインター。 Storport ドライバーで動作するミニポート ドライバーには PnP サポートが必要であるため、これは必須のルーチンです。

HwBuildIo

ミニポート ドライバー の HwStorStartIo ルーチンを呼び出す前に同期されていない処理を行うためにポート ドライバーが呼び出すオプションの HwStorBuildIo ルーチンへのポインター。 このコールバックは物理ミニポートに固有であり、仮想ミニポートでは NULL に設定する必要があります。

HwFreeAdapterResources

すべての仮想ミニポート ドライバーに必要なエントリ ポイントである仮想ミニポート ドライバーの HwStorFreeAdapterResources ルーチンへのポインター。 このコールバックは仮想ミニポートに固有であり、物理ミニポートの 場合は NULL に設定されます。

このコールバックは、Windows 8に追加されます。 以前のバージョンの Windows の仮想ミニポートでは、この構造ではなく VIRTUAL_HW_INITIALIZATION_DATA を使用する必要があります。

HwProcessServiceRequest

仮想ミニポート ドライバーの HwStorProcessServiceRequest ルーチンへのポインター。 このコールバックは仮想ミニポートに固有であり、物理ミニポートの 場合は NULL に設定されます。

このコールバックは、Windows 8に追加されます。 以前のバージョンの Windows の仮想ミニポートでは、この構造ではなく VIRTUAL_HW_INITIALIZATION_DATA を使用する必要があります。

HwCompleteServiceIrp

仮想ミニポート ドライバーの HwStorCompleteServiceIrp ルーチンへのポインター。 このコールバックは仮想ミニポートに固有であり、物理ミニポートの 場合は NULL に設定されます。

このコールバックは、Windows 8に追加されます。 以前のバージョンの Windows の仮想ミニポートでは、この構造ではなく VIRTUAL_HW_INITIALIZATION_DATA を使用する必要があります。

HwInitializeTracing

仮想ミニポート ドライバーの HwStorInitializeTracing ルーチンへのポインター。 このコールバックは仮想ミニポートに固有であり、物理ミニポートの 場合は NULL に設定されます。

このコールバックは、Windows 8に追加されます。 以前のバージョンの Windows の仮想ミニポートでは、この構造ではなく VIRTUAL_HW_INITIALIZATION_DATA を使用する必要があります。

HwCleanupTracing

仮想ミニポート ドライバーの HwStorCleanupTracing ルーチンへのポインター。 このコールバックは仮想ミニポートに固有であり、物理ミニポートの 場合は NULL に設定されます。

このコールバックは、Windows 8に追加されます。 以前のバージョンの Windows の仮想ミニポートでは、この構造ではなく VIRTUAL_HW_INITIALIZATION_DATA を使用する必要があります。

HwTracingEnabled

トレースが有効になっているかどうかをミニポートに通知するためにポート ドライバーが呼び出すオプションの HwStorTracingEnabled ルーチンへのポインター。

FeatureSupport

ミニポートでサポートされている機能を示すフラグ。 FeatureSupport は、次の値の組み合わせに設定されます。

意味
STOR_FEATURE_VIRTUAL_MINIPORT これは仮想ミニポート ドライバーです。
STOR_FEATURE_ATA_PASS_THROUGH ミニポートは ATA パススルーをサポートしています。
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES ミニポートは、 そのSTOR_DEVICE_CAPABILITIES_EX 構造で完全な設定を提供します。
STOR_FEATURE_DUMP_POINTERS ミニポートは、ダンプ ポインターの SRB をサポートしています。
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX ミニポート ドライバーは、デバイスのフレンドリ名の一部としてサフィックス "SCSI デバイス" を必要としません。
STOR_FEATURE_DUMP_RESUME_CAPABLE ミニポートのダンプ機能は、休止状態から再開するために機能します。
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD Storport ドライバーは、INQUIRY データからではなく、ATA 情報 VPD ページから STORAGE_DEVICE_DESCRIPTOR を初期化します。
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE Storport ドライバーは、アダプター インターフェイスの種類を設定します。

SrbTypeFlags

ミニポートでサポートされている SRB 型を示すフラグ。 SrbTypeFlags が 0 または次の値の組み合わせに設定されています。

意味
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK ミニポートは、標準の SRB を使用します。
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK ミニポートは、拡張された SRB をサポートしています。

AddressTypeFlags

ミニポートでサポートされているアドレススキーム。 現在、1 つのアドレス構成のみがサポートされており、ミニポートはこのメンバーをADDRESS_TYPE_FLAG_BTL8に設定する必要があります。

意味
ADDRESS_TYPE_FLAG_BTL8 バス、ターゲット、LUN (BTL) 8 ビット アドレッシング。

Reserved1

予約済み、0 に設定します。

HwUnitControl

ミニポート ドライバーの HwStorUnitControl ルーチンを指すポインター。 ポート ドライバーは、ストレージ ユニット デバイスの制御要求でこのルーチンを呼び出します。

注釈

すべての Storport ミニポート ドライバーの DriverEntry ルーチンは、ミニポート ドライバーが最初にゼロになった後に StorPortInitialize を呼び出してから 、HW_INITIALIZATION_DATAのメンバーを設定する必要があります。

要件

要件
Header storport.h (Storport.h を含む)