Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подпрограмма 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 |