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


Функция NtQueryVirtualMemory (ntifs.h)

Подпрограмма ntQueryVirtualMemory определяет состояние, защиту и тип области страниц в виртуальном адресном пространстве указанного процесса.

Синтаксис

__kernel_entry NTSYSCALLAPI NTSTATUS NtQueryVirtualMemory(
  [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

Обработайте процесс, в контексте которого страницы будут запрашиваться. Используйте макрос NtCurrentProcess, чтобы указать текущий процесс.

[in, optional] BaseAddress

Базовый адрес области страниц, запрашиваемой. Это значение округляется до следующей границы адреса страницы узла.

[in] MemoryInformationClass

Класс сведений о памяти, о котором требуется получить информацию. В настоящее время единственным поддерживаемым значением MEMORY_INFORMATION_CLASS является MemoryBasicInformation.

[out] MemoryInformation

Указатель на буфер, получающий указанные сведения. Формат и содержимое буфера зависят от класса информации, указанного в параметре MemoryInformationClass. Если значение MemoryBasicInformation передается MemoryInformationClass, значение параметра MemoryInformation является структурой MEMORY_BASIC_INFORMATION.

[in] MemoryInformationLength

Указывает длину буфера, на который MemoryInformation указывает длина буфера.

[out, optional] ReturnLength

Необязательный указатель, который, если указан, получает количество байтов, помещенных в буфер MemoryInformation.

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

Возвращает STATUS_SUCCESS, если вызов выполнен успешно. Если вызов завершается сбоем, возможные коды ошибок включают следующие:

Возвращаемый код Описание
STATUS_ACCESS_DENIED Вызывающий объект имел недостаточно прав доступа для выполнения запрошенного действия.
STATUS_ACCESS_VIOLATION Указанный базовый адрес является недопустимым виртуальным адресом.
STATUS_INFO_LENGTH_MISMATCH Буфер MemoryInformation больше MemoryInformationLength.
STATUS_INVALID_INFO_CLASS Указанный параметр MemoryInformationClass недопустим.
STATUS_INVALID_PARAMETER Указанный базовый адрес находится за пределами диапазона доступных адресов.

Замечания

ZwQueryVirtualMemory определяет состояние первой страницы в регионе, а затем сканирует последующие записи в карте адресов процесса с базового адреса вверх до тех пор, пока не будет сканирован весь диапазон страниц или до тех пор, пока страница с несоединяющим набором атрибутов не будет обнаружена. Атрибуты региона, длина области страниц с соответствующими атрибутами и соответствующее значение состояния возвращаются.

Если весь регион страниц не имеет соответствующего набора атрибутов, то вложенные регионы в одном резервировании адресов будут возвращены по отдельности. Они будут иметь то же значение *MemoryInformation.AllocationBase, их отдельные размеры будут находиться в *MemoryInformation.RegionSize, а общий размер резервирования адресов можно получить путем суммирования всех *MemoryInformation.RegionSize значений, связанных с определенным значением *MemoryInformation.AllocationBase.

NtQueryVirtualMemory и ZwQueryVirtualMemory являются двумя версиями одной подпрограммы системных служб Windows Native.

Для вызовов драйверов в режиме ядра NtXxx и ZwXxx версии подпрограммы Windows Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.

Требования

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

См. также

MEMORY_BASIC_INFORMATION

MEMORY_INFORMATION_CLASS

POWER_PLATFORM_INFORMATION

ZwQueryVirtualMemory