文件系统过滤驱动 重要系统调用总结--part1

本文介绍了一种实现卷设备监控及文件系统变化通知的方法。主要包括生成控制设备、设置派发函数、注册文件系统通知回调等步骤。通过这些步骤可以实现在文件系统挂载或卸载时的通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

第一步.生成一个控制设备。当然此前你必须给控制设置指定名称。  

第二步.设置 Dispatch Functions. 设置 Fast Io Functions.  

第三步.编写一个 File System Notify 回调函数,在其中绑定刚激活的 FS CDO. 并注册这个回调函数。 

第四步.编写默认的 dispatch functions.  

第五步.处理 IRP_MJ_FILE_SYSTEM_CONTROL,在其中监控卷设备的 Mount和 Dismount.

 

 

DriverEntery:程序入口点函数,在其中通过IoCreateDevice函数生成CDO(控制设备对象),设置dispatch function, 通过IoRegisterFsRegistrationChange注册回调函数SfFsNotification当系统中有任何文件系统被激活或者是被注销的时候,注册过的回调函数就会被调用,在其中绑定CDO

 

IoCreateDevice:生成的CDO保存在最后一个参数里

 

SfFsNotification:回调函数,调用SfAttachToFileSystemDevice

 

SfAttachToFileSystemDevice:检查设备类型,生成新设备,调用SfAttachDeviceToDeviceStack进行绑定

 

SfAttachDeviceToDeviceStack:通过系统调用IoAttachToDeviceStack绑定设备对象device objectDO)到设备栈顶端,这样IRP会首先到达

 

SfFsControl:相应当有卷mount或dismount时,产生的IRP_MJ_FILE_SYSTEM_CONTROL,调用SfFsControlMountVolume绑定卷设备

 

SfFsControlMountVolume:使用事件同步的方法,创建事件,等待完成函数SfFsControlMountVolumeComplete设置事件

 

 SfFsControlMountVolumeComplete:调用SfAttachToMountedDevice

 

SfAttachToMountedDevice:调用SfAttachDeviceToDeviceStack完成卷绑定

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值