IOPCShutdown::Advise 失败:错误 80040202

IOPCShutdown::Advise Failed : error 80040202

我在寻找这个错误的原因(4 天)时伤透了脑筋

在客户端实现中,我通过 CoCreateInstanceEx()

创建了一个外部实例
HRESULT result = ::CoCreateInstanceEx(clsid, NULL, clsctx, sinptr, 1, &mqi);
PRINT_COMERRORIF(result, "CoCreateInstanceEx failed");

它工作正常,我得到一个指向远程 OPC 服务器的指针 (mqi.pItf)

调用IConnectionPoint接口的advise()函数时出现问题

我指定我找到了连接点,并且我在调用建议函数之前return指向IOPCShutdown接口的指针(_MY_shutdown

result = server_object->QueryInterface(IID_IConnectionPointContainer 
(void**)&connection_point_container);
PRINT_COMERRORIF(result, CTXID(this) "No IConnectionPointContainer interface");

result = connection_point_container->FindConnectionPoint(IID_IOPCShutdown, &_MY_shutdown);
PRINT_COMERRORIF(result, CTXID(this) "No IOPCShutdown connection point found");

result = _MY_shutdown->Advise(_MY_shutdown_callback, &_MY_shutdown_cookie); // HERE IS THE ISSUE 
PRINT_COMERRORIF(result, CTXID(this) "IOPCShutdown::Advise Failed");

我得到了这个错误:

IOPCShutdown::Advise Failed : error 80040202

我检查了 DCOM Setting for Discovery of Remote OPC Servers configuration 并按照描述做了所有事情,但没有办法 ;(

这是我的配置:

服务器端

 - OPC DA Server installed and running

 - local user account is created

 - DCOM settings are configured as required

 - Policy settings are configured as well

客户端

 - OPC DA client interface installed.

 - local user accounts are created on the both Nodes. Accounts have the same 
   name and passwords like on the server.

两个 server/client.

中的防火墙都被禁用

您是否在 客户端 端正确配置了 DCOM 和策略设置? 如评论中所述,因为对于异步连接(调用回调时),您的客户端表现为服务器和服务器 - 作为客户端。

当我在 DCOM Config 中将我的 OPC DA 服务器的身份验证级别从“连接”更改为“None”时,它起作用了,我不知道为什么,但它起作用了 ^^