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 中的所有物理内存页都位于 LowAddressHighAddress 参数指定的地址范围内。 如果有足够的内存可用,则内存分配是请求的大小,四舍五入到下一页;否则,调用将失败。

在系统运行一段时间后,系统的非分页内存池往往会碎片化,这会增加分配大型连续物理内存块的请求失败的可能性。 如果音频设备的 DMA 控制器不需要物理内存页是连续的,则驱动程序必须改为调用 IPortWaveRTStream::AllocatePagesForMdl 。 与 不同 AllocateContiguousPagesForMdlAllocatePagesForMdl 方法不受内存碎片的影响。

方法 AllocateContiguousPagesforMdl 分配锁定 (非分页) 但未映射的内存页。 如果微型端口驱动程序需要软件访问此内存,微型端口驱动程序必须随后调用 IPortWaveRTStream::MapAllocatedPages ,以将页面映射到内核模式地址空间。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 通用
标头 portcls.h
IRQL 被动级别

另请参阅

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages