IPortWaveRTStream::MapAllocatedPages 方法 (portcls.h)

方法 MapAllocatedPages 将以前分配的物理页的列表映射到可从内核模式访问的连续虚拟内存块中。

语法

PVOID MapAllocatedPages(
  [in] PMDL                MemoryDescriptorList,
  [in] MEMORY_CACHING_TYPE CacheType
);

参数

[in] MemoryDescriptorList

指向将映射的 MDL) (内存描述符列表的指针。 可以通过调用 IPortWaveRTStream::AllocatePagesForMdl IPortWaveRTStream::AllocateContiguousPagesForMdl 来分配 MDL

[in] CacheType

指定缓存类型。 将此参数设置为以下 MEMORY_CACHING_TYPE 枚举值之一: MmNonCachedMmCachedMmWriteCombined

返回值

MapAllocatedPages 返回虚拟内存中映射缓冲区的起始地址。 如果 方法无法映射缓冲区,则返回 NULL

注解

由于 Windows 音频堆栈不支持一种机制来表达缓冲区的内存访问对齐要求,音频驱动程序必须为映射的内存缓冲区选择缓存类型,该缓存类型不施加特定于平台的对齐要求。 换句话说,音频驱动程序用于映射内存缓冲区的缓存类型不得对任何特定平台的内存对齐要求做出假设。

此方法将 MDL 中的物理内存页映射到内核模式虚拟内存中。 通常,如果微型端口驱动程序需要对音频缓冲区的散点收集列表进行软件访问,则调用此方法。 在这种情况下,散点收集列表的存储必须由 IPortWaveRTStream::AllocatePagesForMdlIPortWaveRTStream::AllocateContiguousPagesForMdl 方法分配。

WaveRT 微型端口驱动程序不应要求软件访问音频缓冲区本身。

MapAllocatedPages 在操作上类似于 MmMapLockedPagesSpecifyCache 函数。 微型端口驱动程序负责在释放内存之前取消映射内存。 有关详细信息,请参阅 IPortWaveRTStream::UnmapAllocatedPages

要求

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

另请参阅

IPortWaveRTStream

IPortWaveRTStream::AllocateContiguousPagesForMdl

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::UnmapAllocatedPages

MDL

MEMORY_CACHING_TYPE

MmMapLockedPagesSpecifyCache