MmAllocateContiguousMemoryEx 函数 (wdm.h)
MmAllocateContiguousMemoryEx 函数分配一系列物理连续的非分页内存并返回其虚拟地址。
语法
NTSTATUS MmAllocateContiguousMemoryEx(
[in] PSIZE_T NumberOfBytes,
[in] PHYSICAL_ADDRESS LowestAcceptableAddress,
[in] PHYSICAL_ADDRESS HighestAcceptableAddress,
[in] PHYSICAL_ADDRESS BoundaryAddressMultiple,
[in] NODE_REQUIREMENT PreferredNode,
[in] ULONG Protect,
[in, optional] PVOID PartitionObject,
[in] ULONG Tag,
[in] ULONG Flags,
[out] PVOID *BaseAddress
);
参数
[in] NumberOfBytes
在条目中,提供要分配的字节数。 成功返回时,接收分配的金额。
[in] LowestAcceptableAddress
提供对分配有效的最低物理地址。 例如,如果设备只能引用 8M 到 16MB 范围内的物理内存,此值将设置为0x800000(8Mb)。
[in] HighestAcceptableAddress
提供对分配有效的最高物理地址。 例如,如果设备只能引用低于 16MB 的物理内存,此值将设置为0xFFFFFF(16Mb - 1)。
[in] BoundaryAddressMultiple
提供此分配的多个物理地址不得交叉。
[in] PreferredNode
提供应从该节点上提供页面时应从中分配的首选节点。 MM_ANY_NODE_OK用于表示无节点首选项。
[in] Protect
为映射提供所需的保护(包括缓存类型)。
[in, optional] PartitionObject
如果指定,则提供用于分配物理内存的分区对象。 如果未指定,内存将来自系统分区。
[in] Tag
提供分配的标记。
[in] Flags
各种标志:
- MM_ALLOCATE_CONTIGUOUS_MEMORY_FAST_ONLY - 仅当可快速满足所需的连续内存时,才分配所需的连续内存。 如果长时间的物理内存搜索和交易必须进行才能满足分配,则失败。
[out] BaseAddress
成功后,接收连续内存的基虚拟地址。
返回值
返回 NTSTATUS 代码。
言论
必须使用 MmFreeContiguousMemory释放此内存。
要求
要求 | 价值 |
---|---|
支持的最低服务器 | Windows Server 2022 |
标头 | wdm.h |
IRQL | <= DISPATCH_LEVEL |