代码之家  ›  专栏  ›  技术社区  ›  flavour404

托管到非托管代码,dword值到lpvoid

  •  0
  • flavour404  · 技术社区  · 14 年前

    我有一个被损坏的进程,它将地址值作为一个双字传递。我希望在一个线程函数中使用这个dword值,该函数要求将参数作为lpvoid传递,如何传递该值而不使其变得混乱?这不是真正的代码,而是我能记住的大部分代码!

    void incoming(DWORD addr)
    {
        CreateThread(...threadfunc, addr...);
    }
    
    DWORD WINAPI threadfunc(LPVOID param)
    {
      DWORD _addr = param
    }
    

    问题是接收线程的函数addr值有误,所以当我使用readprocessmemory()时,它现在是垃圾!

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Steve Townsend    14 年前

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

    Intptr类型不能由 支持指针的语言,以及 作为参考数据的常用方法 在执行和不执行的语言之间 支持指针。

    如前所述,这将在Win64上失败-您确实需要更改 进来的 参数类型为 INT_PTR .