Module: Windows::Error

Included in:
Unicode
Defined in:
lib/windows/error.rb

Constant Summary collapse

FORMAT_MESSAGE_ALLOCATE_BUFFER =
0x00000100
FORMAT_MESSAGE_IGNORE_INSERTS =
0x00000200
FORMAT_MESSAGE_FROM_STRING =
0x00000400
FORMAT_MESSAGE_FROM_HMODULE =
0x00000800
FORMAT_MESSAGE_FROM_SYSTEM =
0x00001000
FORMAT_MESSAGE_ARGUMENT_ARRAY =
0x00002000
FORMAT_MESSAGE_MAX_WIDTH_MASK =
0x000000FF
SEM_FAILCRITICALERRORS =
0x0001
SEM_NOALIGNMENTFAULTEXCEPT =
0x0004
SEM_NOGPFAULTERRORBOX =
0x0002
SEM_NOOPENFILEERRORBOX =
0x8000
S_OK =
0
NO_ERROR =
0
ERROR_SUCCESS =
0
ERROR_INVALID_FUNCTION =
1
ERROR_FILE_NOT_FOUND =
2
ERROR_PATH_NOT_FOUND =
3
ERROR_TOO_MANY_OPEN_FILES =
4
ERROR_ACCESS_DENIED =
5
ERROR_INVALID_HANDLE =
6
ERROR_ARENA_TRASHED =
7
ERROR_NOT_ENOUGH_MEMORY =
8
ERROR_INVALID_BLOCK =
9
ERROR_BAD_ENVIRONMENT =
10
ERROR_BAD_FORMAT =
11
ERROR_INVALID_ACCESS =
12
ERROR_INVALID_DATA =
13
ERROR_INVALID_DRIVE =
15
ERROR_CURRENT_DIRECTORY =
16
ERROR_NOT_SAME_DEVICE =
17
ERROR_NO_MORE_FILES =
18
ERROR_WRITE_PROTECT =
19
ERROR_BAD_UNIT =
20
ERROR_NOT_READY =
21
ERROR_BAD_COMMAND =
22
ERROR_CRC =
23
ERROR_BAD_LENGTH =
24
ERROR_SEEK =
25
ERROR_NOT_DOS_DISK =
26
ERROR_SECTOR_NOT_FOUND =
27
ERROR_OUT_OF_PAPER =
28
ERROR_WRITE_FAULT =
29
ERROR_READ_FAULT =
30
ERROR_GEN_FAILURE =
31
ERROR_SHARING_VIOLATION =
32
ERROR_LOCK_VIOLATION =
33
ERROR_WRONG_DISK =
34
ERROR_FCB_UNAVAILABLE =
35
ERROR_SHARING_BUFFER_EXCEEDED =
36
ERROR_HANDLE_EOF =
38
ERROR_HANDLE_DISK_FULL =
39
ERROR_NOT_SUPPORTED =
50
ERROR_FILE_EXISTS =
80
ERROR_DUP_FCB =
81
ERROR_CANNOT_MAKE =
82
ERROR_FAIL_I24 =
83
ERROR_OUT_OF_STRUCTURES =
84
ERROR_ALREADY_ASSIGNED =
85
ERROR_INVALID_PASSWORD =
86
ERROR_INVALID_PARAMETER =
87
ERROR_NET_WRITE_FAULT =
88
ERROR_NO_PROC_SLOTS =

no process slots available

89
ERROR_NOT_FROZEN =
90
ERR_TSTOVFL =

timer service table overflow

91
ERR_TSTDUP =

timer service table duplicate

92
ERROR_NO_ITEMS =

There were no items to operate upon

93
ERROR_INTERRUPT =

interrupted system call

95
ERROR_TOO_MANY_SEMAPHORES =
100
ERROR_EXCL_SEM_ALREADY_OWNED =
101
ERROR_SEM_IS_SET =
102
ERROR_TOO_MANY_SEM_REQUESTS =
103
ERROR_INVALID_AT_INTERRUPT_TIME =
104
ERROR_SEM_OWNER_DIED =

waitsem found owner died

105
ERROR_SEM_USER_LIMIT =

too many procs have this sem

106
ERROR_DISK_CHANGE =

insert disk b into drive a

107
ERROR_DRIVE_LOCKED =

drive locked by another process

108
ERROR_BROKEN_PIPE =

