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.AllocationBase 值关联的 *MemoryInformation.RegionSize 值求和来获取地址预留的总大小。

NtQueryVirtualMemoryZwQueryVirtualMemory 是同一 Windows 本机系统服务例程的两个版本。

对于来自内核模式驱动程序的调用,Windows Native System Services 例程的 NtXxxZwXxx 版本在处理和解释输入参数的方式上的行为可能有所不同。 有关例程的 NtXxxZwXxx 版本之间的关系的详细信息,请参阅 使用本机系统服务例程的 Nt 和 Zw 版本

要求

要求
最低受支持的客户端 Windows 2000
目标平台 通用
标头 ntifs.h
Library NtosKrnl.lib
DLL NtosKrnl.exe

另请参阅

MEMORY_BASIC_INFORMATION

MEMORY_INFORMATION_CLASS

POWER_PLATFORM_INFORMATION

ZwQueryVirtualMemory