COM组件中客户程序向服务器程序注册失败的原因?

shao 2000-04-13 08:35:00
在客户程序接收器调用服务器接口IConnectionPoint的Advise()向服务器注册时总是失败(拒绝访问),而调用接口IConnectionPoint的其他几个函数时均可成功。而且在本机运行时也可注册成功,在远程调用时出现上述问题。请问如何解决?
...全文
248 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
huitor 2000-04-14
  • 打赏
  • 举报
回复
请查阅微软的bug报告。
Note that both Microsoft Foundation Classes (MFC) and Active Template Library (ATL) have bugs in their IConnectionPoint::Advise implementation. They both do essentially the following:


HRESULT CConnectionPoint::Advise(IUnknown* pUnkSink, DWORD *pdwCookie)
{
IUnknown* p;
HRESULT hRes = S_OK;
if (SUCCEEDED(pUnkSink->QueryInterface(*m_piid, (void**)&p)))
{
// Add p to the list of sinks;
}
else
{
hRes = CONNECT_E_CANNOTCONNECT; // ATL does this
hRes = E_NOINTERFACE; // MFC does this
}
return hRes;
}


The bug is that they should return whatever the QI call returned instead of mapping to CONNECT_E_CANNOTCONNECT or E_NOINTERFACE. The correct way to implement a connection point is roughly the following:

HRESULT CConnectionPoint::Advise(IUnknown* pUnkSink, DWORD *pdwCookie)
{
IUnknown* p;
HRESULT hRes = pUnkSink->QueryInterface(*m_piid, (void**)&p);
if (SUCCEEDED(hRes))
{
// Add p to the list of sinks, maybe returning
// CONNECT_E_ADVISELIMIT if necessary
}
else if (hRes == E_NOINTERFACE)
{
// The sink does not support *m_piid!
return CONNECT_E_CANNOTCONNECT;
}
return hRes;
}

mach 2000-04-13
  • 打赏
  • 举报
回复
试试在你的客户机上设置权限,因为服务端要通过你Advise提供的接口调用客护端.
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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