Add missing error code mappings found in user visible errors (#41074)
Some error codes in user visible errors are not converted to human readable strings. For example: Wsl/Service/CreateInstance/CreateVm/0x800705b4 should be Wsl/Service/CreateInstance/CreateVm/ERROR_TIMEOUT. This PR adds mappings for missing error codes found in user visible error telemetries. And fixes the STATUS_SHUTDOWN_IN_PROGRESS mapping.
Feng Wang committed
Jul 15, 2026 at 10:35 UTC
f0e42fadded32f85bdea49e154ee7eb160365b3d
2 files changed
+67
-3
src/windows/common/wslutil.cpp
+64
-3
@@ -40,6 +40,7 @@ namespace {
40
41
#define X(Error) {(Error), L## #Error}
42
#define X_WIN32(Error) {HRESULT_FROM_WIN32(Error), L## #Error}
43
+#define X_NT(Error) {HRESULT_FROM_NT(Error), L## #Error}
44
45
static const std::map<HRESULT, LPCWSTR> g_commonErrors{
46
X(WSL_E_DEFAULT_DISTRO_NOT_FOUND),
@@ -139,7 +140,7 @@ static const std::map<HRESULT, LPCWSTR> g_commonErrors{
140
X(HCS_E_INVALID_JSON),
141
X_WIN32(ERROR_INVALID_SECURITY_DESCR),
142
X(VM_E_INVALID_STATE),
142
- X_WIN32(STATUS_SHUTDOWN_IN_PROGRESS),
143
+ X_NT(STATUS_SHUTDOWN_IN_PROGRESS),
144
X(WININET_E_TIMEOUT),
145
X(WSAEADDRNOTAVAIL),
146
X_WIN32(ERROR_BAD_IMPERSONATION_LEVEL),
@@ -165,8 +166,68 @@ static const std::map<HRESULT, LPCWSTR> g_commonErrors{
166
X_WIN32(RPC_S_SERVER_UNAVAILABLE),
167
X_WIN32(ERROR_ELEVATION_REQUIRED),
168
X_WIN32(WSAEACCES),
168
- X_WIN32(WSAEADDRINUSE)};
169
-
169
+ X_WIN32(WSAEADDRINUSE),
170
+ X(CO_E_SERVER_EXEC_FAILURE),
171
+ X(E_ILLEGAL_STATE_CHANGE),
172
+ X(E_NOTIMPL),
173
+ X(E_OUTOFMEMORY),
174
+ X(FVE_E_LOCKED_VOLUME),
175
+ X(HCS_E_SYSTEM_ALREADY_STOPPED),
176
+ X(HCS_E_TERMINATED),
177
+ X(HTTP_E_STATUS_BAD_GATEWAY),
178
+ X(HTTP_E_STATUS_FORBIDDEN),
179
+ X(HTTP_E_STATUS_SERVICE_UNAVAIL),
180
+ X(RPC_E_CALL_CANCELED),
181
+ X(WININET_E_CONNECTION_ABORTED),
182
+ X(WININET_E_CONNECTION_RESET),
183
+ X(WININET_E_INVALID_CA),
184
+ X(WININET_E_INVALID_SERVER_RESPONSE),
185
+ X(WININET_E_SECURITY_CHANNEL_ERROR),
186
+ X_WIN32(ERROR_BAD_EXE_FORMAT),
187
+ X_WIN32(ERROR_BAD_INHERITANCE_ACL),
188
+ X_WIN32(ERROR_BAD_NET_NAME),
189
+ X_WIN32(ERROR_COMMITMENT_LIMIT),
190
+ X_WIN32(ERROR_CONNECTION_ABORTED),
191
+ X_WIN32(ERROR_DEVICE_REMOVED),
192
+ X_WIN32(ERROR_DISK_FULL),
193
+ X_WIN32(ERROR_DRIVE_LOCKED),
194
+ X_WIN32(ERROR_FILE_CORRUPT),
195
+ X_WIN32(ERROR_FILE_SYSTEM_LIMITATION),
196
+ X_WIN32(ERROR_GEN_FAILURE),
197
+ X_WIN32(ERROR_INSTALL_ALREADY_RUNNING),
198
+ X_WIN32(ERROR_INSTALL_LOG_FAILURE),
199
+ X_WIN32(ERROR_INSTALL_PACKAGE_OPEN_FAILED),
200
+ X_WIN32(ERROR_INVALID_DRIVE),
201
+ X_WIN32(ERROR_INVALID_FUNCTION),
202
+ X_WIN32(ERROR_LOGON_TYPE_NOT_GRANTED),
203
+ X_WIN32(ERROR_NETNAME_DELETED),
204
+ X_WIN32(ERROR_NO_SUCH_DEVICE),
205
+ X_WIN32(ERROR_NO_SYSTEM_RESOURCES),
206
+ X_WIN32(ERROR_NOT_READY),
207
+ X_WIN32(ERROR_NOT_SAFEBOOT_SERVICE),
208
+ X_WIN32(ERROR_SEM_TIMEOUT),
209
+ X_WIN32(ERROR_SERVICE_DISABLED),
210
+ X_WIN32(ERROR_SHUTDOWN_IN_PROGRESS),
211
+ X_WIN32(ERROR_SUCCESS_REBOOT_INITIATED),
212
+ X_WIN32(ERROR_TIMEOUT),
213
+ X_WIN32(ERROR_UNRECOGNIZED_VOLUME),
214
+ X_WIN32(ERROR_VIRTDISK_PROVIDER_NOT_FOUND),
215
+ X_WIN32(ERROR_VIRTUAL_DISK_LIMITATION),
216
+ X_WIN32(RPC_S_CALL_CANCELLED),
217
+ X_WIN32(RPC_S_CALL_FAILED_DNE),
218
+ X_WIN32(RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH),
219
+ X_WIN32(RPC_S_UNKNOWN_IF),
220
+ X_WIN32(WSAECONNABORTED),
221
+ X_WIN32(WSAECONNRESET),
222
+ X_WIN32(WSAENOBUFS),
223
+ X_WIN32(WSAEOPNOTSUPP),
224
+ X_NT(STATUS_ACCESS_DENIED),
225
+ X_NT(STATUS_CONNECTION_DISCONNECTED),
226
+ X_NT(STATUS_INVALID_PARAMETER),
227
+ X_NT(STATUS_RETRY)};
228
+
229
+#undef X_NT
230
+#undef X_WIN32
231
#undef X
232
233
#define X(Ctx) {Context::Ctx, L## #Ctx}
src/windows/inc/wdk.h
+3
@@ -38,6 +38,9 @@ Abstract:
38
#define STATUS_NO_MORE_FILES ((NTSTATUS)0x80000006L)
39
#define STATUS_NO_SUCH_FILE ((NTSTATUS)0xC000000FL)
40
#define STATUS_SHUTDOWN_IN_PROGRESS ((NTSTATUS)0xC00002FEL)
41
+#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L)
42
+#define STATUS_CONNECTION_DISCONNECTED ((NTSTATUS)0xC000020CL)
43
+#define STATUS_RETRY ((NTSTATUS)0xC000022DL)
44
45
#define IOCTL_DISK_ARE_VOLUMES_READY CTL_CODE(IOCTL_DISK_BASE, 0x0087, METHOD_BUFFERED, FILE_READ_ACCESS)
46
#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)