阅读:1283回复:2
wowocock请指教
有两个问题想要请教
1。关于文件大小,以下是在完成例程里执行的 if(IrpSp->MinorFunction & IRP_MN_QUERY_DIRECTORY) { TestDirInformation = (PFILE_BOTH_DIR_INFORMATION)Irp->UserBuffer; //在一个监视程序打印出结果 DebugPrint("FileName is %S,Alloc size is %x,easize is %x ", TestDirInformation->FileName, TestDirInformation->AllocationSize, TestDirInformation->EaSize); } } 单击一个文件,可以正确显示文件名,但是文件大小就有点不对,好像以8字节为单位递增,如果文件大小<=8字节,则AllocationSize为8;如果文件大小8--16,则AllocationSize为16,请帮忙解释。 2.关于文件buffer的问题。以下是在完成例程里执行的 双击一个文本文件,进入了完成例程,请问正在打开的文件的内容在irp的什么地方啊??还是说必须要自己用zwReadFile读出。 文件的大小也不太对劲,我是这样写的。 if(IrpSp->MajorFunction & IRP_MJ_READ) { //在监视程序打印各个变量 DebugPrint("file size is %x,read length is :%x,read status is %x,MINOR FUCTION is %x",Irp->IoStatus.Information,IrpSp->Parameters.Read.Length,Irp->IoStatus.Status,IrpSp->MinorFunction); } 双击打开一个文本,会在监视程序里会打印出好多条,但是只有一条是文件的真实大小,其他都不是,但是比较各条的MinorFunction却都一样,我不知道怎么判断哪一次是正确的。 由于刚接触file system 不久,希望各位老鸟帮帮我!谢谢了! [编辑 - 3/22/04 by ildee] |
|
沙发#
发布于:2004-03-22 17:25
FILESYSTEM太复杂,看的我很郁闷,所以最近偷懒没研究了,第一个是X86的对齐原则,没什么好说的,
打开文件在什么地方,我没测试过,不记得了,不过以前本站有帖子介绍过,你找找看. |
|
|
板凳#
发布于:2004-03-23 12:58
前人有很多关于这方面的帖子,很容易找到的
|
|