diff --git a/reactos/drivers/filesystems/ntfs/dirctl.c b/reactos/drivers/filesystems/ntfs/dirctl.c index a9d16fdb12d..53e70ba8f8f 100644 --- a/reactos/drivers/filesystems/ntfs/dirctl.c +++ b/reactos/drivers/filesystems/ntfs/dirctl.c @@ -298,6 +298,13 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext) FileInformationClass = Stack->Parameters.QueryDirectory.FileInformationClass; FileIndex = Stack->Parameters.QueryDirectory.FileIndex; + if (NtfsFCBIsCompressed(Fcb)) + { + DPRINT1("Compressed directory!\n"); + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; + } + if (SearchPattern != NULL) { if (!Ccb->DirectorySearchPattern) diff --git a/reactos/drivers/filesystems/ntfs/fcb.c b/reactos/drivers/filesystems/ntfs/fcb.c index 278ea3ee9df..e3ac61fa8e4 100644 --- a/reactos/drivers/filesystems/ntfs/fcb.c +++ b/reactos/drivers/filesystems/ntfs/fcb.c @@ -137,6 +137,12 @@ NtfsFCBIsReparsePoint(PNTFS_FCB Fcb) } +BOOLEAN +NtfsFCBIsCompressed(PNTFS_FCB Fcb) +{ + return ((Fcb->Entry.FileAttributes & NTFS_FILE_TYPE_COMPRESSED) == NTFS_FILE_TYPE_COMPRESSED); +} + BOOLEAN NtfsFCBIsRoot(PNTFS_FCB Fcb) { diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index 037bbe4e999..0ecd3159636 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -642,6 +642,9 @@ NtfsFCBIsDirectory(PNTFS_FCB Fcb); BOOLEAN NtfsFCBIsReparsePoint(PNTFS_FCB Fcb); +BOOLEAN +NtfsFCBIsCompressed(PNTFS_FCB Fcb); + BOOLEAN NtfsFCBIsRoot(PNTFS_FCB Fcb); diff --git a/reactos/drivers/filesystems/ntfs/rw.c b/reactos/drivers/filesystems/ntfs/rw.c index 572bd850783..13e9d86595e 100644 --- a/reactos/drivers/filesystems/ntfs/rw.c +++ b/reactos/drivers/filesystems/ntfs/rw.c @@ -71,6 +71,13 @@ NtfsReadFile(PDEVICE_EXTENSION DeviceExt, Fcb = (PNTFS_FCB)FileObject->FsContext; + if (NtfsFCBIsCompressed(Fcb)) + { + DPRINT1("Compressed file!\n"); + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; + } + FileRecord = ExAllocatePoolWithTag(NonPagedPool, DeviceExt->NtfsInfo.BytesPerFileRecord, TAG_NTFS); if (FileRecord == NULL) {