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

另请参阅

mmFreeContiguousMemory