C#与VC进程外组件回调的问题

fnnxlsm 2012-02-08 09:46:47
问题说明:

需要开发一个某软件的扩展功能,它需要采用 C# 加外接进程外COM组件的方式来完成,

其中,我在VC生成的ATL进程外组件中,定义了相应的接口:

// Forward declare all types defined in this typelib
interface IComInvoke;
interface IComCallback;

[
odl,
uuid(7578C871-D9B3-455a-8371-A82F7D864D0D),
version(1.0),
oleautomation,
custom(7A6177BC-3167-451d-B02D-904D54401F2B,
"call_Serivceatl.IComInvoke")
]
interface IComInvoke : IUnknown {
HRESULT _stdcall AtlFunc([in] IComCallback* callback);
};

[
odl,
uuid(3E0D4ED3-898B-470f-AD77-921F2AE29F74),
version(1.0),
oleautomation,
custom(7A6177BC-3167-451d-B02D-904D54401F2B,
"call_Serivceatl.IComCallback")
]
interface IComCallback : IUnknown {
HRESULT _stdcall SayHello();
};


在C#中,我做了相应的测试,发现传数字型参数或者字符串都没有问题,但是如果要传入回调接口,程序就会报错:
测试的代码片断如下:

Guid classGuid = new Guid("E2AC7243-DB56-49F2-B13D-98F98741BB53");
Guid interfaceGuid = new Guid("7578C871-D9B3-455a-8371-A82F7D864D0D");

object obj = UnsafeNativeMethods.CoCreateInstance(
classGuid,
null,
4,
interfaceGuid);

IComInvoke atl = (IComInvoke)obj;
// try to parse the current module pointer.
atl.AtlFunc((IComCallback)this);

如果传接口,始终报 0xc0000005,急切等待高手指点!!!

...全文
33 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