[英]Using callback in exe between DLL instances
我已经编写了一个C ++ exe,它将我的DLL绑定到Windows Hooks,这需要将DLL实例注入到每个进程中。 因此,您随时都有1个exe和1个或多个DLL实例。
我知道在DLL中您可以使用#pragma data_seg(...)
和链接程序注释在DLL之间共享数据,但需要注意的是,出于明显的原因(动态内存地址,指针偏移量等),您可能无法以这种方式共享指针
但是,我可以朝相反的方向走吗? 也就是说,在DLL中可以调用exe的回调函数吗? 从理论上讲,如果我可以在exe的内存中将此函数位置定义为“固定”,那么任何DLL实例调用它都应该安全吗?
这可能吗? 我担心exe对于这种方法的级别太低。
如果没有,是否可以使用任何机制在多个DLL实例之间共享单个回调函数?
非常感谢
不可以,您不能将函数指针放入共享段中。 您仍将跨进程边界访问进程本地内存地址,这不好。
您可以做的是让EXE将其拥有的HWND
放入共享段中。 HWND
可以跨过程边界共享。 这样,DLL的多个实例可以在需要时向该HWND发送一条消息,而EXE可以按照自己的意愿处理这些消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.