MmAllocateContiguousMemoryEx function (wdm.h)
The MmAllocateContiguousMemoryEx function allocates a range of physically contiguous non-paged memory and returns its virtual address.
Syntax
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
);
Parameters
[in] NumberOfBytes
On entry, supplies the number of bytes to allocate. On successful return, receives the amount allocated.
[in] LowestAcceptableAddress
Supplies the lowest physical address which is valid for the allocation. For example, if the device can only reference physical memory in the 8M to 16MB range, this value would be set to 0x800000 (8Mb).
[in] HighestAcceptableAddress
Supplies the highest physical address which is valid for the allocation. For example, if the device can only reference physical memory below 16MB, this value would be set to 0xFFFFFF (16Mb - 1).
[in] BoundaryAddressMultiple
Supplies the physical address multiple this allocation must not cross.
[in] PreferredNode
Supplies the preferred node the allocation should be made from if pages are available on that node. MM_ANY_NODE_OK is used to signify no node preference.
[in] Protect
Supplies the desired protection (including cache type) for the mapping.
[in, optional] PartitionObject
If specified, supplies a partition object to allocate the physical memory from. If not specified, the memory will come from the system partition.
[in] Tag
Supplies the tag for the allocation.
[in] Flags
Various flags:
- MM_ALLOCATE_CONTIGUOUS_MEMORY_FAST_ONLY - Allocate desired contiguous memory only if it can be satisfied quickly. Fail if prolonged physical memory searching and trading must take place to satisfy the allocation.
[out] BaseAddress
On success, receives the base virtual address of the contiguous memory.
Return value
Returns an NTSTATUS code.
Remarks
This memory must be freed with MmFreeContiguousMemory.
Requirements
Requirement | Value |
---|---|
Minimum supported server | Windows Server 2022 |
Header | wdm.h |
IRQL | <= DISPATCH_LEVEL |