C # AnyCPU и Read / WriteProcessMemory - PullRequest
3 голосов
/ 03 июля 2011

Моя программа на C # скомпилирована с опцией AnyCPU, и я использую P / Invoke для вызова native apis следующим образом:

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

Могу ли я предположить, может ли моя программа на C # читать и записывать как в 32-битные, так и в64-битные процессы с момента его компиляции с anycpu?или были бы проблемы?Я спрашиваю об этом, потому что у меня только 32-битная ОС, поэтому я не могу это проверить.Thx

1 Ответ

2 голосов
/ 03 июля 2011

В 32-битной ОС все процессы 32-битные, поэтому проблем не возникает. В 64-битной ОС ваш процесс AnyCPU работает 64-битным, и единственное возможное несоответствие - 32-битные процессы. Но не проблема хранить 32-битный адрес в 64-битном указателе. Если вы пытаетесь читать / записывать память в 64-битном процессе из 32-битного процесса, вы застрянете. Но поскольку ты делаешь обратное, нет проблем.

...