次の方法で共有


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 を行う場合、ミニポート ドライバーは、次のいずれかにこのメンバーをリセットする必要があります。 Width8BitsWidth16Bits、または Width32Bits

DmaSpeed

Eisa HBA の DMA データ転送速度を指定します。 既定では、このメンバーの値は互換性のタイミングを指定します。 このメンバーに使用できる値は、互換性のあるTypeATypeB、または 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) 構造体で指定された VendorIdDeviceId に一致する値を持つ 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 ルーチンによって提供される情報に依存します。 たとえば、各ミニポート ドライバーによって提供される MaximumTransferLengthNumberOfPhysicalBreaks 値は、クラス ドライバーが HBA の制限に合わせて一連の部分的な転送に大きな転送要求を分割する必要があるかどうかを制御します。

PORT_CONFIGURATION_INFORMATIONのメンバー Dma64BitAddresses は、ブール値と見なされなくなりました。 SCSI_DMA64_SYSTEM_SUPPORTEDの値は、ポート/ミニポート ドライバーが 64 ビット アドレス指定をサポートするために必要であることを示しますが、ScsiPortGetUncachedExtension ルーチンは、Dma64BitAddresses の 0 以外の値は、64 ビットのサポートが必要であることを示すものとして解釈されます。 つまり、ScsiPortGetUncachedExtension は、DMA64BitAddresses に BOOLEAN 値を割り当てるレガシ ドライバーによって呼び出された場合でも、正常に機能

Dma64BitAddressesに加えて、PORT_CONFIGURATION_INFORMATIONとHW_INITIALIZATION_DATAの両方に、SpecificLuExtensionSizeSrbExtensionSize という名前のメンバーのペアがあり、その値を異なる方法で処理する必要があります。 ミニポート ドライバーは、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を渡す前に、SpecificLuExtensionSizeSrbExtensionSize をPORT_CONFIGURATION_INFORMATIONに変更する必要があります。

必要条件

要件 価値
ヘッダー srb.h (Srb.h、Storport.h、Strmini.h を含む)

関連項目

ACCESS_RANGE

HW_INITIALIZATION_DATA (SCSI)

HwScsiFindAdapter

ScsiPortGetDeviceBase

ScsiPortGetUncachedExtension

ScsiPortInitialize

ScsiPortValidateRangeする