久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3279|回復: 0
打印 上一主題 下一主題
收起左側

(原創)關于opc開發中碰到的一個小問題到對COM的理解

[復制鏈接]
跳轉到指定樓層
樓主
ID:102668 發表于 2016-1-16 03:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
鄭重聲明:本帖是作者原創,轉載請注明作者,讓俺也沽名釣譽一把,嘿嘿

前一段時間一直在做OPCAE的服務器端和客戶端的開發,在開發的過程中碰到了一個問題。要求連接的是siemens sipass的opc AE,sipass做客戶端,我做服務器,發送報警信息。開發完了以后,先運行服務器程序,然后再用客戶端來連接,連接不上,很是奇怪,因為用別的客戶端來連接都可以連接上,查看進程管理器,發現存在兩個服務器進程,這是為什么呢?明明做了進程互斥了,并且
RegisterClassObjects(CLSCTX_LOCAL_SERVER, //Registers the class factory in the Running Object Table.
   REGCLS_MULTIPLEUSE);

也使用了REGCLS_MULTIPLEUSE參數,為什么還是會出現這樣的問題呢。網上到處翻帖子也沒有結論,都說使用了REGCLS_MULTIPLEUSE就應該只初始化一個實例,但事實上確實存在著兩個實例。后來仔細觀察任務管理器發現,兩個進程的用戶名一個是當前用戶的,一個是system的,于是就懷疑,是不是因為用戶不同導致實例化了兩個進程呢,盡管使用了REGCLS_MULTIPLEUSE參數,道微軟的網站發現了一個帖子原文很長,附上一小段,大概的意思是,每個用戶對于com的服務都有安全環境上下文,是否使用存在的進程,跟設備環境上下文關系很密切,
When a client requests a class object for a registered class, COM either returns an existing class object or launches a process that is registered as containing the requested class object. The process of obtaining a class object reference for a requesting client (whether or not that results in process creation or "launching") is called "activation."
Under certain conditions, COM may launch a new server process even when an existing class object is running and has been registered as multiple use. Moreover, when COM creates a new process that process may be launched in a new security environment known as a "window station" rather than sharing an existing window station such as the interactive window station. (For more information on window stations, search the Win32 SDK documentation for that phrase.)
Understanding COM's algorithms for creating new processes and window stations during an activation request is important for several reasons. First, COM may create more than one process instance of a multiple-use class object because of security issues. Second, "single-use" servers will always be launched in separate processes, but they may or may not be launched in separate window stations. This difference might manifest itself to application code in certain unusual cases, such as when two COM servers try to communicate via window messages or secure communication facilities such as COM or RPC. Third, since the number of window stations that can simultaneously be created in Windows NT is limited, it is important to know when your COM server gets a new window station.
This article examines different activation scenarios and explains when new processes and window stations are created.


其實解決問題的方法非常的簡單,就是設置成交互式用戶就可以了,這是做DCOM配置的時候畢設的一項,但是在配置的時候,沒有去琢磨,為什么這樣設置,原來是基于設備安全環境上下文相關,仔細閱讀了微軟的這篇文章,就明白了很多的東西,尤其原來在DCOM設置,網絡OPC經常不通的原因也就很明了了
微軟原文連接地址:http://support.microsoft.com/kb/169321/en-us

希望一點小經驗,對大家理解COM和opc有所幫助                                                                                             
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区四区 | 99xav| www.午夜 | av久草| 久久久综合视频 | 在线91 | 日本中文字幕一区 | 国产黄色一级片 | 欧美日韩免费在线观看 | 久久艳片www.17c.com | 日韩和的一区二区 | 成人不卡视频 | 亚洲一区二区三区中文字幕 | 青草视频网站 | 女人高潮特级毛片 | 日韩一二区| 色婷婷综合在线 | 国产一级免费观看 | 婷婷在线视频 | 国产成人免费在线观看 | 日韩成人在线观看视频 | 欧美一区二区精品 | 欧美激情综合五月色丁香 | 91成人免费视频 | 欧美女同视频 | 精品免费国产一区二区三区四区 | 亚洲欧美高清 | 欧美成人精品欧美一级乱黄 | 欧美视频a| 免费看a级片 | 超碰成人福利 | 一级a毛片 | 日日操日日操 | 在线观看av网站 | 亚洲一区二区免费视频 | 一级黄色小视频 | 午夜一区| 日韩成人在线观看视频 | 91久久久久国产一区二区 | 高清一级片 | 久久99深爱久久99精品 |