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) によって返されるこの構造体のサイズ
AdapterInterfaceType
Storport ドライバーは、レガシ バスをサポートしていません。 したがって、SCSI ポート ドライバーで使用されるアダプター インターフェイスの種類のほとんどは、Storport では無効です。 特に、Isa、Eisa、MicroChannel、TurboChannel はサポートされていません。 さらに、SCSI ポートの場合とは異なり、Storport ドライバーで動作するミニポート ドライバーは、
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 を
SpecificLuExtensionSize
ミニポート ドライバーが論理ユニットごとの記憶域に必要なサイズ (存在する場合) をバイト単位で指定します。 ミニポート ドライバーは、バス上の周辺機器に関するドライバーによって決定された論理ユニット情報の記憶域として、その LU 拡張機能を使用できます。 Storport ドライバーは、割り当てる各 LU 拡張機能をゼロで初期化します。 ミニポート ドライバーが記憶域を必要とする LU ごとの情報を保持しない場合は、このメンバーを 0 のままにします。 この値は、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 64 ビット アドレスを処理するために LUN または SRB 拡張機能に追加の領域が必要な場合は、StorPortGetUncachedExtension などのルーチンで使用する前に、この値に適切な調整を行う必要があります。
SrbExtensionSize
ミニポート ドライバーが要求ごとの記憶域に必要なサイズ (バイト単位) を指定します (存在する場合)。 ミニポート ドライバーは、特定の要求を処理するために必要なデータなど、ドライバーによって決定された、要求固有の情報の記憶域として SRB 拡張機能を使用できます。 Storport ドライバーは SRB 拡張機能を初期化しませんが、ミニポート ドライバーに送信する各 SRB 内のこの記憶域へのポインターを設定します。 SRB 拡張機能には、HBA ハードウェアから安全にアクセスできます。 Storport ドライバーで動作するミニポート ドライバーは、散布図/収集リストをサポートする必要があり、SRB ごとの散布図/収集リストは通常、SRB 拡張機能で割り当てられるため、このメンバーはほとんど 0 ではありません。 ミニポート ドライバーが記憶域を必要とする SRB ごとの情報を維持しない場合は、このメンバーを 0 のままにします。
この値は、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 64 ビット アドレスを処理するために LUN または SRB 拡張機能に追加の領域が必要な場合は、StorPortGetUncachedExtension などのルーチンで使用する前に、この値に適切な調整を行う必要があります。
NumberOfAccessRanges
アダプターが使用するアクセス範囲の数を指定します。 各アドレスは、メモリ アドレスまたは I/O ポート アドレスの範囲です。
Reserved
システム用に予約されており、ミニポート ドライバーでは使用できません。
MapBuffers
Storport ドライバーが SRB データ バッファー アドレスをシステム仮想アドレスにマップするかどうかを示します。 MapBuffers メンバーは、次のいずれかの値を持つことができます。
価値 | 意味 |
---|---|
STOR_MAP_NO_BUFFERS (0) | SRB_FUNCTION_IO_CONTROLとSRB_FUNCTION_WMIを除き、SRB にマップしないでください。 |
STOR_MAP_ALL_BUFFERS (1) | 廃れた。 この値は、STOR_MAP_NON_READ_WRITE_BUFFERSと同じ効果を持ちます。 |
STOR_MAP_NON_READ_WRITE_BUFFERS (2) | 読み取りまたは書き込み要求を除くすべての I/O のバッファーをマップします。 |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE (3) | 読み取り要求と書き込み要求を含むすべての I/O のバッファーをマップします。 この値は、Windows 8 以降で有効です。 |
NeedPhysicalAddresses
TRUEを
TaggedQueuing
TRUEを
AutoRequestSense
TRUE
MultipleRequestPerLu
TRUEを
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 (0x00000001) | これは仮想ミニポート ドライバーです。 |
STOR_FEATURE_ATA_PASS_THROUGH (0x00000002) | ミニポートは、ATA パススルーをサポートしています。 |
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES (0x00000004) | ミニポートは、その STOR_DEVICE_CAPABILITIES_EX 構造で完全な設定を提供します。 |
STOR_FEATURE_DUMP_POINTERS (0x00000008) | ミニポートは、ダンプ ポインターの SRB をサポートしています。 |
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX (0x00000010) | ミニポート ドライバーは、デバイスのフレンドリ名の一部としてサフィックス "SCSI の種類 デバイス" を必要としません。 |
STOR_FEATURE_DUMP_RESUME_CAPABLE (0x00000020) | ミニポートのダンプ機能は、休止状態からの再開に機能します。 |
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD (0x00000040) | Storport ドライバーは、照会データからではなく、ATA 情報 VPD ページから STORAGE_DEVICE_DESCRIPTOR を初期化します。 |
STOR_FEATURE_EXTRA_IO_INFORMATION (0x00000080) | ミニポート ドライバーは、使用可能な場合は、SRBEX でSRBEX_DATA_IO_INFOを必要とします。 |
STOR_FEATURE_ADAPTER_CONTROL_PRE_FINDADAPTER (0x00000100) | ミニポート ドライバーは、HwFindAdapter を受信する前に、Storport からの AdapterControl 呼び出しを安全に処理できます。 |
STOR_FEATURE_ADAPTER_NOT_REQUIRE_IO_PORT (0x00000200) | ミニポート ドライバーは、そのアダプターの IO ポート リソースを必要としません。 |
STOR_FEATURE_DUMP_16_BYTE_ALIGNMENT (0x00000400) | ミニポート ドライバーは、その HwDeviceExtension をダンプ モードで 16 バイト配置する必要があります。 |
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE (0x00000800) | ミニポートは、Storport でアダプター インターフェイスの種類を設定する必要があります。 |
STOR_FEATURE_DUMP_INFO (0x00001000) | ミニポート ドライバーは、ダンプ情報の SRB をサポートしています。 |
STOR_FEATURE_DMA_ALLOCATION_NO_BOUNDARY (0x00002000) | ミニポート ドライバーは、境界のない物理メモリに DMA を割り当てることをサポートしています。 |
STOR_FEATURE_SUPPORTS_NVME_ADAPTER (0x00004000) | ミニポート ドライバーは、NVMe ベースの記憶域アダプターをサポートしています。 |
STOR_FEATURE_REPORT_INTERNAL_DATA (0x00008000) | ミニポート ドライバーは、内部データのレポートをサポートしています。 |
STOR_FEATURE_EARLY_DUMP (0x00010000) | ミニポート ドライバーは、早期クラッシュ ダンプの生成をサポートしています。 |
STOR_FEATURE_NVME_ICE (0x00020000) | ミニポート ドライバーは、NVMe ICE をサポートしています。 |
SrbTypeFlags
ミニポートでサポートされている SRB 型を示すフラグ。 SrbTypeFlags が 0 または次の値の組み合わせに設定されています。
価値 | 意味 |
---|---|
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK (0x1) | ミニポートは、標準の SRB を使用します。 |
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK (0x2) | ミニポートは、拡張された SRB をサポートしています。 |
AddressTypeFlags
ミニポートでサポートされているアドレススキーム。 現時点では、1 つのアドレス構成のみがサポートされており、ミニポートは、このメンバーをADDRESS_TYPE_FLAG_BTL8に設定する必要があります。
価値 | 意味 |
---|---|
ADDRESS_TYPE_FLAG_BTL8 (0x1) | バス、ターゲット、LUN (BTL) の 8 ビット アドレス指定。 |
Reserved1
予約済み、0 に設定します。
HwUnitControl
ミニポート ドライバーの HwStorUnitControl ルーチンへのポインター。 ポート ドライバーは、記憶域ユニット デバイスの制御要求でこのルーチンを呼び出します。
備考
すべての Storport ミニポート ドライバーの DriverEntry ルーチンは、ミニポート ドライバーが最初にゼロになった後、StorPortInitialize を呼び出してから、HW_INITIALIZATION_DATAのメンバーを設定する必要があります。
必要条件
要件 | 価値 |
---|---|
ヘッダー | storport.h (Storport.h を含む) |