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


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