WriteProcessMemory 函数 (memoryapi.h)

将数据写入到指定进程中的内存区域。 要写入的整个区域必须可访问,否则操作将失败。

语法

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

parameters

[in] hProcess

要修改的进程内存的句柄。 句柄必须具有对进程的PROCESS_VM_WRITE和PROCESS_VM_OPERATION访问权限。

[in] lpBaseAddress

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

[in] lpBuffer

指向缓冲区的指针,该缓冲区包含要写入指定进程的地址空间中的数据。

[in] nSize

要写入指定进程的字节数。

[out] lpNumberOfBytesWritten

指向变量的指针,该变量接收传输到指定进程的字节数。 此参数是可选的。 如果 lpNumberOfBytesWrittenNULL,则忽略参数。

返回值

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

如果函数失败,则返回值为 0(零)。 要获得更多的错误信息,请调用 GetLastError。 如果请求的写入操作交叉到无法访问的进程区域,函数将失败。

注解

WriteProcessMemory 将数据从当前进程中的指定缓冲区复制到指定进程的地址范围。 任何具有 PROCESS_VM_WRITE 句柄且PROCESS_VM_OPERATION访问要写入的进程的进程都可以调用 函数。 通常(但并非总是)正在调试包含正在写入的地址空间的进程。

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

要求

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

另请参阅

调试函数

用于调试的流程函数

ReadProcessMemory

VirtualAllocEx