参考FileSpy写的文件监控程序,但比它的抽象多了。可能瑞星的文件驱动也是这样写的,否则它为什么老阻止我安装驱动呢。测试程序是一个命令行小程序,负责打开设备,开启监控和关闭监控,运行时开启和关闭两次。
在DebugView中查看输出信息,我只是想看看能不能达到目的,所以信息量很少。
在驱动程序中开启和关闭监控的代码:
VOID AttachedToDeviceByName (__in PWSTR DeviceName, __in BOOLEAN attach)
{
UCHAR tmp_buf1[50];
UNICODE_STRING volumeName;
NTSTATUS status;
OBJECT_ATTRIBUTES objectAttributes;
IO_STATUS_BLOCK openStatus;
HANDLE fileHandle;
PDEVICE_OBJECT volume_obj, fs_obj, spy_obj;
PFILESPY_DEVICE_EXTENSION devExt;
ULONG i;
LARGE_INTEGER interval;
PDEVICE_OBJECT current_obj, next_obj;