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的 HwDeviceExtension 成员中的缓冲区,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) |
Library | Stream.lib |