mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 07:13:01 +00:00
[SETUPLIB][USETUP] Factor out the usage of FS provider structures.
Similarly to FMIFS this structure should be private. Instead file-system names are passed to the helper functions, allowing to use the names returned by the FS drivers. The names are then internally mapped to the corresponding FS providers. In particular this allows to handle the "RAW" file-system and to assign the 'Unformatted' flag to partitions having this FS. Finally this helps us refining the checks performed to see whether the current "active" system partition uses a supported file-system.
This commit is contained in:
parent
b18da6730e
commit
c1fbc2d651
12 changed files with 765 additions and 414 deletions
|
@ -2,40 +2,113 @@
|
|||
* PROJECT: ReactOS Setup Library
|
||||
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
* PURPOSE: Filesystem support functions
|
||||
* COPYRIGHT: Copyright 2003-2018 Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||
* Copyright 2017-2018 Hermes Belusca-Maito
|
||||
* COPYRIGHT: Copyright 2003-2019 Casper S. Hornstrup (chorns@users.sourceforge.net)
|
||||
* Copyright 2017-2019 Hermes Belusca-Maito
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <fmifs/fmifs.h>
|
||||
|
||||
typedef struct _FILE_SYSTEM
|
||||
{
|
||||
PCWSTR FileSystemName;
|
||||
FORMATEX FormatFunc;
|
||||
CHKDSKEX ChkdskFunc;
|
||||
} FILE_SYSTEM, *PFILE_SYSTEM;
|
||||
/** QueryAvailableFileSystemFormat() **/
|
||||
BOOLEAN
|
||||
GetRegisteredFileSystems(
|
||||
IN ULONG Index,
|
||||
OUT PCWSTR* FileSystemName);
|
||||
|
||||
PFILE_SYSTEM
|
||||
GetRegisteredFileSystems(OUT PULONG Count);
|
||||
NTSTATUS
|
||||
GetFileSystemNameByHandle(
|
||||
IN HANDLE PartitionHandle,
|
||||
IN OUT PWSTR FileSystemName,
|
||||
IN SIZE_T FileSystemNameSize);
|
||||
|
||||
PFILE_SYSTEM
|
||||
GetFileSystemByName(
|
||||
// IN PFILE_SYSTEM_LIST List,
|
||||
IN PCWSTR FileSystemName);
|
||||
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
|
||||
ChkdskFileSystem_UStr(
|
||||
IN PUNICODE_STRING DriveRoot,
|
||||
IN PCWSTR FileSystemName,
|
||||
IN BOOLEAN FixErrors,
|
||||
IN BOOLEAN Verbose,
|
||||
IN BOOLEAN CheckOnlyIfDirty,
|
||||
IN BOOLEAN ScanDrive,
|
||||
IN PFMIFSCALLBACK Callback);
|
||||
|
||||
NTSTATUS
|
||||
ChkdskFileSystem(
|
||||
IN PCWSTR DriveRoot,
|
||||
IN PCWSTR FileSystemName,
|
||||
IN BOOLEAN FixErrors,
|
||||
IN BOOLEAN Verbose,
|
||||
IN BOOLEAN CheckOnlyIfDirty,
|
||||
IN BOOLEAN ScanDrive,
|
||||
IN PFMIFSCALLBACK 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);
|
||||
|
||||
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);
|
||||
|
||||
|
||||
UCHAR
|
||||
FileSystemToPartitionType(
|
||||
IN PCWSTR FileSystem,
|
||||
IN PULARGE_INTEGER StartSector,
|
||||
IN PULARGE_INTEGER SectorCount);
|
||||
|
||||
|
||||
//
|
||||
// Formatting routines
|
||||
//
|
||||
|
||||
struct _PARTENTRY; // Defined in partlist.h
|
||||
|
||||
PFILE_SYSTEM
|
||||
GetFileSystem(
|
||||
// IN PFILE_SYSTEM_LIST FileSystemList,
|
||||
IN struct _PARTENTRY* PartEntry);
|
||||
|
||||
|
||||
BOOLEAN
|
||||
PreparePartitionForFormatting(
|
||||
IN struct _PARTENTRY* PartEntry,
|
||||
IN PFILE_SYSTEM FileSystem);
|
||||
IN PCWSTR FileSystemName);
|
||||
|
||||
/* EOF */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue