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 枚举值之一:mmNonCached、mmCached或 mmWriteCombined。
返回值
MapAllocatedPages
返回虚拟内存中映射缓冲区的起始地址。 如果该方法无法映射缓冲区,它将返回 null 。
言论
由于 Windows 音频堆栈不支持一种机制来表达缓冲区的内存访问对齐要求,因此音频驱动程序必须为映射的内存缓冲区选择缓存类型,这些缓存类型不会施加特定于平台的对齐要求。 换句话说,音频驱动程序用于映射内存缓冲区的缓存类型不得假设任何特定平台的内存对齐要求。
此方法将 MDL 中的物理内存页映射到内核模式虚拟内存。 通常,如果微型端口驱动程序需要软件访问音频缓冲区的散点收集列表,则会调用此方法。 在这种情况下,散点收集列表的存储必须由 IPortWaveRTStream::AllocatePagesForMdl 或 IPortWaveRTStream::AllocateContiguousPagesForMdl 方法分配。
WaveRT 微型端口驱动程序不应要求软件访问音频缓冲区本身。
MapAllocatedPages
与 MmMapLockedPagesSpecifyCache 函数类似。 微型端口驱动程序负责在释放内存之前取消映射内存。 有关详细信息,请参阅 IPortWaveRTStream::UnmapAllocatedPages。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 在 Windows Vista 和更高版本的 Windows作系统中可用。 |
目标平台 | 普遍 |
标头 | portcls.h |
IRQL | 被动级别。 |
另请参阅
IPortWaveRTStream::AllocateContiguousPagesForMdl
IPortWaveRTStream::AllocatePagesForMdl