win 0.1.27 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/win/error.rb CHANGED
@@ -1,1224 +1,1224 @@
1
- require 'win/library'
2
-
3
- module Win
4
-
5
- # Defines functions and constants related to error processing.
6
- # Includes (some) error codes from error.h, msterr.h and winerror.h (up to 3000);
7
- # other modules may contain additional error codes specific to their domain.
8
- #
9
- module Error
10
- include Win::Library
11
-
12
- #Error codes:
13
-
14
- # :stopdoc:
15
- S_OK = 0
16
- NO_ERROR = 0
17
- ERROR_SUCCESS = 0
18
- ERROR_INVALID_FUNCTION = 1
19
- ERROR_FILE_NOT_FOUND = 2
20
- ERROR_PATH_NOT_FOUND = 3
21
- ERROR_TOO_MANY_OPEN_FILES = 4
22
- ERROR_ACCESS_DENIED = 5
23
- ERROR_INVALID_HANDLE = 6
24
- ERROR_ARENA_TRASHED = 7
25
- ERROR_NOT_ENOUGH_MEMORY = 8
26
- ERROR_INVALID_BLOCK = 9
27
- ERROR_BAD_ENVIRONMENT = 10
28
- ERROR_BAD_FORMAT = 11
29
- ERROR_INVALID_ACCESS = 12
30
- ERROR_INVALID_DATA = 13
31
- ERROR_INVALID_DRIVE = 15
32
- ERROR_CURRENT_DIRECTORY = 16
33
- ERROR_NOT_SAME_DEVICE = 17
34
- ERROR_NO_MORE_FILES = 18
35
- ERROR_WRITE_PROTECT = 19
36
- ERROR_BAD_UNIT = 20
37
- ERROR_NOT_READY = 21
38
- ERROR_BAD_COMMAND = 22
39
- ERROR_CRC = 23
40
- ERROR_BAD_LENGTH = 24
41
- ERROR_SEEK = 25
42
- ERROR_NOT_DOS_DISK = 26
43
- ERROR_SECTOR_NOT_FOUND = 27
44
- ERROR_OUT_OF_PAPER = 28
45
- ERROR_WRITE_FAULT = 29
46
- ERROR_READ_FAULT = 30
47
- ERROR_GEN_FAILURE = 31
48
- ERROR_SHARING_VIOLATION = 32
49
- ERROR_LOCK_VIOLATION = 33
50
- ERROR_WRONG_DISK = 34
51
- ERROR_FCB_UNAVAILABLE = 35 # gets returned for some unsuccessful DeviceIoControl calls
52
- ERROR_SHARING_BUFFER_EXCEEDED = 36
53
- ERROR_HANDLE_EOF = 38
54
- ERROR_HANDLE_DISK_FULL = 39
55
-
56
- ERROR_NOT_SUPPORTED = 50
57
- ERROR_REM_NOT_LIST = 51
58
- ERROR_DUP_NAME = 52
59
- ERROR_BAD_NETPATH = 53
60
- ERROR_NETWORK_BUSY = 54
61
- ERROR_DEV_NOT_EXIST = 55
62
- ERROR_TOO_MANY_CMDS = 56
63
- ERROR_ADAP_HDW_ERR = 57
64
- ERROR_BAD_NET_RESP = 58
65
- ERROR_UNEXP_NET_ERR = 59
66
- ERROR_BAD_REM_ADAP = 60
67
- ERROR_PRINTQ_FULL = 61
68
- ERROR_NO_SPOOL_SPACE = 62
69
- ERROR_PRINT_CANCELLED = 63
70
- ERROR_NETNAME_DELETED = 64
71
- ERROR_NETWORK_ACCESS_DENIED = 65
72
- ERROR_BAD_DEV_TYPE = 66
73
- ERROR_BAD_NET_NAME = 67
74
- ERROR_TOO_MANY_NAMES = 68
75
- ERROR_TOO_MANY_SESS = 69
76
- ERROR_SHARING_PAUSED = 70
77
- ERROR_REQ_NOT_ACCEP = 71
78
- ERROR_REDIR_PAUSED = 72
79
-
80
- ERROR_FILE_EXISTS = 80
81
- ERROR_DUP_FCB = 81
82
- ERROR_CANNOT_MAKE = 82
83
- ERROR_FAIL_I24 = 83
84
- ERROR_OUT_OF_STRUCTURES = 84
85
- ERROR_ALREADY_ASSIGNED = 85
86
- ERROR_INVALID_PASSWORD = 86
87
- ERROR_INVALID_PARAMETER = 87
88
- ERROR_NET_WRITE_FAULT = 88
89
- ERROR_NO_PROC_SLOTS = 89 # no process slots available
90
- ERROR_NOT_FROZEN = 90
91
- ERR_TSTOVFL = 91 # timer service table overflow
92
- ERR_TSTDUP = 92 # timer service table duplicate
93
- ERROR_NO_ITEMS = 93 # There were no items to operate upon
94
- ERROR_INTERRUPT = 95 # interrupted system call
95
-
96
- ERROR_TOO_MANY_SEMAPHORES = 100
97
- ERROR_EXCL_SEM_ALREADY_OWNED = 101
98
- ERROR_SEM_IS_SET = 102
99
- ERROR_TOO_MANY_SEM_REQUESTS = 103
100
- ERROR_INVALID_AT_INTERRUPT_TIME = 104
101
- ERROR_SEM_OWNER_DIED = 105 # waitsem found owner died
102
- ERROR_SEM_USER_LIMIT = 106 # too many procs have this sem
103
- ERROR_DISK_CHANGE = 107 # insert disk b into drive a
104
- ERROR_DRIVE_LOCKED = 108 # drive locked by another process
105
- ERROR_BROKEN_PIPE = 109 # write on pipe with no reader
106
- ERROR_OPEN_FAILED = 110 # open/created failed
107
- ERROR_DISK_FULL = 112 # not enough space
108
- ERROR_NO_MORE_SEARCH_HANDLES = 113 # can't allocate
109
- ERROR_INVALID_TARGET_HANDLE = 114 # handle in DOSDUPHANDLE is invalid
110
- ERROR_PROTECTION_VIOLATION = 115 # bad user virtual address
111
- ERROR_VIOKBD_REQUEST = 116
112
- ERROR_INVALID_CATEGORY = 117 # category for DEVIOCTL not defined
113
- ERROR_INVALID_VERIFY_SWITCH = 118 # invalid value
114
- ERROR_BAD_DRIVER_LEVEL = 119 # DosDevIOCTL not level four
115
- ERROR_CALL_NOT_IMPLEMENTED = 120
116
- ERROR_SEM_TIMEOUT = 121 # timeout from semaphore function
117
- ERROR_INSUFFICIENT_BUFFER = 122
118
- ERROR_INVALID_NAME = 123 # illegal char or malformed file system name
119
- ERROR_INVALID_LEVEL = 124 # unimplemented level for info retrieval
120
- ERROR_NO_VOLUME_LABEL = 125 # no volume label found
121
- ERROR_MOD_NOT_FOUND = 126 # w_getprocaddr, w_getmodhandle
122
- ERROR_PROC_NOT_FOUND = 127 # w_getprocaddr
123
- ERROR_WAIT_NO_CHILDREN = 128 # CWait finds to children
124
- ERROR_CHILD_NOT_COMPLETE = 129 # CWait children not dead yet
125
- ERROR_DIRECT_ACCESS_HANDLE = 130 # invalid for direct disk access
126
- ERROR_NEGATIVE_SEEK = 131 # tried to seek negative offset
127
- ERROR_SEEK_ON_DEVICE = 132 # tried to seek on device or pipe
128
- ERROR_IS_JOIN_TARGET = 133
129
- ERROR_IS_JOINED = 134
130
- ERROR_IS_SUBSTED = 135
131
- ERROR_NOT_JOINED = 136
132
- ERROR_NOT_SUBSTED = 137
133
- ERROR_JOIN_TO_JOIN = 138
134
- ERROR_SUBST_TO_SUBST = 139
135
- ERROR_JOIN_TO_SUBST = 140
136
- ERROR_SUBST_TO_JOIN = 141
137
- ERROR_BUSY_DRIVE = 142
138
- ERROR_SAME_DRIVE = 143
139
- ERROR_DIR_NOT_ROOT = 144
140
- ERROR_DIR_NOT_EMPTY = 145
141
- ERROR_IS_SUBST_PATH = 146
142
- ERROR_IS_JOIN_PATH = 147
143
- ERROR_PATH_BUSY = 148
144
- ERROR_IS_SUBST_TARGET = 149
145
- ERROR_SYSTEM_TRACE = 150 # system trace error
146
- ERROR_INVALID_EVENT_COUNT = 151 # DosMuxSemWait errors
147
- ERROR_TOO_MANY_MUXWAITERS = 152
148
- ERROR_INVALID_LIST_FORMAT = 153
149
- ERROR_LABEL_TOO_LONG = 154
150
- ERROR_TOO_MANY_TCBS = 155
151
- ERROR_SIGNAL_REFUSED = 156
152
- ERROR_DISCARDED = 157
153
- ERROR_NOT_LOCKED = 158
154
- ERROR_BAD_THREADID_ADDR = 159
155
- ERROR_BAD_ARGUMENTS = 160
156
- ERROR_BAD_PATHNAME = 161
157
- ERROR_SIGNAL_PENDING = 162
158
- ERROR_UNCERTAIN_MEDIA = 163
159
- ERROR_MAX_THRDS_REACHED = 164
160
- ERROR_MONITORS_NOT_SUPPORTED = 165
161
-
162
- ERROR_LOCK_FAILED = 167
163
- ERROR_BUSY = 170
164
- ERROR_CANCEL_VIOLATION = 173
165
- ERROR_ATOMIC_LOCKS_NOT_SUPPORTED= 174
166
-
167
- ERROR_INVALID_SEGMENT_NUMBER = 180
168
- ERROR_INVALID_CALLGATE = 181
169
- ERROR_INVALID_ORDINAL = 182
170
- ERROR_ALREADY_EXISTS = 183
171
- ERROR_NO_CHILD_PROCESS = 184
172
- ERROR_CHILD_ALIVE_NOWAIT = 185
173
- ERROR_INVALID_FLAG_NUMBER = 186
174
- ERROR_SEM_NOT_FOUND = 187
175
- ERROR_INVALID_STARTING_CODESEG = 188
176
- ERROR_INVALID_STACKSEG = 189
177
- ERROR_INVALID_MODULETYPE = 190
178
- ERROR_INVALID_EXE_SIGNATURE = 191
179
- ERROR_EXE_MARKED_INVALID = 192
180
- ERROR_BAD_EXE_FORMAT = 193
181
- ERROR_ITERATED_DATA_EXCEEDS_64k = 194
182
- ERROR_INVALID_MINALLOCSIZE = 195
183
- ERROR_DYNLINK_FROM_INVALID_RING = 196
184
- ERROR_IOPL_NOT_ENABLED = 197
185
- ERROR_INVALID_SEGDPL = 198
186
- ERROR_AUTODATASEG_EXCEEDS_64k = 199
187
- ERROR_RING2SEG_MUST_BE_MOVABLE = 200
188
- ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201
189
- ERROR_INFLOOP_IN_RELOC_CHAIN = 202
190
- ERROR_ENVVAR_NOT_FOUND = 203
191
- ERROR_NOT_CURRENT_CTRY = 204
192
- ERROR_NO_SIGNAL_SENT = 205
193
- ERROR_FILENAME_EXCED_RANGE = 206 # if filename > 8.3
194
- ERROR_RING2_STACK_IN_USE = 207 # for FAPI
195
- ERROR_META_EXPANSION_TOO_LONG = 208 # if "*a" > 8.3
196
- ERROR_INVALID_SIGNAL_NUMBER = 209
197
- ERROR_THREAD_1_INACTIVE = 210
198
- ERROR_INFO_NOT_AVAIL = 211 #@@ PTM 5550
199
- ERROR_LOCKED = 212
200
- ERROR_BAD_DYNALINK = 213 #@@ PTM 5760
201
- ERROR_TOO_MANY_MODULES = 214
202
- ERROR_NESTING_NOT_ALLOWED = 215
203
- ERROR_EXE_MACHINE_TYPE_MISMATCH = 216
204
-
205
- ERROR_BAD_PIPE = 230
206
- ERROR_PIPE_BUSY = 231
207
- ERROR_NO_DATA = 232
208
- ERROR_PIPE_NOT_CONNECTED = 233
209
- ERROR_MORE_DATA = 234
210
-
211
- ERROR_VC_DISCONNECTED = 240
212
- ERROR_INVALID_EA_NAME = 254
213
- ERROR_EA_LIST_INCONSISTENT = 255
214
- ERROR_NO_MORE_ITEMS = 259
215
- ERROR_CANNOT_COPY = 266
216
- ERROR_DIRECTORY = 267
217
- ERROR_EAS_DIDNT_FIT = 275
218
- ERROR_EA_FILE_CORRUPT = 276
219
- ERROR_EA_TABLE_FULL = 277
220
- ERROR_INVALID_EA_HANDLE = 278
221
- ERROR_EAS_NOT_SUPPORTED = 282
222
- ERROR_NOT_OWNER = 288
223
- ERROR_TOO_MANY_POSTS = 298
224
- ERROR_PARTIAL_COPY = 299
225
- ERROR_OPLOCK_NOT_GRANTED = 300
226
- ERROR_INVALID_OPLOCK_PROTOCOL = 301
227
- ERROR_DISK_TOO_FRAGMENTED = 302
228
- ERROR_MR_MID_NOT_FOUND = 317
229
- ERROR_SCOPE_NOT_FOUND = 318
230
- ERROR_FAIL_NOACTION_REBOOT = 350
231
- ERROR_FAIL_SHUTDOWN = 351
232
- ERROR_FAIL_RESTART = 352
233
- ERROR_MAX_SESSIONS_REACHED = 353
234
- ERROR_INVALID_ADDRESS = 487
235
- ERROR_USER_PROFILE_LOAD = 500
236
- ERROR_ARITHMETIC_OVERFLOW = 534
237
- ERROR_PIPE_CONNECTED = 535
238
- ERROR_PIPE_LISTENING = 536
239
-
240
- ERROR_EA_ACCESS_DENIED = 994
241
- ERROR_OPERATION_ABORTED = 995
242
- ERROR_IO_INCOMPLETE = 996
243
- ERROR_IO_PENDING = 997
244
- ERROR_NOACCESS = 998
245
- ERROR_SWAPERROR = 999
246
-
247
- ERROR_STACK_OVERFLOW = 1001
248
- ERROR_INVALID_MESSAGE = 1002
249
- ERROR_CAN_NOT_COMPLETE = 1003
250
- ERROR_INVALID_FLAGS = 1004
251
- ERROR_UNRECOGNIZED_VOLUME = 1005
252
- ERROR_FILE_INVALID = 1006
253
- ERROR_FULLSCREEN_MODE = 1007
254
- ERROR_NO_TOKEN = 1008
255
- ERROR_BADDB = 1009
256
- ERROR_BADKEY = 1010
257
- ERROR_CANTOPEN = 1011
258
- ERROR_CANTREAD = 1012
259
- ERROR_CANTWRITE = 1013
260
- ERROR_REGISTRY_RECOVERED = 1014
261
- ERROR_REGISTRY_CORRUPT = 1015
262
- ERROR_REGISTRY_IO_FAILED = 1016
263
- ERROR_NOT_REGISTRY_FILE = 1017
264
- ERROR_KEY_DELETED = 1018
265
- ERROR_NO_LOG_SPACE = 1019
266
- ERROR_KEY_HAS_CHILDREN = 1020
267
- ERROR_CHILD_MUST_BE_VOLATILE = 1021
268
- ERROR_NOTIFY_ENUM_DIR = 1022
269
- ERROR_DEPENDENT_SERVICES_RUNNING = 1051
270
- ERROR_INVALID_SERVICE_CONTROL = 1052
271
- ERROR_SERVICE_REQUEST_TIMEOUT = 1053
272
- ERROR_SERVICE_NO_THREAD = 1054
273
- ERROR_SERVICE_DATABASE_LOCKED = 1055
274
- ERROR_SERVICE_ALREADY_RUNNING = 1056
275
- ERROR_INVALID_SERVICE_ACCOUNT = 1057
276
- ERROR_SERVICE_DISABLED = 1058
277
- ERROR_CIRCULAR_DEPENDENCY = 1059
278
- ERROR_SERVICE_DOES_NOT_EXIST = 1060
279
- ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061
280
- ERROR_SERVICE_NOT_ACTIVE = 1062
281
- ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063
282
- ERROR_EXCEPTION_IN_SERVICE = 1064
283
- ERROR_DATABASE_DOES_NOT_EXIST = 1065
284
- ERROR_SERVICE_SPECIFIC_ERROR = 1066
285
- ERROR_PROCESS_ABORTED = 1067
286
- ERROR_SERVICE_DEPENDENCY_FAIL = 1068
287
- ERROR_SERVICE_LOGON_FAILED = 1069
288
- ERROR_SERVICE_START_HANG = 1070
289
- ERROR_INVALID_SERVICE_LOCK = 1071
290
- ERROR_SERVICE_MARKED_FOR_DELETE = 1072
291
- ERROR_SERVICE_EXISTS = 1073
292
- ERROR_ALREADY_RUNNING_LKG = 1074
293
- ERROR_SERVICE_DEPENDENCY_DELETED = 1075
294
- ERROR_BOOT_ALREADY_ACCEPTED = 1076
295
- ERROR_SERVICE_NEVER_STARTED = 1077
296
- ERROR_DUPLICATE_SERVICE_NAME = 1078
297
- ERROR_DIFFERENT_SERVICE_ACCOUNT = 1079
298
- ERROR_CANNOT_DETECT_DRIVER_FAILURE = 1080
299
- ERROR_CANNOT_DETECT_PROCESS_ABORT = 1081
300
- ERROR_NO_RECOVERY_PROGRAM = 1082
301
- ERROR_SERVICE_NOT_IN_EXE = 1083
302
- ERROR_END_OF_MEDIA = 1100
303
- ERROR_FILEMARK_DETECTED = 1101
304
- ERROR_BEGINNING_OF_MEDIA = 1102
305
- ERROR_SETMARK_DETECTED = 1103
306
- ERROR_NO_DATA_DETECTED = 1104
307
- ERROR_PARTITION_FAILURE = 1105
308
- ERROR_INVALID_BLOCK_LENGTH = 1106
309
- ERROR_DEVICE_NOT_PARTITIONED = 1107
310
- ERROR_UNABLE_TO_LOCK_MEDIA = 1108
311
- ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109
312
- ERROR_MEDIA_CHANGED = 1110
313
- ERROR_BUS_RESET = 1111
314
- ERROR_NO_MEDIA_IN_DRIVE = 1112
315
- ERROR_NO_UNICODE_TRANSLATION = 1113
316
- ERROR_DLL_INIT_FAILED = 1114
317
- ERROR_SHUTDOWN_IN_PROGRESS = 1115
318
- ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116
319
- ERROR_IO_DEVICE = 1117
320
- ERROR_SERIAL_NO_DEVICE = 1118
321
- ERROR_IRQ_BUSY = 1119
322
- ERROR_MORE_WRITES = 1120
323
- ERROR_COUNTER_TIMEOUT = 1121
324
- ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122
325
- ERROR_FLOPPY_WRONG_CYLINDER = 1123
326
- ERROR_FLOPPY_UNKNOWN_ERROR = 1124
327
- ERROR_FLOPPY_BAD_REGISTERS = 1125
328
- ERROR_DISK_RECALIBRATE_FAILED = 1126
329
- ERROR_DISK_OPERATION_FAILED = 1127
330
- ERROR_DISK_RESET_FAILED = 1128
331
- ERROR_EOM_OVERFLOW = 1129
332
- ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130
333
- ERROR_POSSIBLE_DEADLOCK = 1131
334
- ERROR_MAPPED_ALIGNMENT = 1132
335
- ERROR_SET_POWER_STATE_VETOED = 1140
336
- ERROR_SET_POWER_STATE_FAILED = 1141
337
- ERROR_TOO_MANY_LINKS = 1142
338
- ERROR_OLD_WIN_VERSION = 1150
339
- ERROR_APP_WRONG_OS = 1151
340
- ERROR_SINGLE_INSTANCE_APP = 1152
341
- ERROR_RMODE_APP = 1153
342
- ERROR_INVALID_DLL = 1154
343
- ERROR_NO_ASSOCIATION = 1155
344
- ERROR_DDE_FAIL = 1156
345
- ERROR_DLL_NOT_FOUND = 1157
346
- ERROR_NO_MORE_USER_HANDLES = 1158
347
- ERROR_MESSAGE_SYNC_ONLY = 1159
348
- ERROR_SOURCE_ELEMENT_EMPTY = 1160
349
- ERROR_DESTINATION_ELEMENT_FULL = 1161
350
- ERROR_ILLEGAL_ELEMENT_ADDRESS = 1162
351
- ERROR_MAGAZINE_NOT_PRESENT = 1163
352
- ERROR_DEVICE_REINITIALIZATION_NEEDED = 1164
353
- ERROR_DEVICE_REQUIRES_CLEANING = 1165
354
- ERROR_DEVICE_DOOR_OPEN = 1166
355
- ERROR_DEVICE_NOT_CONNECTED = 1167
356
- ERROR_NOT_FOUND = 1168
357
- ERROR_NO_MATCH = 1169
358
- ERROR_SET_NOT_FOUND = 1170
359
- ERROR_POINT_NOT_FOUND = 1171
360
- ERROR_NO_TRACKING_SERVICE = 1172
361
- ERROR_NO_VOLUME_ID = 1173
362
- ERROR_UNABLE_TO_REMOVE_REPLACED = 1175
363
- ERROR_UNABLE_TO_MOVE_REPLACEMENT = 1176
364
- ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 = 1177
365
- ERROR_JOURNAL_DELETE_IN_PROGRESS = 1178
366
- ERROR_JOURNAL_NOT_ACTIVE = 1179
367
- ERROR_POTENTIAL_FILE_FOUND = 1180
368
- ERROR_JOURNAL_ENTRY_DELETED = 1181
369
- ERROR_BAD_DEVICE = 1200
370
- ERROR_CONNECTION_UNAVAIL = 1201
371
- ERROR_DEVICE_ALREADY_REMEMBERED = 1202
372
- ERROR_NO_NET_OR_BAD_PATH = 1203
373
- ERROR_BAD_PROVIDER = 1204
374
- ERROR_CANNOT_OPEN_PROFILE = 1205
375
- ERROR_BAD_PROFILE = 1206
376
- ERROR_NOT_CONTAINER = 1207
377
- ERROR_EXTENDED_ERROR = 1208
378
- ERROR_INVALID_GROUPNAME = 1209
379
- ERROR_INVALID_COMPUTERNAME = 1210
380
- ERROR_INVALID_EVENTNAME = 1211
381
- ERROR_INVALID_DOMAINNAME = 1212
382
- ERROR_INVALID_SERVICENAME = 1213
383
- ERROR_INVALID_NETNAME = 1214
384
- ERROR_INVALID_SHARENAME = 1215
385
- ERROR_INVALID_PASSWORDNAME = 1216
386
- ERROR_INVALID_MESSAGENAME = 1217
387
- ERROR_INVALID_MESSAGEDEST = 1218
388
- ERROR_SESSION_CREDENTIAL_CONFLICT = 1219
389
- ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220
390
- ERROR_DUP_DOMAINNAME = 1221
391
- ERROR_NO_NETWORK = 1222
392
- ERROR_CANCELLED = 1223
393
- ERROR_USER_MAPPED_FILE = 1224
394
- ERROR_CONNECTION_REFUSED = 1225
395
- ERROR_GRACEFUL_DISCONNECT = 1226
396
- ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227
397
- ERROR_ADDRESS_NOT_ASSOCIATED = 1228
398
- ERROR_CONNECTION_INVALID = 1229
399
- ERROR_CONNECTION_ACTIVE = 1230
400
- ERROR_NETWORK_UNREACHABLE = 1231
401
- ERROR_HOST_UNREACHABLE = 1232
402
- ERROR_PROTOCOL_UNREACHABLE = 1233
403
- ERROR_PORT_UNREACHABLE = 1234
404
- ERROR_REQUEST_ABORTED = 1235
405
- ERROR_CONNECTION_ABORTED = 1236
406
- ERROR_RETRY = 1237
407
- ERROR_CONNECTION_COUNT_LIMIT = 1238
408
- ERROR_LOGIN_TIME_RESTRICTION = 1239
409
- ERROR_LOGIN_WKSTA_RESTRICTION = 1240
410
- ERROR_INCORRECT_ADDRESS = 1241
411
- ERROR_ALREADY_REGISTERED = 1242
412
- ERROR_SERVICE_NOT_FOUND = 1243
413
- ERROR_NOT_AUTHENTICATED = 1244
414
- ERROR_NOT_LOGGED_ON = 1245
415
- ERROR_CONTINUE = 1246
416
- ERROR_ALREADY_INITIALIZED = 1247
417
- ERROR_NO_MORE_DEVICES = 1248
418
- ERROR_NO_SUCH_SITE = 1249
419
- ERROR_DOMAIN_CONTROLLER_EXISTS = 1250
420
- ERROR_ONLY_IF_CONNECTED = 1251
421
- ERROR_OVERRIDE_NOCHANGES = 1252
422
- ERROR_BAD_USER_PROFILE = 1253
423
- ERROR_NOT_SUPPORTED_ON_SBS = 1254
424
- ERROR_SERVER_SHUTDOWN_IN_PROGRESS = 1255
425
- ERROR_HOST_DOWN = 1256
426
- ERROR_ACCESS_DISABLED_BY_POLICY = 1260
427
- ERROR_REG_NAT_CONSUMPTION = 1261
428
- ERROR_PKINIT_FAILURE = 1263
429
- ERROR_SMARTCARD_SUBSYSTEM_FAILURE = 1264
430
- ERROR_DOWNGRADE_DETECTED = 1265
431
- ERROR_MACHINE_LOCKED = 1271
432
- ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273
433
- ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED= 1274
434
- ERROR_DRIVER_BLOCKED = 1275
435
- ERROR_INVALID_IMPORT_OF_NON_DLL = 1276
436
- ERROR_NOT_ALL_ASSIGNED = 1300
437
- ERROR_SOME_NOT_MAPPED = 1301
438
- ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302
439
- ERROR_LOCAL_USER_SESSION_KEY = 1303
440
- ERROR_NULL_LM_PASSWORD = 1304
441
- ERROR_UNKNOWN_REVISION = 1305
442
- ERROR_REVISION_MISMATCH = 1306
443
- ERROR_INVALID_OWNER = 1307
444
- ERROR_INVALID_PRIMARY_GROUP = 1308
445
- ERROR_NO_IMPERSONATION_TOKEN = 1309
446
- ERROR_CANT_DISABLE_MANDATORY = 1310
447
- ERROR_NO_LOGON_SERVERS = 1311
448
- ERROR_NO_SUCH_LOGON_SESSION = 1312
449
- ERROR_NO_SUCH_PRIVILEGE = 1313
450
- ERROR_PRIVILEGE_NOT_HELD = 1314
451
- ERROR_INVALID_ACCOUNT_NAME = 1315
452
- ERROR_USER_EXISTS = 1316
453
- ERROR_NO_SUCH_USER = 1317
454
- ERROR_GROUP_EXISTS = 1318
455
- ERROR_NO_SUCH_GROUP = 1319
456
- ERROR_MEMBER_IN_GROUP = 1320
457
- ERROR_MEMBER_NOT_IN_GROUP = 1321
458
- ERROR_LAST_ADMIN = 1322
459
- ERROR_WRONG_PASSWORD = 1323
460
- ERROR_ILL_FORMED_PASSWORD = 1324
461
- ERROR_PASSWORD_RESTRICTION = 1325
462
- ERROR_LOGON_FAILURE = 1326
463
- ERROR_ACCOUNT_RESTRICTION = 1327
464
- ERROR_INVALID_LOGON_HOURS = 1328
465
- ERROR_INVALID_WORKSTATION = 1329
466
- ERROR_PASSWORD_EXPIRED = 1330
467
- ERROR_ACCOUNT_DISABLED = 1331
468
- ERROR_NONE_MAPPED = 1332
469
- ERROR_TOO_MANY_LUIDS_REQUESTED = 1333
470
- ERROR_LUIDS_EXHAUSTED = 1334
471
- ERROR_INVALID_SUB_AUTHORITY = 1335
472
- ERROR_INVALID_ACL = 1336
473
- ERROR_INVALID_SID = 1337
474
- ERROR_INVALID_SECURITY_DESCR = 1338
475
- ERROR_BAD_INHERITANCE_ACL = 1340
476
- ERROR_SERVER_DISABLED = 1341
477
- ERROR_SERVER_NOT_DISABLED = 1342
478
- ERROR_INVALID_ID_AUTHORITY = 1343
479
- ERROR_ALLOTTED_SPACE_EXCEEDED = 1344
480
- ERROR_INVALID_GROUP_ATTRIBUTES = 1345
481
- ERROR_BAD_IMPERSONATION_LEVEL = 1346
482
- ERROR_CANT_OPEN_ANONYMOUS = 1347
483
- ERROR_BAD_VALIDATION_CLASS = 1348
484
- ERROR_BAD_TOKEN_TYPE = 1349
485
- ERROR_NO_SECURITY_ON_OBJECT = 1350
486
- ERROR_CANT_ACCESS_DOMAIN_INFO = 1351
487
- ERROR_INVALID_SERVER_STATE = 1352
488
- ERROR_INVALID_DOMAIN_STATE = 1353
489
- ERROR_INVALID_DOMAIN_ROLE = 1354
490
- ERROR_NO_SUCH_DOMAIN = 1355
491
- ERROR_DOMAIN_EXISTS = 1356
492
- ERROR_DOMAIN_LIMIT_EXCEEDED = 1357
493
- ERROR_INTERNAL_DB_CORRUPTION = 1358
494
- ERROR_INTERNAL_ERROR = 1359
495
- ERROR_GENERIC_NOT_MAPPED = 1360
496
- ERROR_BAD_DESCRIPTOR_FORMAT = 1361
497
- ERROR_NOT_LOGON_PROCESS = 1362
498
- ERROR_LOGON_SESSION_EXISTS = 1363
499
- ERROR_NO_SUCH_PACKAGE = 1364
500
- ERROR_BAD_LOGON_SESSION_STATE = 1365
501
- ERROR_LOGON_SESSION_COLLISION = 1366
502
- ERROR_INVALID_LOGON_TYPE = 1367
503
- ERROR_CANNOT_IMPERSONATE = 1368
504
- ERROR_RXACT_INVALID_STATE = 1369
505
- ERROR_RXACT_COMMIT_FAILURE = 1370
506
- ERROR_SPECIAL_ACCOUNT = 1371
507
- ERROR_SPECIAL_GROUP = 1372
508
- ERROR_SPECIAL_USER = 1373
509
- ERROR_MEMBERS_PRIMARY_GROUP = 1374
510
- ERROR_TOKEN_ALREADY_IN_USE = 1375
511
- ERROR_NO_SUCH_ALIAS = 1376
512
- ERROR_MEMBER_NOT_IN_ALIAS = 1377
513
- ERROR_MEMBER_IN_ALIAS = 1378
514
- ERROR_ALIAS_EXISTS = 1379
515
- ERROR_LOGON_NOT_GRANTED = 1380
516
- ERROR_TOO_MANY_SECRETS = 1381
517
- ERROR_SECRET_TOO_LONG = 1382
518
- ERROR_INTERNAL_DB_ERROR = 1383
519
- ERROR_TOO_MANY_CONTEXT_IDS = 1384
520
- ERROR_LOGON_TYPE_NOT_GRANTED = 1385
521
- ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386
522
- ERROR_NO_SUCH_MEMBER = 1387
523
- ERROR_INVALID_MEMBER = 1388
524
- ERROR_TOO_MANY_SIDS = 1389
525
- ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390
526
- ERROR_NO_INHERITANCE = 1391
527
- ERROR_FILE_CORRUPT = 1392
528
- ERROR_DISK_CORRUPT = 1393
529
- ERROR_NO_USER_SESSION_KEY = 1394
530
- ERROR_LICENSE_QUOTA_EXCEEDED = 1395
531
- ERROR_WRONG_TARGET_NAME = 1396
532
- ERROR_MUTUAL_AUTH_FAILED = 1397
533
- ERROR_TIME_SKEW = 1398
534
- ERROR_CURRENT_DOMAIN_NOT_ALLOWED = 1399
535
- ERROR_INVALID_WINDOW_HANDLE = 1400
536
- ERROR_INVALID_MENU_HANDLE = 1401
537
- ERROR_INVALID_CURSOR_HANDLE = 1402
538
- ERROR_INVALID_ACCEL_HANDLE = 1403
539
- ERROR_INVALID_HOOK_HANDLE = 1404
540
- ERROR_INVALID_DWP_HANDLE = 1405
541
- ERROR_TLW_WITH_WSCHILD = 1406
542
- ERROR_CANNOT_FIND_WND_CLASS = 1407
543
- ERROR_WINDOW_OF_OTHER_THREAD = 1408
544
- ERROR_HOTKEY_ALREADY_REGISTERED = 1409
545
- ERROR_CLASS_ALREADY_EXISTS = 1410
546
- ERROR_CLASS_DOES_NOT_EXIST = 1411
547
- ERROR_CLASS_HAS_WINDOWS = 1412
548
- ERROR_INVALID_INDEX = 1413
549
- ERROR_INVALID_ICON_HANDLE = 1414
550
- ERROR_PRIVATE_DIALOG_INDEX = 1415
551
- ERROR_LISTBOX_ID_NOT_FOUND = 1416
552
- ERROR_NO_WILDCARD_CHARACTERS = 1417
553
- ERROR_CLIPBOARD_NOT_OPEN = 1418
554
- ERROR_HOTKEY_NOT_REGISTERED = 1419
555
- ERROR_WINDOW_NOT_DIALOG = 1420
556
- ERROR_CONTROL_ID_NOT_FOUND = 1421
557
- ERROR_INVALID_COMBOBOX_MESSAGE = 1422
558
- ERROR_WINDOW_NOT_COMBOBOX = 1423
559
- ERROR_INVALID_EDIT_HEIGHT = 1424
560
- ERROR_DC_NOT_FOUND = 1425
561
- ERROR_INVALID_HOOK_FILTER = 1426
562
- ERROR_INVALID_FILTER_PROC = 1427
563
- ERROR_HOOK_NEEDS_HMOD = 1428
564
- ERROR_GLOBAL_ONLY_HOOK = 1429
565
- ERROR_JOURNAL_HOOK_SET = 1430
566
- ERROR_HOOK_NOT_INSTALLED = 1431
567
- ERROR_INVALID_LB_MESSAGE = 1432
568
- ERROR_SETCOUNT_ON_BAD_LB = 1433
569
- ERROR_LB_WITHOUT_TABSTOPS = 1434
570
- ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435
571
- ERROR_CHILD_WINDOW_MENU = 1436
572
- ERROR_NO_SYSTEM_MENU = 1437
573
- ERROR_INVALID_MSGBOX_STYLE = 1438
574
- ERROR_INVALID_SPI_VALUE = 1439
575
- ERROR_SCREEN_ALREADY_LOCKED = 1440
576
- ERROR_HWNDS_HAVE_DIFF_PARENT = 1441
577
- ERROR_NOT_CHILD_WINDOW = 1442
578
- ERROR_INVALID_GW_COMMAND = 1443
579
- ERROR_INVALID_THREAD_ID = 1444
580
- ERROR_NON_MDICHILD_WINDOW = 1445
581
- ERROR_POPUP_ALREADY_ACTIVE = 1446
582
- ERROR_NO_SCROLLBARS = 1447
583
- ERROR_INVALID_SCROLLBAR_RANGE = 1448
584
- ERROR_INVALID_SHOWWIN_COMMAND = 1449
585
- ERROR_NO_SYSTEM_RESOURCES = 1450
586
- ERROR_NONPAGED_SYSTEM_RESOURCES = 1451
587
- ERROR_PAGED_SYSTEM_RESOURCES = 1452
588
- ERROR_WORKING_SET_QUOTA = 1453
589
- ERROR_PAGEFILE_QUOTA = 1454
590
- ERROR_COMMITMENT_LIMIT = 1455
591
- ERROR_MENU_ITEM_NOT_FOUND = 1456
592
- ERROR_INVALID_KEYBOARD_HANDLE = 1457
593
- ERROR_HOOK_TYPE_NOT_ALLOWED = 1458
594
- ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION = 1459
595
- ERROR_TIMEOUT = 1460
596
- ERROR_INVALID_MONITOR_HANDLE = 1461
597
- ERROR_EVENTLOG_FILE_CORRUPT = 1500
598
- ERROR_EVENTLOG_CANT_START = 1501
599
- ERROR_LOG_FILE_FULL = 1502
600
- ERROR_EVENTLOG_FILE_CHANGED = 1503
601
- ERROR_INVALID_TASK_NAME = 1550
602
- ERROR_INVALID_TASK_INDEX = 1551
603
- ERROR_THREAD_ALREADY_IN_TASK = 1552
604
- ERROR_INSTALL_SERVICE_FAILURE = 1601
605
- ERROR_INSTALL_USEREXIT = 1602
606
- ERROR_INSTALL_FAILURE = 1603
607
- ERROR_INSTALL_SUSPEND = 1604
608
- ERROR_UNKNOWN_PRODUCT = 1605
609
- ERROR_UNKNOWN_FEATURE = 1606
610
- ERROR_UNKNOWN_COMPONENT = 1607
611
- ERROR_UNKNOWN_PROPERTY = 1608
612
- ERROR_INVALID_HANDLE_STATE = 1609
613
- ERROR_BAD_CONFIGURATION = 1610
614
- ERROR_INDEX_ABSENT = 1611
615
- ERROR_INSTALL_SOURCE_ABSENT = 1612
616
- ERROR_INSTALL_PACKAGE_VERSION = 1613
617
- ERROR_PRODUCT_UNINSTALLED = 1614
618
- ERROR_BAD_QUERY_SYNTAX = 1615
619
- ERROR_INVALID_FIELD = 1616
620
- ERROR_DEVICE_REMOVED = 1617
621
- ERROR_INSTALL_ALREADY_RUNNING = 1618
622
- ERROR_INSTALL_PACKAGE_OPEN_FAILED = 1619
623
- ERROR_INSTALL_PACKAGE_INVALID = 1620
624
- ERROR_INSTALL_UI_FAILURE = 1621
625
- ERROR_INSTALL_LOG_FAILURE = 1622
626
- ERROR_INSTALL_LANGUAGE_UNSUPPORTED = 1623
627
- ERROR_INSTALL_TRANSFORM_FAILURE = 1624
628
- ERROR_INSTALL_PACKAGE_REJECTED = 1625
629
- ERROR_FUNCTION_NOT_CALLED = 1626
630
- ERROR_FUNCTION_FAILED = 1627
631
- ERROR_INVALID_TABLE = 1628
632
- ERROR_DATATYPE_MISMATCH = 1629
633
- ERROR_UNSUPPORTED_TYPE = 1630
634
- ERROR_CREATE_FAILED = 1631
635
- ERROR_INSTALL_TEMP_UNWRITABLE = 1632
636
- ERROR_INSTALL_PLATFORM_UNSUPPORTED = 1633
637
- ERROR_INSTALL_NOTUSED = 1634
638
- ERROR_PATCH_PACKAGE_OPEN_FAILED = 1635
639
- ERROR_PATCH_PACKAGE_INVALID = 1636
640
- ERROR_PATCH_PACKAGE_UNSUPPORTED = 1637
641
- ERROR_PRODUCT_VERSION = 1638
642
- ERROR_INVALID_COMMAND_LINE = 1639
643
- ERROR_INSTALL_REMOTE_DISALLOWED = 1640
644
- ERROR_SUCCESS_REBOOT_INITIATED = 1641
645
- ERROR_UNKNOWN_PATCH = 1647
646
- RPC_S_INVALID_STRING_BINDING = 1700
647
- RPC_S_WRONG_KIND_OF_BINDING = 1701
648
- RPC_S_INVALID_BINDING = 1702
649
- RPC_S_PROTSEQ_NOT_SUPPORTED = 1703
650
- RPC_S_INVALID_RPC_PROTSEQ = 1704
651
- RPC_S_INVALID_STRING_UUID = 1705
652
- RPC_S_INVALID_ENDPOINT_FORMAT = 1706
653
- RPC_S_INVALID_NET_ADDR = 1707
654
- RPC_S_NO_ENDPOINT_FOUND = 1708
655
- RPC_S_INVALID_TIMEOUT = 1709
656
- RPC_S_OBJECT_NOT_FOUND = 1710
657
- RPC_S_ALREADY_REGISTERED = 1711
658
- RPC_S_TYPE_ALREADY_REGISTERED = 1712
659
- RPC_S_ALREADY_LISTENING = 1713
660
- RPC_S_NO_PROTSEQS_REGISTERED = 1714
661
- RPC_S_NOT_LISTENING = 1715
662
- RPC_S_UNKNOWN_MGR_TYPE = 1716
663
- RPC_S_UNKNOWN_IF = 1717
664
- RPC_S_NO_BINDINGS = 1718
665
- RPC_S_NO_PROTSEQS = 1719
666
- RPC_S_CANT_CREATE_ENDPOINT = 1720
667
- RPC_S_OUT_OF_RESOURCES = 1721
668
- RPC_S_SERVER_UNAVAILABLE = 1722
669
- RPC_S_SERVER_TOO_BUSY = 1723
670
- RPC_S_INVALID_NETWORK_OPTIONS = 1724
671
- RPC_S_NO_CALL_ACTIVE = 1725
672
- RPC_S_CALL_FAILED = 1726
673
- RPC_S_CALL_FAILED_DNE = 1727
674
- RPC_S_PROTOCOL_ERROR = 1728
675
- RPC_S_UNSUPPORTED_TRANS_SYN = 1730
676
- RPC_S_UNSUPPORTED_TYPE = 1732
677
- RPC_S_INVALID_TAG = 1733
678
- RPC_S_INVALID_BOUND = 1734
679
- RPC_S_NO_ENTRY_NAME = 1735
680
- RPC_S_INVALID_NAME_SYNTAX = 1736
681
- RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737
682
- RPC_S_UUID_NO_ADDRESS = 1739
683
- RPC_S_DUPLICATE_ENDPOINT = 1740
684
- RPC_S_UNKNOWN_AUTHN_TYPE = 1741
685
- RPC_S_MAX_CALLS_TOO_SMALL = 1742
686
- RPC_S_STRING_TOO_LONG = 1743
687
- RPC_S_PROTSEQ_NOT_FOUND = 1744
688
- RPC_S_PROCNUM_OUT_OF_RANGE = 1745
689
- RPC_S_BINDING_HAS_NO_AUTH = 1746
690
- RPC_S_UNKNOWN_AUTHN_SERVICE = 1747
691
- RPC_S_UNKNOWN_AUTHN_LEVEL = 1748
692
- RPC_S_INVALID_AUTH_IDENTITY = 1749
693
- RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750
694
- EPT_S_INVALID_ENTRY = 1751
695
- EPT_S_CANT_PERFORM_OP = 1752
696
- EPT_S_NOT_REGISTERED = 1753
697
- RPC_S_NOTHING_TO_EXPORT = 1754
698
- RPC_S_INCOMPLETE_NAME = 1755
699
- RPC_S_INVALID_VERS_OPTION = 1756
700
- RPC_S_NO_MORE_MEMBERS = 1757
701
- RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758
702
- RPC_S_INTERFACE_NOT_FOUND = 1759
703
- RPC_S_ENTRY_ALREADY_EXISTS = 1760
704
- RPC_S_ENTRY_NOT_FOUND = 1761
705
- RPC_S_NAME_SERVICE_UNAVAILABLE = 1762
706
- RPC_S_INVALID_NAF_ID = 1763
707
- RPC_S_CANNOT_SUPPORT = 1764
708
- RPC_S_NO_CONTEXT_AVAILABLE = 1765
709
- RPC_S_INTERNAL_ERROR = 1766
710
- RPC_S_ZERO_DIVIDE = 1767
711
- RPC_S_ADDRESS_ERROR = 1768
712
- RPC_S_FP_DIV_ZERO = 1769
713
- RPC_S_FP_UNDERFLOW = 1770
714
- RPC_S_FP_OVERFLOW = 1771
715
- RPC_X_NO_MORE_ENTRIES = 1772
716
- RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773
717
- RPC_X_SS_CHAR_TRANS_SHORT_FILE = 1774
718
- RPC_X_SS_IN_NULL_CONTEXT = 1775
719
- RPC_X_SS_CONTEXT_DAMAGED = 1777
720
- RPC_X_SS_HANDLES_MISMATCH = 1778
721
- RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779
722
- RPC_X_NULL_REF_POINTER = 1780
723
- RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781
724
- RPC_X_BYTE_COUNT_TOO_SMALL = 1782
725
- RPC_X_BAD_STUB_DATA = 1783
726
- ERROR_INVALID_USER_BUFFER = 1784
727
- ERROR_UNRECOGNIZED_MEDIA = 1785
728
- ERROR_NO_TRUST_LSA_SECRET = 1786
729
- ERROR_NO_TRUST_SAM_ACCOUNT = 1787
730
- ERROR_TRUSTED_DOMAIN_FAILURE = 1788
731
- ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789
732
- ERROR_TRUST_FAILURE = 1790
733
- RPC_S_CALL_IN_PROGRESS = 1791
734
- ERROR_NETLOGON_NOT_STARTED = 1792
735
- ERROR_ACCOUNT_EXPIRED = 1793
736
- ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794
737
- ERROR_PRINTER_DRIVER_ALREADY_INSTALLED= 1795
738
- ERROR_UNKNOWN_PORT = 1796
739
- ERROR_UNKNOWN_PRINTER_DRIVER = 1797
740
- ERROR_UNKNOWN_PRINTPROCESSOR = 1798
741
- ERROR_INVALID_SEPARATOR_FILE = 1799
742
- ERROR_INVALID_PRIORITY = 1800
743
- ERROR_INVALID_PRINTER_NAME = 1801
744
- ERROR_PRINTER_ALREADY_EXISTS = 1802
745
- ERROR_INVALID_PRINTER_COMMAND = 1803
746
- ERROR_INVALID_DATATYPE = 1804
747
- ERROR_INVALID_ENVIRONMENT = 1805
748
- RPC_S_NO_MORE_BINDINGS = 1806
749
- ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807
750
- ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808
751
- ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809
752
- ERROR_DOMAIN_TRUST_INCONSISTENT = 1810
753
- ERROR_SERVER_HAS_OPEN_HANDLES = 1811
754
- ERROR_RESOURCE_DATA_NOT_FOUND = 1812
755
- ERROR_RESOURCE_TYPE_NOT_FOUND = 1813
756
- ERROR_RESOURCE_NAME_NOT_FOUND = 1814
757
- ERROR_RESOURCE_LANG_NOT_FOUND = 1815
758
- ERROR_NOT_ENOUGH_QUOTA = 1816
759
- RPC_S_NO_INTERFACES = 1817
760
- RPC_S_CALL_CANCELLED = 1818
761
- RPC_S_BINDING_INCOMPLETE = 1819
762
- RPC_S_COMM_FAILURE = 1820
763
- RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821
764
- RPC_S_NO_PRINC_NAME = 1822
765
- RPC_S_NOT_RPC_ERROR = 1823
766
- RPC_S_UUID_LOCAL_ONLY = 1824
767
- RPC_S_SEC_PKG_ERROR = 1825
768
- RPC_S_NOT_CANCELLED = 1826
769
- RPC_X_INVALID_ES_ACTION = 1827
770
- RPC_X_WRONG_ES_VERSION = 1828
771
- RPC_X_WRONG_STUB_VERSION = 1829
772
- RPC_X_INVALID_PIPE_OBJECT = 1830
773
- RPC_X_WRONG_PIPE_ORDER = 1831
774
- RPC_X_WRONG_PIPE_VERSION = 1832
775
- RPC_S_GROUP_MEMBER_NOT_FOUND = 1898
776
- EPT_S_CANT_CREATE = 1899
777
- RPC_S_INVALID_OBJECT = 1900
778
- ERROR_INVALID_TIME = 1901
779
- ERROR_INVALID_FORM_NAME = 1902
780
- ERROR_INVALID_FORM_SIZE = 1903
781
- ERROR_ALREADY_WAITING = 1904
782
- ERROR_PRINTER_DELETED = 1905
783
- ERROR_INVALID_PRINTER_STATE = 1906
784
- ERROR_PASSWORD_MUST_CHANGE = 1907
785
- ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908
786
- ERROR_ACCOUNT_LOCKED_OUT = 1909
787
- OR_INVALID_OXID = 1910
788
- OR_INVALID_OID = 1911
789
- OR_INVALID_SET = 1912
790
- RPC_S_SEND_INCOMPLETE = 1913
791
- RPC_S_INVALID_ASYNC_HANDLE = 1914
792
- RPC_S_INVALID_ASYNC_CALL = 1915
793
- RPC_X_PIPE_CLOSED = 1916
794
- RPC_X_PIPE_DISCIPLINE_ERROR = 1917
795
- RPC_X_PIPE_EMPTY = 1918
796
- ERROR_NO_SITENAME = 1919
797
- ERROR_CANT_ACCESS_FILE = 1920
798
- ERROR_CANT_RESOLVE_FILENAME = 1921
799
- RPC_S_ENTRY_TYPE_MISMATCH = 1922
800
- RPC_S_NOT_ALL_OBJS_EXPORTED = 1923
801
- RPC_S_INTERFACE_NOT_EXPORTED = 1924
802
- RPC_S_PROFILE_NOT_ADDED = 1925
803
- RPC_S_PRF_ELT_NOT_ADDED = 1926
804
- RPC_S_PRF_ELT_NOT_REMOVED = 1927
805
- RPC_S_GRP_ELT_NOT_ADDED = 1928
806
- RPC_S_GRP_ELT_NOT_REMOVED = 1929
807
- ERROR_KM_DRIVER_BLOCKED = 1930
808
- ERROR_CONTEXT_EXPIRED = 1931
809
- ERROR_PER_USER_TRUST_QUOTA_EXCEEDED = 1932
810
- ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED = 1933
811
- ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED= 1934
812
- ERROR_AUTHENTICATION_FIREWALL_FAILED = 1935
813
- ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED= 1936
814
- ERROR_INVALID_PIXEL_FORMAT = 2000
815
- ERROR_BAD_DRIVER = 2001
816
- ERROR_INVALID_WINDOW_STYLE = 2002
817
- ERROR_METAFILE_NOT_SUPPORTED = 2003
818
- ERROR_TRANSFORM_NOT_SUPPORTED = 2004
819
- ERROR_CLIPPING_NOT_SUPPORTED = 2005
820
- ERROR_INVALID_CMM = 2010
821
- ERROR_INVALID_PROFILE = 2011
822
- ERROR_TAG_NOT_FOUND = 2012
823
- ERROR_TAG_NOT_PRESENT = 2013
824
- ERROR_DUPLICATE_TAG = 2014
825
- ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE = 2015
826
- ERROR_PROFILE_NOT_FOUND = 2016
827
- ERROR_INVALID_COLORSPACE = 2017
828
- ERROR_ICM_NOT_ENABLED = 2018
829
- ERROR_DELETING_ICM_XFORM = 2019
830
- ERROR_INVALID_TRANSFORM = 2020
831
- ERROR_COLORSPACE_MISMATCH = 2021
832
- ERROR_INVALID_COLORINDEX = 2022
833
- ERROR_CONNECTED_OTHER_PASSWORD = 2108
834
- ERROR_BAD_USERNAME = 2202
835
- ERROR_NOT_CONNECTED = 2250
836
- ERROR_OPEN_FILES = 2401
837
- ERROR_ACTIVE_CONNECTIONS = 2402
838
- ERROR_DEVICE_IN_USE = 2404
839
- ERROR_UNKNOWN_PRINT_MONITOR = 3000
840
- # :startdoc:
841
-
842
- ERROR_USER_DEFINED_BASE = 0xF000
843
-
844
- # Flags for FormatMessage function:
845
-
846
- FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100
847
- FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200
848
- FORMAT_MESSAGE_FROM_STRING = 0x00000400
849
- FORMAT_MESSAGE_FROM_HMODULE = 0x00000800
850
- FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000
851
- FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000
852
- FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF
853
-
854
- # Set/GetErrorMode values:
855
-
856
- SEM_FAILCRITICALERRORS = 0x0001
857
- SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
858
- SEM_NOGPFAULTERRORBOX = 0x0002
859
- SEM_NOOPENFILEERRORBOX = 0x8000
860
-
861
- ##
862
- # FormatMessage Function
863
- # Formats a message string. The function requires a message definition as input. The message definition
864
- # can come from a buffer passed into the function. It can come from a message table resource in an
865
- # already-loaded module. Or the caller can ask the function to search the system's message table
866
- # resource(s) for the message definition. The function finds the message definition in a message table
867
- # resource based on a message identifier and a language identifier. The function copies the formatted
868
- # message text to an output buffer, processing any embedded insert sequences if requested.
869
- #
870
- # [*Syntax*] DWORD WINAPI FormatMessage( DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD
871
- # dwLanguageId, LPTSTR lpBuffer, DWORD nSize, va_list* Arguments );
872
- #
873
- # dwFlags:: [in] The formatting options, and how to interpret the lpSource parameter. The low-order byte of dwFlags
874
- # specifies how the function handles line breaks in the output buffer. The low-order byte can also
875
- # specify the maximum width of a formatted output line. Possible values:
876
- # - FORMAT_MESSAGE_ALLOCATE_BUFFER - The lpBuffer parameter is a pointer to a PVOID pointer, and that
877
- # the nSize parameter specifies the minimum number of TCHARs to allocate for an output message buffer.
878
- # The function allocates a buffer large enough to hold the formatted message, and places a pointer to
879
- # the allocated buffer at the address specified by lpBuffer. The caller should use the LocalFree
880
- # function to free the buffer when it is no longer needed.
881
- # - FORMAT_MESSAGE_ARGUMENT_ARRAY - The Arguments parameter is not a va_list structure, but is a pointer
882
- # to an array of values that represent the arguments. This flag cannot be used with 64-bit integer
883
- # values. If you are using a 64-bit integer, you must use the va_list structure.
884
- # - FORMAT_MESSAGE_FROM_HMODULE - The lpSource parameter is a module handle containing the message-table
885
- # resource(s) to search. If this lpSource handle is NULL, the current process's application image file
886
- # will be searched. This flag cannot be used with FORMAT_MESSAGE_FROM_STRING. If the module has no
887
- # message table resource, the function fails with ERROR_RESOURCE_TYPE_NOT_FOUND.
888
- # - FORMAT_MESSAGE_FROM_STRING - The lpSource parameter is a pointer to a null-terminated string that
889
- # contains a message definition. The message definition may contain insert sequences, just as the
890
- # message text in a message table resource may. Cannot be used with FORMAT_MESSAGE_FROM_HMODULE or
891
- # FORMAT_MESSAGE_FROM_SYSTEM.
892
- # - FORMAT_MESSAGE_FROM_SYSTEM - The function should search the system message-table resource(s) for
893
- # the requested message. If this flag is specified with FORMAT_MESSAGE_FROM_HMODULE, the function
894
- # searches the system message table if the message is not found in the module specified by lpSource.
895
- # This flag cannot be used with FORMAT_MESSAGE_FROM_STRING. If this flag is specified, an application
896
- # can pass the result of the GetLastError function to retrieve the message text for a system error.
897
- # - FORMAT_MESSAGE_IGNORE_INSERTS - Insert sequences in the message definition are to be ignored and
898
- # passed through to the output buffer unchanged. This flag is useful for fetching a message for later
899
- # formatting. If this flag is set, the Arguments parameter is ignored.
900
- # <b>The low-order byte of dwFlags can specify the maximum width of a formatted output line. The
901
- # following are possible values of the low-order byte:</b>
902
- # - 0 - There are no output line width restrictions. The function stores line breaks that are in the
903
- # message definition text into the output buffer.
904
- # - FORMAT_MESSAGE_MAX_WIDTH_MASK - The function ignores regular line breaks in the message definition
905
- # text. The function stores hard-coded line breaks in the message definition text into the output
906
- # buffer. The function generates no new line breaks.
907
- # If the low-order byte is a nonzero value other than FORMAT_MESSAGE_MAX_WIDTH_MASK, it specifies the
908
- # maximum number of characters in an output line. The function ignores regular line breaks in the
909
- # message definition text. The function never splits a string delimited by white space across a line
910
- # break. The function stores hard-coded line breaks in the message definition text into the output
911
- # buffer. Hard-coded line breaks are coded with the %n escape sequence.
912
- # lpSource:: The location of the message definition. The type of this parameter depends upon the settings in the
913
- # dwFlags parameter.
914
- # - dwFlags FORMAT_MESSAGE_FROM_HMODULE: Handle to the module that contains the message table to search.
915
- # - dwFlags FORMAT_MESSAGE_FROM_STRING: Pointer to a string that consists of unformatted message text.
916
- # It will be scanned for inserts and formatted accordingly.
917
- # - If neither of these flags is set in dwFlags, then lpSource is ignored.
918
- # dwMessageId:: The message identifier for the requested message. This parameter is ignored if dwFlags includes
919
- # FORMAT_MESSAGE_FROM_STRING.
920
- # dwLanguageId:: The language identifier for the requested message. This parameter is ignored if dwFlags includes
921
- # FORMAT_MESSAGE_FROM_STRING. If you pass a specific LANGID in this parameter, FormatMessage will
922
- # return a message for that LANGID only. If the function cannot find a message for that LANGID, it
923
- # returns ERROR_RESOURCE_LANG_NOT_FOUND. If you pass in zero, FormatMessage looks for a message for
924
- # LANGIDs in the following order:
925
- # 1. Language neutral
926
- # 2. Thread LANGID, based on the thread's locale value
927
- # 3. User default LANGID, based on the user's default locale value
928
- # 4. System default LANGID, based on the system default locale value
929
- # 5. US English
930
- # If FormatMessage does not locate a message for any of the preceding LANGIDs, it returns any
931
- # language message string that is present. If that fails, it returns ERROR_RESOURCE_LANG_NOT_FOUND.
932
- # lpBuffer:: A pointer to a buffer that receives the null-terminated string that specifies the formatted message.
933
- # If dwFlags includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the
934
- # LocalAlloc function, and places the pointer to the buffer at the address specified in lpBuffer.
935
- # This buffer cannot be larger than 64K bytes.
936
- # nSize:: If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the size of the output
937
- # buffer, in TCHARs. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum
938
- # number of TCHARs to allocate for an output buffer. The output buffer cannot be larger than 64K bytes.
939
- # Arguments:: An array of values that are used as insert values in the formatted message. A %1 in the format string
940
- # indicates the first value in the Arguments array; a %2 indicates the second argument; and so on.
941
- # The interpretation of each value depends on the formatting information associated with the insert in
942
- # the message definition. The default is to treat each value as a pointer to a null-terminated string.
943
- # By default, the Arguments parameter is of type va_list*, which is a language- and
944
- # implementation-specific data type for describing a variable number of arguments. The state of the
945
- # va_list argument is undefined upon return from the function. To use the va_list again, destroy the
946
- # variable argument list pointer using va_end and reinitialize it with va_start.
947
- # If you do not have a pointer of type va_list*, then specify the FORMAT_MESSAGE_ARGUMENT_ARRAY flag and
948
- # pass a pointer to an array of DWORD_PTR values; those values are input to the message formatted as the
949
- # insert values. Each insert must have a corresponding element in the array.
950
- #
951
- # *Returns*:: If the function succeeds, the return value is the number of TCHARs stored in the output
952
- # buffer, excluding the terminating null character. If the function fails, the return value is zero.
953
- # To get extended error information, call GetLastError.
954
- # ---
955
- # *Remarks*:
956
- # Within the message text, several escape sequences are supported for dynamically formatting the
957
- # message. These escape sequences and their meanings are shown in the following tables. All escape
958
- # sequences start with the percent character (%).
959
- # %0:: Terminates a message text line without a trailing new line character. This escape sequence can be
960
- # used to build up long lines or to terminate the message itself without a trailing new line character.
961
- # It is useful for prompt messages.
962
- # %n!format string!:: Identifies an insert. The value of n can be in the range from 1 through 99. The format string
963
- # (which must be surrounded by exclamation marks) is optional and defaults to !s! if not
964
- # specified. For more information, see Format Specification Fields. The format string can
965
- # include a width and precision specifier for strings and a width specifier for integers.
966
- # Use an asterisk (*) to specify the width and precision. For example, %1!*.*s! or %1!*u!.
967
- # If you do not use the width and precision specifiers, the insert numbers correspond directly
968
- # to the input arguments. For example, if the source string is "%1 %2 %1" and the input
969
- # arguments are "Bill" and "Bob", the formatted output string is "Bill Bob Bill".
970
- # However, if you use a width and precision specifier, the insert numbers do not correspond
971
- # directly to # the input arguments. For example, the insert numbers for the previous
972
- # example could change to "%1!*.*s! %4 %5!*s!".
973
- # The insert numbers depend on whether you use arguments array (FORMAT_MESSAGE_ARGUMENT_ARRAY)
974
- # or a va_list. For an arguments array, the next insert number is n+2 if the previous format
975
- # string contained one asterisk and is n+3 if two asterisks were specified. For a va_list,
976
- # the next insert number is n+1 if the previous format string contained one asterisk and is n+2
977
- # if two asterisks were specified. If you want to repeat "Bill", as in the previous example,
978
- # the arguments must include "Bill" twice. E.g., if source string is "%1!*.*s! %4 %5!*s!",
979
- # the arguments could be, 4, 2, Bill, Bob, 6, Bill (if using the FORMAT_MESSAGE_ARGUMENT_ARRAY).
980
- # The formatted string would then be " Bi Bob Bill".
981
- # Repeating insert numbers when the source string contains width and precision specifiers may
982
- # not yield the intended results. If you replaced %5 with %1, the function would try to print
983
- # a string at address 6 (likely resulting in an access violation).
984
- # Floating-point format specifiers—e, E, f, and g—are not supported. The workaround is to use
985
- # the StringCchPrintf function to format the floating-point number into a temporary buffer,
986
- # then use that buffer as the insert string.
987
- # Inserts that use the I64 prefix are treated as two 32-bit arguments. They must be used before
988
- # subsequent arguments are used. Note that it may be easier for you to use StringCchPrintf
989
- # instead of this prefix.
990
- #
991
- # Any other nondigit character following a percent character is formatted in the output message without the
992
- # percent character. Following are some examples.
993
- # %%:: A single percent sign.
994
- # %space:: A single space. This format string can be used to ensure the appropriate number of trailing
995
- # spaces in a message text line.
996
- # %.:: A single period. This format string can be used to include a single period at the beginning of a
997
- # line without terminating the message text definition.
998
- # %!:: A single exclamation point. This format string can be used to include an exclamation point
999
- # immediately after an insert without its being mistaken for the beginning of a format string.
1000
- # %n:: A hard line break when the format string occurs at the end of a line. This format string is useful
1001
- # when FormatMessage is supplying regular line breaks so the message fits in a certain width.
1002
- # %r:: A hard carriage return without a trailing newline character.
1003
- # %t:: A single tab.
1004
- # ---
1005
- # *Security* *Remarks*:
1006
- # If this function is called without FORMAT_MESSAGE_IGNORE_INSERTS, the Arguments parameter must contain
1007
- # enough parameters to satisfy all insertion sequences in the message string, and they must be of the
1008
- # correct type. Therefore, do not use untrusted or unknown message strings with inserts enabled because
1009
- # they can contain more insertion sequences than Arguments provides, or those they may be of the wrong
1010
- # type. In particular, it is unsafe to take an arbitrary system error code returned from an API and use
1011
- # FORMAT_MESSAGE_FROM_SYSTEM without FORMAT_MESSAGE_IGNORE_INSERTS.
1012
- # ---
1013
- # <b>Enhanced (snake_case) API: returns message instead of num_chars or *nil* if function fails</b>
1014
- #
1015
- # :call-seq:
1016
- # message = format_message(dw_flags, lp_source, dw_message_id, dw_language_id, *args)
1017
- #
1018
- function :FormatMessage, [:DWORD, :LPCVOID, :DWORD, :DWORD, :LPTSTR, :DWORD, :varargs], :DWORD,
1019
- &->(api, flags=FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
1020
- source=nil, message_id=0, language_id=0, *args){
1021
- buffer = FFI::MemoryPointer.new :char, 260
1022
- args = [:int, 0] if args.empty?
1023
- num_chars = api.call(flags, source, message_id, language_id, buffer, buffer.size, *args)
1024
- num_chars == 0 ? nil : buffer.get_bytes(0, num_chars).strip }
1025
-
1026
- ##
1027
- # GetLastError Function
1028
- # Retrieves the calling thread's last-error code value. The last-error code is maintained on a
1029
- # per-thread basis. Multiple threads do not overwrite each other's last-error code.
1030
- # Visual Basic: Applications should call err.LastDllError instead of GetLastError.
1031
- #
1032
- # [*Syntax*] DWORD WINAPI GetLastError( void );
1033
- #
1034
- # This function has no parameters.
1035
- #
1036
- # *Returns*:: The return value is the calling thread's last-error code.
1037
- # The Return Value section of the documentation for each function that sets the last-error code notes
1038
- # the conditions under which the function sets the last-error code. Most functions that set the thread's
1039
- # last-error code set it when they fail. However, some functions also set the last-error code when they
1040
- # succeed. If the function is not documented to set the last-error code, the value returned by this
1041
- # function is simply the most recent last-error code to have been set; some functions set the last-error
1042
- # code to 0 on success and others do not.
1043
- # ---
1044
- # *Remarks*:
1045
- # Functions executed by the calling thread set this value by calling the SetLastError function. You
1046
- # should call the GetLastError function immediately when a function's return value indicates that such a
1047
- # call will return useful data. That is because some functions call SetLastError with a zero when they
1048
- # succeed, wiping out the error code set by the most recently failed function.
1049
- # To obtain an error string for system error codes, use the FormatMessage function. For a complete list
1050
- # of error codes provided by the operating system, see System Error Codes.
1051
- # The error codes returned by a function are not part of the Windows API specification and can vary by
1052
- # operating system or device driver. For this reason, we cannot provide the complete list of error codes
1053
- # that can be returned by each function. There are also many functions whose documentation does not
1054
- # include even a partial list of error codes that can be returned.
1055
- # Error codes are 32-bit values (bit 31 is the most significant bit). Bit 29 is reserved for
1056
- # application-defined error codes; no system error code has this bit set. If you are defining an error
1057
- # code for your application, set this bit to one. That indicates that the error code has been defined by
1058
- # an application, and ensures that your error code does not conflict with any error codes defined by the
1059
- # system.
1060
- # To convert a system error into an HRESULT value, use the HRESULT_FROM_WIN32 macro.
1061
- # ---
1062
- # <b>Enhanced (snake_case) API: returns error message instead of error code</b>
1063
- #
1064
- # :call-seq:
1065
- # error_message = get_last_error()
1066
- #
1067
- function :GetLastError, [], :uint32,
1068
- &->(api) { error_code = api.call
1069
- flags = FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY
1070
- format_message(flags, nil, error_code)}
1071
-
1072
- ##
1073
- # SetLastError Function
1074
- # Sets the last-error code for the calling thread.
1075
- #
1076
- # [*Syntax*] void WINAPI SetLastError( DWORD dwErrCode );
1077
- #
1078
- # dwErrCode:: [in] The last-error code for the thread.
1079
- #
1080
- # *Returns*:: This function does not return a value.
1081
- # ---
1082
- # *Remarks*:
1083
- # - The last-error code is kept in thread local storage so that multiple threads do not overwrite each
1084
- # other's values.
1085
- # - This function is intended primarily for use by dynamic-link libraries (DLL). A DLL can provide the
1086
- # applications that are using it with additional diagnostic information by calling this function after
1087
- # an error occurs. Most functions call SetLastError or SetLastErrorEx only when they fail. However, some
1088
- # system functions call SetLastError or SetLastErrorEx under conditions of success; those cases are
1089
- # noted in each function's documentation.
1090
- # - Applications can optionally retrieve the value set by this function by using the GetLastError function
1091
- # immediately after a function fails.
1092
- # - Error codes are 32-bit values (bit 31 is the most significant bit). Bit 29 is reserved for
1093
- # application-defined error codes; no system error code has this bit set. If you are defining an error
1094
- # code for your application, set this bit to indicate that the error code has been defined by your
1095
- # application and to ensure that your error code does not conflict with any system-defined error codes.
1096
- # ---
1097
- # <b>Enhanced (snake_case) API: </b>
1098
- #
1099
- # :call-seq:
1100
- # set_last_error(err_code)
1101
- #
1102
- function :SetLastError, [:DWORD], :void
1103
-
1104
- ##
1105
- # SetLastErrorEx Function sets the last-error code.
1106
- # Currently, this function is identical to the SetLastError function. The second parameter is ignored.
1107
- #
1108
- # [*Syntax*] void WINAPI SetLastErrorEx( DWORD dwErrCode, DWORD dwType );
1109
- #
1110
- # dwErrCode:: The last-error code for the thread.
1111
- # dwType:: This parameter is ignored.
1112
- #
1113
- # *Returns*:: This function does not return a value.
1114
- # ---
1115
- # *Remarks*:
1116
- # The last-error code is kept in thread local storage so that multiple threads do not overwrite each
1117
- # other's values.
1118
- # This function is intended primarily for use by dynamic-link libraries (DLL). A DLL can provide the
1119
- # applications that are using it with additional diagnostic information by calling this function after
1120
- # an error occurs. Most functions call SetLastError or SetLastErrorEx only when they fail. However, some
1121
- # system functions call SetLastError or SetLastErrorEx under conditions of success; those cases are
1122
- # noted in each function's documentation.
1123
- # Applications can optionally retrieve the value set by this function by using the GetLastError function
1124
- # immediately after a function fails.
1125
- # Error codes are 32-bit values (bit 31 is the most significant bit). Bit 29 is reserved for
1126
- # application-defined error codes; no system error code has this bit set. If you are defining an error
1127
- # code for your application, set this bit to indicate that the error code has been defined by the
1128
- # application and to ensure that your error code does not conflict with any system-defined error codes.
1129
- #
1130
- # :call-seq:
1131
- # set_last_error_ex(err_code, dw_type)
1132
- #
1133
- try_function :SetLastErrorEx, [:DWORD, :DWORD], :void
1134
- # fails silently unless platform is XP++
1135
-
1136
- ##
1137
- # GetErrorMode Function
1138
- # Retrieves the error mode for the current process.
1139
- #
1140
- # [*Syntax*] UINT WINAPI GetErrorMode( void );
1141
- #
1142
- # This function has no parameters.
1143
- #
1144
- # *Returns*:: The process error mode. This function returns one of the following values.
1145
- # SEM_FAILCRITICALERRORS:: The system does not display the critical-error-handler message box. Instead,
1146
- # the system sends the error to the calling process.
1147
- # SEM_NOALIGNMENTFAULTEXCEPT:: The system automatically fixes memory alignment faults and makes them
1148
- # invisible to the application. It does this for the calling process and
1149
- # any descendant processes. This feature is only supported by certain
1150
- # processor architectures. For more information, see the Remarks section.
1151
- # After this value is set for a process, subsequent attempts to clear the
1152
- # value are ignored.
1153
- # SEM_NOGPFAULTERRORBOX:: The system does not display the general-protection-fault message box. This
1154
- # flag should only be set by debugging applications that handle general
1155
- # protection (GP) faults themselves with an exception handler.
1156
- # SEM_NOOPENFILEERRORBOX:: The system does not display a message box when it fails to find a file.
1157
- # Instead, the error is returned to the calling process.
1158
- # ---
1159
- # *Remarks*:
1160
- # Each process has an associated error mode that indicates to the system how the application is going to
1161
- # respond to serious errors. A child process inherits the error mode of its parent process.
1162
- # To change the error mode for the process, use the SetErrorMode function.
1163
- # ------
1164
- # <b> Only works in Vista++! </b>
1165
- # ------
1166
- # :call-seq:
1167
- # mode = get_error_mode()
1168
- #
1169
- try_function :GetErrorMode, [], :uint
1170
- # fails silently unless platform is Vista++
1171
-
1172
- ##
1173
- # SetErrorMode Function controls whether the system will handle the specified types of serious errors or whether
1174
- # the process will handle them.
1175
- #
1176
- # [*Syntax*] UINT WINAPI SetErrorMode( UINT uMode );
1177
- #
1178
- # uMode:: The process error mode. This parameter can be one or more of the following values.
1179
- # 0:: Use the system default, which is to display all error dialog boxes.
1180
- # SEM_FAILCRITICALERRORS:: The system does not display the critical-error-handler message box. Instead,
1181
- # the system sends the error to the calling process.
1182
- # SEM_NOALIGNMENTFAULTEXCEPT:: The system automatically fixes memory alignment faults and makes them
1183
- # invisible to the application. It does this for the calling process and any
1184
- # descendant processes. This feature is only supported by certain processor
1185
- # architectures. For more information, see the Remarks section.
1186
- # After this value is set for a process, subsequent attempts to clear the
1187
- # value are ignored.
1188
- # SEM_NOGPFAULTERRORBOX:: The system does not display the general-protection-fault message box. This flag
1189
- # should only be set by debugging applications that handle general protection (GP)
1190
- # faults themselves with an exception handler.
1191
- # SEM_NOOPENFILEERRORBOX:: The system does not display a message box when it fails to find a file. Instead,
1192
- # the error is returned to the calling process.
1193
- #
1194
- # *Returns*:: The return value is the previous state of the error-mode bit flags.
1195
- # ---
1196
- # *Remarks*:
1197
- # Each process has an associated error mode that indicates to the system how the application is going to
1198
- # respond to serious errors. A child process inherits the error mode of its parent process. To retrieve
1199
- # the process error mode, use the GetErrorMode function.
1200
- # Because the error mode is set for the entire process, you must ensure that multi-threaded applications
1201
- # do not set different error-mode flags. Doing so can lead to inconsistent error handling.
1202
- # The system does not make alignment faults visible to an application on all processor architectures.
1203
- # Therefore, specifying SEM_NOALIGNMENTFAULTEXCEPT is not an error on such architectures, but the system
1204
- # is free to silently ignore the request. This means that code sequences such as the following are not
1205
- # always valid on x86 computers:
1206
- #
1207
- # SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT);
1208
- # fuOldErrorMode = SetErrorMode(0);
1209
- # ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
1210
- #
1211
- # Itanium:: An application must explicitly call SetErrorMode with SEM_NOALIGNMENTFAULTEXCEPT to have the
1212
- # system automatically fix alignment faults. The default setting is for the system to make alignment
1213
- # faults visible to an application.
1214
- # Visual Studio 2005:: When declaring a pointer to a structure that may not have aligned data, you can use
1215
- # __unaligned keyword to indicate that the type must be read one byte at a time. For more
1216
- # information, see Windows Data Alignment.
1217
- #
1218
- # :call-seq:
1219
- # success = set_error_mode(mode)
1220
- #
1221
- function :SetErrorMode, [:UINT], :UINT
1222
-
1223
- end
1
+ require 'win/library'
2
+
3
+ module Win
4
+
5
+ # Defines functions and constants related to error processing.
6
+ # Includes (some) error codes from error.h, msterr.h and winerror.h (up to 3000);
7
+ # other modules may contain additional error codes specific to their domain.
8
+ #
9
+ module Error
10
+ include Win::Library
11
+
12
+ #Error codes:
13
+
14
+ # :stopdoc:
15
+ S_OK = 0
16
+ NO_ERROR = 0
17
+ ERROR_SUCCESS = 0
18
+ ERROR_INVALID_FUNCTION = 1
19
+ ERROR_FILE_NOT_FOUND = 2
20
+ ERROR_PATH_NOT_FOUND = 3
21
+ ERROR_TOO_MANY_OPEN_FILES = 4
22
+ ERROR_ACCESS_DENIED = 5
23
+ ERROR_INVALID_HANDLE = 6
24
+ ERROR_ARENA_TRASHED = 7
25
+ ERROR_NOT_ENOUGH_MEMORY = 8
26
+ ERROR_INVALID_BLOCK = 9
27
+ ERROR_BAD_ENVIRONMENT = 10
28
+ ERROR_BAD_FORMAT = 11
29
+ ERROR_INVALID_ACCESS = 12
30
+ ERROR_INVALID_DATA = 13
31
+ ERROR_INVALID_DRIVE = 15
32
+ ERROR_CURRENT_DIRECTORY = 16
33
+ ERROR_NOT_SAME_DEVICE = 17
34
+ ERROR_NO_MORE_FILES = 18
35
+ ERROR_WRITE_PROTECT = 19
36
+ ERROR_BAD_UNIT = 20
37
+ ERROR_NOT_READY = 21
38
+ ERROR_BAD_COMMAND = 22
39
+ ERROR_CRC = 23
40
+ ERROR_BAD_LENGTH = 24
41
+ ERROR_SEEK = 25
42
+ ERROR_NOT_DOS_DISK = 26
43
+ ERROR_SECTOR_NOT_FOUND = 27
44
+ ERROR_OUT_OF_PAPER = 28
45
+ ERROR_WRITE_FAULT = 29
46
+ ERROR_READ_FAULT = 30
47
+ ERROR_GEN_FAILURE = 31
48
+ ERROR_SHARING_VIOLATION = 32
49
+ ERROR_LOCK_VIOLATION = 33
50
+ ERROR_WRONG_DISK = 34
51
+ ERROR_FCB_UNAVAILABLE = 35 # gets returned for some unsuccessful DeviceIoControl calls
52
+ ERROR_SHARING_BUFFER_EXCEEDED = 36
53
+ ERROR_HANDLE_EOF = 38
54
+ ERROR_HANDLE_DISK_FULL = 39
55
+
56
+ ERROR_NOT_SUPPORTED = 50
57
+ ERROR_REM_NOT_LIST = 51
58
+ ERROR_DUP_NAME = 52
59
+ ERROR_BAD_NETPATH = 53
60
+ ERROR_NETWORK_BUSY = 54
61
+ ERROR_DEV_NOT_EXIST = 55
62
+ ERROR_TOO_MANY_CMDS = 56
63
+ ERROR_ADAP_HDW_ERR = 57
64
+ ERROR_BAD_NET_RESP = 58
65
+ ERROR_UNEXP_NET_ERR = 59
66
+ ERROR_BAD_REM_ADAP = 60
67
+ ERROR_PRINTQ_FULL = 61
68
+ ERROR_NO_SPOOL_SPACE = 62
69
+ ERROR_PRINT_CANCELLED = 63
70
+ ERROR_NETNAME_DELETED = 64
71
+ ERROR_NETWORK_ACCESS_DENIED = 65
72
+ ERROR_BAD_DEV_TYPE = 66
73
+ ERROR_BAD_NET_NAME = 67
74
+ ERROR_TOO_MANY_NAMES = 68
75
+ ERROR_TOO_MANY_SESS = 69
76
+ ERROR_SHARING_PAUSED = 70
77
+ ERROR_REQ_NOT_ACCEP = 71
78
+ ERROR_REDIR_PAUSED = 72
79
+
80
+ ERROR_FILE_EXISTS = 80
81
+ ERROR_DUP_FCB = 81
82
+ ERROR_CANNOT_MAKE = 82
83
+ ERROR_FAIL_I24 = 83
84
+ ERROR_OUT_OF_STRUCTURES = 84
85
+ ERROR_ALREADY_ASSIGNED = 85
86
+ ERROR_INVALID_PASSWORD = 86
87
+ ERROR_INVALID_PARAMETER = 87
88
+ ERROR_NET_WRITE_FAULT = 88
89
+ ERROR_NO_PROC_SLOTS = 89 # no process slots available
90
+ ERROR_NOT_FROZEN = 90
91
+ ERR_TSTOVFL = 91 # timer service table overflow
92
+ ERR_TSTDUP = 92 # timer service table duplicate
93
+ ERROR_NO_ITEMS = 93 # There were no items to operate upon
94
+ ERROR_INTERRUPT = 95 # interrupted system call
95
+
96
+ ERROR_TOO_MANY_SEMAPHORES = 100
97
+ ERROR_EXCL_SEM_ALREADY_OWNED = 101
98
+ ERROR_SEM_IS_SET = 102
99
+ ERROR_TOO_MANY_SEM_REQUESTS = 103
100
+ ERROR_INVALID_AT_INTERRUPT_TIME = 104
101
+ ERROR_SEM_OWNER_DIED = 105 # waitsem found owner died
102
+ ERROR_SEM_USER_LIMIT = 106 # too many procs have this sem
103
+ ERROR_DISK_CHANGE = 107 # insert disk b into drive a
104
+ ERROR_DRIVE_LOCKED = 108 # drive locked by another process
105
+ ERROR_BROKEN_PIPE = 109 # write on pipe with no reader
106
+ ERROR_OPEN_FAILED = 110 # open/created failed
107
+ ERROR_DISK_FULL = 112 # not enough space
108
+ ERROR_NO_MORE_SEARCH_HANDLES = 113 # can't allocate
109
+ ERROR_INVALID_TARGET_HANDLE = 114 # handle in DOSDUPHANDLE is invalid
110
+ ERROR_PROTECTION_VIOLATION = 115 # bad user virtual address
111
+ ERROR_VIOKBD_REQUEST = 116
112
+ ERROR_INVALID_CATEGORY = 117 # category for DEVIOCTL not defined
113
+ ERROR_INVALID_VERIFY_SWITCH = 118 # invalid value
114
+ ERROR_BAD_DRIVER_LEVEL = 119 # DosDevIOCTL not level four
115
+ ERROR_CALL_NOT_IMPLEMENTED = 120
116
+ ERROR_SEM_TIMEOUT = 121 # timeout from semaphore function
117
+ ERROR_INSUFFICIENT_BUFFER = 122
118
+ ERROR_INVALID_NAME = 123 # illegal char or malformed file system name
119
+ ERROR_INVALID_LEVEL = 124 # unimplemented level for info retrieval
120
+ ERROR_NO_VOLUME_LABEL = 125 # no volume label found
121
+ ERROR_MOD_NOT_FOUND = 126 # w_getprocaddr, w_getmodhandle
122
+ ERROR_PROC_NOT_FOUND = 127 # w_getprocaddr
123
+ ERROR_WAIT_NO_CHILDREN = 128 # CWait finds to children
124
+ ERROR_CHILD_NOT_COMPLETE = 129 # CWait children not dead yet
125
+ ERROR_DIRECT_ACCESS_HANDLE = 130 # invalid for direct disk access
126
+ ERROR_NEGATIVE_SEEK = 131 # tried to seek negative offset
127
+ ERROR_SEEK_ON_DEVICE = 132 # tried to seek on device or pipe
128
+ ERROR_IS_JOIN_TARGET = 133
129
+ ERROR_IS_JOINED = 134
130
+ ERROR_IS_SUBSTED = 135
131
+ ERROR_NOT_JOINED = 136
132
+ ERROR_NOT_SUBSTED = 137
133
+ ERROR_JOIN_TO_JOIN = 138
134
+ ERROR_SUBST_TO_SUBST = 139
135
+ ERROR_JOIN_TO_SUBST = 140
136
+ ERROR_SUBST_TO_JOIN = 141
137
+ ERROR_BUSY_DRIVE = 142
138
+ ERROR_SAME_DRIVE = 143
139
+ ERROR_DIR_NOT_ROOT = 144
140
+ ERROR_DIR_NOT_EMPTY = 145
141
+ ERROR_IS_SUBST_PATH = 146
142
+ ERROR_IS_JOIN_PATH = 147
143
+ ERROR_PATH_BUSY = 148
144
+ ERROR_IS_SUBST_TARGET = 149
145
+ ERROR_SYSTEM_TRACE = 150 # system trace error
146
+ ERROR_INVALID_EVENT_COUNT = 151 # DosMuxSemWait errors
147
+ ERROR_TOO_MANY_MUXWAITERS = 152
148
+ ERROR_INVALID_LIST_FORMAT = 153
149
+ ERROR_LABEL_TOO_LONG = 154
150
+ ERROR_TOO_MANY_TCBS = 155
151
+ ERROR_SIGNAL_REFUSED = 156
152
+ ERROR_DISCARDED = 157
153
+ ERROR_NOT_LOCKED = 158
154
+ ERROR_BAD_THREADID_ADDR = 159
155
+ ERROR_BAD_ARGUMENTS = 160
156
+ ERROR_BAD_PATHNAME = 161
157
+ ERROR_SIGNAL_PENDING = 162
158
+ ERROR_UNCERTAIN_MEDIA = 163
159
+ ERROR_MAX_THRDS_REACHED = 164
160
+ ERROR_MONITORS_NOT_SUPPORTED = 165
161
+
162
+ ERROR_LOCK_FAILED = 167
163
+ ERROR_BUSY = 170
164
+ ERROR_CANCEL_VIOLATION = 173
165
+ ERROR_ATOMIC_LOCKS_NOT_SUPPORTED= 174
166
+
167
+ ERROR_INVALID_SEGMENT_NUMBER = 180
168
+ ERROR_INVALID_CALLGATE = 181
169
+ ERROR_INVALID_ORDINAL = 182
170
+ ERROR_ALREADY_EXISTS = 183
171
+ ERROR_NO_CHILD_PROCESS = 184
172
+ ERROR_CHILD_ALIVE_NOWAIT = 185
173
+ ERROR_INVALID_FLAG_NUMBER = 186
174
+ ERROR_SEM_NOT_FOUND = 187
175
+ ERROR_INVALID_STARTING_CODESEG = 188
176
+ ERROR_INVALID_STACKSEG = 189
177
+ ERROR_INVALID_MODULETYPE = 190
178
+ ERROR_INVALID_EXE_SIGNATURE = 191
179
+ ERROR_EXE_MARKED_INVALID = 192
180
+ ERROR_BAD_EXE_FORMAT = 193
181
+ ERROR_ITERATED_DATA_EXCEEDS_64k = 194
182
+ ERROR_INVALID_MINALLOCSIZE = 195
183
+ ERROR_DYNLINK_FROM_INVALID_RING = 196
184
+ ERROR_IOPL_NOT_ENABLED = 197
185
+ ERROR_INVALID_SEGDPL = 198
186
+ ERROR_AUTODATASEG_EXCEEDS_64k = 199
187
+ ERROR_RING2SEG_MUST_BE_MOVABLE = 200
188
+ ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201
189
+ ERROR_INFLOOP_IN_RELOC_CHAIN = 202
190
+ ERROR_ENVVAR_NOT_FOUND = 203
191
+ ERROR_NOT_CURRENT_CTRY = 204
192
+ ERROR_NO_SIGNAL_SENT = 205
193
+ ERROR_FILENAME_EXCED_RANGE = 206 # if filename > 8.3
194
+ ERROR_RING2_STACK_IN_USE = 207 # for FAPI
195
+ ERROR_META_EXPANSION_TOO_LONG = 208 # if "*a" > 8.3
196
+ ERROR_INVALID_SIGNAL_NUMBER = 209
197
+ ERROR_THREAD_1_INACTIVE = 210
198
+ ERROR_INFO_NOT_AVAIL = 211 #@@ PTM 5550
199
+ ERROR_LOCKED = 212
200
+ ERROR_BAD_DYNALINK = 213 #@@ PTM 5760
201
+ ERROR_TOO_MANY_MODULES = 214
202
+ ERROR_NESTING_NOT_ALLOWED = 215
203
+ ERROR_EXE_MACHINE_TYPE_MISMATCH = 216
204
+
205
+ ERROR_BAD_PIPE = 230
206
+ ERROR_PIPE_BUSY = 231
207
+ ERROR_NO_DATA = 232
208
+ ERROR_PIPE_NOT_CONNECTED = 233
209
+ ERROR_MORE_DATA = 234
210
+
211
+ ERROR_VC_DISCONNECTED = 240
212
+ ERROR_INVALID_EA_NAME = 254
213
+ ERROR_EA_LIST_INCONSISTENT = 255
214
+ ERROR_NO_MORE_ITEMS = 259
215
+ ERROR_CANNOT_COPY = 266
216
+ ERROR_DIRECTORY = 267
217
+ ERROR_EAS_DIDNT_FIT = 275
218
+ ERROR_EA_FILE_CORRUPT = 276
219
+ ERROR_EA_TABLE_FULL = 277
220
+ ERROR_INVALID_EA_HANDLE = 278
221
+ ERROR_EAS_NOT_SUPPORTED = 282
222
+ ERROR_NOT_OWNER = 288
223
+ ERROR_TOO_MANY_POSTS = 298
224
+ ERROR_PARTIAL_COPY = 299
225
+ ERROR_OPLOCK_NOT_GRANTED = 300
226
+ ERROR_INVALID_OPLOCK_PROTOCOL = 301
227
+ ERROR_DISK_TOO_FRAGMENTED = 302
228
+ ERROR_MR_MID_NOT_FOUND = 317
229
+ ERROR_SCOPE_NOT_FOUND = 318
230
+ ERROR_FAIL_NOACTION_REBOOT = 350
231
+ ERROR_FAIL_SHUTDOWN = 351
232
+ ERROR_FAIL_RESTART = 352
233
+ ERROR_MAX_SESSIONS_REACHED = 353
234
+ ERROR_INVALID_ADDRESS = 487
235
+ ERROR_USER_PROFILE_LOAD = 500
236
+ ERROR_ARITHMETIC_OVERFLOW = 534
237
+ ERROR_PIPE_CONNECTED = 535
238
+ ERROR_PIPE_LISTENING = 536
239
+
240
+ ERROR_EA_ACCESS_DENIED = 994
241
+ ERROR_OPERATION_ABORTED = 995
242
+ ERROR_IO_INCOMPLETE = 996
243
+ ERROR_IO_PENDING = 997
244
+ ERROR_NOACCESS = 998
245
+ ERROR_SWAPERROR = 999
246
+
247
+ ERROR_STACK_OVERFLOW = 1001
248
+ ERROR_INVALID_MESSAGE = 1002
249
+ ERROR_CAN_NOT_COMPLETE = 1003
250
+ ERROR_INVALID_FLAGS = 1004
251
+ ERROR_UNRECOGNIZED_VOLUME = 1005
252
+ ERROR_FILE_INVALID = 1006
253
+ ERROR_FULLSCREEN_MODE = 1007
254
+ ERROR_NO_TOKEN = 1008
255
+ ERROR_BADDB = 1009
256
+ ERROR_BADKEY = 1010
257
+ ERROR_CANTOPEN = 1011
258
+ ERROR_CANTREAD = 1012
259
+ ERROR_CANTWRITE = 1013
260
+ ERROR_REGISTRY_RECOVERED = 1014
261
+ ERROR_REGISTRY_CORRUPT = 1015
262
+ ERROR_REGISTRY_IO_FAILED = 1016
263
+ ERROR_NOT_REGISTRY_FILE = 1017
264
+ ERROR_KEY_DELETED = 1018
265
+ ERROR_NO_LOG_SPACE = 1019
266
+ ERROR_KEY_HAS_CHILDREN = 1020
267
+ ERROR_CHILD_MUST_BE_VOLATILE = 1021
268
+ ERROR_NOTIFY_ENUM_DIR = 1022
269
+ ERROR_DEPENDENT_SERVICES_RUNNING = 1051
270
+ ERROR_INVALID_SERVICE_CONTROL = 1052
271
+ ERROR_SERVICE_REQUEST_TIMEOUT = 1053
272
+ ERROR_SERVICE_NO_THREAD = 1054
273
+ ERROR_SERVICE_DATABASE_LOCKED = 1055
274
+ ERROR_SERVICE_ALREADY_RUNNING = 1056
275
+ ERROR_INVALID_SERVICE_ACCOUNT = 1057
276
+ ERROR_SERVICE_DISABLED = 1058
277
+ ERROR_CIRCULAR_DEPENDENCY = 1059
278
+ ERROR_SERVICE_DOES_NOT_EXIST = 1060
279
+ ERROR_SERVICE_CANNOT_ACCEPT_CTRL = 1061
280
+ ERROR_SERVICE_NOT_ACTIVE = 1062
281
+ ERROR_FAILED_SERVICE_CONTROLLER_CONNECT = 1063
282
+ ERROR_EXCEPTION_IN_SERVICE = 1064
283
+ ERROR_DATABASE_DOES_NOT_EXIST = 1065
284
+ ERROR_SERVICE_SPECIFIC_ERROR = 1066
285
+ ERROR_PROCESS_ABORTED = 1067
286
+ ERROR_SERVICE_DEPENDENCY_FAIL = 1068
287
+ ERROR_SERVICE_LOGON_FAILED = 1069
288
+ ERROR_SERVICE_START_HANG = 1070
289
+ ERROR_INVALID_SERVICE_LOCK = 1071
290
+ ERROR_SERVICE_MARKED_FOR_DELETE = 1072
291
+ ERROR_SERVICE_EXISTS = 1073
292
+ ERROR_ALREADY_RUNNING_LKG = 1074
293
+ ERROR_SERVICE_DEPENDENCY_DELETED = 1075
294
+ ERROR_BOOT_ALREADY_ACCEPTED = 1076
295
+ ERROR_SERVICE_NEVER_STARTED = 1077
296
+ ERROR_DUPLICATE_SERVICE_NAME = 1078
297
+ ERROR_DIFFERENT_SERVICE_ACCOUNT = 1079
298
+ ERROR_CANNOT_DETECT_DRIVER_FAILURE = 1080
299
+ ERROR_CANNOT_DETECT_PROCESS_ABORT = 1081
300
+ ERROR_NO_RECOVERY_PROGRAM = 1082
301
+ ERROR_SERVICE_NOT_IN_EXE = 1083
302
+ ERROR_END_OF_MEDIA = 1100
303
+ ERROR_FILEMARK_DETECTED = 1101
304
+ ERROR_BEGINNING_OF_MEDIA = 1102
305
+ ERROR_SETMARK_DETECTED = 1103
306
+ ERROR_NO_DATA_DETECTED = 1104
307
+ ERROR_PARTITION_FAILURE = 1105
308
+ ERROR_INVALID_BLOCK_LENGTH = 1106
309
+ ERROR_DEVICE_NOT_PARTITIONED = 1107
310
+ ERROR_UNABLE_TO_LOCK_MEDIA = 1108
311
+ ERROR_UNABLE_TO_UNLOAD_MEDIA = 1109
312
+ ERROR_MEDIA_CHANGED = 1110
313
+ ERROR_BUS_RESET = 1111
314
+ ERROR_NO_MEDIA_IN_DRIVE = 1112
315
+ ERROR_NO_UNICODE_TRANSLATION = 1113
316
+ ERROR_DLL_INIT_FAILED = 1114
317
+ ERROR_SHUTDOWN_IN_PROGRESS = 1115
318
+ ERROR_NO_SHUTDOWN_IN_PROGRESS = 1116
319
+ ERROR_IO_DEVICE = 1117
320
+ ERROR_SERIAL_NO_DEVICE = 1118
321
+ ERROR_IRQ_BUSY = 1119
322
+ ERROR_MORE_WRITES = 1120
323
+ ERROR_COUNTER_TIMEOUT = 1121
324
+ ERROR_FLOPPY_ID_MARK_NOT_FOUND = 1122
325
+ ERROR_FLOPPY_WRONG_CYLINDER = 1123
326
+ ERROR_FLOPPY_UNKNOWN_ERROR = 1124
327
+ ERROR_FLOPPY_BAD_REGISTERS = 1125
328
+ ERROR_DISK_RECALIBRATE_FAILED = 1126
329
+ ERROR_DISK_OPERATION_FAILED = 1127
330
+ ERROR_DISK_RESET_FAILED = 1128
331
+ ERROR_EOM_OVERFLOW = 1129
332
+ ERROR_NOT_ENOUGH_SERVER_MEMORY = 1130
333
+ ERROR_POSSIBLE_DEADLOCK = 1131
334
+ ERROR_MAPPED_ALIGNMENT = 1132
335
+ ERROR_SET_POWER_STATE_VETOED = 1140
336
+ ERROR_SET_POWER_STATE_FAILED = 1141
337
+ ERROR_TOO_MANY_LINKS = 1142
338
+ ERROR_OLD_WIN_VERSION = 1150
339
+ ERROR_APP_WRONG_OS = 1151
340
+ ERROR_SINGLE_INSTANCE_APP = 1152
341
+ ERROR_RMODE_APP = 1153
342
+ ERROR_INVALID_DLL = 1154
343
+ ERROR_NO_ASSOCIATION = 1155
344
+ ERROR_DDE_FAIL = 1156
345
+ ERROR_DLL_NOT_FOUND = 1157
346
+ ERROR_NO_MORE_USER_HANDLES = 1158
347
+ ERROR_MESSAGE_SYNC_ONLY = 1159
348
+ ERROR_SOURCE_ELEMENT_EMPTY = 1160
349
+ ERROR_DESTINATION_ELEMENT_FULL = 1161
350
+ ERROR_ILLEGAL_ELEMENT_ADDRESS = 1162
351
+ ERROR_MAGAZINE_NOT_PRESENT = 1163
352
+ ERROR_DEVICE_REINITIALIZATION_NEEDED = 1164
353
+ ERROR_DEVICE_REQUIRES_CLEANING = 1165
354
+ ERROR_DEVICE_DOOR_OPEN = 1166
355
+ ERROR_DEVICE_NOT_CONNECTED = 1167
356
+ ERROR_NOT_FOUND = 1168
357
+ ERROR_NO_MATCH = 1169
358
+ ERROR_SET_NOT_FOUND = 1170
359
+ ERROR_POINT_NOT_FOUND = 1171
360
+ ERROR_NO_TRACKING_SERVICE = 1172
361
+ ERROR_NO_VOLUME_ID = 1173
362
+ ERROR_UNABLE_TO_REMOVE_REPLACED = 1175
363
+ ERROR_UNABLE_TO_MOVE_REPLACEMENT = 1176
364
+ ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 = 1177
365
+ ERROR_JOURNAL_DELETE_IN_PROGRESS = 1178
366
+ ERROR_JOURNAL_NOT_ACTIVE = 1179
367
+ ERROR_POTENTIAL_FILE_FOUND = 1180
368
+ ERROR_JOURNAL_ENTRY_DELETED = 1181
369
+ ERROR_BAD_DEVICE = 1200
370
+ ERROR_CONNECTION_UNAVAIL = 1201
371
+ ERROR_DEVICE_ALREADY_REMEMBERED = 1202
372
+ ERROR_NO_NET_OR_BAD_PATH = 1203
373
+ ERROR_BAD_PROVIDER = 1204
374
+ ERROR_CANNOT_OPEN_PROFILE = 1205
375
+ ERROR_BAD_PROFILE = 1206
376
+ ERROR_NOT_CONTAINER = 1207
377
+ ERROR_EXTENDED_ERROR = 1208
378
+ ERROR_INVALID_GROUPNAME = 1209
379
+ ERROR_INVALID_COMPUTERNAME = 1210
380
+ ERROR_INVALID_EVENTNAME = 1211
381
+ ERROR_INVALID_DOMAINNAME = 1212
382
+ ERROR_INVALID_SERVICENAME = 1213
383
+ ERROR_INVALID_NETNAME = 1214
384
+ ERROR_INVALID_SHARENAME = 1215
385
+ ERROR_INVALID_PASSWORDNAME = 1216
386
+ ERROR_INVALID_MESSAGENAME = 1217
387
+ ERROR_INVALID_MESSAGEDEST = 1218
388
+ ERROR_SESSION_CREDENTIAL_CONFLICT = 1219
389
+ ERROR_REMOTE_SESSION_LIMIT_EXCEEDED = 1220
390
+ ERROR_DUP_DOMAINNAME = 1221
391
+ ERROR_NO_NETWORK = 1222
392
+ ERROR_CANCELLED = 1223
393
+ ERROR_USER_MAPPED_FILE = 1224
394
+ ERROR_CONNECTION_REFUSED = 1225
395
+ ERROR_GRACEFUL_DISCONNECT = 1226
396
+ ERROR_ADDRESS_ALREADY_ASSOCIATED = 1227
397
+ ERROR_ADDRESS_NOT_ASSOCIATED = 1228
398
+ ERROR_CONNECTION_INVALID = 1229
399
+ ERROR_CONNECTION_ACTIVE = 1230
400
+ ERROR_NETWORK_UNREACHABLE = 1231
401
+ ERROR_HOST_UNREACHABLE = 1232
402
+ ERROR_PROTOCOL_UNREACHABLE = 1233
403
+ ERROR_PORT_UNREACHABLE = 1234
404
+ ERROR_REQUEST_ABORTED = 1235
405
+ ERROR_CONNECTION_ABORTED = 1236
406
+ ERROR_RETRY = 1237
407
+ ERROR_CONNECTION_COUNT_LIMIT = 1238
408
+ ERROR_LOGIN_TIME_RESTRICTION = 1239
409
+ ERROR_LOGIN_WKSTA_RESTRICTION = 1240
410
+ ERROR_INCORRECT_ADDRESS = 1241
411
+ ERROR_ALREADY_REGISTERED = 1242
412
+ ERROR_SERVICE_NOT_FOUND = 1243
413
+ ERROR_NOT_AUTHENTICATED = 1244
414
+ ERROR_NOT_LOGGED_ON = 1245
415
+ ERROR_CONTINUE = 1246
416
+ ERROR_ALREADY_INITIALIZED = 1247
417
+ ERROR_NO_MORE_DEVICES = 1248
418
+ ERROR_NO_SUCH_SITE = 1249
419
+ ERROR_DOMAIN_CONTROLLER_EXISTS = 1250
420
+ ERROR_ONLY_IF_CONNECTED = 1251
421
+ ERROR_OVERRIDE_NOCHANGES = 1252
422
+ ERROR_BAD_USER_PROFILE = 1253
423
+ ERROR_NOT_SUPPORTED_ON_SBS = 1254
424
+ ERROR_SERVER_SHUTDOWN_IN_PROGRESS = 1255
425
+ ERROR_HOST_DOWN = 1256
426
+ ERROR_ACCESS_DISABLED_BY_POLICY = 1260
427
+ ERROR_REG_NAT_CONSUMPTION = 1261
428
+ ERROR_PKINIT_FAILURE = 1263
429
+ ERROR_SMARTCARD_SUBSYSTEM_FAILURE = 1264
430
+ ERROR_DOWNGRADE_DETECTED = 1265
431
+ ERROR_MACHINE_LOCKED = 1271
432
+ ERROR_CALLBACK_SUPPLIED_INVALID_DATA = 1273
433
+ ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED= 1274
434
+ ERROR_DRIVER_BLOCKED = 1275
435
+ ERROR_INVALID_IMPORT_OF_NON_DLL = 1276
436
+ ERROR_NOT_ALL_ASSIGNED = 1300
437
+ ERROR_SOME_NOT_MAPPED = 1301
438
+ ERROR_NO_QUOTAS_FOR_ACCOUNT = 1302
439
+ ERROR_LOCAL_USER_SESSION_KEY = 1303
440
+ ERROR_NULL_LM_PASSWORD = 1304
441
+ ERROR_UNKNOWN_REVISION = 1305
442
+ ERROR_REVISION_MISMATCH = 1306
443
+ ERROR_INVALID_OWNER = 1307
444
+ ERROR_INVALID_PRIMARY_GROUP = 1308
445
+ ERROR_NO_IMPERSONATION_TOKEN = 1309
446
+ ERROR_CANT_DISABLE_MANDATORY = 1310
447
+ ERROR_NO_LOGON_SERVERS = 1311
448
+ ERROR_NO_SUCH_LOGON_SESSION = 1312
449
+ ERROR_NO_SUCH_PRIVILEGE = 1313
450
+ ERROR_PRIVILEGE_NOT_HELD = 1314
451
+ ERROR_INVALID_ACCOUNT_NAME = 1315
452
+ ERROR_USER_EXISTS = 1316
453
+ ERROR_NO_SUCH_USER = 1317
454
+ ERROR_GROUP_EXISTS = 1318
455
+ ERROR_NO_SUCH_GROUP = 1319
456
+ ERROR_MEMBER_IN_GROUP = 1320
457
+ ERROR_MEMBER_NOT_IN_GROUP = 1321
458
+ ERROR_LAST_ADMIN = 1322
459
+ ERROR_WRONG_PASSWORD = 1323
460
+ ERROR_ILL_FORMED_PASSWORD = 1324
461
+ ERROR_PASSWORD_RESTRICTION = 1325
462
+ ERROR_LOGON_FAILURE = 1326
463
+ ERROR_ACCOUNT_RESTRICTION = 1327
464
+ ERROR_INVALID_LOGON_HOURS = 1328
465
+ ERROR_INVALID_WORKSTATION = 1329
466
+ ERROR_PASSWORD_EXPIRED = 1330
467
+ ERROR_ACCOUNT_DISABLED = 1331
468
+ ERROR_NONE_MAPPED = 1332
469
+ ERROR_TOO_MANY_LUIDS_REQUESTED = 1333
470
+ ERROR_LUIDS_EXHAUSTED = 1334
471
+ ERROR_INVALID_SUB_AUTHORITY = 1335
472
+ ERROR_INVALID_ACL = 1336
473
+ ERROR_INVALID_SID = 1337
474
+ ERROR_INVALID_SECURITY_DESCR = 1338
475
+ ERROR_BAD_INHERITANCE_ACL = 1340
476
+ ERROR_SERVER_DISABLED = 1341
477
+ ERROR_SERVER_NOT_DISABLED = 1342
478
+ ERROR_INVALID_ID_AUTHORITY = 1343
479
+ ERROR_ALLOTTED_SPACE_EXCEEDED = 1344
480
+ ERROR_INVALID_GROUP_ATTRIBUTES = 1345
481
+ ERROR_BAD_IMPERSONATION_LEVEL = 1346
482
+ ERROR_CANT_OPEN_ANONYMOUS = 1347
483
+ ERROR_BAD_VALIDATION_CLASS = 1348
484
+ ERROR_BAD_TOKEN_TYPE = 1349
485
+ ERROR_NO_SECURITY_ON_OBJECT = 1350
486
+ ERROR_CANT_ACCESS_DOMAIN_INFO = 1351
487
+ ERROR_INVALID_SERVER_STATE = 1352
488
+ ERROR_INVALID_DOMAIN_STATE = 1353
489
+ ERROR_INVALID_DOMAIN_ROLE = 1354
490
+ ERROR_NO_SUCH_DOMAIN = 1355
491
+ ERROR_DOMAIN_EXISTS = 1356
492
+ ERROR_DOMAIN_LIMIT_EXCEEDED = 1357
493
+ ERROR_INTERNAL_DB_CORRUPTION = 1358
494
+ ERROR_INTERNAL_ERROR = 1359
495
+ ERROR_GENERIC_NOT_MAPPED = 1360
496
+ ERROR_BAD_DESCRIPTOR_FORMAT = 1361
497
+ ERROR_NOT_LOGON_PROCESS = 1362
498
+ ERROR_LOGON_SESSION_EXISTS = 1363
499
+ ERROR_NO_SUCH_PACKAGE = 1364
500
+ ERROR_BAD_LOGON_SESSION_STATE = 1365
501
+ ERROR_LOGON_SESSION_COLLISION = 1366
502
+ ERROR_INVALID_LOGON_TYPE = 1367
503
+ ERROR_CANNOT_IMPERSONATE = 1368
504
+ ERROR_RXACT_INVALID_STATE = 1369
505
+ ERROR_RXACT_COMMIT_FAILURE = 1370
506
+ ERROR_SPECIAL_ACCOUNT = 1371
507
+ ERROR_SPECIAL_GROUP = 1372
508
+ ERROR_SPECIAL_USER = 1373
509
+ ERROR_MEMBERS_PRIMARY_GROUP = 1374
510
+ ERROR_TOKEN_ALREADY_IN_USE = 1375
511
+ ERROR_NO_SUCH_ALIAS = 1376
512
+ ERROR_MEMBER_NOT_IN_ALIAS = 1377
513
+ ERROR_MEMBER_IN_ALIAS = 1378
514
+ ERROR_ALIAS_EXISTS = 1379
515
+ ERROR_LOGON_NOT_GRANTED = 1380
516
+ ERROR_TOO_MANY_SECRETS = 1381
517
+ ERROR_SECRET_TOO_LONG = 1382
518
+ ERROR_INTERNAL_DB_ERROR = 1383
519
+ ERROR_TOO_MANY_CONTEXT_IDS = 1384
520
+ ERROR_LOGON_TYPE_NOT_GRANTED = 1385
521
+ ERROR_NT_CROSS_ENCRYPTION_REQUIRED = 1386
522
+ ERROR_NO_SUCH_MEMBER = 1387
523
+ ERROR_INVALID_MEMBER = 1388
524
+ ERROR_TOO_MANY_SIDS = 1389
525
+ ERROR_LM_CROSS_ENCRYPTION_REQUIRED = 1390
526
+ ERROR_NO_INHERITANCE = 1391
527
+ ERROR_FILE_CORRUPT = 1392
528
+ ERROR_DISK_CORRUPT = 1393
529
+ ERROR_NO_USER_SESSION_KEY = 1394
530
+ ERROR_LICENSE_QUOTA_EXCEEDED = 1395
531
+ ERROR_WRONG_TARGET_NAME = 1396
532
+ ERROR_MUTUAL_AUTH_FAILED = 1397
533
+ ERROR_TIME_SKEW = 1398
534
+ ERROR_CURRENT_DOMAIN_NOT_ALLOWED = 1399
535
+ ERROR_INVALID_WINDOW_HANDLE = 1400
536
+ ERROR_INVALID_MENU_HANDLE = 1401
537
+ ERROR_INVALID_CURSOR_HANDLE = 1402
538
+ ERROR_INVALID_ACCEL_HANDLE = 1403
539
+ ERROR_INVALID_HOOK_HANDLE = 1404
540
+ ERROR_INVALID_DWP_HANDLE = 1405
541
+ ERROR_TLW_WITH_WSCHILD = 1406
542
+ ERROR_CANNOT_FIND_WND_CLASS = 1407
543
+ ERROR_WINDOW_OF_OTHER_THREAD = 1408
544
+ ERROR_HOTKEY_ALREADY_REGISTERED = 1409
545
+ ERROR_CLASS_ALREADY_EXISTS = 1410
546
+ ERROR_CLASS_DOES_NOT_EXIST = 1411
547
+ ERROR_CLASS_HAS_WINDOWS = 1412
548
+ ERROR_INVALID_INDEX = 1413
549
+ ERROR_INVALID_ICON_HANDLE = 1414
550
+ ERROR_PRIVATE_DIALOG_INDEX = 1415
551
+ ERROR_LISTBOX_ID_NOT_FOUND = 1416
552
+ ERROR_NO_WILDCARD_CHARACTERS = 1417
553
+ ERROR_CLIPBOARD_NOT_OPEN = 1418
554
+ ERROR_HOTKEY_NOT_REGISTERED = 1419
555
+ ERROR_WINDOW_NOT_DIALOG = 1420
556
+ ERROR_CONTROL_ID_NOT_FOUND = 1421
557
+ ERROR_INVALID_COMBOBOX_MESSAGE = 1422
558
+ ERROR_WINDOW_NOT_COMBOBOX = 1423
559
+ ERROR_INVALID_EDIT_HEIGHT = 1424
560
+ ERROR_DC_NOT_FOUND = 1425
561
+ ERROR_INVALID_HOOK_FILTER = 1426
562
+ ERROR_INVALID_FILTER_PROC = 1427
563
+ ERROR_HOOK_NEEDS_HMOD = 1428
564
+ ERROR_GLOBAL_ONLY_HOOK = 1429
565
+ ERROR_JOURNAL_HOOK_SET = 1430
566
+ ERROR_HOOK_NOT_INSTALLED = 1431
567
+ ERROR_INVALID_LB_MESSAGE = 1432
568
+ ERROR_SETCOUNT_ON_BAD_LB = 1433
569
+ ERROR_LB_WITHOUT_TABSTOPS = 1434
570
+ ERROR_DESTROY_OBJECT_OF_OTHER_THREAD = 1435
571
+ ERROR_CHILD_WINDOW_MENU = 1436
572
+ ERROR_NO_SYSTEM_MENU = 1437
573
+ ERROR_INVALID_MSGBOX_STYLE = 1438
574
+ ERROR_INVALID_SPI_VALUE = 1439
575
+ ERROR_SCREEN_ALREADY_LOCKED = 1440
576
+ ERROR_HWNDS_HAVE_DIFF_PARENT = 1441
577
+ ERROR_NOT_CHILD_WINDOW = 1442
578
+ ERROR_INVALID_GW_COMMAND = 1443
579
+ ERROR_INVALID_THREAD_ID = 1444
580
+ ERROR_NON_MDICHILD_WINDOW = 1445
581
+ ERROR_POPUP_ALREADY_ACTIVE = 1446
582
+ ERROR_NO_SCROLLBARS = 1447
583
+ ERROR_INVALID_SCROLLBAR_RANGE = 1448
584
+ ERROR_INVALID_SHOWWIN_COMMAND = 1449
585
+ ERROR_NO_SYSTEM_RESOURCES = 1450
586
+ ERROR_NONPAGED_SYSTEM_RESOURCES = 1451
587
+ ERROR_PAGED_SYSTEM_RESOURCES = 1452
588
+ ERROR_WORKING_SET_QUOTA = 1453
589
+ ERROR_PAGEFILE_QUOTA = 1454
590
+ ERROR_COMMITMENT_LIMIT = 1455
591
+ ERROR_MENU_ITEM_NOT_FOUND = 1456
592
+ ERROR_INVALID_KEYBOARD_HANDLE = 1457
593
+ ERROR_HOOK_TYPE_NOT_ALLOWED = 1458
594
+ ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION = 1459
595
+ ERROR_TIMEOUT = 1460
596
+ ERROR_INVALID_MONITOR_HANDLE = 1461
597
+ ERROR_EVENTLOG_FILE_CORRUPT = 1500
598
+ ERROR_EVENTLOG_CANT_START = 1501
599
+ ERROR_LOG_FILE_FULL = 1502
600
+ ERROR_EVENTLOG_FILE_CHANGED = 1503
601
+ ERROR_INVALID_TASK_NAME = 1550
602
+ ERROR_INVALID_TASK_INDEX = 1551
603
+ ERROR_THREAD_ALREADY_IN_TASK = 1552
604
+ ERROR_INSTALL_SERVICE_FAILURE = 1601
605
+ ERROR_INSTALL_USEREXIT = 1602
606
+ ERROR_INSTALL_FAILURE = 1603
607
+ ERROR_INSTALL_SUSPEND = 1604
608
+ ERROR_UNKNOWN_PRODUCT = 1605
609
+ ERROR_UNKNOWN_FEATURE = 1606
610
+ ERROR_UNKNOWN_COMPONENT = 1607
611
+ ERROR_UNKNOWN_PROPERTY = 1608
612
+ ERROR_INVALID_HANDLE_STATE = 1609
613
+ ERROR_BAD_CONFIGURATION = 1610
614
+ ERROR_INDEX_ABSENT = 1611
615
+ ERROR_INSTALL_SOURCE_ABSENT = 1612
616
+ ERROR_INSTALL_PACKAGE_VERSION = 1613
617
+ ERROR_PRODUCT_UNINSTALLED = 1614
618
+ ERROR_BAD_QUERY_SYNTAX = 1615
619
+ ERROR_INVALID_FIELD = 1616
620
+ ERROR_DEVICE_REMOVED = 1617
621
+ ERROR_INSTALL_ALREADY_RUNNING = 1618
622
+ ERROR_INSTALL_PACKAGE_OPEN_FAILED = 1619
623
+ ERROR_INSTALL_PACKAGE_INVALID = 1620
624
+ ERROR_INSTALL_UI_FAILURE = 1621
625
+ ERROR_INSTALL_LOG_FAILURE = 1622
626
+ ERROR_INSTALL_LANGUAGE_UNSUPPORTED = 1623
627
+ ERROR_INSTALL_TRANSFORM_FAILURE = 1624
628
+ ERROR_INSTALL_PACKAGE_REJECTED = 1625
629
+ ERROR_FUNCTION_NOT_CALLED = 1626
630
+ ERROR_FUNCTION_FAILED = 1627
631
+ ERROR_INVALID_TABLE = 1628
632
+ ERROR_DATATYPE_MISMATCH = 1629
633
+ ERROR_UNSUPPORTED_TYPE = 1630
634
+ ERROR_CREATE_FAILED = 1631
635
+ ERROR_INSTALL_TEMP_UNWRITABLE = 1632
636
+ ERROR_INSTALL_PLATFORM_UNSUPPORTED = 1633
637
+ ERROR_INSTALL_NOTUSED = 1634
638
+ ERROR_PATCH_PACKAGE_OPEN_FAILED = 1635
639
+ ERROR_PATCH_PACKAGE_INVALID = 1636
640
+ ERROR_PATCH_PACKAGE_UNSUPPORTED = 1637
641
+ ERROR_PRODUCT_VERSION = 1638
642
+ ERROR_INVALID_COMMAND_LINE = 1639
643
+ ERROR_INSTALL_REMOTE_DISALLOWED = 1640
644
+ ERROR_SUCCESS_REBOOT_INITIATED = 1641
645
+ ERROR_UNKNOWN_PATCH = 1647
646
+ RPC_S_INVALID_STRING_BINDING = 1700
647
+ RPC_S_WRONG_KIND_OF_BINDING = 1701
648
+ RPC_S_INVALID_BINDING = 1702
649
+ RPC_S_PROTSEQ_NOT_SUPPORTED = 1703
650
+ RPC_S_INVALID_RPC_PROTSEQ = 1704
651
+ RPC_S_INVALID_STRING_UUID = 1705
652
+ RPC_S_INVALID_ENDPOINT_FORMAT = 1706
653
+ RPC_S_INVALID_NET_ADDR = 1707
654
+ RPC_S_NO_ENDPOINT_FOUND = 1708
655
+ RPC_S_INVALID_TIMEOUT = 1709
656
+ RPC_S_OBJECT_NOT_FOUND = 1710
657
+ RPC_S_ALREADY_REGISTERED = 1711
658
+ RPC_S_TYPE_ALREADY_REGISTERED = 1712
659
+ RPC_S_ALREADY_LISTENING = 1713
660
+ RPC_S_NO_PROTSEQS_REGISTERED = 1714
661
+ RPC_S_NOT_LISTENING = 1715
662
+ RPC_S_UNKNOWN_MGR_TYPE = 1716
663
+ RPC_S_UNKNOWN_IF = 1717
664
+ RPC_S_NO_BINDINGS = 1718
665
+ RPC_S_NO_PROTSEQS = 1719
666
+ RPC_S_CANT_CREATE_ENDPOINT = 1720
667
+ RPC_S_OUT_OF_RESOURCES = 1721
668
+ RPC_S_SERVER_UNAVAILABLE = 1722
669
+ RPC_S_SERVER_TOO_BUSY = 1723
670
+ RPC_S_INVALID_NETWORK_OPTIONS = 1724
671
+ RPC_S_NO_CALL_ACTIVE = 1725
672
+ RPC_S_CALL_FAILED = 1726
673
+ RPC_S_CALL_FAILED_DNE = 1727
674
+ RPC_S_PROTOCOL_ERROR = 1728
675
+ RPC_S_UNSUPPORTED_TRANS_SYN = 1730
676
+ RPC_S_UNSUPPORTED_TYPE = 1732
677
+ RPC_S_INVALID_TAG = 1733
678
+ RPC_S_INVALID_BOUND = 1734
679
+ RPC_S_NO_ENTRY_NAME = 1735
680
+ RPC_S_INVALID_NAME_SYNTAX = 1736
681
+ RPC_S_UNSUPPORTED_NAME_SYNTAX = 1737
682
+ RPC_S_UUID_NO_ADDRESS = 1739
683
+ RPC_S_DUPLICATE_ENDPOINT = 1740
684
+ RPC_S_UNKNOWN_AUTHN_TYPE = 1741
685
+ RPC_S_MAX_CALLS_TOO_SMALL = 1742
686
+ RPC_S_STRING_TOO_LONG = 1743
687
+ RPC_S_PROTSEQ_NOT_FOUND = 1744
688
+ RPC_S_PROCNUM_OUT_OF_RANGE = 1745
689
+ RPC_S_BINDING_HAS_NO_AUTH = 1746
690
+ RPC_S_UNKNOWN_AUTHN_SERVICE = 1747
691
+ RPC_S_UNKNOWN_AUTHN_LEVEL = 1748
692
+ RPC_S_INVALID_AUTH_IDENTITY = 1749
693
+ RPC_S_UNKNOWN_AUTHZ_SERVICE = 1750
694
+ EPT_S_INVALID_ENTRY = 1751
695
+ EPT_S_CANT_PERFORM_OP = 1752
696
+ EPT_S_NOT_REGISTERED = 1753
697
+ RPC_S_NOTHING_TO_EXPORT = 1754
698
+ RPC_S_INCOMPLETE_NAME = 1755
699
+ RPC_S_INVALID_VERS_OPTION = 1756
700
+ RPC_S_NO_MORE_MEMBERS = 1757
701
+ RPC_S_NOT_ALL_OBJS_UNEXPORTED = 1758
702
+ RPC_S_INTERFACE_NOT_FOUND = 1759
703
+ RPC_S_ENTRY_ALREADY_EXISTS = 1760
704
+ RPC_S_ENTRY_NOT_FOUND = 1761
705
+ RPC_S_NAME_SERVICE_UNAVAILABLE = 1762
706
+ RPC_S_INVALID_NAF_ID = 1763
707
+ RPC_S_CANNOT_SUPPORT = 1764
708
+ RPC_S_NO_CONTEXT_AVAILABLE = 1765
709
+ RPC_S_INTERNAL_ERROR = 1766
710
+ RPC_S_ZERO_DIVIDE = 1767
711
+ RPC_S_ADDRESS_ERROR = 1768
712
+ RPC_S_FP_DIV_ZERO = 1769
713
+ RPC_S_FP_UNDERFLOW = 1770
714
+ RPC_S_FP_OVERFLOW = 1771
715
+ RPC_X_NO_MORE_ENTRIES = 1772
716
+ RPC_X_SS_CHAR_TRANS_OPEN_FAIL = 1773
717
+ RPC_X_SS_CHAR_TRANS_SHORT_FILE = 1774
718
+ RPC_X_SS_IN_NULL_CONTEXT = 1775
719
+ RPC_X_SS_CONTEXT_DAMAGED = 1777
720
+ RPC_X_SS_HANDLES_MISMATCH = 1778
721
+ RPC_X_SS_CANNOT_GET_CALL_HANDLE = 1779
722
+ RPC_X_NULL_REF_POINTER = 1780
723
+ RPC_X_ENUM_VALUE_OUT_OF_RANGE = 1781
724
+ RPC_X_BYTE_COUNT_TOO_SMALL = 1782
725
+ RPC_X_BAD_STUB_DATA = 1783
726
+ ERROR_INVALID_USER_BUFFER = 1784
727
+ ERROR_UNRECOGNIZED_MEDIA = 1785
728
+ ERROR_NO_TRUST_LSA_SECRET = 1786
729
+ ERROR_NO_TRUST_SAM_ACCOUNT = 1787
730
+ ERROR_TRUSTED_DOMAIN_FAILURE = 1788
731
+ ERROR_TRUSTED_RELATIONSHIP_FAILURE = 1789
732
+ ERROR_TRUST_FAILURE = 1790
733
+ RPC_S_CALL_IN_PROGRESS = 1791
734
+ ERROR_NETLOGON_NOT_STARTED = 1792
735
+ ERROR_ACCOUNT_EXPIRED = 1793
736
+ ERROR_REDIRECTOR_HAS_OPEN_HANDLES = 1794
737
+ ERROR_PRINTER_DRIVER_ALREADY_INSTALLED= 1795
738
+ ERROR_UNKNOWN_PORT = 1796
739
+ ERROR_UNKNOWN_PRINTER_DRIVER = 1797
740
+ ERROR_UNKNOWN_PRINTPROCESSOR = 1798
741
+ ERROR_INVALID_SEPARATOR_FILE = 1799
742
+ ERROR_INVALID_PRIORITY = 1800
743
+ ERROR_INVALID_PRINTER_NAME = 1801
744
+ ERROR_PRINTER_ALREADY_EXISTS = 1802
745
+ ERROR_INVALID_PRINTER_COMMAND = 1803
746
+ ERROR_INVALID_DATATYPE = 1804
747
+ ERROR_INVALID_ENVIRONMENT = 1805
748
+ RPC_S_NO_MORE_BINDINGS = 1806
749
+ ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT = 1807
750
+ ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT = 1808
751
+ ERROR_NOLOGON_SERVER_TRUST_ACCOUNT = 1809
752
+ ERROR_DOMAIN_TRUST_INCONSISTENT = 1810
753
+ ERROR_SERVER_HAS_OPEN_HANDLES = 1811
754
+ ERROR_RESOURCE_DATA_NOT_FOUND = 1812
755
+ ERROR_RESOURCE_TYPE_NOT_FOUND = 1813
756
+ ERROR_RESOURCE_NAME_NOT_FOUND = 1814
757
+ ERROR_RESOURCE_LANG_NOT_FOUND = 1815
758
+ ERROR_NOT_ENOUGH_QUOTA = 1816
759
+ RPC_S_NO_INTERFACES = 1817
760
+ RPC_S_CALL_CANCELLED = 1818
761
+ RPC_S_BINDING_INCOMPLETE = 1819
762
+ RPC_S_COMM_FAILURE = 1820
763
+ RPC_S_UNSUPPORTED_AUTHN_LEVEL = 1821
764
+ RPC_S_NO_PRINC_NAME = 1822
765
+ RPC_S_NOT_RPC_ERROR = 1823
766
+ RPC_S_UUID_LOCAL_ONLY = 1824
767
+ RPC_S_SEC_PKG_ERROR = 1825
768
+ RPC_S_NOT_CANCELLED = 1826
769
+ RPC_X_INVALID_ES_ACTION = 1827
770
+ RPC_X_WRONG_ES_VERSION = 1828
771
+ RPC_X_WRONG_STUB_VERSION = 1829
772
+ RPC_X_INVALID_PIPE_OBJECT = 1830
773
+ RPC_X_WRONG_PIPE_ORDER = 1831
774
+ RPC_X_WRONG_PIPE_VERSION = 1832
775
+ RPC_S_GROUP_MEMBER_NOT_FOUND = 1898
776
+ EPT_S_CANT_CREATE = 1899
777
+ RPC_S_INVALID_OBJECT = 1900
778
+ ERROR_INVALID_TIME = 1901
779
+ ERROR_INVALID_FORM_NAME = 1902
780
+ ERROR_INVALID_FORM_SIZE = 1903
781
+ ERROR_ALREADY_WAITING = 1904
782
+ ERROR_PRINTER_DELETED = 1905
783
+ ERROR_INVALID_PRINTER_STATE = 1906
784
+ ERROR_PASSWORD_MUST_CHANGE = 1907
785
+ ERROR_DOMAIN_CONTROLLER_NOT_FOUND = 1908
786
+ ERROR_ACCOUNT_LOCKED_OUT = 1909
787
+ OR_INVALID_OXID = 1910
788
+ OR_INVALID_OID = 1911
789
+ OR_INVALID_SET = 1912
790
+ RPC_S_SEND_INCOMPLETE = 1913
791
+ RPC_S_INVALID_ASYNC_HANDLE = 1914
792
+ RPC_S_INVALID_ASYNC_CALL = 1915
793
+ RPC_X_PIPE_CLOSED = 1916
794
+ RPC_X_PIPE_DISCIPLINE_ERROR = 1917
795
+ RPC_X_PIPE_EMPTY = 1918
796
+ ERROR_NO_SITENAME = 1919
797
+ ERROR_CANT_ACCESS_FILE = 1920
798
+ ERROR_CANT_RESOLVE_FILENAME = 1921
799
+ RPC_S_ENTRY_TYPE_MISMATCH = 1922
800
+ RPC_S_NOT_ALL_OBJS_EXPORTED = 1923
801
+ RPC_S_INTERFACE_NOT_EXPORTED = 1924
802
+ RPC_S_PROFILE_NOT_ADDED = 1925
803
+ RPC_S_PRF_ELT_NOT_ADDED = 1926
804
+ RPC_S_PRF_ELT_NOT_REMOVED = 1927
805
+ RPC_S_GRP_ELT_NOT_ADDED = 1928
806
+ RPC_S_GRP_ELT_NOT_REMOVED = 1929
807
+ ERROR_KM_DRIVER_BLOCKED = 1930
808
+ ERROR_CONTEXT_EXPIRED = 1931
809
+ ERROR_PER_USER_TRUST_QUOTA_EXCEEDED = 1932
810
+ ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED = 1933
811
+ ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED= 1934
812
+ ERROR_AUTHENTICATION_FIREWALL_FAILED = 1935
813
+ ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED= 1936
814
+ ERROR_INVALID_PIXEL_FORMAT = 2000
815
+ ERROR_BAD_DRIVER = 2001
816
+ ERROR_INVALID_WINDOW_STYLE = 2002
817
+ ERROR_METAFILE_NOT_SUPPORTED = 2003
818
+ ERROR_TRANSFORM_NOT_SUPPORTED = 2004
819
+ ERROR_CLIPPING_NOT_SUPPORTED = 2005
820
+ ERROR_INVALID_CMM = 2010
821
+ ERROR_INVALID_PROFILE = 2011
822
+ ERROR_TAG_NOT_FOUND = 2012
823
+ ERROR_TAG_NOT_PRESENT = 2013
824
+ ERROR_DUPLICATE_TAG = 2014
825
+ ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE = 2015
826
+ ERROR_PROFILE_NOT_FOUND = 2016
827
+ ERROR_INVALID_COLORSPACE = 2017
828
+ ERROR_ICM_NOT_ENABLED = 2018
829
+ ERROR_DELETING_ICM_XFORM = 2019
830
+ ERROR_INVALID_TRANSFORM = 2020
831
+ ERROR_COLORSPACE_MISMATCH = 2021
832
+ ERROR_INVALID_COLORINDEX = 2022
833
+ ERROR_CONNECTED_OTHER_PASSWORD = 2108
834
+ ERROR_BAD_USERNAME = 2202
835
+ ERROR_NOT_CONNECTED = 2250
836
+ ERROR_OPEN_FILES = 2401
837
+ ERROR_ACTIVE_CONNECTIONS = 2402
838
+ ERROR_DEVICE_IN_USE = 2404
839
+ ERROR_UNKNOWN_PRINT_MONITOR = 3000
840
+ # :startdoc:
841
+
842
+ ERROR_USER_DEFINED_BASE = 0xF000
843
+
844
+ # Flags for FormatMessage function:
845
+
846
+ FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100
847
+ FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200
848
+ FORMAT_MESSAGE_FROM_STRING = 0x00000400
849
+ FORMAT_MESSAGE_FROM_HMODULE = 0x00000800
850
+ FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000
851
+ FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000
852
+ FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF
853
+
854
+ # Set/GetErrorMode values:
855
+
856
+ SEM_FAILCRITICALERRORS = 0x0001
857
+ SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
858
+ SEM_NOGPFAULTERRORBOX = 0x0002
859
+ SEM_NOOPENFILEERRORBOX = 0x8000
860
+
861
+ ##
862
+ # FormatMessage Function
863
+ # Formats a message string. The function requires a message definition as input. The message definition
864
+ # can come from a buffer passed into the function. It can come from a message table resource in an
865
+ # already-loaded module. Or the caller can ask the function to search the system's message table
866
+ # resource(s) for the message definition. The function finds the message definition in a message table
867
+ # resource based on a message identifier and a language identifier. The function copies the formatted
868
+ # message text to an output buffer, processing any embedded insert sequences if requested.
869
+ #
870
+ # [*Syntax*] DWORD WINAPI FormatMessage( DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD
871
+ # dwLanguageId, LPTSTR lpBuffer, DWORD nSize, va_list* Arguments );
872
+ #
873
+ # dwFlags:: [in] The formatting options, and how to interpret the lpSource parameter. The low-order byte of dwFlags
874
+ # specifies how the function handles line breaks in the output buffer. The low-order byte can also
875
+ # specify the maximum width of a formatted output line. Possible values:
876
+ # - FORMAT_MESSAGE_ALLOCATE_BUFFER - The lpBuffer parameter is a pointer to a PVOID pointer, and that
877
+ # the nSize parameter specifies the minimum number of TCHARs to allocate for an output message buffer.
878
+ # The function allocates a buffer large enough to hold the formatted message, and places a pointer to
879
+ # the allocated buffer at the address specified by lpBuffer. The caller should use the LocalFree
880
+ # function to free the buffer when it is no longer needed.
881
+ # - FORMAT_MESSAGE_ARGUMENT_ARRAY - The Arguments parameter is not a va_list structure, but is a pointer
882
+ # to an array of values that represent the arguments. This flag cannot be used with 64-bit integer
883
+ # values. If you are using a 64-bit integer, you must use the va_list structure.
884
+ # - FORMAT_MESSAGE_FROM_HMODULE - The lpSource parameter is a module handle containing the message-table
885
+ # resource(s) to search. If this lpSource handle is NULL, the current process's application image file
886
+ # will be searched. This flag cannot be used with FORMAT_MESSAGE_FROM_STRING. If the module has no
887
+ # message table resource, the function fails with ERROR_RESOURCE_TYPE_NOT_FOUND.
888
+ # - FORMAT_MESSAGE_FROM_STRING - The lpSource parameter is a pointer to a null-terminated string that
889
+ # contains a message definition. The message definition may contain insert sequences, just as the
890
+ # message text in a message table resource may. Cannot be used with FORMAT_MESSAGE_FROM_HMODULE or
891
+ # FORMAT_MESSAGE_FROM_SYSTEM.
892
+ # - FORMAT_MESSAGE_FROM_SYSTEM - The function should search the system message-table resource(s) for
893
+ # the requested message. If this flag is specified with FORMAT_MESSAGE_FROM_HMODULE, the function
894
+ # searches the system message table if the message is not found in the module specified by lpSource.
895
+ # This flag cannot be used with FORMAT_MESSAGE_FROM_STRING. If this flag is specified, an application
896
+ # can pass the result of the GetLastError function to retrieve the message text for a system error.
897
+ # - FORMAT_MESSAGE_IGNORE_INSERTS - Insert sequences in the message definition are to be ignored and
898
+ # passed through to the output buffer unchanged. This flag is useful for fetching a message for later
899
+ # formatting. If this flag is set, the Arguments parameter is ignored.
900
+ # <b>The low-order byte of dwFlags can specify the maximum width of a formatted output line. The
901
+ # following are possible values of the low-order byte:</b>
902
+ # - 0 - There are no output line width restrictions. The function stores line breaks that are in the
903
+ # message definition text into the output buffer.
904
+ # - FORMAT_MESSAGE_MAX_WIDTH_MASK - The function ignores regular line breaks in the message definition
905
+ # text. The function stores hard-coded line breaks in the message definition text into the output
906
+ # buffer. The function generates no new line breaks.
907
+ # If the low-order byte is a nonzero value other than FORMAT_MESSAGE_MAX_WIDTH_MASK, it specifies the
908
+ # maximum number of characters in an output line. The function ignores regular line breaks in the
909
+ # message definition text. The function never splits a string delimited by white space across a line
910
+ # break. The function stores hard-coded line breaks in the message definition text into the output
911
+ # buffer. Hard-coded line breaks are coded with the %n escape sequence.
912
+ # lpSource:: The location of the message definition. The type of this parameter depends upon the settings in the
913
+ # dwFlags parameter.
914
+ # - dwFlags FORMAT_MESSAGE_FROM_HMODULE: Handle to the module that contains the message table to search.
915
+ # - dwFlags FORMAT_MESSAGE_FROM_STRING: Pointer to a string that consists of unformatted message text.
916
+ # It will be scanned for inserts and formatted accordingly.
917
+ # - If neither of these flags is set in dwFlags, then lpSource is ignored.
918
+ # dwMessageId:: The message identifier for the requested message. This parameter is ignored if dwFlags includes
919
+ # FORMAT_MESSAGE_FROM_STRING.
920
+ # dwLanguageId:: The language identifier for the requested message. This parameter is ignored if dwFlags includes
921
+ # FORMAT_MESSAGE_FROM_STRING. If you pass a specific LANGID in this parameter, FormatMessage will
922
+ # return a message for that LANGID only. If the function cannot find a message for that LANGID, it
923
+ # returns ERROR_RESOURCE_LANG_NOT_FOUND. If you pass in zero, FormatMessage looks for a message for
924
+ # LANGIDs in the following order:
925
+ # 1. Language neutral
926
+ # 2. Thread LANGID, based on the thread's locale value
927
+ # 3. User default LANGID, based on the user's default locale value
928
+ # 4. System default LANGID, based on the system default locale value
929
+ # 5. US English
930
+ # If FormatMessage does not locate a message for any of the preceding LANGIDs, it returns any
931
+ # language message string that is present. If that fails, it returns ERROR_RESOURCE_LANG_NOT_FOUND.
932
+ # lpBuffer:: A pointer to a buffer that receives the null-terminated string that specifies the formatted message.
933
+ # If dwFlags includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the
934
+ # LocalAlloc function, and places the pointer to the buffer at the address specified in lpBuffer.
935
+ # This buffer cannot be larger than 64K bytes.
936
+ # nSize:: If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the size of the output
937
+ # buffer, in TCHARs. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum
938
+ # number of TCHARs to allocate for an output buffer. The output buffer cannot be larger than 64K bytes.
939
+ # Arguments:: An array of values that are used as insert values in the formatted message. A %1 in the format string
940
+ # indicates the first value in the Arguments array; a %2 indicates the second argument; and so on.
941
+ # The interpretation of each value depends on the formatting information associated with the insert in
942
+ # the message definition. The default is to treat each value as a pointer to a null-terminated string.
943
+ # By default, the Arguments parameter is of type va_list*, which is a language- and
944
+ # implementation-specific data type for describing a variable number of arguments. The state of the
945
+ # va_list argument is undefined upon return from the function. To use the va_list again, destroy the
946
+ # variable argument list pointer using va_end and reinitialize it with va_start.
947
+ # If you do not have a pointer of type va_list*, then specify the FORMAT_MESSAGE_ARGUMENT_ARRAY flag and
948
+ # pass a pointer to an array of DWORD_PTR values; those values are input to the message formatted as the
949
+ # insert values. Each insert must have a corresponding element in the array.
950
+ #
951
+ # *Returns*:: If the function succeeds, the return value is the number of TCHARs stored in the output
952
+ # buffer, excluding the terminating null character. If the function fails, the return value is zero.
953
+ # To get extended error information, call GetLastError.
954
+ # ---
955
+ # *Remarks*:
956
+ # Within the message text, several escape sequences are supported for dynamically formatting the
957
+ # message. These escape sequences and their meanings are shown in the following tables. All escape
958
+ # sequences start with the percent character (%).
959
+ # %0:: Terminates a message text line without a trailing new line character. This escape sequence can be
960
+ # used to build up long lines or to terminate the message itself without a trailing new line character.
961
+ # It is useful for prompt messages.
962
+ # %n!format string!:: Identifies an insert. The value of n can be in the range from 1 through 99. The format string
963
+ # (which must be surrounded by exclamation marks) is optional and defaults to !s! if not
964
+ # specified. For more information, see Format Specification Fields. The format string can
965
+ # include a width and precision specifier for strings and a width specifier for integers.
966
+ # Use an asterisk (*) to specify the width and precision. For example, %1!*.*s! or %1!*u!.
967
+ # If you do not use the width and precision specifiers, the insert numbers correspond directly
968
+ # to the input arguments. For example, if the source string is "%1 %2 %1" and the input
969
+ # arguments are "Bill" and "Bob", the formatted output string is "Bill Bob Bill".
970
+ # However, if you use a width and precision specifier, the insert numbers do not correspond
971
+ # directly to # the input arguments. For example, the insert numbers for the previous
972
+ # example could change to "%1!*.*s! %4 %5!*s!".
973
+ # The insert numbers depend on whether you use arguments array (FORMAT_MESSAGE_ARGUMENT_ARRAY)
974
+ # or a va_list. For an arguments array, the next insert number is n+2 if the previous format
975
+ # string contained one asterisk and is n+3 if two asterisks were specified. For a va_list,
976
+ # the next insert number is n+1 if the previous format string contained one asterisk and is n+2
977
+ # if two asterisks were specified. If you want to repeat "Bill", as in the previous example,
978
+ # the arguments must include "Bill" twice. E.g., if source string is "%1!*.*s! %4 %5!*s!",
979
+ # the arguments could be, 4, 2, Bill, Bob, 6, Bill (if using the FORMAT_MESSAGE_ARGUMENT_ARRAY).
980
+ # The formatted string would then be " Bi Bob Bill".
981
+ # Repeating insert numbers when the source string contains width and precision specifiers may
982
+ # not yield the intended results. If you replaced %5 with %1, the function would try to print
983
+ # a string at address 6 (likely resulting in an access violation).
984
+ # Floating-point format specifiers—e, E, f, and g—are not supported. The workaround is to use
985
+ # the StringCchPrintf function to format the floating-point number into a temporary buffer,
986
+ # then use that buffer as the insert string.
987
+ # Inserts that use the I64 prefix are treated as two 32-bit arguments. They must be used before
988
+ # subsequent arguments are used. Note that it may be easier for you to use StringCchPrintf
989
+ # instead of this prefix.
990
+ #
991
+ # Any other nondigit character following a percent character is formatted in the output message without the
992
+ # percent character. Following are some examples.
993
+ # %%:: A single percent sign.
994
+ # %space:: A single space. This format string can be used to ensure the appropriate number of trailing
995
+ # spaces in a message text line.
996
+ # %.:: A single period. This format string can be used to include a single period at the beginning of a
997
+ # line without terminating the message text definition.
998
+ # %!:: A single exclamation point. This format string can be used to include an exclamation point
999
+ # immediately after an insert without its being mistaken for the beginning of a format string.
1000
+ # %n:: A hard line break when the format string occurs at the end of a line. This format string is useful
1001
+ # when FormatMessage is supplying regular line breaks so the message fits in a certain width.
1002
+ # %r:: A hard carriage return without a trailing newline character.
1003
+ # %t:: A single tab.
1004
+ # ---
1005
+ # *Security* *Remarks*:
1006
+ # If this function is called without FORMAT_MESSAGE_IGNORE_INSERTS, the Arguments parameter must contain
1007
+ # enough parameters to satisfy all insertion sequences in the message string, and they must be of the
1008
+ # correct type. Therefore, do not use untrusted or unknown message strings with inserts enabled because
1009
+ # they can contain more insertion sequences than Arguments provides, or those they may be of the wrong
1010
+ # type. In particular, it is unsafe to take an arbitrary system error code returned from an API and use
1011
+ # FORMAT_MESSAGE_FROM_SYSTEM without FORMAT_MESSAGE_IGNORE_INSERTS.
1012
+ # ---
1013
+ # <b>Enhanced (snake_case) API: returns message instead of num_chars or *nil* if function fails</b>
1014
+ #
1015
+ # :call-seq:
1016
+ # message = format_message(dw_flags, lp_source, dw_message_id, dw_language_id, *args)
1017
+ #
1018
+ function :FormatMessage, [:DWORD, :LPCVOID, :DWORD, :DWORD, :LPTSTR, :DWORD, :varargs], :DWORD,
1019
+ &->(api, flags=FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
1020
+ source=nil, message_id=0, language_id=0, *args){
1021
+ buffer = FFI::MemoryPointer.new :char, 260
1022
+ args = [:int, 0] if args.empty?
1023
+ num_chars = api.call(flags, source, message_id, language_id, buffer, buffer.size, *args)
1024
+ num_chars == 0 ? nil : buffer.get_bytes(0, num_chars).strip }
1025
+
1026
+ ##
1027
+ # GetLastError Function
1028
+ # Retrieves the calling thread's last-error code value. The last-error code is maintained on a
1029
+ # per-thread basis. Multiple threads do not overwrite each other's last-error code.
1030
+ # Visual Basic: Applications should call err.LastDllError instead of GetLastError.
1031
+ #
1032
+ # [*Syntax*] DWORD WINAPI GetLastError( void );
1033
+ #
1034
+ # This function has no parameters.
1035
+ #
1036
+ # *Returns*:: The return value is the calling thread's last-error code.
1037
+ # The Return Value section of the documentation for each function that sets the last-error code notes
1038
+ # the conditions under which the function sets the last-error code. Most functions that set the thread's
1039
+ # last-error code set it when they fail. However, some functions also set the last-error code when they
1040
+ # succeed. If the function is not documented to set the last-error code, the value returned by this
1041
+ # function is simply the most recent last-error code to have been set; some functions set the last-error
1042
+ # code to 0 on success and others do not.
1043
+ # ---
1044
+ # *Remarks*:
1045
+ # Functions executed by the calling thread set this value by calling the SetLastError function. You
1046
+ # should call the GetLastError function immediately when a function's return value indicates that such a
1047
+ # call will return useful data. That is because some functions call SetLastError with a zero when they
1048
+ # succeed, wiping out the error code set by the most recently failed function.
1049
+ # To obtain an error string for system error codes, use the FormatMessage function. For a complete list
1050
+ # of error codes provided by the operating system, see System Error Codes.
1051
+ # The error codes returned by a function are not part of the Windows API specification and can vary by
1052
+ # operating system or device driver. For this reason, we cannot provide the complete list of error codes
1053
+ # that can be returned by each function. There are also many functions whose documentation does not
1054
+ # include even a partial list of error codes that can be returned.
1055
+ # Error codes are 32-bit values (bit 31 is the most significant bit). Bit 29 is reserved for
1056
+ # application-defined error codes; no system error code has this bit set. If you are defining an error
1057
+ # code for your application, set this bit to one. That indicates that the error code has been defined by
1058
+ # an application, and ensures that your error code does not conflict with any error codes defined by the
1059
+ # system.
1060
+ # To convert a system error into an HRESULT value, use the HRESULT_FROM_WIN32 macro.
1061
+ # ---
1062
+ # <b>Enhanced (snake_case) API: returns error message instead of error code</b>
1063
+ #
1064
+ # :call-seq:
1065
+ # error_message = get_last_error()
1066
+ #
1067
+ function :GetLastError, [], :uint32,
1068
+ &->(api) { error_code = api.call
1069
+ flags = FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY
1070
+ format_message(flags, nil, error_code)}
1071
+
1072
+ ##
1073
+ # SetLastError Function
1074
+ # Sets the last-error code for the calling thread.
1075
+ #
1076
+ # [*Syntax*] void WINAPI SetLastError( DWORD dwErrCode );
1077
+ #
1078
+ # dwErrCode:: [in] The last-error code for the thread.
1079
+ #
1080
+ # *Returns*:: This function does not return a value.
1081
+ # ---
1082
+ # *Remarks*:
1083
+ # - The last-error code is kept in thread local storage so that multiple threads do not overwrite each
1084
+ # other's values.
1085
+ # - This function is intended primarily for use by dynamic-link libraries (DLL). A DLL can provide the
1086
+ # applications that are using it with additional diagnostic information by calling this function after
1087
+ # an error occurs. Most functions call SetLastError or SetLastErrorEx only when they fail. However, some
1088
+ # system functions call SetLastError or SetLastErrorEx under conditions of success; those cases are
1089
+ # noted in each function's documentation.
1090
+ # - Applications can optionally retrieve the value set by this function by using the GetLastError function
1091
+ # immediately after a function fails.
1092
+ # - Error codes are 32-bit values (bit 31 is the most significant bit). Bit 29 is reserved for
1093
+ # application-defined error codes; no system error code has this bit set. If you are defining an error
1094
+ # code for your application, set this bit to indicate that the error code has been defined by your
1095
+ # application and to ensure that your error code does not conflict with any system-defined error codes.
1096
+ # ---
1097
+ # <b>Enhanced (snake_case) API: </b>
1098
+ #
1099
+ # :call-seq:
1100
+ # set_last_error(err_code)
1101
+ #
1102
+ function :SetLastError, [:DWORD], :void
1103
+
1104
+ ##
1105
+ # SetLastErrorEx Function sets the last-error code.
1106
+ # Currently, this function is identical to the SetLastError function. The second parameter is ignored.
1107
+ #
1108
+ # [*Syntax*] void WINAPI SetLastErrorEx( DWORD dwErrCode, DWORD dwType );
1109
+ #
1110
+ # dwErrCode:: The last-error code for the thread.
1111
+ # dwType:: This parameter is ignored.
1112
+ #
1113
+ # *Returns*:: This function does not return a value.
1114
+ # ---
1115
+ # *Remarks*:
1116
+ # The last-error code is kept in thread local storage so that multiple threads do not overwrite each
1117
+ # other's values.
1118
+ # This function is intended primarily for use by dynamic-link libraries (DLL). A DLL can provide the
1119
+ # applications that are using it with additional diagnostic information by calling this function after
1120
+ # an error occurs. Most functions call SetLastError or SetLastErrorEx only when they fail. However, some
1121
+ # system functions call SetLastError or SetLastErrorEx under conditions of success; those cases are
1122
+ # noted in each function's documentation.
1123
+ # Applications can optionally retrieve the value set by this function by using the GetLastError function
1124
+ # immediately after a function fails.
1125
+ # Error codes are 32-bit values (bit 31 is the most significant bit). Bit 29 is reserved for
1126
+ # application-defined error codes; no system error code has this bit set. If you are defining an error
1127
+ # code for your application, set this bit to indicate that the error code has been defined by the
1128
+ # application and to ensure that your error code does not conflict with any system-defined error codes.
1129
+ #
1130
+ # :call-seq:
1131
+ # set_last_error_ex(err_code, dw_type)
1132
+ #
1133
+ try_function :SetLastErrorEx, [:DWORD, :DWORD], :void
1134
+ # fails silently unless platform is XP++
1135
+
1136
+ ##
1137
+ # GetErrorMode Function
1138
+ # Retrieves the error mode for the current process.
1139
+ #
1140
+ # [*Syntax*] UINT WINAPI GetErrorMode( void );
1141
+ #
1142
+ # This function has no parameters.
1143
+ #
1144
+ # *Returns*:: The process error mode. This function returns one of the following values.
1145
+ # SEM_FAILCRITICALERRORS:: The system does not display the critical-error-handler message box. Instead,
1146
+ # the system sends the error to the calling process.
1147
+ # SEM_NOALIGNMENTFAULTEXCEPT:: The system automatically fixes memory alignment faults and makes them
1148
+ # invisible to the application. It does this for the calling process and
1149
+ # any descendant processes. This feature is only supported by certain
1150
+ # processor architectures. For more information, see the Remarks section.
1151
+ # After this value is set for a process, subsequent attempts to clear the
1152
+ # value are ignored.
1153
+ # SEM_NOGPFAULTERRORBOX:: The system does not display the general-protection-fault message box. This
1154
+ # flag should only be set by debugging applications that handle general
1155
+ # protection (GP) faults themselves with an exception handler.
1156
+ # SEM_NOOPENFILEERRORBOX:: The system does not display a message box when it fails to find a file.
1157
+ # Instead, the error is returned to the calling process.
1158
+ # ---
1159
+ # *Remarks*:
1160
+ # Each process has an associated error mode that indicates to the system how the application is going to
1161
+ # respond to serious errors. A child process inherits the error mode of its parent process.
1162
+ # To change the error mode for the process, use the SetErrorMode function.
1163
+ # ------
1164
+ # <b> Only works in Vista++! </b>
1165
+ # ------
1166
+ # :call-seq:
1167
+ # mode = get_error_mode()
1168
+ #
1169
+ try_function :GetErrorMode, [], :uint
1170
+ # fails silently unless platform is Vista++
1171
+
1172
+ ##
1173
+ # SetErrorMode Function controls whether the system will handle the specified types of serious errors or whether
1174
+ # the process will handle them.
1175
+ #
1176
+ # [*Syntax*] UINT WINAPI SetErrorMode( UINT uMode );
1177
+ #
1178
+ # uMode:: The process error mode. This parameter can be one or more of the following values.
1179
+ # 0:: Use the system default, which is to display all error dialog boxes.
1180
+ # SEM_FAILCRITICALERRORS:: The system does not display the critical-error-handler message box. Instead,
1181
+ # the system sends the error to the calling process.
1182
+ # SEM_NOALIGNMENTFAULTEXCEPT:: The system automatically fixes memory alignment faults and makes them
1183
+ # invisible to the application. It does this for the calling process and any
1184
+ # descendant processes. This feature is only supported by certain processor
1185
+ # architectures. For more information, see the Remarks section.
1186
+ # After this value is set for a process, subsequent attempts to clear the
1187
+ # value are ignored.
1188
+ # SEM_NOGPFAULTERRORBOX:: The system does not display the general-protection-fault message box. This flag
1189
+ # should only be set by debugging applications that handle general protection (GP)
1190
+ # faults themselves with an exception handler.
1191
+ # SEM_NOOPENFILEERRORBOX:: The system does not display a message box when it fails to find a file. Instead,
1192
+ # the error is returned to the calling process.
1193
+ #
1194
+ # *Returns*:: The return value is the previous state of the error-mode bit flags.
1195
+ # ---
1196
+ # *Remarks*:
1197
+ # Each process has an associated error mode that indicates to the system how the application is going to
1198
+ # respond to serious errors. A child process inherits the error mode of its parent process. To retrieve
1199
+ # the process error mode, use the GetErrorMode function.
1200
+ # Because the error mode is set for the entire process, you must ensure that multi-threaded applications
1201
+ # do not set different error-mode flags. Doing so can lead to inconsistent error handling.
1202
+ # The system does not make alignment faults visible to an application on all processor architectures.
1203
+ # Therefore, specifying SEM_NOALIGNMENTFAULTEXCEPT is not an error on such architectures, but the system
1204
+ # is free to silently ignore the request. This means that code sequences such as the following are not
1205
+ # always valid on x86 computers:
1206
+ #
1207
+ # SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT);
1208
+ # fuOldErrorMode = SetErrorMode(0);
1209
+ # ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
1210
+ #
1211
+ # Itanium:: An application must explicitly call SetErrorMode with SEM_NOALIGNMENTFAULTEXCEPT to have the
1212
+ # system automatically fix alignment faults. The default setting is for the system to make alignment
1213
+ # faults visible to an application.
1214
+ # Visual Studio 2005:: When declaring a pointer to a structure that may not have aligned data, you can use
1215
+ # __unaligned keyword to indicate that the type must be read one byte at a time. For more
1216
+ # information, see Windows Data Alignment.
1217
+ #
1218
+ # :call-seq:
1219
+ # success = set_error_mode(mode)
1220
+ #
1221
+ function :SetErrorMode, [:UINT], :UINT
1222
+
1223
+ end
1224
1224
  end