blob: 1f9e5871502a3a816201844ea54f7f387efe574a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
|
/* $Id: RTErrConvertFromWin32.cpp $ */
/** @file
* IPRT - Convert win32 error codes to iprt status codes.
*/
/*
* Copyright (C) 2006-2019 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* you can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*
* The contents of this file may alternatively be used under the terms
* of the Common Development and Distribution License Version 1.0
* (CDDL) only, as it comes in the "COPYING.CDDL" file of the
* VirtualBox OSE distribution, in which case the provisions of the
* CDDL are applicable instead of those of the GPL.
*
* You may elect to license modified versions of this file under the
* terms and conditions of either the GPL or the CDDL or both.
*/
/*********************************************************************************************************************************
* Header Files *
*********************************************************************************************************************************/
#include <iprt/win/windows.h>
#include <iprt/err.h>
#include <iprt/log.h>
#include <iprt/assert.h>
RTR3DECL(int) RTErrConvertFromWin32(unsigned uNativeCode)
{
/* very fast check for no error. */
if (uNativeCode == ERROR_SUCCESS)
return(VINF_SUCCESS);
/* process error codes. */
switch (uNativeCode)
{
case ERROR_INVALID_FUNCTION: return VERR_INVALID_FUNCTION;
case ERROR_FILE_NOT_FOUND: return VERR_FILE_NOT_FOUND;
case ERROR_PATH_NOT_FOUND: return VERR_PATH_NOT_FOUND;
case ERROR_TOO_MANY_OPEN_FILES: return VERR_TOO_MANY_OPEN_FILES;
case ERROR_ACCESS_DENIED: return VERR_ACCESS_DENIED;
case ERROR_NOACCESS: return VERR_INVALID_POINTER; /* (STATUS_ACCESS_VIOLATION, STATUS_DATATYPE_MISALIGNMENT, STATUS_DATATYPE_MISALIGNMENT_ERROR) */
case ERROR_INVALID_HANDLE:
case ERROR_DIRECT_ACCESS_HANDLE: return VERR_INVALID_HANDLE;
case ERROR_NO_SYSTEM_RESOURCES: /** @todo better translation */
case ERROR_NOT_ENOUGH_MEMORY:
case ERROR_OUTOFMEMORY: return VERR_NO_MEMORY;
case ERROR_INVALID_DRIVE: return VERR_INVALID_DRIVE;
case ERROR_CURRENT_DIRECTORY: return VERR_CANT_DELETE_DIRECTORY;
case ERROR_NOT_SAME_DEVICE: return VERR_NOT_SAME_DEVICE;
case ERROR_NO_MORE_FILES: return VERR_NO_MORE_FILES;
case ERROR_WRITE_PROTECT: return VERR_WRITE_PROTECT;
case ERROR_BAD_UNIT: return VERR_IO_BAD_UNIT;
case ERROR_NOT_READY: return VERR_IO_NOT_READY;
case ERROR_BAD_COMMAND: return VERR_IO_BAD_COMMAND;
case ERROR_CRC: return VERR_IO_CRC;
case ERROR_BAD_LENGTH: return VERR_IO_BAD_LENGTH;
case ERROR_SEEK: return VERR_SEEK;
case ERROR_NOT_DOS_DISK: return VERR_DISK_INVALID_FORMAT;
case ERROR_SECTOR_NOT_FOUND: return VERR_IO_SECTOR_NOT_FOUND;
case ERROR_WRITE_FAULT: return VERR_WRITE_ERROR;
case ERROR_READ_FAULT: return VERR_READ_ERROR;
case ERROR_GEN_FAILURE: return VERR_IO_GEN_FAILURE;
case ERROR_SHARING_VIOLATION: return VERR_SHARING_VIOLATION;
case ERROR_LOCK_VIOLATION: return VERR_FILE_LOCK_VIOLATION;
case ERROR_HANDLE_EOF: return VERR_EOF;
case ERROR_NOT_LOCKED: return VERR_FILE_NOT_LOCKED;
case ERROR_DIR_NOT_EMPTY: return VERR_DIR_NOT_EMPTY;
case ERROR_HANDLE_DISK_FULL:
case ERROR_DISK_FULL: return VERR_DISK_FULL;
case ERROR_NOT_SUPPORTED: return VERR_NOT_SUPPORTED;
case ERROR_INVALID_PARAMETER:
case ERROR_BAD_ARGUMENTS:
case ERROR_INVALID_FLAGS: return VERR_INVALID_PARAMETER;
case ERROR_REM_NOT_LIST: return VERR_NET_IO_ERROR;
case ERROR_BAD_NETPATH:
case ERROR_NETNAME_DELETED: return VERR_NET_HOST_NOT_FOUND;
case ERROR_BAD_NET_NAME:
case ERROR_DEV_NOT_EXIST: return VERR_NET_PATH_NOT_FOUND;
case ERROR_NETWORK_BUSY:
case ERROR_TOO_MANY_CMDS:
case ERROR_TOO_MANY_NAMES:
case ERROR_TOO_MANY_SESS:
case ERROR_OUT_OF_STRUCTURES: return VERR_NET_OUT_OF_RESOURCES;
case ERROR_PRINTQ_FULL:
case ERROR_NO_SPOOL_SPACE:
case ERROR_PRINT_CANCELLED: return VERR_NET_PRINT_ERROR;
case ERROR_DUP_NAME:
case ERROR_ADAP_HDW_ERR:
case ERROR_BAD_NET_RESP:
case ERROR_UNEXP_NET_ERR:
case ERROR_BAD_REM_ADAP:
case ERROR_NETWORK_ACCESS_DENIED:
case ERROR_BAD_DEV_TYPE:
case ERROR_SHARING_PAUSED:
case ERROR_REQ_NOT_ACCEP:
case ERROR_REDIR_PAUSED:
case ERROR_ALREADY_ASSIGNED:
case ERROR_INVALID_PASSWORD:
case ERROR_NET_WRITE_FAULT: return VERR_NET_IO_ERROR;
case ERROR_FILE_EXISTS:
case ERROR_ALREADY_EXISTS: return VERR_ALREADY_EXISTS;
case ERROR_CANNOT_MAKE: return VERR_CANT_CREATE;
case ERROR_NO_PROC_SLOTS: return VERR_MAX_PROCS_REACHED;
case ERROR_TOO_MANY_SEMAPHORES: return VERR_TOO_MANY_SEMAPHORES;
case ERROR_EXCL_SEM_ALREADY_OWNED: return VERR_EXCL_SEM_ALREADY_OWNED;
case ERROR_SEM_IS_SET: return VERR_SEM_IS_SET;
case ERROR_TOO_MANY_SEM_REQUESTS: return VERR_TOO_MANY_SEM_REQUESTS;
case ERROR_SEM_OWNER_DIED: return VERR_SEM_OWNER_DIED;
case ERROR_DRIVE_LOCKED: return VERR_DRIVE_LOCKED;
case ERROR_BROKEN_PIPE: return VERR_BROKEN_PIPE;
case ERROR_OPEN_FAILED: return VERR_OPEN_FAILED;
case ERROR_BUFFER_OVERFLOW:
case ERROR_INSUFFICIENT_BUFFER: return VERR_BUFFER_OVERFLOW;
case ERROR_NO_MORE_SEARCH_HANDLES: return VERR_NO_MORE_SEARCH_HANDLES;
case ERROR_SEM_TIMEOUT:
case WAIT_TIMEOUT:
case ERROR_SERVICE_REQUEST_TIMEOUT:
case ERROR_COUNTER_TIMEOUT:
case ERROR_TIMEOUT: return VERR_TIMEOUT;
case ERROR_INVALID_NAME:
case ERROR_BAD_DEVICE:
case ERROR_BAD_PATHNAME: return VERR_INVALID_NAME;
case ERROR_NEGATIVE_SEEK: return VERR_NEGATIVE_SEEK;
case ERROR_SEEK_ON_DEVICE: return VERR_SEEK_ON_DEVICE;
case ERROR_SIGNAL_REFUSED:
case ERROR_NO_SIGNAL_SENT: return VERR_SIGNAL_REFUSED;
case ERROR_SIGNAL_PENDING: return VERR_SIGNAL_PENDING;
case ERROR_MAX_THRDS_REACHED: return VERR_MAX_THRDS_REACHED;
case ERROR_LOCK_FAILED: return VERR_FILE_LOCK_FAILED;
case ERROR_SEM_NOT_FOUND: return VERR_SEM_NOT_FOUND;
case ERROR_FILENAME_EXCED_RANGE: return VERR_FILENAME_TOO_LONG;
case ERROR_INVALID_SIGNAL_NUMBER: return VERR_SIGNAL_INVALID;
case ERROR_BAD_PIPE: return VERR_BAD_PIPE;
case ERROR_PIPE_BUSY: return VERR_PIPE_BUSY;
case ERROR_NO_DATA: return VERR_NO_DATA;
case ERROR_PIPE_NOT_CONNECTED: return VERR_PIPE_NOT_CONNECTED;
case ERROR_MORE_DATA: return VERR_MORE_DATA;
case ERROR_NOT_OWNER: return VERR_NOT_OWNER;
case ERROR_TOO_MANY_POSTS: return VERR_TOO_MANY_POSTS;
case ERROR_PIPE_CONNECTED:
case ERROR_PIPE_LISTENING: return VERR_PIPE_IO_ERROR;
case ERROR_OPERATION_ABORTED: return VERR_INTERRUPTED;
case ERROR_NO_UNICODE_TRANSLATION: return VERR_NO_TRANSLATION;
case RPC_S_INVALID_STRING_UUID: return VERR_INVALID_UUID_FORMAT;
case ERROR_PROC_NOT_FOUND: return VERR_SYMBOL_NOT_FOUND;
case ERROR_MOD_NOT_FOUND: return VERR_MODULE_NOT_FOUND;
case ERROR_INVALID_EXE_SIGNATURE: return VERR_INVALID_EXE_SIGNATURE;
case ERROR_BAD_EXE_FORMAT: return VERR_BAD_EXE_FORMAT;
case ERROR_FILE_CORRUPT: return VERR_BAD_EXE_FORMAT;
case ERROR_RESOURCE_DATA_NOT_FOUND: return VERR_NO_DATA; /// @todo fix ERROR_RESOURCE_DATA_NOT_FOUND translation
case ERROR_INVALID_ADDRESS: return VERR_INVALID_POINTER; /// @todo fix ERROR_INVALID_ADDRESS translation - dbghelp returns it on some line number queries.
case ERROR_CANCELLED: return VERR_CANCELLED;
case ERROR_USER_MAPPED_FILE: return VERR_SHARING_VIOLATION;
case ERROR_DIRECTORY: return VERR_NOT_A_DIRECTORY;
case ERROR_TRUSTED_RELATIONSHIP_FAILURE:
case ERROR_TRUSTED_DOMAIN_FAILURE:
return VERR_AUTHENTICATION_FAILURE;
case ERROR_LOGON_FAILURE: return VERR_AUTHENTICATION_FAILURE;
case ERROR_PRIVILEGE_NOT_HELD: return VERR_PRIVILEGE_NOT_HELD;
case ERROR_PASSWORD_EXPIRED:
case ERROR_ACCOUNT_RESTRICTION:
case ERROR_PASSWORD_RESTRICTION:
case ERROR_ACCOUNT_DISABLED: return VERR_ACCOUNT_RESTRICTED;
case ERROR_INVALID_IMAGE_HASH: return VERR_LDR_IMAGE_HASH;
case ERROR_UNRECOGNIZED_VOLUME: return VERR_MEDIA_NOT_RECOGNIZED;
case ERROR_ELEVATION_REQUIRED: return VERR_PROC_ELEVATION_REQUIRED;
/*
* Winsocket errors are mostly BSD errno.h wrappers.
* This is copied from RTErrConvertFromErrno() and checked against winsock.h.
* Please, keep things in sync!
*/
#ifdef WSAEPERM
case WSAEPERM: return VERR_ACCESS_DENIED; /* 1 */
#endif
#ifdef WSAENOENT
case WSAENOENT: return VERR_FILE_NOT_FOUND;
#endif
#ifdef WSAESRCH
case WSAESRCH: return VERR_PROCESS_NOT_FOUND;
#endif
case WSAEINTR: return VERR_INTERRUPTED;
#ifdef WSAEIO
case WSAEIO: return VERR_DEV_IO_ERROR;
#endif
#ifdef WSAE2BIG
case WSAE2BIG: return VERR_TOO_MUCH_DATA;
#endif
#ifdef WSAENOEXEC
case WSAENOEXEC: return VERR_BAD_EXE_FORMAT;
#endif
case WSAEBADF: return VERR_INVALID_HANDLE;
#ifdef WSAECHILD
case WSAECHILD: return VERR_PROCESS_NOT_FOUND; //... /* 10 */
#endif
case WSAEWOULDBLOCK: return VERR_TRY_AGAIN; /* EAGAIN */
#ifdef WSAENOMEM
case WSAENOMEM: return VERR_NO_MEMORY;
#endif
case WSAEACCES: return VERR_ACCESS_DENIED;
case WSAEFAULT: return VERR_INVALID_POINTER;
//case WSAENOTBLK: return VERR_;
#ifdef WSAEBUSY
case WSAEBUSY: return VERR_DEV_IO_ERROR;
#endif
#ifdef WSAEEXIST
case WSAEEXIST: return VERR_ALREADY_EXISTS;
#endif
//case WSAEXDEV:
#ifdef WSAENODEV
case WSAENODEV: return VERR_NOT_SUPPORTED;
#endif
#ifdef WSAENOTDIR
case WSAENOTDIR: return VERR_PATH_NOT_FOUND; /* 20 */
#endif
#ifdef WSAEISDIR
case WSAEISDIR: return VERR_FILE_NOT_FOUND;
#endif
case WSAEINVAL: return VERR_INVALID_PARAMETER;
#ifdef WSAENFILE
case WSAENFILE: return VERR_TOO_MANY_OPEN_FILES;
#endif
case WSAEMFILE: return VERR_TOO_MANY_OPEN_FILES;
#ifdef WSAENOTTY
case WSAENOTTY: return VERR_INVALID_FUNCTION;
#endif
#ifdef WSAETXTBSY
case WSAETXTBSY: return VERR_SHARING_VIOLATION;
#endif
//case WSAEFBIG:
#ifdef WSAENOSPC
case WSAENOSPC: return VERR_DISK_FULL;
#endif
#ifdef WSAESPIPE
case WSAESPIPE: return VERR_SEEK_ON_DEVICE;
#endif
#ifdef WSAEROFS
case WSAEROFS: return VERR_WRITE_PROTECT; /* 30 */
#endif
//case WSAEMLINK:
#ifdef WSAEPIPE
case WSAEPIPE: return VERR_BROKEN_PIPE;
#endif
#ifdef WSAEDOM
case WSAEDOM: return VERR_INVALID_PARAMETER;
#endif
#ifdef WSAERANGE
case WSAERANGE: return VERR_INVALID_PARAMETER;
#endif
#ifdef WSAEDEADLK
case WSAEDEADLK: return VERR_DEADLOCK;
#endif
case WSAENAMETOOLONG: return VERR_FILENAME_TOO_LONG;
#ifdef WSAENOLCK
case WSAENOLCK: return VERR_FILE_LOCK_FAILED;
#endif
#ifdef WSAENOSYS
case WSAENOSYS: return VERR_NOT_SUPPORTED;
#endif
case WSAENOTEMPTY: return VERR_CANT_DELETE_DIRECTORY;
case WSAELOOP: return VERR_TOO_MANY_SYMLINKS; /* 40 */
//case WSAENOMSG 42 /* No message of desired type */
//case WSAEIDRM 43 /* Identifier removed */
//case WSAECHRNG 44 /* Channel number out of range */
//case WSAEL2NSYNC 45 /* Level 2 not synchronized */
//case WSAEL3HLT 46 /* Level 3 halted */
//case WSAEL3RST 47 /* Level 3 reset */
//case WSAELNRNG 48 /* Link number out of range */
//case WSAEUNATCH 49 /* Protocol driver not attached */
//case WSAENOCSI 50 /* No CSI structure available */
//case WSAEL2HLT 51 /* Level 2 halted */
//case WSAEBADE 52 /* Invalid exchange */
//case WSAEBADR 53 /* Invalid request descriptor */
//case WSAEXFULL 54 /* Exchange full */
//case WSAENOANO 55 /* No anode */
//case WSAEBADRQC 56 /* Invalid request code */
//case WSAEBADSLT 57 /* Invalid slot */
//case 58:
//case WSAEBFONT 59 /* Bad font file format */
//case WSAENOSTR 60 /* Device not a stream */
#ifdef WSAENODATA
case WSAENODATA: return VERR_NO_DATA;
#endif
//case WSAETIME 62 /* Timer expired */
//case WSAENOSR 63 /* Out of streams resources */
#ifdef WSAENONET
case WSAENONET: return VERR_NET_NO_NETWORK;
#endif
//case WSAENOPKG 65 /* Package not installed */
//case WSAEREMOTE 66 /* Object is remote */
//case WSAENOLINK 67 /* Link has been severed */
//case WSAEADV 68 /* Advertise error */
//case WSAESRMNT 69 /* Srmount error */
//case WSAECOMM 70 /* Communication error on send */
//case WSAEPROTO 71 /* Protocol error */
//case WSAEMULTIHOP 72 /* Multihop attempted */
//case WSAEDOTDOT 73 /* RFS specific error */
//case WSAEBADMSG 74 /* Not a data message */
#ifdef WSAEOVERFLOW
case WSAEOVERFLOW: return VERR_TOO_MUCH_DATA;
#endif
#ifdef WSAENOTUNIQ
case WSAENOTUNIQ: return VERR_NET_NOT_UNIQUE_NAME;
#endif
#ifdef WSAEBADFD
case WSAEBADFD: return VERR_INVALID_HANDLE;
#endif
//case WSAEREMCHG 78 /* Remote address changed */
//case WSAELIBACC 79 /* Can not access a needed shared library */
//case WSAELIBBAD 80 /* Accessing a corrupted shared library */
//case WSAELIBSCN 81 /* .lib section in a.out corrupted */
//case WSAELIBMAX 82 /* Attempting to link in too many shared libraries */
//case WSAELIBEXEC 83 /* Cannot exec a shared library directly */
#ifdef WSAEILSEQ
case WSAEILSEQ: return VERR_NO_TRANSLATION;
#endif
#ifdef WSAERESTART
case WSAERESTART: return VERR_INTERRUPTED;
#endif
//case WSAESTRPIPE 86 /* Streams pipe error */
//case WSAEUSERS 87 /* Too many users */
case WSAENOTSOCK: return VERR_NET_NOT_SOCKET;
case WSAEDESTADDRREQ: return VERR_NET_DEST_ADDRESS_REQUIRED;
case WSAEMSGSIZE: return VERR_NET_MSG_SIZE;
case WSAEPROTOTYPE: return VERR_NET_PROTOCOL_TYPE;
case WSAENOPROTOOPT: return VERR_NET_PROTOCOL_NOT_AVAILABLE;
case WSAEPROTONOSUPPORT: return VERR_NET_PROTOCOL_NOT_SUPPORTED;
case WSAESOCKTNOSUPPORT: return VERR_NET_SOCKET_TYPE_NOT_SUPPORTED;
case WSAEOPNOTSUPP: return VERR_NET_OPERATION_NOT_SUPPORTED;
case WSAEPFNOSUPPORT: return VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED;
case WSAEAFNOSUPPORT: return VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED;
case WSAEADDRINUSE: return VERR_NET_ADDRESS_IN_USE;
case WSAEADDRNOTAVAIL: return VERR_NET_ADDRESS_NOT_AVAILABLE;
case WSAENETDOWN: return VERR_NET_DOWN;
case WSAENETUNREACH: return VERR_NET_UNREACHABLE;
case WSAENETRESET: return VERR_NET_CONNECTION_RESET;
case WSAECONNABORTED: return VERR_NET_CONNECTION_ABORTED;
case WSAECONNRESET: return VERR_NET_CONNECTION_RESET_BY_PEER;
case WSAENOBUFS: return VERR_NET_NO_BUFFER_SPACE;
case WSAEISCONN: return VERR_NET_ALREADY_CONNECTED;
case WSAENOTCONN: return VERR_NET_NOT_CONNECTED;
case WSAESHUTDOWN: return VERR_NET_SHUTDOWN;
case WSAETOOMANYREFS: return VERR_NET_TOO_MANY_REFERENCES;
case WSAETIMEDOUT: return VERR_TIMEOUT;
case WSAECONNREFUSED: return VERR_NET_CONNECTION_REFUSED;
case WSAEHOSTDOWN: return VERR_NET_HOST_DOWN;
case WSAEHOSTUNREACH: return VERR_NET_HOST_UNREACHABLE;
case WSAEALREADY: return VERR_NET_ALREADY_IN_PROGRESS;
case WSAEINPROGRESS: return VERR_NET_IN_PROGRESS;
case WSAEPROVIDERFAILEDINIT: return VERR_NET_INIT_FAILED;
//case WSAESTALE 116 /* Stale NFS file handle */
//case WSAEUCLEAN 117 /* Structure needs cleaning */
//case WSAENOTNAM 118 /* Not a XENIX named type file */
//case WSAENAVAIL 119 /* No XENIX semaphores available */
//case WSAEISNAM 120 /* Is a named type file */
//case WSAEREMOTEIO 121 /* Remote I/O error */
case WSAEDQUOT: return VERR_DISK_FULL;
#ifdef WSAENOMEDIUM
case WSAENOMEDIUM: return VERR_MEDIA_NOT_PRESENT;
#endif
#ifdef WSAEMEDIUMTYPE
case WSAEMEDIUMTYPE: return VERR_MEDIA_NOT_RECOGNIZED;
#endif
case WSAEPROCLIM: return VERR_MAX_PROCS_REACHED;
//case WSAEDISCON: (WSABASEERR+101)
//case WSASYSNOTREADY (WSABASEERR+91)
//case WSAVERNOTSUPPORTED (WSABASEERR+92)
//case WSANOTINITIALISED (WSABASEERR+93)
#ifdef WSAHOST_NOT_FOUND
case WSAHOST_NOT_FOUND: return VERR_NET_HOST_NOT_FOUND;
#endif
#ifdef WSATRY_AGAIN
case WSATRY_AGAIN: return VERR_TRY_AGAIN;
#endif
#ifndef WSANO_RECOVERY
case WSANO_RECOVERY: return VERR_IO_GEN_FAILURE;
#endif
#ifdef WSANO_DATA
case WSANO_DATA: return VERR_NET_ADDRESS_NOT_AVAILABLE;
#endif
case 1272 /*STATUS_SMB_GUEST_LOGON_BLOCKED*/: return VERR_AUTHENTICATION_FAILURE;
#ifndef ERROR_NOT_A_REPARSE_POINT
# define ERROR_NOT_A_REPARSE_POINT 0x1126
#endif
case ERROR_NOT_A_REPARSE_POINT: return VERR_NOT_SYMLINK;
case NTE_BAD_ALGID: return VERR_CR_PKIX_UNKNOWN_DIGEST_TYPE;
case ERROR_SERVICE_DOES_NOT_EXIST: return VERR_NOT_FOUND;
#ifndef STATUS_ELEVATION_REQUIRED
# define STATUS_ELEVATION_REQUIRED 0xc000042c
#endif
case STATUS_ELEVATION_REQUIRED: return VERR_PRIVILEGE_NOT_HELD;
}
/* unknown error. */
#ifndef IN_SUP_HARDENED_R3
AssertLogRelMsgFailed(("Unhandled error %u\n", uNativeCode));
#else
/* hardened main has no LogRel */
AssertMsgFailed(("Unhandled error %u\n", uNativeCode));
#endif
return VERR_UNRESOLVED_ERROR;
}
|