打印

USB Mass storage 设备路径疑问,急需解决··········

[复制链接]
1746|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianjin666|  楼主 | 2014-5-4 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在研究PC端上位机与Mass storage免驱设备的通信,PC端驱动程序用的是Windows自带的usbstor.sys,只是编写应用程序,实现与下位机Mass storage设备的通信,但被一个问题折磨了一周了,一直解决不了,描述如下。
1、调用SetupDiXxx()系列函数获取设备路径:\\?\usb#vid_8018&pid_8084#6&2a3a7b38&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
2、调用CreateFile()打开设备,第一个参数就是\\?\usb#vid_8018&pid_8084#6&2a3a7b38&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed},句柄返回hDev = 0x000000A0,应该是成功的
3、调用DeviceIoControl()测试SCSI的查询命令,失败,调用GetLastError(),返回错误代码50(不支持网络请求)
4、调用WriteFile()测试写数据,失败,调用GetLastError(),返回错误代码87(参数错误)

我也用U盘测试过,用这种获取设备路径的方式,仍然是失败,现象完全一样,当我把CreateFile()的第一个参数改为磁盘"\\\\.\\H:"的形式,就能成功。但是老大要求我的Mass storage是隐藏盘符的,就不能用磁盘的方式,只能用这种获取设备路径的方式,我怀疑还是路径不对,网上有大神说:
1、GUID不对,但是我更换了很多GUID,都还是原样。
2、要打开端点,形如\\pipe02,但是驱动不是我自己写的,用的是usbstor.sys,源码也找不到,试了很多种形式,都不行。
3、要打开USB设备的USBSTOR子设备,但是该怎么获取,形式是什么样子呢。

希望大神能够帮帮小弟··········

相关帖子

沙发
tianjin666|  楼主 | 2014-5-4 16:17 | 只看该作者
下午打开这种形式的\\?\usbstor#disk&ven_kingston&prod_datatraveler_2.0&rev_pmap#5b8504002c22&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}路径,句柄竟然返回0xffffffff无效了,U盘和我的设备都一样,大神在哪里啊·····帮帮忙吧····

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