阅读:2455回复:8
求教USB设备检测问题?
各位大侠:
现在我有一个USB设备可接大硬盘,怎样用编程实现这个设备已 连接上,并且连接上时,怎样得到它的盘符?急!!!!! |
|
|
沙发#
发布于:2004-10-28 12:12
通过PID、VID等得到相应符号连接
|
|
|
板凳#
发布于:2004-10-28 18:15
WM_DEVICECHANGE消息
|
|
|
地板#
发布于:2004-10-29 09:41
怎样通过PID,VID连接什么符号?
我的程序是首先要判断USB接口的连接设备是否连接才能往下执行。 现在我在win2000上运行,用SetupDiGetClassDevs(),SetupDiEnumDeviceInterfaces(),SetupDiGetInterfaceDeviceDetail(),CreateFile(),可判断设备连接,但是在win98上运行就提示设备没有连上,(我的设备本身连上了,可以访问),这是为什么? |
|
|
地下室#
发布于:2004-10-29 09:50
设备类在win2000和win98上的GUID不一样吗?怎样用工具在win98,win2000,winxp上得到GUID? 因为我是用GUID来判断检测设备的?急!
|
|
|
5楼#
发布于:2004-10-30 18:51
继续goOn~
~~~~~~~~~~~ 混个脸熟~~~ |
|
6楼#
发布于:2004-11-01 09:35
处理WM_DEVICECHANGE消息,系统中新加入一个设备都会产生该消息。
对消息进行判断,下面是一个简单的消息处理函数: void CMainFrame::OnDeviceChange(WPARAM wParam, LPARAM lParam) { PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam; if(wParam == DBT_DEVICEARRIVAL && lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME) { //说明新加入的设备是一个磁盘设备 //分析lpdbv->dbcv_unitmask可以得到新加入的USB磁盘的盘符 PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb; } } |
|
|
7楼#
发布于:2004-11-02 18:01
谢谢楼主的回答,
我试了你的做法,你的想法先要执行程序,再插上设备,才有反应,但是我先插上设备,然后再执行程序,按检测按钮提示没有设备。 我想实现:当我的设备插上后,多次按检测按钮,每次能检测设备是否连上? |
|
|
8楼#
发布于:2004-11-08 09:57
谢谢楼主的回答, 那你就在设备连接之后,通过程序检查该类型的设备信息,就想在设备管理器中查看一样,如果该设备状态正常,就说明连接没有问题。具体的程序实现可以查看DDK里面的例子DevCon,应该可以解决你的问题。呵呵 |
|
|