module Windows::Error

Constants

ALLOWED_ABORT
ALLOWED_FAIL
ALLOWED_IGNORE
ALLOWED_RETRY
APPLICATION_ERROR_MASK
CLASS_E_NOAGGREGATION
CO_E_NOT_SUPPORTED
DISP_E_BADINDEX
DISP_E_EXCEPTION
DISP_E_MEMBERNOTFOUND
DISP_E_PARAMNOTFOUND
ERRACT_ABORT
ERRACT_DLYRET
ERRACT_IGNORE
ERRACT_INTRET
ERRACT_PANIC
ERRACT_RETRY
ERRACT_USER
ERRCLASS_ALREADY
ERRCLASS_APPERR
ERRCLASS_AUTH
ERRCLASS_BADFMT
ERRCLASS_CANT
ERRCLASS_HRDFAIL
ERRCLASS_INTRN
ERRCLASS_LOCKED
ERRCLASS_MEDIA
ERRCLASS_NOTFND
ERRCLASS_OUTRES
ERRCLASS_SYSFAIL
ERRCLASS_TEMPSIT
ERRCLASS_TIME
ERRCLASS_UNK
ERRLOC_DISK
ERRLOC_MEM
ERRLOC_NET
ERRLOC_SERDEV
ERRLOC_UNK
ERROR_ACCESS_DENIED
ERROR_ALREADY_ASSIGNED
ERROR_ALREADY_EXISTS
ERROR_ARENA_TRASHED
ERROR_AUTODATASEG_EXCEEDS_64k
ERROR_BAD_ARGUMENTS
ERROR_BAD_COMMAND
ERROR_BAD_DRIVER_LEVEL
ERROR_BAD_ENVIRONMENT
ERROR_BAD_EXE_FORMAT
ERROR_BAD_FORMAT
ERROR_BAD_LENGTH
ERROR_BAD_PATHNAME
ERROR_BAD_PIPE
ERROR_BAD_THREADID_ADDR
ERROR_BAD_TOKEN_TYPE
ERROR_BAD_UNIT
ERROR_BROKEN_PIPE
ERROR_BUSY_DRIVE
ERROR_CALL_NOT_IMPLEMENTED
ERROR_CANNOT_MAKE
ERROR_CHILD_ALIVE_NOWAIT
ERROR_CHILD_NOT_COMPLETE
ERROR_CRC
ERROR_CURRENT_DIRECTORY
ERROR_DIRECT_ACCESS_HANDLE
ERROR_DIR_NOT_EMPTY
ERROR_DIR_NOT_ROOT
ERROR_DISCARDED
ERROR_DISK_CHANGE
ERROR_DISK_FULL
ERROR_DRIVE_LOCKED
ERROR_DUP_FCB
ERROR_ENVVAR_NOT_FOUND
ERROR_EXCL_SEM_ALREADY_OWNED
ERROR_EXE_MARKED_INVALID
ERROR_FAIL_I24
ERROR_FCB_UNAVAILABLE
ERROR_FILENAME_EXCED_RANGE
ERROR_FILE_EXISTS
ERROR_FILE_NOT_FOUND
ERROR_GEN_FAILURE
ERROR_HANDLE_DISK_FULL
ERROR_HANDLE_EOF
ERROR_I24_BAD_COMMAND
ERROR_I24_BAD_LENGTH
ERROR_I24_BAD_UNIT
ERROR_I24_CHAR_CALL_INTERRUPTED
ERROR_I24_CRC
ERROR_I24_DISK_CHANGE
ERROR_I24_GEN_FAILURE
ERROR_I24_INVALID_PARAMETER
ERROR_I24_NOT_DOS_DISK
ERROR_I24_NOT_READY
ERROR_I24_NO_MONITOR_SUPPORT
ERROR_I24_OUT_OF_PAPER
ERROR_I24_READ_FAULT
ERROR_I24_SECTOR_NOT_FOUND
ERROR_I24_SEEK
ERROR_I24_UNCERTAIN_MEDIA
ERROR_I24_WRITE_FAULT
ERROR_I24_WRITE_PROTECT
ERROR_I24_WRONG_DISK
ERROR_INFLOOP_IN_RELOC_CHAIN
ERROR_INFO_NOT_AVAIL
ERROR_INSUFFICIENT_BUFFER
ERROR_INTERRUPT
ERROR_INVALID_ACCESS
ERROR_INVALID_AT_INTERRUPT_TIME
ERROR_INVALID_BLOCK
ERROR_INVALID_CALLGATE
ERROR_INVALID_CATEGORY
ERROR_INVALID_DATA
ERROR_INVALID_DRIVE
ERROR_INVALID_EVENT_COUNT
ERROR_INVALID_EXE_SIGNATURE
ERROR_INVALID_FLAGS

