cedb简介
cedb是一个功能简单的wince系统内置数据库,wince系统里使用cedb生成多个数据库来存储一些简单的系统信息。比如回收站信息,还比如“事件-应用”对应表。
“事件-应用”对应表由调用cerunappatevent函数产生,设置系统收到指定事件event后执行指定的exe进程。比如用visual studio调试程序时需要连接usb,usb连接时,会产生notification_event_rs232_detected事件,系统便会启动repllog.exe进行调试方面设置。
系统cedb数据库异常现象
我们发现系统cedb数据库中,“事件-应用”对应表在日常调试时,有极小概率出现数据库异常。当该数据库数据异常时:
1、会出现activesync连接故障,我们此前采用格式化nandflash来解决该故障:《wince下activesync连接故障分析》。
2、在问题严重时,系统的启动会变得缓慢。
3、进一步,在启动时usbotg处于连接状态,系统则会不停打印“+oemsetalarmtime”信息,且无法正常完成启动,系统重启。
产生原因
1、在调试时,如果usb连接不稳定,时断时连。系统可能错误的向“事件-应用”对应表添加重复的“notification_event_rs232_detected - repllog.exe”记录项。
2、重复的数据库记录项会重复启动repllog.exe进程,导致activesync设置失败。
3、activesync设置失败后,系统又会错误的继续向cedb中添加重复的“notification_event_rs232_detected - repllog.exe”事件记录项。并且因为系统无法正确清理重复项,导致数据库不断变大。
4、最后该cedb中存储了上千条重复项,因为系统启动时频繁检索数据库内所有项,过多的重复项导致系统在启动时非常缓慢。
5、系统启动缓慢到一定程序时,连接的usbotg会导致数据库记录进一步出错。系统重复打印的“+oemsetalarmtime”即是cedb在添加重复项时打印的信息。
解决方案
“事件-应用”对应表默认数据库文件为“\nandflash\documents and settings\default.vol”,重置该文件即可解决该问题。
格式化nandflash
见《wince下activesync连接故障分析》,格式化nandflash后default.vol被重置,问题修复。但是nandflash下文件会被清空,注册表也会被重置。
清除cedb多余项
调试api函数逐条清空数据项。
handle *hnotifications = null;
dword numnotifications;
dword count;
cegetusernotificationhandles( hnotifications, 0, &numnotifications );
hnotifications = (handle *)malloc( numnotifications * sizeof( handle *));
cegetusernotificationhandles( hnotifications, numnotifications, &numnotifications );
for( count = 0; count < numnotifications, count<100; count++ )
{
bret = ceclearusernotification(hnotifications[count]);
}
free( hnotifications );
因为cedb访问速度较慢,清理起来时间很长,所以不建议采用该方法。
通过2次重启,删除default.vol文件
因为default.vol为系统文件,无法直接删除。所以可以通过以下办法单单删除default.vol文件,同时保留数据库文件及nandflash下其它文件。
1、判断cedb里的数据是否有异常。如果异常,则执行恢复。
2、修改\nandflash\documents and settings目录为\nandflash\documents and settings0,并重启(重启之前无法对documents and settings里的文件进行操作)。
3、重启后,系统判断没有documents and settings目录,因此会重置生成一个新的documents and settings目录。至此,故障已经修复,但是注册表等其他文件也重置了,还需要以下步骤将documents and settings0里的注册表文件恢复回去。
4、删除default.vol文件。
修改新生成的\nandflash\documents and settings目录为\nandflash\documents and settings1。
修改原来的\nandflash\documents and settings0目录为\nandflash\documents and settings。
再次重启。
5、重启后,注册表重新恢复,documents and settings里其它文件保持原状态,只有default.vol文件进行了重置。
可以删除已经无用的多余的\nandflash\documents and settings1目录,腾出磁盘空间。
英创提供了修复程序及源代码,有需要的客户可以联系英创工程师获得。
生物识别技术大跨步发展会给我们带来怎样的变化
伊戈尔发布《2018年半年度业绩快报》净利下滑53.75%
预定火爆!iPhone 12mini和iPhone 12 Pro Max正式发售
pcb塞孔工艺流程
苹果核心供应商大族激光发布2020年业绩预告
英创信息技术CE6.0内置数据库CEDB的异常检测与修复简介
2030年共享汽车将去掉驾驶舱实现完全的自动驾驶
新型非接触式键盘的传感器选择分析
康佳彩电海外业务去年增77%
格陆博针对零跑汽车的ESC产品定制技术方案和开发计划
蒸汽流量积算仪补偿方式与信号类型
JDI连续6年亏损卖厂夏普
高通:7纳米工艺能否实现 电容缩放最具挑战性
飞利浦调查发现中国在数字医疗技术方面居世界领先地位
阿里巴巴AI实验室关闭?官方回应
搭载MediaTek Filogic 830无线连接平台的Redmi路由器AX6000
iphone15pro max参数配置 iphone15pro max预售价多少
如何使用MAXQ串行驱动器开发应用
焜腾红外推出全系列T2SL制冷红外探测器
安富利制造服务SAMA5D3 Xplained开发板简介