托管到非托管代码,DWORD值为LPVOID

时间:2010-11-17 08:15:28

标签: c# multithreading visual-studio-2008

我有一个manged进程,它将地址值作为DWORD传递。我希望在线程函数中使用此DWORD值,该函数要求将参数作为LPVOID传递,如何在不使其变为乱码的情况下传递该值?这不是真正的代码,而是我记忆中的尽可能多的代码!

void incoming(DWORD addr)
{
    CreateThread(...threadfunc, addr...);
}

DWORD WINAPI threadfunc(LPVOID param)
{
  DWORD _addr = param
}

问题是接收threadfunc addr值是乱码所以当我使用ReadProcessMemory()时,它现在是垃圾!

感谢。

1 个答案:

答案 0 :(得分:0)

您需要托管流程将指针传递给incoming System.IntPtr。这是将指针值传递给非托管API的标准方法。

  

IntPtr类型可以使用   支持指针的语言,和   作为引用数据的常用手段   在做和不做的语言之间   支持指针。

如上所述,这将在Win64上失败 - 您确实需要将incoming参数更改为INT_PTR类型。