次の方法で共有


StreamClassGetPhysicalAddress 関数 (strmini.h)

StreamClassGetPhysicalAddress ルーチンは、仮想メモリ アドレスを物理メモリ アドレスに変換し、DMA 操作に対応する物理メモリをロックします。

構文

STREAM_PHYSICAL_ADDRESS STREAMAPI StreamClassGetPhysicalAddress(
  [in]           PVOID                    HwDeviceExtension,
  [in, optional] PHW_STREAM_REQUEST_BLOCK HwSRB,
  [in]           PVOID                    VirtualAddress,
  [in]           STREAM_BUFFER_TYPE       Type,
  [out]          ULONG                    *Length
);

パラメーター

[in] HwDeviceExtension

ミニドライバーのデバイス拡張機能へのポインター。 ミニドライバーは、StreamClassRegisterMinidriver を介して自身を登録するときに渡す HW_INITIALIZATION_DATA 構造体内のこのバッファーのサイズ指定します。 その後、クラス ドライバーは、ミニドライバーに渡される HW_STREAM_REQUEST_BLOCKHW_STREAM_OBJECTHW_TIME_CONTEXT、および PORT_CONFIGURATION_INFORMATION 構造体の HwDeviceExtension メンバー内のバッファーへのポインターを渡します。

[in, optional] HwSRB

ストリーム要求ブロックを指定します。 このパラメーターは、Type パラメーターの値が SRBDataBuffer の場合にのみ使用 。それ以外の場合は、HwSRB を NULL する必要があります。 このパラメーターは省略可能です。

[in] VirtualAddress

変換する仮想アドレスを指定します。

[in] Type

VirtualAddress によって指バッファーの種類を指定します。 この値には、PerRequestExtension、DmaBuffer、または SRBDataBuffer を指定できます。

[out] Length

バッファーの長さをバイト単位で指定します。

戻り値

StreamClassGetPhysicalAddress は、変換された仮想アドレスを物理メモリ アドレスとして返します。

備考

使用するバッファーの種類は、Type パラメーターで指定します。 これらの値の意味を次の表に示します。

バッファーの種類 形容
PerRequestExtension SRB 拡張機能の物理アドレスを示します。
DmaBuffer DMA バッファーの物理アドレスを示します。
SRBDataBuffer データ バッファーの物理アドレスを示します。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー strmini.h (Strmini.h を含む)
ライブラリ Stream.lib