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
指向变量的指针,该变量接收传输到指定进程的字节数。 此参数是可选的。 如果 lpNumberOfBytesWritten 为 NULL,则忽略参数。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为 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 |