PVFATFCB FCB;
NTSTATUS Status = STATUS_SUCCESS;
PVOID SystemBuffer;
+ BOOLEAN LockDir;
/* PRECONDITION */
ASSERT(IrpContext);
DPRINT("Can set file size\n");
}
- if (FileInformationClass == FileRenameInformation)
+ LockDir = FALSE;
+ if (FileInformationClass == FileRenameInformation || FileInformationClass == FileAllocationInformation ||
+ FileInformationClass == FileEndOfFileInformation || FileInformationClass == FileBasicInformation)
+ {
+ LockDir = TRUE;
+ }
+
+ if (LockDir)
{
if (!ExAcquireResourceExclusiveLite(&((PDEVICE_EXTENSION)IrpContext->DeviceObject->DeviceExtension)->DirResource,
BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT)))
if (!ExAcquireResourceExclusiveLite(&FCB->MainResource,
BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT)))
{
- if (FileInformationClass == FileRenameInformation)
+ if (LockDir)
{
ExReleaseResourceLite(&((PDEVICE_EXTENSION)IrpContext->DeviceObject->DeviceExtension)->DirResource);
}
ExReleaseResourceLite(&FCB->MainResource);
}
- if (FileInformationClass == FileRenameInformation)
+ if (LockDir)
{
ExReleaseResourceLite(&((PDEVICE_EXTENSION)IrpContext->DeviceObject->DeviceExtension)->DirResource);
}