From WinError.h

ERROR_INVALID_FLAG_NUMBER
ERROR_INVALID_FUNCTION
ERROR_INVALID_HANDLE
ERROR_INVALID_LEVEL
ERROR_INVALID_LIST_FORMAT
ERROR_INVALID_MINALLOCSIZE
ERROR_INVALID_MODULETYPE
ERROR_INVALID_NAME
ERROR_INVALID_ORDINAL
ERROR_INVALID_PARAMETER
ERROR_INVALID_PASSWORD
ERROR_INVALID_SEGDPL
ERROR_INVALID_SEGMENT_NUMBER
ERROR_INVALID_SIGNAL_NUMBER
ERROR_INVALID_STACKSEG
ERROR_INVALID_STARTING_CODESEG
ERROR_INVALID_TARGET_HANDLE
ERROR_INVALID_VERIFY_SWITCH
ERROR_IOPL_NOT_ENABLED
ERROR_IO_INCOMPLETE
ERROR_IO_PENDING
ERROR_IS_JOINED
ERROR_IS_JOIN_PATH
ERROR_IS_JOIN_TARGET
ERROR_IS_SUBSTED
ERROR_IS_SUBST_PATH
ERROR_IS_SUBST_TARGET
ERROR_ITERATED_DATA_EXCEEDS_64k
ERROR_JOIN_TO_JOIN
ERROR_JOIN_TO_SUBST
ERROR_LABEL_TOO_LONG
ERROR_LOCKED
ERROR_LOCK_VIOLATION
ERROR_MAX_THRDS_REACHED
ERROR_META_EXPANSION_TOO_LONG
ERROR_MOD_NOT_FOUND
ERROR_MONITORS_NOT_SUPPORTED
ERROR_MORE_DATA
ERROR_NEGATIVE_SEEK
ERROR_NESTING_NOT_ALLOWED
ERROR_NET_WRITE_FAULT
ERROR_NOT_CURRENT_CTRY
ERROR_NOT_DOS_DISK
ERROR_NOT_ENOUGH_MEMORY
ERROR_NOT_FROZEN
ERROR_NOT_JOINED
ERROR_NOT_LOCKED
ERROR_NOT_READY
ERROR_NOT_SAME_DEVICE
ERROR_NOT_SUBSTED
ERROR_NOT_SUPPORTED
ERROR_NO_CHILD_PROCESS
ERROR_NO_DATA
ERROR_NO_IMPERSONATION_TOKEN
ERROR_NO_ITEMS
ERROR_NO_MORE_FILES
ERROR_NO_MORE_SEARCH_HANDLES
ERROR_NO_PROC_SLOTS
ERROR_NO_SIGNAL_SENT
ERROR_NO_TOKEN

Token related

