2011-07-03 81 views
3

我的C#編譯程序時AnyCPU選項,我使用的P/Invoke調用本地的API是這樣的:C#AnyCPU和Read/WriteProcessMemory的

[DllImport("kernel32.dll", SetLastError = true)] 
     static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out UIntPtr lpNumberOfBytesWritten); 

我guestion是,可以讀取和寫入我的C#程序到32位和64位進程,因爲它與anycpu編譯?或會有問題?我問這是因爲我只有32位的操作系統,所以我無法測試它。 Thx

回答

2

在32位操作系統上,所有進程都是32位,因此不會出現問題。在64位操作系統上,您的AnyCPU進程運行64位,唯一可能的不匹配是32位進程。但將32位地址存儲在64位指針中沒有問題。如果您嘗試從32位進程的64位進程讀取/寫入內存,則會卡住。但是既然你做了相反的事情就沒有問題了。

相關問題