IOPCShutdown::Advise 失败:错误 80040202
IOPCShutdown::Advise Failed : error 80040202
我在寻找这个错误的原因(4 天)时伤透了脑筋
- 我在远程机器上有一个 OPC DA 服务器 运行。
- OPC DA 客户端位于另一台机器上。
在客户端实现中,我通过 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”时,它起作用了,我不知道为什么,但它起作用了 ^^
我在寻找这个错误的原因(4 天)时伤透了脑筋
- 我在远程机器上有一个 OPC DA 服务器 运行。
- OPC DA 客户端位于另一台机器上。
在客户端实现中,我通过 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”时,它起作用了,我不知道为什么,但它起作用了 ^^