-/* $Id: util.c,v 1.1 1999/08/20 16:29:22 ea Exp $
+/* $Id: util.c,v 1.13 2003/03/16 13:18:49 chorns Exp $
*
* reactos/ntoskrnl/fs/util.c
*
*/
-#include <ntos.h>
+#include <ddk/ntddk.h>
+#include <ddk/ntifs.h>
/**********************************************************************
*
* RETURN VALUE
* FALSE if either (NtStatus >= STATUS_SUCCESS),
- * STATUS_CRC_ERROR, 0xC000009C; TRUE otherwise.
+ * STATUS_CRC_ERROR, STATUS_DEVICE_DATA_ERROR;
+ * TRUE otherwise.
*
- * NOTES
- * By calling the function with all possible values,
- * one unknown NTSTATUS value makes the function
- * return TRUE (0xC000009C).
*/
BOOLEAN
STDCALL
FsRtlIsTotalDeviceFailure (
- NTSTATUS NtStatus
+ IN NTSTATUS NtStatus
)
{
return (
(NT_SUCCESS(NtStatus))
|| (STATUS_CRC_ERROR == NtStatus)
- || (STATUS_UNKNOWN_C000009C == NtStatus) /* FIXME */
+ || (STATUS_DEVICE_DATA_ERROR == NtStatus)
? FALSE
: TRUE
);
/**********************************************************************
* NAME EXPORTED
- * FsRtlIsNtstatusExpected@4
+ * FsRtlIsNtstatusExpected/1
+ * stack32 = 4
*
* DESCRIPTION
* Check an NTSTATUS value is expected by the FS kernel
* NTSTATUS to test.
*
* RETURN VALUE
- * TRUE if NtStatus is either STATUS_ACCESS_VIOLATION,
- * STATUS_ILLEGAL_INSTRUCTION, 0x80000002, 0xC00000AA;
- * FALSE otherwise.
- *
- * NOTES
- * By calling the function with all possible values,
- * two unknown NTSTATUS values make the function
- * return 0x00 (0x80000002, 0xC00000AA).
+ * TRUE if NtStatus is NOT one out of:
+ * - STATUS_ACCESS_VIOLATION
+ * - STATUS_ILLEGAL_INSTRUCTION
+ * - STATUS_DATATYPE_MISALIGNMENT
+ * - STATUS_INSTRUCTION_MISALIGNMENT
+ * which are the forbidden return stati in the FsRtl
+ * subsystem; FALSE otherwise.
+ *
+ * REVISIONS
+ * 2002-01-17 Fixed a bad bug reported by Bo Brantén.
+ * Up to version 1.8, this function's semantics was
+ * exactly the opposite! Thank you Bo.
*/
BOOLEAN
STDCALL
FsRtlIsNtstatusExpected (
- NTSTATUS NtStatus
+ IN NTSTATUS NtStatus
)
{
return (
- (STATUS_UNKNOWN_80000002 == NtStatus) /* FIXME */
+ (STATUS_DATATYPE_MISALIGNMENT == NtStatus)
|| (STATUS_ACCESS_VIOLATION == NtStatus)
|| (STATUS_ILLEGAL_INSTRUCTION == NtStatus)
- || (STATUS_UNKNOWN_C00000AA == NtStatus) /* FIXME */
+ || (STATUS_INSTRUCTION_MISALIGNMENT == NtStatus)
)
- ? TRUE
- : FALSE;
+ ? FALSE
+ : TRUE;
}
NTSTATUS
STDCALL
FsRtlNormalizeNtstatus (
- NTSTATUS NtStatusToNormalize,
- NTSTATUS NormalizedNtStatus
+ IN NTSTATUS NtStatusToNormalize,
+ IN NTSTATUS NormalizedNtStatus
)
{
return
}
+/**********************************************************************
+ * Miscellanea (they may fit somewhere else)
+ *********************************************************************/
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * FsRtlAllocateResource@0
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ */
+DWORD
+STDCALL
+FsRtlAllocateResource (VOID)
+{
+ return 0;
+}
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * FsRtlBalanceReads@4
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ */
+DWORD
+STDCALL
+FsRtlBalanceReads (
+ DWORD Unknown0
+ )
+{
+ return 0;
+}
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * FsRtlCopyRead@32
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ * NOTE
+ * From Bo Branten's ntifs.h v12.
+ *
+ */
+BOOLEAN
+STDCALL
+FsRtlCopyRead (
+ IN PFILE_OBJECT FileObject,
+ IN PLARGE_INTEGER FileOffset,
+ IN ULONG Length,
+ IN BOOLEAN Wait,
+ IN ULONG LockKey,
+ OUT PVOID Buffer,
+ OUT PIO_STATUS_BLOCK IoStatus,
+ IN PDEVICE_OBJECT DeviceObject
+ )
+{
+ return FALSE;
+}
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * FsRtlCopyWrite@32
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ * NOTE
+ * From Bo Branten's ntifs.h v12.
+ */
+BOOLEAN
+STDCALL
+FsRtlCopyWrite (
+ IN PFILE_OBJECT FileObject,
+ IN PLARGE_INTEGER FileOffset,
+ IN ULONG Length,
+ IN BOOLEAN Wait,
+ IN ULONG LockKey,
+ IN PVOID Buffer,
+ OUT PIO_STATUS_BLOCK IoStatus,
+ IN PDEVICE_OBJECT DeviceObject
+ )
+{
+ return FALSE;
+}
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * FsRtlGetFileSize@8
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ */
+NTSTATUS
+STDCALL
+FsRtlGetFileSize (
+ IN PFILE_OBJECT FileObject,
+ IN OUT PLARGE_INTEGER FileSize
+ )
+{
+ FILE_STANDARD_INFORMATION Info;
+ NTSTATUS Status;
+ ULONG Length;
+
+ Status = IoQueryFileInformation(FileObject,
+ FileStandardInformation,
+ sizeof(Info),
+ &Info,
+ &Length);
+ if (NT_SUCCESS(Status))
+ {
+ FileSize->QuadPart = Info.EndOfFile.QuadPart;
+ }
+
+ return Status;
+}
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * FsRtlPostPagingFileStackOverflow@12
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ */
+VOID
+STDCALL
+FsRtlPostPagingFileStackOverflow (
+ DWORD Unknown0,
+ DWORD Unknown1,
+ DWORD Unknown2
+ )
+{
+}
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * FsRtlPostStackOverflow@12
+ *
+ * DESCRIPTION
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ */
+VOID
+STDCALL
+FsRtlPostStackOverflow (
+ DWORD Unknown0,
+ DWORD Unknown1,
+ DWORD Unknown2
+ )
+{
+}
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * FsRtlSyncVolumes@12
+ *
+ * DESCRIPTION
+ * Obsolete function.
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ * It always returns STATUS_SUCCESS.
+ */
+NTSTATUS
+STDCALL
+FsRtlSyncVolumes (
+ DWORD Unknown0,
+ DWORD Unknown1,
+ DWORD Unknown2
+ )
+{
+ return STATUS_SUCCESS;
+}
+
+
/* EOF */