C++ WinAPI ReadProcessMemory

C++ WinAPI ReadProcessMemory

本文关键字:ReadProcessMemory WinAPI C++      更新时间:2023-10-16

我刚刚开始学习Winapi,我偶然发现了函数的不同变量。现在,我正在为ReadProcessMemory挣扎。代码是:

ReadProcessMemory(phandle, (LPVOID)address, &value , sizeof(value), 0);

现在,我知道第一个参数是该过程的处理方法,但我不明白为什么第二个参数(指向基本地址指针)必须是地址的void( LPVOID)。

在MSDN中说:在要读取的指定过程中的基础地址指针。在发生任何数据传输之前,该系统验证了指定大小的基本地址和内存中的所有数据都可以访问读取访问,并且如果无法访问该功能,则功能失败。

那么为什么必须是(LPVoid)地址,而不仅仅是第二个参数的地址?

好吧, lpBaseAddress是一个地址,因此它的类型应该是指针。它指的是什么类型?我们不知道,这(Winapi)是C,因此没有模板 - 因此void *。另外,我们不想修改内存,因此 const是很好的。

关于您的编辑(为什么演员):这取决于address的类型。任何非volatile对象指针都可以隐式转换为void const *,因此在这种情况下,铸件是不必要的。但是,我想该地址是已知的integer常数,在这种情况下,需要reinterpret_cast将其转换为指针。这是在这里以c风格的演员的糟糕风格完成的,但取得了相同的成就。

相关文章:
  • 没有找到相关文章