wince 6.0 设备管理器架构(Device Manager Architecture)
設(shè)備管理器架構(gòu)
----Windows Embedded CE 6.0 R3
?
原文:http://msdn.microsoft.com/en-us/library/ee484004(v=WinEmbedded.60).aspx
?
設(shè)備管理器運行在Windows Embedded CE操作系統(tǒng)下,跟蹤加載的驅(qū)動及其接口。它從內(nèi)核中啟動,并持續(xù)運行。當設(shè)備接口變的可用或不可用時,設(shè)備管理器能夠通知用戶。用戶,或者系統(tǒng)本身可以讓設(shè)備接口變的可用或不可用。對于那些暴露了流接口(stream interface)的設(shè)備接口,設(shè)備管理器會通知內(nèi)核該設(shè)備接口支持CreateFile之類的文件操作來訪問設(shè)備。設(shè)備管理器向設(shè)備驅(qū)動發(fā)送電源通知回調(diào),并提供電源管理服務(wù)。更多信息,請參考Power Management。
?
設(shè)備管理器控制注冊表中的Active項。只有設(shè)備管理器才應(yīng)該對Active項進行讀/寫訪問。通過設(shè)備驅(qū)動的初始化函數(shù)中的一個參數(shù),可以間接訪問Active項。
?
設(shè)備驅(qū)動搜索HKEY_LOCAL_MACHINE/Drivers/RootKey注冊表項,以確定開始設(shè)備加載過程的項。RootKey的默認值為Drivers,但是其值通常為Drivers/BuiltIn。設(shè)備管理器調(diào)用函數(shù)ActivateDeviceEx,以加載在RootKey的值指定的項中找到的Dll子項表示的驅(qū)動。Dll子項的默認值為BusEnum.dll,又被稱為總線枚舉器。加載BusEnum.dll將會導(dǎo)致所有的設(shè)備驅(qū)動被加載。通過ActivateDeviceEx加載的設(shè)備,可以從其Active注冊表項中讀取其activation handle。
?
設(shè)備管理器將總線名稱與設(shè)備進行關(guān)聯(lián)。未命名設(shè)備也可以擁有一個總線名稱,因為就算應(yīng)用程序不能訪問該驅(qū)動,其他驅(qū)動或者系統(tǒng)實體,例如電源管理器,也可以訪問該驅(qū)動。總線名稱可以擁有一個與規(guī)則的設(shè)備名稱不同的ACL。
?
驅(qū)動通過調(diào)用DMAdvertiseInterface能夠以編程的方式發(fā)布接口。函數(shù)DMAdvertiseInterface使驅(qū)動能夠添加更多的可搜索GUID到它們的關(guān)聯(lián)列表。DMAdvertiseInterface由Devmgr.dll提供。Devmgr.dl實現(xiàn)了大部分的設(shè)備管理功能。只有設(shè)備驅(qū)動能調(diào)用DMAdvertiseInterface,因為只有設(shè)備管理器能加載Devmgr.dl。如果一個驅(qū)動在卸載的時候沒有發(fā)布其接口不可用,設(shè)備管理器會自動清除接口發(fā)布通知。
?
設(shè)備管理器組件
?
設(shè)備管理器由nk.exe, device.dll和devmgr.dll三個組件構(gòu)成。Nk.exe加載device.dll,device.dll是一個加載devmgr.dll的薄殼。devmgr.dll實現(xiàn)了設(shè)備管理器的核心功能。
?
因為設(shè)備管理器由兩個獨立的模塊組成。設(shè)備驅(qū)動可以直接連接設(shè)備管理器,并調(diào)用其功能,如DMAdvertiseInterface,而不用產(chǎn)生系統(tǒng)調(diào)用的開銷。
?
| devcore | 提供設(shè)備管理器的核心功能。 |
| iorm | 提供I/O資源管理功能。 Iorm 是必需的組件,并且不能被刪除。 |
| pmif nopmif | Pmif提供了電源管理DLL入口點的接口。 Nopmif電源管理入口點的存根版本。 ? ? |
總結(jié)
以上是生活随笔為你收集整理的wince 6.0 设备管理器架构(Device Manager Architecture)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [读书笔记]《Head First Se
- 下一篇: ACS安装