我正在编写一个Windows应用程序(完全用C ++编写),它从运行Windows Mobile的手机上的存储卡中读取文件。困难的部分是,我不知道如何让我的应用程序检测用户已将手机连接到笔记本电脑USB的事件。我在MSDN上做了一些阅读,并使用RegisterDeviceNotification编写了一个小代码,它可以检测从笔记本电脑上连接/删除USB磁盘的时间。但是,我无法调整它以使其适用于手机类设备。请通过任何解释此问题的链接/ tutroials帮助我(最好是C ++,因为我不知道.NET或C#)。
由于 阿洛克
答案 0 :(得分:1)
根据this article,当activesync检测到设备已插入/拔出时,您可以使用RegisterDeviceNotification获取通知。 (见本文末尾的选项3)
可能只需要设置正确的通知过滤器。
答案 1 :(得分:1)
Windows Mobile设备使用RNDIS,一种幕后的网络接口协议。因此,RegisterDeviceNotification
方法仍然有效,但您正在寻找DEV_BROADCAST_DEVICEINTERFACE,而不是DEV_BROADCAST_VOLUME。 (即dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE
)
答案 2 :(得分:0)
您可以使用RAPI或RAPI2来检测Windows Mobile设备何时通过Active Sync或Windows Mobile Device Center连接到PC。 RAPI还可用于读取存储卡上的文件等等。
RAPI编程更简单,因为它是基于C的API。 RAPI2具有比RAPI更多的功能,但它是面向对象的COM API。如果您的需求很简单,并且您一次只关心一个设备/连接,那么RAPI就足够了。有两个用于检测连接的RAPI函数:CeRapiInit
(阻塞)和CeRapiInitEx
(在连接时发出事件信号)。