ReadProcessMemory 函数 (memoryapi.h)

语法

BOOL ReadProcessMemory(
  [in]  HANDLE  hProcess,
  [in]  LPCVOID lpBaseAddress,
  [out] LPVOID  lpBuffer,
  [in]  SIZE_T  nSize,
  [out] SIZE_T  *lpNumberOfBytesRead
);

parameters

[in] hProcess

包含正在读取的内存的进程句柄。 句柄必须具有对进程的PROCESS_VM_READ访问权限。

[in] lpBaseAddress

指向从中读取的指定进程中基址的指针。 在进行任何数据传输之前,系统会验证指定大小的基址和内存中的所有数据是否可供读取访问,如果无法访问,则函数将失败。

[out] lpBuffer

指向从指定进程的地址空间接收内容的缓冲区的指针。

[in] nSize

要从指定进程读取的字节数。

[out] lpNumberOfBytesRead

指向变量的指针,该变量接收传输到指定缓冲区的字节数。 如果 lpNumberOfBytesReadNULL,则忽略 参数。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为 0(零)。 要获得更多的错误信息,请调用 GetLastError。

如果请求的读取操作交叉到无法访问的进程区域,函数将失败。

注解

ReadProcessMemory 将指定地址范围中的数据从指定进程的地址空间复制到当前进程的指定缓冲区中。 具有PROCESS_VM_READ访问权限的句柄的任何进程都可以调用函数。

要读取的整个区域必须可访问,如果无法访问,则函数将失败。

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 memoryapi.h (包括 Windows.h)
Library onecore.lib
DLL Kernel32.dll

另请参阅

调试函数OpenProcess用于调试的流程函数VirtualAllocExWriteProcessMemory