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 では無効です。 特に、 Isa、 Eisa、 MicroChannel、 TurboChannel はサポートされていません。 さらに、SCSI ポートの場合とは異なり、Storport ドライバーで動作するミニポート ドライバーは、VendorIdLength、VendorId、DeviceIdLength、および 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 を含む) |