Функция 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 |