1 /*
2  * Convert NTSTATUS codes to Win32 error codes: run it
3  * on a NT box AND on a ROS box, then diff the results.
4  *
5  * This utility should help keeping correct how Ros
6  * translates executive's errors codes into Win32 error
7  * codes.
8  *
9  * Usage: nts2w32err [MaxStatusCode] > log.txt
10  *
11  * 2004-01-10 Emanuele Aliberti
12  *
13  */
14 #define WIN32_NO_STATUS
15 #include <windows.h>
16 #include <stdlib.h>
17 #include <ntndk.h>
18 #include <stdio.h>
19 
20 int main (int argc, char * argv [])
21 {
22 	NTSTATUS Severity = 0;
23 	NTSTATUS StatusCode = STATUS_SUCCESS;
24 	NTSTATUS Status = STATUS_SUCCESS;
25 	DWORD    LastError = ERROR_SUCCESS;
26 	DWORD    Maximum = 0x40000;
27 
28 	if (2 == argc)
29 	{
30 		sscanf (argv[1], "%lx", & Maximum);
31 	}
32 
33 	printf ("NT error codes 0x0-0x%lx that get translated *not* to ERROR_MR_MID_NOT_FOUND (317)\n\n", Maximum);
34 
35 	for (	Severity = 0;
36 		Severity < 4;
37 		Severity ++)
38 	{
39 		printf ("--- Severity %ld ---\n", Severity);
40 
41 		for (	StatusCode = STATUS_SUCCESS;
42 			StatusCode <= Maximum ;
43 			StatusCode ++)
44 		{
45 			Status = ((Severity << 30) | StatusCode);
46 			LastError = RtlNtStatusToDosError (Status);
47 			if (ERROR_MR_MID_NOT_FOUND != LastError)
48 			{
49 				printf ("0x%08lx => %ldL\n", Status, LastError);
50 			}
51 		}
52 	}
53 	return EXIT_SUCCESS;
54 }
55 /* EOF */
56