检测USB连接--C#.Net CF 3.5

检测USB连接--C#.Net CF 3.5,c#,compact-framework,windows-mobile-6,usb-drive,C#,Compact Framework,Windows Mobile 6,Usb Drive,我有一个应用程序(.Net Compact Framework 3.5)在Windows Mobile 6.1设备上运行,我想检测USB连接何时更改(连接或断开) 我最初使用的是SystemProperty.CradlePresent属性来触发事件,但我想知道这是否仅在连接的设备具有ActiveSync时才起作用?我将通过USB从没有运行ActiveSync的Linux设备接收连接 我仍然可以使用SystemProperty.CradlePresent检测USB连接/断开连接吗?或者我是否需要探

我有一个应用程序(.Net Compact Framework 3.5)在Windows Mobile 6.1设备上运行,我想检测USB连接何时更改(连接或断开)

我最初使用的是
SystemProperty.CradlePresent
属性来触发事件,但我想知道这是否仅在连接的设备具有ActiveSync时才起作用?我将通过USB从没有运行ActiveSync的Linux设备接收连接


我仍然可以使用
SystemProperty.CradlePresent
检测USB连接/断开连接吗?或者我是否需要探索其他选项来检测USB事件?谢谢。

请检查,您可能可以获取部分源代码。它是用C#编写的,带有GUI。请记住,每次运行检查新USB驱动器的程序时,它都会占用内存和CPU,因此您可能希望降低它检查的间隔,然后为不耐烦的用户提供一个“刷新”按钮。

也许我前面的问题可能会有所帮助:

我最终监听并处理了
WM_DEVICECHANGE
事件。具体如下:


不幸的是,我再也没有源代码的副本了,所以我对它的记忆有点模糊。我不知道此解决方案是否适用于您的环境。

您正在通过USB将Linux设备连接到WM6设备?USB具有主/从结构;2设备不能直接通信,但必须通过主机进行通信。WM6设备只是通过套接字连接从Linux设备接收数据。我只是想确定我是否可以使用上面提到的SystemProperty来检测Linux设备何时通过USB连接。听起来你好像不完全了解USB。你将成为一个从设备。如果它变成了某种形式的套接字,那么我们是否可以假设你有一个驱动程序可以实现这一点?驱动程序有任何通知吗?好吧,如果你在WM6上有ActiveSync,那么你将有一个RNDIS套接字驱动程序。但是RNDIS堆栈是NDIS堆栈的远程部分,预计将在USB主机上运行。因此,您不仅在USB总线级别有问题,而且在NDIS级别也有问题。文章中描述的方法使用事件处理程序,而不是轮询方法。它不应该是CPU或内存密集型的。