[DESK] Add MonitorClassInstaller
[reactos.git] / base / system / diskpart / diskpart.h
1 /*
2 * PROJECT: ReactOS DiskPart
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/system/diskpart/diskpart.h
5 * PURPOSE: Manages all the partitions of the OS in an interactive way.
6 * PROGRAMMERS: Lee Schroeder
7 */
8
9 #ifndef DISKPART_H
10 #define DISKPART_H
11
12 /* INCLUDES ******************************************************************/
13
14 #include <stdio.h>
15 #include <stdlib.h>
16
17 #define WIN32_NO_STATUS
18 #include <windef.h>
19 #include <winbase.h>
20 #include <winreg.h>
21 #include <wincon.h>
22
23 #include <conutils.h>
24
25 /*
26 #define NTOS_MODE_USER
27 #include <ndk/exfuncs.h>
28 #include <ndk/iofuncs.h>
29 #include <ndk/obfuncs.h>
30 #include <ndk/psfuncs.h>
31 #include <ndk/rtlfuncs.h>
32 #include <ndk/umfuncs.h>
33 */
34
35 #define NTOS_MODE_USER
36 #include <ndk/cmfuncs.h>
37 #include <ndk/exfuncs.h>
38 #include <ndk/iofuncs.h>
39 #include <ndk/kefuncs.h>
40 #include <ndk/mmfuncs.h>
41 #include <ndk/obfuncs.h>
42 #include <ndk/psfuncs.h>
43 #include <ndk/rtlfuncs.h>
44 #include <ndk/setypes.h>
45 #include <ndk/umfuncs.h>
46
47 #include "resource.h"
48
49 /* DEFINES *******************************************************************/
50
51 typedef struct _COMMAND
52 {
53 LPWSTR name;
54 BOOL (*func)(INT, WCHAR**);
55 INT help;
56 INT help_desc;
57 } COMMAND, *PCOMMAND;
58
59 extern COMMAND cmds[];
60
61 /* NOERR codes for the program */
62 //#define ERROR_NONE 0
63 //#define ERROR_FATAL 1
64 //#define ERROR_CMD_ARG 2
65 //#define ERROR_FILE 3
66 //#define ERROR_SERVICE 4
67 //#define ERROR_SYNTAX 5
68
69 #define MAX_STRING_SIZE 1024
70 #define MAX_ARGS_COUNT 256
71
72
73 typedef enum _FORMATSTATE
74 {
75 Unformatted,
76 UnformattedOrDamaged,
77 UnknownFormat,
78 Preformatted,
79 Formatted
80 } FORMATSTATE, *PFORMATSTATE;
81
82 typedef struct _PARTENTRY
83 {
84 LIST_ENTRY ListEntry;
85
86 struct _DISKENTRY *DiskEntry;
87
88 ULARGE_INTEGER StartSector;
89 ULARGE_INTEGER SectorCount;
90
91 BOOLEAN BootIndicator;
92 UCHAR PartitionType;
93 ULONG HiddenSectors;
94 ULONG PartitionNumber;
95 ULONG PartitionIndex;
96
97 CHAR DriveLetter;
98 CHAR VolumeLabel[17];
99 CHAR FileSystemName[9];
100
101 BOOLEAN LogicalPartition;
102
103 /* Partition is partitioned disk space */
104 BOOLEAN IsPartitioned;
105
106 /* Partition is new. Table does not exist on disk yet */
107 BOOLEAN New;
108
109 /* Partition was created automatically. */
110 BOOLEAN AutoCreate;
111
112 FORMATSTATE FormatState;
113
114 /* Partition must be checked */
115 BOOLEAN NeedsCheck;
116
117 struct _FILE_SYSTEM_ITEM *FileSystem;
118 } PARTENTRY, *PPARTENTRY;
119
120
121 typedef struct _BIOSDISKENTRY
122 {
123 LIST_ENTRY ListEntry;
124 ULONG DiskNumber;
125 ULONG Signature;
126 ULONG Checksum;
127 BOOLEAN Recognized;
128 CM_DISK_GEOMETRY_DEVICE_DATA DiskGeometry;
129 CM_INT13_DRIVE_PARAMETER Int13DiskData;
130 } BIOSDISKENTRY, *PBIOSDISKENTRY;
131
132
133 typedef struct _DISKENTRY
134 {
135 LIST_ENTRY ListEntry;
136
137 ULONGLONG Cylinders;
138 ULONG TracksPerCylinder;
139 ULONG SectorsPerTrack;
140 ULONG BytesPerSector;
141
142 ULARGE_INTEGER SectorCount;
143 ULONG SectorAlignment;
144 ULONG CylinderAlignment;
145
146 BOOLEAN BiosFound;
147 ULONG BiosDiskNumber;
148 // ULONG Signature;
149 // ULONG Checksum;
150
151 ULONG DiskNumber;
152 USHORT Port;
153 USHORT Bus;
154 USHORT Id;
155
156 /* Has the partition list been modified? */
157 BOOLEAN Dirty;
158
159 BOOLEAN NewDisk;
160 BOOLEAN NoMbr; /* MBR is absent */
161
162 UNICODE_STRING DriverName;
163
164 PDRIVE_LAYOUT_INFORMATION LayoutBuffer;
165
166 PPARTENTRY ExtendedPartition;
167
168 LIST_ENTRY PrimaryPartListHead;
169 LIST_ENTRY LogicalPartListHead;
170
171 } DISKENTRY, *PDISKENTRY;
172
173
174 /* GLOBAL VARIABLES ***********************************************************/
175
176 extern LIST_ENTRY DiskListHead;
177 extern LIST_ENTRY BiosDiskListHead;
178
179 extern PDISKENTRY CurrentDisk;
180 extern PPARTENTRY CurrentPartition;
181
182 /* PROTOTYPES *****************************************************************/
183
184 /* active.c */
185 BOOL active_main(INT argc, LPWSTR *argv);
186
187 /* add.c */
188 BOOL add_main(INT argc, LPWSTR *argv);
189
190 /* assign.c */
191 BOOL assign_main(INT argc, LPWSTR *argv);
192
193 /* attach.c */
194 BOOL attach_main(INT argc, LPWSTR *argv);
195
196 /* attributes.h */
197 BOOL attributes_main(INT argc, LPWSTR *argv);
198
199 /* automount.c */
200 BOOL automount_main(INT argc, LPWSTR *argv);
201
202 /* break.c */
203 BOOL break_main(INT argc, LPWSTR *argv);
204
205 /* clean.c */
206 BOOL clean_main(INT argc, LPWSTR *argv);
207
208 /* compact.c */
209 BOOL compact_main(INT argc, LPWSTR *argv);
210
211 /* convert.c */
212 BOOL convert_main(INT argc, LPWSTR *argv);
213
214 /* create.c */
215 BOOL create_main(INT argc, LPWSTR *argv);
216
217 /* delete.c */
218 BOOL delete_main(INT argc, LPWSTR *argv);
219
220 /* detach.c */
221 BOOL detach_main(INT argc, LPWSTR *argv);
222
223 /* detail.c */
224 BOOL detail_main(INT argc, LPWSTR *argv);
225
226 /* diskpart.c */
227
228 /* expand.c */
229 BOOL expand_main(INT argc, LPWSTR *argv);
230
231 /* extend.c */
232 BOOL extend_main(INT argc, LPWSTR *argv);
233
234 /* filesystem.c */
235 BOOL filesystems_main(INT argc, LPWSTR *argv);
236
237 /* format.c */
238 BOOL format_main(INT argc, LPWSTR *argv);
239
240 /* gpt.c */
241 BOOL gpt_main(INT argc, LPWSTR *argv);
242
243 /* help.c */
244 BOOL help_main(INT argc, LPWSTR *argv);
245 VOID help_cmdlist(VOID);
246
247 /* import. c */
248 BOOL import_main(INT argc, LPWSTR *argv);
249
250 /* inactive.c */
251 BOOL inactive_main(INT argc, LPWSTR *argv);
252
253 /* interpreter.c */
254 BOOL InterpretScript(LPWSTR line);
255 BOOL InterpretCmd(INT argc, LPWSTR *argv);
256 VOID InterpretMain(VOID);
257
258 /* list.c */
259 BOOL list_main(INT argc, LPWSTR *argv);
260
261 /* merge.c */
262 BOOL merge_main(INT argc, LPWSTR *argv);
263
264 /* offline.c */
265 BOOL offline_main(INT argc, LPWSTR *argv);
266
267 /* online.c */
268 BOOL online_main(INT argc, LPWSTR *argv);
269
270 /* partlist.c */
271 NTSTATUS
272 CreatePartitionList(VOID);
273
274 VOID
275 DestroyPartitionList(VOID);
276
277 /* recover.c */
278 BOOL recover_main(INT argc, LPWSTR *argv);
279
280 /* remove.c */
281 BOOL remove_main(INT argc, LPWSTR *argv);
282
283 /* repair.c */
284 BOOL repair_main(INT argc, LPWSTR *argv);
285
286 /* rescan.c */
287 BOOL rescan_main(INT argc, LPWSTR *argv);
288
289 /* retain.c */
290 BOOL retain_main(INT argc, LPWSTR *argv);
291
292 /* san.c */
293 BOOL san_main(INT argc, LPWSTR *argv);
294
295 /* select.c */
296 BOOL select_main(INT argc, LPWSTR *argv);
297
298 /* setid.c */
299 BOOL setid_main(INT argc, LPWSTR *argv);
300
301 /* shrink.c */
302 BOOL shrink_main(INT argc, LPWSTR *argv);
303
304 /* uniqueid.c */
305 BOOL uniqueid_main(INT argc, LPWSTR *argv);
306
307 #endif /* DISKPART_H */