WINCE之“系统事件”——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"是这个事件的描述。

WINCE之“系统事件”——System/Events

图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

仅供参考,如有错误,请指教!

上一篇:Spring IOC之基于JAVA的配置


下一篇:jar包冲突与inode