1

我正在编写一个 Windows 应用程序(完全用 C++ 编写),它从运行 Windows Mobile 的手机上的存储卡中读取文件。困难的部分是,我不知道如何让我的应用程序检测到用户将手机连接到笔记本电脑的 USB 的事件。我在 MSDN 上做了一些阅读,并使用 RegisterDeviceNotification 编写了一个小代码,它检测何时从笔记本电脑连接/移除 USB 磁盘。但是,我无法对其进行调整以使其适用于电话类型的设备。请通过任何解释这一点的链接/教程帮助我(最好是 C++,因为我不知道 .NET 或 C#)。

谢谢阿洛克

4

3 回答 3

1

Windows Mobile 设备使用 RNDIS,这是一种幕后网络接口协议。因此,该RegisterDeviceNotification方法仍然有效,但您正在寻找 DEV_BROADCAST_DEVICEINTERFACE,而不是 DEV_BROADCAST_VOLUME。(即dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE

于 2010-02-12T12:43:30.760 回答
1

根据这篇文章,您可以使用 RegisterDeviceNotification 在 activesync 检测到设备已插入/拔出时获取通知。(见文末选项3)

这可能只是设置正确的通知过滤器的问题。

于 2010-02-09T05:18:51.547 回答
0

您可以使用RAPI或 RAPI2 来检测 Windows Mobile 设备何时通过 Active Sync 或 Windows Mobile Device Center 连接到 PC。RAPI 还可用于读取存储卡上的文件等等。

RAPI 更易于编程,因为它是基于 C 的 API。RAPI2 具有比 RAPI 更多的功能,但它是一个面向对象的 COM API。如果您的需求很简单,并且一次只关心一个设备/连接,那么 RAPI 就足够了。有两个 RAPI 函数用于检测连接:(CeRapiInit阻塞)和CeRapiInitEx(在连接时发出事件信号)。

于 2010-02-14T03:42:00.803 回答