coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
阅读:1780回复:4

关于U盘应用程序开发的问题

楼主#
更多 发布于:2005-01-04 11:14
U盘的固件程序已经很好运行了,包括盘符已经出现在浏览器中(我是在固定的block中写入引导和FAT信息以能让windows正确读取U盘信息)。
为了能格式化U盘,要开发一个User-mode应用程序,但我不知道如何能在程序中成功打开U盘以便读写。
我的思路是通过SetupDiGetClassDevs函数获取U盘设备的interface然后获得U盘设备路径用CreateFile打开U盘(曾通过此方法打开过一个USB BULK设备,但那套设备的驱动是一同事开发的,我不负责驱动方面的工作,那个GUID是他给出的)。
我想可以通过类似的方法打开我的U盘,但试过几次都不能获取这个Interface。
不知道我这个思路是否正确,如果不能实现,希望在这个问题上有处理经验的高手能给予帮助。
USB开发交流
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-04 11:53
思路应该没有问题,如果得不到interface,那可能是你的GUID不对。你得不到接口的GetLastError结果是什么?
在交流中学习。。。
coolwuya
驱动牛犊
驱动牛犊
  • 注册日期2004-06-29
  • 最后登录2007-08-24
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望21点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-04 12:40
我的GetLastErr() = 3
我发现,GUID用a5dcbf10-6530-11d2-901f-00c04fb951ed(interface class for USB devices)的确可以检索到USB设备,但它所罗列的是所有的USB设备,因此我想通过PID和VID来进一步确认我想要的设备,但我发现,在DDK给出的例子中,(大侠看rwbulk.cpp中的OpenUsbDevice(...)函数)USB_DEVICE_DESCRIPTOR里正好有可以确认这个设备身份的识别信息,包括VID和PID,但仔细阅读这段程序不难发现,其中定义的两个变量:
PUSB_DEVICE_DESCRIPTOR   usbDeviceInst;
PUSB_DEVICE_DESCRIPTOR  *UsbDevices = &usbDeviceInst;
在程序中没有用到。
我不知道MS在给出这个例子的同时给出这两个变量的用处是什么?(还是我理解错误?)
USB开发交流
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-04 13:33
你说的这个例子我没有看过,不过你用的GUID好像有问题,使用该GUID得到的是通用串行总线控制器里的设备,而不是在磁盘驱动器里的存储设备,这个你可以通过设备管理器看到。因为你在我的电脑里看到的U盘属于磁盘驱动器,所以你如果要读些U盘,应该处理磁盘驱动器设备中的USBSTOR类设备。
在交流中学习。。。
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-04 21:26
美接触过,怎么学?
游客

返回顶部