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