我有一个manged进程,它将地址值作为DWORD传递。我希望在线程函数中使用此DWORD值,该函数要求将参数作为LPVOID传递,如何在不使其变为乱码的情况下传递该值?这不是真正的代码,而是我记忆中的尽可能多的代码!
void incoming(DWORD addr)
{
CreateThread(...threadfunc, addr...);
}
DWORD WINAPI threadfunc(LPVOID param)
{
DWORD _addr = param
}
问题是接收threadfunc addr值是乱码所以当我使用ReadProcessMemory()时,它现在是垃圾!
感谢。
答案 0 :(得分:0)
您需要托管流程将指针传递给incoming
System.IntPtr。这是将指针值传递给非托管API的标准方法。
IntPtr类型可以使用 支持指针的语言,和 作为引用数据的常用手段 在做和不做的语言之间 支持指针。
如上所述,这将在Win64上失败 - 您确实需要将incoming
参数更改为INT_PTR
类型。