write on pipe with no reader

109
ERROR_OPEN_FAILED =

open/created failed

110
ERROR_DISK_FULL =

not enough space

112
ERROR_NO_MORE_SEARCH_HANDLES =

can’t allocate

113
ERROR_INVALID_TARGET_HANDLE =

handle in DOSDUPHANDLE is invalid

114
ERROR_PROTECTION_VIOLATION =

bad user virtual address

115
ERROR_VIOKBD_REQUEST =
116
ERROR_INVALID_CATEGORY =

category for DEVIOCTL not defined

117
ERROR_INVALID_VERIFY_SWITCH =

invalid value

118
ERROR_BAD_DRIVER_LEVEL =

DosDevIOCTL not level four

119
ERROR_CALL_NOT_IMPLEMENTED =
120
ERROR_SEM_TIMEOUT =

timeout from semaphore function

121
ERROR_INSUFFICIENT_BUFFER =
122
ERROR_INVALID_NAME =

illegal char or malformed file system name

123
ERROR_INVALID_LEVEL =

unimplemented level for info retrieval

124
ERROR_NO_VOLUME_LABEL =

no volume label found

125
ERROR_MOD_NOT_FOUND =

w_getprocaddr, w_getmodhandle

126
ERROR_PROC_NOT_FOUND =

w_getprocaddr

127
ERROR_WAIT_NO_CHILDREN =

CWait finds to children

128
ERROR_CHILD_NOT_COMPLETE =

CWait children not dead yet

129
ERROR_DIRECT_ACCESS_HANDLE =

invalid for direct disk access

130
ERROR_NEGATIVE_SEEK =

tried to seek negative offset

131
ERROR_SEEK_ON_DEVICE =

tried to seek on device or pipe

132
ERROR_IS_JOIN_TARGET =
133
ERROR_IS_JOINED =
134
ERROR_IS_SUBSTED =
135
ERROR_NOT_JOINED =
136
ERROR_NOT_SUBSTED =
137
ERROR_JOIN_TO_JOIN =
138
ERROR_SUBST_TO_SUBST =
139
ERROR_JOIN_TO_SUBST =
140
ERROR_SUBST_TO_JOIN =
141
ERROR_BUSY_DRIVE =
142
ERROR_SAME_DRIVE =
143
ERROR_DIR_NOT_ROOT =
144
ERROR_DIR_NOT_EMPTY =
145
ERROR_IS_SUBST_PATH =
146
ERROR_IS_JOIN_PATH =
147
ERROR_PATH_BUSY =
148
ERROR_IS_SUBST_TARGET =
149
ERROR_SYSTEM_TRACE =

system trace error

150
ERROR_INVALID_EVENT_COUNT =

DosMuxSemWait errors

151
ERROR_TOO_MANY_MUXWAITERS =
152
ERROR_INVALID_LIST_FORMAT =
153
ERROR_LABEL_TOO_LONG =
154
ERROR_TOO_MANY_TCBS =
155
ERROR_SIGNAL_REFUSED =
156
ERROR_DISCARDED =
157
ERROR_NOT_LOCKED =
158
ERROR_BAD_THREADID_ADDR =
159
ERROR_BAD_ARGUMENTS =
160
ERROR_BAD_PATHNAME =
161
ERROR_SIGNAL_PENDING =
162
ERROR_UNCERTAIN_MEDIA =
163
ERROR_MAX_THRDS_REACHED =
164
ERROR_MONITORS_NOT_SUPPORTED =
165
ERROR_INVALID_SEGMENT_NUMBER =
180
ERROR_INVALID_CALLGATE =
181
ERROR_INVALID_ORDINAL =
182
ERROR_ALREADY_EXISTS =
183
ERROR_NO_CHILD_PROCESS =
184
ERROR_CHILD_ALIVE_NOWAIT =
185
ERROR_INVALID_FLAG_NUMBER =
186
ERROR_SEM_NOT_FOUND =
187
ERROR_INVALID_STARTING_CODESEG =
188
ERROR_INVALID_STACKSEG =
189
ERROR_INVALID_MODULETYPE =
190
ERROR_INVALID_EXE_SIGNATURE =
191
ERROR_EXE_MARKED_INVALID =
192
ERROR_BAD_EXE_FORMAT =
193
ERROR_ITERATED_DATA_EXCEEDS_64k =
194
ERROR_INVALID_MINALLOCSIZE =
195
196
ERROR_IOPL_NOT_ENABLED =
197
ERROR_INVALID_SEGDPL =
198
ERROR_AUTODATASEG_EXCEEDS_64k =
199
ERROR_RING2SEG_MUST_BE_MOVABLE =
200
ERROR_RELOC_CHAIN_XEEDS_SEGLIM =
201
ERROR_INFLOOP_IN_RELOC_CHAIN =
202
ERROR_ENVVAR_NOT_FOUND =
203
ERROR_NOT_CURRENT_CTRY =
204
ERROR_NO_SIGNAL_SENT =
205
ERROR_FILENAME_EXCED_RANGE =

