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_BLOCKHwDeviceExtension 成员中的缓冲区,HW_STREAM_OBJECTHW_TIME_CONTEXT,并将PORT_CONFIGURATION_INFORMATION结构传递给微型驱动程序。

[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)
Library Stream.lib