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