if filename > 8.3

206
ERROR_RING2_STACK_IN_USE =

for FAPI

207
ERROR_META_EXPANSION_TOO_LONG =

if “*a” > 8.3

208
ERROR_INVALID_SIGNAL_NUMBER =
209
ERROR_THREAD_1_INACTIVE =
210
ERROR_INFO_NOT_AVAIL =

@@ PTM 5550

211
ERROR_LOCKED =
212
213
ERROR_TOO_MANY_MODULES =
214
ERROR_NESTING_NOT_ALLOWED =
215
ERROR_BAD_PIPE =
230
ERROR_PIPE_BUSY =
231
ERROR_NO_DATA =
232
ERROR_PIPE_NOT_CONNECTED =
233
ERROR_MORE_DATA =
234
ERROR_PIPE_CONNECTED =
535
ERROR_PIPE_LISTENING =
536
ERROR_OPERATION_ABORTED =
995
ERROR_IO_INCOMPLETE =
996
ERROR_IO_PENDING =
997
ERROR_USER_DEFINED_BASE =
0xF000
ERROR_I24_WRITE_PROTECT =
0
ERROR_I24_BAD_UNIT =
1
ERROR_I24_NOT_READY =
2
ERROR_I24_BAD_COMMAND =
3
ERROR_I24_CRC =
4
ERROR_I24_BAD_LENGTH =
5
ERROR_I24_SEEK =
6
ERROR_I24_NOT_DOS_DISK =
7
ERROR_I24_SECTOR_NOT_FOUND =
8
ERROR_I24_OUT_OF_PAPER =
9
ERROR_I24_WRITE_FAULT =
0x0A
ERROR_I24_READ_FAULT =
0x0B
ERROR_I24_GEN_FAILURE =
0x0C
ERROR_I24_DISK_CHANGE =
0x0D
ERROR_I24_WRONG_DISK =
0x0F
ERROR_I24_UNCERTAIN_MEDIA =
0x10
ERROR_I24_CHAR_CALL_INTERRUPTED =
0x11
ERROR_I24_NO_MONITOR_SUPPORT =
0x12
ERROR_I24_INVALID_PARAMETER =
0x13
APPLICATION_ERROR_MASK =
0x20000000
ERROR_SEVERITY_SUCCESS =
0x00000000
ERROR_SEVERITY_INFORMATIONAL =
0x40000000
ERROR_SEVERITY_WARNING =
0x80000000
ERROR_SEVERITY_ERROR =
0xc0000000
ALLOWED_FAIL =
0x0001
ALLOWED_ABORT =
0x0002
ALLOWED_RETRY =
0x0004
ALLOWED_IGNORE =
0x0008
I24_OPERATION =
0x1
I24_AREA =
0x6
I24_CLASS =
0x80
ERRCLASS_OUTRES =

Out of Resource

1
ERRCLASS_TEMPSIT =

Temporary Situation

2
ERRCLASS_AUTH =

Permission problem

3
ERRCLASS_INTRN =

Internal System Error

4
ERRCLASS_HRDFAIL =

Hardware Failure

5
ERRCLASS_SYSFAIL =

System Failure

6
ERRCLASS_APPERR =

Application Error

7
ERRCLASS_NOTFND =

Not Found

8
ERRCLASS_BADFMT =

Bad Format

9
ERRCLASS_LOCKED =

Locked

10
ERRCLASS_MEDIA =

Media Failure

11
ERRCLASS_ALREADY =

Collision with Existing Item

12
ERRCLASS_UNK =

Unknown/other

13
ERRCLASS_CANT =
14
ERRCLASS_TIME =
15
ERRACT_RETRY =

