CII_GZH
驱动中牛
驱动中牛
  • 注册日期2005-06-16
  • 最后登录2007-08-27
  • 粉丝0
  • 关注0
  • 积分257分
  • 威望127点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
阅读:1579回复:3

sfilter.c学习中的困惑,很急啊,在线等啊。

楼主#
更多 发布于:2005-08-11 09:36
  for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++)
    {
              // ?????????
        DriverObject->MajorFunction = SfPassThrough;
    }
这里面变量i,代表什么意思啊?SfPassThrough这个函数里面主要是完成下层驱动的调用,可0-IRP_MJ_MAXIMUM_FUNCTION调用有什么意义啊?
    RtlInitUnicodeString( &nameString, L"\\FileSystem\\Filters\\SFilterCDO" );
        RtlInitUnicodeString( &nameString, L"\\FileSystem\\SFilterCDO" );
\\FileSystem\\Filters\\SFilterCDO
\\FileSystem\\SFilterCDO这些是不是每个文件驱动都要这么写,才表示系统可是识别的文件驱动系统啊?
请高手指点啊,谢谢了。
学习
platform
驱动牛犊
驱动牛犊
  • 注册日期2005-03-30
  • 最后登录2012-03-10
  • 粉丝0
  • 关注0
  • 积分12分
  • 威望154点
  • 贡献值0点
  • 好评度69点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-11 10:02
MajorFunction是一个函数指针数组,i 表示其偏移
IRP_MJ_MAXIMUM_FUNCTION是一个宏,表示数组的大小。
你写错了一行,应该是
DriverObject->MajorFunction = SfPassThrough;

至于\\FileSystem\\SFilterCDO 名字,FileSystem是固定的,后面的部分可以随便写
CII_GZH
驱动中牛
驱动中牛
  • 注册日期2005-06-16
  • 最后登录2007-08-27
  • 粉丝0
  • 关注0
  • 积分257分
  • 威望127点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-08-11 10:19
for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++)
    {
              // ?????????
        DriverObject->MajorFunction = SfPassThrough;
    }
MajorFunction是一个函数指针数组,i 表示其偏移
IRP_MJ_MAXIMUM_FUNCTION是一个宏,表示数组的大小。
这些比较好理解,可为什么要这样做啊?SfPassThrough这个函数里面主要是完成下层驱动的调用,什么原因
至于\\FileSystem\\SFilterCDO 名字,FileSystem是固定的,后面的部分可以随便写

“后面的部分可以随便写”根据什么写,可以根据自己随便去个名字吗?
学习
qydgood
驱动牛犊
驱动牛犊
  • 注册日期2004-12-06
  • 最后登录2011-03-28
  • 粉丝1
  • 关注0
  • 积分106分
  • 威望30点
  • 贡献值0点
  • 好评度28点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-08-11 11:00
IRP_MJ_MAXIMUM_FUNCTION表示让MajorFunction都指向SfPassThrough这模认的函数
另外正确的写法是如是DriverObject->MajorFunction = SfPassThrough;
游客

返回顶部