阅读:1413回复:8
U盘格式化为什么会改动我本身的参数?
我先用另外一个程序格式化,我自己设置了BPB的参数,比如一族占16个扇区,每FAT占的扇区数。。。。。。
U盘是工作正常的。 但是当PC格式化它以后,BPB的参数就变了,一族就占了4个扇区,每FAT占的扇区数也变了。请问是怎么回事?难道PC对每种容量的U盘都有自己的默认的设置? 第二个问题是: 还有就是不知道如何辨别格式化命令什么时候发来。似乎就是WRITE,READ的组合。但是具体应用中我需要在格式化时候存入某些关键信息。特别我对FAT区采用地址映射办法,更需要在对FLASH做某些初始化处理。 如果如此,是否就不能响应PC的格式化命令了?要自己软件格式化了? |
|
沙发#
发布于:2004-06-09 10:31
老大,我想向你学习些东西,可以吗?
我的QQ:2377838 |
|
板凳#
发布于:2004-06-09 10:32
1、每个os对u盘的格式化都有它自己的默认设置,且有些还可更改设置。
2、当上层要求格式化时,用write10来写mbr和fat表,你只有判断mbr有没有被改动了、或者是判断写入的是否是第0扇区就知道是格式化命令了。 我先用另外一个程序格式化,我自己设置了BPB的参数,比如一族占16个扇区,每FAT占的扇区数。。。。。。 |
|
|
地板#
发布于:2004-06-09 10:40
”2、当上层要求格式化时,用write10来写mbr和fat表,你只有判断mbr有没有被改动了、或者是判断写入的是否是第0扇区就知道是格式化命令了。“
这个”上层要求“应该是发送的IRP吧?那这个IRP的传递是通过外部IOCTL吗? |
|
地下室#
发布于:2004-06-09 10:44
嗯。对于底层来说你分离出来的只是cbw命令字
”2、当上层要求格式化时,用write10来写mbr和fat表,你只有判断mbr有没有被改动了、或者是判断写入的是否是第0扇区就知道是格式化命令了。“ |
|
|
5楼#
发布于:2004-06-09 10:56
其实很多东西自己在理论上都是明白的,但是将理论东西转化为代码形式就茫然不知所措。
flyhye ,您能否发一点这方面的资料给我呢? 我尤其想看看实际的代码(片断)应该怎样写。还有就是这些片断应该写在整个程序的那个地方。 由衷感谢! 我的邮箱:laymanly@21cn.com QQ:2377838 |
|
6楼#
发布于:2004-06-09 11:03
我的代码不能给呀,一是拿不出手,太难看了;二是属于公司的;三是我也不知道应该写在你整个程序的那个地方。
网上的89c52+d12写的很好!结构很清晰,可很好的借鉴一下 其实很多东西自己在理论上都是明白的,但是将理论东西转化为代码形式就茫然不知所措。 |
|
|
7楼#
发布于:2004-06-09 11:12
呵呵,这个当然,属于机密东西啦!我又不是需要全部代码,我只想研究一个代码段。
比如VB中需要显示窗体,就只提示一个form.show这段代码就可以了! 我也不是强求哈*^_^* 或者可以贴出一个片断,比如上面提到的”当上层要求格式化时,用write10来写mbr和fat表“,在哪儿捕获这个上层要求的write10指令?是在DispathPnp()(打个比方),还是单独写个函数。在DriverEntry中的函数入口点用哪个(比如DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchIrp 之类的) 谢谢! |
|
8楼#
发布于:2004-06-09 11:16
flyhye, 我们到我的帖子“文件系统驱动”中继续讨论哈*^_^*
不要占别人的地盘啦^_^ |
|