[MKHIVE/USETUP]
[reactos.git] / reactos / base / setup / usetup / format.c
1 /*
2 * ReactOS kernel
3 * Copyright (C) 2003 ReactOS Team
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 /* COPYRIGHT: See COPYING in the top level directory
20 * PROJECT: ReactOS text-mode setup
21 * FILE: subsys/system/usetup/format.c
22 * PURPOSE: Filesystem format support functions
23 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
24 */
25
26 /* INCLUDES *****************************************************************/
27
28 #include "usetup.h"
29
30 #define NDEBUG
31 #include <debug.h>
32
33 static PPROGRESSBAR FormatProgressBar = NULL;
34
35 /* FUNCTIONS ****************************************************************/
36
37 static BOOLEAN NTAPI
38 FormatCallback(
39 IN CALLBACKCOMMAND Command,
40 IN ULONG Modifier,
41 IN PVOID Argument)
42 {
43 switch (Command)
44 {
45 case PROGRESS:
46 {
47 PULONG Percent;
48
49 Percent = (PULONG)Argument;
50 DPRINT("%lu percent completed\n", *Percent);
51
52 ProgressSetStep(FormatProgressBar, *Percent);
53 break;
54 }
55
56 /*case OUTPUT:
57 {
58 PTEXTOUTPUT Output;
59 output = (PTEXTOUTPUT) Argument;
60 DPRINT("%s\n", output->Output);
61 break;
62 }*/
63
64 case DONE:
65 {
66 /*PBOOLEAN Success;*/
67 DPRINT("Done\n");
68
69 /*Success = (PBOOLEAN)Argument;
70 if (*Success == FALSE)
71 {
72 DPRINT("FormatEx was unable to complete successfully.\n\n");
73 }*/
74 break;
75 }
76
77 default:
78 DPRINT("Unknown callback %lu\n", (ULONG)Command);
79 break;
80 }
81
82 return TRUE;
83 }
84
85 NTSTATUS
86 FormatPartition(
87 IN PUNICODE_STRING DriveRoot,
88 IN PFILE_SYSTEM_ITEM FileSystem)
89 {
90 NTSTATUS Status;
91
92 if (!FileSystem->FormatFunc)
93 return STATUS_NOT_SUPPORTED;
94
95 FormatProgressBar = CreateProgressBar(6,
96 yScreen - 14,
97 xScreen - 7,
98 yScreen - 10,
99 10,
100 24,
101 TRUE,
102 MUIGetString(STRING_FORMATTINGDISK));
103
104 ProgressSetStepCount(FormatProgressBar, 100);
105
106 Status = FileSystem->FormatFunc(DriveRoot,
107 FMIFS_HARDDISK, /* MediaFlag */
108 NULL, /* Label */
109 FileSystem->QuickFormat, /* QuickFormat */
110 0, /* ClusterSize */
111 FormatCallback); /* Callback */
112
113 DestroyProgressBar(FormatProgressBar);
114 FormatProgressBar = NULL;
115
116 DPRINT("FormatPartition() finished with status 0x%08lx\n", Status);
117
118 return Status;
119 }
120
121 /* EOF */