qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1463回复:7

我的过滤程序里,CloseHandle()出现页错误?

楼主#
更多 发布于:2003-06-13 13:56
在过滤的AddDevice()里创建2个设备,一个是无姓无名的过滤设备,加到堆栈顶部.一个是有名有姓的监控设备,用于win32通信.2个设备用DeviceExtension里的一个变量区分.过滤设备工作正常.监控设备可以用CreateFile()打开,但是关闭时,驱动里的DispatchClose()还没有被调用之前,Softice提示出现页错误,请问是哪里的问题?
jason.gao
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2003-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-13 14:14
关注一下,我也可能面临与 filter driver 通信的问题 :)

你做了两套 dispatch 函数吗?

另:我想知道,如果给 filter driver 起了名字,会有什么后果,试过吗?
我打字很快。
xyyln
驱动老牛
驱动老牛
  • 注册日期2003-01-02
  • 最后登录2009-12-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-13 18:03
这个问题还需要细化,你应该详细一点并补充部分代码
[img]http://www.jt99.com/zjbbs/UploadFile/2003113018513643830.gif[/img]
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-13 18:54
我只作了一套DispatchXXX函数,靠DeviceExtension的一个标志来区分是谁的IRP.DispatchCreate()函数如下:

NTSTATUS
DispatchCreate( IN PDEVICE_OBJECT  pDeviceObject,
   IN PIRP  pIrp )
{
NTSTATUS Status = STATUS_SUCCESS;
PDEVICE_EXTENSION pDeviceExtension;

pDeviceExtension = (PDEVICE_EXTENSION)pDeviceObject->DeviceExtension;
if( pDeviceExtension->nType == DEVICE_MONITOR ) // 监控的CreateFile
{
KdPrint(( \"Create Monitor File.\\n\" ));
pIrp->IoStatus.Information = 0;
pIrp->IoStatus.Status = Status;
IoCompleteRequest( pIrp,IO_NO_INCREMENT );
}
else
{
KdPrint(( \"Create Filter File.\\n\" ));
DispatchPassThru( pDeviceObject, pIrp ); // 传给下级驱动
}
return Status;
}
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
地下室#
发布于:2003-06-14 00:12
我的创建3个设备,call下面3次,不然BSOD !!

IoDeleteDevice(DriverObject->DeviceObject);
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-16 10:21
我感觉是系统把CloseHandle()传给驱动的过程中出了什么问题.安装,卸载都是好的.可以用\'Show Symbolic Link\'看见我的监控设备的连接名字的.出现页错误时,DispatchClose()还没有进入呀.
acidfish
驱动小牛
驱动小牛
  • 注册日期2002-05-20
  • 最后登录2009-11-11
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-17 10:59
呵呵,给分吧。
这个情况我前几天刚刚碰到过。我的也是一个过滤程序。
你的程序的Cleanup的例程设置了吗?就是
DriverObject[IRP_MJ_CLEANUP]
如果没有设置的话,肯定会有问题的。
你看看是不是这个问题,如果是的话,别忘了给分哟。
qinxg
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分37分
  • 威望27点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-17 11:47
 
呵呵,给分吧。
这个情况我前几天刚刚碰到过。我的也是一个过滤程序。
你的程序的Cleanup的例程设置了吗?就是
DriverObject[IRP_MJ_CLEANUP]
如果没有设置的话,肯定会有问题的。
你看看是不是这个问题,如果是的话,别忘了给分哟。

果然是这个. 3ks.
游客

返回顶部