From: Pierre Schweitzer Date: Fri, 17 Feb 2017 11:38:05 +0000 (+0000) Subject: [FASTFAT] X-Git-Tag: ReactOS-0.4.4-CLT2017~282 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=990af47b16400dc8319307a3b7d5a3b74f4d4950;ds=sidebyside [FASTFAT] Thomas->happiness++; svn path=/trunk/; revision=73808 --- diff --git a/reactos/drivers/filesystems/fastfat/finfo.c b/reactos/drivers/filesystems/fastfat/finfo.c index fde0be05833..6247e3df0f3 100644 --- a/reactos/drivers/filesystems/fastfat/finfo.c +++ b/reactos/drivers/filesystems/fastfat/finfo.c @@ -97,7 +97,7 @@ VfatGetStandardInformation( StandardInfo->Directory = FALSE; } StandardInfo->NumberOfLinks = 1; - StandardInfo->DeletePending = BooleanFlagOn(FCB->Flags, FCB_DELETE_PENDING) ? TRUE : FALSE; + StandardInfo->DeletePending = BooleanFlagOn(FCB->Flags, FCB_DELETE_PENDING); *BufferLength -= sizeof(FILE_STANDARD_INFORMATION); return STATUS_SUCCESS; @@ -165,7 +165,7 @@ VfatSetBasicInformation( /* Check volume label bit */ ASSERT(0 == (*FCB->Attributes & _A_VOLID)); - if (FCB->Flags & FCB_IS_FATX_ENTRY) + if (BooleanFlagOn(FCB->Flags, FCB_IS_FATX_ENTRY)) { if (BasicInfo->CreationTime.QuadPart != 0 && BasicInfo->CreationTime.QuadPart != -1) { @@ -254,7 +254,7 @@ VfatGetBasicInformation( if (*BufferLength < sizeof(FILE_BASIC_INFORMATION)) return STATUS_BUFFER_OVERFLOW; - if (FCB->Flags & FCB_IS_FATX_ENTRY) + if (BooleanFlagOn(FCB->Flags, FCB_IS_FATX_ENTRY)) { FsdDosDateTimeToSystemTime(DeviceExt, FCB->entry.FatX.CreationDate, @@ -331,7 +331,7 @@ VfatSetDispositionInformation( return STATUS_SUCCESS; } - if (FCB->Flags & FCB_DELETE_PENDING) + if (BooleanFlagOn(FCB->Flags, FCB_DELETE_PENDING)) { /* stream already marked for deletion. just update the file object */ FileObject->DeletePending = TRUE; @@ -1043,7 +1043,7 @@ VfatGetNetworkOpenInformation( if (*BufferLength < sizeof(FILE_NETWORK_OPEN_INFORMATION)) return(STATUS_BUFFER_OVERFLOW); - if (Fcb->Flags & FCB_IS_FATX_ENTRY) + if (BooleanFlagOn(Fcb->Flags, FCB_IS_FATX_ENTRY)) { FsdDosDateTimeToSystemTime(DeviceExt, Fcb->entry.FatX.CreationDate, @@ -1196,7 +1196,7 @@ UpdateFileSize( } if (!vfatFCBIsDirectory(Fcb)) { - if (Fcb->Flags & FCB_IS_FATX_ENTRY) + if (BooleanFlagOn(Fcb->Flags, FCB_IS_FATX_ENTRY)) Fcb->entry.FatX.FileSize = Size; else Fcb->entry.Fat.FileSize = Size; @@ -1221,12 +1221,12 @@ VfatSetAllocationSizeInformation( ULONG ClusterSize = DeviceExt->FatInfo.BytesPerCluster; ULONG NewSize = AllocationSize->u.LowPart; ULONG NCluster; - BOOLEAN AllocSizeChanged = FALSE; + BOOLEAN AllocSizeChanged = FALSE, IsFatX = BooleanFlagOn(Fcb->Flags, FCB_IS_FATX_ENTRY); DPRINT("VfatSetAllocationSizeInformation(File <%wZ>, AllocationSize %d %u)\n", &Fcb->PathNameU, AllocationSize->HighPart, AllocationSize->LowPart); - if (Fcb->Flags & FCB_IS_FATX_ENTRY) + if (IsFatX) OldSize = Fcb->entry.FatX.FileSize; else OldSize = Fcb->entry.Fat.FileSize; @@ -1278,7 +1278,7 @@ VfatSetAllocationSizeInformation( return STATUS_DISK_FULL; } - if (Fcb->Flags & FCB_IS_FATX_ENTRY) + if (IsFatX) { Fcb->entry.FatX.FirstCluster = FirstCluster; } @@ -1378,7 +1378,7 @@ VfatSetAllocationSizeInformation( } else { - if (Fcb->Flags & FCB_IS_FATX_ENTRY) + if (IsFatX) { Fcb->entry.FatX.FirstCluster = 0; } @@ -1454,7 +1454,7 @@ VfatQueryInformation( SystemBuffer = IrpContext->Irp->AssociatedIrp.SystemBuffer; BufferLength = IrpContext->Stack->Parameters.QueryFile.Length; - if (!(FCB->Flags & FCB_IS_PAGE_FILE)) + if (!BooleanFlagOn(FCB->Flags, FCB_IS_PAGE_FILE)) { if (!ExAcquireResourceSharedLite(&FCB->MainResource, BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT))) @@ -1532,7 +1532,7 @@ VfatQueryInformation( Status = STATUS_INVALID_PARAMETER; } - if (!(FCB->Flags & FCB_IS_PAGE_FILE)) + if (!BooleanFlagOn(FCB->Flags, FCB_IS_PAGE_FILE)) { ExReleaseResourceLite(&FCB->MainResource); } @@ -1607,7 +1607,7 @@ VfatSetInformation( } } - if (!(FCB->Flags & FCB_IS_PAGE_FILE)) + if (!BooleanFlagOn(FCB->Flags, FCB_IS_PAGE_FILE)) { if (!ExAcquireResourceExclusiveLite(&FCB->MainResource, BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT))) @@ -1662,7 +1662,7 @@ VfatSetInformation( Status = STATUS_NOT_SUPPORTED; } - if (!(FCB->Flags & FCB_IS_PAGE_FILE)) + if (!BooleanFlagOn(FCB->Flags, FCB_IS_PAGE_FILE)) { ExReleaseResourceLite(&FCB->MainResource); } diff --git a/reactos/drivers/filesystems/fastfat/rw.c b/reactos/drivers/filesystems/fastfat/rw.c index ab6a332649a..86adf7173d7 100644 --- a/reactos/drivers/filesystems/fastfat/rw.c +++ b/reactos/drivers/filesystems/fastfat/rw.c @@ -547,7 +547,7 @@ VfatRead( LARGE_INTEGER ByteOffset; PVOID Buffer; ULONG BytesPerSector; - BOOLEAN PagingIo, CanWait; + BOOLEAN PagingIo, CanWait, IsVolume; ASSERT(IrpContext); @@ -586,6 +586,7 @@ VfatRead( BytesPerSector = IrpContext->DeviceExt->FatInfo.BytesPerSector; PagingIo = BooleanFlagOn(IrpContext->Irp->Flags, IRP_PAGING_IO); CanWait = BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT); + IsVolume = BooleanFlagOn(Fcb->Flags, FCB_IS_VOLUME); /* fail if file is a directory and no paged read */ if (*Fcb->Attributes & FILE_ATTRIBUTE_DIRECTORY && !PagingIo) @@ -596,7 +597,7 @@ VfatRead( DPRINT("'%wZ', Offset: %u, Length %u\n", &Fcb->PathNameU, ByteOffset.u.LowPart, Length); - if (ByteOffset.u.HighPart && !(Fcb->Flags & FCB_IS_VOLUME)) + if (ByteOffset.u.HighPart && !IsVolume) { Status = STATUS_INVALID_PARAMETER; goto ByeBye; @@ -616,7 +617,7 @@ VfatRead( goto ByeBye; } - if (IrpContext->Irp->Flags & (IRP_PAGING_IO | IRP_NOCACHE) || (Fcb->Flags & FCB_IS_VOLUME)) + if (IrpContext->Irp->Flags & (IRP_PAGING_IO | IRP_NOCACHE) || IsVolume) { if (ByteOffset.u.LowPart % BytesPerSector != 0 || Length % BytesPerSector != 0) { @@ -627,7 +628,7 @@ VfatRead( } } - if (Fcb->Flags & FCB_IS_VOLUME) + if (IsVolume) { Resource = &IrpContext->DeviceExt->DirResource; } @@ -770,7 +771,7 @@ VfatWrite( ULONG Length = 0; PVOID Buffer; ULONG BytesPerSector; - BOOLEAN PagingIo, CanWait; + BOOLEAN PagingIo, CanWait, IsVolume; ASSERT(IrpContext); @@ -806,6 +807,7 @@ VfatWrite( PagingIo = BooleanFlagOn(IrpContext->Irp->Flags, IRP_PAGING_IO); CanWait = BooleanFlagOn(IrpContext->Flags, IRPCONTEXT_CANWAIT); + IsVolume = BooleanFlagOn(Fcb->Flags, FCB_IS_VOLUME); /* fail if file is a directory and no paged read */ if (*Fcb->Attributes & FILE_ATTRIBUTE_DIRECTORY && !PagingIo) @@ -823,7 +825,7 @@ VfatWrite( Length = IrpContext->Stack->Parameters.Write.Length; BytesPerSector = IrpContext->DeviceExt->FatInfo.BytesPerSector; - if (ByteOffset.u.HighPart && !(Fcb->Flags & FCB_IS_VOLUME)) + if (ByteOffset.u.HighPart && !IsVolume) { Status = STATUS_INVALID_PARAMETER; goto ByeBye; @@ -840,7 +842,7 @@ VfatWrite( } } - if (IrpContext->Irp->Flags & (IRP_PAGING_IO|IRP_NOCACHE) || (Fcb->Flags & FCB_IS_VOLUME)) + if (IrpContext->Irp->Flags & (IRP_PAGING_IO|IRP_NOCACHE) || IsVolume) { if (ByteOffset.u.LowPart % BytesPerSector != 0 || Length % BytesPerSector != 0) { @@ -874,7 +876,7 @@ VfatWrite( } } - if (Fcb->Flags & FCB_IS_VOLUME) + if (IsVolume) { Resource = &IrpContext->DeviceExt->DirResource; } @@ -916,7 +918,7 @@ VfatWrite( } } - if (!CanWait && !(Fcb->Flags & FCB_IS_VOLUME)) + if (!CanWait && !IsVolume) { if (ByteOffset.u.LowPart + Length > Fcb->RFCB.AllocationSize.u.LowPart) {