/* * PROJECT: ReactOS text-mode setup * 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 Casper S. Hornstrup * Copyright 2006 Hervé Poussineau * Copyright 2024 Hermès Bélusca-Maïto */ /* INCLUDES ******************************************************************/ #include "usetup.h" #define NDEBUG #include static PPROGRESSBAR ProgressBar = NULL; /* FORMAT FUNCTIONS **********************************************************/ static BOOLEAN NTAPI FormatCallback( _In_ CALLBACKCOMMAND Command, _In_ ULONG Modifier, _In_ PVOID Argument) { switch (Command) { case PROGRESS: { PULONG Percent = (PULONG)Argument; DPRINT("%lu percent completed\n", *Percent); ProgressSetStep(ProgressBar, *Percent); break; } #if 0 case OUTPUT: { PTEXTOUTPUT output = (PTEXTOUTPUT)Argument; DPRINT("%s\n", output->Output); break; } #endif case DONE: { #if 0 PBOOLEAN Success = (PBOOLEAN)Argument; if (*Success == FALSE) { DPRINT("FormatEx was unable to complete successfully.\n\n"); } #endif DPRINT("Done\n"); break; } default: DPRINT("Unknown callback %lu\n", (ULONG)Command); break; } return TRUE; } VOID StartFormat( _Inout_ PFORMAT_VOLUME_INFO FmtInfo, _In_ PFILE_SYSTEM_ITEM SelectedFileSystem) { ASSERT(SelectedFileSystem && SelectedFileSystem->FileSystem); // TODO: Think about which values could be defaulted... FmtInfo->FileSystemName = SelectedFileSystem->FileSystem; FmtInfo->MediaFlag = FMIFS_HARDDISK; FmtInfo->Label = NULL; FmtInfo->QuickFormat = SelectedFileSystem->QuickFormat; FmtInfo->ClusterSize = 0; FmtInfo->Callback = FormatCallback; ProgressBar = CreateProgressBar(6, yScreen - 14, xScreen - 7, yScreen - 10, 10, 24, TRUE, MUIGetString(STRING_FORMATTINGPART)); ProgressSetStepCount(ProgressBar, 100); } VOID EndFormat( _In_ NTSTATUS Status) { DestroyProgressBar(ProgressBar); ProgressBar = NULL; DPRINT("FormatPartition() finished with status 0x%08lx\n", Status); } /* CHKDSK FUNCTIONS **********************************************************/ static BOOLEAN NTAPI ChkdskCallback( _In_ CALLBACKCOMMAND Command, _In_ ULONG Modifier, _In_ PVOID Argument) { switch (Command) { default: DPRINT("Unknown callback %lu\n", (ULONG)Command); break; } return TRUE; } VOID StartCheck( _Inout_ PCHECK_VOLUME_INFO ChkInfo) { // TODO: Think about which values could be defaulted... ChkInfo->FixErrors = TRUE; ChkInfo->Verbose = FALSE; ChkInfo->CheckOnlyIfDirty = TRUE; ChkInfo->ScanDrive = FALSE; ChkInfo->Callback = ChkdskCallback; ProgressBar = CreateProgressBar(6, yScreen - 14, xScreen - 7, yScreen - 10, 10, 24, TRUE, MUIGetString(STRING_CHECKINGDISK)); ProgressSetStepCount(ProgressBar, 100); } VOID EndCheck( _In_ NTSTATUS Status) { DestroyProgressBar(ProgressBar); ProgressBar = NULL; DPRINT("ChkdskPartition() finished with status 0x%08lx\n", Status); } /* EOF */