wince 6.0 裝置管理器架構
裝置管理器執行在Windows Embedded CE作業系統下,跟蹤載入的驅動及其介面。它從核心中啟動,並持續執行。當裝置介面變的可用或不可用時,裝置管理器能夠通知使用者。使用者,或者系統本身可以讓裝置介面變的可用或不可用。對於那些暴露了流介面(stream interface)的裝置介面,裝置管理器會通知核心該裝置介面支援CreateFile之類的檔案操作來訪問裝置。裝置管理器向裝置驅動傳送電源通知回撥,並提供電源管理服務。更多資訊,請參考
裝置管理器控制登錄檔中的Active項。只有裝置管理器才應該對Active項進行讀/寫訪問。通過裝置驅動的初始化函式中的一個引數,可以間接訪問Active
裝置驅動搜尋HKEY_LOCAL_MACHINE/Drivers/RootKey登錄檔項,以確定開始裝置載入過程的項。RootKey的預設值為Drivers,但是其值通常為Drivers/BuiltIn。裝置管理器呼叫函式ActivateDeviceEx,以載入在RootKey的值指定的項中找到的Dll子項表示的驅動。Dll子項的預設值為BusEnum.dll,又被稱為匯流排列舉器。載入BusEnum.dll將會導致所有的裝置驅動被載入。通過ActivateDeviceEx載入的裝置,可以從其Active登錄檔項中讀取其activation handle。
裝置管理器將匯流排名稱與裝置進行關聯。未命名裝置也可以擁有一個匯流排名稱,因為就算應用
驅動通過呼叫DMAdvertiseInterface能夠以程式設計的方式釋出介面。函式DMAdvertiseInterface使驅動能夠新增更多的可搜尋GUID到它們的關聯列表。DMAdvertiseInterface由Devmgr.dll提供。Devmgr.dl實現了大部分的裝置管理功能。只有裝置驅動能呼叫DMAdvertiseInterface,因為只有裝置管理器能載入Devmgr.dl。如果一個驅動在解除安裝的時候沒有釋出其介面不可用,裝置管理器會自動清除介面釋出通知。
裝置管理器元件
裝置管理器由nk.exe, device.dll和devmgr.dll三個元件構成。Nk.exe載入device.dll,device.dll是一個載入devmgr.dll的薄殼。devmgr.dll實現了裝置管理器的核心功能。
因為裝置管理器由兩個獨立的模組組成。裝置驅動可以直接連線裝置管理器,並呼叫其功能,如
Component | Description |
---|---|
devcore |
提供裝置管理器的核心功能。 |
iorm |
提供I/O資源管理功能。 Iorm 是必需的元件,並且不能被刪除。 |
pmif nopmif |
Pmif提供了電源管理DLL入口點的介面。 Nopmif電源管理入口點的存根版本。 |