Функция ZwQueryVirtualMemory (ntifs.h)
Подпрограмма ZwQueryVirtualMemory определяет состояние, защиту и тип области страниц в виртуальном адресном пространстве субъекта.
Синтаксис
NTSYSAPI NTSTATUS ZwQueryVirtualMemory(
[in] HANDLE ProcessHandle,
[in, optional] PVOID BaseAddress,
[in] MEMORY_INFORMATION_CLASS MemoryInformationClass,
[out] PVOID MemoryInformation,
[in] SIZE_T MemoryInformationLength,
[out, optional] PSIZE_T ReturnLength
);
Параметры
[in] ProcessHandle
Дескриптор для процесса, в контексте которого находятся страницы для запроса. Используйте макрос ZwCurrentProcess , чтобы указать текущий процесс.
[in, optional] BaseAddress
Базовый адрес области запрашиваемых страниц. Это значение округляется до следующей границы адреса хост-страницы.
[in] MemoryInformationClass
Класс сведений о памяти, о котором требуется получить сведения. В настоящее время единственным поддерживаемым значением MEMORY_INFORMATION_CLASS является MemoryBasicInformation.
[out] MemoryInformation
Указатель на буфер, получающий указанные сведения. Формат и содержимое буфера зависят от указанного класса информации, указанного в параметре MemoryInformationClass . Если значение MemoryBasicInformation передается в MemoryInformationClass, значение параметра MemoryInformation представляет собой MEMORY_BASIC_INFORMATION структуру.
[in] MemoryInformationLength
Указывает длину буфера сведений о памяти в байтах.
[out, optional] ReturnLength
Необязательный указатель, который, если он указан, получает количество байтов, помещенных в буфер сведений о памяти.
Возвращаемое значение
Возвращает STATUS_SUCCESS, если вызов выполнен успешно. Если вызов завершается сбоем, возможны следующие коды ошибок:
Код возврата | Описание |
---|---|
STATUS_INVALID_PARAMETER | Указанный базовый адрес выходит за пределы диапазона доступных адресов. |
STATUS_ACCESS_DENIED | У вызывающего объекта недостаточно прав доступа для выполнения запрошенного действия. |
STATUS_INFO_LENGTH_MISMATCH | Буфер MemoryInformation больше , чем MemoryInformationLength. |
STATUS_INVALID_INFO_CLASS | Значение, отличное от MemoryBasicInformation , было передано параметру MemoryInformationClass . |
Комментарии
ZwQueryVirtualMemory определяет состояние первой страницы в регионе, а затем сканирует последующие записи в карте адресов процесса от базового адреса вверх до тех пор, пока не будет отсканирован весь диапазон страниц или не будет обнаружена страница с несовпадающим набором атрибутов. Возвращаются атрибуты региона, длина области страниц с соответствующими атрибутами и соответствующее значение состояния.
Если вся область страниц не имеет соответствующего набора атрибутов, значение параметра ReturnLength можно использовать для вычисления адреса и длины области страниц, которая не была проверена.
NtQueryVirtualMemory и ZwQueryVirtualMemory — это две версии одной и той же подпрограммы windows Native System Services.
Для вызовов из драйверов режима ядра версии NtXxx**** и ZwXxx**** подпрограммы windows Native System Services могут вести себя по-разному, обрабатывая и интерпретируемые входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |