@samitouri / QOSAMI-WSL / commits / f0e42fad

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)