Hi.
I want to change the valid length of a file, so I called FltSetInformationFile with FileEndOfFileInformation in pre call back routine of IRP_MJ_WRITE.
But there is a problem, my driver got two IRP_MJ_WRITE in one write operation.
If I don’t call FltSetInformation, it is ok, there is one IRP_MJ_WRITE in one write operation.
case IRP_MJ_WRITE:{
if (!(Data->Iopb->IrpFlags & (IRP_NOCACHE | IRP_PAGING_IO | IRP_SYNCHRONOUS_PAGING_IO))) break;
…
status = FltQueryInformationFile(FltObjects->Instance, FltObjects->FileObject, &stFileInfo
, sizeof(FILE_STANDARD_INFORMATION), FileStandardInformation, &ulTempReturn);
stEndOfFile.EndOfFile.QuadPart = stFileInfo.EndOfFile.QuadPart + 1024;
status = FltSetInformationFile(FltObjects->Instance,
FltObjects->FileObject,
&stEndOfFile,
sizeof(FILE_END_OF_FILE_INFORMATION),
FileEndOfFileInformation);
…
break;
}