Fix misplaced STDCALL calling convention specifiers.
[reactos.git] / reactos / ntoskrnl / fs / util.c
1 /* $Id: util.c,v 1.18 2004/08/21 20:40:27 tamlin Exp $
2 *
3 * reactos/ntoskrnl/fs/util.c
4 *
5 */
6
7 #include <ntoskrnl.h>
8 #define NDEBUG
9 #include <internal/debug.h>
10
11 /**********************************************************************
12 * NAME EXPORTED
13 * FsRtlIsTotalDeviceFailure@4
14 *
15 * DESCRIPTION
16 * Check if an NTSTATUS error code represents a
17 * disk hardware failure.
18 *
19 * ARGUMENTS
20 * NtStatus
21 * NTSTATUS to test.
22 *
23 * RETURN VALUE
24 * FALSE if either (NtStatus >= STATUS_SUCCESS),
25 * STATUS_CRC_ERROR, STATUS_DEVICE_DATA_ERROR;
26 * TRUE otherwise.
27 *
28 * @implemented
29 */
30 BOOLEAN
31 STDCALL
32 FsRtlIsTotalDeviceFailure (
33 IN NTSTATUS NtStatus
34 )
35 {
36 return (
37 (NT_SUCCESS(NtStatus))
38 || (STATUS_CRC_ERROR == NtStatus)
39 || (STATUS_DEVICE_DATA_ERROR == NtStatus)
40 ? FALSE
41 : TRUE
42 );
43 }
44
45
46 /**********************************************************************
47 * NAME EXPORTED
48 * FsRtlIsNtstatusExpected/1
49 * stack32 = 4
50 *
51 * DESCRIPTION
52 * Check an NTSTATUS value is expected by the FS kernel
53 * subsystem.
54 *
55 * ARGUMENTS
56 * NtStatus
57 * NTSTATUS to test.
58 *
59 * RETURN VALUE
60 * TRUE if NtStatus is NOT one out of:
61 * - STATUS_ACCESS_VIOLATION
62 * - STATUS_ILLEGAL_INSTRUCTION
63 * - STATUS_DATATYPE_MISALIGNMENT
64 * - STATUS_INSTRUCTION_MISALIGNMENT
65 * which are the forbidden return stati in the FsRtl
66 * subsystem; FALSE otherwise.
67 *
68 * REVISIONS
69 * 2002-01-17 Fixed a bad bug reported by Bo Brantén.
70 * Up to version 1.8, this function's semantics was
71 * exactly the opposite! Thank you Bo.
72 *
73 * @implemented
74 */
75 BOOLEAN
76 STDCALL
77 FsRtlIsNtstatusExpected (
78 IN NTSTATUS NtStatus
79 )
80 {
81 return (
82 (STATUS_DATATYPE_MISALIGNMENT == NtStatus)
83 || (STATUS_ACCESS_VIOLATION == NtStatus)
84 || (STATUS_ILLEGAL_INSTRUCTION == NtStatus)
85 || (STATUS_INSTRUCTION_MISALIGNMENT == NtStatus)
86 )
87 ? FALSE
88 : TRUE;
89 }
90
91 /*
92 * @unimplemented
93 */
94 ULONG
95 FsRtlIsPagingFile (
96 IN PFILE_OBJECT FileObject
97 )
98 {
99 UNIMPLEMENTED;
100 return 0;
101 }
102
103
104 /**********************************************************************
105 * NAME EXPORTED
106 * FsRtlNormalizeNtstatus@8
107 *
108 * DESCRIPTION
109 * Normalize an NTSTATUS value for using in the FS subsystem.
110 *
111 * ARGUMENTS
112 * NtStatusToNormalize
113 * NTSTATUS to normalize.
114 * NormalizedNtStatus
115 * NTSTATUS to return if the NtStatusToNormalize
116 * value is unexpected by the FS kernel subsystem.
117 *
118 * RETURN VALUE
119 * NtStatusToNormalize if it is an expected value,
120 * otherwise NormalizedNtStatus.
121 *
122 * @implemented
123 */
124 NTSTATUS
125 STDCALL
126 FsRtlNormalizeNtstatus (
127 IN NTSTATUS NtStatusToNormalize,
128 IN NTSTATUS NormalizedNtStatus
129 )
130 {
131 return
132 (TRUE == FsRtlIsNtstatusExpected(NtStatusToNormalize))
133 ? NtStatusToNormalize
134 : NormalizedNtStatus;
135 }
136
137
138 /**********************************************************************
139 * Miscellanea (they may fit somewhere else)
140 *********************************************************************/
141
142
143 /**********************************************************************
144 * NAME EXPORTED
145 * FsRtlAllocateResource@0
146 *
147 * DESCRIPTION
148 *
149 * ARGUMENTS
150 *
151 * RETURN VALUE
152 *
153 *
154 * @unimplemented
155 */
156 DWORD
157 STDCALL
158 FsRtlAllocateResource (VOID)
159 {
160 return 0;
161 }
162
163
164 /**********************************************************************
165 * NAME EXPORTED
166 * FsRtlBalanceReads@4
167 *
168 * DESCRIPTION
169 *
170 * ARGUMENTS
171 *
172 * RETURN VALUE
173 *
174 *
175 * @unimplemented
176 */
177 DWORD
178 STDCALL
179 FsRtlBalanceReads (
180 DWORD Unknown0
181 )
182 {
183 return 0;
184 }
185
186
187 /**********************************************************************
188 * NAME EXPORTED
189 * FsRtlCopyRead@32
190 *
191 * DESCRIPTION
192 *
193 * ARGUMENTS
194 *
195 * RETURN VALUE
196 *
197 * NOTE
198 * From Bo Branten's ntifs.h v12.
199 *
200 * @unimplemented
201 */
202 BOOLEAN
203 STDCALL
204 FsRtlCopyRead (
205 IN PFILE_OBJECT FileObject,
206 IN PLARGE_INTEGER FileOffset,
207 IN ULONG Length,
208 IN BOOLEAN Wait,
209 IN ULONG LockKey,
210 OUT PVOID Buffer,
211 OUT PIO_STATUS_BLOCK IoStatus,
212 IN PDEVICE_OBJECT DeviceObject
213 )
214 {
215 return FALSE;
216 }
217
218
219 /**********************************************************************
220 * NAME EXPORTED
221 * FsRtlCopyWrite@32
222 *
223 * DESCRIPTION
224 *
225 * ARGUMENTS
226 *
227 * RETURN VALUE
228 *
229 * NOTE
230 * From Bo Branten's ntifs.h v12.
231 *
232 * @unimplemented
233 */
234 BOOLEAN
235 STDCALL
236 FsRtlCopyWrite (
237 IN PFILE_OBJECT FileObject,
238 IN PLARGE_INTEGER FileOffset,
239 IN ULONG Length,
240 IN BOOLEAN Wait,
241 IN ULONG LockKey,
242 IN PVOID Buffer,
243 OUT PIO_STATUS_BLOCK IoStatus,
244 IN PDEVICE_OBJECT DeviceObject
245 )
246 {
247 return FALSE;
248 }
249
250
251 /**********************************************************************
252 * NAME EXPORTED
253 * FsRtlGetFileSize@8
254 *
255 * DESCRIPTION
256 *
257 * ARGUMENTS
258 *
259 * RETURN VALUE
260 *
261 * @implemented
262 */
263 NTSTATUS
264 STDCALL
265 FsRtlGetFileSize (
266 IN PFILE_OBJECT FileObject,
267 IN OUT PLARGE_INTEGER FileSize
268 )
269 {
270 FILE_STANDARD_INFORMATION Info;
271 NTSTATUS Status;
272 ULONG Length;
273
274 Status = IoQueryFileInformation(FileObject,
275 FileStandardInformation,
276 sizeof(Info),
277 &Info,
278 &Length);
279 if (NT_SUCCESS(Status))
280 {
281 FileSize->QuadPart = Info.EndOfFile.QuadPart;
282 }
283
284 return Status;
285 }
286
287 /*
288 * @unimplemented
289 */
290 NTSTATUS
291 STDCALL
292 FsRtlInsertPerStreamContext (
293 IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext,
294 IN PFSRTL_PER_STREAM_CONTEXT Ptr
295 )
296 {
297 UNIMPLEMENTED;
298 return STATUS_NOT_IMPLEMENTED;
299 }
300
301 /*
302 * @unimplemented
303 */
304 PFSRTL_PER_STREAM_CONTEXT
305 STDCALL
306 FsRtlRemovePerStreamContext (
307 IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
308 IN PVOID OwnerId OPTIONAL,
309 IN PVOID InstanceId OPTIONAL
310 )
311 {
312 UNIMPLEMENTED;
313 return NULL;
314 }
315
316 /*
317 * @unimplemented
318 */
319 NTSTATUS
320 STDCALL
321 FsRtlInsertPerFileObjectContext (
322 IN PFSRTL_ADVANCED_FCB_HEADER PerFileObjectContext,
323 IN PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/ Ptr
324 )
325 {
326 UNIMPLEMENTED;
327 return STATUS_NOT_IMPLEMENTED;
328 }
329
330 /**********************************************************************
331 * NAME EXPORTED
332 * FsRtlPostPagingFileStackOverflow@12
333 *
334 * DESCRIPTION
335 *
336 * ARGUMENTS
337 *
338 * RETURN VALUE
339 *
340 * @unimplemented
341 */
342 VOID
343 STDCALL
344 FsRtlPostPagingFileStackOverflow (
345 DWORD Unknown0,
346 DWORD Unknown1,
347 DWORD Unknown2
348 )
349 {
350 }
351
352
353 /**********************************************************************
354 * NAME EXPORTED
355 * FsRtlPostStackOverflow@12
356 *
357 * DESCRIPTION
358 *
359 * ARGUMENTS
360 *
361 * RETURN VALUE
362 *
363 * @unimplemented
364 */
365 VOID
366 STDCALL
367 FsRtlPostStackOverflow (
368 DWORD Unknown0,
369 DWORD Unknown1,
370 DWORD Unknown2
371 )
372 {
373 }
374
375
376 /*
377 * @unimplemented
378 */
379 PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
380 STDCALL
381 FsRtlRemovePerFileObjectContext (
382 IN PFSRTL_ADVANCED_FCB_HEADER PerFileObjectContext,
383 IN PVOID OwnerId OPTIONAL,
384 IN PVOID InstanceId OPTIONAL
385 )
386 {
387 UNIMPLEMENTED;
388 return NULL;
389 }
390
391 /**********************************************************************
392 * NAME EXPORTED
393 * FsRtlSyncVolumes@12
394 *
395 * DESCRIPTION
396 * Obsolete function.
397 *
398 * ARGUMENTS
399 *
400 * RETURN VALUE
401 * It always returns STATUS_SUCCESS.
402 *
403 * @implemented
404 */
405 NTSTATUS
406 STDCALL
407 FsRtlSyncVolumes (
408 DWORD Unknown0,
409 DWORD Unknown1,
410 DWORD Unknown2
411 )
412 {
413 return STATUS_SUCCESS;
414 }
415
416
417 /*
418 * @unimplemented
419 */
420 VOID
421 STDCALL
422 FsRtlTeardownPerStreamContexts (
423 IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader
424 )
425 {
426 UNIMPLEMENTED;
427 }
428
429 /* EOF */