WinAPI中ReadProcessMemory对应的HANDLE、LPCVOID、LPVOID具体指什么?
ReadProcessMemory 相关参数类型释义
你提到的三个类型都是Win32 API中约定的别名类型,结合ReadProcessMemory的函数定义分别解释如下:
BOOL WINAPI ReadProcessMemory( _In_ HANDLE hProcess, _In_ LPCVOID lpBaseAddress, _Out_ LPVOID lpBuffer, _In_ SIZE_T nSize, _Out_ SIZE_T *lpNumberOfBytesRead );
- HANDLE:Windows内核对象的通用句柄类型,在本函数中对应输入参数
hProcess,指代你要读取内存的目标进程的内核对象实例。使用时需要确保该句柄已获得PROCESS_VM_READ权限,否则函数会调用失败。本质是内核暴露给用户态的不透明索引值,不是直接指向内存的指针。 - LPCVOID:是「指向常量无类型数据的指针」的Win32别名,拆解为Long Pointer to Const Void。本函数中对应输入参数
lpBaseAddress,是目标进程内存空间中需要读取的起始地址,带const修饰表示函数不会修改该地址指向的目标进程内存内容,仅做读取操作。 - LPVOID:是「指向无类型数据的指针」的Win32别名,拆解为Long Pointer to Void。本函数中对应输出参数
lpBuffer,是当前调用进程本地缓冲区的起始地址,函数会将从目标进程读取到的内存数据写入该缓冲区。
内容的提问来源于stack exchange,提问作者Varun Panyam
相关产品推荐
相关产品推荐

