阅读:1959回复:5
请USB高手会诊,帮我想一下该怎么解决这个问题吧!!
以前做了个应用程序对U盘进行低级格式化,还可以发命令从U盘内取出用户进行低格的密码,如果U盘是好的,我可以用hDevice = createFile(\"\\\\.\\F:\"..)得到handle,然后用bResult = DeviceIoControl(hDevice,IOCTL_SCSI_PASS_THROUGH,spt,spt->TotalSize,spt,spt->TotalSize,&returned,FALSE);与U盘通信
现在假如U盘坏掉,插如U盘不能出现盘符,vid和pid都变成了ffff,系统已经不能加载磁盘驱动,不过还能识别它是USB设备,在这种情况下还想和U盘通讯,对其低格,该怎么做呢??? 我是这样做的,可是不行,如下:通过Setup API得到这个U盘USB设备的Symbol link后,用CreateFile打开这个句柄,hDevice = CreateFile(\"\\\\?\\usb#vid_ffff&pid_ffff#007#{a5dcbf10-6530-11d2-901f-00c04fb951ed}\",......);然后在createfile打开端口 然后用writefile写数据,可是总提示我参数错误,这是什么原因呢,如果用DeviceIOcontrol向其发IO控制码,该怎么用呢!!请高手指教!! 附上我对U盘的理解,不知道对不对:当U盘成为磁盘设备时,通过disk.sys调用usbstor.sys,然后callUsbd,然后调用usbhub.sys与下边通讯,现在我磁盘那一级已不能识别,想通过usbstor.sys与底层通讯,该怎么做呢,2k下的usbsotr.sys是系统的啊!! 各位 USB高手,指点我一下该怎么做吧,万分感谢,谢谢了!!! |
|
最新喜欢:![]() |
沙发#
发布于:2003-09-16 10:31
而且如果你的PID和VID不对的话,那不是格式化能解决的。
|
|
板凳#
发布于:2003-09-16 10:28
不知道你这个U盘控制器芯片是哪家的?
我觉得PID和VID应当是固化到固件程序中比较好,怎么会存到NAND Flash中?? 格式化应该是在UFI/SCSI层次的内容,不明白你的格式化怎么连枚举都管? |
|
地板#
发布于:2003-09-16 08:32
是你的U盘吗?上来就格式化,还想低格。
个人以为,U盘并不存在高/低格式化的概念,应该是快速格式化和完全格式化两种。所谓‘快速’,就是只写分区表和目录,‘完全’则包括后面的数据区。酱紫比较有意义。 |
|
地下室#
发布于:2003-09-14 22:37
怎么没有人指点一下啊,很难的么????
|
|
5楼#
发布于:2003-09-13 19:42
我觉得在这个时候,可能u盘根本就无法正常的通过usb进行通讯,应该让u盘自动进行一些必要的初始化!
另外想跟你学学如何写u盘的格式化程序,望不惜赐教!谢谢! |
|