函数void funcA() 实现在A.dll 内, 当B.dll 调用 A.dll 内的 funcA 函数时, funcA 能否得到 B.dll 的句柄呢? 
在不额外传递参数的情况下. 

解决方案 »

  1.   

    我猜测可以这样:
    获取 Ebp,获取 返回地址。从这个返回地址就可以知道 Call 的指令,这样就可以知道模块了。
      

  2.   

    没错,可以直接获取当前句柄,只是,谁调用的FuncA,得到的是谁的句柄,如果C调用的,得到就就是C的,不能够知道是否是B的。为什么不传参数呢?给funcA一个参数多好啊~
      

  3.   

    HMODULE GetModuleHandle( LPCTSTR lpModuleName);  使用方法见MSDN
      

  4.   


    确实可以得到句柄, 但funcA  无法知道那个DLL调用它 
      

  5.   

    难道说根据地址区域来判断属于那个DLL, 这个也太奇技淫巧……
      

  6.   


    传参数确实可以解决, 但是FuncA是一个导出函数, 加参数会无形的增加使用成本……