次の方法で共有


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 ミニポート ドライバーが物理アドレスまたはバス相対アドレスを表すために使用するオペレーティング システムに依存しないデータ型です。

要件

要件
対象プラットフォーム ユニバーサル
Header storport.h (Storport.h を含む)
Library Storport.lib

こちらもご覧ください

SCSI_REQUEST_BLOCK

STORAGE_REQUEST_BLOCK

ScsiPortGetPhysicalAddress