windows内核开发
baund
这个作者很懒,什么都没留下…
展开
-
根据符号名 得到设备名
根据符号名,得到设备的名称,下面举例,根据c盘这个符号名,得到c盘的设备名称。原创 2011-11-27 22:05:18 · 810 阅读 · 0 评论 -
文件过滤驱动 VPB 卷参数块 生命周期 IoGetRelatedDeviceObject
文件过滤驱动中,VPB(卷参数块),它将文件系统卷设备和磁盘设备卷设备联系起来,结构如下:typedef struct _VPB { CSHORT Type; CSHORT Size; USHORT Flags; USHORT VolumeLabelLength; // in bytes struct _DEVICE_OBJECT *Devic原创 2011-11-30 16:03:10 · 10607 阅读 · 0 评论 -
DO_DEVICE_INITIALIZING 创建设备 iocreatedevice windows内核开发
deviceobject->flag &= ~DO_DEVICE_INITIALIZING;当设置DO_DEVICE_INITIALIZING标志时,I/O管理器将拒绝所有打开该设备句柄的请求以及向该设备对象上附着其他设备对象。故驱动程序完成初始化后,须清除该标志。在IoCreateDevice创建设备完成后,默认devieobject->flags==0xc0,是包含DO_D原创 2011-12-04 00:19:49 · 2219 阅读 · 0 评论 -
IoEnumerateDeviceObjectList 枚举驱动的所有设备 文件过滤驱动 windows内核开发
IoEnumerateDeviceObjectList函数,用来枚举某驱动下的所有设备,主要是遍历deviceobject->nextobject字段,该函数第一次可以将DeviceObjectListSize传递0,来获取实际的设备个数,第二次调用,再获取整个设备列表,实现如下:在文件过滤驱动中,常用该函数来枚举某文件系统下的所有设备,然后根据名字来区别是卷设备还是控制设备,空名字即原创 2011-12-10 17:22:58 · 3231 阅读 · 0 评论 -
文件过滤驱动 文件系统激活通知 IoRegisterFsRegistrationChange函数实现
IoRegisterFsRegistrationChange 注册一个文件系统变动回调函数,用来被通知文件系统的激活和注销,激活是指第一次加载文件系统,当一个文件系统已经加载后,当加载一个同种文件系统的卷时,该文件系统就和激活没关系。话说该函数调用后,激活的文件系统会重新激活一遍,在2k SP4之后的系统都会这样做。现在考虑下,这种机制是怎么实现的,猜测是在注册的时候,注册完成后,系统将各原创 2011-12-08 22:21:42 · 2507 阅读 · 0 评论