该应用程序是在.Net CF 3.5 for Windows CE 5.0中开发的。
由于安全问题,设备上已禁用ActiveSync。 已设置以下注册表值以实现此目的:
HKEY_CURRENT_USER \ ControlPanel \ Comm \ AutoCnct:0 HKEY_CURRENT_USER \ ControlPanel \ Comm \ Cnct:""
除此之外,还使用Softtick CardExport通过USB Mass Storage公开存储。 CardExport始终使用自己的USB驱动程序在此模式下运行。
目的是在coredll中使用CeRunAppAtEvent并注册 NOTIFICATION_EVENT_RS232_DETECTED
但是,当CardExport未处于活动状态且设备处于ActiveSync模式时,这似乎才有效。 我相信这是因为操作系统没有收到RS232事件,因为它自己的ActiveSync驱动程序没有运行。
目前,AC Power正在使用coredll中的 RequestPowerNotifications 和 GetSystemPowerStatusEx 来检测设备是否已停靠在其底座中。
然而,这不是一个可行的长期解决方案,因为并非终端系统中的所有支架都没有交流电源,这意味着我们无法检测到停靠。
是否有任何可能在Windows CE 5.0中可以访问以帮助解决此问题的内容?
答案 0 :(得分:0)
ActiveSync绝对适用于任何常规Windows CE设备(假设它在操作系统映像中具有ActiveSync)。
不幸的是,正如您所发现的那样,CeRunAppAtEvent
对您来说并不适合。 IIRC,如果您处于访客模式,这些事件都不会触发,但只是为了咧嘴笑,我也会尝试NOTIFICATION_EVENT_SYNC_END。
由于这是USB客户端连接,因此您可能不会从设备驱动程序子系统获得设备通知,但这是我倾向的方向。查看是否显示任何通知(使用RequestDeviceNotifications
)。只需为devclass传入NULL
以获取所有通知,然后如果找到,则更改为在生产中使用该devclass。