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


Функция MmAllocateMappingAddressEx (wdm.h)

Функция MmAllocateMappingAddressEx выделяет системное сопоставление PTE запрошенной длины, которую можно использовать позже для сопоставления произвольных адресов.

Синтаксис

PVOID MmAllocateMappingAddressEx(
  [in] SIZE_T NumberOfBytes,
  [in] ULONG  PoolTag,
  [in] ULONG  Flags
);

Параметры

[in] NumberOfBytes

Предоставляет максимальное количество байтов, которое может охватывать сопоставление.

[in] PoolTag

Указывает четырехзначный тег, используемый для идентификации буфера. Используйте отдельный тег PoolTag для каждого пути кода выделения. Описание тегов пула см. в разделе ExAllocatePoolWithTag.

[in] Flags

Задает флаги для этой операции. Присвойте этому параметру значение нулю или битовой стрелке одного или нескольких из следующих битов флага:

Flag Meaning
MM_MAPPING_ADDRESS_DIVISIBLE Указывает, что адрес сопоставления должен быть делим по размеру сопоставления. Этот флаг полезен для обеспечения соответствия адреса сопоставления определенным требованиям к оборудованию.

Возвращаемое значение

MmAllocateMappingAddressEx возвращает указатель на начало зарезервированного буфера памяти, если операция выполнена успешно; в противном случае возвращает значение NULL.

Замечания

MmAllocateMappingAddressEx предоставляет расширенную версию MmAllocateMappingAddress с дополнительной поддержкой флагов. Эта функция резервирует диапазон системного виртуального адресного пространства, который можно использовать для последующих операций сопоставления с MmMapLockedPagesWithReservedMapping.

Физическая память не выделяется этой функцией; он резервирует только виртуальное адресное пространство. Доступ к зарезервированной памяти невозможно получить, пока не будет сопоставлен с помощью MmMapLockedPagesWithReservedMapping.

Вызывающие пользователи должны предоставить ненулевое значение PoolTag для идентификации выделения.

Диапазон зарезервированных адресов должен быть освобожден с помощью MmFreeMappingAddress , если он больше не нужен.

Очень большие выделения (>= 4 ГБ страниц) завершаются ошибкой. Функция может завершиться ошибкой, если недоступны системные PTEs

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10 версии 2004
заголовка wdm.h
IRQL <=APC_LEVEL

См. также

MmAllocateMappingAddress

MmFreeMappingAddress

MmMapLockedPagesWithReservedMapping

MmUnmapReservedMapping