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