[MSI]
[reactos.git] / reactos / include / reactos / libs / fmifs / fmifs.h
1 #ifndef _FMIFS_H
2 #define _FMIFS_H
3 /*
4 * fmifs.h
5 *
6 * Copyright (c) 1998 Mark Russinovich
7 * Systems Internals
8 * http://www.sysinternals.com
9 *
10 * Typedefs and definitions for using chkdsk and formatex
11 * functions exported by the fmifs.dll library.
12 *
13 * ---
14 *
15 * 1999-02-18 (Emanuele Aliberti)
16 * Normalized function names.
17 *
18 * ---
19 *
20 * 2006-09-04 (Hervé Poussineau)
21 * Add some prototypes
22 *
23 */
24
25 /* Output command */
26 typedef struct
27 {
28 ULONG Lines;
29 PCHAR Output;
30 } TEXTOUTPUT, *PTEXTOUTPUT;
31
32 /* media flags */
33 typedef enum
34 {
35 FMIFS_UNKNOWN0,
36 FMIFS_UNKNOWN1,
37 FMIFS_UNKNOWN2,
38 FMIFS_UNKNOWN3,
39 FMIFS_UNKNOWN4,
40 FMIFS_UNKNOWN5,
41 FMIFS_UNKNOWN6,
42 FMIFS_UNKNOWN7,
43 FMIFS_FLOPPY,
44 FMIFS_UNKNOWN9,
45 FMIFS_UNKNOWN10,
46 FMIFS_REMOVABLE,
47 FMIFS_HARDDISK,
48 FMIFS_UNKNOWN13,
49 FMIFS_UNKNOWN14,
50 FMIFS_UNKNOWN15,
51 FMIFS_UNKNOWN16,
52 FMIFS_UNKNOWN17,
53 FMIFS_UNKNOWN18,
54 FMIFS_UNKNOWN19,
55 FMIFS_UNKNOWN20,
56 FMIFS_UNKNOWN21,
57 FMIFS_UNKNOWN22,
58 FMIFS_UNKNOWN23,
59 } FMIFS_MEDIA_FLAG;
60
61 /* Callback command types */
62 typedef enum
63 {
64 PROGRESS,
65 DONEWITHSTRUCTURE,
66 UNKNOWN2,
67 UNKNOWN3,
68 UNKNOWN4,
69 UNKNOWN5,
70 INSUFFICIENTRIGHTS,
71 FSNOTSUPPORTED,
72 VOLUMEINUSE,
73 UNKNOWN9,
74 UNKNOWNA,
75 DONE,
76 UNKNOWNC,
77 UNKNOWND,
78 OUTPUT,
79 STRUCTUREPROGRESS,
80 CLUSTERSIZETOOSMALL,
81 } CALLBACKCOMMAND;
82
83 /* FMIFS callback definition */
84 typedef BOOLEAN
85 (NTAPI* PFMIFSCALLBACK)(
86 IN CALLBACKCOMMAND Command,
87 IN ULONG SubAction,
88 IN PVOID ActionInfo);
89
90 /* Chkdsk command in FMIFS */
91 VOID NTAPI
92 Chkdsk(
93 IN PWCHAR DriveRoot,
94 IN PWCHAR Format,
95 IN BOOLEAN CorrectErrors,
96 IN BOOLEAN Verbose,
97 IN BOOLEAN CheckOnlyIfDirty,
98 IN BOOLEAN ScanDrive,
99 IN PVOID Unused2,
100 IN PVOID Unused3,
101 IN PFMIFSCALLBACK Callback);
102
103 /* ChkdskEx command in FMIFS (not in the original) */
104 VOID NTAPI
105 ChkdskEx(
106 IN PWCHAR DriveRoot,
107 IN PWCHAR Format,
108 IN BOOLEAN CorrectErrors,
109 IN BOOLEAN Verbose,
110 IN BOOLEAN CheckOnlyIfDirty,
111 IN BOOLEAN ScanDrive,
112 IN PVOID Unused2,
113 IN PVOID Unused3,
114 IN PFMIFSCALLBACK Callback);
115
116 FMIFS_MEDIA_FLAG NTAPI
117 ComputeFmMediaType(
118 IN ULONG MediaType);
119
120 /* DiskCopy command in FMIFS */
121 VOID NTAPI
122 DiskCopy(VOID);
123
124 /* Enable/Disable volume compression */
125 BOOLEAN NTAPI
126 EnableVolumeCompression(
127 IN PWCHAR DriveRoot,
128 IN USHORT Compression);
129
130 /* Format command in FMIFS */
131 VOID NTAPI
132 FormatEx(
133 IN PWCHAR DriveRoot,
134 IN FMIFS_MEDIA_FLAG MediaFlag,
135 IN PWCHAR Format,
136 IN PWCHAR Label,
137 IN BOOLEAN QuickFormat,
138 IN ULONG ClusterSize,
139 IN PFMIFSCALLBACK Callback);
140
141 BOOLEAN NTAPI
142 QueryAvailableFileSystemFormat(
143 IN DWORD Index,
144 IN OUT PWCHAR FileSystem, /* FIXME: Probably one minimal size is mandatory, but which one? */
145 OUT UCHAR* Major,
146 OUT UCHAR* Minor,
147 OUT BOOLEAN* LastestVersion);
148
149 BOOL NTAPI
150 QueryDeviceInformation(
151 IN PWCHAR DriveRoot,
152 OUT ULONG* Buffer, /* That is probably some 4-bytes structure */
153 IN ULONG BufferSize); /* 4 */
154
155 BOOL NTAPI
156 QueryFileSystemName(
157 IN PWCHAR DriveRoot,
158 OUT PWCHAR FileSystem OPTIONAL, /* FIXME: Probably one minimal size is mandatory, but which one? */
159 OUT UCHAR* Unknown2 OPTIONAL, /* Always 0? */
160 OUT UCHAR* Unknown3 OPTIONAL, /* Always 0? */
161 OUT ULONG* Unknown4 OPTIONAL); /* Always 0? */
162
163 BOOLEAN NTAPI
164 QueryLatestFileSystemVersion(
165 IN PWCHAR FileSystem,
166 OUT UCHAR* Major OPTIONAL,
167 OUT UCHAR* Minor OPTIONAL);
168
169 BOOL NTAPI
170 QuerySupportedMedia(
171 IN PWCHAR DriveRoot,
172 OUT FMIFS_MEDIA_FLAG *CurrentMedia OPTIONAL,
173 IN ULONG Unknown3,
174 OUT PULONG Unknown4); /* Always 1? */
175
176 BOOL NTAPI
177 SetLabel(
178 IN PWCHAR DriveRoot,
179 IN PWCHAR Label);
180
181 /* Functions provided by u*.dll */
182
183 typedef NTSTATUS
184 (NTAPI *FORMATEX)(
185 IN PUNICODE_STRING DriveRoot,
186 IN FMIFS_MEDIA_FLAG MediaFlag,
187 IN PUNICODE_STRING Label,
188 IN BOOLEAN QuickFormat,
189 IN ULONG ClusterSize,
190 IN PFMIFSCALLBACK Callback);
191
192 typedef NTSTATUS
193 (NTAPI *CHKDSKEX)(
194 IN PUNICODE_STRING DriveRoot,
195 IN BOOLEAN FixErrors,
196 IN BOOLEAN Verbose,
197 IN BOOLEAN CheckOnlyIfDirty,
198 IN BOOLEAN ScanDrive,
199 IN PFMIFSCALLBACK Callback);
200
201 #endif /* ndef _FMIFS_H */