From 0307fd628bd0bcabecc1aa19401b9ac7d8307f48 Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sun, 11 Jan 2004 17:06:21 +0000 Subject: [PATCH] Little program to report how NT stati are converted into a Win32 error code by NTDLL. Running it under real NT 4.0/5.x and under ROS will show the differences. svn path=/trunk/; revision=7570 --- reactos/apps/utils/nts2w32err/.cvsignore | 6 +++ reactos/apps/utils/nts2w32err/makefile | 23 +++++++++ reactos/apps/utils/nts2w32err/nts2w32err.c | 54 ++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 reactos/apps/utils/nts2w32err/.cvsignore create mode 100644 reactos/apps/utils/nts2w32err/makefile create mode 100644 reactos/apps/utils/nts2w32err/nts2w32err.c diff --git a/reactos/apps/utils/nts2w32err/.cvsignore b/reactos/apps/utils/nts2w32err/.cvsignore new file mode 100644 index 00000000000..d63774a7353 --- /dev/null +++ b/reactos/apps/utils/nts2w32err/.cvsignore @@ -0,0 +1,6 @@ +*.o +*.d +*.exe +*.coff +*.sym +*.map diff --git a/reactos/apps/utils/nts2w32err/makefile b/reactos/apps/utils/nts2w32err/makefile new file mode 100644 index 00000000000..5b1f5e2a9fc --- /dev/null +++ b/reactos/apps/utils/nts2w32err/makefile @@ -0,0 +1,23 @@ +# $Id: makefile,v 1.1 2004/01/11 17:06:21 ea Exp $ + +PATH_TO_TOP = ../../.. + +TARGET_NORC = yes + +TARGET_TYPE = program + +TARGET_APPTYPE = console + +TARGET_NAME = nts2w32err + +TARGET_SDKLIBS = ntdll.a + +TARGET_OBJECTS = $(TARGET_NAME).o + +TARGET_CFLAGS = -Wall -Werror + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +# EOF diff --git a/reactos/apps/utils/nts2w32err/nts2w32err.c b/reactos/apps/utils/nts2w32err/nts2w32err.c new file mode 100644 index 00000000000..6472b5e1183 --- /dev/null +++ b/reactos/apps/utils/nts2w32err/nts2w32err.c @@ -0,0 +1,54 @@ +/* $Id: nts2w32err.c,v 1.1 2004/01/11 17:06:21 ea Exp $ + * + * Convert NTSTATUS codes to Win32 error codes: run it + * on a NT box AND on a ROS box, then diff the results. + * + * This utility should help keeping correct how Ros + * translates executive's errors codes into Win32 error + * codes. + * + * Usage: nts2w32err [MaxStatusCode] > log.txt + * + * 2004-01-10 Emanuele Aliberti + * + */ +#include +#include +#include + +int main (int argc, char * argv []) +{ + NTSTATUS Severity = 0; + NTSTATUS StatusCode = STATUS_SUCCESS; + NTSTATUS Status = STATUS_SUCCESS; + DWORD LastError = ERROR_SUCCESS; + DWORD Maximum = 0x40000; + + if (2 == argc) + { + sscanf (argv[1], "%lx", & Maximum); + } + + printf ("NT error codes 0x0-0x%lx that get translated *not* to ERROR_MR_MID_NOT_FOUND (317)\n\n", Maximum); + + for ( Severity = 0; + Severity < 4; + Severity ++) + { + printf ("--- Severity %ld ---\n", Severity); + + for ( StatusCode = STATUS_SUCCESS; + StatusCode <= Maximum ; + StatusCode ++) + { + Status = ((Severity << 30) | StatusCode); + LastError = RtlNtStatusToDosError (Status); + if (ERROR_MR_MID_NOT_FOUND != LastError) + { + printf ("0x%08lx => %ldL\n", Status, LastError); + } + } + } + return EXIT_SUCCESS; +} +/* EOF */