首页 > 其他 > 详细

OPC客户端的进程安全初始化

时间:2014-02-24 08:20:55      阅读:546      评论:0      收藏:0      [点我收藏+]

  现场OPC客户端无法获取远程OPC Server列表,也无法连接OPC Server,经查调用CoCreateInstanceEx()创建IID_IOPCServerList接口正常,但调用IOPCServerList->EnumClassesOfCategories()时返回0x80070532错误,可是用PI的OPC-Tool测试OPC Server的各项操作正常,于是被迫周末加班一天,发现是未对OPC客户端的进程进行安全初始化造成的:

1
2
3
4
5
6
7
8
9
10
11
HRESULT hr = ::CoInitializeSecurity(
        NULL,                    // points to security descriptor
        -1,                     // count of entries in asAuthSvc
        NULL,                    // array of names to register
        NULL,                    // reserved for future use
        RPC_C_AUTHN_LEVEL_NONE, // the default authentication level for proxies
        RPC_C_IMP_LEVEL_IMPERSONATE,// the default impersonation level for proxies
        NULL,                    // used only on Windows 2000
        EOAC_NONE,              // additional client or server-side capabilities
        NULL                     // reserved for future use
        );

  该代码只需要加入到CxxxxApp::InitInstance()中即可。

 

  总结:

  1. 周末加班很郁闷,独自一个人加班更加郁闷;
  2. PI OPC-Tool界面很丑陋,但兼容性很强大,多次发现我们的OPC客户端无法正常工作,PI OPC-Tool畅通无阻,搞得现在现场OPC客户端一出现问题,工程师先用这个工具测试,正常,找我;不正常,自己鼓捣先;
  3. 通过DCOM访问OPC Server必须调用CoInitializeSecurity(),否则在不同的计算机上可能会出现不同的错误现象,但根源问题殊途同归;
  4. OPC工业现场必备垃圾;

OPC客户端的进程安全初始化

原文:http://www.cnblogs.com/heqing/p/3562031.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!