TL調用VirtualQueryEx功能; DR:如果我請VirtualQueryEx
上的32位的過程從一個64位的過程中,應使用MEMORY_BASIC_INFORMATION
或MEMORY_BASIC_INFORMATION32
?從64位進程上的32位的一個
嗨!
我有一個64位應用程序讀取其他進程的內存(OpenProcess
,VirtualQueryEx
,然後ReadProcessMemory
)。我想知道如果我應該做一個特殊的檢查,看看其他進程是否是32位的。
我的代碼是這樣的:
MEMORY_BASIC_INFORMATION info;
SIZE_T r = VirtualQueryEx((HANDLE) handle,
(void *) 0x0,
&info,
sizeof(info));
的事情是,the documentation of MEMORY_BASIC_INFORMATION這樣說:
要啓用一個調試器來調試是在不同的 架構上運行的目標(32比特與64比特),使用這種結構的明確形式之一 。
這兩個進程在同一臺計算機上運行(相同的架構?),但一個是32位進程,另一個是64位的進程。
我在64位的Windows 8測試這個程序和它的作品對我的測試案例(搜索在32位進程內存的特定字符串),但我不希望它以後適得其反。
備註:我知道this answer,這就是爲什麼我首先提出這個問題。我使用32位二進制文件進行了測試,結果無誤。
不,他們談論的調試功能[這一個](http://msdn.microsoft.com/en-us/library/windows/硬件/ ff553502%28V = vs.85%29.aspx)。您無法在32位程序中可靠地使用VirtualQueryEx()進行64位進程。 – 2014-11-05 22:30:40
那麼'VirtualQueryEx'不被視爲調試器?該文檔看起來不明確:( – Marco 2014-11-06 02:07:46