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 结构中传递的大小。 然后,类驱动程序将指针传递给 HwDeviceExtensionHW_STREAM_REQUEST_BLOCKHW_STREAM_OBJECTHW_TIME_CONTEXT中的缓冲区,并 PORT_CONFIGURATION_INFORMATION 它传递给微型驱动程序的结构。

[in, optional] HwSRB

指定流请求块。 仅当 Type 参数具有值 SRBDataBuffer 时才使用此参数,否则 HwSRBNULL。 此参数是可选的。

[in] VirtualAddress

指定要转换的虚拟地址。

[in] Type

指定由 virtualAddress 指向的缓冲区的类型。 此值可以是 PerRequestExtension、DmaBuffer 或 SRBDataBuffer。

[out] Length

指定缓冲区的长度(以字节为单位)。

返回值

StreamClassGetPhysicalAddress 将转换后的虚拟地址作为物理内存地址返回。

言论

要使用的缓冲区类型在 Type 参数中指定。 下表显示了这些值的含义。

缓冲区类型 描述
PerRequestExtension 指示 SRB 扩展的物理地址。
DmaBuffer 指示 DMA 缓冲区的物理地址。
SRBDataBuffer 指示数据缓冲区的物理地址。

要求

要求 价值
目标平台 桌面
标头 strmini.h (包括 Strmini.h)
Stream.lib