moniterdisk

所属分类:驱动编程
开发工具:Visual C++
文件大小:809KB
下载次数:417
上传日期:2008-04-25 13:43:02
上 传 者qwetiop
说明:  文件过滤驱动,实现对制定盘文件的监控,可以在此基础上进行修改
(File filter driver, to achieve the development of disk file monitoring, can be modified based on)

文件列表:
怎样实现对硬盘的监控 (0, 2004-01-15)
怎样实现对硬盘的监控\MyFileSpy (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Dirs (46, 2002-04-30)
怎样实现对硬盘的监控\MyFileSpy\All (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\All\MyFSpy.sys (12227, 2002-05-09)
怎样实现对硬盘的监控\MyFileSpy\All\fspyInst.opt (43520, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\All\FILESPY.OPT (43520, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\User (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\User\fspyUser.rc (332, 2000-07-20)
怎样实现对硬盘的监控\MyFileSpy\User\MAKEFILE (249, 2000-07-20)
怎样实现对硬盘的监控\MyFileSpy\User\SOURCES (735, 2000-07-20)
怎样实现对硬盘的监控\MyFileSpy\User\fspyLog.c (0, 2002-04-30)
怎样实现对硬盘的监控\MyFileSpy\User\fspyLog.h (457, 2002-04-30)
怎样实现对硬盘的监控\MyFileSpy\User\BUILDCHK.LOG (3052, 2002-05-10)
怎样实现对硬盘的监控\MyFileSpy\User\OBJ (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\User\OBJ\_OBJECTS.MAC (608, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\User\OBJCHK (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\User\OBJCHK\I386 (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\User\OBJCHK\I386\FSPYUSER.RES (1316, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\User\OBJCHK\I386\FILESPY.PDB (132096, 2002-05-10)
怎样实现对硬盘的监控\MyFileSpy\User\OBJCHK\I386\FSPYLOG.OBJ (390, 2002-05-10)
怎样实现对硬盘的监控\MyFileSpy\User\OBJCHK\I386\FSPYUSER.OBJ (18741, 2002-05-10)
怎样实现对硬盘的监控\MyFileSpy\User\OBJCHK\I386\FILESPY.OPT (43520, 2002-05-10)
怎样实现对硬盘的监控\MyFileSpy\User\fspyUser.c (5311, 2002-05-10)
怎样实现对硬盘的监控\MyFileSpy\Install (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\SOURCES (232, 2000-07-20)
怎样实现对硬盘的监控\MyFileSpy\Install\INSTALL.RC (334, 2000-07-20)
怎样实现对硬盘的监控\MyFileSpy\Install\MAKEFILE (269, 2000-07-20)
怎样实现对硬盘的监控\MyFileSpy\Install\MyFSpy.sys (9845, 2002-04-30)
怎样实现对硬盘的监控\MyFileSpy\Install\BUILDCHK.LOG (2511, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\BUILDCHK.WRN (77, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\fspyServ.h (718, 2002-04-30)
怎样实现对硬盘的监控\MyFileSpy\Install\INSTALL.C (8222, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\OBJ (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\OBJ\_OBJECTS.MAC (454, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\OBJCHK (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\OBJCHK\I386 (0, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\OBJCHK\I386\INSTALL.RES (1324, 2002-05-08)
怎样实现对硬盘的监控\MyFileSpy\Install\OBJCHK\I386\fspyInst.pdb (271360, 2002-05-09)
怎样实现对硬盘的监控\MyFileSpy\Install\OBJCHK\I386\INSTALL.OBJ (21470, 2002-05-09)
... ...

怎样实现对硬盘的监控 TigerZD MyFileSpy是我根据IFS KIT包里的File Spy例子修改而成,主要是为了初学者能很容易的掌握监控硬盘的驱动程序的实现原理。 为了便于理解,我将File Spy中与FASTIODISPATCH有关的全部删去,完全用标准的WDM中的回调例程来实现;并且将与控制台打印有关的也删去。因此可以清楚的看到,实现对硬盘的监控主要有以下几步: 1、使用ZwCreateFile打开到设备的文件句柄,如: // open the file object for the given device status = ZwCreateFile( &fileHandle, SYNCHRONIZE|FILE_READ_DATA, &objectAttributes, &openStatus, NULL, 0, FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT/*|FILE_DIRECTORY_FILE*/,////可以设置为打开目录 NULL, 0); 2、打开获得文件句柄的卷对象。即: // get a pointer to the volumes file object status = ObReferenceObjectByHandle( fileHandle, FILE_READ_DATA, *IoFileObjectType, KernelMode, (PVOID*)&volumeFileObject, NULL); 3、获得我们想挂接的对象的设备对像,使用 nextDriverDeviceObject = IoGetRelatedDeviceObject( volumeFileObject ); 4、根据想挂接的设备对像的类型建立合适的新设备对象,并将其挂接到设备调用链中。即: status = IoCreateDevice( DeviceObject->DriverObject, sizeof(DEVICE_EXTENSION), NULL, nextDriverDeviceObject->DeviceType, 0, FALSE, &attachedDeviceObject); //... // Add our device object to chain devext->NextDriverDeviceObject = IoAttachDeviceToDeviceStack( attachedDeviceObject, nextDriverDeviceObject ); 至此,我们就完成了对指定设备对象的连接,在我们自己的驱动程序的Dispatch例程中就会截获对指定设备对象的所有IO调用。例子中我只是在IRP_MJ_CREATE调用中简单的打印了一下信息。 对挂接的设备对象解除挂接时,使用IoDetachDevice(devext->NextDriverDeviceObject); 需要说明的是: 1、这个例子还不完善,主要是为了容易看懂,有些清理工作没有完成。 2、虽说这个例子是IFS KIT包里的,但是在我删去FASTIODISPATCH的调用后,现在这个例子只需做简单的改动(将#include 改为#include ,InitializeObjectAttributes参数中的OBJ_KERNEL_HANDLE注释掉)即可在win***下编译通过,我个人认为不会影响其主要功能,但是我只是编译成功了,由于***下没有Severce调用,需要做一个INF文件安装驱动程序,因此我没有实验。 3、现在这个例子我已经实现对硬盘各分区如C:和文件如C:\MyText.TXT的监控,对目录的监控需要修改ZwCreateFile的参数。 4、这个例子在Win2000下的使用方法和FileSpy一样。附件中会有FileSpy的源码,便于对照。 5、如果这个例子对你有所帮助,我感到不胜欣慰。 我的希望是对驱动程序开发有兴趣并有时间的同志能将此程序完善,并能将其更新。谢谢!

近期下载者

相关文件


收藏者