3

私のC#プログラムはAnyCPUオプションでコンパイルされており、P/Invokeを使用してネイティブAPIを次のように呼び出しています。

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

私のゲストは、私のc#プログラムはanycpuでコンパイルされているので、32ビットプロセスと64ビットプロセスの両方から読み取りおよび書き込みを行うことができますか?または問題がありますか?私は32ビットOSしかないので、テストできないので、これを求めています。どうも

4

1 に答える 1

3

32ビットOSでは、すべてのプロセスが32ビットであるため、問題は発生しません。64ビットOSでは、AnyCPUプロセスは64ビットを実行し、32ビットプロセスとの不一致のみが発生する可能性があります。ただし、32ビットアドレスを64ビットポインタに格納することは問題ありません。32ビットプロセスから64ビットプロセスでメモリの読み取り/書き込みを行おうとすると、スタックします。しかし、あなたは反対のことをしているので、問題はありません。

于 2011-07-03T16:34:48.500 に答える