ERROR_NO_UNICODE_TRANSLATION
ERROR_NO_VOLUME_LABEL
ERROR_OPEN_FAILED
ERROR_OPERATION_ABORTED
ERROR_OUT_OF_PAPER
ERROR_OUT_OF_STRUCTURES
ERROR_PATH_BUSY
ERROR_PATH_NOT_FOUND
ERROR_PIPE_BUSY
ERROR_PIPE_CONNECTED
ERROR_PIPE_LISTENING
ERROR_PIPE_NOT_CONNECTED
ERROR_PROC_NOT_FOUND
ERROR_PROTECTION_VIOLATION
ERROR_READ_FAULT
ERROR_RELOC_CHAIN_XEEDS_SEGLIM
ERROR_RING2SEG_MUST_BE_MOVABLE
ERROR_RING2_STACK_IN_USE
ERROR_SAME_DRIVE
ERROR_SECTOR_NOT_FOUND
ERROR_SEEK
ERROR_SEEK_ON_DEVICE
ERROR_SEM_IS_SET
ERROR_SEM_NOT_FOUND
ERROR_SEM_OWNER_DIED
ERROR_SEM_TIMEOUT
ERROR_SEM_USER_LIMIT
ERROR_SEVERITY_ERROR
ERROR_SEVERITY_INFORMATIONAL
ERROR_SEVERITY_SUCCESS
ERROR_SEVERITY_WARNING
ERROR_SHARING_BUFFER_EXCEEDED
ERROR_SHARING_VIOLATION
ERROR_SIGNAL_PENDING
ERROR_SIGNAL_REFUSED
ERROR_SUBST_TO_JOIN
ERROR_SUBST_TO_SUBST
ERROR_SUCCESS
ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN
ERROR_SYSTEM_TRACE
ERROR_THREAD_1_INACTIVE
ERROR_TOKEN_ALREADY_IN_USE
ERROR_TOO_MANY_MODULES
ERROR_TOO_MANY_MUXWAITERS
ERROR_TOO_MANY_OPEN_FILES
ERROR_TOO_MANY_SEMAPHORES
ERROR_TOO_MANY_SEM_REQUESTS
ERROR_TOO_MANY_TCBS
ERROR_UNCERTAIN_MEDIA
ERROR_USER_DEFINED_BASE
ERROR_VIOKBD_REQUEST
ERROR_WAIT_NO_CHILDREN
ERROR_WRITE_FAULT
ERROR_WRITE_PROTECT
ERROR_WRONG_DISK
ERR_TSTDUP
ERR_TSTOVFL
E_INVALIDARG
E_NOINTERFACE
E_NOTIMPL
E_OUTOFMEMORY
E_UNEXPECTED
FORMAT_MESSAGE_ALLOCATE_BUFFER
FORMAT_MESSAGE_ARGUMENT_ARRAY
FORMAT_MESSAGE_FROM_HMODULE
FORMAT_MESSAGE_FROM_STRING
FORMAT_MESSAGE_FROM_SYSTEM
FORMAT_MESSAGE_IGNORE_INSERTS
FORMAT_MESSAGE_MAX_WIDTH_MASK
I24_AREA
I24_CLASS
I24_OPERATION
NO_ERROR
REGDB_E_CLASSNOTREG

Registry errors

RPC_E_TIMEOUT
SCHED_E_ACCOUNT_DBASE_CORRUPT
SCHED_E_ACCOUNT_INFORMATION_NOT_SET
SCHED_E_ACCOUNT_NAME_NOT_FOUND
SCHED_E_CANNOT_OPEN_TASK
SCHED_E_INVALID_TASK
SCHED_E_NO_SECURITY_SERVICES
SCHED_E_SERVICE_NOT_INSTALLED
SCHED_E_TASK_NOT_READY
SCHED_E_TASK_NOT_RUNNING
SCHED_E_TRIGGER_NOT_FOUND
SCHED_E_UNKNOWN_OBJECT_VERSION
SCHED_S_EVENT_TRIGGER
SCHED_S_TASK_DISABLED
SCHED_S_TASK_HAS_NOT_RUN
SCHED_S_TASK_HAS_NO_MORE_RUNS
SCHED_S_TASK_NOT_SCHEDULED
SCHED_S_TASK_NO_VALID_TRIGGERS
SCHED_S_TASK_READY

msterr.h

