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_BLOCK、HW_STREAM_OBJECT、HW_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) |
| 库 | Stream.lib |