阅读:4439回复:3
IRP_MJ_CREATE中判断:是新建文件还是打开文件-----疑问
截获到IRP_MJ_CREATE时,做如下判断
CreateDisposition = (currentIrpStack->Parameters.Create.Options>> 24) & 0x000000ff; if(CreateDisposition == FILE_CREATE|| CreateDisposition==FILE_OVERWRITE_IF|| CreateDisposition==FILE_OPEN_IF|| CreateDisposition==FILE_SUPERSEDE) { DbgPrint(("新建操作\n"));// 这里简单写了下 .................. } 现在的疑问是: 1.标志为FILE_CREATE时,是新建操作,这个没疑问 2.标志为FILE_OVERWRITE_IF和FILE_OPEN_IF时: 如果文件存在,则前者将文件打开且将其清空(相当于新建一个文件替换原来的);后者则简单的打开文件 如果文件不存在,则两者都会新建一个文件 3.标志为FILE_SUPERSEDE还没有试过 由上感觉,要判断CREATE是不是新建,就必须去先判断该文件是否已经存在????????? |
|
最新喜欢:KindOf |
沙发#
发布于:2009-08-04 11:36
判断新建用 if(CreateDisposition==FILE_CREATE||CreateDisposition==FILE_OPEN_IF||CreateDisposition==FILE_OVERWRITE_IF) 条件应该就可以了。
|
|
地板#
发布于:2010-03-05 10:50
|
|