diff --git a/reactos/ntoskrnl/fs/mcb.c b/reactos/ntoskrnl/fs/mcb.c new file mode 100644 index 00000000000..238cc10f537 --- /dev/null +++ b/reactos/ntoskrnl/fs/mcb.c @@ -0,0 +1,259 @@ +/* $Id: mcb.c,v 1.1 1999/08/20 16:29:22 ea Exp $ + * + * reactos/ntoskrnl/fs/mcb.c + * + */ +#include + +#include + +/********************************************************************** + * NAME EXPORTED + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + * NOTES + */ +VOID +STDCALL +FsRtlAddLargeMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5, + DWORD Unknown6 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlAddMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlGetNextLargeMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlGetNextMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlInitializeLargeMcb ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlInitializeMcb ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlLookupLargeMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5, + DWORD Unknown6, + DWORD Unknown7 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlLookupLastLargeMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlLookupLastMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlLookupMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlNumberOfRunsInLargeMcb ( + DWORD Unknown0 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlNumberOfRunsInMcb ( + DWORD Unknown0 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlRemoveLargeMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlRemoveMcbEntry ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlSplitLargeMcb ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlTruncateLargeMcb ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlTruncateMcb ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + UNIMPLEMENTED +} + + +VOID +STDCALL +FsRtlUninitializeLargeMcb ( + DWORD Unknown0 + ) +{ + UNIMPLEMENTED; +} + + +VOID +STDCALL +FsRtlUninitializeMcb ( + DWORD Unknown0 + ) +{ + UNIMPLEMENTED +} + + +/* EOF */ + diff --git a/reactos/ntoskrnl/fs/util.c b/reactos/ntoskrnl/fs/util.c new file mode 100644 index 00000000000..e325506b447 --- /dev/null +++ b/reactos/ntoskrnl/fs/util.c @@ -0,0 +1,118 @@ +/* $Id: util.c,v 1.1 1999/08/20 16:29:22 ea Exp $ + * + * reactos/ntoskrnl/fs/util.c + * + */ +#include + + +/********************************************************************** + * NAME EXPORTED + * FsRtlIsTotalDeviceFailure@4 + * + * DESCRIPTION + * Check if an NTSTATUS error code represents a + * disk hardware failure. + * + * ARGUMENTS + * NtStatus + * NTSTATUS to test. + * + * RETURN VALUE + * FALSE if either (NtStatus >= STATUS_SUCCESS), + * STATUS_CRC_ERROR, 0xC000009C; 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 + ) +{ + return ( + (NT_SUCCESS(NtStatus)) + || (STATUS_CRC_ERROR == NtStatus) + || (STATUS_UNKNOWN_C000009C == NtStatus) /* FIXME */ + ? FALSE + : TRUE + ); +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlIsNtstatusExpected@4 + * + * DESCRIPTION + * Check an NTSTATUS value is expected by the FS kernel + * subsystem. + * + * ARGUMENTS + * NtStatus + * 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). + */ +BOOLEAN +STDCALL +FsRtlIsNtstatusExpected ( + NTSTATUS NtStatus + ) +{ + return ( + (STATUS_UNKNOWN_80000002 == NtStatus) /* FIXME */ + || (STATUS_ACCESS_VIOLATION == NtStatus) + || (STATUS_ILLEGAL_INSTRUCTION == NtStatus) + || (STATUS_UNKNOWN_C00000AA == NtStatus) /* FIXME */ + ) + ? TRUE + : FALSE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlNormalizeNtstatus@8 + * + * DESCRIPTION + * Normalize an NTSTATUS value for using in the FS subsystem. + * + * ARGUMENTS + * NtStatusToNormalize + * NTSTATUS to normalize. + * NormalizedNtStatus + * NTSTATUS to return if the NtStatusToNormalize + * value is unexpected by the FS kernel subsystem. + * + * RETURN VALUE + * NtStatusToNormalize if it is an expected value, + * otherwise NormalizedNtStatus. + */ +NTSTATUS +STDCALL +FsRtlNormalizeNtstatus ( + NTSTATUS NtStatusToNormalize, + NTSTATUS NormalizedNtStatus + ) +{ + return + (TRUE == FsRtlIsNtstatusExpected(NtStatusToNormalize)) + ? NtStatusToNormalize + : NormalizedNtStatus; +} + + +/* EOF */ +