Windows CE 5.0禁用ActiveSync时检测扩展坞(连接到PC)

时间:2016-08-18 09:57:02

标签: .net .net-3.5 compact-framework windows-ce

该应用程序是在.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中可以访问以帮助解决此问题的内容?

1 个答案:

答案 0 :(得分:0)

ActiveSync绝对适用于任何常规Windows CE设备(假设它在操作系统映像中具有ActiveSync)。

不幸的是,正如您所发现的那样,CeRunAppAtEvent对您来说并不适合。 IIRC,如果您处于访客模式,这些事件都不会触发,但只是为了咧嘴笑,我也会尝试NOTIFICATION_EVENT_SYNC_END。

由于这是USB客户端连接,因此您可能不会从设备驱动程序子系统获得设备通知,但这是我倾向的方向。查看是否显示任何通知(使用RequestDeviceNotifications)。只需为devclass传入NULL以获取所有通知,然后如果找到,则更改为在生产中使用该devclass。