COM和ATL的工作原理簡介

2020-12-11 聊聊密碼學

1 概述

這裡講的不是COM的實現原理,而是工作原理。即COM組件是如何工作,整個生命周期是如何的。這裡只講述兩種COM組件,即進程內組件和本地組件。

2 知識基礎

動態連結庫(Dynamic-Link Library)DLL。

Windows系統的進程-線程模型。

3 兩個角度看COM組件

從調用者(功能使用者)的角度來看COM組件,COM組件是一個抽象的功能對象。你知道它提供了什麼功能,但是不需要知道它在哪裡提供這些功能的,反正系統會將功能交到你手上。

反過來從實現者(功能提供者)的角度來看就不一樣了,你還是要選擇一下到時候調用者如何使用你的功能的。一般就是選擇你的對象要不要放到調用者的進程中去。而一般的選擇就是和調用者共用一個進程,這樣線程關係比較簡單,調用速度也高。只有特殊的情況下才獨立進程,例如做大的系統擔心互相影響、或者實現者的生命周期不能被調用者局限、實現者需要做系統單例等情況。

本文檔就是寫一下調用COM組件的整個流程的簡單描述,大家有個大概的認識,方便大家開發實現者。

4 進程內COM組件

所謂進程內COM組件,就是對象創建於調用者進程中的組件,英文名稱In-process Server。其形態一般為DLL或OCX。其註冊方法是regsvr32(手工),DllRegisterServer(程序),vsdrpCOMSelfReg(安裝)。其原理如圖所示。

5 本地COM組件

所謂本地COM組件,就是對象創建於與調用者進程同一個系統之中的不同進程之中的組件,英文名稱Local Server。其註冊方法是帶「/regserver」運行(手工/程序),vsdrpCOMSelfReg(安裝)。其形態一般為EXE。其原理如圖所示。

6 ATL組件

不管是進程內ATL組件還是本地ATL組件,都是按照COM組件的原理,或者說被調用的機制的來實現。具體運行邏輯參見上圖,可以看到和COM調用原理一一對應。

在VISIO繪圖裡面沒有說明需要在這裡補充的是,各個子功能的實現,如類工廠、類型列表、對象引用、對象與模塊類引用計數掛鈎、對象信息維護等的實現。一言以蔽之,就是模板類(注意,不是模塊類)和代碼插入。

ATL7.1開發中,COM對象的類聲明前面會有COM類屬性聲明,根據COM類屬性聲明(如coclass),ATL會在編譯前插入若干代碼來實現各種COM框架需要的功能。如根據類的定義插入類工廠的實現,將類的信息放在類型列表的初始化,讓類派生於CComObjectRootEx實現對象信息維護。在類工廠的實現中使用CComObject等類型來實現對象引用計數,對象與模板類引用計數掛鈎。

這就是ATL7.1(注意,ATL6.0不是)的精髓,將各種基礎類做成模板,使用代碼插入時就根據COM對象聲明選擇合適的模板參數。與MFC的ClassWizard相比,因為開發者看不到插入的框架代碼,所以無法修改。雖然有個開發靈活性不足的缺點,但是框架穩定性大大加強。

