有两个进程,我的一个进程要向另一个进程的某一个地址进行读写操作,当然另一个进程也会向其中读写数据,我怎样保证:当我读写数据时,另一个进程不会这个地址进行读写操作。

解决方案 »

  1.   

    “另一个进程的某个地址”是什么意思?你掌握可靠的概念了吗?你是指的哪一个靠谱的.net知识而言的呢?
      

  2.   


    [DllImport("Kernel32.dll", SetLastError = true)]
    public static extern bool ReadProcessMemory(IntPtr hProcess,IntPtr lpBaseAddress,IntPtr lpBuffer, int dwSize,out int lpNumberOfBytesRead );
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out UIntPtr lpNumberOfBytesWritten);反正就是通过这两个API进读写
      

  3.   

    地址就是IDA Pro 反汇编显示的地址
      

  4.   

    先将另一个进程暂停,就像ollydbg一样,运行完自己的操作后,再让其运行
      

  5.   

    使用WriteProcessMemory的话,防止同步问题需要用命名Mutex。
    也可以通过SendMessage来实现对另一个进程数据的读写,这个最终会队列化,不存在同步问题。