1 /* $Id: util.c,v 1.5 2000/02/24 23:38:26 ea Exp $
3 * reactos/ntoskrnl/fs/util.c
9 /**********************************************************************
11 * FsRtlIsTotalDeviceFailure@4
14 * Check if an NTSTATUS error code represents a
15 * disk hardware failure.
22 * FALSE if either (NtStatus >= STATUS_SUCCESS),
23 * STATUS_CRC_ERROR, STATUS_DEVICE_DATA_ERROR;
29 FsRtlIsTotalDeviceFailure (
34 (NT_SUCCESS(NtStatus
))
35 || (STATUS_CRC_ERROR
== NtStatus
)
36 || (STATUS_DEVICE_DATA_ERROR
== NtStatus
)
43 /**********************************************************************
45 * FsRtlIsNtstatusExpected@4
48 * Check an NTSTATUS value is expected by the FS kernel
56 * TRUE if NtStatus is either STATUS_ACCESS_VIOLATION,
57 * STATUS_ILLEGAL_INSTRUCTION, STATUS_DATATYPE_MISALIGNMENT,
58 * 0xC00000AA; FALSE otherwise.
61 * By calling the function with all possible values,
62 * one unknown NTSTATUS value makes the function
63 * return 0x00 (0xC00000AA).
67 FsRtlIsNtstatusExpected (
72 (STATUS_DATATYPE_MISALIGNMENT
== NtStatus
)
73 || (STATUS_ACCESS_VIOLATION
== NtStatus
)
74 || (STATUS_ILLEGAL_INSTRUCTION
== NtStatus
)
75 || (STATUS_UNKNOWN_C00000AA
== NtStatus
) /* FIXME */
82 /**********************************************************************
84 * FsRtlNormalizeNtstatus@8
87 * Normalize an NTSTATUS value for using in the FS subsystem.
91 * NTSTATUS to normalize.
93 * NTSTATUS to return if the NtStatusToNormalize
94 * value is unexpected by the FS kernel subsystem.
97 * NtStatusToNormalize if it is an expected value,
98 * otherwise NormalizedNtStatus.
102 FsRtlNormalizeNtstatus (
103 IN NTSTATUS NtStatusToNormalize
,
104 IN NTSTATUS NormalizedNtStatus
108 (TRUE
== FsRtlIsNtstatusExpected(NtStatusToNormalize
))
109 ? NtStatusToNormalize
110 : NormalizedNtStatus
;
114 /**********************************************************************
115 * Miscellanea (they may fit somewhere else)
116 *********************************************************************/
119 /**********************************************************************
121 * FsRtlAllocateResource@0
132 FsRtlAllocateResource (VOID
)
138 /**********************************************************************
140 * FsRtlBalanceReads@4
159 /**********************************************************************
170 * From Bo Branten's ntifs.h v12.
176 IN PFILE_OBJECT FileObject
,
177 IN PLARGE_INTEGER FileOffset
,
182 OUT PIO_STATUS_BLOCK IoStatus
,
183 IN PDEVICE_OBJECT DeviceObject
190 /**********************************************************************
201 * From Bo Branten's ntifs.h v12.
206 IN PFILE_OBJECT FileObject
,
207 IN PLARGE_INTEGER FileOffset
,
212 OUT PIO_STATUS_BLOCK IoStatus
,
213 IN PDEVICE_OBJECT DeviceObject
220 /**********************************************************************
242 /**********************************************************************
244 * FsRtlPostPagingFileStackOverflow@12
255 FsRtlPostPagingFileStackOverflow (
264 /**********************************************************************
266 * FsRtlPostStackOverflow@12
277 FsRtlPostStackOverflow (
286 /**********************************************************************
288 * FsRtlSyncVolumes@12
296 * It always returns STATUS_SUCCESS.
306 return STATUS_SUCCESS
;