次の方法で共有


StorPortGetPhysicalAddress 関数 (storport.h)

StorPortGetPhysicalAddress ルーチンは、指定された仮想アドレス範囲を DMA 操作の物理アドレス範囲に変換します。

構文

STORPORT_API STOR_PHYSICAL_ADDRESS StorPortGetPhysicalAddress(
  [in]           PVOID               HwDeviceExtension,
  [in, optional] PSCSI_REQUEST_BLOCK Srb,
  [in]           PVOID               VirtualAddress,
  [out]          ULONG               *Length
);

パラメーター

[in] HwDeviceExtension

ハードウェア デバイス拡張機能へのポインター。 これは、ポート ドライバーが割り当て、ミニポート ドライバーの代わりに初期化する HBA ごとの記憶域です。 ミニポート ドライバーは通常、HBA の状態や HBA のマップされたアクセス範囲など、この拡張機能に HBA 固有の情報を格納します。 この領域は、ミニポート ドライバーが StorPortInitialize 呼び出した直後に、HBA のデバイス オブジェクトの メンバーである DeviceExtension->HwDeviceExtension 内のミニポート ドライバーで使用できます。 ポート ドライバーは、デバイスを削除すると、このメモリを解放します。

[in, optional] Srb

変換する仮想アドレスがその SRB の dataBuffer メンバーまたは SenseInfoBuffer メンバー の場合は、SCSI 要求ブロックへのポインター。 それ以外の場合、このパラメーターは NULL する必要があります。

[in] VirtualAddress

変換するベース仮想アドレスへのポインター。 この仮想アドレスが、SRB で提供される DataBuffer の範囲内にある場合、呼び出し元は Srb ポインター も指定する必要があります。

[out] Length

返された物理アドレスから始まる、マップされたバイト数を示す値へのポインター。

戻り値

StorPortGetPhysicalAddress は、特定の仮想アドレスに対応する物理アドレスを返します。 指定されたアドレスを変換できない場合、この関数は null 返します。

備考

StorPortGetPhysicalAddress に渡された仮想アドレス StorPortAllocateContiguousMemorySpecifyCacheNodeから取得した場合、Length に返される値は無視する必要があります。

Windows 8 以降では、Srb パラメーターは、SCSI_REQUEST_BLOCK または STORAGE_REQUEST_BLOCKを指している可能性があります。 Srb Function フィールドの関数識別子SRB_FUNCTION_STORAGE_REQUEST_BLOCK場合、SRB は STORAGE_REQUEST_BLOCK 要求構造体です。

StorPortGetPhysicalAddress は、物理アドレスを表すために STOR_PHYSICAL_ADDRESS を使用します。

typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS, *PSTOR_PHYSICAL_ADDRESS;

STOR_PHYSICAL_ADDRESS 型は、Storport ミニポート ドライバーが物理アドレスまたはバスの相対アドレスを表すために使用するオペレーティング システムに依存しないデータ型です。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー storport.h (Storport.h を含む)
ライブラリ Storport.lib

関連項目

SCSI_REQUEST_BLOCK

STORAGE_REQUEST_BLOCK

ScsiPortGetPhysicalAddress