ildee
驱动牛犊
驱动牛犊
  • 注册日期2003-01-16
  • 最后登录2005-01-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1285回复:2

wowocock请指教

楼主#
更多 发布于:2004-03-22 16:14
有两个问题想要请教

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]
DearKeen
驱动牛犊
驱动牛犊
  • 注册日期2002-10-10
  • 最后登录2005-01-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-23 12:58
前人有很多关于这方面的帖子,很容易找到的
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-03-22 17:25
FILESYSTEM太复杂,看的我很郁闷,所以最近偷懒没研究了,第一个是X86的对齐原则,没什么好说的,
打开文件在什么地方,我没测试过,不记得了,不过以前本站有帖子介绍过,你找找看.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
游客

返回顶部