ReadProcessMemory函数在指定的进程中读取内存。要读取的整个区域必须可访问,否则操作失败。
BOOL ReadProcessMemory(
HANDLE 【hProcess】, | //读取内存的进程的句柄 |
LPCVOID 【lpBaseAddress】, | //地址开始阅读 |
LPVOID 【lpBuffer】, | //缓冲区地址放置读取数据 |
DWORD 【服务提供商】, | //要读取的字节数 |
LPDWORD 【lpNumberOfBytesRead】 | //读取的字节数的地址 |
); |
参数
【hProcess】
标识读取存储器的进程的打开句柄。该句柄必须具有进程的PROCESS_VM_READ访问权限。
【lpBaseAddress】
指向要读取的指定进程中的基地址。在发生任何数据传输之前,系统将验证指定大小的基地址和内存中的所有数据都可访问以进行读取访问。如果是这种情况,该函数继续进行;否则,该函数失败。
【lpBuffer】
指向从指定进程的地址空间接收内容的缓冲区。
【服务提供商】
指定从指定进程读取的请求的字节数。
【lpNumberOfBytesRead】
指向传输到指定缓冲区的实际字节数。如果【lpNumberOfBytesRead】为NULL,则忽略该参数。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
如果所请求的读取操作跨越进程的无法访问的区域,该函数将失败。
备注
ReadProcessMemory将指定地址范围内的数据从指定进程的地址空间复制到当前进程的指定缓冲区。任何具有PROCESS_VM_READ访问句柄的进程都可以调用该函数。读取地址空间的进程通常但不一定被调试。
要读取的整个区域都必须可以访问。如果没有,则功能如前所述失败。
也可以看看