windows-pr 1.2.1 → 1.2.2
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/CHANGES +438 -429
- data/README +5 -1
- data/lib/windows/clipboard.rb +61 -61
- data/lib/windows/com.rb +192 -192
- data/lib/windows/com/accessibility.rb +16 -16
- data/lib/windows/directory.rb +27 -27
- data/lib/windows/error.rb +498 -484
- data/lib/windows/eventlog.rb +80 -80
- data/lib/windows/filesystem.rb +15 -15
- data/lib/windows/handle.rb +23 -23
- data/lib/windows/library.rb +44 -44
- data/lib/windows/mailslot.rb +24 -24
- data/lib/windows/memory.rb +128 -128
- data/lib/windows/msvcrt/io.rb +73 -73
- data/lib/windows/msvcrt/string.rb +182 -182
- data/lib/windows/nio.rb +50 -50
- data/lib/windows/ntfs/winternl.rb +117 -110
- data/lib/windows/process.rb +176 -176
- data/lib/windows/socket.rb +86 -86
- data/lib/windows/system_info.rb +229 -229
- data/lib/windows/thread.rb +64 -64
- data/lib/windows/unicode.rb +155 -155
- data/lib/windows/wsa.rb +102 -102
- data/test/tc_msvcrt_buffer.rb +11 -7
- data/test/tc_ntfs_winternl.rb +48 -44
- data/test/tc_unicode.rb +83 -83
- data/windows-pr.gemspec +34 -34
- metadata +50 -63
@@ -1,16 +1,16 @@
|
|
1
|
-
require 'windows/api'
|
2
|
-
|
3
|
-
module Windows
|
4
|
-
module COM
|
5
|
-
module Accessibility
|
6
|
-
API.auto_namespace = 'Windows::COM::Accessibility'
|
7
|
-
API.auto_constant = true
|
8
|
-
API.auto_method = true
|
9
|
-
API.auto_unicode = false
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
API.new('ObjectFromLresult', 'LPIP', 'L', 'oleacc')
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
1
|
+
require 'windows/api'
|
2
|
+
|
3
|
+
module Windows
|
4
|
+
module COM
|
5
|
+
module Accessibility
|
6
|
+
API.auto_namespace = 'Windows::COM::Accessibility'
|
7
|
+
API.auto_constant = true
|
8
|
+
API.auto_method = true
|
9
|
+
API.auto_unicode = false
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
API.new('ObjectFromLresult', 'LPIP', 'L', 'oleacc')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/windows/directory.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
require 'windows/api'
|
2
|
-
|
3
|
-
# The Windows::Directory module contains functions that are used in directory
|
4
|
-
# management. Note that functions that could be applied to files or
|
5
|
-
# directories, such as CreateFile(), are probably in the Windows::File
|
6
|
-
# module.
|
7
|
-
#
|
8
|
-
module Windows
|
9
|
-
module Directory
|
10
|
-
API.auto_namespace = 'Windows::Directory'
|
11
|
-
API.auto_constant = true
|
12
|
-
API.auto_method = true
|
13
|
-
API.auto_unicode = true
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
API.new('CreateDirectory', 'PP', 'B')
|
18
|
-
API.new('CreateDirectoryEx', 'PPP', 'B')
|
19
|
-
API.new('FindCloseChangeNotification', 'L', 'B')
|
20
|
-
API.new('FindFirstChangeNotification', 'PIL', 'L')
|
21
|
-
API.new('FindNextChangeNotification', 'PIL', 'B')
|
22
|
-
API.new('GetCurrentDirectory', 'LP', 'L')
|
23
|
-
API.new('ReadDirectoryChangesW', 'LPLILPPP', 'B') # No ANSI equivalent
|
24
|
-
API.new('RemoveDirectory', 'P', 'B')
|
25
|
-
API.new('SetCurrentDirectory', 'P', 'B')
|
26
|
-
end
|
27
|
-
end
|
1
|
+
require 'windows/api'
|
2
|
+
|
3
|
+
# The Windows::Directory module contains functions that are used in directory
|
4
|
+
# management. Note that functions that could be applied to files or
|
5
|
+
# directories, such as CreateFile(), are probably in the Windows::File
|
6
|
+
# module.
|
7
|
+
#
|
8
|
+
module Windows
|
9
|
+
module Directory
|
10
|
+
API.auto_namespace = 'Windows::Directory'
|
11
|
+
API.auto_constant = true
|
12
|
+
API.auto_method = true
|
13
|
+
API.auto_unicode = true
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
API.new('CreateDirectory', 'PP', 'B')
|
18
|
+
API.new('CreateDirectoryEx', 'PPP', 'B')
|
19
|
+
API.new('FindCloseChangeNotification', 'L', 'B')
|
20
|
+
API.new('FindFirstChangeNotification', 'PIL', 'L')
|
21
|
+
API.new('FindNextChangeNotification', 'PIL', 'B')
|
22
|
+
API.new('GetCurrentDirectory', 'LP', 'L')
|
23
|
+
API.new('ReadDirectoryChangesW', 'LPLILPPP', 'B') # No ANSI equivalent
|
24
|
+
API.new('RemoveDirectory', 'P', 'B')
|
25
|
+
API.new('SetCurrentDirectory', 'P', 'B')
|
26
|
+
end
|
27
|
+
end
|
data/lib/windows/error.rb
CHANGED
@@ -1,484 +1,498 @@
|
|
1
|
-
############################################################################
|
2
|
-
# error.rb
|
3
|
-
#
|
4
|
-
# Includes all of the error codes in error.h, msterr.h and some from
|
5
|
-
# winerror.h.
|
6
|
-
#
|
7
|
-
# Adds the following convenience methods:
|
8
|
-
#
|
9
|
-
# get_last_error - Returns a human readable string for the error returned
|
10
|
-
# by the GetLastError() function.
|
11
|
-
############################################################################
|
12
|
-
require 'windows/api'
|
13
|
-
|
14
|
-
module Windows
|
15
|
-
module Error
|
16
|
-
API.auto_namespace = 'Windows::Error'
|
17
|
-
API.auto_method = true
|
18
|
-
API.auto_constant = true
|
19
|
-
API.auto_unicode = true
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100
|
24
|
-
FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200
|
25
|
-
FORMAT_MESSAGE_FROM_STRING = 0x00000400
|
26
|
-
FORMAT_MESSAGE_FROM_HMODULE = 0x00000800
|
27
|
-
FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000
|
28
|
-
FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000
|
29
|
-
FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF
|
30
|
-
|
31
|
-
SEM_FAILCRITICALERRORS = 0x0001
|
32
|
-
SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
|
33
|
-
SEM_NOGPFAULTERRORBOX = 0x0002
|
34
|
-
SEM_NOOPENFILEERRORBOX = 0x8000
|
35
|
-
|
36
|
-
S_OK = 0
|
37
|
-
NO_ERROR = 0
|
38
|
-
ERROR_SUCCESS = 0
|
39
|
-
ERROR_INVALID_FUNCTION = 1
|
40
|
-
ERROR_FILE_NOT_FOUND = 2
|
41
|
-
ERROR_PATH_NOT_FOUND = 3
|
42
|
-
ERROR_TOO_MANY_OPEN_FILES = 4
|
43
|
-
ERROR_ACCESS_DENIED = 5
|
44
|
-
ERROR_INVALID_HANDLE = 6
|
45
|
-
ERROR_ARENA_TRASHED = 7
|
46
|
-
ERROR_NOT_ENOUGH_MEMORY = 8
|
47
|
-
ERROR_INVALID_BLOCK = 9
|
48
|
-
ERROR_BAD_ENVIRONMENT = 10
|
49
|
-
ERROR_BAD_FORMAT = 11
|
50
|
-
ERROR_INVALID_ACCESS = 12
|
51
|
-
ERROR_INVALID_DATA = 13
|
52
|
-
ERROR_INVALID_DRIVE = 15
|
53
|
-
ERROR_CURRENT_DIRECTORY = 16
|
54
|
-
ERROR_NOT_SAME_DEVICE = 17
|
55
|
-
ERROR_NO_MORE_FILES = 18
|
56
|
-
|
57
|
-
ERROR_WRITE_PROTECT = 19
|
58
|
-
ERROR_BAD_UNIT = 20
|
59
|
-
ERROR_NOT_READY = 21
|
60
|
-
ERROR_BAD_COMMAND = 22
|
61
|
-
ERROR_CRC = 23
|
62
|
-
ERROR_BAD_LENGTH = 24
|
63
|
-
ERROR_SEEK = 25
|
64
|
-
ERROR_NOT_DOS_DISK = 26
|
65
|
-
ERROR_SECTOR_NOT_FOUND = 27
|
66
|
-
ERROR_OUT_OF_PAPER = 28
|
67
|
-
ERROR_WRITE_FAULT = 29
|
68
|
-
ERROR_READ_FAULT = 30
|
69
|
-
ERROR_GEN_FAILURE = 31
|
70
|
-
|
71
|
-
ERROR_SHARING_VIOLATION = 32
|
72
|
-
ERROR_LOCK_VIOLATION = 33
|
73
|
-
ERROR_WRONG_DISK = 34
|
74
|
-
ERROR_FCB_UNAVAILABLE = 35
|
75
|
-
ERROR_SHARING_BUFFER_EXCEEDED = 36
|
76
|
-
ERROR_HANDLE_EOF = 38
|
77
|
-
ERROR_HANDLE_DISK_FULL = 39
|
78
|
-
|
79
|
-
ERROR_NOT_SUPPORTED = 50
|
80
|
-
|
81
|
-
ERROR_FILE_EXISTS = 80
|
82
|
-
ERROR_DUP_FCB = 81
|
83
|
-
ERROR_CANNOT_MAKE = 82
|
84
|
-
ERROR_FAIL_I24 = 83
|
85
|
-
|
86
|
-
ERROR_OUT_OF_STRUCTURES = 84
|
87
|
-
ERROR_ALREADY_ASSIGNED = 85
|
88
|
-
ERROR_INVALID_PASSWORD = 86
|
89
|
-
ERROR_INVALID_PARAMETER = 87
|
90
|
-
ERROR_NET_WRITE_FAULT = 88
|
91
|
-
|
92
|
-
ERROR_NO_PROC_SLOTS = 89 # no process slots available
|
93
|
-
ERROR_NOT_FROZEN = 90
|
94
|
-
ERR_TSTOVFL = 91 # timer service table overflow
|
95
|
-
ERR_TSTDUP = 92 # timer service table duplicate
|
96
|
-
ERROR_NO_ITEMS = 93 # There were no items to operate upon
|
97
|
-
ERROR_INTERRUPT = 95 # interrupted system call
|
98
|
-
|
99
|
-
ERROR_TOO_MANY_SEMAPHORES = 100
|
100
|
-
ERROR_EXCL_SEM_ALREADY_OWNED = 101
|
101
|
-
ERROR_SEM_IS_SET = 102
|
102
|
-
ERROR_TOO_MANY_SEM_REQUESTS = 103
|
103
|
-
ERROR_INVALID_AT_INTERRUPT_TIME = 104
|
104
|
-
|
105
|
-
ERROR_SEM_OWNER_DIED = 105 # waitsem found owner died
|
106
|
-
ERROR_SEM_USER_LIMIT = 106 # too many procs have this sem
|
107
|
-
ERROR_DISK_CHANGE = 107 # insert disk b into drive a
|
108
|
-
ERROR_DRIVE_LOCKED = 108 # drive locked by another process
|
109
|
-
ERROR_BROKEN_PIPE = 109 # write on pipe with no reader
|
110
|
-
|
111
|
-
ERROR_OPEN_FAILED = 110 # open/created failed
|
112
|
-
ERROR_DISK_FULL = 112 # not enough space
|
113
|
-
ERROR_NO_MORE_SEARCH_HANDLES = 113 # can't allocate
|
114
|
-
ERROR_INVALID_TARGET_HANDLE = 114 # handle in DOSDUPHANDLE is invalid
|
115
|
-
ERROR_PROTECTION_VIOLATION = 115 # bad user virtual address
|
116
|
-
ERROR_VIOKBD_REQUEST = 116
|
117
|
-
ERROR_INVALID_CATEGORY = 117 # category for DEVIOCTL not defined
|
118
|
-
ERROR_INVALID_VERIFY_SWITCH = 118 # invalid value
|
119
|
-
ERROR_BAD_DRIVER_LEVEL = 119 # DosDevIOCTL not level four
|
120
|
-
ERROR_CALL_NOT_IMPLEMENTED = 120
|
121
|
-
ERROR_SEM_TIMEOUT = 121 # timeout from semaphore function
|
122
|
-
ERROR_INSUFFICIENT_BUFFER = 122
|
123
|
-
|
124
|
-
ERROR_INVALID_NAME = 123 # illegal char or malformed file system name
|
125
|
-
ERROR_INVALID_LEVEL = 124 # unimplemented level for info retrieval
|
126
|
-
ERROR_NO_VOLUME_LABEL = 125 # no volume label found
|
127
|
-
ERROR_MOD_NOT_FOUND = 126 # w_getprocaddr, w_getmodhandle
|
128
|
-
ERROR_PROC_NOT_FOUND = 127 # w_getprocaddr
|
129
|
-
|
130
|
-
ERROR_WAIT_NO_CHILDREN = 128 # CWait finds to children
|
131
|
-
ERROR_CHILD_NOT_COMPLETE = 129 # CWait children not dead yet
|
132
|
-
|
133
|
-
ERROR_DIRECT_ACCESS_HANDLE = 130 # invalid for direct disk access
|
134
|
-
ERROR_NEGATIVE_SEEK = 131 # tried to seek negative offset
|
135
|
-
ERROR_SEEK_ON_DEVICE = 132 # tried to seek on device or pipe
|
136
|
-
|
137
|
-
ERROR_IS_JOIN_TARGET = 133
|
138
|
-
ERROR_IS_JOINED = 134
|
139
|
-
ERROR_IS_SUBSTED = 135
|
140
|
-
ERROR_NOT_JOINED = 136
|
141
|
-
ERROR_NOT_SUBSTED = 137
|
142
|
-
ERROR_JOIN_TO_JOIN = 138
|
143
|
-
ERROR_SUBST_TO_SUBST = 139
|
144
|
-
ERROR_JOIN_TO_SUBST = 140
|
145
|
-
ERROR_SUBST_TO_JOIN = 141
|
146
|
-
ERROR_BUSY_DRIVE = 142
|
147
|
-
ERROR_SAME_DRIVE = 143
|
148
|
-
ERROR_DIR_NOT_ROOT = 144
|
149
|
-
ERROR_DIR_NOT_EMPTY = 145
|
150
|
-
ERROR_IS_SUBST_PATH = 146
|
151
|
-
ERROR_IS_JOIN_PATH = 147
|
152
|
-
ERROR_PATH_BUSY = 148
|
153
|
-
ERROR_IS_SUBST_TARGET = 149
|
154
|
-
ERROR_SYSTEM_TRACE = 150 # system trace error
|
155
|
-
ERROR_INVALID_EVENT_COUNT = 151 # DosMuxSemWait errors
|
156
|
-
ERROR_TOO_MANY_MUXWAITERS = 152
|
157
|
-
ERROR_INVALID_LIST_FORMAT = 153
|
158
|
-
ERROR_LABEL_TOO_LONG = 154
|
159
|
-
ERROR_TOO_MANY_TCBS = 155
|
160
|
-
ERROR_SIGNAL_REFUSED = 156
|
161
|
-
ERROR_DISCARDED = 157
|
162
|
-
ERROR_NOT_LOCKED = 158
|
163
|
-
ERROR_BAD_THREADID_ADDR = 159
|
164
|
-
ERROR_BAD_ARGUMENTS = 160
|
165
|
-
ERROR_BAD_PATHNAME = 161
|
166
|
-
ERROR_SIGNAL_PENDING = 162
|
167
|
-
ERROR_UNCERTAIN_MEDIA = 163
|
168
|
-
ERROR_MAX_THRDS_REACHED = 164
|
169
|
-
ERROR_MONITORS_NOT_SUPPORTED = 165
|
170
|
-
|
171
|
-
ERROR_INVALID_SEGMENT_NUMBER = 180
|
172
|
-
ERROR_INVALID_CALLGATE = 181
|
173
|
-
ERROR_INVALID_ORDINAL = 182
|
174
|
-
ERROR_ALREADY_EXISTS = 183
|
175
|
-
ERROR_NO_CHILD_PROCESS = 184
|
176
|
-
ERROR_CHILD_ALIVE_NOWAIT = 185
|
177
|
-
ERROR_INVALID_FLAG_NUMBER = 186
|
178
|
-
ERROR_SEM_NOT_FOUND = 187
|
179
|
-
|
180
|
-
ERROR_INVALID_STARTING_CODESEG = 188
|
181
|
-
ERROR_INVALID_STACKSEG = 189
|
182
|
-
ERROR_INVALID_MODULETYPE = 190
|
183
|
-
ERROR_INVALID_EXE_SIGNATURE = 191
|
184
|
-
ERROR_EXE_MARKED_INVALID = 192
|
185
|
-
ERROR_BAD_EXE_FORMAT = 193
|
186
|
-
ERROR_ITERATED_DATA_EXCEEDS_64k = 194
|
187
|
-
ERROR_INVALID_MINALLOCSIZE = 195
|
188
|
-
ERROR_DYNLINK_FROM_INVALID_RING = 196
|
189
|
-
ERROR_IOPL_NOT_ENABLED = 197
|
190
|
-
ERROR_INVALID_SEGDPL = 198
|
191
|
-
ERROR_AUTODATASEG_EXCEEDS_64k = 199
|
192
|
-
ERROR_RING2SEG_MUST_BE_MOVABLE = 200
|
193
|
-
ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201
|
194
|
-
ERROR_INFLOOP_IN_RELOC_CHAIN = 202
|
195
|
-
|
196
|
-
ERROR_ENVVAR_NOT_FOUND = 203
|
197
|
-
ERROR_NOT_CURRENT_CTRY = 204
|
198
|
-
ERROR_NO_SIGNAL_SENT = 205
|
199
|
-
ERROR_FILENAME_EXCED_RANGE = 206 # if filename > 8.3
|
200
|
-
ERROR_RING2_STACK_IN_USE = 207 # for FAPI
|
201
|
-
ERROR_META_EXPANSION_TOO_LONG = 208 # if "*a" > 8.3
|
202
|
-
|
203
|
-
ERROR_INVALID_SIGNAL_NUMBER = 209
|
204
|
-
ERROR_THREAD_1_INACTIVE = 210
|
205
|
-
ERROR_INFO_NOT_AVAIL = 211 #@@ PTM 5550
|
206
|
-
ERROR_LOCKED = 212
|
207
|
-
ERROR_BAD_DYNALINK = 213 #@@ PTM 5760
|
208
|
-
ERROR_TOO_MANY_MODULES = 214
|
209
|
-
ERROR_NESTING_NOT_ALLOWED = 215
|
210
|
-
ERROR_BAD_PIPE = 230
|
211
|
-
ERROR_PIPE_BUSY = 231
|
212
|
-
ERROR_NO_DATA = 232
|
213
|
-
ERROR_PIPE_NOT_CONNECTED = 233
|
214
|
-
ERROR_MORE_DATA = 234
|
215
|
-
|
216
|
-
ERROR_PIPE_CONNECTED = 535
|
217
|
-
ERROR_PIPE_LISTENING = 536
|
218
|
-
|
219
|
-
ERROR_OPERATION_ABORTED = 995
|
220
|
-
ERROR_IO_INCOMPLETE = 996
|
221
|
-
ERROR_IO_PENDING = 997
|
222
|
-
|
223
|
-
ERROR_USER_DEFINED_BASE = 0xF000
|
224
|
-
|
225
|
-
ERROR_I24_WRITE_PROTECT = 0
|
226
|
-
ERROR_I24_BAD_UNIT = 1
|
227
|
-
ERROR_I24_NOT_READY = 2
|
228
|
-
ERROR_I24_BAD_COMMAND = 3
|
229
|
-
ERROR_I24_CRC = 4
|
230
|
-
ERROR_I24_BAD_LENGTH = 5
|
231
|
-
ERROR_I24_SEEK = 6
|
232
|
-
ERROR_I24_NOT_DOS_DISK = 7
|
233
|
-
ERROR_I24_SECTOR_NOT_FOUND = 8
|
234
|
-
ERROR_I24_OUT_OF_PAPER = 9
|
235
|
-
ERROR_I24_WRITE_FAULT = 0x0A
|
236
|
-
ERROR_I24_READ_FAULT = 0x0B
|
237
|
-
ERROR_I24_GEN_FAILURE = 0x0C
|
238
|
-
ERROR_I24_DISK_CHANGE = 0x0D
|
239
|
-
ERROR_I24_WRONG_DISK = 0x0F
|
240
|
-
ERROR_I24_UNCERTAIN_MEDIA = 0x10
|
241
|
-
ERROR_I24_CHAR_CALL_INTERRUPTED = 0x11
|
242
|
-
ERROR_I24_NO_MONITOR_SUPPORT = 0x12
|
243
|
-
ERROR_I24_INVALID_PARAMETER = 0x13
|
244
|
-
|
245
|
-
APPLICATION_ERROR_MASK = 0x20000000
|
246
|
-
ERROR_SEVERITY_SUCCESS = 0x00000000
|
247
|
-
ERROR_SEVERITY_INFORMATIONAL = 0x40000000
|
248
|
-
ERROR_SEVERITY_WARNING = 0x80000000
|
249
|
-
ERROR_SEVERITY_ERROR = 0xc0000000
|
250
|
-
|
251
|
-
ALLOWED_FAIL = 0x0001
|
252
|
-
ALLOWED_ABORT = 0x0002
|
253
|
-
ALLOWED_RETRY = 0x0004
|
254
|
-
ALLOWED_IGNORE = 0x0008
|
255
|
-
|
256
|
-
I24_OPERATION = 0x1
|
257
|
-
I24_AREA = 0x6
|
258
|
-
I24_CLASS = 0x80
|
259
|
-
|
260
|
-
ERRCLASS_OUTRES = 1 # Out of Resource
|
261
|
-
ERRCLASS_TEMPSIT = 2 # Temporary Situation
|
262
|
-
ERRCLASS_AUTH = 3 # Permission problem
|
263
|
-
ERRCLASS_INTRN = 4 # Internal System Error
|
264
|
-
ERRCLASS_HRDFAIL = 5 # Hardware Failure
|
265
|
-
ERRCLASS_SYSFAIL = 6 # System Failure
|
266
|
-
ERRCLASS_APPERR = 7 # Application Error
|
267
|
-
ERRCLASS_NOTFND = 8 # Not Found
|
268
|
-
ERRCLASS_BADFMT = 9 # Bad Format
|
269
|
-
ERRCLASS_LOCKED = 10 # Locked
|
270
|
-
ERRCLASS_MEDIA = 11 # Media Failure
|
271
|
-
ERRCLASS_ALREADY = 12 # Collision with Existing Item
|
272
|
-
ERRCLASS_UNK = 13 # Unknown/other
|
273
|
-
ERRCLASS_CANT = 14
|
274
|
-
ERRCLASS_TIME = 15
|
275
|
-
|
276
|
-
ERRACT_RETRY = 1 # Retry
|
277
|
-
ERRACT_DLYRET = 2 # Delay Retry, retry after pause
|
278
|
-
ERRACT_USER = 3 # Ask user to regive info
|
279
|
-
ERRACT_ABORT = 4 # abort with clean up
|
280
|
-
ERRACT_PANIC = 5 # abort immediately
|
281
|
-
ERRACT_IGNORE = 6 # ignore
|
282
|
-
ERRACT_INTRET = 7 # Retry after User Intervention
|
283
|
-
|
284
|
-
ERRLOC_UNK = 1 # No appropriate value
|
285
|
-
ERRLOC_DISK = 2 # Random Access Mass Storage
|
286
|
-
ERRLOC_NET = 3 # Network
|
287
|
-
ERRLOC_SERDEV = 4 # Serial Device
|
288
|
-
ERRLOC_MEM = 5 # Memory
|
289
|
-
|
290
|
-
TC_NORMAL = 0
|
291
|
-
TC_HARDERR = 1
|
292
|
-
TC_GP_TRAP = 2
|
293
|
-
TC_SIGNAL = 3
|
294
|
-
|
295
|
-
# From WinError.h
|
296
|
-
|
297
|
-
ERROR_INVALID_FLAGS = 0x1004
|
298
|
-
ERROR_NO_UNICODE_TRANSLATION = 0x1113
|
299
|
-
|
300
|
-
E_INVALIDARG = 0x80070057
|
301
|
-
E_NOINTERFACE = 0x80004002
|
302
|
-
E_NOTIMPL = 0x80004001
|
303
|
-
E_OUTOFMEMORY = 0x8007000E
|
304
|
-
E_UNEXPECTED = 0x8000FFFF
|
305
|
-
|
306
|
-
RPC_E_TIMEOUT = 0x8001011F
|
307
|
-
|
308
|
-
CO_E_NOT_SUPPORTED = 0x80004021
|
309
|
-
|
310
|
-
CLASS_E_NOAGGREGATION = 0x80040110
|
311
|
-
|
312
|
-
DISP_E_BADINDEX = 0x8002000B
|
313
|
-
DISP_E_PARAMNOTFOUND = 0x80020004
|
314
|
-
DISP_E_EXCEPTION = 0x80020009
|
315
|
-
DISP_E_MEMBERNOTFOUND = 0x80020003
|
316
|
-
|
317
|
-
# Registry errors
|
318
|
-
|
319
|
-
REGDB_E_CLASSNOTREG = 0x80040154
|
320
|
-
|
321
|
-
# msterr.h
|
322
|
-
|
323
|
-
SCHED_S_TASK_READY = 0x00041300
|
324
|
-
SCHED_S_TASK_RUNNING = 0x00041301
|
325
|
-
SCHED_S_TASK_DISABLED = 0x00041302
|
326
|
-
SCHED_S_TASK_HAS_NOT_RUN = 0x00041303
|
327
|
-
SCHED_S_TASK_HAS_NO_MORE_RUNS = 0x00041304
|
328
|
-
SCHED_S_TASK_NOT_SCHEDULED = 0x00041305
|
329
|
-
SCHED_S_TASK_TERMINATED = 0x00041306
|
330
|
-
SCHED_S_TASK_NO_VALID_TRIGGERS = 0x00041307
|
331
|
-
SCHED_S_EVENT_TRIGGER = 0x00041308
|
332
|
-
SCHED_E_TRIGGER_NOT_FOUND = 0x00041309
|
333
|
-
SCHED_E_TASK_NOT_READY = 0x0004130A
|
334
|
-
SCHED_E_TASK_NOT_RUNNING = 0x0004130B
|
335
|
-
SCHED_E_SERVICE_NOT_INSTALLED = 0x0004130C
|
336
|
-
SCHED_E_CANNOT_OPEN_TASK = 0x0004130D
|
337
|
-
SCHED_E_INVALID_TASK = 0x0004130E
|
338
|
-
SCHED_E_ACCOUNT_INFORMATION_NOT_SET = 0x0004130F
|
339
|
-
SCHED_E_ACCOUNT_NAME_NOT_FOUND = 0x00041310
|
340
|
-
SCHED_E_ACCOUNT_DBASE_CORRUPT = 0x00041311
|
341
|
-
SCHED_E_NO_SECURITY_SERVICES = 0x00041312
|
342
|
-
SCHED_E_UNKNOWN_OBJECT_VERSION = 0x00041313
|
343
|
-
|
344
|
-
# Socket errors
|
345
|
-
|
346
|
-
WSA_INVALID_HANDLE = 6
|
347
|
-
WSA_NOT_ENOUGH_MEMORY = 8
|
348
|
-
WSA_INVALID_PARAMETER = 87
|
349
|
-
WSA_OPERATION_ABORTED = 995
|
350
|
-
WSA_IO_INCOMPLETE = 996
|
351
|
-
WSA_IO_PENDING = 997
|
352
|
-
WSAEINTR = 10004
|
353
|
-
WSAEBADF = 10009
|
354
|
-
WSAEACCESS = 10013
|
355
|
-
WSAEFAULT = 10014
|
356
|
-
WSAEINVAL = 10022
|
357
|
-
WSAEMFILE = 10024
|
358
|
-
WSAEWOULDBLOCK = 10035
|
359
|
-
WSAEINPROGRESS = 10036
|
360
|
-
WSAEALREADY = 10037
|
361
|
-
WSAENOTSOCK = 10038
|
362
|
-
WSAEDESTADDRREQ = 10039
|
363
|
-
WSAEMSGSIZE = 10040
|
364
|
-
WSAEPROTOTYPE = 10041
|
365
|
-
WSAENOPROTOOPT = 10042
|
366
|
-
WSAEPROTONOSUPPORT = 10043
|
367
|
-
WSAESOCKTNOSUPPORT = 10044
|
368
|
-
WSAEOPNOTSUPP = 10045
|
369
|
-
WSAEPFNOSUPPORT = 10046
|
370
|
-
WSAEAFNOSUPPORT = 10047
|
371
|
-
WSAEADDRINUSE = 10048
|
372
|
-
WSAEADDRNOTAVAIL = 10049
|
373
|
-
WSAENETDOWN = 10050
|
374
|
-
WSAENETUNREACH = 10051
|
375
|
-
WSAENETRESET = 10052
|
376
|
-
WSAECONNABORTED = 10053
|
377
|
-
WSAECONNRESET = 10054
|
378
|
-
WSAENOBUFS = 10055
|
379
|
-
WSAEISCONN = 10056
|
380
|
-
WSAENOTCONN = 10057
|
381
|
-
WSAESHUTDOWN = 10058
|
382
|
-
WSAETOOMANYREFS = 10059
|
383
|
-
WSATIMEDOUT = 10060
|
384
|
-
WSAECONNREFUSED = 10061
|
385
|
-
WSAELOOP = 10062
|
386
|
-
WSAENAMETOOLONG = 10063
|
387
|
-
WSAEHOSTDOWN = 10064
|
388
|
-
WSAEHOSTUNREACH = 10065
|
389
|
-
WSAENOEMPTY = 10066
|
390
|
-
WSAEPROCLIM = 10067
|
391
|
-
WSAEUSERS = 10068
|
392
|
-
WSAEDQUOT = 10069
|
393
|
-
WSAESTALE = 10070
|
394
|
-
WSAEREMOTE = 10071
|
395
|
-
WSASYSNOTREADY = 10091
|
396
|
-
WSAVERNOTSUPPORTED = 10092
|
397
|
-
WSANOTINITIALISED = 10093
|
398
|
-
WSAEDISCON = 10101
|
399
|
-
WSAENOMORE = 10102
|
400
|
-
WSAECANCELLED = 10103
|
401
|
-
WSAEINVALIDPROCTABLE = 10104
|
402
|
-
WSAEINVALIDPROVIDER = 10105
|
403
|
-
WSAEPROVIDERFAILEDINIT = 10106
|
404
|
-
WSASYSCALLFAILURE = 10107
|
405
|
-
WSASERVICE_NOT_FOUND = 10108
|
406
|
-
WSATYPE_NOT_FOUND = 10109
|
407
|
-
WSA_E_NO_MORE = 10110
|
408
|
-
WSA_E_CANCELLED = 10111
|
409
|
-
WSAEREFUSED = 10112
|
410
|
-
WSAHOST_NOT_FOUND = 11001
|
411
|
-
WSATRY_AGAIN = 11002
|
412
|
-
WSANO_RECOVERY = 11003
|
413
|
-
WSANO_DATA = 11004
|
414
|
-
WSA_QOS_RECEIVERS = 11005
|
415
|
-
WSA_QOS_SENDERS = 11006
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
end
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
end
|
1
|
+
############################################################################
|
2
|
+
# error.rb
|
3
|
+
#
|
4
|
+
# Includes all of the error codes in error.h, msterr.h and some from
|
5
|
+
# winerror.h.
|
6
|
+
#
|
7
|
+
# Adds the following convenience methods:
|
8
|
+
#
|
9
|
+
# get_last_error - Returns a human readable string for the error returned
|
10
|
+
# by the GetLastError() function.
|
11
|
+
############################################################################
|
12
|
+
require 'windows/api'
|
13
|
+
|
14
|
+
module Windows
|
15
|
+
module Error
|
16
|
+
API.auto_namespace = 'Windows::Error'
|
17
|
+
API.auto_method = true
|
18
|
+
API.auto_constant = true
|
19
|
+
API.auto_unicode = true
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100
|
24
|
+
FORMAT_MESSAGE_IGNORE_INSERTS = 0x00000200
|
25
|
+
FORMAT_MESSAGE_FROM_STRING = 0x00000400
|
26
|
+
FORMAT_MESSAGE_FROM_HMODULE = 0x00000800
|
27
|
+
FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000
|
28
|
+
FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x00002000
|
29
|
+
FORMAT_MESSAGE_MAX_WIDTH_MASK = 0x000000FF
|
30
|
+
|
31
|
+
SEM_FAILCRITICALERRORS = 0x0001
|
32
|
+
SEM_NOALIGNMENTFAULTEXCEPT = 0x0004
|
33
|
+
SEM_NOGPFAULTERRORBOX = 0x0002
|
34
|
+
SEM_NOOPENFILEERRORBOX = 0x8000
|
35
|
+
|
36
|
+
S_OK = 0
|
37
|
+
NO_ERROR = 0
|
38
|
+
ERROR_SUCCESS = 0
|
39
|
+
ERROR_INVALID_FUNCTION = 1
|
40
|
+
ERROR_FILE_NOT_FOUND = 2
|
41
|
+
ERROR_PATH_NOT_FOUND = 3
|
42
|
+
ERROR_TOO_MANY_OPEN_FILES = 4
|
43
|
+
ERROR_ACCESS_DENIED = 5
|
44
|
+
ERROR_INVALID_HANDLE = 6
|
45
|
+
ERROR_ARENA_TRASHED = 7
|
46
|
+
ERROR_NOT_ENOUGH_MEMORY = 8
|
47
|
+
ERROR_INVALID_BLOCK = 9
|
48
|
+
ERROR_BAD_ENVIRONMENT = 10
|
49
|
+
ERROR_BAD_FORMAT = 11
|
50
|
+
ERROR_INVALID_ACCESS = 12
|
51
|
+
ERROR_INVALID_DATA = 13
|
52
|
+
ERROR_INVALID_DRIVE = 15
|
53
|
+
ERROR_CURRENT_DIRECTORY = 16
|
54
|
+
ERROR_NOT_SAME_DEVICE = 17
|
55
|
+
ERROR_NO_MORE_FILES = 18
|
56
|
+
|
57
|
+
ERROR_WRITE_PROTECT = 19
|
58
|
+
ERROR_BAD_UNIT = 20
|
59
|
+
ERROR_NOT_READY = 21
|
60
|
+
ERROR_BAD_COMMAND = 22
|
61
|
+
ERROR_CRC = 23
|
62
|
+
ERROR_BAD_LENGTH = 24
|
63
|
+
ERROR_SEEK = 25
|
64
|
+
ERROR_NOT_DOS_DISK = 26
|
65
|
+
ERROR_SECTOR_NOT_FOUND = 27
|
66
|
+
ERROR_OUT_OF_PAPER = 28
|
67
|
+
ERROR_WRITE_FAULT = 29
|
68
|
+
ERROR_READ_FAULT = 30
|
69
|
+
ERROR_GEN_FAILURE = 31
|
70
|
+
|
71
|
+
ERROR_SHARING_VIOLATION = 32
|
72
|
+
ERROR_LOCK_VIOLATION = 33
|
73
|
+
ERROR_WRONG_DISK = 34
|
74
|
+
ERROR_FCB_UNAVAILABLE = 35
|
75
|
+
ERROR_SHARING_BUFFER_EXCEEDED = 36
|
76
|
+
ERROR_HANDLE_EOF = 38
|
77
|
+
ERROR_HANDLE_DISK_FULL = 39
|
78
|
+
|
79
|
+
ERROR_NOT_SUPPORTED = 50
|
80
|
+
|
81
|
+
ERROR_FILE_EXISTS = 80
|
82
|
+
ERROR_DUP_FCB = 81
|
83
|
+
ERROR_CANNOT_MAKE = 82
|
84
|
+
ERROR_FAIL_I24 = 83
|
85
|
+
|
86
|
+
ERROR_OUT_OF_STRUCTURES = 84
|
87
|
+
ERROR_ALREADY_ASSIGNED = 85
|
88
|
+
ERROR_INVALID_PASSWORD = 86
|
89
|
+
ERROR_INVALID_PARAMETER = 87
|
90
|
+
ERROR_NET_WRITE_FAULT = 88
|
91
|
+
|
92
|
+
ERROR_NO_PROC_SLOTS = 89 # no process slots available
|
93
|
+
ERROR_NOT_FROZEN = 90
|
94
|
+
ERR_TSTOVFL = 91 # timer service table overflow
|
95
|
+
ERR_TSTDUP = 92 # timer service table duplicate
|
96
|
+
ERROR_NO_ITEMS = 93 # There were no items to operate upon
|
97
|
+
ERROR_INTERRUPT = 95 # interrupted system call
|
98
|
+
|
99
|
+
ERROR_TOO_MANY_SEMAPHORES = 100
|
100
|
+
ERROR_EXCL_SEM_ALREADY_OWNED = 101
|
101
|
+
ERROR_SEM_IS_SET = 102
|
102
|
+
ERROR_TOO_MANY_SEM_REQUESTS = 103
|
103
|
+
ERROR_INVALID_AT_INTERRUPT_TIME = 104
|
104
|
+
|
105
|
+
ERROR_SEM_OWNER_DIED = 105 # waitsem found owner died
|
106
|
+
ERROR_SEM_USER_LIMIT = 106 # too many procs have this sem
|
107
|
+
ERROR_DISK_CHANGE = 107 # insert disk b into drive a
|
108
|
+
ERROR_DRIVE_LOCKED = 108 # drive locked by another process
|
109
|
+
ERROR_BROKEN_PIPE = 109 # write on pipe with no reader
|
110
|
+
|
111
|
+
ERROR_OPEN_FAILED = 110 # open/created failed
|
112
|
+
ERROR_DISK_FULL = 112 # not enough space
|
113
|
+
ERROR_NO_MORE_SEARCH_HANDLES = 113 # can't allocate
|
114
|
+
ERROR_INVALID_TARGET_HANDLE = 114 # handle in DOSDUPHANDLE is invalid
|
115
|
+
ERROR_PROTECTION_VIOLATION = 115 # bad user virtual address
|
116
|
+
ERROR_VIOKBD_REQUEST = 116
|
117
|
+
ERROR_INVALID_CATEGORY = 117 # category for DEVIOCTL not defined
|
118
|
+
ERROR_INVALID_VERIFY_SWITCH = 118 # invalid value
|
119
|
+
ERROR_BAD_DRIVER_LEVEL = 119 # DosDevIOCTL not level four
|
120
|
+
ERROR_CALL_NOT_IMPLEMENTED = 120
|
121
|
+
ERROR_SEM_TIMEOUT = 121 # timeout from semaphore function
|
122
|
+
ERROR_INSUFFICIENT_BUFFER = 122
|
123
|
+
|
124
|
+
ERROR_INVALID_NAME = 123 # illegal char or malformed file system name
|
125
|
+
ERROR_INVALID_LEVEL = 124 # unimplemented level for info retrieval
|
126
|
+
ERROR_NO_VOLUME_LABEL = 125 # no volume label found
|
127
|
+
ERROR_MOD_NOT_FOUND = 126 # w_getprocaddr, w_getmodhandle
|
128
|
+
ERROR_PROC_NOT_FOUND = 127 # w_getprocaddr
|
129
|
+
|
130
|
+
ERROR_WAIT_NO_CHILDREN = 128 # CWait finds to children
|
131
|
+
ERROR_CHILD_NOT_COMPLETE = 129 # CWait children not dead yet
|
132
|
+
|
133
|
+
ERROR_DIRECT_ACCESS_HANDLE = 130 # invalid for direct disk access
|
134
|
+
ERROR_NEGATIVE_SEEK = 131 # tried to seek negative offset
|
135
|
+
ERROR_SEEK_ON_DEVICE = 132 # tried to seek on device or pipe
|
136
|
+
|
137
|
+
ERROR_IS_JOIN_TARGET = 133
|
138
|
+
ERROR_IS_JOINED = 134
|
139
|
+
ERROR_IS_SUBSTED = 135
|
140
|
+
ERROR_NOT_JOINED = 136
|
141
|
+
ERROR_NOT_SUBSTED = 137
|
142
|
+
ERROR_JOIN_TO_JOIN = 138
|
143
|
+
ERROR_SUBST_TO_SUBST = 139
|
144
|
+
ERROR_JOIN_TO_SUBST = 140
|
145
|
+
ERROR_SUBST_TO_JOIN = 141
|
146
|
+
ERROR_BUSY_DRIVE = 142
|
147
|
+
ERROR_SAME_DRIVE = 143
|
148
|
+
ERROR_DIR_NOT_ROOT = 144
|
149
|
+
ERROR_DIR_NOT_EMPTY = 145
|
150
|
+
ERROR_IS_SUBST_PATH = 146
|
151
|
+
ERROR_IS_JOIN_PATH = 147
|
152
|
+
ERROR_PATH_BUSY = 148
|
153
|
+
ERROR_IS_SUBST_TARGET = 149
|
154
|
+
ERROR_SYSTEM_TRACE = 150 # system trace error
|
155
|
+
ERROR_INVALID_EVENT_COUNT = 151 # DosMuxSemWait errors
|
156
|
+
ERROR_TOO_MANY_MUXWAITERS = 152
|
157
|
+
ERROR_INVALID_LIST_FORMAT = 153
|
158
|
+
ERROR_LABEL_TOO_LONG = 154
|
159
|
+
ERROR_TOO_MANY_TCBS = 155
|
160
|
+
ERROR_SIGNAL_REFUSED = 156
|
161
|
+
ERROR_DISCARDED = 157
|
162
|
+
ERROR_NOT_LOCKED = 158
|
163
|
+
ERROR_BAD_THREADID_ADDR = 159
|
164
|
+
ERROR_BAD_ARGUMENTS = 160
|
165
|
+
ERROR_BAD_PATHNAME = 161
|
166
|
+
ERROR_SIGNAL_PENDING = 162
|
167
|
+
ERROR_UNCERTAIN_MEDIA = 163
|
168
|
+
ERROR_MAX_THRDS_REACHED = 164
|
169
|
+
ERROR_MONITORS_NOT_SUPPORTED = 165
|
170
|
+
|
171
|
+
ERROR_INVALID_SEGMENT_NUMBER = 180
|
172
|
+
ERROR_INVALID_CALLGATE = 181
|
173
|
+
ERROR_INVALID_ORDINAL = 182
|
174
|
+
ERROR_ALREADY_EXISTS = 183
|
175
|
+
ERROR_NO_CHILD_PROCESS = 184
|
176
|
+
ERROR_CHILD_ALIVE_NOWAIT = 185
|
177
|
+
ERROR_INVALID_FLAG_NUMBER = 186
|
178
|
+
ERROR_SEM_NOT_FOUND = 187
|
179
|
+
|
180
|
+
ERROR_INVALID_STARTING_CODESEG = 188
|
181
|
+
ERROR_INVALID_STACKSEG = 189
|
182
|
+
ERROR_INVALID_MODULETYPE = 190
|
183
|
+
ERROR_INVALID_EXE_SIGNATURE = 191
|
184
|
+
ERROR_EXE_MARKED_INVALID = 192
|
185
|
+
ERROR_BAD_EXE_FORMAT = 193
|
186
|
+
ERROR_ITERATED_DATA_EXCEEDS_64k = 194
|
187
|
+
ERROR_INVALID_MINALLOCSIZE = 195
|
188
|
+
ERROR_DYNLINK_FROM_INVALID_RING = 196
|
189
|
+
ERROR_IOPL_NOT_ENABLED = 197
|
190
|
+
ERROR_INVALID_SEGDPL = 198
|
191
|
+
ERROR_AUTODATASEG_EXCEEDS_64k = 199
|
192
|
+
ERROR_RING2SEG_MUST_BE_MOVABLE = 200
|
193
|
+
ERROR_RELOC_CHAIN_XEEDS_SEGLIM = 201
|
194
|
+
ERROR_INFLOOP_IN_RELOC_CHAIN = 202
|
195
|
+
|
196
|
+
ERROR_ENVVAR_NOT_FOUND = 203
|
197
|
+
ERROR_NOT_CURRENT_CTRY = 204
|
198
|
+
ERROR_NO_SIGNAL_SENT = 205
|
199
|
+
ERROR_FILENAME_EXCED_RANGE = 206 # if filename > 8.3
|
200
|
+
ERROR_RING2_STACK_IN_USE = 207 # for FAPI
|
201
|
+
ERROR_META_EXPANSION_TOO_LONG = 208 # if "*a" > 8.3
|
202
|
+
|
203
|
+
ERROR_INVALID_SIGNAL_NUMBER = 209
|
204
|
+
ERROR_THREAD_1_INACTIVE = 210
|
205
|
+
ERROR_INFO_NOT_AVAIL = 211 #@@ PTM 5550
|
206
|
+
ERROR_LOCKED = 212
|
207
|
+
ERROR_BAD_DYNALINK = 213 #@@ PTM 5760
|
208
|
+
ERROR_TOO_MANY_MODULES = 214
|
209
|
+
ERROR_NESTING_NOT_ALLOWED = 215
|
210
|
+
ERROR_BAD_PIPE = 230
|
211
|
+
ERROR_PIPE_BUSY = 231
|
212
|
+
ERROR_NO_DATA = 232
|
213
|
+
ERROR_PIPE_NOT_CONNECTED = 233
|
214
|
+
ERROR_MORE_DATA = 234
|
215
|
+
|
216
|
+
ERROR_PIPE_CONNECTED = 535
|
217
|
+
ERROR_PIPE_LISTENING = 536
|
218
|
+
|
219
|
+
ERROR_OPERATION_ABORTED = 995
|
220
|
+
ERROR_IO_INCOMPLETE = 996
|
221
|
+
ERROR_IO_PENDING = 997
|
222
|
+
|
223
|
+
ERROR_USER_DEFINED_BASE = 0xF000
|
224
|
+
|
225
|
+
ERROR_I24_WRITE_PROTECT = 0
|
226
|
+
ERROR_I24_BAD_UNIT = 1
|
227
|
+
ERROR_I24_NOT_READY = 2
|
228
|
+
ERROR_I24_BAD_COMMAND = 3
|
229
|
+
ERROR_I24_CRC = 4
|
230
|
+
ERROR_I24_BAD_LENGTH = 5
|
231
|
+
ERROR_I24_SEEK = 6
|
232
|
+
ERROR_I24_NOT_DOS_DISK = 7
|
233
|
+
ERROR_I24_SECTOR_NOT_FOUND = 8
|
234
|
+
ERROR_I24_OUT_OF_PAPER = 9
|
235
|
+
ERROR_I24_WRITE_FAULT = 0x0A
|
236
|
+
ERROR_I24_READ_FAULT = 0x0B
|
237
|
+
ERROR_I24_GEN_FAILURE = 0x0C
|
238
|
+
ERROR_I24_DISK_CHANGE = 0x0D
|
239
|
+
ERROR_I24_WRONG_DISK = 0x0F
|
240
|
+
ERROR_I24_UNCERTAIN_MEDIA = 0x10
|
241
|
+
ERROR_I24_CHAR_CALL_INTERRUPTED = 0x11
|
242
|
+
ERROR_I24_NO_MONITOR_SUPPORT = 0x12
|
243
|
+
ERROR_I24_INVALID_PARAMETER = 0x13
|
244
|
+
|
245
|
+
APPLICATION_ERROR_MASK = 0x20000000
|
246
|
+
ERROR_SEVERITY_SUCCESS = 0x00000000
|
247
|
+
ERROR_SEVERITY_INFORMATIONAL = 0x40000000
|
248
|
+
ERROR_SEVERITY_WARNING = 0x80000000
|
249
|
+
ERROR_SEVERITY_ERROR = 0xc0000000
|
250
|
+
|
251
|
+
ALLOWED_FAIL = 0x0001
|
252
|
+
ALLOWED_ABORT = 0x0002
|
253
|
+
ALLOWED_RETRY = 0x0004
|
254
|
+
ALLOWED_IGNORE = 0x0008
|
255
|
+
|
256
|
+
I24_OPERATION = 0x1
|
257
|
+
I24_AREA = 0x6
|
258
|
+
I24_CLASS = 0x80
|
259
|
+
|
260
|
+
ERRCLASS_OUTRES = 1 # Out of Resource
|
261
|
+
ERRCLASS_TEMPSIT = 2 # Temporary Situation
|
262
|
+
ERRCLASS_AUTH = 3 # Permission problem
|
263
|
+
ERRCLASS_INTRN = 4 # Internal System Error
|
264
|
+
ERRCLASS_HRDFAIL = 5 # Hardware Failure
|
265
|
+
ERRCLASS_SYSFAIL = 6 # System Failure
|
266
|
+
ERRCLASS_APPERR = 7 # Application Error
|
267
|
+
ERRCLASS_NOTFND = 8 # Not Found
|
268
|
+
ERRCLASS_BADFMT = 9 # Bad Format
|
269
|
+
ERRCLASS_LOCKED = 10 # Locked
|
270
|
+
ERRCLASS_MEDIA = 11 # Media Failure
|
271
|
+
ERRCLASS_ALREADY = 12 # Collision with Existing Item
|
272
|
+
ERRCLASS_UNK = 13 # Unknown/other
|
273
|
+
ERRCLASS_CANT = 14
|
274
|
+
ERRCLASS_TIME = 15
|
275
|
+
|
276
|
+
ERRACT_RETRY = 1 # Retry
|
277
|
+
ERRACT_DLYRET = 2 # Delay Retry, retry after pause
|
278
|
+
ERRACT_USER = 3 # Ask user to regive info
|
279
|
+
ERRACT_ABORT = 4 # abort with clean up
|
280
|
+
ERRACT_PANIC = 5 # abort immediately
|
281
|
+
ERRACT_IGNORE = 6 # ignore
|
282
|
+
ERRACT_INTRET = 7 # Retry after User Intervention
|
283
|
+
|
284
|
+
ERRLOC_UNK = 1 # No appropriate value
|
285
|
+
ERRLOC_DISK = 2 # Random Access Mass Storage
|
286
|
+
ERRLOC_NET = 3 # Network
|
287
|
+
ERRLOC_SERDEV = 4 # Serial Device
|
288
|
+
ERRLOC_MEM = 5 # Memory
|
289
|
+
|
290
|
+
TC_NORMAL = 0
|
291
|
+
TC_HARDERR = 1
|
292
|
+
TC_GP_TRAP = 2
|
293
|
+
TC_SIGNAL = 3
|
294
|
+
|
295
|
+
# From WinError.h
|
296
|
+
|
297
|
+
ERROR_INVALID_FLAGS = 0x1004
|
298
|
+
ERROR_NO_UNICODE_TRANSLATION = 0x1113
|
299
|
+
|
300
|
+
E_INVALIDARG = 0x80070057
|
301
|
+
E_NOINTERFACE = 0x80004002
|
302
|
+
E_NOTIMPL = 0x80004001
|
303
|
+
E_OUTOFMEMORY = 0x8007000E
|
304
|
+
E_UNEXPECTED = 0x8000FFFF
|
305
|
+
|
306
|
+
RPC_E_TIMEOUT = 0x8001011F
|
307
|
+
|
308
|
+
CO_E_NOT_SUPPORTED = 0x80004021
|
309
|
+
|
310
|
+
CLASS_E_NOAGGREGATION = 0x80040110
|
311
|
+
|
312
|
+
DISP_E_BADINDEX = 0x8002000B
|
313
|
+
DISP_E_PARAMNOTFOUND = 0x80020004
|
314
|
+
DISP_E_EXCEPTION = 0x80020009
|
315
|
+
DISP_E_MEMBERNOTFOUND = 0x80020003
|
316
|
+
|
317
|
+
# Registry errors
|
318
|
+
|
319
|
+
REGDB_E_CLASSNOTREG = 0x80040154
|
320
|
+
|
321
|
+
# msterr.h
|
322
|
+
|
323
|
+
SCHED_S_TASK_READY = 0x00041300
|
324
|
+
SCHED_S_TASK_RUNNING = 0x00041301
|
325
|
+
SCHED_S_TASK_DISABLED = 0x00041302
|
326
|
+
SCHED_S_TASK_HAS_NOT_RUN = 0x00041303
|
327
|
+
SCHED_S_TASK_HAS_NO_MORE_RUNS = 0x00041304
|
328
|
+
SCHED_S_TASK_NOT_SCHEDULED = 0x00041305
|
329
|
+
SCHED_S_TASK_TERMINATED = 0x00041306
|
330
|
+
SCHED_S_TASK_NO_VALID_TRIGGERS = 0x00041307
|
331
|
+
SCHED_S_EVENT_TRIGGER = 0x00041308
|
332
|
+
SCHED_E_TRIGGER_NOT_FOUND = 0x00041309
|
333
|
+
SCHED_E_TASK_NOT_READY = 0x0004130A
|
334
|
+
SCHED_E_TASK_NOT_RUNNING = 0x0004130B
|
335
|
+
SCHED_E_SERVICE_NOT_INSTALLED = 0x0004130C
|
336
|
+
SCHED_E_CANNOT_OPEN_TASK = 0x0004130D
|
337
|
+
SCHED_E_INVALID_TASK = 0x0004130E
|
338
|
+
SCHED_E_ACCOUNT_INFORMATION_NOT_SET = 0x0004130F
|
339
|
+
SCHED_E_ACCOUNT_NAME_NOT_FOUND = 0x00041310
|
340
|
+
SCHED_E_ACCOUNT_DBASE_CORRUPT = 0x00041311
|
341
|
+
SCHED_E_NO_SECURITY_SERVICES = 0x00041312
|
342
|
+
SCHED_E_UNKNOWN_OBJECT_VERSION = 0x00041313
|
343
|
+
|
344
|
+
# Socket errors
|
345
|
+
|
346
|
+
WSA_INVALID_HANDLE = 6
|
347
|
+
WSA_NOT_ENOUGH_MEMORY = 8
|
348
|
+
WSA_INVALID_PARAMETER = 87
|
349
|
+
WSA_OPERATION_ABORTED = 995
|
350
|
+
WSA_IO_INCOMPLETE = 996
|
351
|
+
WSA_IO_PENDING = 997
|
352
|
+
WSAEINTR = 10004
|
353
|
+
WSAEBADF = 10009
|
354
|
+
WSAEACCESS = 10013
|
355
|
+
WSAEFAULT = 10014
|
356
|
+
WSAEINVAL = 10022
|
357
|
+
WSAEMFILE = 10024
|
358
|
+
WSAEWOULDBLOCK = 10035
|
359
|
+
WSAEINPROGRESS = 10036
|
360
|
+
WSAEALREADY = 10037
|
361
|
+
WSAENOTSOCK = 10038
|
362
|
+
WSAEDESTADDRREQ = 10039
|
363
|
+
WSAEMSGSIZE = 10040
|
364
|
+
WSAEPROTOTYPE = 10041
|
365
|
+
WSAENOPROTOOPT = 10042
|
366
|
+
WSAEPROTONOSUPPORT = 10043
|
367
|
+
WSAESOCKTNOSUPPORT = 10044
|
368
|
+
WSAEOPNOTSUPP = 10045
|
369
|
+
WSAEPFNOSUPPORT = 10046
|
370
|
+
WSAEAFNOSUPPORT = 10047
|
371
|
+
WSAEADDRINUSE = 10048
|
372
|
+
WSAEADDRNOTAVAIL = 10049
|
373
|
+
WSAENETDOWN = 10050
|
374
|
+
WSAENETUNREACH = 10051
|
375
|
+
WSAENETRESET = 10052
|
376
|
+
WSAECONNABORTED = 10053
|
377
|
+
WSAECONNRESET = 10054
|
378
|
+
WSAENOBUFS = 10055
|
379
|
+
WSAEISCONN = 10056
|
380
|
+
WSAENOTCONN = 10057
|
381
|
+
WSAESHUTDOWN = 10058
|
382
|
+
WSAETOOMANYREFS = 10059
|
383
|
+
WSATIMEDOUT = 10060
|
384
|
+
WSAECONNREFUSED = 10061
|
385
|
+
WSAELOOP = 10062
|
386
|
+
WSAENAMETOOLONG = 10063
|
387
|
+
WSAEHOSTDOWN = 10064
|
388
|
+
WSAEHOSTUNREACH = 10065
|
389
|
+
WSAENOEMPTY = 10066
|
390
|
+
WSAEPROCLIM = 10067
|
391
|
+
WSAEUSERS = 10068
|
392
|
+
WSAEDQUOT = 10069
|
393
|
+
WSAESTALE = 10070
|
394
|
+
WSAEREMOTE = 10071
|
395
|
+
WSASYSNOTREADY = 10091
|
396
|
+
WSAVERNOTSUPPORTED = 10092
|
397
|
+
WSANOTINITIALISED = 10093
|
398
|
+
WSAEDISCON = 10101
|
399
|
+
WSAENOMORE = 10102
|
400
|
+
WSAECANCELLED = 10103
|
401
|
+
WSAEINVALIDPROCTABLE = 10104
|
402
|
+
WSAEINVALIDPROVIDER = 10105
|
403
|
+
WSAEPROVIDERFAILEDINIT = 10106
|
404
|
+
WSASYSCALLFAILURE = 10107
|
405
|
+
WSASERVICE_NOT_FOUND = 10108
|
406
|
+
WSATYPE_NOT_FOUND = 10109
|
407
|
+
WSA_E_NO_MORE = 10110
|
408
|
+
WSA_E_CANCELLED = 10111
|
409
|
+
WSAEREFUSED = 10112
|
410
|
+
WSAHOST_NOT_FOUND = 11001
|
411
|
+
WSATRY_AGAIN = 11002
|
412
|
+
WSANO_RECOVERY = 11003
|
413
|
+
WSANO_DATA = 11004
|
414
|
+
WSA_QOS_RECEIVERS = 11005
|
415
|
+
WSA_QOS_SENDERS = 11006
|
416
|
+
|
417
|
+
# Token related
|
418
|
+
|
419
|
+
ERROR_NO_TOKEN = 1008
|
420
|
+
ERROR_NO_IMPERSONATION_TOKEN = 1309
|
421
|
+
ERROR_BAD_TOKEN_TYPE = 1349
|
422
|
+
ERROR_TOKEN_ALREADY_IN_USE = 1375
|
423
|
+
ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN = 14095
|
424
|
+
|
425
|
+
API.new('GetLastError', 'V', 'L')
|
426
|
+
API.new('SetLastError', 'L', 'V')
|
427
|
+
API.new('SetErrorMode', 'I', 'I')
|
428
|
+
API.new('FormatMessage', 'LLLLPLP', 'L')
|
429
|
+
|
430
|
+
begin
|
431
|
+
API.new('GetErrorMode', 'V', 'I')
|
432
|
+
rescue Win32::API::LoadLibraryError
|
433
|
+
# Vista or later
|
434
|
+
end
|
435
|
+
|
436
|
+
begin
|
437
|
+
API.new('SetLastErrorEx', 'LL', 'V', 'user32')
|
438
|
+
rescue Win32::API::LoadLibraryError
|
439
|
+
# VC++ 7.0 or later
|
440
|
+
end
|
441
|
+
|
442
|
+
# Convenience method that wraps FormatMessage with some sane defaults and
|
443
|
+
# returns a human readable string.
|
444
|
+
#
|
445
|
+
def get_last_error(err_num = GetLastError.call)
|
446
|
+
buf = 0.chr * 260
|
447
|
+
flags = FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY
|
448
|
+
FormatMessageA.call(flags, 0, err_num, 0, buf, buf.size, 0)
|
449
|
+
buf.strip
|
450
|
+
end
|
451
|
+
|
452
|
+
# Macros from WinError.h
|
453
|
+
|
454
|
+
def IS_ERROR(status)
|
455
|
+
status >> 31 == 1
|
456
|
+
end
|
457
|
+
|
458
|
+
def MAKE_HRESULT(sev, fac, code)
|
459
|
+
sev << 31 | fac << 16 | code
|
460
|
+
end
|
461
|
+
|
462
|
+
def MAKE_SCODE(sev, fac, code)
|
463
|
+
sev << 31 | fac << 16 | code
|
464
|
+
end
|
465
|
+
|
466
|
+
def HRESULT_CODE(hr)
|
467
|
+
hr & 0xFFFF
|
468
|
+
end
|
469
|
+
|
470
|
+
def HRESULT_FACILITY(hr)
|
471
|
+
(hr >> 16) & 0x1fff
|
472
|
+
end
|
473
|
+
|
474
|
+
def HRESULT_FROM_NT(x)
|
475
|
+
x | 0x10000000 # FACILITY_NT_BIT
|
476
|
+
end
|
477
|
+
|
478
|
+
def HRESULT_FROM_WIN32(x)
|
479
|
+
if x <= 0
|
480
|
+
x
|
481
|
+
else
|
482
|
+
(x & 0x0000FFFF) | (7 << 16) | 0x80000000
|
483
|
+
end
|
484
|
+
end
|
485
|
+
|
486
|
+
def HRESULT_SEVERITY(hr)
|
487
|
+
(hr >> 31) & 0x1
|
488
|
+
end
|
489
|
+
|
490
|
+
def FAILED(status)
|
491
|
+
status < 0
|
492
|
+
end
|
493
|
+
|
494
|
+
def SUCCEEDED(status)
|
495
|
+
status >= 0
|
496
|
+
end
|
497
|
+
end
|
498
|
+
end
|