Minor changes.
[reactos.git] / reactos / ntoskrnl / fs / util.c
1 /* $Id: util.c,v 1.5 2000/02/24 23:38:26 ea Exp $
2 *
3 * reactos/ntoskrnl/fs/util.c
4 *
5 */
6 #include <ntos.h>
7
8
9 /**********************************************************************
10 * NAME EXPORTED
11 * FsRtlIsTotalDeviceFailure@4
12 *
13 * DESCRIPTION
14 * Check if an NTSTATUS error code represents a
15 * disk hardware failure.
16 *
17 * ARGUMENTS
18 * NtStatus
19 * NTSTATUS to test.
20 *
21 * RETURN VALUE
22 * FALSE if either (NtStatus >= STATUS_SUCCESS),
23 * STATUS_CRC_ERROR, STATUS_DEVICE_DATA_ERROR;
24 * TRUE otherwise.
25 *
26 */
27 BOOLEAN
28 STDCALL
29 FsRtlIsTotalDeviceFailure (
30 IN NTSTATUS NtStatus
31 )
32 {
33 return (
34 (NT_SUCCESS(NtStatus))
35 || (STATUS_CRC_ERROR == NtStatus)
36 || (STATUS_DEVICE_DATA_ERROR == NtStatus)
37 ? FALSE
38 : TRUE
39 );
40 }
41
42
43 /**********************************************************************
44 * NAME EXPORTED
45 * FsRtlIsNtstatusExpected@4
46 *
47 * DESCRIPTION
48 * Check an NTSTATUS value is expected by the FS kernel
49 * subsystem.
50 *
51 * ARGUMENTS
52 * NtStatus
53 * NTSTATUS to test.
54 *
55 * RETURN VALUE
56 * TRUE if NtStatus is either STATUS_ACCESS_VIOLATION,
57 * STATUS_ILLEGAL_INSTRUCTION, STATUS_DATATYPE_MISALIGNMENT,
58 * 0xC00000AA; FALSE otherwise.
59 *
60 * NOTES
61 * By calling the function with all possible values,
62 * one unknown NTSTATUS value makes the function
63 * return 0x00 (0xC00000AA).
64 */
65 BOOLEAN
66 STDCALL
67 FsRtlIsNtstatusExpected (
68 IN NTSTATUS NtStatus
69 )
70 {
71 return (
72 (STATUS_DATATYPE_MISALIGNMENT == NtStatus)
73 || (STATUS_ACCESS_VIOLATION == NtStatus)
74 || (STATUS_ILLEGAL_INSTRUCTION == NtStatus)
75 || (STATUS_UNKNOWN_C00000AA == NtStatus) /* FIXME */
76 )
77 ? TRUE
78 : FALSE;
79 }
80
81
82 /**********************************************************************
83 * NAME EXPORTED
84 * FsRtlNormalizeNtstatus@8
85 *
86 * DESCRIPTION
87 * Normalize an NTSTATUS value for using in the FS subsystem.
88 *
89 * ARGUMENTS
90 * NtStatusToNormalize
91 * NTSTATUS to normalize.
92 * NormalizedNtStatus
93 * NTSTATUS to return if the NtStatusToNormalize
94 * value is unexpected by the FS kernel subsystem.
95 *
96 * RETURN VALUE
97 * NtStatusToNormalize if it is an expected value,
98 * otherwise NormalizedNtStatus.
99 */
100 NTSTATUS
101 STDCALL
102 FsRtlNormalizeNtstatus (
103 IN NTSTATUS NtStatusToNormalize,
104 IN NTSTATUS NormalizedNtStatus
105 )
106 {
107 return
108 (TRUE == FsRtlIsNtstatusExpected(NtStatusToNormalize))
109 ? NtStatusToNormalize
110 : NormalizedNtStatus;
111 }
112
113
114 /**********************************************************************
115 * Miscellanea (they may fit somewhere else)
116 *********************************************************************/
117
118
119 /**********************************************************************
120 * NAME EXPORTED
121 * FsRtlAllocateResource@0
122 *
123 * DESCRIPTION
124 *
125 * ARGUMENTS
126 *
127 * RETURN VALUE
128 *
129 */
130 DWORD
131 STDCALL
132 FsRtlAllocateResource (VOID)
133 {
134 return 0;
135 }
136
137
138 /**********************************************************************
139 * NAME EXPORTED
140 * FsRtlBalanceReads@4
141 *
142 * DESCRIPTION
143 *
144 * ARGUMENTS
145 *
146 * RETURN VALUE
147 *
148 */
149 DWORD
150 STDCALL
151 FsRtlBalanceReads (
152 DWORD Unknown0
153 )
154 {
155 return 0;
156 }
157
158
159 /**********************************************************************
160 * NAME EXPORTED
161 * FsRtlCopyRead@32
162 *
163 * DESCRIPTION
164 *
165 * ARGUMENTS
166 *
167 * RETURN VALUE
168 *
169 * NOTE
170 * From Bo Branten's ntifs.h v12.
171 *
172 */
173 BOOLEAN
174 STDCALL
175 FsRtlCopyRead (
176 IN PFILE_OBJECT FileObject,
177 IN PLARGE_INTEGER FileOffset,
178 IN ULONG Length,
179 IN BOOLEAN Wait,
180 IN ULONG LockKey,
181 OUT PVOID Buffer,
182 OUT PIO_STATUS_BLOCK IoStatus,
183 IN PDEVICE_OBJECT DeviceObject
184 )
185 {
186 return FALSE;
187 }
188
189
190 /**********************************************************************
191 * NAME EXPORTED
192 * FsRtlCopyWrite@32
193 *
194 * DESCRIPTION
195 *
196 * ARGUMENTS
197 *
198 * RETURN VALUE
199 *
200 * NOTE
201 * From Bo Branten's ntifs.h v12.
202 */
203 BOOLEAN
204 STDCALL
205 FsRtlCopyWrite (
206 IN PFILE_OBJECT FileObject,
207 IN PLARGE_INTEGER FileOffset,
208 IN ULONG Length,
209 IN BOOLEAN Wait,
210 IN ULONG LockKey,
211 IN PVOID Buffer,
212 OUT PIO_STATUS_BLOCK IoStatus,
213 IN PDEVICE_OBJECT DeviceObject
214 )
215 {
216 return FALSE;
217 }
218
219
220 /**********************************************************************
221 * NAME EXPORTED
222 * FsRtlGetFileSize@8
223 *
224 * DESCRIPTION
225 *
226 * ARGUMENTS
227 *
228 * RETURN VALUE
229 *
230 */
231 DWORD
232 STDCALL
233 FsRtlGetFileSize (
234 DWORD Unknown0,
235 DWORD Unknown1
236 )
237 {
238 return 0;
239 }
240
241
242 /**********************************************************************
243 * NAME EXPORTED
244 * FsRtlPostPagingFileStackOverflow@12
245 *
246 * DESCRIPTION
247 *
248 * ARGUMENTS
249 *
250 * RETURN VALUE
251 *
252 */
253 VOID
254 STDCALL
255 FsRtlPostPagingFileStackOverflow (
256 DWORD Unknown0,
257 DWORD Unknown1,
258 DWORD Unknown2
259 )
260 {
261 }
262
263
264 /**********************************************************************
265 * NAME EXPORTED
266 * FsRtlPostStackOverflow@12
267 *
268 * DESCRIPTION
269 *
270 * ARGUMENTS
271 *
272 * RETURN VALUE
273 *
274 */
275 VOID
276 STDCALL
277 FsRtlPostStackOverflow (
278 DWORD Unknown0,
279 DWORD Unknown1,
280 DWORD Unknown2
281 )
282 {
283 }
284
285
286 /**********************************************************************
287 * NAME EXPORTED
288 * FsRtlSyncVolumes@12
289 *
290 * DESCRIPTION
291 * Obsolete function.
292 *
293 * ARGUMENTS
294 *
295 * RETURN VALUE
296 * It always returns STATUS_SUCCESS.
297 */
298 NTSTATUS
299 STDCALL
300 FsRtlSyncVolumes (
301 DWORD Unknown0,
302 DWORD Unknown1,
303 DWORD Unknown2
304 )
305 {
306 return STATUS_SUCCESS;
307 }
308
309
310 /* EOF */
311