Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219/* * PROJECT: ReactOS Setup Library * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) * PURPOSE: Filesystem Format and ChkDsk support functions * COPYRIGHT: Copyright 2003-2019 Casper S. Hornstrup <chorns@users.sourceforge.net> * Copyright 2017-2024 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org> */
#pragma once
#include <fmifs/fmifs.h>
/** QueryAvailableFileSystemFormat() **/BOOLEANNTAPIGetRegisteredFileSystems( IN ULONG Index, OUT PCWSTR* FileSystemName);
/** ChkdskEx() **/NTSTATUSNTAPIChkdskFileSystem_UStr( _In_ PUNICODE_STRING DriveRoot, _In_ PCWSTR FileSystemName, _In_ BOOLEAN FixErrors, _In_ BOOLEAN Verbose, _In_ BOOLEAN CheckOnlyIfDirty, _In_ BOOLEAN ScanDrive, _In_opt_ PFMIFSCALLBACK Callback);
NTSTATUSNTAPIChkdskFileSystem( _In_ PCWSTR DriveRoot, _In_ PCWSTR FileSystemName, _In_ BOOLEAN FixErrors, _In_ BOOLEAN Verbose, _In_ BOOLEAN CheckOnlyIfDirty, _In_ BOOLEAN ScanDrive, _In_opt_ PFMIFSCALLBACK Callback);
/** FormatEx() **/NTSTATUSNTAPIFormatFileSystem_UStr( _In_ PUNICODE_STRING DriveRoot, _In_ PCWSTR FileSystemName, _In_ FMIFS_MEDIA_FLAG MediaFlag, _In_opt_ PUNICODE_STRING Label, _In_ BOOLEAN QuickFormat, _In_ ULONG ClusterSize, _In_opt_ PFMIFSCALLBACK Callback);
NTSTATUSNTAPIFormatFileSystem( _In_ PCWSTR DriveRoot, _In_ PCWSTR FileSystemName, _In_ FMIFS_MEDIA_FLAG MediaFlag, _In_opt_ PCWSTR Label, _In_ BOOLEAN QuickFormat, _In_ ULONG ClusterSize, _In_opt_ PFMIFSCALLBACK Callback);
//// Bootsector routines//
#define FAT_BOOTSECTOR_SIZE (1 * SECTORSIZE)#define FAT32_BOOTSECTOR_SIZE (1 * SECTORSIZE) // Counts only the primary sector.#define BTRFS_BOOTSECTOR_SIZE (3 * SECTORSIZE)#define NTFS_BOOTSECTOR_SIZE (16 * SECTORSIZE)
typedef NTSTATUS(/*NTAPI*/ *PFS_INSTALL_BOOTCODE)( IN PCWSTR SrcPath, // Bootsector source file (on the installation medium) IN HANDLE DstPath, // Where to save the bootsector built from the source + partition information IN HANDLE RootPartition); // Partition holding the (old) bootsector data information
NTSTATUSInstallFatBootCode( IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition);
#define InstallFat12BootCode InstallFatBootCode#define InstallFat16BootCode InstallFatBootCode
NTSTATUSInstallFat32BootCode( IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition);
NTSTATUSInstallBtrfsBootCode( IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition);
NTSTATUSInstallNtfsBootCode( IN PCWSTR SrcPath, IN HANDLE DstPath, IN HANDLE RootPartition);
//// Formatting routines//
NTSTATUSNTAPIChkdskPartition( _In_ PPARTENTRY PartEntry, _In_ BOOLEAN FixErrors, _In_ BOOLEAN Verbose, _In_ BOOLEAN CheckOnlyIfDirty, _In_ BOOLEAN ScanDrive, _In_opt_ PFMIFSCALLBACK Callback);
NTSTATUSNTAPIFormatPartition( _In_ PPARTENTRY PartEntry, _In_ PCWSTR FileSystemName, _In_ FMIFS_MEDIA_FLAG MediaFlag, _In_opt_ PCWSTR Label, _In_ BOOLEAN QuickFormat, _In_ ULONG ClusterSize, _In_opt_ PFMIFSCALLBACK Callback);
//// FileSystem Volume Operations Queue//
typedef enum _FSVOLNOTIFY{ FSVOLNOTIFY_STARTQUEUE = 0, FSVOLNOTIFY_ENDQUEUE, FSVOLNOTIFY_STARTSUBQUEUE, FSVOLNOTIFY_ENDSUBQUEUE,// FSVOLNOTIFY_STARTPARTITION, FSVOLNOTIFY_ENDPARTITION, FSVOLNOTIFY_PARTITIONERROR, FSVOLNOTIFY_STARTFORMAT, FSVOLNOTIFY_ENDFORMAT, FSVOLNOTIFY_FORMATERROR, FSVOLNOTIFY_STARTCHECK, FSVOLNOTIFY_ENDCHECK, FSVOLNOTIFY_CHECKERROR, /**/ChangeSystemPartition/**/ // FIXME: Deprecate!} FSVOLNOTIFY;
typedef enum _FSVOL_OP{/* Operations ****/ FSVOL_FORMAT = 0, FSVOL_CHECK,/* Response actions ****/ FSVOL_ABORT = 0, FSVOL_DOIT, FSVOL_RETRY = FSVOL_DOIT, FSVOL_SKIP,} FSVOL_OP;
typedef struct _FORMAT_VOLUME_INFO{ PVOLENTRY Volume; // PCWSTR NtPathPartition; NTSTATUS ErrorStatus;
/* Input information given by the 'FSVOLNOTIFY_STARTFORMAT' step ****/ PCWSTR FileSystemName; FMIFS_MEDIA_FLAG MediaFlag; PCWSTR Label; BOOLEAN QuickFormat; ULONG ClusterSize; PFMIFSCALLBACK Callback;
} FORMAT_VOLUME_INFO, *PFORMAT_VOLUME_INFO;
typedef struct _CHECK_VOLUME_INFO{ PVOLENTRY Volume; // PCWSTR NtPathPartition; NTSTATUS ErrorStatus;
/* Input information given by the 'FSVOLNOTIFY_STARTCHECK' step ****/ BOOLEAN FixErrors; BOOLEAN Verbose; BOOLEAN CheckOnlyIfDirty; BOOLEAN ScanDrive; PFMIFSCALLBACK Callback;
} CHECK_VOLUME_INFO, *PCHECK_VOLUME_INFO;
typedef FSVOL_OP(CALLBACK *PFSVOL_CALLBACK)( _In_opt_ PVOID Context, _In_ FSVOLNOTIFY FormatStatus, _In_ ULONG_PTR Param1, _In_ ULONG_PTR Param2);
BOOLEANNTAPIFsVolCommitOpsQueue( _In_ PPARTLIST PartitionList, _In_ PVOLENTRY SystemVolume, _In_ PVOLENTRY InstallVolume, _In_opt_ PFSVOL_CALLBACK FsVolCallback, _In_opt_ PVOID Context);
/* EOF */