阅读:1630回复:4
再问一个小问题,coolice,tom_lyd等帮忙呀!!!
问题如下:
我的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 } |
|
沙发#
发布于:2003-02-11 17:49
FastIoDetachDevice不一定会被调用的,你可以在Unload里调用IoDetachDevice
|
|
板凳#
发布于:2003-02-11 18:35
那我如何得到File system device object与my kfilter device object,假设我attach 到所有的盘。是不是我要自已做存那些device object ????
|
|
地板#
发布于:2003-02-12 09:27
呵呵!看看驱动对象就可以啦!你的驱动程序创建的所有设备都是以链表的方式连起来的!链头在驱动对象里面
|
|
地下室#
发布于:2003-02-12 09:46
没错,当然自己保存也可以
|
|