winnt.h) (MEMORY_BASIC_INFORMATION 结构

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

语法

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

成员

BaseAddress

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

AllocationBase

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

AllocationProtect

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

PartitionId

RegionSize

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

State

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

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

Protect

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

Type

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

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

注解

若要使调试器能够调试在不同体系结构上运行的目标 (32 位与 64 位) ,请使用此结构的显式形式之一。

typedef struct _MEMORY_BASIC_INFORMATION32 {
    DWORD BaseAddress;
    DWORD AllocationBase;
    DWORD AllocationProtect;
    DWORD RegionSize;
    DWORD State;
    DWORD Protect;
    DWORD Type;
} MEMORY_BASIC_INFORMATION32, *PMEMORY_BASIC_INFORMATION32;

typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 {
    ULONGLONG BaseAddress;
    ULONGLONG AllocationBase;
    DWORD     AllocationProtect;
    DWORD     __alignment1;
    ULONGLONG RegionSize;
    DWORD     State;
    DWORD     Protect;
    DWORD     Type;
    DWORD     __alignment2;
} MEMORY_BASIC_INFORMATION64, *PMEMORY_BASIC_INFORMATION64;

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 winnt.h (包括 Windows.h)

另请参阅

VirtualAlloc

VirtualQuery

VirtualQueryEx