IPortWaveRTStream::AllocateContiguousPagesForMdl 方法(portcls.h)
AllocateContiguousPagesForMdl
方法分配连续、非分页、物理内存页的列表,并返回指向描述它们的内存描述符列表(MDL)的指针。
语法
PMDL AllocateContiguousPagesForMdl(
[in] PHYSICAL_ADDRESS LowAddress,
[in] PHYSICAL_ADDRESS HighAddress,
[in] SIZE_T TotalBytes
);
参数
[in] LowAddress
指定可从中分配 MDL 存储的地址范围的低端。
[in] HighAddress
指定可从中分配 MDL 存储的地址范围的高端。
[in] TotalBytes
指定要为 MDL 分配的字节总数。 此方法始终分配整型内存页数。
返回值
AllocateContiguousPagesForMdl
返回指向描述物理内存页列表的 MDL(PMDL)的指针。 如果方法无法分配请求的缓冲区,它将返回 NULL。
言论
驱动程序调用此方法以分配物理连续内存页块。 MDL 中的所有物理内存页都位于 LowAddress 指定的地址范围内,HighAddress 参数。 如果有足够的内存可用,则内存分配是请求的大小向上舍入到下一页;否则,调用将失败。
在系统运行一段时间后,系统的非分页内存池往往变得碎片化,这会增加请求分配大量连续物理内存的概率。 如果音频设备的 DMA 控制器不需要连续的物理内存页,驱动程序必须改为调用 IPortWaveRTStream::AllocatePagesForMdl。 与 AllocateContiguousPagesForMdl
不同,AllocatePagesForMdl 方法不受内存碎片的影响。
AllocateContiguousPagesforMdl
方法分配锁定(非分页)但未映射的内存页。 如果微型端口驱动程序需要软件访问此内存,微型端口驱动程序必须随后调用 IPortWaveRTStream::MapAllocatedPages 将页面映射到内核模式地址空间。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
目标平台 | 普遍 |
标头 | portcls.h |
IRQL | 被动级别 |