相關焦點

  • 石材風水球簡介及工作原理
    石材風水球簡介  石材風水球起源於清朝末期,是有一定原因的。
  • 汽車膨脹閥的工作原理,膨脹閥的結構和工作原理
    空調系統中熱力膨脹閥的好壞會直接影響整個汽車空調系統的運行性能,所以及時排除熱力膨脹閥工作中的故障及適當正確的選擇,對空調系統的運行壽命,製冷效果,運行成本具有重要的意義。那接下來就和電動邦小編一起看下汽車膨脹閥的工作原理吧。
  • FDM和DLP 3D印表機工作原理
    同時它工作的原理也是不一樣的,今天就為大家介紹一下比較常用的FDM和DLP3D印表機工作原理。   FDM工作原理   FDM 3D印表機   FDM技術是運用熱塑性材料的熱熔性、粘結力,在計算機軟體程序控制下逐級沉積成型。熔融沉積成型技術原理,成型材料和支撐材料由供絲機構送至分別相匹配的噴頭,並在噴頭中加溫至熔融態。
  • 制動器工作原理
    導讀:本文主要介紹的是制動器的工作原理,感興趣的童鞋們快來學習一下吧~~很漲姿勢的哦~~本文引用地址:http://www.eepw.com.cn/article/284847.htm  制動器是具有使運動部件(或運動機械)減速、停止或保持停止狀態等功能的裝置
  • 模數轉換器工作原理
    下面就讓小編來給大家介紹一下模數轉換器的工作原理。本文引用地址:http://www.eepw.com.cn/article/274284.htm  模數轉換器即A/D轉換器,或簡稱ADC,通常是指一個將模擬信號轉變為數位訊號的電子元件。通常的模數轉換器是把經過與標準量比較處理後的模擬量轉換成以二進位數值表示的離散信號的轉換器。
  • 噴油泵工作原理
    噴油泵工作原理是什麼呢?感興趣的小夥伴們快來看看吧~本文引用地址:http://www.eepw.com.cn/article/283739.htm  噴油泵,是柴油機上的一個重要組成部分,由發動機曲軸齒輪帶動凸輪軸轉動以完成噴油功能。噴油泵上一般還都安裝有調速器,用於保障柴油機的低速運轉和對最高轉速的限制,確保噴射量與轉速之間保持一定的關係。
  • 《蜜蜂飼養原理與方法》簡介
    編者按(由湖北宜昌中蜂場覃愛林師傅撰寫):    1989年,在四川農大動物學院任教的龔鳧羌先生與夫人寧寧容女士,研製出符合中蜂生物學習性的GN中蜂箱,開創中蜂子脾、蜜脾分離的現代技法,使中蜂飼養完全取高濃度成熟原蜜輕而易舉;他的專著有《中蜂飼養原理與方法》、《蜜蜂飼養原理與方法》等,記敘的理論和方法的創新,一直深受養蜂者的喜愛,他的研究成果近
  • 文丘裡施肥器的工作原理及應用!視頻欣賞!
    文丘裡施肥器具有造價低廉,使用方便,施肥濃度穩定,無須外加動力等特點,其缺點是壓力損失較大,一般適於灌區面積不大的場合。通常在農業上適用的是單位灌溉面積1-5畝場合,在1至3棟大棚前段連接文丘裡施肥器,省工效果非常明顯;薄壁多孔管微灌系統的工作壓力較低,也可以採用文丘裡施肥器。
  • 板框過濾器的工作原理和使用特點?
    板框過濾器的工作原理和使用特點?工作原理浮液用泵送入濾機的每個密閉的濾室,在工作壓力的作用下,濾液透過濾膜或其它濾材,經出液口排出,濾渣則留在框內形成濾餅,從而達到固液分離目的。
  • 蜂鳴器原理
    導讀:本文主要介紹的是蜂鳴器的原理,感興趣的盆友們快來學習一下吧~~~很漲姿勢的哦~~~本文引用地址:http://www.eepw.com.cn/article/277228.htm1.蜂鳴器原理--簡介  蜂鳴器其實就是一種一體化結構的電子訊響器
  • 【原理】電磁閥工作原理
    兩位五通電磁閥具有1個進氣孔(接進氣氣源)、1個正動作出氣孔和1個反動作出氣孔(分別提供給目標設備的一正一反動作的氣源)、1個正動作排氣孔和1個反動作排氣孔(安裝消聲器)。 對於小型自動控制設備,氣管一般選用8~12mm的工業膠氣管。電磁閥一般選用日本SMC(高檔一點,不過是小日本的產品)、臺灣亞德客(實惠,質量也不錯)或其它國產品牌等等。
  • 印刷廠廢氣處理設備工作原理設備簡介
    無需添加任何物質:只需設置相應的排氣管和排氣動力,使惡臭氣體通過設備進行脫臭、分解和淨化,無需添加任何物質參與化學反應。可用於高濃度、大氣量及各種惡臭氣體物質的脫臭淨化處理。24小時連續工作,運行穩定可靠。1. 粗過濾系統大粒徑粉塵的過濾和淨化。2.
  • 超聲波傳感器原理
    接下來我們就一起來看一哈超聲波傳感器原理是腫麼樣的吧~~本文引用地址:http://www.eepw.com.cn/article/275568.htm  超聲波傳感器,用於完成對超聲波的發送和接受。其中,發送器部分由發送器和換能器構成,換能器用於將振子振動產生的能量轉換為超聲波的形式並向空中輻射;接收器部分由換能器和放大電路構成,換能器用於接收超聲波產生機械振動以將其轉換為電能;控制部分主要完成對整體系統工作的控制,如控制發送器發送超聲波、判斷接收器是否接受超聲波、識別已接受超聲波的大小等等;電源部分主要為系統的工作提供能量。
  • MOS管的工作原理,就是這麼簡單
    MOS管工作原理--MOS管簡介MOS管,即在集成電路中絕緣性場效應管。MOS英文全稱為Metal-Oxide-Semiconductor即金屬-氧化物-半導體,確切的說,這個名字描述了集成電路中MOS管的結構,即:在一定結構的半導體器件上,加上二氧化矽和金屬,形成柵極。MOS管的source和drain是可以對調的,都是在P型backgate中形成的N型區。
  • 重力傳感器工作原理_重力傳感器作用
    打開APP 重力傳感器工作原理_重力傳感器作用 發表於 2019-06-10 14:16:03   重力傳感器簡介   新型屬傳感器技術
  • 汽車高壓油泵工作原理,油泵原理介紹
    汽油泵是一個將汽油帶給發動機的裝置,由此也可以看出汽油泵的用處還是比較大的,汽油泵也有兩種分類,下面小編給大家介紹一下汽車高壓油泵工作原理,再給大家詳細的介紹一下油泵。汽車高壓油泵:簡介不管哪一類,油泵的關鍵在於一個"泵"字。泵油的數量、壓力和時間都要非常精確,並且按照負荷自動調節。油泵是一個加工精細,製造工藝複雜的部件,國內外一般汽車柴油機的油泵都是由世界上少數幾個專業廠生產的。
  • 二極體工作原理
    本文引用地址:http://www.eepw.com.cn/article/267931.htm  在半導體性能被發現後,二極體成為了世界上第一種半導體器件,目前最常見的結構是,在PN結上加上引線和封裝,就成為一個二極體,甚至可以說二極體實際上就是由一個PN結構成的,因此二極體工作原理約等於PN的工作原理,小編從源頭講講二極體(PN結)到底是怎麼來的?
  • ∑-△模數轉換器工作原理及簡單分析
    文章從信號的過採樣、噪聲整形、數字抽取濾波等方面分析了∑-△A/D轉換器的工作原理,對人們全面了解∑-△A/D轉換器有一定的幫助。關鍵詞:∑-△A/D轉換器;∑-△調製器;過採樣;噪聲整形;數字抽取濾波 A/D轉換器是一種用來將連續的模擬信號轉換成適於數字處理的二進位數的器件,傳統的A/D轉換器有雙積分式、逐位比較式以及並行直接比較式等。
  • jk邊沿觸發器工作原理
    打開APP jk邊沿觸發器工作原理 發表於 2018-01-30 17:17:49   JK觸發器簡介
  • 磁懸浮列車原理簡介
    磁懸浮列車運行原理   其原理是利用電磁力抵消地球引力,通過直線電機進行牽引,使列車懸浮在軌道上運行(懸浮間隙約1釐米)。它與普通輪軌列車相比,具有低噪音、無汙染、安全舒適和高速高效的特點,有著「零高度飛行器」的美譽,是一種具有廣闊前景的新型交通工具,特別適合城市軌道交通。磁懸浮列車按懸浮方式不同一般分為超導推斥型和常導磁吸型兩種,按運行速度又有高速和中低速之分。