PORT_CONFIGURATION_INFORMATION構造体 (storport.h)
PORT_CONFIGURATION_INFORMATION には、ホスト バス アダプター (HBA) の構成情報が含まれています。
構文
typedef struct _PORT_CONFIGURATION_INFORMATION {
ULONG Length;
ULONG SystemIoBusNumber;
INTERFACE_TYPE AdapterInterfaceType;
ULONG BusInterruptLevel;
ULONG BusInterruptVector;
KINTERRUPT_MODE InterruptMode;
ULONG MaximumTransferLength;
ULONG NumberOfPhysicalBreaks;
ULONG DmaChannel;
ULONG DmaPort;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG AlignmentMask;
ULONG NumberOfAccessRanges;
ACCESS_RANGE( ) *AccessRanges[];
PVOID MiniportDumpData;
PVOID Reserved;
UCHAR NumberOfBuses;
CCHAR InitiatorBusId[8];
BOOLEAN ScatterGather;
BOOLEAN Master;
BOOLEAN CachesData;
BOOLEAN AdapterScansDown;
BOOLEAN AtdiskPrimaryClaimed;
BOOLEAN AtdiskSecondaryClaimed;
BOOLEAN Dma32BitAddresses;
BOOLEAN DemandMode;
UCHAR MapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN TaggedQueuing;
BOOLEAN AutoRequestSense;
BOOLEAN MultipleRequestPerLu;
BOOLEAN ReceiveEvent;
BOOLEAN RealModeInitialized;
BOOLEAN BufferAccessScsiPortControlled;
UCHAR MaximumNumberOfTargets;
UCHAR SrbType;
UCHAR AddressType;
UCHAR ReservedUchars[2];
ULONG SlotNumber;
ULONG BusInterruptLevel2;
ULONG BusInterruptVector2;
KINTERRUPT_MODE InterruptMode2;
ULONG DmaChannel2;
ULONG DmaPort2;
DMA_WIDTH DmaWidth2;
DMA_SPEED DmaSpeed2;
ULONG DeviceExtensionSize;
ULONG SpecificLuExtensionSize;
ULONG SrbExtensionSize;
UCHAR Dma64BitAddresses;
BOOLEAN ResetTargetSupported;
UCHAR MaximumNumberOfLogicalUnits;
BOOLEAN WmiDataProvider;
STOR_SYNCHRONIZATION_MODEL SynchronizationModel;
PHW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE HwMSInterruptRoutine;
INTERRUPT_SYNCHRONIZATION_MODE InterruptSynchronizationMode;
MEMORY_REGION DumpRegion;
ULONG RequestedDumpBufferSize;
BOOLEAN VirtualDevice;
UCHAR DumpMode;
UCHAR DmaAddressWidth;
ULONG ExtendedFlags1;
ULONG MaxNumberOfIO;
ULONG MaxIOsPerLun;
ULONG InitialLunQueueDepth;
ULONG BusResetHoldTime;
ULONG FeatureSupport;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;
メンバー
Length
PORT_CONFIGURATION_INFORMATION構造体のサイズ (バイト単位)。 Storport ドライバーによって初期化されたこのメンバーは、構造体のバージョンとしても機能します。
SystemIoBusNumber
HBA が接続されている I/O バスのシステム割り当て番号。 ミニポート ドライバーは、このメンバーを変更することはできません。 プラットフォームには、指定された AdapterInterfaceType の I/O バスが複数ある可能性があるため、その値はシステム割り当てです。
AdapterInterfaceType
I/O バス インターフェイス。 Storport は、このメンバーを 、HW_INITIALIZATION_DATA 構造体のミニポート ドライバーによって指定された値に初期化します。 ミニポート ドライバーは、このメンバーを変更することはできません。
BusInterruptLevel
バス相対割り込み要求レベル。 Storport では、HBA の割り込み使用量に関する想定は行われません。そのため、既定値は 0 です。 Storport は、このメンバーを初期化し、ミニポート ドライバーは変更できません。
BusInterruptVector
HBA によって返されるバス相対ベクトル。 Storport では、HBA の割り込み使用量に関する想定は行われません。そのため、既定値は 0 です。 このメンバーは、HBA の BusInterruptLevel メンバーを設定するドライバーとは無関係です。 これは、 PCIBus などの割り込みベクトルを使用する I/O バスの種類の HBA に関連します。 Storport は、このメンバーを初期化し、ミニポート ドライバーは変更できません。
InterruptMode
HBA で LevelSensitive または Latched ("エッジ トリガー" と呼ばれることもあります) 割り込みを使用するかどうかを指定します。 Storport は、このメンバーをバスとデバイスの適切な値 (PCIBus の LevelSensitive など) に初期化します。 Storport は、このメンバーを初期化し、ミニポート ドライバーは変更できません。
MaximumTransferLength
HBA が 1 回の転送操作で転送できる最大バイト数。 既定では、このメンバーの値はSP_UNINITIALIZED_VALUEです。これは、無制限の最大転送サイズを示します。 HBA の転送サポートが制限されている場合、ミニポート ドライバーは HBA の転送容量に従ってこのメンバーをリセットする必要があります。 ミニポート ドライバーの HwStorInterrupt ルーチンで HBA の割り込みを無効にできない場合、このメンバーはドライバーの開発中に調整して、そのミニポート ドライバーの ISR に費やされた時間がシステムの全体的なパフォーマンスを低下させないようにすることができます。
NumberOfPhysicalBreaks
記憶域アダプターが 1 回の転送で管理できる物理ページの最大数 (つまり、散布/収集サポートの範囲)。 既定では、このメンバーの値は0x11。 ミニポート ドライバーは、記憶域アダプターの機能に従ってこのメンバーをリセットする必要があります。
DmaChannel
下位 HBA によって使用される DMA チャネル。 既定では、このメンバーの値はSP_UNINITIALIZED_VALUE。 Storport は、このメンバーを初期化し、ミニポート ドライバーは変更できません。
DmaPort
下位 HBA によって使用される DMA ポート。 既定では、このメンバーの値はSP_UNINITIALIZED_VALUE。 Storport は、このメンバーを初期化し、ミニポート ドライバーは変更できません。
DmaWidth
HBA で DMA が使用されている場合の DMA 転送の幅。 既定では、このメンバーの値は 0 です。 Storport は、このメンバーを初期化し、ミニポート ドライバーは変更できません。
DmaSpeed
Eisa HBA の DMA データ転送速度。 Storport は、このメンバーを初期化し、ミニポート ドライバーは変更できません。
AlignmentMask
転送操作に HBA で必要なバッファーのアラインメント制限を示すマスク。 有効なマスク値の例としては、0 (バイトアライン)、1 (単語アラインメント)、3 (DWORD アラインメント)、7 (ダブル DWORD アラインメント) などがあります。 ミニポート ドライバーは、HBA が散布/収集をサポートしている場合、このマスクを設定する必要があります。 wdm.h では、次の許可されるアラインメント マスク値が定義されています。
値 | 意味 |
---|---|
FILE_BYTE_ALIGNMENT (0x00000000) | データがバイト アラインメント (デバイスのアラインメント要件なし) |
FILE_WORD_ALIGNMENT (0x00000001) | データは 2 バイト境界に配置する必要があります。 |
FILE_LONG_ALIGNMENT (0x00000003) | データは 4 バイト境界に配置する必要があります。 |
FILE_QUAD_ALIGNMENT (0x00000007) | データは 8 バイト境界に配置する必要があります。 |
FILE_OCTA_ALIGNMENT (0x0000000f) | データは 16 バイト境界に配置する必要があります。 |
FILE_32_BYTE_ALIGNMENT (0x0000001f) | データは 32 バイト境界に配置する必要があります。 |
FILE_64_BYTE_ALIGNMENT (0x0000003f) | データは 64 バイト境界に配置する必要があります。 |
FILE_128_BYTE_ALIGNMENT (0x0000007f) | データは 128 バイト境界に配置する必要があります。 |
FILE_256_BYTE_ALIGNMENT (0x000000ff) | データは 256 バイト境界に配置する必要があります。 |
FILE_512_BYTE_ALIGNMENT (0x000001ff) | データは 512 バイト境界に配置する必要があります。 |
NumberOfAccessRanges
配列内の AccessRanges 要素の 数を指定します。
AccessRanges
ACCESS_RANGE型要素の配列へのポインター。 Storport は、アクセス範囲にメモリを割り当て、このメンバーを初期化します。 ミニポート ドライバーは、このメンバーを変更することはできません。
MiniportDumpData
クラッシュダンプまたは休止中に使用されるダンプ コンテキストへのポインター。
Reserved
システム使用 (Windows 8前) 用に予約されています。
NumberOfBuses
アダプターによって制御されるバスの数。 既定では、このメンバーの値は 0 です。 このメンバーの最大値は SCSI_MAXIMUM_BUSES_PER_ADAPTER です。 このメンバーは、Windows 8 以降で使用できます。
InitiatorBusId[8]
イニシエーター バス ID。 入力 InitiatorBusId[0] の 値がSP_UNINITIALIZED_VALUE場合、ミニポート ドライバーは、HBA が HBA のクエリによって決定された特定の値の使用を必要としない場合に既定値を割り当てることができます。 それ以外の場合、ミニポート ドライバーは、可能であれば、ポート ドライバーによって割り当てられた 0 以外の値を使用する必要があります。 通常、この値は MaximumNumberOfTargets に設定された値によってバインドされます。
ScatterGather
TRUE の場合、HBA は散布/収集をサポートします。 Storport は、ミニポート ドライバーが散布/収集をサポートする必要があるため 、このメンバーを TRUE に 初期化します。 Storport で動作するミニポート ドライバーは、この値を変更しないでください。 (注: Windows Server 2008 R2 および Windows 7 より前のバージョンの Windows では、このメンバーは FALSE に設定されています。この場合、ミニポート ドライバーは、このメンバーを TRUE に設定する必要があります。このメンバーを TRUE に設定しないと、HBA デバイスの起動に失敗します)。
Master
TRUE の場合、HBA はマスター バスです。 Storport は、ミニポート ドライバーがバス マスタリング DMA をサポートする必要があるため 、このメンバーを TRUE に 初期化します。 Storport で動作するミニポート ドライバーは、この値を変更しないでください。 (注: Windows Server 2008 R2 および Windows 7 より前のバージョンの Windows では、このメンバーは FALSE に設定されています。この場合、ミニポート ドライバーは、このメンバーを TRUE に設定する必要があります。このメンバーを TRUE に設定しないと、HBA デバイスの起動に失敗します)。
CachesData
TRUE の場合、HBA はデータをキャッシュするか、周辺機器のキャッシュ状態を維持します。 FALSE の場合、HBA はデータをキャッシュしたり、周辺機器のキャッシュ状態を維持したりしません。 既定では、このメンバーの値は FALSE です。 これが TRUE にリセットされた場合、Storport は、ファイル システム キャッシュのフラッシュなど、特定のシステム イベントが発生したときにミニポート ドライバーに通知します。
AdapterScansDown
Storport はこのメンバーを無視します。
AtdiskPrimaryClaimed
Storport はこのメンバーを使用せず、ミニポート ドライバーは設定しないでください。
AtdiskSecondaryClaimed
Storport はこのメンバーを使用せず、ミニポート ドライバーは設定しないでください。
Dma32BitAddresses
TRUE の場合、HBA には 32 のアドレス行があり、0x00FFFFFFより大きい物理アドレスを持つメモリにアクセスできます。 Storport は、ミニポート ドライバーがバス幅 DMA をサポートする必要があるため、このメンバーを TRUE に初期化します。 Dma64BitAddresses の値が設定されていない場合、これは既定の DMA アドレス指定であるため、ミニポート ドライバーはこの値を変更しないでください。 注: デバイス ハードウェアで 32 ビット アドレスのみがサポートされている場合は、 Dma64BitAddresses を 0 に設定する必要があります。
DemandMode
システム DMA コントローラーを単一サイクル操作ではなく、需要モード用にプログラムする必要があるかどうかを示します。 Storport は、下位モード DMA をサポートしていないため、このメンバーを FALSE に初期化します。 ミニポート ドライバーは、この値を変更することはできません。
MapBuffers
Storport が SRB データ バッファー アドレスをシステム仮想アドレスにマップするかどうかを示します。 ミニポート ドライバーは、SRB データ バッファー アドレスのマッピングを制御するには、次のいずれかの値にこのメンバーを設定します。
値 | 意味 |
---|---|
STOR_MAP_NO_BUFFERS | SRB_FUNCTION_IO_CONTROLとSRB_FUNCTION_WMIに対してのみバッファーをマップします。 |
STOR_MAP_ALL_BUFFERS | 互換性のために残されています。 この値は、STOR_MAP_NON_READ_WRITE_BUFFERSと同じ効果を持ちます。 |
STOR_MAP_NON_READ_WRITE_BUFFERS | 読み取り要求と書き込み要求を除くすべての IO のバッファーをマップします。 |
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE | 読み取り要求と書き込み要求を含むすべての IO のバッファーをマップします。 ブートをサポートするミニポートは、長さのPAGE_SIZEの読み取りまたは書き込み要求を処理する必要があります。 これらの読み取りまたは書き込み要求は、常に正常に完了する必要があります。 Storport は、システム メモリの不足状態でバッファーのマップに失敗する場合があります。 この場合、SRB の DataBuffer メンバーは NULL になります。 |
NeedPhysicalAddresses
TRUE の場合、ミニポート ドライバーは、HBA で必要に応じて、仮想アドレスを物理アドレスに変換する必要があります。 Storport は、ミニポート ドライバーが散布/収集リストをサポートする必要があるため、このメンバーを TRUE に初期化します。 ミニポートは、この値を変更することはできません。
TaggedQueuing
TRUE の場合、HBA は SCSI タグを使用した複数の要求のキューをサポートします。 Storport は、ミニポート ドライバーがタグ付きキューをサポートする必要があるため 、このメンバーを TRUE に 初期化します。 ミニポート ドライバーは、この値を変更することはできません。
AutoRequestSense
TRUE の場合、HBA は自動要求センスをサポートします。 Storport は、ミニポート ドライバーが自動要求センスをサポートする必要があるため 、このメンバーを TRUE に 初期化します。 ミニポート ドライバーは、この値を変更することはできません。
MultipleRequestPerLu
TRUE の場合、HBA は論理ユニットごとに複数の要求をサポートします。 Storport は、ミニポート ドライバーが論理ユニットに対して同時に発行された複数の要求をサポートする必要があるため、このメンバーを TRUE に初期化します。 ミニポート ドライバーは、この値を変更することはできません。
ReceiveEvent
Storport はこのメンバーを使用せず、ミニポート ドライバーは設定しないでください。
RealModeInitialized
Storport はこのメンバーを使用せず、ミニポート ドライバーは設定しないでください。
BufferAccessScsiPortControlled
Storport はこのメンバーを使用せず、ミニポート ドライバーは設定しないでください。
MaximumNumberOfTargets
アダプターが制御できるターゲット周辺機器の数。 既定では、このメンバーの値はSCSI_MAXIMUM_TARGETS_PER_BUS。 ミニポート ドライバーは、HBA の機能が制限されている場合、または HBA に拡張バス機能があることを示すより大きな値に、より小さい値にこのメンバーをリセットできます。 このメンバーの最大値は 255 です。
SrbType
ミニポート ドライバーに送信される SRB の種類。 Windows 8 以降で使用できます。 これは、次のいずれかの値に設定されます。
値 | 意味 |
---|---|
SRB_TYPE_SCSI_REQUEST_BLOCK | ミニポート ドライバーは、標準の SRB を受け取ります。 |
SRB_TYPE_STORAGE_REQUEST_BLOCK | ミニポート ドライバーは、拡張された SRB を受け取ります。 |
AddressType
Storport とミニポート ドライバーの間で使用されるアドレスの種類。 Windows 8 以降で使用できます。 これは、次の値に設定できます。
値 | 意味 |
---|---|
STORAGE_ADDRESS_TYPE_BTL8 | バス、ターゲット、LUN (BTL) 8 ビット アドレッシング。 |
ReservedUchars[2]
システム使用 (Windows 8前) 用に予約されています。
SlotNumber
Storport で使用するために予約されています。 ミニポート ドライバーは、このメンバーを変更することはできません。
BusInterruptLevel2
Storport で使用するために予約されています。 ミニポート ドライバーは、このメンバーを変更することはできません。
BusInterruptVector2
Storport で使用するために予約されています。 ミニポート ドライバーは、このメンバーを変更することはできません。
InterruptMode2
Storport で使用するために予約されています。 ミニポート ドライバーは、このメンバーを変更することはできません。
DmaChannel2
Storport で使用するために予約されています。 ミニポート ドライバーは、このメンバーを変更することはできません。
DmaPort2
Storport で使用するために予約されています。 ミニポート ドライバーは、このメンバーを変更することはできません。
DmaWidth2
Storport で使用するために予約されています。 ミニポート ドライバーは、このメンバーを変更することはできません。
DmaSpeed2
Storport で使用するために予約されています。 ミニポート ドライバーは、このメンバーを変更することはできません。
DeviceExtensionSize
アダプターごとのデバイス拡張機能のミニポート ドライバーで必要なサイズ (バイト単位)。 ミニポート ドライバーは、ドライバーによって決定された HBA 情報の記憶域として、そのデバイス拡張機能を使用します。 オペレーティング システム固有のポート ドライバーは、最初に拡張機能を割り当てるときに、各デバイス拡張機能を 1 回初期化し、ゼロで埋めます。 ミニポート ドライバーへのすべての呼び出しで HBA 固有のデバイス拡張機能へのポインターを渡します。 指定されたサイズには、ミニポート ドライバーが要求した論理ユニットごとの記憶域は含まれません。 論理ユニットごとのストレージのサイズは、このトピックで後述する SpecificLuExtensionSize フィールドを使用して指定します。
Storport は SCSIPort のモデルに従いません (アダプターが停止するたびにデバイス拡張機能を再初期化するため、 HwScsiFindAdapter への後続の呼び出しはゼロアウトデバイス拡張機能を受け取ります)。 代わりに、Storport は、最初に割り当てられたときにのみデバイス拡張機能を 0 にリセットするため、特定のアダプターに対する HwStorFindAdapter の最初の呼び出しのみがゼロアウトデバイス拡張機能を受け取ります。 HwStorFindAdapter およびその他のミニポート関数への後続の呼び出しは、ミニポート ドライバーによって最後に変更されたデバイス拡張機能を受け取ります。 これにより、ミニポート ドライバーは、プラグ アンド プレイ (PnP) の停止と再起動の間にアダプターの状態に関する知識を維持し、ミニポート ドライバーが初期化手順を最適化できるようにする可能性があります。
SpecificLuExtensionSize
64,000 を超えるデータ転送を処理するために、ミニポート ドライバーが論理ユニットごとの記憶域 (存在する場合) に必要なバイト単位のサイズ。 Storport は、StorPortInitialize ルーチンで送信されたHW_INITIALIZATION_DATA構造体の同じメンバー内の値に対して、このメンバーを初期化します。
ミニポート ドライバーが記憶域を必要とする LU ごとの情報を維持しない場合は、このメンバーを 0 に設定します。 この値は、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 64 ビット アドレスを処理するために LUN または SRB 拡張機能に追加の領域が必要な場合は、 StorPortGetUncachedExtension などのルーチンで使用する前に、この値に対して適切な調整を行う必要があります。
SrbExtensionSize
64K を超えるデータ転送を処理するために、要求ごとの記憶域 (存在する場合) のミニポート ドライバーに必要なサイズ (バイト単位)。 Storport は、StorPortInitialize ルーチンで送信されたHW_INITIALIZATION_DATA構造体の同じメンバー内の値に対して、このメンバーを初期化します。
StorPortGetUncachedExtension を呼び出す前にこのメンバーを設定して、NumberOfPhysicalBreaks に基づいて要求ごとのストレージのサイズを変更します。 ミニポート ドライバーが記憶域を必要とする SRB ごとの情報を維持しない場合は、このメンバーを 0 に設定します。 この値は、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 64 ビット アドレスを処理するために LUN または SRB 拡張機能に追加の領域が必要な場合は、 ScsiPortGetUncachedExtension などのルーチンで使用する前に、この値に対して適切な調整を行う必要があります。
Dma64BitAddresses
デバイス ハードウェアで 32 ビット アドレスのみがサポートされている場合は、 Dma64BitAddresses を 0 に設定する必要があります。 デバイスが 64 ビット アドレスをサポートしている場合、このフィールドは、HBA が 4 GB を超えるアドレスにアクセスできるかどうかを示します。
バス幅 DMA をサポートするには、Storport アダプターが必要です。 そのため、64 ビットまたは PAE コンピューターでは、Storport は Dma64BitAddresses を初期化して、アダプターがすべてのアドレスにアクセスできることを示すSCSI_DMA64_SYSTEM_SUPPORTEDします。 ミニポート ドライバーがこの値を検出すると、ミニポート ドライバーが 64 ビット DMA をサポートしていることをポート ドライバーに示すために、同じメンバー内の次の表のいずれかの値を返す必要があります。 ミニポートがこれを行わない場合は、アダプターのパフォーマンスが大幅に低下する可能性があります。
値 | 意味 |
---|---|
SCSI_DMA64_MINIPORT_SUPPORTED | ミニポート ドライバーは、I/O 転送の 64 ビット物理アドレスをサポートしています。 |
SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED | ミニポート ドライバーは、完全な 64 ビット アドレス指定をサポートしています。 これは、I/O 要求の物理アドレス > が 4 GB である可能性があることを示します。 キャッシュされていない拡張機能、SenseInfo、および Srb 拡張機能は、4 GB を超えて存在する可能性があります。 割り当ては、4 GB 境界を越えないようにするために、4 GB 境界の配置に制限されます。 |
SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED | ミニポート ドライバーは、完全な 64 ビット アドレス指定をサポートしています。 これは、I/O 要求の物理アドレス > が 4 GB である可能性があることを示します。 キャッシュされていない拡張機能、SenseInfo、および Srb 拡張機能は、4 GB を超えて存在する可能性があります。 割り当てには境界アラインメント要件はありません。 |
SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED | ミニポート ドライバーは、1 つの 4 GB リージョンで 64 ビット アドレス指定をサポートします。 これは、I/O 要求、キャッシュされていない拡張機能、SenseInfo、および Srb 拡張機能が、1 つの 4 GB リージョンに 4 GB の物理アドレス > を持つ可能性があることを示します。 |
ResetTargetSupported
互換性のために残されています。 このメンバーは使用しないでください。
MaximumNumberOfLogicalUnits
HBA が制御できるターゲットあたりの論理ユニットの最大数。 既定では、このメンバーの値はSCSI_MAXIMUM_LOGICAL_UNITS。 ミニポート ドライバーは、HBA の機能が制限されている場合は、より小さい値にこのメンバーをリセットできます。または、HBA に拡張機能があることを示す値が大きくなります。 このメンバーの最大値はSCSI_MAXIMUM_LUNS_PER_TARGET。
WmiDataProvider
TRUE の場合、ミニポート ドライバーは Windows Management Instrumentation (WMI) 要求に応答します。 Storport は、ミニポート ドライバーが WMI をサポートする必要があるため、このメンバーを TRUE に 初期化します。 さらに、ファイバー チャネル アダプターのミニポート ドライバーは、WMI を介して SAN 管理 HBA API をサポートすることが期待され、RAID 管理インターフェイスをサポートするにはホスト ベースの RAID アダプターのミニポート ドライバーが必要です。
ミニポート ドライバーは、この値を変更することはできません。
SynchronizationModel
ミニポート ドライバーがサポートする I/O 同期モデル。 使用できる値は次のとおりです。
値 | 意味 |
---|---|
StorSynchronizeFullDuplex | ミニポートは、全二重モードをサポートしています。 |
StorSynchronizeHalfDuplex | ミニポートは、半二重モードをサポートしています。 |
HwMSInterruptRoutine
メッセージ通知割り込み (MSI) を生成する HBA のミニポート ドライバーに必要なミニポート ドライバーの HwMSInterruptRoutine ルーチンへのポインター。 ミニポート ドライバーは、HBA が MSI を生成しない場合、このメンバーを NULL に設定します。
InterruptSynchronizationMode
割り込み同期モードを指定する INTERRUPT_SYNCHRONIZATION_MODE 値。 割り込み同期モードは、ポート ドライバーがメッセージ通知割り込みを同期する方法を決定します。
DumpRegion
クラッシュ ダンプまたは休止中にミニポート ドライバーが使用できる物理的に連続したメモリの領域を記述するMEMORY_REGION構造体。
RequestedDumpBufferSize
ダンプ/休止中に使用するために割り当てられるキャッシュされていない拡張機能のサイズ (バイト単位)。
VirtualDevice
TRUE の場合、このデバイスの背後に実際のハードウェアはありません (DMA オブジェクト、割り込み、I/O ポートなど)。 Storport は、実際のハードウェアを制御しているミニポートの代わりに "仮想" ミニポートをサポートする場合、状況によっては動作が異なります。
DumpMode
ダンプ モード中のミニポートの使用を示します。 次のいずれかの値を指定できます。
値 | 意味 |
---|---|
DUMP_MODE_CRASH | ダンプ モードのミニポートは、クラッシュダンプに使用されます。 |
DUMP_MODE_HIBER | ダンプ モードのミニポートは、休止状態に使用されます。 |
DUMP_MODE_MARK_MEMORY | ダンプ モードのミニポートは、必要なメモリをマークするために使用されます。 |
DUMP_MODE_RESUME | ダンプ モードのミニポートは、休止状態からの再開に使用されます。 |
DmaAddressWidth
アダプターの DMA アドレスの幅。 ミニポートは、この値を指定するときに FeatureSupport でSTOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIEDを指定する必要があります。 指定する値は (0 <DmaAddressWidth<= 64) である必要があります。 このフィールドは、Windows 10 バージョン 2004 以降で使用できます。
ExtendedFlags1
システムで使用するために予約されています。
MaxNumberOfIO
HBA でサポートされている未処理の I/O 操作の最大数。 Storport では、既定値は 1000 に設定されています。 HBA が 1000 の未処理の I/O 操作をサポートしていない場合、ミニポートはこれを適切な小さい値に調整する必要があります。
HBA が 1,000 を超える未処理の I/O 操作をサポートできる場合、ミニポートはこのメンバーをアダプター ハードウェアでサポートされている任意の値に増やすことができます。 1,000 を超える未処理の I/O 操作を許可するには、HBA で Dma64BitAddresses フィールドに設定されている次の 64 ビット DMA アドレス指定方法のいずれかをサポートする必要があります。
- SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED
- SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED
- SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED
MaxIOsPerLun
LUN でサポートされる I/O 要求の最大数。 Storport はこれを既定値の 255 に設定します。 LUN で 255 個の未処理の I/O 要求がサポートされていない場合、ミニポートはこのメンバーを適切な小さい値に調整する必要があります。 このメンバーは、 = MaxNumberOfIO である<必要があります。 MaxIOsPerLun 255 を>サポートするには、SrbType フィールドを SRB_TYPE_STORAGE_REQUEST_BLOCK に設定する必要があります。 Windows 8 以降で使用できます。
InitialLunQueueDepth
初期 LUN I/O キューの深さ。 Storport はこれを、物理ミニポートの場合は既定値の 20、仮想ミニポートの場合は 250 に設定します。 このメンバーは、アダプター上のすべての LUN の初期キューの深さを調整します。 個々の LUN のキューの深さは、 StorPortSetDeviceQueueDepth を呼び出すことによって設定されます。 通常、このメンバーは MaxIOsPerLun と同じ値に設定されます。 Windows 8 以降で使用できます。
BusResetHoldTime
リセットが検出された後にアダプターを一時停止する時間 (マイクロ秒単位)。 バスのリセット後に待機時間が必要ない場合は、この値を 0 に設定します。 Windows 8 以降で使用できます。
FeatureSupport
アダプターに対して要求された Storport 機能。 Windows 8 以降で使用できます。 ミニポート ドライバーは、次のいずれかの値のビットごとのマスクにこのメンバーを設定できます。
値 | 意味 |
---|---|
STOR_ADAPTER_FEATURE_DEVICE_TELEMETRY 0x00000001 | ミニポート ドライバーは、ストレージ デバイステレメトリをサポートしています。 |
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 | ミニポートは、システムのシャットダウン中にSTOP_UNIT コマンドを受信するように要求します。 |
STOR_ADAPTER_UNCACHED_EXTENSION_NUMA_NODE_PREFERRED 0x00000004 | ミニポート ドライバーは、アダプター NUMA ノードから UncachedExtension を割り当てる必要があります。 |
STOR_ADAPTER_DMA_V3_PREFERRED 0x00000008 | ミニポート ドライバーは、アダプターに DMA V3 カーネル API を使用することを好みます。 |
STOR_ADAPTER_FEATURE_ABORT_COMMAND 0x00000010 | ミニポート ドライバーは、SRB_FUNCTION_ABORT_COMMANDを介して未処理のコマンドを中止する機能をサポートしています。 |
STOR_ADAPTER_FEATURE_RICH_TEMPERATURE_THRESHOLD 0x00000020 | アダプターは、SCSI SPC4 仕様で定義されているよりも豊富な温度しきい値情報をサポートします。 |
STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 0x00000040 | ミニポート ドライバーは、アダプターの DmaAddressWidth で DMA アドレスの幅を指定しました。 この値は、バージョン 2004 Windows 10 以降で使用できます。 |
注釈
Storport ドライバーは、この構造体を割り当てて初期化し、可能な限り多くの HBA 固有の構成情報を提供し、ミニポート ドライバーの HwStorFindAdapter ルーチンに構造体を渡します。 Storport は PnP 以外のデバイスをサポートしていないため、 HwStorFindAdapter はアダプターを検索しません。 その主な関数は、 PORT_CONFIGURATION_INFORMATIONを初期化することです。
要件
要件 | 値 |
---|---|
Header | storport.h (Srb.h、Storport.h、Strmini.h を含む) |