WCE之“系統事件”——System/Events
1、 簡介
Event——事件,相信有線程概念的編程人員都知道,它可以用來同步不同進程、不同線程的通訊。在Windows CE 5.0系統中,有一種我稱之為“系統事件”的Event——即由Windows CE系統本身建立的事件。
2、 “系統事件”的生命週期
首先介紹個註冊表:[HKEY_LOCAL_MACHINE/System/Events],可在WCE5.0檔案目錄WINCE500/PUBLIC/COMMON/OAK/FILES/common.reg中找到。這個註冊表中包含了所有的“系統事件名稱”——就是CreateEvent函數用到的名稱。如2-1所示,其中左邊的"SYSTEM/DevMgrApiSetReady"是系統事件名稱,右邊"Device Manager APIs ready"是這個事件的描述。
圖2-1 系統事件註冊表
在WCE裝置啟動過程中,Filesys.exe會根據[HKEY_LOCAL_MACHINE/System/Events]中的系統事件名稱來建立這些事件。Filesys.exe在WCE啟動過程中時間很早,所以這些事件也在所有的運行程式和大部分的驅動程式載入之前在系統中存在了,並且在系統中一隻存在,直到WCE系統關閉,即裝置關機。
WCE系統事件由系統建立,由系統撤銷。因此,系統事件的生命週期是伴隨著整個WCE系統存在而存在。這也是為什麼我稱之為WCE“系統事件”的原因。
3、 用途
WCE系統事件由系統建立,由系統撤銷。那麼剩下我們做的就是:OpenEvent、SetEvent等操作了。
你可以用這些系統事件來同步進程或線程,WCE系統本身就是這樣做的。特別是在WCE裝置啟動過程中,先啟動的程式要等待後啟動的程式狀態的,系統事件就特別好用。我發現這系統事件的性質是這樣的:手動、初始狀態為未觸發。
4、 參考資訊
PB協助:Windows CE Features > Core OS Services > Core OS Design Development > Kernel Overview > System Calls > Determining if an API is Ready
Windows CE Features > Core OS Services > Core OS Design Development > Kernel Overview > System Calls > Determining if an API is Ready
僅供參考,如有錯誤,請指教!