diff --git a/reactos/drivers/filesystems/fastfat/create.c b/reactos/drivers/filesystems/fastfat/create.c index 35f2194a4f6..664eec21ed2 100644 --- a/reactos/drivers/filesystems/fastfat/create.c +++ b/reactos/drivers/filesystems/fastfat/create.c @@ -198,7 +198,7 @@ FindFile ( DPRINT ("FindFile(Parent %p, FileToFind '%wZ', DirIndex: %d)\n", Parent, FileToFindU, DirContext->DirIndex); - DPRINT ("FindFile: Path %wZ)\n",&Parent->PathNameU); + DPRINT ("FindFile: Path %wZ\n",&Parent->PathNameU); PathNameBufferLength = LONGNAME_MAX_LENGTH * sizeof(WCHAR); PathNameBuffer = ExAllocatePoolWithTag(NonPagedPool, PathNameBufferLength + sizeof(WCHAR), TAG_VFAT); diff --git a/reactos/drivers/filesystems/fastfat/fastio.c b/reactos/drivers/filesystems/fastfat/fastio.c index ebac710cff3..8e511cf85e6 100644 --- a/reactos/drivers/filesystems/fastfat/fastio.c +++ b/reactos/drivers/filesystems/fastfat/fastio.c @@ -175,7 +175,7 @@ VfatAcquireForModWrite(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject) { DPRINT("VfatAcquireForModWrite\n"); - return STATUS_UNSUCCESSFUL; + return STATUS_INVALID_DEVICE_REQUEST; } static BOOLEAN NTAPI @@ -296,16 +296,34 @@ static NTSTATUS NTAPI VfatAcquireForCcFlush(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject) { + PVFATFCB Fcb = (PVFATFCB)FileObject->FsContext; + DPRINT("VfatAcquireForCcFlush\n"); - return STATUS_INVALID_DEVICE_REQUEST; + + /* Make sure it is not a volume lock */ + ASSERT(!(Fcb->Flags & FCB_IS_VOLUME)); + + /* Acquire the resource */ + ExAcquireResourceExclusiveLite(&(Fcb->MainResource), TRUE); + + return STATUS_SUCCESS; } static NTSTATUS NTAPI VfatReleaseForCcFlush(IN PFILE_OBJECT FileObject, IN PDEVICE_OBJECT DeviceObject) { + PVFATFCB Fcb = (PVFATFCB)FileObject->FsContext; + DPRINT("VfatReleaseForCcFlush\n"); - return STATUS_INVALID_DEVICE_REQUEST; + + /* Make sure it is not a volume lock */ + ASSERT(!(Fcb->Flags & FCB_IS_VOLUME)); + + /* Release the resource */ + ExReleaseResourceLite(&(Fcb->MainResource)); + + return STATUS_SUCCESS; } BOOLEAN NTAPI @@ -378,7 +396,6 @@ VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch) FastIoDispatch->ReleaseFileForNtCreateSection = VfatReleaseFileForNtCreateSection; FastIoDispatch->FastIoDetachDevice = VfatFastIoDetachDevice; FastIoDispatch->FastIoQueryNetworkOpenInfo = VfatFastIoQueryNetworkOpenInfo; - FastIoDispatch->AcquireForModWrite = VfatAcquireForModWrite; FastIoDispatch->MdlRead = VfatMdlRead; FastIoDispatch->MdlReadComplete = VfatMdlReadComplete; FastIoDispatch->PrepareMdlWrite = VfatPrepareMdlWrite; @@ -388,6 +405,7 @@ VfatInitFastIoRoutines(PFAST_IO_DISPATCH FastIoDispatch) FastIoDispatch->MdlReadCompleteCompressed = VfatMdlReadCompleteCompressed; FastIoDispatch->MdlWriteCompleteCompressed = VfatMdlWriteCompleteCompressed; FastIoDispatch->FastIoQueryOpen = VfatFastIoQueryOpen; + FastIoDispatch->AcquireForModWrite = VfatAcquireForModWrite; FastIoDispatch->ReleaseForModWrite = VfatReleaseForModWrite; FastIoDispatch->AcquireForCcFlush = VfatAcquireForCcFlush; FastIoDispatch->ReleaseForCcFlush = VfatReleaseForCcFlush;