https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b51b8ee2d527b7a7f640e4...
commit b51b8ee2d527b7a7f640e4a4a740738ce7d34d93 Author: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org AuthorDate: Sun Oct 11 23:42:02 2020 +0200 Commit: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org CommitDate: Sun Oct 18 20:56:16 2020 +0200
[SETUPLIB] Move the filesystem recognition helpers to their own file. --- base/setup/lib/CMakeLists.txt | 1 + base/setup/lib/fsutil.c | 294 +---------------------------- base/setup/lib/fsutil.h | 39 ---- base/setup/lib/setuplib.h | 1 + base/setup/lib/{fsutil.c => utils/fsrec.c} | 272 +------------------------- base/setup/lib/utils/fsrec.h | 49 +++++ base/setup/lib/utils/partlist.c | 2 +- 7 files changed, 58 insertions(+), 600 deletions(-)
diff --git a/base/setup/lib/CMakeLists.txt b/base/setup/lib/CMakeLists.txt index 0d2f3a8aeb5..ff23bc57d16 100644 --- a/base/setup/lib/CMakeLists.txt +++ b/base/setup/lib/CMakeLists.txt @@ -9,6 +9,7 @@ list(APPEND SOURCE utils/arcname.c utils/bldrsup.c utils/filesup.c + utils/fsrec.c utils/genlist.c utils/inicache.c utils/ntverrsrc.c diff --git a/base/setup/lib/fsutil.c b/base/setup/lib/fsutil.c index 89555184650..2abe8e4c7a8 100644 --- a/base/setup/lib/fsutil.c +++ b/base/setup/lib/fsutil.c @@ -16,8 +16,9 @@
#include "precomp.h"
-#include "fsutil.h" #include "partlist.h" +#include "fsrec.h" +#include "fsutil.h"
#include <fslib/vfatlib.h> #include <fslib/btrfslib.h> @@ -128,222 +129,6 @@ GetFileSystemByName( }
-// -// FileSystem recognition, using NT OS functionality -// - -/* NOTE: Ripped & adapted from base/system/autochk/autochk.c */ -NTSTATUS -GetFileSystemNameByHandle( - IN HANDLE PartitionHandle, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize) -{ - NTSTATUS Status; - IO_STATUS_BLOCK IoStatusBlock; - UCHAR Buffer[sizeof(FILE_FS_ATTRIBUTE_INFORMATION) + MAX_PATH * sizeof(WCHAR)]; - PFILE_FS_ATTRIBUTE_INFORMATION FileFsAttribute = (PFILE_FS_ATTRIBUTE_INFORMATION)Buffer; - - /* Retrieve the FS attributes */ - Status = NtQueryVolumeInformationFile(PartitionHandle, - &IoStatusBlock, - FileFsAttribute, - sizeof(Buffer), - FileFsAttributeInformation); - if (!NT_SUCCESS(Status)) - { - DPRINT1("NtQueryVolumeInformationFile failed, Status 0x%08lx\n", Status); - return Status; - } - - if (FileSystemNameSize < FileFsAttribute->FileSystemNameLength + sizeof(WCHAR)) - return STATUS_BUFFER_TOO_SMALL; - - return RtlStringCbCopyNW(FileSystemName, FileSystemNameSize, - FileFsAttribute->FileSystemName, - FileFsAttribute->FileSystemNameLength); -} - -NTSTATUS -GetFileSystemName_UStr( - IN PUNICODE_STRING PartitionPath, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize) -{ - NTSTATUS Status; - OBJECT_ATTRIBUTES ObjectAttributes; - HANDLE PartitionHandle; - IO_STATUS_BLOCK IoStatusBlock; - - /* Open the partition */ - InitializeObjectAttributes(&ObjectAttributes, - PartitionPath, - OBJ_CASE_INSENSITIVE, - NULL, - NULL); - Status = NtOpenFile(&PartitionHandle, - FILE_GENERIC_READ /* | SYNCHRONIZE */, - &ObjectAttributes, - &IoStatusBlock, - FILE_SHARE_READ | FILE_SHARE_WRITE, - 0 /* FILE_SYNCHRONOUS_IO_NONALERT */); - if (!NT_SUCCESS(Status)) - { - DPRINT1("Failed to open partition '%wZ', Status 0x%08lx\n", PartitionPath, Status); - return Status; - } - - /* Retrieve the FS attributes */ - Status = GetFileSystemNameByHandle(PartitionHandle, FileSystemName, FileSystemNameSize); - if (!NT_SUCCESS(Status)) - { - DPRINT1("GetFileSystemNameByHandle() failed for partition '%wZ', Status 0x%08lx\n", - PartitionPath, Status); - } - - /* Close the partition */ - NtClose(PartitionHandle); - - return Status; -} - -NTSTATUS -GetFileSystemName( - IN PCWSTR Partition, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize) -{ - UNICODE_STRING PartitionPath; - - RtlInitUnicodeString(&PartitionPath, Partition); - return GetFileSystemName_UStr(&PartitionPath, - FileSystemName, - FileSystemNameSize); -} - -NTSTATUS -InferFileSystemByHandle( - IN HANDLE PartitionHandle, - IN UCHAR PartitionType, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize) -{ - NTSTATUS Status; - - if (FileSystemNameSize < sizeof(WCHAR)) - return STATUS_BUFFER_TOO_SMALL; - - *FileSystemName = L'\0'; - - /* Try to infer a file system using NT file system recognition */ - Status = GetFileSystemNameByHandle(PartitionHandle, - FileSystemName, - FileSystemNameSize); - if (NT_SUCCESS(Status) && *FileSystemName) - { - goto Quit; - } - - /* - * Try to infer a preferred file system for this partition, given its ID. - * - * WARNING: This is partly a hack, since partitions with the same ID can - * be formatted with different file systems: for example, usual Linux - * partitions that are formatted in EXT2/3/4, ReiserFS, etc... have the - * same partition ID 0x83. - * - * The proper fix is to make a function that detects the existing FS - * from a given partition (not based on the partition ID). - * On the contrary, for unformatted partitions with a given ID, the - * following code is OK. - */ - if ((PartitionType == PARTITION_FAT_12) || - (PartitionType == PARTITION_FAT_16) || - (PartitionType == PARTITION_HUGE ) || - (PartitionType == PARTITION_XINT13)) - { - /* FAT12 or FAT16 */ - Status = RtlStringCbCopyW(FileSystemName, FileSystemNameSize, L"FAT"); - } - else if ((PartitionType == PARTITION_FAT32) || - (PartitionType == PARTITION_FAT32_XINT13)) - { - Status = RtlStringCbCopyW(FileSystemName, FileSystemNameSize, L"FAT32"); - } - else if (PartitionType == PARTITION_LINUX) - { - // WARNING: See the warning above. - /* Could also be EXT2/3/4, ReiserFS, ... */ - Status = RtlStringCbCopyW(FileSystemName, FileSystemNameSize, L"BTRFS"); - } - else if (PartitionType == PARTITION_IFS) - { - // WARNING: See the warning above. - /* Could also be HPFS */ - Status = RtlStringCbCopyW(FileSystemName, FileSystemNameSize, L"NTFS"); - } - -Quit: - if (*FileSystemName) - { - // WARNING: We cannot write on this FS yet! - if (PartitionType == PARTITION_IFS) - { - DPRINT1("Recognized file system '%S' that doesn't have write support yet!\n", - FileSystemName); - } - } - - DPRINT1("InferFileSystem -- PartitionType: 0x%02X ; FileSystem (guessed): %S\n", - PartitionType, *FileSystemName ? FileSystemName : L"None"); - - return Status; -} - -NTSTATUS -InferFileSystem( - IN PCWSTR Partition, - IN UCHAR PartitionType, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize) -{ - NTSTATUS Status; - UNICODE_STRING PartitionPath; - OBJECT_ATTRIBUTES ObjectAttributes; - HANDLE PartitionHandle; - IO_STATUS_BLOCK IoStatusBlock; - - /* Open the partition */ - RtlInitUnicodeString(&PartitionPath, Partition); - InitializeObjectAttributes(&ObjectAttributes, - &PartitionPath, - OBJ_CASE_INSENSITIVE, - NULL, - NULL); - Status = NtOpenFile(&PartitionHandle, - FILE_GENERIC_READ /* | SYNCHRONIZE */, - &ObjectAttributes, - &IoStatusBlock, - FILE_SHARE_READ | FILE_SHARE_WRITE, - 0 /* FILE_SYNCHRONOUS_IO_NONALERT */); - if (!NT_SUCCESS(Status)) - { - DPRINT1("Failed to open partition '%wZ', Status 0x%08lx\n", &PartitionPath, Status); - return Status; - } - - /* Retrieve the FS */ - Status = InferFileSystemByHandle(PartitionHandle, - PartitionType, - FileSystemName, - FileSystemNameSize); - - /* Close the partition */ - NtClose(PartitionHandle); - - return Status; -} - /** ChkdskEx() **/ NTSTATUS ChkdskFileSystem_UStr( @@ -453,81 +238,6 @@ FormatFileSystem( }
-UCHAR -FileSystemToPartitionType( - IN PCWSTR FileSystem, - IN PULARGE_INTEGER StartSector, - IN PULARGE_INTEGER SectorCount) -{ - ASSERT(FileSystem && StartSector && SectorCount); - - if (wcsicmp(FileSystem, L"FAT") == 0 || - wcsicmp(FileSystem, L"FAT32") == 0 || - wcsicmp(FileSystem, L"RAW") == 0) - { - if (SectorCount->QuadPart < 8192) - { - /* FAT12 CHS partition (disk is smaller than 4.1MB) */ - return PARTITION_FAT_12; - } - else if (StartSector->QuadPart < 1450560) - { - /* Partition starts below the 8.4GB boundary ==> CHS partition */ - - if (SectorCount->QuadPart < 65536) - { - /* FAT16 CHS partition (partition size < 32MB) */ - return PARTITION_FAT_16; - } - else if (SectorCount->QuadPart < 1048576) - { - /* FAT16 CHS partition (partition size < 512MB) */ - return PARTITION_HUGE; - } - else - { - /* FAT32 CHS partition (partition size >= 512MB) */ - return PARTITION_FAT32; - } - } - else - { - /* Partition starts above the 8.4GB boundary ==> LBA partition */ - - if (SectorCount->QuadPart < 1048576) - { - /* FAT16 LBA partition (partition size < 512MB) */ - return PARTITION_XINT13; - } - else - { - /* FAT32 LBA partition (partition size >= 512MB) */ - return PARTITION_FAT32_XINT13; - } - } - } - else if (wcsicmp(FileSystem, L"NTFS") == 0) - { - return PARTITION_IFS; - } - else if (wcsicmp(FileSystem, L"BTRFS") == 0 || - wcsicmp(FileSystem, L"EXT2") == 0 || - wcsicmp(FileSystem, L"EXT3") == 0 || - wcsicmp(FileSystem, L"EXT4") == 0 || - wcsicmp(FileSystem, L"FFS") == 0 || - wcsicmp(FileSystem, L"REISERFS") == 0) - { - return PARTITION_LINUX; - } - else - { - /* Unknown file system */ - DPRINT1("Unknown file system '%S'\n", FileSystem); - return PARTITION_ENTRY_UNUSED; - } -} - - // // Formatting routines // diff --git a/base/setup/lib/fsutil.h b/base/setup/lib/fsutil.h index f6c83e953f7..dd2fb3e5964 100644 --- a/base/setup/lib/fsutil.h +++ b/base/setup/lib/fsutil.h @@ -16,38 +16,6 @@ GetRegisteredFileSystems( IN ULONG Index, OUT PCWSTR* FileSystemName);
-NTSTATUS -GetFileSystemNameByHandle( - IN HANDLE PartitionHandle, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize); - -NTSTATUS -GetFileSystemName_UStr( - IN PUNICODE_STRING PartitionPath, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize); - -NTSTATUS -GetFileSystemName( - IN PCWSTR Partition, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize); - -NTSTATUS -InferFileSystemByHandle( - IN HANDLE PartitionHandle, - IN UCHAR PartitionType, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize); - -NTSTATUS -InferFileSystem( - IN PCWSTR Partition, - IN UCHAR PartitionType, - IN OUT PWSTR FileSystemName, - IN SIZE_T FileSystemNameSize); -
/** ChkdskEx() **/ NTSTATUS @@ -93,13 +61,6 @@ FormatFileSystem( IN PFMIFSCALLBACK Callback);
-UCHAR -FileSystemToPartitionType( - IN PCWSTR FileSystem, - IN PULARGE_INTEGER StartSector, - IN PULARGE_INTEGER SectorCount); - - // // Formatting routines // diff --git a/base/setup/lib/setuplib.h b/base/setup/lib/setuplib.h index 7149d1ffb31..15358f24885 100644 --- a/base/setup/lib/setuplib.h +++ b/base/setup/lib/setuplib.h @@ -33,6 +33,7 @@ extern HANDLE ProcessHeap; #include "utils/bldrsup.h" #include "bootsup.h" #include "utils/filesup.h" +#include "utils/fsrec.h" #include "fsutil.h" #include "utils/genlist.h" #include "utils/inicache.h" diff --git a/base/setup/lib/fsutil.c b/base/setup/lib/utils/fsrec.c similarity index 56% copy from base/setup/lib/fsutil.c copy to base/setup/lib/utils/fsrec.c index 89555184650..918e2fb69a3 100644 --- a/base/setup/lib/fsutil.c +++ b/base/setup/lib/utils/fsrec.c @@ -1,137 +1,23 @@ /* * PROJECT: ReactOS Setup Library * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) - * PURPOSE: Filesystem support functions - * COPYRIGHT: Copyright 2003-2019 Casper S. Hornstrup (chorns@users.sourceforge.net) - * Copyright 2017-2019 Hermes Belusca-Maito + * PURPOSE: Filesystem Recognition support functions, + * using NT OS functionality. + * COPYRIGHT: Copyright 2017-2020 Hermes Belusca-Maito */
-// -// See also: https://git.reactos.org/?p=reactos.git;a=blob;f=reactos/dll/win32/fmifs/init... -// for how to get FS providers in a dynamic way. In the (near) future we may -// consider merging some of this code with us into a fmifs / fsutil / fslib library... -// - /* INCLUDES *****************************************************************/
#include "precomp.h"
-#include "fsutil.h" -#include "partlist.h" - -#include <fslib/vfatlib.h> -#include <fslib/btrfslib.h> -// #include <fslib/ext2lib.h> -// #include <fslib/ntfslib.h> +#include "fsrec.h"
#define NDEBUG #include <debug.h>
-/* LOCALS *******************************************************************/ - -/** IFS_PROVIDER **/ -typedef struct _FILE_SYSTEM -{ - PCWSTR FileSystemName; - FORMATEX FormatFunc; - CHKDSKEX ChkdskFunc; -} FILE_SYSTEM, *PFILE_SYSTEM; - -/* The list of file systems on which we can install ReactOS */ -static FILE_SYSTEM RegisteredFileSystems[] = -{ - /* NOTE: The FAT formatter automatically determines - * whether it will use FAT-16 or FAT-32. */ - { L"FAT" , VfatFormat, VfatChkdsk }, -#if 0 - { L"FAT32", VfatFormat, VfatChkdsk }, // Do we support specific FAT sub-formats specifications? - { L"FATX" , VfatxFormat, VfatxChkdsk }, - { L"NTFS" , NtfsFormat, NtfsChkdsk }, -#endif - { L"BTRFS", BtrfsFormatEx, BtrfsChkdskEx }, -#if 0 - { L"EXT2" , Ext2Format, Ext2Chkdsk }, - { L"EXT3" , Ext2Format, Ext2Chkdsk }, - { L"EXT4" , Ext2Format, Ext2Chkdsk }, - { L"FFS" , FfsFormat , FfsChkdsk }, - { L"REISERFS", ReiserfsFormat, ReiserfsChkdsk }, -#endif -}; - - /* FUNCTIONS ****************************************************************/
-/** QueryAvailableFileSystemFormat() **/ -BOOLEAN -GetRegisteredFileSystems( - IN ULONG Index, - OUT PCWSTR* FileSystemName) -{ - if (Index >= ARRAYSIZE(RegisteredFileSystems)) - return FALSE; - - *FileSystemName = RegisteredFileSystems[Index].FileSystemName; - - return TRUE; -} - - -/** GetProvider() **/ -static PFILE_SYSTEM -GetFileSystemByName( - IN PCWSTR FileSystemName) -{ -#if 0 // Reenable when the list of registered FSes will again be dynamic - - PLIST_ENTRY ListEntry; - PFILE_SYSTEM_ITEM Item; - - ListEntry = List->ListHead.Flink; - while (ListEntry != &List->ListHead) - { - Item = CONTAINING_RECORD(ListEntry, FILE_SYSTEM_ITEM, ListEntry); - if (Item->FileSystemName && - (wcsicmp(FileSystemName, Item->FileSystemName) == 0 || - /* Map FAT32 back to FAT */ - (wcsicmp(FileSystemName, L"FAT32") == 0 && wcsicmp(Item->FileSystemName, L"FAT") == 0))) - { - return Item; - } - - ListEntry = ListEntry->Flink; - } - -#else - - ULONG Count = ARRAYSIZE(RegisteredFileSystems); - PFILE_SYSTEM FileSystems = RegisteredFileSystems; - - ASSERT(FileSystems && Count != 0); - - while (Count--) - { - if (FileSystems->FileSystemName && - (wcsicmp(FileSystemName, FileSystems->FileSystemName) == 0 || - /* Map FAT32 back to FAT */ - (wcsicmp(FileSystemName, L"FAT32") == 0 && wcsicmp(FileSystems->FileSystemName, L"FAT") == 0))) - { - return FileSystems; - } - - ++FileSystems; - } - -#endif - - return NULL; -} - - -// -// FileSystem recognition, using NT OS functionality -// - /* NOTE: Ripped & adapted from base/system/autochk/autochk.c */ NTSTATUS GetFileSystemNameByHandle( @@ -344,115 +230,6 @@ InferFileSystem( return Status; }
-/** ChkdskEx() **/ -NTSTATUS -ChkdskFileSystem_UStr( - IN PUNICODE_STRING DriveRoot, - IN PCWSTR FileSystemName, - IN BOOLEAN FixErrors, - IN BOOLEAN Verbose, - IN BOOLEAN CheckOnlyIfDirty, - IN BOOLEAN ScanDrive, - IN PFMIFSCALLBACK Callback) -{ - PFILE_SYSTEM FileSystem; - - FileSystem = GetFileSystemByName(FileSystemName); - - if (!FileSystem || !FileSystem->ChkdskFunc) - { - // BOOLEAN Argument = FALSE; - // Callback(DONE, 0, &Argument); - return STATUS_NOT_SUPPORTED; - } - - return FileSystem->ChkdskFunc(DriveRoot, - FixErrors, - Verbose, - CheckOnlyIfDirty, - ScanDrive, - Callback); -} - -NTSTATUS -ChkdskFileSystem( - IN PCWSTR DriveRoot, - IN PCWSTR FileSystemName, - IN BOOLEAN FixErrors, - IN BOOLEAN Verbose, - IN BOOLEAN CheckOnlyIfDirty, - IN BOOLEAN ScanDrive, - IN PFMIFSCALLBACK Callback) -{ - UNICODE_STRING DriveRootU; - - RtlInitUnicodeString(&DriveRootU, DriveRoot); - return ChkdskFileSystem_UStr(&DriveRootU, - FileSystemName, - FixErrors, - Verbose, - CheckOnlyIfDirty, - ScanDrive, - Callback); -} - - -/** FormatEx() **/ -NTSTATUS -FormatFileSystem_UStr( - IN PUNICODE_STRING DriveRoot, - IN PCWSTR FileSystemName, - IN FMIFS_MEDIA_FLAG MediaFlag, - IN PUNICODE_STRING Label, - IN BOOLEAN QuickFormat, - IN ULONG ClusterSize, - IN PFMIFSCALLBACK Callback) -{ - PFILE_SYSTEM FileSystem; - - FileSystem = GetFileSystemByName(FileSystemName); - - if (!FileSystem || !FileSystem->FormatFunc) - { - // BOOLEAN Argument = FALSE; - // Callback(DONE, 0, &Argument); - return STATUS_NOT_SUPPORTED; - } - - return FileSystem->FormatFunc(DriveRoot, - MediaFlag, - Label, - QuickFormat, - ClusterSize, - Callback); -} - -NTSTATUS -FormatFileSystem( - IN PCWSTR DriveRoot, - IN PCWSTR FileSystemName, - IN FMIFS_MEDIA_FLAG MediaFlag, - IN PCWSTR Label, - IN BOOLEAN QuickFormat, - IN ULONG ClusterSize, - IN PFMIFSCALLBACK Callback) -{ - UNICODE_STRING DriveRootU; - UNICODE_STRING LabelU; - - RtlInitUnicodeString(&DriveRootU, DriveRoot); - RtlInitUnicodeString(&LabelU, Label); - - return FormatFileSystem_UStr(&DriveRootU, - FileSystemName, - MediaFlag, - &LabelU, - QuickFormat, - ClusterSize, - Callback); -} - - UCHAR FileSystemToPartitionType( IN PCWSTR FileSystem, @@ -527,45 +304,4 @@ FileSystemToPartitionType( } }
- -// -// Formatting routines -// - -BOOLEAN -PreparePartitionForFormatting( - IN struct _PARTENTRY* PartEntry, - IN PCWSTR FileSystemName) -{ - UCHAR PartitionType; - - if (!FileSystemName || !*FileSystemName) - { - DPRINT1("No file system specified?\n"); - return FALSE; - } - - PartitionType = FileSystemToPartitionType(FileSystemName, - &PartEntry->StartSector, - &PartEntry->SectorCount); - if (PartitionType == PARTITION_ENTRY_UNUSED) - { - /* Unknown file system */ - DPRINT1("Unknown file system '%S'\n", FileSystemName); - return FALSE; - } - - SetPartitionType(PartEntry, PartitionType); - -// -// FIXME: Do this now, or after the partition was actually formatted?? -// - /* Set the new partition's file system proper */ - RtlStringCbCopyW(PartEntry->FileSystem, - sizeof(PartEntry->FileSystem), - FileSystemName); - - return TRUE; -} - /* EOF */ diff --git a/base/setup/lib/utils/fsrec.h b/base/setup/lib/utils/fsrec.h new file mode 100644 index 00000000000..197cdd6e9f6 --- /dev/null +++ b/base/setup/lib/utils/fsrec.h @@ -0,0 +1,49 @@ +/* + * PROJECT: ReactOS Setup Library + * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+) + * PURPOSE: Filesystem Recognition support functions, + * using NT OS functionality. + * COPYRIGHT: Copyright 2017-2020 Hermes Belusca-Maito + */ + +#pragma once + +NTSTATUS +GetFileSystemNameByHandle( + IN HANDLE PartitionHandle, + IN OUT PWSTR FileSystemName, + IN SIZE_T FileSystemNameSize); + +NTSTATUS +GetFileSystemName_UStr( + IN PUNICODE_STRING PartitionPath, + IN OUT PWSTR FileSystemName, + IN SIZE_T FileSystemNameSize); + +NTSTATUS +GetFileSystemName( + IN PCWSTR Partition, + IN OUT PWSTR FileSystemName, + IN SIZE_T FileSystemNameSize); + +NTSTATUS +InferFileSystemByHandle( + IN HANDLE PartitionHandle, + IN UCHAR PartitionType, + IN OUT PWSTR FileSystemName, + IN SIZE_T FileSystemNameSize); + +NTSTATUS +InferFileSystem( + IN PCWSTR Partition, + IN UCHAR PartitionType, + IN OUT PWSTR FileSystemName, + IN SIZE_T FileSystemNameSize); + +UCHAR +FileSystemToPartitionType( + IN PCWSTR FileSystem, + IN PULARGE_INTEGER StartSector, + IN PULARGE_INTEGER SectorCount); + +/* EOF */ diff --git a/base/setup/lib/utils/partlist.c b/base/setup/lib/utils/partlist.c index 2e635954134..3837a83e255 100644 --- a/base/setup/lib/utils/partlist.c +++ b/base/setup/lib/utils/partlist.c @@ -10,7 +10,7 @@ #include <ntddscsi.h>
#include "partlist.h" -#include "fsutil.h" +#include "fsrec.h" #include "registry.h"
#define NDEBUG