http://blog.csdn.net/luixing67/article/details/5575815
同步功能是WinCE一个出色功能,可以通过usb,serial等物理连接,与pc端通讯进而实现同步功能.当然,不只是同步些数据那么点功能,它还可以同步outlook等,最关键的,pc端提供很多软件包括pb和evc的remote tools这些工具很多时候要和目标设备连接,借由ActiveSyc功能可以轻松达到目标.这样我们在pc端就可以轻松获得WinCE设备的注册表,进程管理,系统信息等几乎所有数据和控制.对开发者,可以免除实现KITL的工作,这很诱人!
自动同步功能
在插入usb或者串口的时候,WinCE就会自动启动同步连接,怎么实现的?打开datasync.db,这个文件可以在WINCE500/PUBLIC/DATASYNC/OAK/FILES/下找到.有一些bsp会把这个添加到platform.db或者其他的db中.其实这是一个数据库文件.文件头有包含此数据库文件的说明和用法.如下是内容.
Database: "DB_notify_events" : 0 : 1 : 0001001F : 0
; @CESYSGEN IF DATASYNC_MODULES_REPLLOG
Record :
Field : 0001001f : "repllog.exe"
Field : 0002001f : "AppRunAtRs232Detect"
Field : 00030013 : 9
End
; @CESYSGEN ENDIF
End Database
第一个字段包含要启动程序文件的名称"repllog.exe"
第二个字段包含传递给程序的初始化参数"AppRunAtRs232Detect"
第三个字段包含触发事件
我的解释:
1. 上面的数据库是静态指定的,运行时候可以使用CeRunAppAtEvent这个系统api动态更改数据库记录.
2. 在驱动和pnp设备代码中,当设备连接上时候,会使用一个CeEventHasOccurred广播一个通知,比如串口和usb从serial类型设备驱动中,会呼叫CeEventHasOccurred (NOTIFICATION_EVENT_RS232_DETECTED, NULL);意思就是发出一个通知NOTIFICATION_EVENT_RS232_DETECTED.在public/common/sdk/inc/notify.h中,找到定义 #define NOTIFICATION_EVENT_RS232_DETECTED 9
3. 系统(service,device或者shell--具体还不知道是那个进程)在收到事件后,会自动运行一个程序,运行方式和我们在命令行里面敲repllog AppRunAtRs232Detect的效果是一样的.