XinHuaSoft
驱动牛犊
驱动牛犊
  • 注册日期2005-07-19
  • 最后登录2012-06-11
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望167点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:1539回复:2

sfilter的DriverEntry例程中创建的那个控制设备对象具体有什么作用呢?

楼主#
更多 发布于:2007-02-04 11:38
  我看了在filemon的DriverEntry例程中创建的设备对象类型是filemon自定义的,而sfilter的DriverEntry例程中创建的设备对象类型是FILE_DEVICE_DISK_FILE_SYSTEM。我把sfilter的DriverEntry例程中创建的设备对象改为自定义类型,编译后sfilter仍可以正常运行。

然后我就进一步试验,我把sfilter的DriverEntry例程中创建控制设备对象这部分代码注释掉,也就是说那个全局设备对象gSFilterControlDeviceObject为NULL,加载驱动后BugCheck,估计是在什么地方使用gSFilterControlDeviceObject作为参数,而此时gSFilterControlDeviceObject正好为NULL,于是在所有使用gSFilterControlDeviceObject之前加上if(gSFilterControlDeviceObject),编译并运行,一切正常。

所以我就想这个设备对象是不是主要用来跟用户程序进行交互的?不知道大家怎么认为?
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2007-02-04 12:44
控制设备对象用来接受应用程序发送的控制用ioctl代码的.你不用上层控制的话,可以不用这个对象.
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
XinHuaSoft
驱动牛犊
驱动牛犊
  • 注册日期2005-07-19
  • 最后登录2012-06-11
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望167点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-02-04 13:08
哈哈,老大这么一说我就放心了,我刚开始学习文件系统过滤驱动,光这个控制设备对象就把我看糊涂了,现在总算清楚了,谢谢!
游客

返回顶部