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


Функция 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 версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10
целевая платформа Всеобщий
заголовка ntifs.h
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe

См. также

POWER_PLATFORM_INFORMATION