diff --git a/reactos/drivers/filesystems/ntfs/fsctl.c b/reactos/drivers/filesystems/ntfs/fsctl.c index ee3b05b088e..c3bf5520bf7 100644 --- a/reactos/drivers/filesystems/ntfs/fsctl.c +++ b/reactos/drivers/filesystems/ntfs/fsctl.c @@ -167,6 +167,28 @@ ByeBye: } +static +ULONG +NtfsQueryMftZoneReservation(VOID) +{ + ULONG ZoneReservation = 1; + RTL_QUERY_REGISTRY_TABLE QueryTable[2]; + + RtlZeroMemory(QueryTable, sizeof(QueryTable)); + QueryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT; + QueryTable[0].Name = L"NtfsMftZoneReservation"; + QueryTable[0].EntryContext = &ZoneReservation; + + RtlQueryRegistryValues(RTL_REGISTRY_CONTROL, + L"FileSystem", + QueryTable, + NULL, + NULL); + + return ZoneReservation; +} + + static NTSTATUS NtfsGetVolumeData(PDEVICE_OBJECT DeviceObject, @@ -362,6 +384,8 @@ NtfsGetVolumeData(PDEVICE_OBJECT DeviceObject, ExFreePool(VolumeRecord); + NtfsInfo->MftZoneReservation = NtfsQueryMftZoneReservation(); + return Status; } diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index 37ed51982a9..44b8874706e 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -75,6 +75,7 @@ typedef struct _NTFS_INFO UCHAR MinorVersion; USHORT Flags; + ULONG MftZoneReservation; } NTFS_INFO, *PNTFS_INFO; #define NTFS_TYPE_CCB '20SF'