【问题标题】:Windows CE 5.0 Detect dock (connection to PC) with ActiveSync disabled禁用 ActiveSync 的 Windows CE 5.0 检测扩展坞(连接到 PC)
【发布时间】:2016-12-25 04:57:52
【问题描述】:

该应用程序是在 .Net CF 3.5 中为 Windows CE 5.0 开发的。

出于安全考虑,设备上的 ActiveSync 已被禁用。 已设置以下注册表值来实现此目的:

HKEY_CURRENT_USER\ControlPanel\Comm\AutoCnct:0 HKEY_CURRENT_USER\ControlPanel\Comm\Cnct : ""

此外,Softtick CardExport 被用于通过 USB 大容量存储公开存储。 CardExport 始终使用它自己的 USB 驱动程序在此模式下运行。

目的是在 coredll 中使用 CeRunAppAtEvent 并注册 NOTIFICATION_EVENT_RS232_DETECTED

但是,这似乎仅在 CardExport 未激活且设备处于 ActiveSync 模式时才有效。 我相信这是由于操作系统没有收到 RS232 事件,因为它自己的 ActiveSync 驱动程序没有运行。

目前正在使用交流电源来检测设备是否停靠在它的底座中,使用 coredll 中的 RequestPowerNotificationsGetSystemPowerStatusEx

但这不是一个可行的长期解决方案,因为并非终端系统中的所有通讯座都具有交流电源,这意味着我们无法检测到坞站。

有没有可以在 Windows CE 5.0 中访问以帮助解决此问题的遗漏内容?

【问题讨论】:

  • 你在混淆术语吗? ActiveSync 是 Windows Mobile x.y 的一部分,而不是 Windows CE 的一部分。 Windows CE 通常使用 RAS 连接.... 如果这是 Windows Mobile 设备,则只需将 replog.exe 替换为您自己的东西并照常激活 ActiveSync。然后将针对事件 NOTIFICATION_EVENT_RS232_DETECTED 调用此 replog.exe,并在 args 中使用事件名称。在 PC 端,您可以使用 GuestOnly 并让 wmdcbase.exe 启动而不是 wmdc,以避免将 WMDC 启动到 GUI。
  • @josef 虽然它触发了“Windows Mobile Device Center”对话框,但WindowsCE确实支持ActiveSync,例如msdn.microsoft.com/en-us/library/aa513321.aspx
  • 我没有写关于 RAPI 支持的文章,但是关于 Windows CE 没有像 Windows Mobile 那样带有“ActiveSync”应用程序。所以,我认为,Windows CE 上不会有 replog.exe。
  • @josef 也许这会让您信服:msdn.microsoft.com/en-us/library/ms879772.aspx“Microsoft ActiveSync 支持在基于 Windows 的台式计算机和基于 Microsoft Windows CE 的设备之间同步数据。”我使用过的所有 WindowsCE 设备都安装并启用了 ActiveSync。还是我看错了?
  • 您能否添加设备上运行的确切 Windows 操作系统?或者,也许是设备的型号代码?

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


【解决方案1】:

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

不幸的是,CeRunAppAtEvent 对你来说不是一个初学者,正如你所发现的那样。 IIRC,如果您处于访客模式,则不会触发任何事件,尽管我也会尝试 NOTIFICATION_EVENT_SYNC_END。

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

【讨论】:

  • “不幸的是,CeRunAppAtEvent 对你来说不是一个启动器,正如你所发现的。IIRC,如果你处于访客模式,则不会触发任何事件”。该事件在设备上触发,GuestMode 是 PC 上的设置。我正在使用 GuestMode 运行我的 PC(超过 5 台设备在更改),并且 ActiveSync 在所有设备(WinCE5/6、WM6、WM65 或 WEH65 和 WEC7)和我的 PC 上触发。你是对的,我的 WEC7 设备有一个名为 ActiveSync 的应用程序,但 WinCE 6 没有,它使用 RAS。
  • 感谢所有确认我发现的反馈。我最终不得不依赖 CardExport 中提供反馈的 USB 驱动程序。
猜你喜欢
  • 2011-09-07
  • 2011-11-30
  • 2011-02-27
  • 2012-09-20
  • 2012-04-25
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多