ReadProcessMemory 报错 299 解决办法

mac2024-04-21  9

最近在做一个小项目,其他需要读取其他进程空间的数据。用到了ReadProcessMemory() 系统函数。在调试过程中,始终无法正常获取数据。通过,调用GetLastError()函数后,得到错误码为:299 .查询了299错误码的意义是,“〖299〗-仅完成部分的 ReadProcessMemoty 或 WriteProcessMemory 请求。” 于是,尝试着把接收缓冲区改大,结果还是一样,报同样的错。后来在网上看了说是没有读取那块内存区域的权限,需要修改读取权限。

result = VirtualProtectEx(process, (void*)_item, 512 * sizeof(wchar_t), PAGE_READWRITE, &dwOldProt);

添加上面的语句后,错误依然。看来这个问题有点麻烦。。。 后来一想,只读取了一部分?有没有可能更操作系统的位数相关呢。我的程序是x86(32位)的,然而操作系统是64位的。于是,就把程序更改为x64的,再调试,奇迹发生了。成功获取其他进程空间的数据!!! 就是上面下拉框里面选择x64啦,好了终于搞定了。 遇到问题,记录一下,希望能帮助到恰好需要的人!

最新回复(0)