VirtualQueryEx 函式 (memoryapi.h)
擷取指定進程之虛擬位址空間內頁面範圍的相關資訊。
語法
SIZE_T VirtualQueryEx(
[in] HANDLE hProcess,
[in, optional] LPCVOID lpAddress,
[out] PMEMORY_BASIC_INFORMATION lpBuffer,
[in] SIZE_T dwLength
);
參數
[in] hProcess
查詢其記憶體資訊的處理常式控制碼。 控制碼必須以 PROCESS_QUERY_INFORMATION 存取權限開啟,讓使用控制碼從進程物件讀取資訊。 如需詳細資訊,請參閱 處理安全性和存取權限。
[in, optional] lpAddress
要查詢之頁面區域的基底位址指標。 這個值會四捨五入至下一個頁面界限。 若要判斷主機電腦上的頁面大小,請使用 GetSystemInfo 函式。
如果 lpAddress 指定進程可存取的最高記憶體位址上方的位址,則函式會失敗, 並ERROR_INVALID_PARAMETER。
[out] lpBuffer
傳回指定頁面範圍相關資訊 之MEMORY_BASIC_INFORMATION 結構的指標。
[in] dwLength
lpBuffer參數所指向的緩衝區大小,以位元組為單位。
傳回值
傳回值是資訊緩衝區中傳回的實際位元組數目。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 可能的錯誤值包括 ERROR_INVALID_PARAMETER。
備註
VirtualQueryEx 提供連續頁面區域的相關資訊,從共用下列屬性的指定位址開始:
- 所有頁面的狀態都相同 (MEM_COMMIT、MEM_RESERVE、MEM_FREE、MEM_PRI加值稅E、MEM_MAPPED或MEM_IMAGE) 。
- 如果初始頁面沒有可用,區域中的所有頁面都是由單一呼叫 VirtualAlloc、MapViewOfFile或下列其中一個擴充版本的這些函式所建立之頁面的相同初始配置:VirtualAllocEx、VirtualAllocExNuma、MapViewOfFileEx、MapViewOfFileExNuma。
- 授與所有頁面的存取權相同 (PAGE_READONLY、PAGE_READWRITE、PAGE_NOACCESS、PAGE_WRITECOPY、PAGE_EXECUTE、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE、PAGE_EXECUTE_WRITECOPY、PAGE_GUARD或PAGE_NOCACHE) 。
如果修改了共用寫入時複製頁面,它就會變成修改頁面的程式私用。 不過,VirtualQueryEx函式會繼續針對資料檢視) MEM_MAPPED (或MEM_IMAGE (來報告可執行影像檢視) 而不是MEM_PRI加值稅E等頁面。 若要偵測特定頁面是否已發生寫入複製,請使用VirtualLock函式存取頁面或將其鎖定,以確定頁面位於記憶體中,然後使用QueryWorkingSet 或 QueryWorkingSetEx函式檢查頁面延伸工作集資訊中的共用位。 如果 共用 位清楚,則頁面為私用。
需求
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | memoryapi.h (包括 Windows.h、Memoryapi.h) |
程式庫 | onecore.lib |
DLL | Kernel32.dll |