阅读:1971回复:10
请教高手,如果知道Write时的实际长度?
NotePad写文件时,先发一个IRP_WRITE_OPERATION+IRP_DEFER_IO_COMPLETION(0xA00)的IRP,可以取得写入的真实长度;如0x10,
然后发IRP_PAGING_IO+IRP_NOCACHE+IRP_SYNCHRONOUS_PAGING_IO(0x43)IRP将文件写入到硬盘,此时写入长度为0x1000(页对齐的),写完成后才得到真实写入的长度0x10。 系统在用0x43写文件时,是如何知道写入的是0x10?是否在IRP的某个参数中有定义? 恳请大虾高手指点一二。。。 |
|
驱动小牛
![]() |
沙发#
发布于:2007-06-11 09:54
具体文件的实际长度是放在文件系统的结构里面的,这个结构是不可见的.比如说B+树的inode中.具体写磁盘都会以sector或者cluster为单位,是为了提高磁盘读写效率.
|
|
板凳#
发布于:2007-06-11 16:33
请问具体是哪个结构?这个结构能读吗?
|
|
地板#
发布于:2007-06-12 10:18
已经解决了。在osr上找到的答案。
|
|
地下室#
发布于:2007-06-23 23:14
光说解决了就封笔了,却不说怎么解决的,以后这种帖建议版主即时删除之!!
|
|
5楼#
发布于:2007-07-12 09:24
引用第4楼xhjjxm于2007-06-23 23:14发表的 : 非常同意! |
|
6楼#
发布于:2007-07-12 10:22
引用第4楼xhjjxm于2007-06-23 23:14发表的 : 强烈同意! |
|
|
7楼#
发布于:2007-07-16 08:31
同意四楼的建议。
|
|
|
8楼#
发布于:2007-07-19 00:11
FCB->FileSize取得文件实际长度或有效长度,然后计算出实际写入的长度即可。
|
|
9楼#
发布于:2009-08-20 09:25
|
|
10楼#
发布于:2009-08-20 14:41
|
|
|