LJ1978
驱动小牛
驱动小牛
  • 注册日期2004-02-25
  • 最后登录2011-06-08
  • 粉丝0
  • 关注0
  • 积分43分
  • 威望24点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1413回复:8

U盘格式化为什么会改动我本身的参数?

楼主#
更多 发布于:2004-06-09 10:13
我先用另外一个程序格式化,我自己设置了BPB的参数,比如一族占16个扇区,每FAT占的扇区数。。。。。。
U盘是工作正常的。
但是当PC格式化它以后,BPB的参数就变了,一族就占了4个扇区,每FAT占的扇区数也变了。请问是怎么回事?难道PC对每种容量的U盘都有自己的默认的设置?
第二个问题是:
还有就是不知道如何辨别格式化命令什么时候发来。似乎就是WRITE,READ的组合。但是具体应用中我需要在格式化时候存入某些关键信息。特别我对FAT区采用地址映射办法,更需要在对FLASH做某些初始化处理。
如果如此,是否就不能响应PC的格式化命令了?要自己软件格式化了?
LayManly
驱动牛犊
驱动牛犊
  • 注册日期2004-03-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-09 10:31
老大,我想向你学习些东西,可以吗?
我的QQ:2377838
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-09 10:32
1、每个os对u盘的格式化都有它自己的默认设置,且有些还可更改设置。

2、当上层要求格式化时,用write10来写mbr和fat表,你只有判断mbr有没有被改动了、或者是判断写入的是否是第0扇区就知道是格式化命令了。



我先用另外一个程序格式化,我自己设置了BPB的参数,比如一族占16个扇区,每FAT占的扇区数。。。。。。
U盘是工作正常的。
但是当PC格式化它以后,BPB的参数就变了,一族就占了4个扇区,每FAT占的扇区数也变了。请问是怎么回事?难道PC对每种容量的U盘都有自己的默认的设置?
第二个问题是:
还有就是不知道如何辨别格式化命令什么时候发来。似乎就是WRITE,READ的组合。但是具体应用中我需要在格式化时候存入某些关键信息。特别我对FAT区采用地址映射办法,更需要在对FLASH做某些初始化处理。
如果如此,是否就不能响应PC的格式化命令了?要自己软件格式化了?
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
LayManly
驱动牛犊
驱动牛犊
  • 注册日期2004-03-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-09 10:40
”2、当上层要求格式化时,用write10来写mbr和fat表,你只有判断mbr有没有被改动了、或者是判断写入的是否是第0扇区就知道是格式化命令了。“

这个”上层要求“应该是发送的IRP吧?那这个IRP的传递是通过外部IOCTL吗?
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-09 10:44
嗯。对于底层来说你分离出来的只是cbw命令字

”2、当上层要求格式化时,用write10来写mbr和fat表,你只有判断mbr有没有被改动了、或者是判断写入的是否是第0扇区就知道是格式化命令了。“

这个”上层要求“应该是发送的IRP吧?那这个IRP的传递是通过外部IOCTL吗?
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
LayManly
驱动牛犊
驱动牛犊
  • 注册日期2004-03-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-09 10:56
其实很多东西自己在理论上都是明白的,但是将理论东西转化为代码形式就茫然不知所措。
flyhye ,您能否发一点这方面的资料给我呢?
        我尤其想看看实际的代码(片断)应该怎样写。还有就是这些片断应该写在整个程序的那个地方。
        由衷感谢!
我的邮箱:laymanly@21cn.com
          QQ:2377838
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-09 11:03
我的代码不能给呀,一是拿不出手,太难看了;二是属于公司的;三是我也不知道应该写在你整个程序的那个地方。
网上的89c52+d12写的很好!结构很清晰,可很好的借鉴一下

其实很多东西自己在理论上都是明白的,但是将理论东西转化为代码形式就茫然不知所措。
flyhye ,您能否发一点这方面的资料给我呢?
        我尤其想看看实际的代码(片断)应该怎样写。还有就是这些片断应该写在整个程序的那个地方。
        由衷感谢!
我的邮箱:laymanly@21cn.com
          QQ:2377838
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
LayManly
驱动牛犊
驱动牛犊
  • 注册日期2004-03-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-09 11:12
呵呵,这个当然,属于机密东西啦!我又不是需要全部代码,我只想研究一个代码段。
比如VB中需要显示窗体,就只提示一个form.show这段代码就可以了!

我也不是强求哈*^_^*

或者可以贴出一个片断,比如上面提到的”当上层要求格式化时,用write10来写mbr和fat表“,在哪儿捕获这个上层要求的write10指令?是在DispathPnp()(打个比方),还是单独写个函数。在DriverEntry中的函数入口点用哪个(比如DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchIrp 之类的)

谢谢!
LayManly
驱动牛犊
驱动牛犊
  • 注册日期2004-03-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-09 11:16
flyhye, 我们到我的帖子“文件系统驱动”中继续讨论哈*^_^*
不要占别人的地盘啦^_^
游客

返回顶部