如何向COM的接口传递回调函数
【问题描述】
现在有一个win32 dll,和上层采用回调的方式来通信。因为新的需求,要把这个dll用COM封装,请问该如何写idl文件?例如我的dll输出的方法是:
typedef void (*CALLBACKFUNC) (int x);
void GetCallback(CALLBACKFUNC callbackFunc)
{
//...
}
【我的尝试】
//在idl文件中
[
object,
uuid{xxxxxxx-xx-xx-xx-xx-xx-xx}
]
interface IX
{
typedef void (*CALLBACKFUNC) (int x);
HRESULT GetCallback([in]CALLBACKFUNC callbackFunc);
}
这样是不可以的,MIDL编译它时会出错:error MIDL 2132 : parameter must not be a function:[Parameter 'callbackFunc' of Procedure 'GetCallback' (Interface 'IX')]
【此外】MSDN中列出的IDL Attributes中callback属性与上述问题有什么关系,可以用它解决这个问题吗?