MEMORY_BASIC_INFORMATION 结构 (ntifs.h)

包含有关进程的虚拟地址空间中的页范围的信息。 ZwQueryVirtualMemory 例程使用此结构。

语法

typedef struct _MEMORY_BASIC_INFORMATION {
  PVOID  BaseAddress;
  PVOID  AllocationBase;
  ULONG  AllocationProtect;
  USHORT PartitionId;
  SIZE_T RegionSize;
  ULONG  State;
  ULONG  Protect;
  ULONG  Type;
} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;

成员

BaseAddress

指向页区域的基址的指针。

AllocationBase

指向已分配页范围的基址的指针。 BaseAddress 成员指向的页面包含在此分配范围内。

AllocationProtect

最初分配区域时的内存保护选项。 此成员可以是 wdm.h 中定义的下列常量之一;如果调用方没有访问权限,则为 0。

含义
PAGE_NOACCESS 0x01 不允许访问页面区域。 尝试在区域内读取、写入或执行会导致访问冲突。
PAGE_EXECUTE 0x10 允许执行对页面区域的访问权限。 尝试在区域内读取或写入会导致访问冲突。
PAGE_READONLY 0x02 允许对页面区域进行只读和执行访问。 尝试在区域中写入会导致访问冲突。
PAGE_READWRITE 0x04 允许读取、写入和执行对页面区域的访问权限。 如果允许对基础节进行写入访问,则共享页面的单个副本。 否则,页面共享为只读/写入时复制。
PAGE_GUARD 0x100 允许读取、写入和执行对页面区域的访问权限;但是,对区域的访问会导致在主题过程中引发“进入保护区域”条件。
PAGE_NOCACHE 0x200 禁止在数据缓存中放置已提交的页。
PAGE_WRITECOMBINE 0x400 禁用将已提交页放入数据缓存中,同时合并写入操作。

PartitionId

预留给系统使用。

RegionSize

区域的大小(以字节为单位),从基址开始,其中所有页面都具有相同的属性。

State

区域中页面的状态。 此成员可以是以下值之一。

状态 含义
MEM_COMMIT 0x1000 指示已为其分配物理存储的已提交页,无论是在内存中还是在磁盘上的分页文件中。
MEM_FREE 0x10000 指示调用进程无法访问且可供分配的可用页。
MEM_RESERVE 0x2000 指示保留页,其中保留进程的虚拟地址空间范围,而不分配任何物理存储。

Protect

区域中页面的访问保护。 此成员是为 AllocationProtect 成员列出的值之一。

Type

区域中页面的类型。 定义了以下类型。

类型 含义
MEM_IMAGE 0x1000000 指示区域中的内存页映射到图像部分的视图中。
MEM_MAPPED 0x40000 指示区域中的内存页映射到节的视图中。
MEM_PRIVATE 0x20000 指示区域中的内存页是专用 (,即不由) 的其他进程共享。

要求

要求
最低受支持的客户端 Windows 10
标头 ntifs.h

另请参阅

ZwQueryVirtualMemory