Функция 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
Предоставляет наименьший физический адрес, допустимый для выделения. Например, если устройство может ссылаться только на физическую память в диапазоне от 8 до 16 МБ, это значение будет равно 0x800000 (8 Мб).
[in] HighestAcceptableAddress
Предоставляет максимальный физический адрес, допустимый для выделения. Например, если устройство может ссылаться только на физическую память менее 16 МБ, это значение будет иметь значение 0xFFFFFF (16 Мб – 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 |