PORT_CONFIGURATION_INFORMATION構造体 (srb.h)
PORT_CONFIGURATION_INFORMATION (SCSI) には、HBA の構成情報が含まれています。 OS 固有のポート ドライバーは、この構造体を割り当てて初期化し、できるだけ多くの HBA 固有の構成情報を提供し、ミニポート ドライバーの HwScsiFindAdapter ルーチンに構造体を渡します。 ポート ドライバーは、ミニポート ドライバーのHW_INITIALIZATION_DATA構造体からこの構造体の情報の一部を取得します。 ミニポート ドライバーの HwScsiFindAdapter ルーチンは、ミニポート ドライバーが HBA をサポートできるかどうかを判断し、サポートされている場合は、PORT_CONFIGURATION_INFORMATION構造体の関連する残りの情報を入力します。
手記
SCSI ポート ドライバーと SCSI ミニポート ドライバー モデルは、今後変更または使用できない可能性があります。 代わりに、Storport ドライバー と storport ミニポート ドライバー モデル 使用します。
構文
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 Reserved;
UCHAR NumberOfBuses;
UCHAR InitiatorBusId[8];
BOOLEAN ScatterGather;
BOOLEAN Master;
BOOLEAN CachesData;
BOOLEAN AdapterScansDown;
BOOLEAN AtdiskPrimaryClaimed;
BOOLEAN AtdiskSecondaryClaimed;
BOOLEAN Dma32BitAddresses;
BOOLEAN DemandMode;
BOOLEAN MapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN TaggedQueuing;
BOOLEAN AutoRequestSense;
BOOLEAN MultipleRequestPerLu;
BOOLEAN ReceiveEvent;
BOOLEAN RealModeInitialized;
BOOLEAN BufferAccessScsiPortControlled;
UCHAR MaximumNumberOfTargets;
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;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;
メンバーズ
Length
この構造体のサイズをバイト単位で指定します。 実際には、OS 固有のポート ドライバーによって常に初期化されるこのメンバーは、ポート ドライバーによって使用されるこの構造体のバージョンを示します。
SystemIoBusNumber
HBA が接続されている I/O バスのシステム割り当て番号を指定します。 OS 固有のポート ドライバーは、常にこのメンバーを初期化します。 プラットフォームには、指定された AdapterInterfaceTypeの I/O バスが複数ある可能性があるため、その値はシステム割り当てです。
AdapterInterfaceType
I/O バス インターフェイスを識別します。 OS 固有のポート ドライバーは常に、このメンバーを、HW_INITIALIZATION_DATA (SCSI) 構造体のミニポート ドライバーで指定された値に設定します。
BusInterruptLevel
バス相対割り込み要求レベルを指定します。 OS 固有のポート ドライバーは、HBA の割り込みの使用に関する想定を行わないので、既定値は 0 です。 指定した AdapterInterfaceType と HBA に応じて、このメンバーに設定された値は、バスの IRQL に対応できます (Isa、MicroChannel 型バス など)。 Eisa HBA のドライバーは、アダプターがレベル依存割り込み用に構成されている場合、HBA のバス相対 IRQL にこの値を設定する必要があります。
BusInterruptVector
HBA によって返されるバス相対ベクトルを指定します。 OS 固有のポート ドライバーは、HBA の割り込みの使用に関する想定を行わないので、既定値は 0 です。 このメンバーは、HBA の BusInterruptLevel メンバーを設定するドライバーとは無関係です。 これは、PCIBusなど、割り込みベクトルを使用する I/O バスの種類の HBA に関連します。
InterruptMode
HBA で LevelSensitive 使用するか、ラッチされた ("エッジ トリガー" とも呼ばれる) 割り込みを 使用するかを指定します。 OS 固有のポート ドライバーは、バスとデバイスの適切な値にこのメンバーを初期化します。たとえば、PCIBusの LevelSensitive します。 Eisa HBA のドライバーは、アダプターがレベルに依存する割り込みに対して構成されている場合に、この値をリセットする必要があります。同様に、MicroChannel タイプ のバスなど、レベルに依存する割り込みを使用する I/O バス上の HBA のドライバーが必要です。
MaximumTransferLength
HBA が 1 回の転送操作で転送できる最大バイト数を指定します。 既定では、このメンバーの値は SP_UNINITIALIZED_VALUE であり、転送の最大サイズは無制限であることを示します。 HBA の転送サポートが制限されている場合、ミニポート ドライバーは、HBA の転送容量に従ってこのメンバーをリセットする必要があります。 ミニポート ドライバーの HwScsiInterrupt ルーチンが HBA の割り込みを無効にできない場合、このメンバーは、ドライバーの開発中に調整して、そのミニポート ドライバーの ISR で費やされた時間によってマウスが "ジャンプ" したり、シリアル/並列スループットがユーザーの目立つレベルに低下したりしないようにすることができます。
NumberOfPhysicalBreaks
HBA が散布図/収集をサポートしている場合にデータ バッファーが持つ可能性があるアドレス範囲間の区切りの最大数を指定します。 つまり、散布図/収集リストの数から 1 を引いた値です。 既定では、このメンバーの値は SP_UNINITIALIZED_VALUE です。これは、HBA が無制限の数の物理的な不連続性をサポートできることを示します。 ポート ドライバーは、このメンバーの値を設定する場合は、ミニポート ドライバーは、値を小さいが、それ以上を調整できます。 このメンバーがSP_UNINITIALIZED_VALUE場合、ミニポート ドライバーは、HBA の散布図/収集の容量に従ってこのメンバーをリセットする必要があります。ゼロは散布図/収集のサポートを表しません。
DmaChannel
下位 HBA によって使用される DMA チャネルを指定します。 既定では、このメンバーの値はSP_UNINITIALIZED_VALUE。 HBA がシステム DMA コントローラーを使用し、指定された AdapterInterfaceType が MicroChannel を除く任意値である場合、ミニポート ドライバーは、このメンバーをリセットする必要があります。
DmaPort
下位 HBA によって使用される DMA ポートを指定します。 既定では、このメンバーの値はSP_UNINITIALIZED_VALUE。 HBA がシステム DMA コントローラーを使用し、指定された AdapterInterfaceType が MicroChannel 場合、ミニポート ドライバーはこのメンバーを設定する必要があります。
DmaWidth
HBA が DMA を使用する場合の DMA 転送の幅を指定します。 既定では、このメンバーの値は 0 です。 HBA が DMA を行う場合、ミニポート ドライバーは、次のいずれかにこのメンバーをリセットする必要があります。 Width8Bits、Width16Bits、または Width32Bits。
DmaSpeed
Eisa HBA の DMA データ転送速度を指定します。 既定では、このメンバーの値は互換性のタイミングを指定します。 このメンバーに使用できる値は、互換性のある、TypeA、TypeB、または typeC のいずれかです。
AlignmentMask
HBA で転送操作に必要なバッファーのアラインメント制限を示すマスクが含まれています。 有効なマスク値は、Windows の異なるバージョンのメモリ マネージャーの特性によっても制限されます。 Windows 95 または Windows 98 で許可されるマスク値は、0 (バイトアライン)、1 (単語アライン) または 3 (DWORD アライン) です。 Windows NT および Windows 2000 では、有効なマスク値は 0 (バイトアライン)、1 (ワードアライン)、3 (DWORD アライン)、7 (二重 DWORD アライン) です。 ミニポート ドライバーは、HBA が散布図/収集をサポートしている場合は、このマスクを設定する必要があります。
NumberOfAccessRanges
次に説明する、配列内の AccessRanges 要素の数を指定します。 OS 固有のポート ドライバーは常に、ミニポート ドライバーが ScsiPortInitialize呼び出されたときに、HW_INITIALIZATION_DATA構造体で渡される値このメンバーを設定します。
AccessRanges
Reserved
システム用に予約されており、ミニポート ドライバーでは使用できません。
NumberOfBuses
HBA によって制御される SCSI バスの数を指定します。 既定では、このメンバーの値は 0 です。
InitiatorBusId[8]
イニシエーター バス ID を示します。 InitiatorBusId [0] の入力値が 0 の場合、ミニポート ドライバーは、HBA の HBA に対してクエリを実行することによって決定された特定の値を使用する必要がない場合、既定値を割り当てることができます。 それ以外の場合、ミニポート ドライバーは、可能な場合は、ポート ドライバーによって割り当てられた 0 以外の値を使用する必要があります。 すべてのミニポート ドライバーは、InitiatorBusId 仕様を更新して、HBA が使用しているものと一致させる必要があります。必要に応じて、HBA に対してクエリを実行して適切な値を判断します。
ミニポート ドライバーは、NumberOfBusesの値によって示されるように、HBA でサポートされている各 SCSI バスのエントリを設定する必要があります。
ScatterGather
HBA が散布図/収集 サポートしていることを TRUE するタイミングを示します。 FALSE 場合、HBA は散布図/収集をサポートしません。 既定では、このメンバーの値は FALSE です。
Master
HBA がバス マスター TRUE を示します。 FALSE 場合、HBA はバス マスターではありません。 既定では、このメンバーの値は FALSE です。
CachesData
TRUE、HBA がデータをキャッシュするか、周辺機器のキャッシュされた状態を維持することを示します。 FALSE 場合、HBA はデータをキャッシュしたり、周辺機器のキャッシュされた状態を維持したりしません。 既定では、このメンバーの値は FALSE です。 これが TRUE にリセットされた場合、OS 固有のポート ドライバーは、ファイル システム キャッシュのフラッシュやシステムのシャットダウンなど、特定のシステム イベントが発生したときにミニポート ドライバーに通知します。 たとえば、バス上のコントローラーが 2 つのディスクをミラー化する場合、ミニポート ドライバーは通常、このメンバーを TRUE 設定します。
AdapterScansDown
TRUE、HBA の BIOS が SCSI バス ターゲットを 7 から 0 にスキャンすることを示します。 FALSE すると、HBA の BIOS は SCSI バス ターゲットを検索し、ID 0 から始まり、MaximumTargetIds (含まない) までスキャンします。 既定では、AdapterScansDown の値は FALSE です。
AtdiskPrimaryClaimed
TRUE、プライマリ "AT" (WD1003 互換) ディスク アドレス範囲 (0x1FFに0x1F0) が、そのデバイスの別のドライバーによってレジストリに要求されたことを示します。 OS 固有のポート ドライバーは、常にこのメンバーを初期化します。 このメンバーの入力値が TRUE 場合、ミニポート ドライバーは、既に読み込まれているドライバーがデバイスの範囲を要求していることを前提とする必要があります。 入力値が FALSE 場合、ミニポート ドライバーは、"AT" ディスク コントローラーをエミュレートし、このメンバーを true にリセットする HBA のアドレス範囲を要求できます。これにより、"AT" ディスク ドライバーまたはその後読み込まれたミニポート ドライバーによってこの範囲にアクセスできなくなります。
AtdiskSecondaryClaimed
セカンダリ AT ディスク アドレス範囲 TRUE、0x17Fへの0x170が、そのデバイスの別のドライバーによってレジストリに要求されたことを示します。 FALSE 場合、セカンダリ AT ディスク アドレス範囲が別のドライバーによってレジストリに要求されていません。 OS 固有のポート ドライバーは、常にこのメンバーを初期化します。 ミニポート ドライバーは、AtdiskPrimaryClaimedとしてこのメンバーを扱う必要があります。
Dma32BitAddresses
TRUE、HBA に 32 のアドレス行があり、0x00FFFFFFより大きい物理アドレスを持つメモリにアクセスできることを示します。 FALSE 場合、HBA には 32 以外の数の DMA アドレス行があります。 既定では、このメンバーの値は FALSE です。 ミニポート ドライバーが Dma64BitAddresses 設定する場合、このメンバーは FALSE する必要があります。
DemandMode
TRUE 、システム DMA コントローラーを単一サイクル操作ではなく、需要モード用にプログラムする必要があることを示します。 HBA が下位デバイスでない場合、このメンバーは FALSE する必要があります。
MapBuffers
TRUE データ バッファーをシステム仮想アドレス範囲にマップする必要があることを を示します。 FALSE 場合、データ バッファーをシステム仮想アドレスにマップする必要はありません。 OS 固有のポート ドライバーは常に、ミニポート ドライバーが ScsiPortInitialize呼び出されたときに、HW_INITIALIZATION_DATA (SCSI) 構造体に渡される値このメンバーを設定します。 ミニポート ドライバーは、制御する特定の HBA のこの値をリセットできます。 FALSE 場合、ミニポート ドライバーは Srb.DataBuffer 直接アクセスできません。
NeedPhysicalAddresses
ミニポート ドライバーが仮想アドレスを物理アドレスに変換する必要 、HBA で必要に応じて TRUE を示します。 FALSE 場合、ミニポート ドライバーは仮想アドレスを物理アドレスに変換する必要はありません。 OS 固有のポート ドライバーは常に、ミニポート ドライバーが ScsiPortInitialize呼び出されたときに、HW_INITIALIZATION_DATA (SCSI) 構造体に渡される値このメンバーを設定します。 ミニポート ドライバーは、制御する特定の HBA のこの値をリセットできます。
TaggedQueuing
HBA が SCSI タグを持つ複数の要求のキューをサポートしていることを TRUE するタイミングを示します。 FALSE 場合、HBA は SCSI タグ付きキューをサポートしません。 OS 固有のポート ドライバーは常に、ミニポート ドライバーが ScsiPortInitialize呼び出されたときに、HW_INITIALIZATION_DATA (SCSI) 構造体に渡される値このメンバーを設定します。 ミニポート ドライバーは、制御する特定の HBA のこの値をリセットできます。
AutoRequestSense
HBA が自動要求センスをサポート TRUE 場合を示します。 FALSE 場合、HBA は自動要求センスをサポートしません。 OS 固有のポート ドライバーは常に、ミニポート ドライバーが ScsiPortInitialize呼び出されたときに、HW_INITIALIZATION_DATA (SCSI) 構造体に渡される値このメンバーを設定します。 ミニポート ドライバーは、制御する特定の HBA のこの値をリセットできます。 バス マスター HBA のドライバーが ScsiPortGetUncachedExtensionを呼び出す前に、このメンバーTRUE に設定する必要があります。
MultipleRequestPerLu
HBA が論理ユニットごとに複数の要求をサポート TRUE を指定します。 FALSE 場合、HBA は論理ユニットごとに複数の要求をサポートしません。 アダプターが要求をキャッシュするメカニズムは、アダプターによって定義されます。 OS 固有のポート ドライバーは常に、ミニポート ドライバーが ScsiPortInitialize呼び出されたときに、HW_INITIALIZATION_DATA (SCSI) 構造体に渡される値このメンバーを設定します。 ミニポート ドライバーは、制御する特定の HBA のこの値をリセットできます。
ReceiveEvent
HBA が SCSI 受信イベント操作をサポート TRUE 場合を示します。 FALSE 場合、HBA は SCSI 受信イベント操作をサポートしません。 OS 固有のポート ドライバーは常に、ミニポート ドライバーが ScsiPortInitialize呼び出されたときに、HW_INITIALIZATION_DATA (SCSI) 構造体に渡される値このメンバーを設定します。 ミニポート ドライバーは、制御する特定の HBA のこの値をリセットできます。
RealModeInitialized
true (x86 のみ) の実モード ドライバーが既に HBA を初期化したことを を示します。 FALSE 場合、HBA は以前に実モード ドライバーによって初期化されていません。 OS に依存するポート ドライバーは、常にこのメンバーを初期化します。 TRUE 設定されている場合、ミニポート ドライバーは、ドライバーの初期化シーケンスが実モード HBA の初期化と同じ場合、その HBA を初期化する必要があります。このような状況で HBA を再初期化しないと、ミニポート ドライバーの読み込みがはるかに高速になります。 このメンバーの値は、x86 ベースのプラットフォームで保護モードで実行されている間に常に HBA を初期化するミニポート ドライバーと、CISC ベースまたは RISC ベースのプラットフォームで実行されているかどうかにかかわらず、重要でないすべてのミニポート ドライバーには関係ありません。
BufferAccessScsiPortControlled
ミニポート ドライバーが常 SCSIPortXxx を呼び出して SRB のデータ バッファーや要求検出情報にアクセスし、OS 固有のポート ドライバーが I/O 要求処理を最適化できるようにする場合に TRUE を示します。 FALSE 場合、ミニポート ドライバーは、データ バッファーまたは要求検出情報にアクセスするために、Xxxルーチン ScsiPort呼び出す必要はありません。 このメンバーを FALSE 設定すると、HBA の I/O パフォーマンスが低下する可能性があります。 ScsiPortXxx 以外のルーチンを呼び出すと、Microsoft オペレーティング システム全体でミニポート ドライバーを移植できなくなります。
MaximumNumberOfTargets
HBA が制御できるターゲット周辺機器の数を指定します。 既定では、このメンバーの値は SCSI 標準に従ってSCSI_MAXIMUM_TARGETSされます。 ミニポート ドライバーは、HBA の機能が制限されている場合、またはより大きな値に、HBA がワイド SCSI またはファイバー チャネル機能を持っていることを示す小さい値にこのメンバーをリセットできます。 この値はSCSI_MAXIMUM_TARGETS_PER_BUSに制限されます。
ReservedUchars[2]
システム用に予約されており、ミニポート ドライバーでは使用できません。
SlotNumber
ミニポート ドライバーが ScsiPortInitialize を呼び出したときに、HW_INITIALIZATION_DATA (SCSI) 構造体で指定された VendorId と DeviceId に一致する値を持つ HBA のスロット番号指定します。
BusInterruptLevel2
システム用に予約されており、ミニポート ドライバーでは使用できません。
BusInterruptVector2
システム用に予約されており、ミニポート ドライバーでは使用できません。
InterruptMode2
システム用に予約されており、ミニポート ドライバーでは使用できません。
DmaChannel2
システム用に予約されており、ミニポート ドライバーでは使用できません。
DmaPort2
システム用に予約されており、ミニポート ドライバーでは使用できません。
DmaWidth2
システム用に予約されており、ミニポート ドライバーでは使用できません。
DmaSpeed2
システム用に予約されており、ミニポート ドライバーでは使用できません。
DeviceExtensionSize
64K を超えるデータ転送を処理するために、ミニポート ドライバーに必要なバイト単位のサイズを指定します。このドライバーのレジストリで定義されているサイズよりも大きな散布図/収集リストが必要になる場合があります。
SpecificLuExtensionSize
64K を超えるデータ転送を処理するために、ミニポート ドライバーが論理ユニットごとの記憶域 (存在する場合) に必要なサイズをバイト単位で指定します。 ミニポート ドライバーが記憶域を必要とする LU ごとの情報を保持しない場合は、このメンバーを 0 のままにします。 この値は、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 64 ビット アドレスを処理するために LUN または SRB 拡張機能に追加の領域が必要な場合は、ScsiPortGetUncachedExtension などのルーチンで使用する前に、この値に適切な調整を行う必要があります。
SrbExtensionSize
64K を超えるデータ転送を処理するために、ミニポート ドライバーが要求ごとの記憶域に必要なバイト単位のサイズを指定します (存在する場合)。 ScsiPortGetUncachedExtension を呼び出す前に、このメンバーを設定して、NumberOfPhysicalBreaksに基づいて要求ごとのストレージのサイズを変更します。 ミニポート ドライバーが記憶域を必要とする SRB ごとの情報を維持しない場合は、このメンバーを 0 のままにします。 この値は、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 64 ビット アドレスを処理するために LUN または SRB 拡張機能に追加の領域が必要な場合は、ScsiPortGetUncachedExtension などのルーチンで使用する前に、この値に適切な調整を行う必要があります。
Dma64BitAddresses
Dma64BitAddresses に SCSI_DMA64_MINIPORT_SUPPORTED の値が含まれている場合、HBA が 4 GB を超えるアドレスにアクセスできることを示します。または0x0FFFFFFFF。 Windows 2000 より前の ScsiPort は、HW_INITIALIZATION_DATA (SCSI)の内容に基づいてこの値を設定します。 これはもはや当たりません。 Windows 2000 では、Dma64BitAddresses の値は、HwScsiFindAdapter単独ミニポート ドライバー コールバックによって決定されます。 オペレーティング システムが 64 ビット アドレス空間をサポートしている場合、ポート ドライバーは、このメンバーのミニポート ドライバーにSCSI_DMA64_SYSTEM_SUPPORTEDの値を渡します。 PORT_CONFIGURATION_INFORMATIONで記述された HBA が 32 ビットを超えるアドレス空間もサポートしている場合、ポート/ミニポート ドライバーは完全な 64 ビット アドレス指定をサポートする必要があります。ミニポート ドライバーのコールバック HwScsiFindAdapter は、SCSI_DMA64_MINIPORT_SUPPORTEDの値を dma64BitAddresses 割り当てて、ポート ドライバーによって割り当てられた以前の値に書き込むことでこれを示します。 ミニポート ドライバーが ScsiPortGetUncachedExtension呼び出す前に、Dma64BitAddresses メンバーに正しい値を割り当てる必要があります。
ResetTargetSupported
廃れた。 ScsiPort ドライバーは、ミニポート ドライバー SRB_FUNCTION_RESET_DEVICE要求を送信しなくなりました。 このメンバーは使用しないでください。
MaximumNumberOfLogicalUnits
HBA が制御できるターゲットあたりの論理ユニットの最大数を指定します。 既定では、このメンバーの値はSCSI_MAXIMUM_LOGICAL_UNITS。 ミニポート ドライバーは、HBA の機能が制限されている場合、またはより大きな値に HBA が SCSI-3 機能を持っていることを示す小さい値にこのメンバーをリセットできます。
WmiDataProvider
ミニポート ドライバーが Windows 管理インストルメンテーション (WMI) 要求に応答 TRUE 場合を示します。 FALSE ミニポート ドライバーは、Windows 管理インストルメンテーション (WMI) 要求に応答しません。 既定では、このメンバーの値は FALSE です。
備考
初期化される特定のメンバーは、HBA ミニポート ドライバーと、OS 固有のポート ドライバーで使用できる構成情報によって異なります。 OS 固有のポート ドライバーは、ミニポート ドライバーの HwScsiFindAdapter ルーチンに構成情報を提供できないすべてのメンバーの既定値を設定します。
OS 固有のポート ドライバーが初期化されたすべての値を渡さない場合、すべての HBA ミニポート ドライバーには、関連するメンバーに使用する既定値のセットが少なくとも 1 つ必要です。
HwScsiFindAdapter ルーチンは、ドライバーがサポートする HBA に関連するすべてのメンバーを更新する必要があります。
ミニポート ドライバーより後に読み込まれる Windows NT 記憶域クラス ドライバーは、後続の I/O 要求を設定する各ミニポート ドライバーの HwScsiFindAdapter ルーチンによって提供される情報に依存します。 たとえば、各ミニポート ドライバーによって提供される MaximumTransferLength と NumberOfPhysicalBreaks 値は、クラス ドライバーが HBA の制限に合わせて一連の部分的な転送に大きな転送要求を分割する必要があるかどうかを制御します。
PORT_CONFIGURATION_INFORMATIONのメンバー Dma64BitAddresses は、ブール値と見なされなくなりました。 SCSI_DMA64_SYSTEM_SUPPORTEDの値は、ポート/ミニポート ドライバーが 64 ビット アドレス指定をサポートするために必要であることを示しますが、ScsiPortGetUncachedExtension ルーチンは、Dma64BitAddresses の 0 以外の値は、64 ビットのサポートが必要であることを示すものとして解釈されます。 つまり、ScsiPortGetUncachedExtension は、DMA64BitAddresses に BOOLEAN 値を割り当てるレガシ ドライバーによって呼び出された場合でも、正常に機能。
Dma64BitAddressesに加えて、PORT_CONFIGURATION_INFORMATIONとHW_INITIALIZATION_DATAの両方に、SpecificLuExtensionSize と SrbExtensionSize という名前のメンバーのペアがあり、その値を異なる方法で処理する必要があります。 ミニポート ドライバーは、SpecificLuExtensionSize の初期値を計算し、HW_INITIALIZATION_DATAで SrbExtensionSize を する必要があります。これは、コントローラーが実際にサポートできる内容に関係なく、HBA が 32 ビット アドレスを受け取ることができるという前提に基づいています。 PORT_CONFIGURATION_INFORMATION の SpecificLuExtensionSize および SrbExtensionSize の既定値は、PORT_CONFIGURATION_INFORMATION の値がHW_INITIALIZATION_DATAの値から派生するため、32 ビット アドレス指定の前提にも基づいています。
つまり、ミニポート ドライバーが 64 ビットの物理アドレスを処理するために LUN 拡張機能または SRB 拡張機能に追加の領域が必要な場合は、ScsiPortGetUncachedExtension にPORT_CONFIGURATION_INFORMATIONを渡す前に、SpecificLuExtensionSize と SrbExtensionSize をPORT_CONFIGURATION_INFORMATIONに変更する必要があります。
必要条件
要件 | 価値 |
---|---|
ヘッダー | srb.h (Srb.h、Storport.h、Strmini.h を含む) |
関連項目
HwScsiFindAdapterの
ScsiPortGetDeviceBaseの
ScsiPortGetUncachedExtensionの
ScsiPortValidateRangeをする