vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
阅读:1630回复:4

再问一个小问题,coolice,tom_lyd等帮忙呀!!!

楼主#
更多 发布于:2003-02-11 17:11
问题如下:

我的Filter要支持像filemon的动态加载,为方法测试,我在DriverEntry中attach C:,使用net start Kfilter来启动Kfilter,但我一用net stop Kfilter后,此时再访问任何文件出现bugcheck,发现我的KfFastIoDetachDevice没有被调用,why?,我该如何进行detach 我的Kfilter??????

以下是我的KfFastIoDetachDevice的代码:
VOID KfFastIoDetachDevice(IN PDEVICE_OBJECT SourceDevice,
IN PDEVICE_OBJECT TargetDevice)
{
  KdPrint((\"Kfilter:FastIoDetach Device Called.\\n\"));
  IoDetachDevice( TargetDevice );
  IoDeleteDevice( SourceDevice );
}

void KfDriverUnload(IN PDRIVER_OBJECT DriverObject)
{
//释放文件受控表占用的内存
KfFree();

#ifdef KFILTER_IS_DEBUG
UNICODE_STRING LinkName;
RtlInitUnicodeString(&LinkName, L\"\\\\DosDevices\\\\Kfilter\");
IoDeleteSymbolicLink(&LinkName);
IoDeleteDevice(DriverObject->DeviceObject);
#endif

}


Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-11 17:49
FastIoDetachDevice不一定会被调用的,你可以在Unload里调用IoDetachDevice
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-11 18:35
那我如何得到File system device object与my kfilter device object,假设我attach 到所有的盘。是不是我要自已做存那些device object ????
地板#
发布于:2003-02-12 09:27
呵呵!看看驱动对象就可以啦!你的驱动程序创建的所有设备都是以链表的方式连起来的!链头在驱动对象里面
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-12 09:46
没错,当然自己保存也可以
游客

返回顶部