Retry

1
ERRACT_DLYRET =

Delay Retry, retry after pause

2
ERRACT_USER =

Ask user to regive info

3
ERRACT_ABORT =

abort with clean up

4
ERRACT_PANIC =

abort immediately

5
ERRACT_IGNORE =

ignore

6
ERRACT_INTRET =

Retry after User Intervention

7
ERRLOC_UNK =

No appropriate value

1
ERRLOC_DISK =

Random Access Mass Storage

2
ERRLOC_NET =

Network

3
ERRLOC_SERDEV =

Serial Device

4
ERRLOC_MEM =

Memory

5
TC_NORMAL =
0
TC_HARDERR =
1
TC_GP_TRAP =
2
TC_SIGNAL =
3
ERROR_INVALID_FLAGS =

From WinError.h

0x1004
ERROR_NO_UNICODE_TRANSLATION =
0x1113
E_INVALIDARG =
0x80070057
E_NOINTERFACE =
0x80004002
E_NOTIMPL =
0x80004001
E_OUTOFMEMORY =
0x8007000E
E_UNEXPECTED =
0x8000FFFF
RPC_E_TIMEOUT =
0x8001011F
CO_E_NOT_SUPPORTED =
0x80004021
CLASS_E_NOAGGREGATION =
0x80040110
DISP_E_BADINDEX =
0x8002000B
DISP_E_PARAMNOTFOUND =
0x80020004
DISP_E_EXCEPTION =
0x80020009
DISP_E_MEMBERNOTFOUND =
0x80020003
REGDB_E_CLASSNOTREG =

Registry errors

0x80040154
SCHED_S_TASK_READY =

msterr.h

0x00041300
SCHED_S_TASK_RUNNING =
0x00041301
SCHED_S_TASK_DISABLED =
0x00041302
SCHED_S_TASK_HAS_NOT_RUN =
0x00041303
SCHED_S_TASK_HAS_NO_MORE_RUNS =
0x00041304
SCHED_S_TASK_NOT_SCHEDULED =
0x00041305
SCHED_S_TASK_TERMINATED =
0x00041306
SCHED_S_TASK_NO_VALID_TRIGGERS =
0x00041307
SCHED_S_EVENT_TRIGGER =
0x00041308
SCHED_E_TRIGGER_NOT_FOUND =
0x00041309
SCHED_E_TASK_NOT_READY =
0x0004130A
SCHED_E_TASK_NOT_RUNNING =
0x0004130B
SCHED_E_SERVICE_NOT_INSTALLED =
0x0004130C
SCHED_E_CANNOT_OPEN_TASK =
0x0004130D
SCHED_E_INVALID_TASK =
0x0004130E
SCHED_E_ACCOUNT_INFORMATION_NOT_SET =
0x0004130F
SCHED_E_ACCOUNT_NAME_NOT_FOUND =
0x00041310
SCHED_E_ACCOUNT_DBASE_CORRUPT =
0x00041311
SCHED_E_NO_SECURITY_SERVICES =
0x00041312
SCHED_E_UNKNOWN_OBJECT_VERSION =
0x00041313
WSA_INVALID_HANDLE =

Socket errors

