将C++回调函数传递到COM进程外方法中



关于将C++回调传递到进程内COM方法,已经回答了一个问题。但同样的技术不适用于进程外的使用。

我有一个C#接口,它有一个用两个参数注册回调/委托的方法。

void ProcessNotification(ConsoleNotificationType type, IntPtr parameter);

此C#接口是使用进程外COM配置(exe文件(注册的。现在我想将一个C++回调函数传递到该方法中,但Visual Studio给了我一个错误:

InvalidFunctionPointerInDelegate

那么,如何将我的C++回调函数传递到Interface的注册回调函数中呢?

COM中没有任何东西可以让您如此简单地完成这项工作。你真的无法在我能想到的任何编程范式中做到这一点。一个进程中的指针在另一进程中是没有意义的。

官方的答案是定义一个回调接口,并在实现对象上传递对该接口的引用,而不是传递一个简单的函数指针。当然,您必须确保接口可以被代理。(或者,您可以在服务器上实现IConnectionPointContainer,这基本上是相同的想法。(

相关内容

最新更新