[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
38 BOOLEAN
39 NTAPI
40 FormatCallback(
41 IN CALLBACKCOMMAND Command,
42 IN ULONG Modifier,
43 IN PVOID Argument)
44 {
45 switch (Command)
46 {
47 case PROGRESS:
48 {
49 PULONG Percent;
50
51 Percent = (PULONG)Argument;
52 DPRINT("%lu percent completed\n", *Percent);
53
54 ProgressSetStep(FormatProgressBar, *Percent);
55 break;
56 }
57
58 /*case OUTPUT:
59 {
60 PTEXTOUTPUT Output;
61 output = (PTEXTOUTPUT) Argument;
62 DPRINT("%s\n", output->Output);
63 break;
64 }*/
65
66 case DONE:
67 {
68 /*PBOOLEAN Success;*/
69 DPRINT("Done\n");
70
71 /*Success = (PBOOLEAN)Argument;
72 if (*Success == FALSE)
73 {
74 DPRINT("FormatEx was unable to complete successfully.\n\n");
75 }*/
76 break;
77 }
78
79 default:
80 DPRINT("Unknown callback %lu\n", (ULONG)Command);
81 break;
82 }
83
84 return TRUE;
85 }
86
87
88 NTSTATUS
89 FormatPartition(
90 IN PUNICODE_STRING DriveRoot,
91 IN PFILE_SYSTEM_ITEM FileSystem)
92 {
93 NTSTATUS Status;
94
95 if (!FileSystem->FormatFunc)
96 return STATUS_NOT_SUPPORTED;
97
98 FormatProgressBar = CreateProgressBar(6,
99 yScreen - 14,
100 xScreen - 7,
101 yScreen - 10,
102 10,
103 24,
104 TRUE,
105 MUIGetString(STRING_FORMATTINGDISK));
106
107 ProgressSetStepCount(FormatProgressBar, 100);
108
109 Status = FileSystem->FormatFunc(DriveRoot,
110 FMIFS_HARDDISK, /* MediaFlag */
111 NULL, /* Label */
112 FileSystem->QuickFormat, /* QuickFormat */
113 0, /* ClusterSize */
114 FormatCallback); /* Callback */
115
116 DestroyProgressBar(FormatProgressBar);
117 FormatProgressBar = NULL;
118
119 DPRINT("FormatPartition() finished with status 0x%08lx\n", Status);
120
121 return Status;
122 }
123
124 /* EOF */