Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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 |