繁体   English   中英

在DLL实例之间的exe中使用回调

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM