1 State and Notification Broker 状态通知机制
Windows Mobile 5.0设备随附了远远超过100个不同的状态值,这些值提供各种各样的与设备本身和标准Windows Mobile 5.0应用程序有关的信息,可以通过 State and Notification Broker API 获得。我们可以设计应用程序以检索State and Notification Broker API 存储值,或者监视一个或多个值的更改。下面是可以通过State and Notification Broker API 获得的信息的部分示例:
•活动应用程序
•设备的 ActiveSync 状态
•当前电池电平
•是否有照相机连接到该设备
•是否插入了耳机
• Media Player 中当前播放的歌曲名称
•未读的 SMS 信息个数
•未读的电子邮件个数
•当前是否正在通话
•当前是否正在进行会议呼叫
•当前是否可以使用 GPRS 连接
•设备当前是否连接到 VPN
•未接电话呼叫的个数
•电话的移动运营商的名称
•当天预定的任务数
State and Notification Broker 的基础实现依赖于注册表。每个提供程序都会创建一个注册表项,向该项添加值,以表示各个状态值。在提供程序创建该注册表项以后,State and Notification Broker 会监视该值的更改,并且自动通知已经注册了对该值感兴趣的所有各方。所有系统状态属性都存储在HKEY_CURRENT_USER/System/State 或 HKEY_LOCAL_MACHINE/System/State 下面。这些项都被加以保护,允许不受信任的应用程序进行只读访问。应用程序也可以将它们自己的状态值添加到HKEY_CURRENT_USER/System/State 或 HKEY_LOCAL_MACHINE/System/State 中。
2 常用的State and Notification Broker API 本机函数
如果我们希望检索这些状态通知,有多种方式可以选择:Windows消息、回调函数和消息队列。
常用 State and Notification Broker API 本机函数
RegistryNotifyApp
通过将 Windows 消息发送到应用程序窗口,将指定状态值的更改通知给应用程序。如果该应用程序尚未运行,则 State and Notification Broker API 会启动它。
RegistryNotifyWindow
通过将 Windows 消息发送到应用程序窗口,将指定状态值的更改通知给应用程序。
RegistryNotifyMsgQueue
通过向命名的消息队列发送通知,将指定状态值的更改通知给应用程序。
RegistryNotifyCallback
通过调用传递的回调函数,将指定状态值的更改通知给应用程序。
RegistryGetDWORD / RegistryGetString
检索当前状态值。
RegistrySetDWORD / RegistrySetString
由 State and Notification Broker API 提供程序用来创建和修改状态值。
RegistryTestExchangeDWORD
由 State and Notification Broker API 提供程序用来有条件地修改状态值,并且将测试和更新作为单个原子操作予以执行。
注意:要调用这些函数需要包含头文件regext.h
3 例子
具体的实例可查看MSDN 或者Windows Mobile 6 SDK/Samples/PocketPC/CPP/win32/battstat
参考引用:
http://blog.csdn.net/hejianhua/archive/2010/04/13/5479559.aspx