3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/dbg/errinfo.c
6 * PURPOSE: Print information descriptions of error messages
8 * PROGRAMMERS: No programmer listed.
11 /* INCLUDES ******************************************************************/
14 #include <internal/debug.h>
16 /* GLOBALS *******************************************************************/
18 static PCHAR SeverityCodes
[] = {"SUC", "INF", "ERR", "WRN"};
20 static struct _FACLIST
30 static struct _ERRLIST
37 {STATUS_SUCCESS
, "SUCCESS", NULL
},
38 {STATUS_INSUFFICIENT_RESOURCES
, "INSUFFICIENT_RESOURCES", NULL
},
39 {STATUS_OBJECT_NAME_EXISTS
, "OBJECT_NAME_EXISTS", NULL
},
40 {STATUS_OBJECT_NAME_COLLISION
, "OBJECT_NAME_COLLISION", NULL
},
41 {STATUS_CTL_FILE_NOT_SUPPORTED
, "CTL_FILE_NOT_SUPPORTED", NULL
},
42 {STATUS_PORT_ALREADY_SET
, "PORT_ALREADY_SET", NULL
},
43 {STATUS_SECTION_NOT_IMAGE
, "SECTION_NOT_IMAGE", NULL
},
44 {STATUS_BAD_WORKING_SET_LIMIT
, "BAD_WORKING_SET_LIMIT", NULL
},
45 {STATUS_INCOMPATIBLE_FILE_MAP
, "INCOMPATIBLE_FILE_MAP", NULL
},
46 {STATUS_HANDLE_NOT_WAITABLE
, "HANDLE_NOT_WAITABLE", NULL
},
47 {STATUS_PORT_DISCONNECTED
, "PORT_DISCONNECTED", NULL
},
48 {STATUS_NOT_LOCKED
, "NOT_LOCKED", NULL
},
49 {STATUS_NOT_MAPPED_VIEW
, "NOT_MAPPED_VIEW", NULL
},
50 {STATUS_UNABLE_TO_FREE_VM
, "UNABLE_TO_FREE_VM", NULL
},
51 {STATUS_UNABLE_TO_DELETE_SECTION
, "UNABLE_TO_DELETE_SECTION", NULL
},
52 {STATUS_MORE_PROCESSING_REQUIRED
, "MORE_PROCESSING_REQUIRED", NULL
},
53 {STATUS_INVALID_CID
, "INVALID_CID", NULL
},
54 {STATUS_BAD_INITIAL_STACK
, "BAD_INITIAL_STACK", NULL
},
55 {STATUS_INVALID_VOLUME_LABEL
, "INVALID_VOLUME_LABEL", NULL
},
56 {STATUS_SECTION_NOT_EXTENDED
, "SECTION_NOT_EXTENDED", NULL
},
57 {STATUS_NOT_MAPPED_DATA
, "NOT_MAPPED_DATA", NULL
},
58 {STATUS_INFO_LENGTH_MISMATCH
, "INFO_LENGTH_MISMATCH", NULL
},
59 {STATUS_INVALID_INFO_CLASS
, "INVALID_INFO_CLASS", NULL
},
60 {STATUS_SUSPEND_COUNT_EXCEEDED
, "SUSPEND_COUNT_EXCEEDED", NULL
},
61 {STATUS_NOTIFY_ENUM_DIR
, "NOTIFY_ENUM_DIR", NULL
},
62 {STATUS_REGISTRY_RECOVERED
, "REGISTRY_RECOVERED", NULL
},
63 {STATUS_REGISTRY_IO_FAILED
, "REGISTRY_IO_FAILED", NULL
},
64 {STATUS_KEY_DELETED
, "KEY_DELETED", NULL
},
65 {STATUS_NO_LOG_SPACE
, "NO_LOG_SPACE", NULL
},
66 {STATUS_KEY_HAS_CHILDREN
, "KEY_HAS_CHILDREN", NULL
},
67 {STATUS_CHILD_MUST_BE_VOLATILE
, "CHILD_MUST_BE_VOLATILE", NULL
},
68 {STATUS_REGISTRY_CORRUPT
, "REGISTRY_CORRUPT", NULL
},
69 {STATUS_DLL_NOT_FOUND
, "DLL_NOT_FOUND", NULL
},
70 {STATUS_DLL_INIT_FAILED
, "DLL_INIT_FAILED", NULL
},
71 {STATUS_ORDINAL_NOT_FOUND
, "ORDINAL_NOT_FOUND", NULL
},
72 {STATUS_ENTRYPOINT_NOT_FOUND
, "ENTRYPOINT_NOT_FOUND", NULL
},
73 {STATUS_MORE_ENTRIES
, "MORE_ENTRIES", NULL
},
74 {STATUS_BUFFER_OVERFLOW
, "BUFFER_OVERFLOW", NULL
},
75 {STATUS_NO_MORE_FILES
, "NO_MORE_FILES", NULL
},
76 {STATUS_NO_INHERITANCE
, "NO_INHERITANCE", NULL
},
77 {STATUS_NO_MORE_EAS
, "NO_MORE_EAS", NULL
},
78 {STATUS_NO_MORE_ENTRIES
, "NO_MORE_ENTRIES", NULL
},
79 {STATUS_GUIDS_EXHAUSTED
, "GUIDS_EXHAUSTED", NULL
},
80 {STATUS_AGENTS_EXHAUSTED
, "AGENTS_EXHAUSTED", NULL
},
81 {STATUS_UNSUCCESSFUL
, "UNSUCCESSFUL", NULL
},
82 {STATUS_NOT_IMPLEMENTED
, "NOT_IMPLEMENTED", NULL
},
83 {STATUS_ILLEGAL_FUNCTION
, "ILLEGAL_FUNCTION", NULL
},
84 {STATUS_PAGEFILE_QUOTA
, "PAGEFILE_QUOTA", NULL
},
85 {STATUS_COMMITMENT_LIMIT
, "COMMITMENT_LIMIT", NULL
},
86 {STATUS_SECTION_TOO_BIG
, "SECTION_TOO_BIG", NULL
},
87 {RPC_NT_SS_IN_NULL_CONTEXT
, "RPC_NT_SS_IN_NULL_CONTEXT", NULL
},
88 {RPC_NT_INVALID_BINDING
, "RPC_NT_INVALID_BINDING", NULL
},
89 {STATUS_OBJECT_FILE_MISMATCH
, "OBJECT_FILE_MISMATCH", NULL
},
90 {STATUS_FILE_CLOSED
, "FILE_CLOSED", NULL
},
91 {STATUS_INVALID_PORT_HANDLE
, "INVALID_PORT_HANDLE", NULL
},
92 {STATUS_NOT_COMMITTED
, "NOT_COMMITTED", NULL
},
93 {STATUS_INVALID_PARAMETER
, "INVALID_PARAMETER", NULL
},
94 {STATUS_INVALID_PARAMETER_1
, "INVALID_PARAMETER_1", NULL
},
95 {STATUS_INVALID_PARAMETER_2
, "INVALID_PARAMETER_2", NULL
},
96 {STATUS_INVALID_PARAMETER_3
, "INVALID_PARAMETER_3", NULL
},
97 {STATUS_INVALID_PARAMETER_4
, "INVALID_PARAMETER_4", NULL
},
98 {STATUS_INVALID_PARAMETER_5
, "INVALID_PARAMETER_5", NULL
},
99 {STATUS_INVALID_PARAMETER_6
, "INVALID_PARAMETER_6", NULL
},
100 {STATUS_INVALID_PARAMETER_7
, "INVALID_PARAMETER_7", NULL
},
101 {STATUS_INVALID_PARAMETER_8
, "INVALID_PARAMETER_8", NULL
},
102 {STATUS_INVALID_PARAMETER_9
, "INVALID_PARAMETER_9", NULL
},
103 {STATUS_INVALID_PARAMETER_10
, "INVALID_PARAMETER_10", NULL
},
104 {STATUS_INVALID_PARAMETER_11
, "INVALID_PARAMETER_11", NULL
},
105 {STATUS_INVALID_PARAMETER_12
, "INVALID_PARAMETER_12", NULL
},
106 {STATUS_INVALID_PARAMETER_MAX
, "INVALID_PARAMETER_MAX", NULL
},
107 {STATUS_INVALID_PAGE_PROTECTION
, "INVALID_PAGE_PROTECTION", NULL
},
108 {STATUS_RESOURCE_DATA_NOT_FOUND
, "RESOURCE_DATA_NOT_FOUND", NULL
},
109 {STATUS_RESOURCE_TYPE_NOT_FOUND
, "RESOURCE_TYPE_NOT_FOUND", NULL
},
110 {STATUS_RESOURCE_NAME_NOT_FOUND
, "RESOURCE_NAME_NOT_FOUND", NULL
},
111 {STATUS_RESOURCE_LANG_NOT_FOUND
, "RESOURCE_LANG_NOT_FOUND", NULL
},
112 {STATUS_NO_SUCH_DEVICE
, "NO_SUCH_DEVICE", NULL
},
113 {STATUS_NO_SUCH_FILE
, "NO_SUCH_FILE", NULL
},
114 {STATUS_INVALID_DEVICE_REQUEST
, "INVALID_DEVICE_REQUEST", NULL
},
115 {STATUS_END_OF_FILE
, "END_OF_FILE", NULL
},
116 {STATUS_FILE_FORCED_CLOSED
, "FILE_FORCED_CLOSED", NULL
},
117 {STATUS_WRONG_VOLUME
, "WRONG_VOLUME", NULL
},
118 {STATUS_NO_MEDIA
, "NO_MEDIA", NULL
},
119 {STATUS_NO_MEDIA_IN_DEVICE
, "NO_MEDIA_IN_DEVICE", NULL
},
120 {STATUS_NONEXISTENT_SECTOR
, "NONEXISTENT_SECTOR", NULL
},
121 {STATUS_WORKING_SET_QUOTA
, "WORKING_SET_QUOTA", NULL
},
122 {STATUS_CONFLICTING_ADDRESS
, "CONFLICTING_ADDRESS", NULL
},
123 {STATUS_INVALID_SYSTEM_SERVICE
, "INVALID_SYSTEM_SERVICE", NULL
},
124 {STATUS_THREAD_IS_TERMINATING
, "THREAD_IS_TERMINATING", NULL
},
125 {STATUS_PROCESS_IS_TERMINATING
, "PROCESS_IS_TERMINATING", NULL
},
126 {STATUS_INVALID_LOCK_SEQUENCE
, "INVALID_LOCK_SEQUENCE", NULL
},
127 {STATUS_INVALID_VIEW_SIZE
, "INVALID_VIEW_SIZE", NULL
},
128 {STATUS_ALREADY_COMMITTED
, "ALREADY_COMMITTED", NULL
},
129 {STATUS_ACCESS_DENIED
, "ACCESS_DENIED", NULL
},
130 {STATUS_FILE_IS_A_DIRECTORY
, "FILE_IS_A_DIRECTORY", NULL
},
131 {STATUS_CANNOT_DELETE
, "CANNOT_DELETE", NULL
},
132 {STATUS_INVALID_COMPUTER_NAME
, "INVALID_COMPUTER_NAME", NULL
},
133 {STATUS_FILE_DELETED
, "FILE_DELETED", NULL
},
134 {STATUS_DELETE_PENDING
, "DELETE_PENDING", NULL
},
135 {STATUS_PORT_CONNECTION_REFUSED
, "PORT_CONNECTION_REFUSED", NULL
},
136 {STATUS_NO_SUCH_PRIVILEGE
, "NO_SUCH_PRIVILEGE", NULL
},
137 {STATUS_PRIVILEGE_NOT_HELD
, "PRIVILEGE_NOT_HELD", NULL
},
138 {STATUS_CANNOT_IMPERSONATE
, "CANNOT_IMPERSONATE", NULL
},
139 {STATUS_LOGON_FAILURE
, "LOGON_FAILURE", NULL
},
140 {STATUS_ACCOUNT_RESTRICTION
, "ACCOUNT_RESTRICTION", NULL
},
141 {STATUS_INVALID_LOGON_HOURS
, "INVALID_LOGON_HOURS", NULL
},
142 {STATUS_INVALID_WORKSTATION
, "INVALID_WORKSTATION", NULL
},
143 {STATUS_BUFFER_TOO_SMALL
, "BUFFER_TOO_SMALL", NULL
},
144 {STATUS_UNABLE_TO_DECOMMIT_VM
, "UNABLE_TO_DECOMMIT_VM", NULL
},
145 {STATUS_DISK_CORRUPT_ERROR
, "DISK_CORRUPT_ERROR", NULL
},
146 {STATUS_OBJECT_NAME_INVALID
, "OBJECT_NAME_INVALID", NULL
},
147 {STATUS_OBJECT_NAME_NOT_FOUND
, "OBJECT_NAME_NOT_FOUND", NULL
},
148 {STATUS_OBJECT_PATH_INVALID
, "OBJECT_PATH_INVALID", NULL
},
149 {STATUS_OBJECT_PATH_NOT_FOUND
, "OBJECT_PATH_NOT_FOUND", NULL
},
150 {STATUS_DFS_EXIT_PATH_FOUND
, "DFS_EXIT_PATH_FOUND", NULL
},
151 {STATUS_OBJECT_PATH_SYNTAX_BAD
, "OBJECT_PATH_SYNTAX_BAD", NULL
},
152 {STATUS_DATA_OVERRUN
, "DATA_OVERRUN", NULL
},
153 {STATUS_DATA_LATE_ERROR
, "DATA_LATE_ERROR", NULL
},
154 {STATUS_DATA_ERROR
, "DATA_ERROR", NULL
},
155 {STATUS_CRC_ERROR
, "CRC_ERROR", NULL
},
156 {STATUS_SHARING_VIOLATION
, "SHARING_VIOLATION", NULL
},
157 {STATUS_QUOTA_EXCEEDED
, "QUOTA_EXCEEDED", NULL
},
158 {STATUS_MUTANT_NOT_OWNED
, "MUTANT_NOT_OWNED", NULL
},
159 {STATUS_SEMAPHORE_LIMIT_EXCEEDED
, "SEMAPHORE_LIMIT_EXCEEDED", NULL
},
160 {STATUS_DISK_FULL
, "DISK_FULL", NULL
},
161 {STATUS_LOCK_NOT_GRANTED
, "LOCK_NOT_GRANTED", NULL
},
162 {STATUS_DEVICE_NOT_READY
, "DEVICE_NOT_READY", NULL
},
163 {STATUS_IO_TIMEOUT
, "IO_TIMEOUT", NULL
},
164 {STATUS_MEDIA_WRITE_PROTECTED
, "MEDIA_WRITE_PROTECTED", NULL
},
165 {STATUS_NO_MEDIA_IN_DRIVE
, "NO_MEDIA_IN_DRIVE", NULL
},
166 {STATUS_VERIFY_REQUIRED
, "VERIFY_REQUIRED", NULL
},
167 {STATUS_UNRECOGNIZED_MEDIA
, "UNRECOGNIZED_MEDIA", NULL
},
168 {STATUS_UNRECOGNIZED_VOLUME
, "UNRECOGNIZED_VOLUME", NULL
},
169 {STATUS_FS_DRIVER_REQUIRED
, "FS_DRIVER_REQUIRED", NULL
},
170 {STATUS_NOT_SUPPORTED
, "NOT_SUPPORTED", NULL
},
171 {STATUS_DISK_OPERATION_FAILED
, "DISK_OPERATION_FAILED", NULL
},
172 {STATUS_FS_QUERY_REQUIRED
, "FS_QUERY_REQUIRED", NULL
},
176 /* FUNCTIONS *****************************************************************/
179 DbgGetErrorText(NTSTATUS ErrorCode
, PUNICODE_STRING ErrorText
, ULONG Flags
)
182 char TempBuf
[255], NumBuf
[32];
183 ANSI_STRING AnsiString
;
186 if (Flags
& DBG_GET_SHOW_FACILITY
)
188 if (NT_CUSTOMER(ErrorCode
))
190 _snprintf(TempBuf
, sizeof(TempBuf
)-1,
192 SeverityCodes
[NT_SEVERITY(ErrorCode
)]);
193 TempBuf
[sizeof(TempBuf
)-1] = '\0';
197 for (i
= 0; FacList
[i
].Name
!= NULL
; i
++)
199 if (FacList
[i
].Code
== (ULONG
) NT_FACILITY(ErrorCode
))
204 if (FacList
[i
].Name
!= NULL
)
206 _snprintf(TempBuf
, sizeof(TempBuf
)-1, "%%%s-%s-",
208 SeverityCodes
[NT_SEVERITY(ErrorCode
)]);
209 TempBuf
[sizeof(TempBuf
)-1] = '\0';
213 _snprintf(TempBuf
, sizeof(TempBuf
)-1, "%%UNKNOWN-%s-",
214 SeverityCodes
[NT_SEVERITY(ErrorCode
)]);
215 TempBuf
[sizeof(TempBuf
)-1] = '\0';
219 for (i
= 0; ErrList
[i
].Name
!= NULL
; i
++)
221 if (ErrorCode
== ErrList
[i
].Code
)
226 if (ErrList
[i
].Name
!= NULL
)
228 if (Flags
& DBG_GET_SHOW_FACILITY
)
230 strcat(TempBuf
, ErrList
[i
].Name
);
231 strcat(TempBuf
, " ");
233 if (ErrList
[i
].Text
!= NULL
)
235 strcat(TempBuf
, ErrList
[i
].Text
);
239 strcat(TempBuf
, ErrList
[i
].Name
);
244 if (Flags
& DBG_GET_SHOW_FACILITY
)
246 _snprintf(NumBuf
, sizeof(NumBuf
)-1, "%08lx", ErrorCode
);
247 NumBuf
[sizeof(NumBuf
)-1] = '\0';
248 strcat(TempBuf
, NumBuf
);
249 strcat(TempBuf
, " ");
251 sprintf(NumBuf
, "Unknown Message #%08lx", ErrorCode
);
252 strcat(TempBuf
, NumBuf
);
254 RtlInitAnsiString(&AnsiString
, TempBuf
);
255 RtlAnsiStringToUnicodeString(ErrorText
, &AnsiString
, TRUE
);
259 DbgPrintErrorMessage(NTSTATUS ErrorCode
)
261 UNICODE_STRING ErrorText
;
263 DbgGetErrorText(ErrorCode
, &ErrorText
, 0xf);
264 DbgPrint("%wZ\n", &ErrorText
);
265 RtlFreeUnicodeString(&ErrorText
);