“驱动小妹”
驱动牛犊
驱动牛犊
  • 注册日期2006-09-09
  • 最后登录2007-11-24
  • 粉丝0
  • 关注0
  • 积分770分
  • 威望78点
  • 贡献值0点
  • 好评度77点
  • 原创分0分
  • 专家分0分
阅读:1276回复:2

DbgPrint()导致系统重起的问题

楼主#
更多 发布于:2007-11-17 08:35
我在sfilter的基础上修改。
在IRP_MJ_READ历程中 :
buffer = Irp->UserBuffer;
DbgPrint("观察:IRP_MN_NORMAL buffer = %s\n", buffer);

发现把DbpPrint注销掉,是一点问题都没有的。很稳定
而要是加了DbgPrint 不定时的系统会重新启动

不知道为什么

还有个问题是紧接上面的代码
//Irp->IoStatus.Information = length;
  Irp->IoStatus.Status = STATUS_SUCCESS;
  Irp->Tail.Overlay.OriginalFileObject->CurrentByteOffset.QuadPart =
            offset.QuadPart + Irp->IoStatus.Information;

  IoCompleteRequest(Irp, IO_NO_INCREMENT);            
  return    Irp->IoStatus.Status;

把//Irp->IoStatus.Information = length;
注销掉是完全没有问题的,可是加上后,系统就有问题了。会导致重新启动。

请各位大虾帮帮忙解决下

znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2007-11-17 08:50
gPrint("观察:IRP_MN_NORMAL buffer = %s\n", buffer);
 你能保证你的buffer有空结尾?

这是基本的c编程问题...
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
“驱动小妹”
驱动牛犊
驱动牛犊
  • 注册日期2006-09-09
  • 最后登录2007-11-24
  • 粉丝0
  • 关注0
  • 积分770分
  • 威望78点
  • 贡献值0点
  • 好评度77点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-11-17 09:06
恩,明白,这就是为什么会导致重起的原因。

请楼上大哥能否解答:之后的问题呢。//Irp->IoStatus.Information = length;
现象是:当打开一个文件如:双击c:\Documents and Setting\Administratro\桌面\1.txt
提示:“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”
游客

返回顶部