winnt.h (MEMORY_BASIC_INFORMATION 結構)

包含進程虛擬位址空間中某個頁面範圍的相關信息。 VirtualQuery 和 VirtualQueryEx 函式會使用此結構。

語法

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