次の方法で共有


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_BLOCK、HW_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 データ バッファーの物理アドレスを示します。

要件

要件
対象プラットフォーム デスクトップ
Header strmini.h (Strmini.h を含む)
Library Stream.lib