Поделиться через


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

См. также раздел

MmFreeContiguousMemory