SCHED_S_TASK_RUNNING
SCHED_S_TASK_TERMINATED
SEM_FAILCRITICALERRORS
SEM_NOALIGNMENTFAULTEXCEPT
SEM_NOGPFAULTERRORBOX
SEM_NOOPENFILEERRORBOX
S_OK
TC_GP_TRAP
TC_HARDERR
TC_NORMAL
TC_SIGNAL
WSAEACCESS
WSAEADDRINUSE
WSAEADDRNOTAVAIL
WSAEAFNOSUPPORT
WSAEALREADY
WSAEBADF
WSAECANCELLED
WSAECONNABORTED
WSAECONNREFUSED
WSAECONNRESET
WSAEDESTADDRREQ
WSAEDISCON
WSAEDQUOT
WSAEFAULT
WSAEHOSTDOWN
WSAEHOSTUNREACH
WSAEINPROGRESS
WSAEINTR
WSAEINVAL
WSAEINVALIDPROCTABLE
WSAEINVALIDPROVIDER
WSAEISCONN
WSAELOOP
WSAEMFILE
WSAEMSGSIZE
WSAENAMETOOLONG
WSAENETDOWN
WSAENETRESET
WSAENETUNREACH
WSAENOBUFS
WSAENOEMPTY
WSAENOMORE
WSAENOPROTOOPT
WSAENOTCONN
WSAENOTSOCK
WSAEOPNOTSUPP
WSAEPFNOSUPPORT
WSAEPROCLIM
WSAEPROTONOSUPPORT
WSAEPROTOTYPE
WSAEPROVIDERFAILEDINIT
WSAEREFUSED
WSAEREMOTE
WSAESHUTDOWN
WSAESOCKTNOSUPPORT
WSAESTALE
WSAETOOMANYREFS
WSAEUSERS
WSAEWOULDBLOCK
WSAHOST_NOT_FOUND
WSANOTINITIALISED
WSANO_DATA
WSANO_RECOVERY
WSASERVICE_NOT_FOUND
WSASYSCALLFAILURE
WSASYSNOTREADY
WSATIMEDOUT
WSATRY_AGAIN
WSATYPE_NOT_FOUND
WSAVERNOTSUPPORTED
WSA_E_CANCELLED
WSA_E_NO_MORE
WSA_INVALID_HANDLE

Socket errors

WSA_INVALID_PARAMETER
WSA_IO_INCOMPLETE
WSA_IO_PENDING
WSA_NOT_ENOUGH_MEMORY
WSA_OPERATION_ABORTED
WSA_QOS_RECEIVERS
WSA_QOS_SENDERS

Private Instance Methods

FAILED(status) click to toggle source
# File lib/windows/error.rb, line 496
def FAILED(status)
  status < 0
end
HRESULT_CODE(hr) click to toggle source
# File lib/windows/error.rb, line 472
def HRESULT_CODE(hr)
  hr & 0xFFFF
end
HRESULT_FACILITY(hr) click to toggle source
# File lib/windows/error.rb, line 476
def HRESULT_FACILITY(hr)
  (hr >> 16) & 0x1fff
end
HRESULT_FROM_NT(x) click to toggle source
# File lib/windows/error.rb, line 480
def HRESULT_FROM_NT(x)
  x | 0x10000000 # FACILITY_NT_BIT
end
HRESULT_FROM_WIN32(x) click to toggle source
# File lib/windows/error.rb, line 484
def HRESULT_FROM_WIN32(x)
  if x <= 0
    x
  else
    (x & 0x0000FFFF) | (7 << 16) | 0x80000000
  end
end
HRESULT_SEVERITY(hr) click to toggle source
# File lib/windows/error.rb, line 492
def HRESULT_SEVERITY(hr)
  (hr >> 31) & 0x1
end
IS_ERROR(status) click to toggle source

Macros from WinError.h

# File lib/windows/error.rb, line 460
def IS_ERROR(status)
  status >> 31 == 1
end
MAKE_HRESULT(sev, fac, code) click to toggle source
# File lib/windows/error.rb, line 464
def MAKE_HRESULT(sev, fac, code)
  sev << 31 | fac << 16 | code
end
MAKE_SCODE(sev, fac, code) click to toggle source
# File lib/windows/error.rb, line 468
def MAKE_SCODE(sev, fac, code)
  sev << 31 | fac << 16 | code
end
SUCCEEDED(status) click to toggle source
# File lib/windows/error.rb, line 500
def SUCCEEDED(status)
  status >= 0
end
get_last_error(err_num = GetLastError.call) click to toggle source

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

# File lib/windows/error.rb, line 445
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)

  if RUBY_VERSION < '1.9.1'
    buf.strip
  else
    buf.force_encoding(Encoding.default_external).strip
  end
end