麦洛克菲内核开发第五课Sfilter文件系统过滤麦洛克菲www
mallocfree
com周扬荣提纲文件系统驱动绑定与过滤Sfilter基本框架文件拦截创建删除修改重命名作业麦洛克菲www
mallocfree
com过滤CancelUserBufferMdlAddressSystemBufferIOSTATUSIRPHeadern…0头部堆栈IO_STATUS_BLOCKStatusInformationIO_STACK_LOCATIONMajorFunctionMinorFunctionunion{struct{…}Read;struct{…}Write;struct{…}DeviceControl;}Parameters;DeviceObjectFileObject文件过滤驱动设备文件卷设备磁盘设备IRP驱动设备IRP过滤:分层驱动中再加一层而不影响它的上下层,以过滤它们之间的数据,对数据或行为进行安全控制
过滤是通过设备绑定实现的
绑定设备栈绑定的形式
驱动自己生成一个设备(过滤设备),调用系统提供的绑定API,绑定到目标设备上
并返回一个在未绑定之前目标设备所在设备栈的最顶层设备
这样发往下层的IRP或者发往上层的数据都会被过滤设备截获
绑定API:IoAttachDevice()IoAttachDeviceToDeviceStackSafe(2000SP4以及XP以上)IoAttachDeviceToDeviceStack()SourceDeviceFilter2DeviceFilter1DeviceTargetDeviceSourceDeviceTargetDeviceAttachedDeviceAttachedDeviceIRPIoAttachDeviceToDeviceStackPDEVICE_OBJECTIoAttachDe