6
WSA_NOT_ENOUGH_MEMORY =
8
WSA_INVALID_PARAMETER =
87
WSA_OPERATION_ABORTED =
995
WSA_IO_INCOMPLETE =
996
WSA_IO_PENDING =
997
WSAEINTR =
10004
WSAEBADF =
10009
WSAEACCESS =
10013
WSAEFAULT =
10014
WSAEINVAL =
10022
WSAEMFILE =
10024
WSAEWOULDBLOCK =
10035
WSAEINPROGRESS =
10036
WSAEALREADY =
10037
WSAENOTSOCK =
10038
WSAEDESTADDRREQ =
10039
WSAEMSGSIZE =
10040
WSAEPROTOTYPE =
10041
WSAENOPROTOOPT =
10042
WSAEPROTONOSUPPORT =
10043
WSAESOCKTNOSUPPORT =
10044
WSAEOPNOTSUPP =
10045
WSAEPFNOSUPPORT =
10046
WSAEAFNOSUPPORT =
10047
WSAEADDRINUSE =
10048
WSAEADDRNOTAVAIL =
10049
WSAENETDOWN =
10050
WSAENETUNREACH =
10051
WSAENETRESET =
10052
WSAECONNABORTED =
10053
WSAECONNRESET =
10054
WSAENOBUFS =
10055
WSAEISCONN =
10056
WSAENOTCONN =
10057
WSAESHUTDOWN =
10058
WSAETOOMANYREFS =
10059
WSATIMEDOUT =
10060
WSAECONNREFUSED =
10061
WSAELOOP =
10062
WSAENAMETOOLONG =
10063
WSAEHOSTDOWN =
10064
WSAEHOSTUNREACH =
10065
WSAENOEMPTY =
10066
WSAEPROCLIM =
10067
WSAEUSERS =
10068
WSAEDQUOT =
10069
WSAESTALE =
10070
WSAEREMOTE =
10071
WSASYSNOTREADY =
10091
WSAVERNOTSUPPORTED =
10092
WSANOTINITIALISED =
10093
WSAEDISCON =
10101
WSAENOMORE =
10102
WSAECANCELLED =
10103
WSAEINVALIDPROCTABLE =
10104
WSAEINVALIDPROVIDER =
10105
WSAEPROVIDERFAILEDINIT =
10106
WSASYSCALLFAILURE =
10107
WSASERVICE_NOT_FOUND =
10108
WSATYPE_NOT_FOUND =
10109
WSA_E_NO_MORE =
10110
WSA_E_CANCELLED =
10111
WSAEREFUSED =
10112
WSAHOST_NOT_FOUND =
11001
WSATRY_AGAIN =
11002
WSANO_RECOVERY =
11003
WSANO_DATA =
11004
WSA_QOS_RECEIVERS =
11005
WSA_QOS_SENDERS =
11006

Instance Method Summary collapse

Instance Method Details

#FAILED(status) ⇒ Object



474
475
476
# File 'lib/windows/error.rb', line 474

def FAILED(status)
  status < 0
end

#get_last_error(err_num = GetLastError.call) ⇒ Object

Convenience method that wraps FormatMessage with some sane defaults and returns a human readable string.



429
430
431
432
433
434
# File 'lib/windows/error.rb', line 429

def get_last_error(err_num = GetLastError.call)
  buf   = 0.chr * 260
  flags = FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY
  FormatMessageA.call(flags, 0, err_num, 0, buf, buf.size, 0)
  buf.strip
end

#HRESULT_CODE(hr) ⇒ Object



450
451
452
# File 'lib/windows/error.rb', line 450

def HRESULT_CODE(hr)
  hr & 0xFFFF
end

#HRESULT_FACILITY(hr) ⇒ Object



454
455
456
# File 'lib/windows/error.rb', line 454

def HRESULT_FACILITY(hr)
  (hr >> 16) & 0x1fff
end

#HRESULT_FROM_NT(x) ⇒ Object



458
459
460
# File 'lib/windows/error.rb', line 458

def HRESULT_FROM_NT(x)
  x | 0x10000000 # FACILITY_NT_BIT
end

#HRESULT_FROM_WIN32(x) ⇒ Object



462
463
464
465
466
467
468
# File 'lib/windows/error.rb', line 462

def HRESULT_FROM_WIN32(x)
  if x <= 0
    x
  else
    (x & 0x0000FFFF) | (7 << 16) | 0x80000000
  end
end

#HRESULT_SEVERITY(hr) ⇒ Object



470
471
472
# File 'lib/windows/error.rb', line 470

def HRESULT_SEVERITY(hr)
  (hr >> 31) & 0x1
end

#IS_ERROR(status) ⇒ Object

Macros from WinError.h



438
439
440
# File 'lib/windows/error.rb', line 438

def IS_ERROR(status)
  status >> 31 == 1
end

#MAKE_HRESULT(sev, fac, code) ⇒ Object



442
443
444
# File 'lib/windows/error.rb', line 442

def MAKE_HRESULT(sev, fac, code)
  sev << 31 | fac << 16 | code
end

#MAKE_SCODE(sev, fac, code) ⇒ Object



446
447
448
# File 'lib/windows/error.rb', line 446

def MAKE_SCODE(sev, fac, code)
  sev << 31 | fac << 16 | code
end

#SUCCEEDED(status) ⇒ Object



478
479
480
# File 'lib/windows/error.rb', line 478

def SUCCEEDED(status)
  status >= 0
end