supersxj
驱动牛犊
驱动牛犊
  • 注册日期2002-11-22
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1635回复:4

请问怎么编一个应用程序操作U盘呀

楼主#
更多 发布于:2004-12-05 00:32
请问如何编一个应用程序在windows下给U盘发送和接收一些数据呢,需要编一个驱动程序吗,还是windows有相关的用户层的函数可以给U盘这种设备发送命令或数据呢。如果是要自己编的驱动的支持,那这是一种什么驱动呢?filter driver?win2000 xp有自己的U盘驱动,我是可以通过应用程序对这个驱动进行操作呢,还是要在这个windows U盘驱动之上编个什么驱动呢?有相关的例子可以参考吗

Zhongyh
驱动牛犊
驱动牛犊
  • 注册日期2001-09-04
  • 最后登录2012-04-09
  • 粉丝1
  • 关注1
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-06 19:37
请问如何编一个应用程序在windows下给U盘发送和接收一些数据呢,需要编一个驱动程序吗,还是windows有相关的用户层的函数可以给U盘这种设备发送命令或数据呢。如果是要自己编的驱动的支持,那这是一种什么驱动呢?filter driver?win2000 xp有自己的U盘驱动,我是可以通过应用程序对这个驱动进行操作呢,还是要在这个windows U盘驱动之上编个什么驱动呢?有相关的例子可以参考吗


不需要编驱动程序,既然windows已经可以对之进行读写了,证明你调用适当的api也可以对之进行操作.
在win2k下,如下:
一,通过guid
(查查别的贴子)可以得到设备的symbolic
二,用CreateFile(symbolic,...)打开设备,返回设备的句柄.
三,用此句柄,使用函数DeviceIoControl得到关于u盘的信息(PIDNAME,VIDNAME),此时你可以判断你打开的设备是否你所期望的.
四,如果你要进行一盘的u盘读写,如直接读写mbr,bpb,fat等,这些都熟于逻辑读写,可以通过SetFilePointer设置读写地址,然后使用函数WriteFile,ReadFile对u盘进行直接的读写,至此,你可以做包括格式化U盘的所有事情.
五,如果你想实现get capacity等mass storage class的命令,又或是自定义的私有scsi命令,那么,你就需要再次使用DeviceIoControl了.使用此函数时你要参考ntddk\src\storage\class\spti下面的例子.这时你需要用SCSI_PASS_THROUGH,并填充整个结构,其实义参照mass_storage_bo.pdf和mass_storage_ufi.pdf,里面有详细的定义.
  在使用spit例子的时候,可能遇到某些命令错误,这是由于有些u盘不响应该命令,注释掉就可以了.

还有任何疑问可以发邮件给我.其实这些都不难,多多摸索就可以了.以前我问的时候,大多数人都含糊其词,希望大家公开一些,共同进步.
zszhongyh@21cn.com
xcyzdd
驱动牛犊
驱动牛犊
  • 注册日期2004-09-18
  • 最后登录2005-09-23
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-06 20:05
Zhongyh,真是位好大哥!
我要向你学习,大家共同进步!
Genius is nothing but labor and diligence!
cnn8142
驱动牛犊
驱动牛犊
  • 注册日期2004-11-15
  • 最后登录2006-05-06
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-07 09:47
Zhongyh,真是位好大哥!
我要向你学习,大家共同进步!
 

同感!
supersxj
驱动牛犊
驱动牛犊
  • 注册日期2002-11-22
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-07 17:43
真是牛人,说的很清楚,我在驱动网上按“U盘"搜索所有帖子,查了2个多小时,你的回答是最清楚和有指导性的,在此深表感谢!我问这个问题是因为最近听到加密U盘,在网上查了些资料,觉得除了一般U盘和加密的问题,还有一个如何编一个应用程序来来让用户输入密码,并将该密码加密和发送到U盘上的问题,看了Zhongyh的帖子,我觉得问题明朗了,上述功能的一个应用程序应该是可以实现的。下一步我就可以在考博闲暇好好搞搞这个了。

再次对Zhongyh表示感谢!!(谁知道怎么加分呀,没找到)
游客

返回顶部