这次的任务是对web服务器进行目录保护,防止增、删、改操作,我负责windows平台下的开发。经过半个月的摸索和各位大牛的帮助,已经实现了功能。以下是最近学习win内核的经验:
程序流程很简单,按照Minifilter框架,填写预操作回调函数。 所有IRP相关信息都保存在Data中,通过FltGetFileNameInformation对Data解析出文件名。使用《寒江独钓》中提供的函数NPUnicodeStringToChar将其转化为ANSI字符串。然后使用strstr函数与被保护的目录路径进行匹配,匹配到,说明是对该目录的操作。具体的操作如下:
创建文件: 主功能号为IRP_MJ_CREATE且
if ( ((Data->Iopb->Parameters.Create.Options>>24) & 0x000000ff) == FILE_CREATE ||
((Data->Iopb->Parameters.Create.Options>>24) & 0x000000ff) == FILE_OVERWRITE_IF)
有文件移入该文件夹