[DllImport("kernel32.dll ")]
        static extern bool ReadProcessMemory(int hProcess, IntPtr lpBaseAddress, out int lpBuffer, int nSize, out int lpNumberOfBytesRead);
这个API函数中的这个函数有五个参数
hProcess:进程句柄lpBaseAddress:读出数据的地址lpBuffer:存放读取数据的地址nSize:读出的数据大小lpNumberOfBytesRead:数据的实际大小第二个参数如何获得,也就是内存地址如何获得,好像要用到指针不知道怎么用,我现在能获取到文件的句柄,就是不知道这个函数该如何操作。请高手给个指点,最好有代码!!谢了

解决方案 »

  1.   

    http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/8ed8bb56-07d9-4df8-bdb1-357e88cffb01
      

  2.   

    怎么又出现了 这个问题???
    风行下载安装 
    皮皮播放器下载
    uusee网络电视2010下载
      

  3.   

    第二个是一个指针,你想读哪个地址你自己才知道。
    传入方式:
    new IntPtr(地址值)
      

  4.   

    在C#使用int作为那个参数就行。
      

  5.   

    那我来问你一个word文件该如何获取他的地址值
      

  6.   


            //读内存
            [DllImportAttribute("kernel32.dll", EntryPoint = "ReadProcessMemory")]
            public static extern bool ReadProcessMemory
                (
                    IntPtr hProcess,            // 需要读取内存信息的目标进程的句柄
                    IntPtr lpBaseAddress,       // 需要读取信息的目标进程的基地址(内存指针)
                    IntPtr lpBuffer,            // 需要读取的数据
                    int nSize,                  // 需要读取的字节数
                    IntPtr lpNumberOfBytesRead
                );
      

  7.   

    你既然不知道你要读的数据相对于这个Process的偏移问什么要用这个方法?
      

  8.   

    [DllImport( "kernel32.dll ")] 
    static   extern   bool   ReadProcessMemory(uint   hProcess,   IntPtr   lpBaseAddress,IntPtr   lpBuffer,   uint   nSize,   ref   uint   lpNumberOfBytesRead); 
    private   void   button1_Click(object   sender,   EventArgs   e) 

    byte[] buffer=new   byte[4]; 
    IntPtr bufferAddress=Marshal.UnsafeAddrOfPinnedArrayElement(buffer,   0);  
    uint   vNumberOfBytesRead=0; 
    uint   pro2 =1;  
    ReadProcessMemory(pro2,(IntPtr)0xc0890c0,vBytesAddress,(uint)buffer.Length,   ref   vNumberOfBytesRead); 
    int i=Marshal.ReadInt32(bufferAddress);   

     
    Marshal.ReadInt32((IntPtr)地址);
      

  9.   

    我也知道你这么写,关键是我要把刚刚要保存的数据的内存中读取出来,(IntPtr)0xc0890c0就是这个的值也就是内存地址吧,我想得到我这个要保存的文件的地址该如何操作,现在我事先不知道这个地址的啊
      

  10.   

    我感觉你的函数有问题。我见过的句柄在c++里是handle,在c#是intptr。你是不是接口转换错误了。
    你把原来的c++的函数接口说明发出来看看,