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