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

 

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

第二步.设置 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完成卷绑定

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(function,IO,object,File,System)