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

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

POWER_PLATFORM_INFORMATION