From 54c41eb44a41151378569769f5f0c40acd51ac38 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Tue, 15 Aug 2017 20:19:56 +0300
Subject: [PATCH 01/14] function import from Windows shared libs

---
 src/lib_windows.cr |  254 ++++++
 src/winerror.cr    | 2104 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 2358 insertions(+)
 create mode 100644 src/lib_windows.cr
 create mode 100644 src/winerror.cr

diff --git a/src/lib_windows.cr b/src/lib_windows.cr
new file mode 100644
index 000000000000..536ba20c4796
--- /dev/null
+++ b/src/lib_windows.cr
@@ -0,0 +1,254 @@
+@[CallConvention("X86_StdCall")]
+lib LibWindows
+  STD_INPUT_HANDLE  = 0xFFFFFFF6_u32
+  STD_OUTPUT_HANDLE = 0xFFFFFFF5_u32
+  STD_ERROR_HANDLE  = 0xFFFFFFF4_u32
+
+  FILE_TYPE_UNKNOWN = 0x0000
+  FILE_TYPE_DISK    = 0x0001
+  FILE_TYPE_CHAR    = 0x0002
+  FILE_TYPE_PIPE    = 0x0003
+  FILE_TYPE_REMOTE  = 0x8000
+
+  GENERIC_EXECUTE = 0x20000000
+  GENERIC_WRITE   = 0x40000000
+  GENERIC_READ    = 0x80000000
+
+  CREATE_NEW        = 1
+  CREATE_ALWAYS     = 2
+  OPEN_EXISTING     = 3
+  OPEN_ALWAYS       = 4
+  TRUNCATE_EXISTING = 5
+
+  FILE_FLAG_OVERLAPPED = 0x40000000
+
+  # source https://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
+  alias Long = Int32
+  alias Word = UInt16
+  alias WChar = UInt16
+  alias DWord = UInt32
+  alias Handle = Void*
+  alias SizeT = UInt64
+  alias BOOL = Int32 # FIXME maybe it need to be removed because it can be confused with Bool
+
+  INVALID_HANDLE_VALUE = Pointer(Void).new((-1).to_u64)
+  INFINITY             = 0xFFFFFFFF_u32
+
+  fun duplicate_handle = DuplicateHandle(source_process : Handle, source : Handle, target_process : Handle, target : Handle*, desired_access : DWord, inherit_handle : Bool, options : DWord) : Bool
+
+  struct Overlapped
+    status : SizeT
+    bytes_transfered : SizeT
+    offset : UInt64
+    event : Handle
+  end
+
+  struct SecurityAttributes
+    length : DWord
+    security_descriptors : Void*
+    inherit_handle : BOOL
+  end
+
+  fun get_std_handle = GetStdHandle(std_handle : DWord) : Handle
+  fun get_file_type = GetFileType(file : Handle) : DWord
+  fun create_file = CreateFileA(filename : UInt8*, access : DWord, sharemode : DWord, security_attributes : SecurityAttributes*, creation : DWord, flags : DWord, template : Handle) : Handle
+  fun read_file = ReadFile(file : Handle, buffer : UInt8*, size : DWord, read : DWord*, overlapped : Overlapped*) : Bool
+  fun write_file = WriteFile(file : Handle, buffer : UInt8*, size : DWord, written : DWord*, overlapped : Overlapped*) : Bool
+  fun close_handle = CloseHandle(file : Handle) : Bool
+
+  fun get_current_directory = GetCurrentDirectoryA(size : DWord,  buffer : UInt8*) : DWord
+  fun set_current_directory = SetCurrentDirectoryA(path : UInt8*) : BOOL
+  fun create_directory = CreateDirectoryA(path : UInt8*, security_attribute : Void*): BOOL
+  fun remove_directory = RemoveDirectoryA(path : UInt8*) : BOOL
+  fun get_temp_path = GetTempPathA(len : DWord, buffer : UInt8*) : DWord
+
+  MAX_PATH = 260
+
+  struct FILETIME
+    dwLowDateTime : DWord
+    dwHighDateTime : DWord
+  end
+  
+  struct WIN32_FIND_DATA_A
+    dwFileAttributes: DWord
+    ftCreationTime: FILETIME
+    ftLastAccessTime: FILETIME
+    ftLastWriteTime: FILETIME
+    nFileSizeHigh: DWord
+    nFileSizeLow: DWord
+    dwReserved0: DWord
+    dwReserved1: DWord
+    cFileName: StaticArray(UInt8, MAX_PATH)
+    cAlternateFileName: StaticArray(UInt8, 14)
+  end
+
+  FILE_ATTRIBUTE_ARCHIVE        = 32_i32
+  FILE_ATTRIBUTE_COMPRESSED     = 2048_i32
+  FILE_ATTRIBUTE_NORMAL         = 128_i32
+  FILE_ATTRIBUTE_DIRECTORY      = 16_i32
+  FILE_ATTRIBUTE_HIDDEN         = 2_i32
+  FILE_ATTRIBUTE_READONLY       = 1_i32
+  FILE_ATTRIBUTE_REPARSE_POINT  = 1024_i32
+  FILE_ATTRIBUTE_SYSTEM         = 4_i32
+  FILE_ATTRIBUTE_TEMPORARY      = 256_i32
+  INVALID_FILE_ATTRIBUTES       = -1_i32
+  
+  FILE_BEGIN                    = 0_i32
+  FILE_CURRENT                  = 1_i32
+  FILE_END                      = 2_i32
+  INVALID_SET_FILE_POINTER      = (-1).to_u32
+
+  fun find_first_file = FindFirstFileA(fileName: UInt8*, filedata: WIN32_FIND_DATA_A*) : Handle
+  fun find_next_file = FindNextFileA(file: Handle, filedata: WIN32_FIND_DATA_A*) : BOOL
+  fun find_close = FindClose(file: Handle) : BOOL
+  fun get_file_attributes = GetFileAttributesA(filename : UInt8*) : DWord;
+  fun get_file_size = GetFileSize(file : Handle, fileSizeHigh : DWord*) : DWord
+  fun get_file_size_ex = GetFileSizeEx(file : Handle, size : UInt64*) : BOOL
+  fun get_file_time = GetFileTime(file : Handle, lpCreationTime : FILETIME*, lpLastAccessTime : FILETIME*, lpLastWriteTime : FILETIME*) : BOOL
+  fun set_file_pointer = SetFilePointer(file : Handle, lDistanceToMove : Long, lpDistanceToMoveHigh : Long*, dwMoveMethod : DWord) : DWord
+  fun set_end_of_file = SetEndOfFile(file : Handle) : BOOL
+  fun delete_file = DeleteFileA(filename : UInt8*) : BOOL
+  fun get_full_path_name = GetFullPathNameA(filename : UInt8*, buf_len : DWord, lpBuffer : UInt8*, lpFilePart : UInt8**) : DWord
+  # from Shlwapi.lib
+  # fun path_file_dir_exists = PathFileExistsA(path : UInt8*) : BOOL
+  fun move_file = MoveFileA(lpExistingFileName : UInt8*, lpNewFileName : UInt8*) : BOOL
+  fun get_temp_file_name = GetTempFileNameA(path_name : UInt8*, prefix : UInt8*, unique_num : UInt32, temp_file_name : UInt8*) : UInt32
+
+  fun create_io_completion_port = CreateIoCompletionPort(file : Handle, port : Handle, data : Void*, threads : DWord) : Handle
+  fun get_queued_completion_status = GetQueuedCompletionStatus(port : Handle, bytes_transfered : DWord*, data : Void**, entry : Overlapped**, timeout_millis : DWord) : Bool
+  fun post_queued_completion_status = PostQueuedCompletionStatus(port : Handle, bytes_transfered : DWord, data : Void*, entry : Overlapped*) : Bool
+  fun get_current_process = GetCurrentProcess : Handle
+  fun get_current_thread = GetCurrentThread : Handle
+  fun create_pipe = CreatePipe(hReadPipe : UInt64*, hWritePipe : UInt64*, lpPipeAttributes : SecurityAttributes*, nSize : DWord) : BOOL
+  fun peek_named_pipe = PeekNamedPipe(hNamedPipe : Handle, lpBuffer : UInt8*, nBufferSize : DWord, lpBytesRead : DWord*, lpTotalBytesAvail : DWord*, lpBytesLeftThisMessage : DWord*) : BOOL
+
+  WAIT_ABANDONED = 0x00000080_u32
+  WAIT_OBJECT_0  = 0x00000000_u32
+  WAIT_TIMEOUT   = 0x00000102_u32
+  WAIT_FAILED    = 0xFFFFFFFF_u32
+
+  fun wait_for_single_object = WaitForSingleObject(handle : Handle, timeout_millis : DWord) : DWord
+  fun create_timer_queue_timer = CreateTimerQueueTimer(timer_handle : Handle*, queue_handle : Handle, callback : (Void*, Bool) ->, data : Void*, due : DWord, period : DWord, flags : SizeT) : Bool
+  fun delete_timer_queue_timer = DeleteTimerQueueTimer(queue_handle : Handle, timer_handle : Handle, completion_event : Handle) : Bool
+  fun get_last_error = GetLastError : DWord
+  fun set_last_error = SetLastError(code : DWord) : Void
+
+  # StartupInfoA.deFlags
+  STARTF_USESTDHANDLES = 0x00000100_u32
+
+  # CreateProcessA.dwCreationFlags
+  NORMAL_PRIORITY_CLASS = 0x00000020_u32
+  CREATE_NO_WINDOW = 0x08000000_u32
+
+  struct StartupInfoA
+    cb : DWord
+    lpReserved : UInt8*
+    lpDesktop : UInt8*
+    lpTitle : UInt8*
+    dwX : DWord
+    dwY : DWord
+    dwXSize : DWord
+    dwYSize : DWord
+    dwXCountChars : DWord
+    dwYCountChars : DWord
+    dwFillAttribute : DWord
+    dwFlags : DWord
+    wShowWindow : Word
+    cbReserved2 : Word
+    lpReserved2: UInt8*
+    hStdInput : Handle
+    hStdOutput : Handle
+    hStdError : Handle
+  end
+
+  struct Process_Information
+    hProcess : Handle
+    hThread : Handle
+    dwProcessId : DWord
+    dwThreadId : DWord
+  end
+  
+  fun create_process = CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*, 
+                                      lpProcessAttributes : SecurityAttributes*, lpThreadAttributes : SecurityAttributes*, bInheritHandles : BOOL,
+                                      dwCreationFlags : DWord, lpEnvironment : Void*, lpCurrentDirectory : UInt8*, 
+                                      lpStartupInfo : StartupInfoA*, lpProcessInformation : Process_Information*) : BOOL
+  fun kill_process = KillProcess(hProcess : Handle, uExitCode : UInt32) : BOOL
+  fun get_exit_code_process = GetExitCodeProcess(hProcess : Handle, lpExitCode : DWord*) : BOOL
+  
+  FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100_u32
+  FORMAT_MESSAGE_IGNORE_INSERTS  = 0x00000200_u32
+  FORMAT_MESSAGE_FROM_STRING     = 0x00000400_u32
+  FORMAT_MESSAGE_FROM_HMODULE    = 0x00000800_u32
+  FORMAT_MESSAGE_FROM_SYSTEM     = 0x00001000_u32
+  FORMAT_MESSAGE_ARGUMENT_ARRAY  = 0x00002000_u32
+
+  fun format_message = FormatMessageA(flags : DWord, source : Void*, msg : DWord, lang : DWord, buffer : UInt8*, size : DWord, args : Void*) : DWord
+
+  WSASYSNOTREADY     = 10091
+  WSAVERNOTSUPPORTED = 10092
+  WSAEINPROGRESS     = 10036
+  WSAEPROCLIM        = 10067
+  WSAEFAULT          = 10014
+  WSAEINVAL          = 10022
+
+  struct WSAData
+    version : UInt16
+    high_version : UInt16
+    description : UInt8[257]
+    system_status : UInt8[129]
+    max_sockets : UInt16
+    max_udp_datagram : UInt16
+    vendor_info : UInt8*
+  end
+
+  fun wsa_startup = WSAStartup(version : Int16, data : WSAData*) : Int32
+
+  # source https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx
+  struct SystemTime
+    year : Word
+    month : Word
+    day_of_week : Word
+    day : Word
+    hour : Word
+    minute : Word
+    second : Word
+    milliseconds : Word
+  end
+
+  # source https://msdn.microsoft.com/en-us/library/windows/desktop/ms725481(v=vs.85).aspx
+  struct TimeZoneInformation
+    bias : Long
+    standard_name : StaticArray(WChar, 32)
+    standard_date : SystemTime
+    standard_bias : Long
+    daylight_name : StaticArray(WChar, 32)
+    daylight_date : SystemTime
+    daylight_bias : Long
+  end
+
+  struct FileTime
+    low_date_time : DWord
+    high_date_time : DWord
+  end
+
+  fun get_time_zone_information = GetTimeZoneInformation(tz_info : TimeZoneInformation*) : DWord
+  fun get_system_time_as_file_time = GetSystemTimeAsFileTime(time : FileTime*)
+
+
+  fun get_computer_name = GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
+
+  fun cxx_throw_exception = _CxxThrowException(exception_object : Void*, throw_info : Void*) : NoReturn
+end
+
+module WindowsExt
+  @[Primitive(:throw_info)]
+  def self.throw_info : Void*
+  end
+end
+
+require "winerror.cr"
+
+data = uninitialized LibWindows::WSAData
+if LibWindows.wsa_startup(0x0202, pointerof(data)) != 0
+  raise WinError.new "WSAStartup"
+end
diff --git a/src/winerror.cr b/src/winerror.cr
new file mode 100644
index 000000000000..d70cab0c26b6
--- /dev/null
+++ b/src/winerror.cr
@@ -0,0 +1,2104 @@
+class WinError < Exception
+  property code : UInt32
+
+  # NOTE: `get_last_error` must be called BEFORE an instance of this class
+  # is malloced as it would change the "last error" to SUCCESS
+  def self.new(message)
+    new(message, LibWindows.get_last_error)
+  end
+
+  def initialize(message, @code)
+    buffer = uninitialized UInt8[256]
+    size = LibWindows.format_message(LibWindows::FORMAT_MESSAGE_FROM_SYSTEM, nil, @code, 0, buffer, buffer.size, nil)
+    details = String.new(buffer.to_unsafe, size).strip
+    super "#{message}: #{details}"
+  end
+
+  ERROR_SUCCESS                                                 =          0_u32
+  ERROR_INVALID_FUNCTION                                        =          1_u32
+  ERROR_FILE_NOT_FOUND                                          =          2_u32
+  ERROR_PATH_NOT_FOUND                                          =          3_u32
+  ERROR_TOO_MANY_OPEN_FILES                                     =          4_u32
+  ERROR_ACCESS_DENIED                                           =          5_u32
+  ERROR_INVALID_HANDLE                                          =          6_u32
+  ERROR_ARENA_TRASHED                                           =          7_u32
+  ERROR_NOT_ENOUGH_MEMORY                                       =          8_u32
+  ERROR_INVALID_BLOCK                                           =          9_u32
+  ERROR_BAD_ENVIRONMENT                                         =         10_u32
+  ERROR_BAD_FORMAT                                              =         11_u32
+  ERROR_INVALID_ACCESS                                          =         12_u32
+  ERROR_INVALID_DATA                                            =         13_u32
+  ERROR_OUTOFMEMORY                                             =         14_u32
+  ERROR_INVALID_DRIVE                                           =         15_u32
+  ERROR_CURRENT_DIRECTORY                                       =         16_u32
+  ERROR_NOT_SAME_DEVICE                                         =         17_u32
+  ERROR_NO_MORE_FILES                                           =         18_u32
+  ERROR_WRITE_PROTECT                                           =         19_u32
+  ERROR_BAD_UNIT                                                =         20_u32
+  ERROR_NOT_READY                                               =         21_u32
+  ERROR_BAD_COMMAND                                             =         22_u32
+  ERROR_CRC                                                     =         23_u32
+  ERROR_BAD_LENGTH                                              =         24_u32
+  ERROR_SEEK                                                    =         25_u32
+  ERROR_NOT_DOS_DISK                                            =         26_u32
+  ERROR_SECTOR_NOT_FOUND                                        =         27_u32
+  ERROR_OUT_OF_PAPER                                            =         28_u32
+  ERROR_WRITE_FAULT                                             =         29_u32
+  ERROR_READ_FAULT                                              =         30_u32
+  ERROR_GEN_FAILURE                                             =         31_u32
+  ERROR_SHARING_VIOLATION                                       =         32_u32
+  ERROR_LOCK_VIOLATION                                          =         33_u32
+  ERROR_WRONG_DISK                                              =         34_u32
+  ERROR_SHARING_BUFFER_EXCEEDED                                 =         36_u32
+  ERROR_HANDLE_EOF                                              =         38_u32
+  ERROR_HANDLE_DISK_FULL                                        =         39_u32
+  ERROR_NOT_SUPPORTED                                           =         50_u32
+  ERROR_REM_NOT_LIST                                            =         51_u32
+  ERROR_DUP_NAME                                                =         52_u32
+  ERROR_BAD_NETPATH                                             =         53_u32
+  ERROR_NETWORK_BUSY                                            =         54_u32
+  ERROR_DEV_NOT_EXIST                                           =         55_u32
+  ERROR_TOO_MANY_CMDS                                           =         56_u32
+  ERROR_ADAP_HDW_ERR                                            =         57_u32
+  ERROR_BAD_NET_RESP                                            =         58_u32
+  ERROR_UNEXP_NET_ERR                                           =         59_u32
+  ERROR_BAD_REM_ADAP                                            =         60_u32
+  ERROR_PRINTQ_FULL                                             =         61_u32
+  ERROR_NO_SPOOL_SPACE                                          =         62_u32
+  ERROR_PRINT_CANCELLED                                         =         63_u32
+  ERROR_NETNAME_DELETED                                         =         64_u32
+  ERROR_NETWORK_ACCESS_DENIED                                   =         65_u32
+  ERROR_BAD_DEV_TYPE                                            =         66_u32
+  ERROR_BAD_NET_NAME                                            =         67_u32
+  ERROR_TOO_MANY_NAMES                                          =         68_u32
+  ERROR_TOO_MANY_SESS                                           =         69_u32
+  ERROR_SHARING_PAUSED                                          =         70_u32
+  ERROR_REQ_NOT_ACCEP                                           =         71_u32
+  ERROR_REDIR_PAUSED                                            =         72_u32
+  ERROR_FILE_EXISTS                                             =         80_u32
+  ERROR_CANNOT_MAKE                                             =         82_u32
+  ERROR_FAIL_I24                                                =         83_u32
+  ERROR_OUT_OF_STRUCTURES                                       =         84_u32
+  ERROR_ALREADY_ASSIGNED                                        =         85_u32
+  ERROR_INVALID_PASSWORD                                        =         86_u32
+  ERROR_INVALID_PARAMETER                                       =         87_u32
+  ERROR_NET_WRITE_FAULT                                         =         88_u32
+  ERROR_NO_PROC_SLOTS                                           =         89_u32
+  ERROR_TOO_MANY_SEMAPHORES                                     =        100_u32
+  ERROR_EXCL_SEM_ALREADY_OWNED                                  =        101_u32
+  ERROR_SEM_IS_SET                                              =        102_u32
+  ERROR_TOO_MANY_SEM_REQUESTS                                   =        103_u32
+  ERROR_INVALID_AT_INTERRUPT_TIME                               =        104_u32
+  ERROR_SEM_OWNER_DIED                                          =        105_u32
+  ERROR_SEM_USER_LIMIT                                          =        106_u32
+  ERROR_DISK_CHANGE                                             =        107_u32
+  ERROR_DRIVE_LOCKED                                            =        108_u32
+  ERROR_BROKEN_PIPE                                             =        109_u32
+  ERROR_OPEN_FAILED                                             =        110_u32
+  ERROR_BUFFER_OVERFLOW                                         =        111_u32
+  ERROR_DISK_FULL                                               =        112_u32
+  ERROR_NO_MORE_SEARCH_HANDLES                                  =        113_u32
+  ERROR_INVALID_TARGET_HANDLE                                   =        114_u32
+  ERROR_INVALID_CATEGORY                                        =        117_u32
+  ERROR_INVALID_VERIFY_SWITCH                                   =        118_u32
+  ERROR_BAD_DRIVER_LEVEL                                        =        119_u32
+  ERROR_CALL_NOT_IMPLEMENTED                                    =        120_u32
+  ERROR_SEM_TIMEOUT                                             =        121_u32
+  ERROR_INSUFFICIENT_BUFFER                                     =        122_u32
+  ERROR_INVALID_NAME                                            =        123_u32
+  ERROR_INVALID_LEVEL                                           =        124_u32
+  ERROR_NO_VOLUME_LABEL                                         =        125_u32
+  ERROR_MOD_NOT_FOUND                                           =        126_u32
+  ERROR_PROC_NOT_FOUND                                          =        127_u32
+  ERROR_WAIT_NO_CHILDREN                                        =        128_u32
+  ERROR_CHILD_NOT_COMPLETE                                      =        129_u32
+  ERROR_DIRECT_ACCESS_HANDLE                                    =        130_u32
+  ERROR_NEGATIVE_SEEK                                           =        131_u32
+  ERROR_SEEK_ON_DEVICE                                          =        132_u32
+  ERROR_IS_JOIN_TARGET                                          =        133_u32
+  ERROR_IS_JOINED                                               =        134_u32
+  ERROR_IS_SUBSTED                                              =        135_u32
+  ERROR_NOT_JOINED                                              =        136_u32
+  ERROR_NOT_SUBSTED                                             =        137_u32
+  ERROR_JOIN_TO_JOIN                                            =        138_u32
+  ERROR_SUBST_TO_SUBST                                          =        139_u32
+  ERROR_JOIN_TO_SUBST                                           =        140_u32
+  ERROR_SUBST_TO_JOIN                                           =        141_u32
+  ERROR_BUSY_DRIVE                                              =        142_u32
+  ERROR_SAME_DRIVE                                              =        143_u32
+  ERROR_DIR_NOT_ROOT                                            =        144_u32
+  ERROR_DIR_NOT_EMPTY                                           =        145_u32
+  ERROR_IS_SUBST_PATH                                           =        146_u32
+  ERROR_IS_JOIN_PATH                                            =        147_u32
+  ERROR_PATH_BUSY                                               =        148_u32
+  ERROR_IS_SUBST_TARGET                                         =        149_u32
+  ERROR_SYSTEM_TRACE                                            =        150_u32
+  ERROR_INVALID_EVENT_COUNT                                     =        151_u32
+  ERROR_TOO_MANY_MUXWAITERS                                     =        152_u32
+  ERROR_INVALID_LIST_FORMAT                                     =        153_u32
+  ERROR_LABEL_TOO_LONG                                          =        154_u32
+  ERROR_TOO_MANY_TCBS                                           =        155_u32
+  ERROR_SIGNAL_REFUSED                                          =        156_u32
+  ERROR_DISCARDED                                               =        157_u32
+  ERROR_NOT_LOCKED                                              =        158_u32
+  ERROR_BAD_THREADID_ADDR                                       =        159_u32
+  ERROR_BAD_ARGUMENTS                                           =        160_u32
+  ERROR_BAD_PATHNAME                                            =        161_u32
+  ERROR_SIGNAL_PENDING                                          =        162_u32
+  ERROR_MAX_THRDS_REACHED                                       =        164_u32
+  ERROR_LOCK_FAILED                                             =        167_u32
+  ERROR_BUSY                                                    =        170_u32
+  ERROR_CANCEL_VIOLATION                                        =        173_u32
+  ERROR_ATOMIC_LOCKS_NOT_SUPPORTED                              =        174_u32
+  ERROR_INVALID_SEGMENT_NUMBER                                  =        180_u32
+  ERROR_INVALID_ORDINAL                                         =        182_u32
+  ERROR_ALREADY_EXISTS                                          =        183_u32
+  ERROR_INVALID_FLAG_NUMBER                                     =        186_u32
+  ERROR_SEM_NOT_FOUND                                           =        187_u32
+  ERROR_INVALID_STARTING_CODESEG                                =        188_u32
+  ERROR_INVALID_STACKSEG                                        =        189_u32
+  ERROR_INVALID_MODULETYPE                                      =        190_u32
+  ERROR_INVALID_EXE_SIGNATURE                                   =        191_u32
+  ERROR_EXE_MARKED_INVALID                                      =        192_u32
+  ERROR_BAD_EXE_FORMAT                                          =        193_u32
+  ERROR_ITERATED_DATA_EXCEEDS_64k                               =        194_u32
+  ERROR_INVALID_MINALLOCSIZE                                    =        195_u32
+  ERROR_DYNLINK_FROM_INVALID_RING                               =        196_u32
+  ERROR_IOPL_NOT_ENABLED                                        =        197_u32
+  ERROR_INVALID_SEGDPL                                          =        198_u32
+  ERROR_AUTODATASEG_EXCEEDS_64k                                 =        199_u32
+  ERROR_RING2SEG_MUST_BE_MOVABLE                                =        200_u32
+  ERROR_RELOC_CHAIN_XEEDS_SEGLIM                                =        201_u32
+  ERROR_INFLOOP_IN_RELOC_CHAIN                                  =        202_u32
+  ERROR_ENVVAR_NOT_FOUND                                        =        203_u32
+  ERROR_NO_SIGNAL_SENT                                          =        205_u32
+  ERROR_FILENAME_EXCED_RANGE                                    =        206_u32
+  ERROR_RING2_STACK_IN_USE                                      =        207_u32
+  ERROR_META_EXPANSION_TOO_LONG                                 =        208_u32
+  ERROR_INVALID_SIGNAL_NUMBER                                   =        209_u32
+  ERROR_THREAD_1_INACTIVE                                       =        210_u32
+  ERROR_LOCKED                                                  =        212_u32
+  ERROR_TOO_MANY_MODULES                                        =        214_u32
+  ERROR_NESTING_NOT_ALLOWED                                     =        215_u32
+  ERROR_EXE_MACHINE_TYPE_MISMATCH                               =        216_u32
+  ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY                         =        217_u32
+  ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY                  =        218_u32
+  ERROR_FILE_CHECKED_OUT                                        =        220_u32
+  ERROR_CHECKOUT_REQUIRED                                       =        221_u32
+  ERROR_BAD_FILE_TYPE                                           =        222_u32
+  ERROR_FILE_TOO_LARGE                                          =        223_u32
+  ERROR_FORMS_AUTH_REQUIRED                                     =        224_u32
+  ERROR_PIPE_LOCAL                                              =        229_u32
+  ERROR_BAD_PIPE                                                =        230_u32
+  ERROR_PIPE_BUSY                                               =        231_u32
+  ERROR_NO_DATA                                                 =        232_u32
+  ERROR_PIPE_NOT_CONNECTED                                      =        233_u32
+  ERROR_MORE_DATA                                               =        234_u32
+  ERROR_VC_DISCONNECTED                                         =        240_u32
+  ERROR_INVALID_EA_NAME                                         =        254_u32
+  ERROR_EA_LIST_INCONSISTENT                                    =        255_u32
+  WAIT_TIMEOUT                                                  =        258_u32
+  ERROR_NO_MORE_ITEMS                                           =        259_u32
+  ERROR_CANNOT_COPY                                             =        266_u32
+  ERROR_DIRECTORY                                               =        267_u32
+  ERROR_EAS_DIDNT_FIT                                           =        275_u32
+  ERROR_EA_FILE_CORRUPT                                         =        276_u32
+  ERROR_EA_TABLE_FULL                                           =        277_u32
+  ERROR_INVALID_EA_HANDLE                                       =        278_u32
+  ERROR_EAS_NOT_SUPPORTED                                       =        282_u32
+  ERROR_NOT_OWNER                                               =        288_u32
+  ERROR_TOO_MANY_POSTS                                          =        298_u32
+  ERROR_PARTIAL_COPY                                            =        299_u32
+  ERROR_OPLOCK_NOT_GRANTED                                      =        300_u32
+  ERROR_INVALID_OPLOCK_PROTOCOL                                 =        301_u32
+  ERROR_DISK_TOO_FRAGMENTED                                     =        302_u32
+  ERROR_DELETE_PENDING                                          =        303_u32
+  ERROR_MR_MID_NOT_FOUND                                        =        317_u32
+  ERROR_SCOPE_NOT_FOUND                                         =        318_u32
+  ERROR_INVALID_ADDRESS                                         =        487_u32
+  ERROR_ARITHMETIC_OVERFLOW                                     =        534_u32
+  ERROR_PIPE_CONNECTED                                          =        535_u32
+  ERROR_PIPE_LISTENING                                          =        536_u32
+  ERROR_WAKE_SYSTEM                                             =        730_u32
+  ERROR_WAIT_1                                                  =        731_u32
+  ERROR_WAIT_2                                                  =        732_u32
+  ERROR_WAIT_3                                                  =        733_u32
+  ERROR_WAIT_63                                                 =        734_u32
+  ERROR_ABANDONED_WAIT_0                                        =        735_u32
+  ERROR_ABANDONED_WAIT_63                                       =        736_u32
+  ERROR_USER_APC                                                =        737_u32
+  ERROR_KERNEL_APC                                              =        738_u32
+  ERROR_ALERTED                                                 =        739_u32
+  ERROR_EA_ACCESS_DENIED                                        =        994_u32
+  ERROR_OPERATION_ABORTED                                       =        995_u32
+  ERROR_IO_INCOMPLETE                                           =        996_u32
+  ERROR_IO_PENDING                                              =        997_u32
+  ERROR_NOACCESS                                                =        998_u32
+  ERROR_SWAPERROR                                               =        999_u32
+  ERROR_STACK_OVERFLOW                                          =       1001_u32
+  ERROR_INVALID_MESSAGE                                         =       1002_u32
+  ERROR_CAN_NOT_COMPLETE                                        =       1003_u32
+  ERROR_INVALID_FLAGS                                           =       1004_u32
+  ERROR_UNRECOGNIZED_VOLUME                                     =       1005_u32
+  ERROR_FILE_INVALID                                            =       1006_u32
+  ERROR_FULLSCREEN_MODE                                         =       1007_u32
+  ERROR_NO_TOKEN                                                =       1008_u32
+  ERROR_BADDB                                                   =       1009_u32
+  ERROR_BADKEY                                                  =       1010_u32
+  ERROR_CANTOPEN                                                =       1011_u32
+  ERROR_CANTREAD                                                =       1012_u32
+  ERROR_CANTWRITE                                               =       1013_u32
+  ERROR_REGISTRY_RECOVERED                                      =       1014_u32
+  ERROR_REGISTRY_CORRUPT                                        =       1015_u32
+  ERROR_REGISTRY_IO_FAILED                                      =       1016_u32
+  ERROR_NOT_REGISTRY_FILE                                       =       1017_u32
+  ERROR_KEY_DELETED                                             =       1018_u32
+  ERROR_NO_LOG_SPACE                                            =       1019_u32
+  ERROR_KEY_HAS_CHILDREN                                        =       1020_u32
+  ERROR_CHILD_MUST_BE_VOLATILE                                  =       1021_u32
+  ERROR_NOTIFY_ENUM_DIR                                         =       1022_u32
+  ERROR_DEPENDENT_SERVICES_RUNNING                              =       1051_u32
+  ERROR_INVALID_SERVICE_CONTROL                                 =       1052_u32
+  ERROR_SERVICE_REQUEST_TIMEOUT                                 =       1053_u32
+  ERROR_SERVICE_NO_THREAD                                       =       1054_u32
+  ERROR_SERVICE_DATABASE_LOCKED                                 =       1055_u32
+  ERROR_SERVICE_ALREADY_RUNNING                                 =       1056_u32
+  ERROR_INVALID_SERVICE_ACCOUNT                                 =       1057_u32
+  ERROR_SERVICE_DISABLED                                        =       1058_u32
+  ERROR_CIRCULAR_DEPENDENCY                                     =       1059_u32
+  ERROR_SERVICE_DOES_NOT_EXIST                                  =       1060_u32
+  ERROR_SERVICE_CANNOT_ACCEPT_CTRL                              =       1061_u32
+  ERROR_SERVICE_NOT_ACTIVE                                      =       1062_u32
+  ERROR_FAILED_SERVICE_CONTROLLER_CONNECT                       =       1063_u32
+  ERROR_EXCEPTION_IN_SERVICE                                    =       1064_u32
+  ERROR_DATABASE_DOES_NOT_EXIST                                 =       1065_u32
+  ERROR_SERVICE_SPECIFIC_ERROR                                  =       1066_u32
+  ERROR_PROCESS_ABORTED                                         =       1067_u32
+  ERROR_SERVICE_DEPENDENCY_FAIL                                 =       1068_u32
+  ERROR_SERVICE_LOGON_FAILED                                    =       1069_u32
+  ERROR_SERVICE_START_HANG                                      =       1070_u32
+  ERROR_INVALID_SERVICE_LOCK                                    =       1071_u32
+  ERROR_SERVICE_MARKED_FOR_DELETE                               =       1072_u32
+  ERROR_SERVICE_EXISTS                                          =       1073_u32
+  ERROR_ALREADY_RUNNING_LKG                                     =       1074_u32
+  ERROR_SERVICE_DEPENDENCY_DELETED                              =       1075_u32
+  ERROR_BOOT_ALREADY_ACCEPTED                                   =       1076_u32
+  ERROR_SERVICE_NEVER_STARTED                                   =       1077_u32
+  ERROR_DUPLICATE_SERVICE_NAME                                  =       1078_u32
+  ERROR_DIFFERENT_SERVICE_ACCOUNT                               =       1079_u32
+  ERROR_CANNOT_DETECT_DRIVER_FAILURE                            =       1080_u32
+  ERROR_CANNOT_DETECT_PROCESS_ABORT                             =       1081_u32
+  ERROR_NO_RECOVERY_PROGRAM                                     =       1082_u32
+  ERROR_SERVICE_NOT_IN_EXE                                      =       1083_u32
+  ERROR_NOT_SAFEBOOT_SERVICE                                    =       1084_u32
+  ERROR_END_OF_MEDIA                                            =       1100_u32
+  ERROR_FILEMARK_DETECTED                                       =       1101_u32
+  ERROR_BEGINNING_OF_MEDIA                                      =       1102_u32
+  ERROR_SETMARK_DETECTED                                        =       1103_u32
+  ERROR_NO_DATA_DETECTED                                        =       1104_u32
+  ERROR_PARTITION_FAILURE                                       =       1105_u32
+  ERROR_INVALID_BLOCK_LENGTH                                    =       1106_u32
+  ERROR_DEVICE_NOT_PARTITIONED                                  =       1107_u32
+  ERROR_UNABLE_TO_LOCK_MEDIA                                    =       1108_u32
+  ERROR_UNABLE_TO_UNLOAD_MEDIA                                  =       1109_u32
+  ERROR_MEDIA_CHANGED                                           =       1110_u32
+  ERROR_BUS_RESET                                               =       1111_u32
+  ERROR_NO_MEDIA_IN_DRIVE                                       =       1112_u32
+  ERROR_NO_UNICODE_TRANSLATION                                  =       1113_u32
+  ERROR_DLL_INIT_FAILED                                         =       1114_u32
+  ERROR_SHUTDOWN_IN_PROGRESS                                    =       1115_u32
+  ERROR_NO_SHUTDOWN_IN_PROGRESS                                 =       1116_u32
+  ERROR_IO_DEVICE                                               =       1117_u32
+  ERROR_SERIAL_NO_DEVICE                                        =       1118_u32
+  ERROR_IRQ_BUSY                                                =       1119_u32
+  ERROR_MORE_WRITES                                             =       1120_u32
+  ERROR_COUNTER_TIMEOUT                                         =       1121_u32
+  ERROR_FLOPPY_ID_MARK_NOT_FOUND                                =       1122_u32
+  ERROR_FLOPPY_WRONG_CYLINDER                                   =       1123_u32
+  ERROR_FLOPPY_UNKNOWN_ERROR                                    =       1124_u32
+  ERROR_FLOPPY_BAD_REGISTERS                                    =       1125_u32
+  ERROR_DISK_RECALIBRATE_FAILED                                 =       1126_u32
+  ERROR_DISK_OPERATION_FAILED                                   =       1127_u32
+  ERROR_DISK_RESET_FAILED                                       =       1128_u32
+  ERROR_EOM_OVERFLOW                                            =       1129_u32
+  ERROR_NOT_ENOUGH_SERVER_MEMORY                                =       1130_u32
+  ERROR_POSSIBLE_DEADLOCK                                       =       1131_u32
+  ERROR_MAPPED_ALIGNMENT                                        =       1132_u32
+  ERROR_SET_POWER_STATE_VETOED                                  =       1140_u32
+  ERROR_SET_POWER_STATE_FAILED                                  =       1141_u32
+  ERROR_TOO_MANY_LINKS                                          =       1142_u32
+  ERROR_OLD_WIN_VERSION                                         =       1150_u32
+  ERROR_APP_WRONG_OS                                            =       1151_u32
+  ERROR_SINGLE_INSTANCE_APP                                     =       1152_u32
+  ERROR_RMODE_APP                                               =       1153_u32
+  ERROR_INVALID_DLL                                             =       1154_u32
+  ERROR_NO_ASSOCIATION                                          =       1155_u32
+  ERROR_DDE_FAIL                                                =       1156_u32
+  ERROR_DLL_NOT_FOUND                                           =       1157_u32
+  ERROR_NO_MORE_USER_HANDLES                                    =       1158_u32
+  ERROR_MESSAGE_SYNC_ONLY                                       =       1159_u32
+  ERROR_SOURCE_ELEMENT_EMPTY                                    =       1160_u32
+  ERROR_DESTINATION_ELEMENT_FULL                                =       1161_u32
+  ERROR_ILLEGAL_ELEMENT_ADDRESS                                 =       1162_u32
+  ERROR_MAGAZINE_NOT_PRESENT                                    =       1163_u32
+  ERROR_DEVICE_REINITIALIZATION_NEEDED                          =       1164_u32
+  ERROR_DEVICE_REQUIRES_CLEANING                                =       1165_u32
+  ERROR_DEVICE_DOOR_OPEN                                        =       1166_u32
+  ERROR_DEVICE_NOT_CONNECTED                                    =       1167_u32
+  ERROR_NOT_FOUND                                               =       1168_u32
+  ERROR_NO_MATCH                                                =       1169_u32
+  ERROR_SET_NOT_FOUND                                           =       1170_u32
+  ERROR_POINT_NOT_FOUND                                         =       1171_u32
+  ERROR_NO_TRACKING_SERVICE                                     =       1172_u32
+  ERROR_NO_VOLUME_ID                                            =       1173_u32
+  ERROR_UNABLE_TO_REMOVE_REPLACED                               =       1175_u32
+  ERROR_UNABLE_TO_MOVE_REPLACEMENT                              =       1176_u32
+  ERROR_UNABLE_TO_MOVE_REPLACEMENT_2                            =       1177_u32
+  ERROR_JOURNAL_DELETE_IN_PROGRESS                              =       1178_u32
+  ERROR_JOURNAL_NOT_ACTIVE                                      =       1179_u32
+  ERROR_POTENTIAL_FILE_FOUND                                    =       1180_u32
+  ERROR_JOURNAL_ENTRY_DELETED                                   =       1181_u32
+  ERROR_BAD_DEVICE                                              =       1200_u32
+  ERROR_CONNECTION_UNAVAIL                                      =       1201_u32
+  ERROR_DEVICE_ALREADY_REMEMBERED                               =       1202_u32
+  ERROR_NO_NET_OR_BAD_PATH                                      =       1203_u32
+  ERROR_BAD_PROVIDER                                            =       1204_u32
+  ERROR_CANNOT_OPEN_PROFILE                                     =       1205_u32
+  ERROR_BAD_PROFILE                                             =       1206_u32
+  ERROR_NOT_CONTAINER                                           =       1207_u32
+  ERROR_EXTENDED_ERROR                                          =       1208_u32
+  ERROR_INVALID_GROUPNAME                                       =       1209_u32
+  ERROR_INVALID_COMPUTERNAME                                    =       1210_u32
+  ERROR_INVALID_EVENTNAME                                       =       1211_u32
+  ERROR_INVALID_DOMAINNAME                                      =       1212_u32
+  ERROR_INVALID_SERVICENAME                                     =       1213_u32
+  ERROR_INVALID_NETNAME                                         =       1214_u32
+  ERROR_INVALID_SHARENAME                                       =       1215_u32
+  ERROR_INVALID_PASSWORDNAME                                    =       1216_u32
+  ERROR_INVALID_MESSAGENAME                                     =       1217_u32
+  ERROR_INVALID_MESSAGEDEST                                     =       1218_u32
+  ERROR_SESSION_CREDENTIAL_CONFLICT                             =       1219_u32
+  ERROR_REMOTE_SESSION_LIMIT_EXCEEDED                           =       1220_u32
+  ERROR_DUP_DOMAINNAME                                          =       1221_u32
+  ERROR_NO_NETWORK                                              =       1222_u32
+  ERROR_CANCELLED                                               =       1223_u32
+  ERROR_USER_MAPPED_FILE                                        =       1224_u32
+  ERROR_CONNECTION_REFUSED                                      =       1225_u32
+  ERROR_GRACEFUL_DISCONNECT                                     =       1226_u32
+  ERROR_ADDRESS_ALREADY_ASSOCIATED                              =       1227_u32
+  ERROR_ADDRESS_NOT_ASSOCIATED                                  =       1228_u32
+  ERROR_CONNECTION_INVALID                                      =       1229_u32
+  ERROR_CONNECTION_ACTIVE                                       =       1230_u32
+  ERROR_NETWORK_UNREACHABLE                                     =       1231_u32
+  ERROR_HOST_UNREACHABLE                                        =       1232_u32
+  ERROR_PROTOCOL_UNREACHABLE                                    =       1233_u32
+  ERROR_PORT_UNREACHABLE                                        =       1234_u32
+  ERROR_REQUEST_ABORTED                                         =       1235_u32
+  ERROR_CONNECTION_ABORTED                                      =       1236_u32
+  ERROR_RETRY                                                   =       1237_u32
+  ERROR_CONNECTION_COUNT_LIMIT                                  =       1238_u32
+  ERROR_LOGIN_TIME_RESTRICTION                                  =       1239_u32
+  ERROR_LOGIN_WKSTA_RESTRICTION                                 =       1240_u32
+  ERROR_INCORRECT_ADDRESS                                       =       1241_u32
+  ERROR_ALREADY_REGISTERED                                      =       1242_u32
+  ERROR_SERVICE_NOT_FOUND                                       =       1243_u32
+  ERROR_NOT_AUTHENTICATED                                       =       1244_u32
+  ERROR_NOT_LOGGED_ON                                           =       1245_u32
+  ERROR_CONTINUE                                                =       1246_u32
+  ERROR_ALREADY_INITIALIZED                                     =       1247_u32
+  ERROR_NO_MORE_DEVICES                                         =       1248_u32
+  ERROR_NO_SUCH_SITE                                            =       1249_u32
+  ERROR_DOMAIN_CONTROLLER_EXISTS                                =       1250_u32
+  ERROR_ONLY_IF_CONNECTED                                       =       1251_u32
+  ERROR_OVERRIDE_NOCHANGES                                      =       1252_u32
+  ERROR_BAD_USER_PROFILE                                        =       1253_u32
+  ERROR_NOT_SUPPORTED_ON_SBS                                    =       1254_u32
+  ERROR_SERVER_SHUTDOWN_IN_PROGRESS                             =       1255_u32
+  ERROR_HOST_DOWN                                               =       1256_u32
+  ERROR_NON_ACCOUNT_SID                                         =       1257_u32
+  ERROR_NON_DOMAIN_SID                                          =       1258_u32
+  ERROR_APPHELP_BLOCK                                           =       1259_u32
+  ERROR_ACCESS_DISABLED_BY_POLICY                               =       1260_u32
+  ERROR_REG_NAT_CONSUMPTION                                     =       1261_u32
+  ERROR_CSCSHARE_OFFLINE                                        =       1262_u32
+  ERROR_PKINIT_FAILURE                                          =       1263_u32
+  ERROR_SMARTCARD_SUBSYSTEM_FAILURE                             =       1264_u32
+  ERROR_DOWNGRADE_DETECTED                                      =       1265_u32
+  ERROR_MACHINE_LOCKED                                          =       1271_u32
+  ERROR_CALLBACK_SUPPLIED_INVALID_DATA                          =       1273_u32
+  ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED                        =       1274_u32
+  ERROR_DRIVER_BLOCKED                                          =       1275_u32
+  ERROR_INVALID_IMPORT_OF_NON_DLL                               =       1276_u32
+  ERROR_ACCESS_DISABLED_WEBBLADE                                =       1277_u32
+  ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER                         =       1278_u32
+  ERROR_RECOVERY_FAILURE                                        =       1279_u32
+  ERROR_ALREADY_FIBER                                           =       1280_u32
+  ERROR_ALREADY_THREAD                                          =       1281_u32
+  ERROR_STACK_BUFFER_OVERRUN                                    =       1282_u32
+  ERROR_PARAMETER_QUOTA_EXCEEDED                                =       1283_u32
+  ERROR_DEBUGGER_INACTIVE                                       =       1284_u32
+  ERROR_DELAY_LOAD_FAILED                                       =       1285_u32
+  ERROR_VDM_DISALLOWED                                          =       1286_u32
+  ERROR_UNIDENTIFIED_ERROR                                      =       1287_u32
+  ERROR_NOT_ALL_ASSIGNED                                        =       1300_u32
+  ERROR_SOME_NOT_MAPPED                                         =       1301_u32
+  ERROR_NO_QUOTAS_FOR_ACCOUNT                                   =       1302_u32
+  ERROR_LOCAL_USER_SESSION_KEY                                  =       1303_u32
+  ERROR_NULL_LM_PASSWORD                                        =       1304_u32
+  ERROR_UNKNOWN_REVISION                                        =       1305_u32
+  ERROR_REVISION_MISMATCH                                       =       1306_u32
+  ERROR_INVALID_OWNER                                           =       1307_u32
+  ERROR_INVALID_PRIMARY_GROUP                                   =       1308_u32
+  ERROR_NO_IMPERSONATION_TOKEN                                  =       1309_u32
+  ERROR_CANT_DISABLE_MANDATORY                                  =       1310_u32
+  ERROR_NO_LOGON_SERVERS                                        =       1311_u32
+  ERROR_NO_SUCH_LOGON_SESSION                                   =       1312_u32
+  ERROR_NO_SUCH_PRIVILEGE                                       =       1313_u32
+  ERROR_PRIVILEGE_NOT_HELD                                      =       1314_u32
+  ERROR_INVALID_ACCOUNT_NAME                                    =       1315_u32
+  ERROR_USER_EXISTS                                             =       1316_u32
+  ERROR_NO_SUCH_USER                                            =       1317_u32
+  ERROR_GROUP_EXISTS                                            =       1318_u32
+  ERROR_NO_SUCH_GROUP                                           =       1319_u32
+  ERROR_MEMBER_IN_GROUP                                         =       1320_u32
+  ERROR_MEMBER_NOT_IN_GROUP                                     =       1321_u32
+  ERROR_LAST_ADMIN                                              =       1322_u32
+  ERROR_WRONG_PASSWORD                                          =       1323_u32
+  ERROR_ILL_FORMED_PASSWORD                                     =       1324_u32
+  ERROR_PASSWORD_RESTRICTION                                    =       1325_u32
+  ERROR_LOGON_FAILURE                                           =       1326_u32
+  ERROR_ACCOUNT_RESTRICTION                                     =       1327_u32
+  ERROR_INVALID_LOGON_HOURS                                     =       1328_u32
+  ERROR_INVALID_WORKSTATION                                     =       1329_u32
+  ERROR_PASSWORD_EXPIRED                                        =       1330_u32
+  ERROR_ACCOUNT_DISABLED                                        =       1331_u32
+  ERROR_NONE_MAPPED                                             =       1332_u32
+  ERROR_TOO_MANY_LUIDS_REQUESTED                                =       1333_u32
+  ERROR_LUIDS_EXHAUSTED                                         =       1334_u32
+  ERROR_INVALID_SUB_AUTHORITY                                   =       1335_u32
+  ERROR_INVALID_ACL                                             =       1336_u32
+  ERROR_INVALID_SID                                             =       1337_u32
+  ERROR_INVALID_SECURITY_DESCR                                  =       1338_u32
+  ERROR_BAD_INHERITANCE_ACL                                     =       1340_u32
+  ERROR_SERVER_DISABLED                                         =       1341_u32
+  ERROR_SERVER_NOT_DISABLED                                     =       1342_u32
+  ERROR_INVALID_ID_AUTHORITY                                    =       1343_u32
+  ERROR_ALLOTTED_SPACE_EXCEEDED                                 =       1344_u32
+  ERROR_INVALID_GROUP_ATTRIBUTES                                =       1345_u32
+  ERROR_BAD_IMPERSONATION_LEVEL                                 =       1346_u32
+  ERROR_CANT_OPEN_ANONYMOUS                                     =       1347_u32
+  ERROR_BAD_VALIDATION_CLASS                                    =       1348_u32
+  ERROR_BAD_TOKEN_TYPE                                          =       1349_u32
+  ERROR_NO_SECURITY_ON_OBJECT                                   =       1350_u32
+  ERROR_CANT_ACCESS_DOMAIN_INFO                                 =       1351_u32
+  ERROR_INVALID_SERVER_STATE                                    =       1352_u32
+  ERROR_INVALID_DOMAIN_STATE                                    =       1353_u32
+  ERROR_INVALID_DOMAIN_ROLE                                     =       1354_u32
+  ERROR_NO_SUCH_DOMAIN                                          =       1355_u32
+  ERROR_DOMAIN_EXISTS                                           =       1356_u32
+  ERROR_DOMAIN_LIMIT_EXCEEDED                                   =       1357_u32
+  ERROR_INTERNAL_DB_CORRUPTION                                  =       1358_u32
+  ERROR_INTERNAL_ERROR                                          =       1359_u32
+  ERROR_GENERIC_NOT_MAPPED                                      =       1360_u32
+  ERROR_BAD_DESCRIPTOR_FORMAT                                   =       1361_u32
+  ERROR_NOT_LOGON_PROCESS                                       =       1362_u32
+  ERROR_LOGON_SESSION_EXISTS                                    =       1363_u32
+  ERROR_NO_SUCH_PACKAGE                                         =       1364_u32
+  ERROR_BAD_LOGON_SESSION_STATE                                 =       1365_u32
+  ERROR_LOGON_SESSION_COLLISION                                 =       1366_u32
+  ERROR_INVALID_LOGON_TYPE                                      =       1367_u32
+  ERROR_CANNOT_IMPERSONATE                                      =       1368_u32
+  ERROR_RXACT_INVALID_STATE                                     =       1369_u32
+  ERROR_RXACT_COMMIT_FAILURE                                    =       1370_u32
+  ERROR_SPECIAL_ACCOUNT                                         =       1371_u32
+  ERROR_SPECIAL_GROUP                                           =       1372_u32
+  ERROR_SPECIAL_USER                                            =       1373_u32
+  ERROR_MEMBERS_PRIMARY_GROUP                                   =       1374_u32
+  ERROR_TOKEN_ALREADY_IN_USE                                    =       1375_u32
+  ERROR_NO_SUCH_ALIAS                                           =       1376_u32
+  ERROR_MEMBER_NOT_IN_ALIAS                                     =       1377_u32
+  ERROR_MEMBER_IN_ALIAS                                         =       1378_u32
+  ERROR_ALIAS_EXISTS                                            =       1379_u32
+  ERROR_LOGON_NOT_GRANTED                                       =       1380_u32
+  ERROR_TOO_MANY_SECRETS                                        =       1381_u32
+  ERROR_SECRET_TOO_LONG                                         =       1382_u32
+  ERROR_INTERNAL_DB_ERROR                                       =       1383_u32
+  ERROR_TOO_MANY_CONTEXT_IDS                                    =       1384_u32
+  ERROR_LOGON_TYPE_NOT_GRANTED                                  =       1385_u32
+  ERROR_NT_CROSS_ENCRYPTION_REQUIRED                            =       1386_u32
+  ERROR_NO_SUCH_MEMBER                                          =       1387_u32
+  ERROR_INVALID_MEMBER                                          =       1388_u32
+  ERROR_TOO_MANY_SIDS                                           =       1389_u32
+  ERROR_LM_CROSS_ENCRYPTION_REQUIRED                            =       1390_u32
+  ERROR_NO_INHERITANCE                                          =       1391_u32
+  ERROR_FILE_CORRUPT                                            =       1392_u32
+  ERROR_DISK_CORRUPT                                            =       1393_u32
+  ERROR_NO_USER_SESSION_KEY                                     =       1394_u32
+  ERROR_LICENSE_QUOTA_EXCEEDED                                  =       1395_u32
+  ERROR_WRONG_TARGET_NAME                                       =       1396_u32
+  ERROR_MUTUAL_AUTH_FAILED                                      =       1397_u32
+  ERROR_TIME_SKEW                                               =       1398_u32
+  ERROR_CURRENT_DOMAIN_NOT_ALLOWED                              =       1399_u32
+  ERROR_INVALID_WINDOW_HANDLE                                   =       1400_u32
+  ERROR_INVALID_MENU_HANDLE                                     =       1401_u32
+  ERROR_INVALID_CURSOR_HANDLE                                   =       1402_u32
+  ERROR_INVALID_ACCEL_HANDLE                                    =       1403_u32
+  ERROR_INVALID_HOOK_HANDLE                                     =       1404_u32
+  ERROR_INVALID_DWP_HANDLE                                      =       1405_u32
+  ERROR_TLW_WITH_WSCHILD                                        =       1406_u32
+  ERROR_CANNOT_FIND_WND_CLASS                                   =       1407_u32
+  ERROR_WINDOW_OF_OTHER_THREAD                                  =       1408_u32
+  ERROR_HOTKEY_ALREADY_REGISTERED                               =       1409_u32
+  ERROR_CLASS_ALREADY_EXISTS                                    =       1410_u32
+  ERROR_CLASS_DOES_NOT_EXIST                                    =       1411_u32
+  ERROR_CLASS_HAS_WINDOWS                                       =       1412_u32
+  ERROR_INVALID_INDEX                                           =       1413_u32
+  ERROR_INVALID_ICON_HANDLE                                     =       1414_u32
+  ERROR_PRIVATE_DIALOG_INDEX                                    =       1415_u32
+  ERROR_LISTBOX_ID_NOT_FOUND                                    =       1416_u32
+  ERROR_NO_WILDCARD_CHARACTERS                                  =       1417_u32
+  ERROR_CLIPBOARD_NOT_OPEN                                      =       1418_u32
+  ERROR_HOTKEY_NOT_REGISTERED                                   =       1419_u32
+  ERROR_WINDOW_NOT_DIALOG                                       =       1420_u32
+  ERROR_CONTROL_ID_NOT_FOUND                                    =       1421_u32
+  ERROR_INVALID_COMBOBOX_MESSAGE                                =       1422_u32
+  ERROR_WINDOW_NOT_COMBOBOX                                     =       1423_u32
+  ERROR_INVALID_EDIT_HEIGHT                                     =       1424_u32
+  ERROR_DC_NOT_FOUND                                            =       1425_u32
+  ERROR_INVALID_HOOK_FILTER                                     =       1426_u32
+  ERROR_INVALID_FILTER_PROC                                     =       1427_u32
+  ERROR_HOOK_NEEDS_HMOD                                         =       1428_u32
+  ERROR_GLOBAL_ONLY_HOOK                                        =       1429_u32
+  ERROR_JOURNAL_HOOK_SET                                        =       1430_u32
+  ERROR_HOOK_NOT_INSTALLED                                      =       1431_u32
+  ERROR_INVALID_LB_MESSAGE                                      =       1432_u32
+  ERROR_SETCOUNT_ON_BAD_LB                                      =       1433_u32
+  ERROR_LB_WITHOUT_TABSTOPS                                     =       1434_u32
+  ERROR_DESTROY_OBJECT_OF_OTHER_THREAD                          =       1435_u32
+  ERROR_CHILD_WINDOW_MENU                                       =       1436_u32
+  ERROR_NO_SYSTEM_MENU                                          =       1437_u32
+  ERROR_INVALID_MSGBOX_STYLE                                    =       1438_u32
+  ERROR_INVALID_SPI_VALUE                                       =       1439_u32
+  ERROR_SCREEN_ALREADY_LOCKED                                   =       1440_u32
+  ERROR_HWNDS_HAVE_DIFF_PARENT                                  =       1441_u32
+  ERROR_NOT_CHILD_WINDOW                                        =       1442_u32
+  ERROR_INVALID_GW_COMMAND                                      =       1443_u32
+  ERROR_INVALID_THREAD_ID                                       =       1444_u32
+  ERROR_NON_MDICHILD_WINDOW                                     =       1445_u32
+  ERROR_POPUP_ALREADY_ACTIVE                                    =       1446_u32
+  ERROR_NO_SCROLLBARS                                           =       1447_u32
+  ERROR_INVALID_SCROLLBAR_RANGE                                 =       1448_u32
+  ERROR_INVALID_SHOWWIN_COMMAND                                 =       1449_u32
+  ERROR_NO_SYSTEM_RESOURCES                                     =       1450_u32
+  ERROR_NONPAGED_SYSTEM_RESOURCES                               =       1451_u32
+  ERROR_PAGED_SYSTEM_RESOURCES                                  =       1452_u32
+  ERROR_WORKING_SET_QUOTA                                       =       1453_u32
+  ERROR_PAGEFILE_QUOTA                                          =       1454_u32
+  ERROR_COMMITMENT_LIMIT                                        =       1455_u32
+  ERROR_MENU_ITEM_NOT_FOUND                                     =       1456_u32
+  ERROR_INVALID_KEYBOARD_HANDLE                                 =       1457_u32
+  ERROR_HOOK_TYPE_NOT_ALLOWED                                   =       1458_u32
+  ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION                      =       1459_u32
+  ERROR_TIMEOUT                                                 =       1460_u32
+  ERROR_INVALID_MONITOR_HANDLE                                  =       1461_u32
+  ERROR_INCORRECT_SIZE                                          =       1462_u32
+  ERROR_EVENTLOG_FILE_CORRUPT                                   =       1500_u32
+  ERROR_EVENTLOG_CANT_START                                     =       1501_u32
+  ERROR_LOG_FILE_FULL                                           =       1502_u32
+  ERROR_EVENTLOG_FILE_CHANGED                                   =       1503_u32
+  ERROR_INSTALL_SERVICE_FAILURE                                 =       1601_u32
+  ERROR_INSTALL_USEREXIT                                        =       1602_u32
+  ERROR_INSTALL_FAILURE                                         =       1603_u32
+  ERROR_INSTALL_SUSPEND                                         =       1604_u32
+  ERROR_UNKNOWN_PRODUCT                                         =       1605_u32
+  ERROR_UNKNOWN_FEATURE                                         =       1606_u32
+  ERROR_UNKNOWN_COMPONENT                                       =       1607_u32
+  ERROR_UNKNOWN_PROPERTY                                        =       1608_u32
+  ERROR_INVALID_HANDLE_STATE                                    =       1609_u32
+  ERROR_BAD_CONFIGURATION                                       =       1610_u32
+  ERROR_INDEX_ABSENT                                            =       1611_u32
+  ERROR_INSTALL_SOURCE_ABSENT                                   =       1612_u32
+  ERROR_INSTALL_PACKAGE_VERSION                                 =       1613_u32
+  ERROR_PRODUCT_UNINSTALLED                                     =       1614_u32
+  ERROR_BAD_QUERY_SYNTAX                                        =       1615_u32
+  ERROR_INVALID_FIELD                                           =       1616_u32
+  ERROR_DEVICE_REMOVED                                          =       1617_u32
+  ERROR_INSTALL_ALREADY_RUNNING                                 =       1618_u32
+  ERROR_INSTALL_PACKAGE_OPEN_FAILED                             =       1619_u32
+  ERROR_INSTALL_PACKAGE_INVALID                                 =       1620_u32
+  ERROR_INSTALL_UI_FAILURE                                      =       1621_u32
+  ERROR_INSTALL_LOG_FAILURE                                     =       1622_u32
+  ERROR_INSTALL_LANGUAGE_UNSUPPORTED                            =       1623_u32
+  ERROR_INSTALL_TRANSFORM_FAILURE                               =       1624_u32
+  ERROR_INSTALL_PACKAGE_REJECTED                                =       1625_u32
+  ERROR_FUNCTION_NOT_CALLED                                     =       1626_u32
+  ERROR_FUNCTION_FAILED                                         =       1627_u32
+  ERROR_INVALID_TABLE                                           =       1628_u32
+  ERROR_DATATYPE_MISMATCH                                       =       1629_u32
+  ERROR_UNSUPPORTED_TYPE                                        =       1630_u32
+  ERROR_CREATE_FAILED                                           =       1631_u32
+  ERROR_INSTALL_TEMP_UNWRITABLE                                 =       1632_u32
+  ERROR_INSTALL_PLATFORM_UNSUPPORTED                            =       1633_u32
+  ERROR_INSTALL_NOTUSED                                         =       1634_u32
+  ERROR_PATCH_PACKAGE_OPEN_FAILED                               =       1635_u32
+  ERROR_PATCH_PACKAGE_INVALID                                   =       1636_u32
+  ERROR_PATCH_PACKAGE_UNSUPPORTED                               =       1637_u32
+  ERROR_PRODUCT_VERSION                                         =       1638_u32
+  ERROR_INVALID_COMMAND_LINE                                    =       1639_u32
+  ERROR_INSTALL_REMOTE_DISALLOWED                               =       1640_u32
+  ERROR_SUCCESS_REBOOT_INITIATED                                =       1641_u32
+  ERROR_PATCH_TARGET_NOT_FOUND                                  =       1642_u32
+  ERROR_PATCH_PACKAGE_REJECTED                                  =       1643_u32
+  ERROR_INSTALL_TRANSFORM_REJECTED                              =       1644_u32
+  ERROR_INSTALL_REMOTE_PROHIBITED                               =       1645_u32
+  RPC_S_INVALID_STRING_BINDING                                  =       1700_u32
+  RPC_S_WRONG_KIND_OF_BINDING                                   =       1701_u32
+  RPC_S_INVALID_BINDING                                         =       1702_u32
+  RPC_S_PROTSEQ_NOT_SUPPORTED                                   =       1703_u32
+  RPC_S_INVALID_RPC_PROTSEQ                                     =       1704_u32
+  RPC_S_INVALID_STRING_UUID                                     =       1705_u32
+  RPC_S_INVALID_ENDPOINT_FORMAT                                 =       1706_u32
+  RPC_S_INVALID_NET_ADDR                                        =       1707_u32
+  RPC_S_NO_ENDPOINT_FOUND                                       =       1708_u32
+  RPC_S_INVALID_TIMEOUT                                         =       1709_u32
+  RPC_S_OBJECT_NOT_FOUND                                        =       1710_u32
+  RPC_S_ALREADY_REGISTERED                                      =       1711_u32
+  RPC_S_TYPE_ALREADY_REGISTERED                                 =       1712_u32
+  RPC_S_ALREADY_LISTENING                                       =       1713_u32
+  RPC_S_NO_PROTSEQS_REGISTERED                                  =       1714_u32
+  RPC_S_NOT_LISTENING                                           =       1715_u32
+  RPC_S_UNKNOWN_MGR_TYPE                                        =       1716_u32
+  RPC_S_UNKNOWN_IF                                              =       1717_u32
+  RPC_S_NO_BINDINGS                                             =       1718_u32
+  RPC_S_NO_PROTSEQS                                             =       1719_u32
+  RPC_S_CANT_CREATE_ENDPOINT                                    =       1720_u32
+  RPC_S_OUT_OF_RESOURCES                                        =       1721_u32
+  RPC_S_SERVER_UNAVAILABLE                                      =       1722_u32
+  RPC_S_SERVER_TOO_BUSY                                         =       1723_u32
+  RPC_S_INVALID_NETWORK_OPTIONS                                 =       1724_u32
+  RPC_S_NO_CALL_ACTIVE                                          =       1725_u32
+  RPC_S_CALL_FAILED                                             =       1726_u32
+  RPC_S_CALL_FAILED_DNE                                         =       1727_u32
+  RPC_S_PROTOCOL_ERROR                                          =       1728_u32
+  RPC_S_UNSUPPORTED_TRANS_SYN                                   =       1730_u32
+  RPC_S_UNSUPPORTED_TYPE                                        =       1732_u32
+  RPC_S_INVALID_TAG                                             =       1733_u32
+  RPC_S_INVALID_BOUND                                           =       1734_u32
+  RPC_S_NO_ENTRY_NAME                                           =       1735_u32
+  RPC_S_INVALID_NAME_SYNTAX                                     =       1736_u32
+  RPC_S_UNSUPPORTED_NAME_SYNTAX                                 =       1737_u32
+  RPC_S_UUID_NO_ADDRESS                                         =       1739_u32
+  RPC_S_DUPLICATE_ENDPOINT                                      =       1740_u32
+  RPC_S_UNKNOWN_AUTHN_TYPE                                      =       1741_u32
+  RPC_S_MAX_CALLS_TOO_SMALL                                     =       1742_u32
+  RPC_S_STRING_TOO_LONG                                         =       1743_u32
+  RPC_S_PROTSEQ_NOT_FOUND                                       =       1744_u32
+  RPC_S_PROCNUM_OUT_OF_RANGE                                    =       1745_u32
+  RPC_S_BINDING_HAS_NO_AUTH                                     =       1746_u32
+  RPC_S_UNKNOWN_AUTHN_SERVICE                                   =       1747_u32
+  RPC_S_UNKNOWN_AUTHN_LEVEL                                     =       1748_u32
+  RPC_S_INVALID_AUTH_IDENTITY                                   =       1749_u32
+  RPC_S_UNKNOWN_AUTHZ_SERVICE                                   =       1750_u32
+  EPT_S_INVALID_ENTRY                                           =       1751_u32
+  EPT_S_CANT_PERFORM_OP                                         =       1752_u32
+  EPT_S_NOT_REGISTERED                                          =       1753_u32
+  RPC_S_NOTHING_TO_EXPORT                                       =       1754_u32
+  RPC_S_INCOMPLETE_NAME                                         =       1755_u32
+  RPC_S_INVALID_VERS_OPTION                                     =       1756_u32
+  RPC_S_NO_MORE_MEMBERS                                         =       1757_u32
+  RPC_S_NOT_ALL_OBJS_UNEXPORTED                                 =       1758_u32
+  RPC_S_INTERFACE_NOT_FOUND                                     =       1759_u32
+  RPC_S_ENTRY_ALREADY_EXISTS                                    =       1760_u32
+  RPC_S_ENTRY_NOT_FOUND                                         =       1761_u32
+  RPC_S_NAME_SERVICE_UNAVAILABLE                                =       1762_u32
+  RPC_S_INVALID_NAF_ID                                          =       1763_u32
+  RPC_S_CANNOT_SUPPORT                                          =       1764_u32
+  RPC_S_NO_CONTEXT_AVAILABLE                                    =       1765_u32
+  RPC_S_INTERNAL_ERROR                                          =       1766_u32
+  RPC_S_ZERO_DIVIDE                                             =       1767_u32
+  RPC_S_ADDRESS_ERROR                                           =       1768_u32
+  RPC_S_FP_DIV_ZERO                                             =       1769_u32
+  RPC_S_FP_UNDERFLOW                                            =       1770_u32
+  RPC_S_FP_OVERFLOW                                             =       1771_u32
+  RPC_X_NO_MORE_ENTRIES                                         =       1772_u32
+  RPC_X_SS_CHAR_TRANS_OPEN_FAIL                                 =       1773_u32
+  RPC_X_SS_CHAR_TRANS_SHORT_FILE                                =       1774_u32
+  RPC_X_SS_IN_NULL_CONTEXT                                      =       1775_u32
+  RPC_X_SS_CONTEXT_DAMAGED                                      =       1777_u32
+  RPC_X_SS_HANDLES_MISMATCH                                     =       1778_u32
+  RPC_X_SS_CANNOT_GET_CALL_HANDLE                               =       1779_u32
+  RPC_X_NULL_REF_POINTER                                        =       1780_u32
+  RPC_X_ENUM_VALUE_OUT_OF_RANGE                                 =       1781_u32
+  RPC_X_BYTE_COUNT_TOO_SMALL                                    =       1782_u32
+  RPC_X_BAD_STUB_DATA                                           =       1783_u32
+  ERROR_INVALID_USER_BUFFER                                     =       1784_u32
+  ERROR_UNRECOGNIZED_MEDIA                                      =       1785_u32
+  ERROR_NO_TRUST_LSA_SECRET                                     =       1786_u32
+  ERROR_NO_TRUST_SAM_ACCOUNT                                    =       1787_u32
+  ERROR_TRUSTED_DOMAIN_FAILURE                                  =       1788_u32
+  ERROR_TRUSTED_RELATIONSHIP_FAILURE                            =       1789_u32
+  ERROR_TRUST_FAILURE                                           =       1790_u32
+  RPC_S_CALL_IN_PROGRESS                                        =       1791_u32
+  ERROR_NETLOGON_NOT_STARTED                                    =       1792_u32
+  ERROR_ACCOUNT_EXPIRED                                         =       1793_u32
+  ERROR_REDIRECTOR_HAS_OPEN_HANDLES                             =       1794_u32
+  ERROR_PRINTER_DRIVER_ALREADY_INSTALLED                        =       1795_u32
+  ERROR_UNKNOWN_PORT                                            =       1796_u32
+  ERROR_UNKNOWN_PRINTER_DRIVER                                  =       1797_u32
+  ERROR_UNKNOWN_PRINTPROCESSOR                                  =       1798_u32
+  ERROR_INVALID_SEPARATOR_FILE                                  =       1799_u32
+  ERROR_INVALID_PRIORITY                                        =       1800_u32
+  ERROR_INVALID_PRINTER_NAME                                    =       1801_u32
+  ERROR_PRINTER_ALREADY_EXISTS                                  =       1802_u32
+  ERROR_INVALID_PRINTER_COMMAND                                 =       1803_u32
+  ERROR_INVALID_DATATYPE                                        =       1804_u32
+  ERROR_INVALID_ENVIRONMENT                                     =       1805_u32
+  RPC_S_NO_MORE_BINDINGS                                        =       1806_u32
+  ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                       =       1807_u32
+  ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT                       =       1808_u32
+  ERROR_NOLOGON_SERVER_TRUST_ACCOUNT                            =       1809_u32
+  ERROR_DOMAIN_TRUST_INCONSISTENT                               =       1810_u32
+  ERROR_SERVER_HAS_OPEN_HANDLES                                 =       1811_u32
+  ERROR_RESOURCE_DATA_NOT_FOUND                                 =       1812_u32
+  ERROR_RESOURCE_TYPE_NOT_FOUND                                 =       1813_u32
+  ERROR_RESOURCE_NAME_NOT_FOUND                                 =       1814_u32
+  ERROR_RESOURCE_LANG_NOT_FOUND                                 =       1815_u32
+  ERROR_NOT_ENOUGH_QUOTA                                        =       1816_u32
+  RPC_S_NO_INTERFACES                                           =       1817_u32
+  RPC_S_CALL_CANCELLED                                          =       1818_u32
+  RPC_S_BINDING_INCOMPLETE                                      =       1819_u32
+  RPC_S_COMM_FAILURE                                            =       1820_u32
+  RPC_S_UNSUPPORTED_AUTHN_LEVEL                                 =       1821_u32
+  RPC_S_NO_PRINC_NAME                                           =       1822_u32
+  RPC_S_NOT_RPC_ERROR                                           =       1823_u32
+  RPC_S_UUID_LOCAL_ONLY                                         =       1824_u32
+  RPC_S_SEC_PKG_ERROR                                           =       1825_u32
+  RPC_S_NOT_CANCELLED                                           =       1826_u32
+  RPC_X_INVALID_ES_ACTION                                       =       1827_u32
+  RPC_X_WRONG_ES_VERSION                                        =       1828_u32
+  RPC_X_WRONG_STUB_VERSION                                      =       1829_u32
+  RPC_X_INVALID_PIPE_OBJECT                                     =       1830_u32
+  RPC_X_WRONG_PIPE_ORDER                                        =       1831_u32
+  RPC_X_WRONG_PIPE_VERSION                                      =       1832_u32
+  RPC_S_GROUP_MEMBER_NOT_FOUND                                  =       1898_u32
+  EPT_S_CANT_CREATE                                             =       1899_u32
+  RPC_S_INVALID_OBJECT                                          =       1900_u32
+  ERROR_INVALID_TIME                                            =       1901_u32
+  ERROR_INVALID_FORM_NAME                                       =       1902_u32
+  ERROR_INVALID_FORM_SIZE                                       =       1903_u32
+  ERROR_ALREADY_WAITING                                         =       1904_u32
+  ERROR_PRINTER_DELETED                                         =       1905_u32
+  ERROR_INVALID_PRINTER_STATE                                   =       1906_u32
+  ERROR_PASSWORD_MUST_CHANGE                                    =       1907_u32
+  ERROR_DOMAIN_CONTROLLER_NOT_FOUND                             =       1908_u32
+  ERROR_ACCOUNT_LOCKED_OUT                                      =       1909_u32
+  OR_INVALID_OXID                                               =       1910_u32
+  OR_INVALID_OID                                                =       1911_u32
+  OR_INVALID_SET                                                =       1912_u32
+  RPC_S_SEND_INCOMPLETE                                         =       1913_u32
+  RPC_S_INVALID_ASYNC_HANDLE                                    =       1914_u32
+  RPC_S_INVALID_ASYNC_CALL                                      =       1915_u32
+  RPC_X_PIPE_CLOSED                                             =       1916_u32
+  RPC_X_PIPE_DISCIPLINE_ERROR                                   =       1917_u32
+  RPC_X_PIPE_EMPTY                                              =       1918_u32
+  ERROR_NO_SITENAME                                             =       1919_u32
+  ERROR_CANT_ACCESS_FILE                                        =       1920_u32
+  ERROR_CANT_RESOLVE_FILENAME                                   =       1921_u32
+  RPC_S_ENTRY_TYPE_MISMATCH                                     =       1922_u32
+  RPC_S_NOT_ALL_OBJS_EXPORTED                                   =       1923_u32
+  RPC_S_INTERFACE_NOT_EXPORTED                                  =       1924_u32
+  RPC_S_PROFILE_NOT_ADDED                                       =       1925_u32
+  RPC_S_PRF_ELT_NOT_ADDED                                       =       1926_u32
+  RPC_S_PRF_ELT_NOT_REMOVED                                     =       1927_u32
+  RPC_S_GRP_ELT_NOT_ADDED                                       =       1928_u32
+  RPC_S_GRP_ELT_NOT_REMOVED                                     =       1929_u32
+  ERROR_KM_DRIVER_BLOCKED                                       =       1930_u32
+  ERROR_CONTEXT_EXPIRED                                         =       1931_u32
+  ERROR_PER_USER_TRUST_QUOTA_EXCEEDED                           =       1932_u32
+  ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED                           =       1933_u32
+  ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED                        =       1934_u32
+  ERROR_AUTHENTICATION_FIREWALL_FAILED                          =       1935_u32
+  ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED                        =       1936_u32
+  ERROR_INVALID_PIXEL_FORMAT                                    =       2000_u32
+  ERROR_BAD_DRIVER                                              =       2001_u32
+  ERROR_INVALID_WINDOW_STYLE                                    =       2002_u32
+  ERROR_METAFILE_NOT_SUPPORTED                                  =       2003_u32
+  ERROR_TRANSFORM_NOT_SUPPORTED                                 =       2004_u32
+  ERROR_CLIPPING_NOT_SUPPORTED                                  =       2005_u32
+  ERROR_INVALID_CMM                                             =       2010_u32
+  ERROR_INVALID_PROFILE                                         =       2011_u32
+  ERROR_TAG_NOT_FOUND                                           =       2012_u32
+  ERROR_TAG_NOT_PRESENT                                         =       2013_u32
+  ERROR_DUPLICATE_TAG                                           =       2014_u32
+  ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE                      =       2015_u32
+  ERROR_PROFILE_NOT_FOUND                                       =       2016_u32
+  ERROR_INVALID_COLORSPACE                                      =       2017_u32
+  ERROR_ICM_NOT_ENABLED                                         =       2018_u32
+  ERROR_DELETING_ICM_XFORM                                      =       2019_u32
+  ERROR_INVALID_TRANSFORM                                       =       2020_u32
+  ERROR_COLORSPACE_MISMATCH                                     =       2021_u32
+  ERROR_INVALID_COLORINDEX                                      =       2022_u32
+  ERROR_CONNECTED_OTHER_PASSWORD                                =       2108_u32
+  ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT                        =       2109_u32
+  ERROR_BAD_USERNAME                                            =       2202_u32
+  ERROR_NOT_CONNECTED                                           =       2250_u32
+  ERROR_OPEN_FILES                                              =       2401_u32
+  ERROR_ACTIVE_CONNECTIONS                                      =       2402_u32
+  ERROR_DEVICE_IN_USE                                           =       2404_u32
+  ERROR_UNKNOWN_PRINT_MONITOR                                   =       3000_u32
+  ERROR_PRINTER_DRIVER_IN_USE                                   =       3001_u32
+  ERROR_SPOOL_FILE_NOT_FOUND                                    =       3002_u32
+  ERROR_SPL_NO_STARTDOC                                         =       3003_u32
+  ERROR_SPL_NO_ADDJOB                                           =       3004_u32
+  ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED                       =       3005_u32
+  ERROR_PRINT_MONITOR_ALREADY_INSTALLED                         =       3006_u32
+  ERROR_INVALID_PRINT_MONITOR                                   =       3007_u32
+  ERROR_PRINT_MONITOR_IN_USE                                    =       3008_u32
+  ERROR_PRINTER_HAS_JOBS_QUEUED                                 =       3009_u32
+  ERROR_SUCCESS_REBOOT_REQUIRED                                 =       3010_u32
+  ERROR_SUCCESS_RESTART_REQUIRED                                =       3011_u32
+  ERROR_PRINTER_NOT_FOUND                                       =       3012_u32
+  ERROR_PRINTER_DRIVER_WARNED                                   =       3013_u32
+  ERROR_PRINTER_DRIVER_BLOCKED                                  =       3014_u32
+  ERROR_WINS_INTERNAL                                           =       4000_u32
+  ERROR_CAN_NOT_DEL_LOCAL_WINS                                  =       4001_u32
+  ERROR_STATIC_INIT                                             =       4002_u32
+  ERROR_INC_BACKUP                                              =       4003_u32
+  ERROR_FULL_BACKUP                                             =       4004_u32
+  ERROR_REC_NON_EXISTENT                                        =       4005_u32
+  ERROR_RPL_NOT_ALLOWED                                         =       4006_u32
+  ERROR_DHCP_ADDRESS_CONFLICT                                   =       4100_u32
+  ERROR_WMI_GUID_NOT_FOUND                                      =       4200_u32
+  ERROR_WMI_INSTANCE_NOT_FOUND                                  =       4201_u32
+  ERROR_WMI_ITEMID_NOT_FOUND                                    =       4202_u32
+  ERROR_WMI_TRY_AGAIN                                           =       4203_u32
+  ERROR_WMI_DP_NOT_FOUND                                        =       4204_u32
+  ERROR_WMI_UNRESOLVED_INSTANCE_REF                             =       4205_u32
+  ERROR_WMI_ALREADY_ENABLED                                     =       4206_u32
+  ERROR_WMI_GUID_DISCONNECTED                                   =       4207_u32
+  ERROR_WMI_SERVER_UNAVAILABLE                                  =       4208_u32
+  ERROR_WMI_DP_FAILED                                           =       4209_u32
+  ERROR_WMI_INVALID_MOF                                         =       4210_u32
+  ERROR_WMI_INVALID_REGINFO                                     =       4211_u32
+  ERROR_WMI_ALREADY_DISABLED                                    =       4212_u32
+  ERROR_WMI_READ_ONLY                                           =       4213_u32
+  ERROR_WMI_SET_FAILURE                                         =       4214_u32
+  ERROR_INVALID_MEDIA                                           =       4300_u32
+  ERROR_INVALID_LIBRARY                                         =       4301_u32
+  ERROR_INVALID_MEDIA_POOL                                      =       4302_u32
+  ERROR_DRIVE_MEDIA_MISMATCH                                    =       4303_u32
+  ERROR_MEDIA_OFFLINE                                           =       4304_u32
+  ERROR_LIBRARY_OFFLINE                                         =       4305_u32
+  ERROR_EMPTY                                                   =       4306_u32
+  ERROR_NOT_EMPTY                                               =       4307_u32
+  ERROR_MEDIA_UNAVAILABLE                                       =       4308_u32
+  ERROR_RESOURCE_DISABLED                                       =       4309_u32
+  ERROR_INVALID_CLEANER                                         =       4310_u32
+  ERROR_UNABLE_TO_CLEAN                                         =       4311_u32
+  ERROR_OBJECT_NOT_FOUND                                        =       4312_u32
+  ERROR_DATABASE_FAILURE                                        =       4313_u32
+  ERROR_DATABASE_FULL                                           =       4314_u32
+  ERROR_MEDIA_INCOMPATIBLE                                      =       4315_u32
+  ERROR_RESOURCE_NOT_PRESENT                                    =       4316_u32
+  ERROR_INVALID_OPERATION                                       =       4317_u32
+  ERROR_MEDIA_NOT_AVAILABLE                                     =       4318_u32
+  ERROR_DEVICE_NOT_AVAILABLE                                    =       4319_u32
+  ERROR_REQUEST_REFUSED                                         =       4320_u32
+  ERROR_INVALID_DRIVE_OBJECT                                    =       4321_u32
+  ERROR_LIBRARY_FULL                                            =       4322_u32
+  ERROR_MEDIUM_NOT_ACCESSIBLE                                   =       4323_u32
+  ERROR_UNABLE_TO_LOAD_MEDIUM                                   =       4324_u32
+  ERROR_UNABLE_TO_INVENTORY_DRIVE                               =       4325_u32
+  ERROR_UNABLE_TO_INVENTORY_SLOT                                =       4326_u32
+  ERROR_UNABLE_TO_INVENTORY_TRANSPORT                           =       4327_u32
+  ERROR_TRANSPORT_FULL                                          =       4328_u32
+  ERROR_CONTROLLING_IEPORT                                      =       4329_u32
+  ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA                           =       4330_u32
+  ERROR_CLEANER_SLOT_SET                                        =       4331_u32
+  ERROR_CLEANER_SLOT_NOT_SET                                    =       4332_u32
+  ERROR_CLEANER_CARTRIDGE_SPENT                                 =       4333_u32
+  ERROR_UNEXPECTED_OMID                                         =       4334_u32
+  ERROR_CANT_DELETE_LAST_ITEM                                   =       4335_u32
+  ERROR_MESSAGE_EXCEEDS_MAX_SIZE                                =       4336_u32
+  ERROR_VOLUME_CONTAINS_SYS_FILES                               =       4337_u32
+  ERROR_INDIGENOUS_TYPE                                         =       4338_u32
+  ERROR_NO_SUPPORTING_DRIVES                                    =       4339_u32
+  ERROR_CLEANER_CARTRIDGE_INSTALLED                             =       4340_u32
+  ERROR_IEPORT_FULL                                             =       4341_u32
+  ERROR_FILE_OFFLINE                                            =       4350_u32
+  ERROR_REMOTE_STORAGE_NOT_ACTIVE                               =       4351_u32
+  ERROR_REMOTE_STORAGE_MEDIA_ERROR                              =       4352_u32
+  ERROR_NOT_A_REPARSE_POINT                                     =       4390_u32
+  ERROR_REPARSE_ATTRIBUTE_CONFLICT                              =       4391_u32
+  ERROR_INVALID_REPARSE_DATA                                    =       4392_u32
+  ERROR_REPARSE_TAG_INVALID                                     =       4393_u32
+  ERROR_REPARSE_TAG_MISMATCH                                    =       4394_u32
+  ERROR_VOLUME_NOT_SIS_ENABLED                                  =       4500_u32
+  ERROR_DEPENDENT_RESOURCE_EXISTS                               =       5001_u32
+  ERROR_DEPENDENCY_NOT_FOUND                                    =       5002_u32
+  ERROR_DEPENDENCY_ALREADY_EXISTS                               =       5003_u32
+  ERROR_RESOURCE_NOT_ONLINE                                     =       5004_u32
+  ERROR_HOST_NODE_NOT_AVAILABLE                                 =       5005_u32
+  ERROR_RESOURCE_NOT_AVAILABLE                                  =       5006_u32
+  ERROR_RESOURCE_NOT_FOUND                                      =       5007_u32
+  ERROR_SHUTDOWN_CLUSTER                                        =       5008_u32
+  ERROR_CANT_EVICT_ACTIVE_NODE                                  =       5009_u32
+  ERROR_OBJECT_ALREADY_EXISTS                                   =       5010_u32
+  ERROR_OBJECT_IN_LIST                                          =       5011_u32
+  ERROR_GROUP_NOT_AVAILABLE                                     =       5012_u32
+  ERROR_GROUP_NOT_FOUND                                         =       5013_u32
+  ERROR_GROUP_NOT_ONLINE                                        =       5014_u32
+  ERROR_HOST_NODE_NOT_RESOURCE_OWNER                            =       5015_u32
+  ERROR_HOST_NODE_NOT_GROUP_OWNER                               =       5016_u32
+  ERROR_RESMON_CREATE_FAILED                                    =       5017_u32
+  ERROR_RESMON_ONLINE_FAILED                                    =       5018_u32
+  ERROR_RESOURCE_ONLINE                                         =       5019_u32
+  ERROR_QUORUM_RESOURCE                                         =       5020_u32
+  ERROR_NOT_QUORUM_CAPABLE                                      =       5021_u32
+  ERROR_CLUSTER_SHUTTING_DOWN                                   =       5022_u32
+  ERROR_INVALID_STATE                                           =       5023_u32
+  ERROR_RESOURCE_PROPERTIES_STORED                              =       5024_u32
+  ERROR_NOT_QUORUM_CLASS                                        =       5025_u32
+  ERROR_CORE_RESOURCE                                           =       5026_u32
+  ERROR_QUORUM_RESOURCE_ONLINE_FAILED                           =       5027_u32
+  ERROR_QUORUMLOG_OPEN_FAILED                                   =       5028_u32
+  ERROR_CLUSTERLOG_CORRUPT                                      =       5029_u32
+  ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE                       =       5030_u32
+  ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE                              =       5031_u32
+  ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND                           =       5032_u32
+  ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE                             =       5033_u32
+  ERROR_QUORUM_OWNER_ALIVE                                      =       5034_u32
+  ERROR_NETWORK_NOT_AVAILABLE                                   =       5035_u32
+  ERROR_NODE_NOT_AVAILABLE                                      =       5036_u32
+  ERROR_ALL_NODES_NOT_AVAILABLE                                 =       5037_u32
+  ERROR_RESOURCE_FAILED                                         =       5038_u32
+  ERROR_CLUSTER_INVALID_NODE                                    =       5039_u32
+  ERROR_CLUSTER_NODE_EXISTS                                     =       5040_u32
+  ERROR_CLUSTER_JOIN_IN_PROGRESS                                =       5041_u32
+  ERROR_CLUSTER_NODE_NOT_FOUND                                  =       5042_u32
+  ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND                            =       5043_u32
+  ERROR_CLUSTER_NETWORK_EXISTS                                  =       5044_u32
+  ERROR_CLUSTER_NETWORK_NOT_FOUND                               =       5045_u32
+  ERROR_CLUSTER_NETINTERFACE_EXISTS                             =       5046_u32
+  ERROR_CLUSTER_NETINTERFACE_NOT_FOUND                          =       5047_u32
+  ERROR_CLUSTER_INVALID_REQUEST                                 =       5048_u32
+  ERROR_CLUSTER_INVALID_NETWORK_PROVIDER                        =       5049_u32
+  ERROR_CLUSTER_NODE_DOWN                                       =       5050_u32
+  ERROR_CLUSTER_NODE_UNREACHABLE                                =       5051_u32
+  ERROR_CLUSTER_NODE_NOT_MEMBER                                 =       5052_u32
+  ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS                            =       5053_u32
+  ERROR_CLUSTER_INVALID_NETWORK                                 =       5054_u32
+  ERROR_CLUSTER_NODE_UP                                         =       5056_u32
+  ERROR_CLUSTER_IPADDR_IN_USE                                   =       5057_u32
+  ERROR_CLUSTER_NODE_NOT_PAUSED                                 =       5058_u32
+  ERROR_CLUSTER_NO_SECURITY_CONTEXT                             =       5059_u32
+  ERROR_CLUSTER_NETWORK_NOT_INTERNAL                            =       5060_u32
+  ERROR_CLUSTER_NODE_ALREADY_UP                                 =       5061_u32
+  ERROR_CLUSTER_NODE_ALREADY_DOWN                               =       5062_u32
+  ERROR_CLUSTER_NETWORK_ALREADY_ONLINE                          =       5063_u32
+  ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE                         =       5064_u32
+  ERROR_CLUSTER_NODE_ALREADY_MEMBER                             =       5065_u32
+  ERROR_CLUSTER_LAST_INTERNAL_NETWORK                           =       5066_u32
+  ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS                          =       5067_u32
+  ERROR_INVALID_OPERATION_ON_QUORUM                             =       5068_u32
+  ERROR_DEPENDENCY_NOT_ALLOWED                                  =       5069_u32
+  ERROR_CLUSTER_NODE_PAUSED                                     =       5070_u32
+  ERROR_NODE_CANT_HOST_RESOURCE                                 =       5071_u32
+  ERROR_CLUSTER_NODE_NOT_READY                                  =       5072_u32
+  ERROR_CLUSTER_NODE_SHUTTING_DOWN                              =       5073_u32
+  ERROR_CLUSTER_JOIN_ABORTED                                    =       5074_u32
+  ERROR_CLUSTER_INCOMPATIBLE_VERSIONS                           =       5075_u32
+  ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED                    =       5076_u32
+  ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED                           =       5077_u32
+  ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND                         =       5078_u32
+  ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED                           =       5079_u32
+  ERROR_CLUSTER_RESNAME_NOT_FOUND                               =       5080_u32
+  ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED                      =       5081_u32
+  ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST                           =       5082_u32
+  ERROR_CLUSTER_DATABASE_SEQMISMATCH                            =       5083_u32
+  ERROR_RESMON_INVALID_STATE                                    =       5084_u32
+  ERROR_CLUSTER_GUM_NOT_LOCKER                                  =       5085_u32
+  ERROR_QUORUM_DISK_NOT_FOUND                                   =       5086_u32
+  ERROR_DATABASE_BACKUP_CORRUPT                                 =       5087_u32
+  ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT                       =       5088_u32
+  ERROR_RESOURCE_PROPERTY_UNCHANGEABLE                          =       5089_u32
+  ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE                        =       5890_u32
+  ERROR_CLUSTER_QUORUMLOG_NOT_FOUND                             =       5891_u32
+  ERROR_CLUSTER_MEMBERSHIP_HALT                                 =       5892_u32
+  ERROR_CLUSTER_INSTANCE_ID_MISMATCH                            =       5893_u32
+  ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP                        =       5894_u32
+  ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH                     =       5895_u32
+  ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP                           =       5896_u32
+  ERROR_CLUSTER_PARAMETER_MISMATCH                              =       5897_u32
+  ERROR_NODE_CANNOT_BE_CLUSTERED                                =       5898_u32
+  ERROR_CLUSTER_WRONG_OS_VERSION                                =       5899_u32
+  ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME                    =       5900_u32
+  ERROR_CLUSCFG_ALREADY_COMMITTED                               =       5901_u32
+  ERROR_CLUSCFG_ROLLBACK_FAILED                                 =       5902_u32
+  ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT               =       5903_u32
+  ERROR_CLUSTER_OLD_VERSION                                     =       5904_u32
+  ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME                   =       5905_u32
+  ERROR_ENCRYPTION_FAILED                                       =       6000_u32
+  ERROR_DECRYPTION_FAILED                                       =       6001_u32
+  ERROR_FILE_ENCRYPTED                                          =       6002_u32
+  ERROR_NO_RECOVERY_POLICY                                      =       6003_u32
+  ERROR_NO_EFS                                                  =       6004_u32
+  ERROR_WRONG_EFS                                               =       6005_u32
+  ERROR_NO_USER_KEYS                                            =       6006_u32
+  ERROR_FILE_NOT_ENCRYPTED                                      =       6007_u32
+  ERROR_NOT_EXPORT_FORMAT                                       =       6008_u32
+  ERROR_FILE_READ_ONLY                                          =       6009_u32
+  ERROR_DIR_EFS_DISALLOWED                                      =       6010_u32
+  ERROR_EFS_SERVER_NOT_TRUSTED                                  =       6011_u32
+  ERROR_BAD_RECOVERY_POLICY                                     =       6012_u32
+  ERROR_EFS_ALG_BLOB_TOO_BIG                                    =       6013_u32
+  ERROR_VOLUME_NOT_SUPPORT_EFS                                  =       6014_u32
+  ERROR_EFS_DISABLED                                            =       6015_u32
+  ERROR_EFS_VERSION_NOT_SUPPORT                                 =       6016_u32
+  ERROR_NO_BROWSER_SERVERS_FOUND                                =       6118_u32
+  SCHED_E_SERVICE_NOT_LOCALSYSTEM                               =       6200_u32
+  ERROR_CTX_WINSTATION_NAME_INVALID                             =       7001_u32
+  ERROR_CTX_INVALID_PD                                          =       7002_u32
+  ERROR_CTX_PD_NOT_FOUND                                        =       7003_u32
+  ERROR_CTX_WD_NOT_FOUND                                        =       7004_u32
+  ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY                          =       7005_u32
+  ERROR_CTX_SERVICE_NAME_COLLISION                              =       7006_u32
+  ERROR_CTX_CLOSE_PENDING                                       =       7007_u32
+  ERROR_CTX_NO_OUTBUF                                           =       7008_u32
+  ERROR_CTX_MODEM_INF_NOT_FOUND                                 =       7009_u32
+  ERROR_CTX_INVALID_MODEMNAME                                   =       7010_u32
+  ERROR_CTX_MODEM_RESPONSE_ERROR                                =       7011_u32
+  ERROR_CTX_MODEM_RESPONSE_TIMEOUT                              =       7012_u32
+  ERROR_CTX_MODEM_RESPONSE_NO_CARRIER                           =       7013_u32
+  ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE                          =       7014_u32
+  ERROR_CTX_MODEM_RESPONSE_BUSY                                 =       7015_u32
+  ERROR_CTX_MODEM_RESPONSE_VOICE                                =       7016_u32
+  ERROR_CTX_TD_ERROR                                            =       7017_u32
+  ERROR_CTX_WINSTATION_NOT_FOUND                                =       7022_u32
+  ERROR_CTX_WINSTATION_ALREADY_EXISTS                           =       7023_u32
+  ERROR_CTX_WINSTATION_BUSY                                     =       7024_u32
+  ERROR_CTX_BAD_VIDEO_MODE                                      =       7025_u32
+  ERROR_CTX_GRAPHICS_INVALID                                    =       7035_u32
+  ERROR_CTX_LOGON_DISABLED                                      =       7037_u32
+  ERROR_CTX_NOT_CONSOLE                                         =       7038_u32
+  ERROR_CTX_CLIENT_QUERY_TIMEOUT                                =       7040_u32
+  ERROR_CTX_CONSOLE_DISCONNECT                                  =       7041_u32
+  ERROR_CTX_CONSOLE_CONNECT                                     =       7042_u32
+  ERROR_CTX_SHADOW_DENIED                                       =       7044_u32
+  ERROR_CTX_WINSTATION_ACCESS_DENIED                            =       7045_u32
+  ERROR_CTX_INVALID_WD                                          =       7049_u32
+  ERROR_CTX_SHADOW_INVALID                                      =       7050_u32
+  ERROR_CTX_SHADOW_DISABLED                                     =       7051_u32
+  ERROR_CTX_CLIENT_LICENSE_IN_USE                               =       7052_u32
+  ERROR_CTX_CLIENT_LICENSE_NOT_SET                              =       7053_u32
+  ERROR_CTX_LICENSE_NOT_AVAILABLE                               =       7054_u32
+  ERROR_CTX_LICENSE_CLIENT_INVALID                              =       7055_u32
+  ERROR_CTX_LICENSE_EXPIRED                                     =       7056_u32
+  ERROR_CTX_SHADOW_NOT_RUNNING                                  =       7057_u32
+  ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE                         =       7058_u32
+  ERROR_ACTIVATION_COUNT_EXCEEDED                               =       7059_u32
+  FRS_ERR_INVALID_API_SEQUENCE                                  =       8001_u32
+  FRS_ERR_STARTING_SERVICE                                      =       8002_u32
+  FRS_ERR_STOPPING_SERVICE                                      =       8003_u32
+  FRS_ERR_INTERNAL_API                                          =       8004_u32
+  FRS_ERR_INTERNAL                                              =       8005_u32
+  FRS_ERR_SERVICE_COMM                                          =       8006_u32
+  FRS_ERR_INSUFFICIENT_PRIV                                     =       8007_u32
+  FRS_ERR_AUTHENTICATION                                        =       8008_u32
+  FRS_ERR_PARENT_INSUFFICIENT_PRIV                              =       8009_u32
+  FRS_ERR_PARENT_AUTHENTICATION                                 =       8010_u32
+  FRS_ERR_CHILD_TO_PARENT_COMM                                  =       8011_u32
+  FRS_ERR_PARENT_TO_CHILD_COMM                                  =       8012_u32
+  FRS_ERR_SYSVOL_POPULATE                                       =       8013_u32
+  FRS_ERR_SYSVOL_POPULATE_TIMEOUT                               =       8014_u32
+  FRS_ERR_SYSVOL_IS_BUSY                                        =       8015_u32
+  FRS_ERR_SYSVOL_DEMOTE                                         =       8016_u32
+  FRS_ERR_INVALID_SERVICE_PARAMETER                             =       8017_u32
+  ERROR_DS_NOT_INSTALLED                                        =       8200_u32
+  ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY                         =       8201_u32
+  ERROR_DS_NO_ATTRIBUTE_OR_VALUE                                =       8202_u32
+  ERROR_DS_INVALID_ATTRIBUTE_SYNTAX                             =       8203_u32
+  ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED                             =       8204_u32
+  ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS                            =       8205_u32
+  ERROR_DS_BUSY                                                 =       8206_u32
+  ERROR_DS_UNAVAILABLE                                          =       8207_u32
+  ERROR_DS_NO_RIDS_ALLOCATED                                    =       8208_u32
+  ERROR_DS_NO_MORE_RIDS                                         =       8209_u32
+  ERROR_DS_INCORRECT_ROLE_OWNER                                 =       8210_u32
+  ERROR_DS_RIDMGR_INIT_ERROR                                    =       8211_u32
+  ERROR_DS_OBJ_CLASS_VIOLATION                                  =       8212_u32
+  ERROR_DS_CANT_ON_NON_LEAF                                     =       8213_u32
+  ERROR_DS_CANT_ON_RDN                                          =       8214_u32
+  ERROR_DS_CANT_MOD_OBJ_CLASS                                   =       8215_u32
+  ERROR_DS_CROSS_DOM_MOVE_ERROR                                 =       8216_u32
+  ERROR_DS_GC_NOT_AVAILABLE                                     =       8217_u32
+  ERROR_SHARED_POLICY                                           =       8218_u32
+  ERROR_POLICY_OBJECT_NOT_FOUND                                 =       8219_u32
+  ERROR_POLICY_ONLY_IN_DS                                       =       8220_u32
+  ERROR_PROMOTION_ACTIVE                                        =       8221_u32
+  ERROR_NO_PROMOTION_ACTIVE                                     =       8222_u32
+  ERROR_DS_OPERATIONS_ERROR                                     =       8224_u32
+  ERROR_DS_PROTOCOL_ERROR                                       =       8225_u32
+  ERROR_DS_TIMELIMIT_EXCEEDED                                   =       8226_u32
+  ERROR_DS_SIZELIMIT_EXCEEDED                                   =       8227_u32
+  ERROR_DS_ADMIN_LIMIT_EXCEEDED                                 =       8228_u32
+  ERROR_DS_COMPARE_FALSE                                        =       8229_u32
+  ERROR_DS_COMPARE_TRUE                                         =       8230_u32
+  ERROR_DS_AUTH_METHOD_NOT_SUPPORTED                            =       8231_u32
+  ERROR_DS_STRONG_AUTH_REQUIRED                                 =       8232_u32
+  ERROR_DS_INAPPROPRIATE_AUTH                                   =       8233_u32
+  ERROR_DS_AUTH_UNKNOWN                                         =       8234_u32
+  ERROR_DS_REFERRAL                                             =       8235_u32
+  ERROR_DS_UNAVAILABLE_CRIT_EXTENSION                           =       8236_u32
+  ERROR_DS_CONFIDENTIALITY_REQUIRED                             =       8237_u32
+  ERROR_DS_INAPPROPRIATE_MATCHING                               =       8238_u32
+  ERROR_DS_CONSTRAINT_VIOLATION                                 =       8239_u32
+  ERROR_DS_NO_SUCH_OBJECT                                       =       8240_u32
+  ERROR_DS_ALIAS_PROBLEM                                        =       8241_u32
+  ERROR_DS_INVALID_DN_SYNTAX                                    =       8242_u32
+  ERROR_DS_IS_LEAF                                              =       8243_u32
+  ERROR_DS_ALIAS_DEREF_PROBLEM                                  =       8244_u32
+  ERROR_DS_UNWILLING_TO_PERFORM                                 =       8245_u32
+  ERROR_DS_LOOP_DETECT                                          =       8246_u32
+  ERROR_DS_NAMING_VIOLATION                                     =       8247_u32
+  ERROR_DS_OBJECT_RESULTS_TOO_LARGE                             =       8248_u32
+  ERROR_DS_AFFECTS_MULTIPLE_DSAS                                =       8249_u32
+  ERROR_DS_SERVER_DOWN                                          =       8250_u32
+  ERROR_DS_LOCAL_ERROR                                          =       8251_u32
+  ERROR_DS_ENCODING_ERROR                                       =       8252_u32
+  ERROR_DS_DECODING_ERROR                                       =       8253_u32
+  ERROR_DS_FILTER_UNKNOWN                                       =       8254_u32
+  ERROR_DS_PARAM_ERROR                                          =       8255_u32
+  ERROR_DS_NOT_SUPPORTED                                        =       8256_u32
+  ERROR_DS_NO_RESULTS_RETURNED                                  =       8257_u32
+  ERROR_DS_CONTROL_NOT_FOUND                                    =       8258_u32
+  ERROR_DS_CLIENT_LOOP                                          =       8259_u32
+  ERROR_DS_REFERRAL_LIMIT_EXCEEDED                              =       8260_u32
+  ERROR_DS_SORT_CONTROL_MISSING                                 =       8261_u32
+  ERROR_DS_OFFSET_RANGE_ERROR                                   =       8262_u32
+  ERROR_DS_ROOT_MUST_BE_NC                                      =       8301_u32
+  ERROR_DS_ADD_REPLICA_INHIBITED                                =       8302_u32
+  ERROR_DS_ATT_NOT_DEF_IN_SCHEMA                                =       8303_u32
+  ERROR_DS_MAX_OBJ_SIZE_EXCEEDED                                =       8304_u32
+  ERROR_DS_OBJ_STRING_NAME_EXISTS                               =       8305_u32
+  ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA                             =       8306_u32
+  ERROR_DS_RDN_DOESNT_MATCH_SCHEMA                              =       8307_u32
+  ERROR_DS_NO_REQUESTED_ATTS_FOUND                              =       8308_u32
+  ERROR_DS_USER_BUFFER_TO_SMALL                                 =       8309_u32
+  ERROR_DS_ATT_IS_NOT_ON_OBJ                                    =       8310_u32
+  ERROR_DS_ILLEGAL_MOD_OPERATION                                =       8311_u32
+  ERROR_DS_OBJ_TOO_LARGE                                        =       8312_u32
+  ERROR_DS_BAD_INSTANCE_TYPE                                    =       8313_u32
+  ERROR_DS_MASTERDSA_REQUIRED                                   =       8314_u32
+  ERROR_DS_OBJECT_CLASS_REQUIRED                                =       8315_u32
+  ERROR_DS_MISSING_REQUIRED_ATT                                 =       8316_u32
+  ERROR_DS_ATT_NOT_DEF_FOR_CLASS                                =       8317_u32
+  ERROR_DS_ATT_ALREADY_EXISTS                                   =       8318_u32
+  ERROR_DS_CANT_ADD_ATT_VALUES                                  =       8320_u32
+  ERROR_DS_SINGLE_VALUE_CONSTRAINT                              =       8321_u32
+  ERROR_DS_RANGE_CONSTRAINT                                     =       8322_u32
+  ERROR_DS_ATT_VAL_ALREADY_EXISTS                               =       8323_u32
+  ERROR_DS_CANT_REM_MISSING_ATT                                 =       8324_u32
+  ERROR_DS_CANT_REM_MISSING_ATT_VAL                             =       8325_u32
+  ERROR_DS_ROOT_CANT_BE_SUBREF                                  =       8326_u32
+  ERROR_DS_NO_CHAINING                                          =       8327_u32
+  ERROR_DS_NO_CHAINED_EVAL                                      =       8328_u32
+  ERROR_DS_NO_PARENT_OBJECT                                     =       8329_u32
+  ERROR_DS_PARENT_IS_AN_ALIAS                                   =       8330_u32
+  ERROR_DS_CANT_MIX_MASTER_AND_REPS                             =       8331_u32
+  ERROR_DS_CHILDREN_EXIST                                       =       8332_u32
+  ERROR_DS_OBJ_NOT_FOUND                                        =       8333_u32
+  ERROR_DS_ALIASED_OBJ_MISSING                                  =       8334_u32
+  ERROR_DS_BAD_NAME_SYNTAX                                      =       8335_u32
+  ERROR_DS_ALIAS_POINTS_TO_ALIAS                                =       8336_u32
+  ERROR_DS_CANT_DEREF_ALIAS                                     =       8337_u32
+  ERROR_DS_OUT_OF_SCOPE                                         =       8338_u32
+  ERROR_DS_OBJECT_BEING_REMOVED                                 =       8339_u32
+  ERROR_DS_CANT_DELETE_DSA_OBJ                                  =       8340_u32
+  ERROR_DS_GENERIC_ERROR                                        =       8341_u32
+  ERROR_DS_DSA_MUST_BE_INT_MASTER                               =       8342_u32
+  ERROR_DS_CLASS_NOT_DSA                                        =       8343_u32
+  ERROR_DS_INSUFF_ACCESS_RIGHTS                                 =       8344_u32
+  ERROR_DS_ILLEGAL_SUPERIOR                                     =       8345_u32
+  ERROR_DS_ATTRIBUTE_OWNED_BY_SAM                               =       8346_u32
+  ERROR_DS_NAME_TOO_MANY_PARTS                                  =       8347_u32
+  ERROR_DS_NAME_TOO_LONG                                        =       8348_u32
+  ERROR_DS_NAME_VALUE_TOO_LONG                                  =       8349_u32
+  ERROR_DS_NAME_UNPARSEABLE                                     =       8350_u32
+  ERROR_DS_NAME_TYPE_UNKNOWN                                    =       8351_u32
+  ERROR_DS_NOT_AN_OBJECT                                        =       8352_u32
+  ERROR_DS_SEC_DESC_TOO_SHORT                                   =       8353_u32
+  ERROR_DS_SEC_DESC_INVALID                                     =       8354_u32
+  ERROR_DS_NO_DELETED_NAME                                      =       8355_u32
+  ERROR_DS_SUBREF_MUST_HAVE_PARENT                              =       8356_u32
+  ERROR_DS_NCNAME_MUST_BE_NC                                    =       8357_u32
+  ERROR_DS_CANT_ADD_SYSTEM_ONLY                                 =       8358_u32
+  ERROR_DS_CLASS_MUST_BE_CONCRETE                               =       8359_u32
+  ERROR_DS_INVALID_DMD                                          =       8360_u32
+  ERROR_DS_OBJ_GUID_EXISTS                                      =       8361_u32
+  ERROR_DS_NOT_ON_BACKLINK                                      =       8362_u32
+  ERROR_DS_NO_CROSSREF_FOR_NC                                   =       8363_u32
+  ERROR_DS_SHUTTING_DOWN                                        =       8364_u32
+  ERROR_DS_UNKNOWN_OPERATION                                    =       8365_u32
+  ERROR_DS_INVALID_ROLE_OWNER                                   =       8366_u32
+  ERROR_DS_COULDNT_CONTACT_FSMO                                 =       8367_u32
+  ERROR_DS_CROSS_NC_DN_RENAME                                   =       8368_u32
+  ERROR_DS_CANT_MOD_SYSTEM_ONLY                                 =       8369_u32
+  ERROR_DS_REPLICATOR_ONLY                                      =       8370_u32
+  ERROR_DS_OBJ_CLASS_NOT_DEFINED                                =       8371_u32
+  ERROR_DS_OBJ_CLASS_NOT_SUBCLASS                               =       8372_u32
+  ERROR_DS_NAME_REFERENCE_INVALID                               =       8373_u32
+  ERROR_DS_CROSS_REF_EXISTS                                     =       8374_u32
+  ERROR_DS_CANT_DEL_MASTER_CROSSREF                             =       8375_u32
+  ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD                           =       8376_u32
+  ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX                            =       8377_u32
+  ERROR_DS_DUP_RDN                                              =       8378_u32
+  ERROR_DS_DUP_OID                                              =       8379_u32
+  ERROR_DS_DUP_MAPI_ID                                          =       8380_u32
+  ERROR_DS_DUP_SCHEMA_ID_GUID                                   =       8381_u32
+  ERROR_DS_DUP_LDAP_DISPLAY_NAME                                =       8382_u32
+  ERROR_DS_SEMANTIC_ATT_TEST                                    =       8383_u32
+  ERROR_DS_SYNTAX_MISMATCH                                      =       8384_u32
+  ERROR_DS_EXISTS_IN_MUST_HAVE                                  =       8385_u32
+  ERROR_DS_EXISTS_IN_MAY_HAVE                                   =       8386_u32
+  ERROR_DS_NONEXISTENT_MAY_HAVE                                 =       8387_u32
+  ERROR_DS_NONEXISTENT_MUST_HAVE                                =       8388_u32
+  ERROR_DS_AUX_CLS_TEST_FAIL                                    =       8389_u32
+  ERROR_DS_NONEXISTENT_POSS_SUP                                 =       8390_u32
+  ERROR_DS_SUB_CLS_TEST_FAIL                                    =       8391_u32
+  ERROR_DS_BAD_RDN_ATT_ID_SYNTAX                                =       8392_u32
+  ERROR_DS_EXISTS_IN_AUX_CLS                                    =       8393_u32
+  ERROR_DS_EXISTS_IN_SUB_CLS                                    =       8394_u32
+  ERROR_DS_EXISTS_IN_POSS_SUP                                   =       8395_u32
+  ERROR_DS_RECALCSCHEMA_FAILED                                  =       8396_u32
+  ERROR_DS_TREE_DELETE_NOT_FINISHED                             =       8397_u32
+  ERROR_DS_CANT_DELETE                                          =       8398_u32
+  ERROR_DS_ATT_SCHEMA_REQ_ID                                    =       8399_u32
+  ERROR_DS_BAD_ATT_SCHEMA_SYNTAX                                =       8400_u32
+  ERROR_DS_CANT_CACHE_ATT                                       =       8401_u32
+  ERROR_DS_CANT_CACHE_CLASS                                     =       8402_u32
+  ERROR_DS_CANT_REMOVE_ATT_CACHE                                =       8403_u32
+  ERROR_DS_CANT_REMOVE_CLASS_CACHE                              =       8404_u32
+  ERROR_DS_CANT_RETRIEVE_DN                                     =       8405_u32
+  ERROR_DS_MISSING_SUPREF                                       =       8406_u32
+  ERROR_DS_CANT_RETRIEVE_INSTANCE                               =       8407_u32
+  ERROR_DS_CODE_INCONSISTENCY                                   =       8408_u32
+  ERROR_DS_DATABASE_ERROR                                       =       8409_u32
+  ERROR_DS_GOVERNSID_MISSING                                    =       8410_u32
+  ERROR_DS_MISSING_EXPECTED_ATT                                 =       8411_u32
+  ERROR_DS_NCNAME_MISSING_CR_REF                                =       8412_u32
+  ERROR_DS_SECURITY_CHECKING_ERROR                              =       8413_u32
+  ERROR_DS_SCHEMA_NOT_LOADED                                    =       8414_u32
+  ERROR_DS_SCHEMA_ALLOC_FAILED                                  =       8415_u32
+  ERROR_DS_ATT_SCHEMA_REQ_SYNTAX                                =       8416_u32
+  ERROR_DS_GCVERIFY_ERROR                                       =       8417_u32
+  ERROR_DS_DRA_SCHEMA_MISMATCH                                  =       8418_u32
+  ERROR_DS_CANT_FIND_DSA_OBJ                                    =       8419_u32
+  ERROR_DS_CANT_FIND_EXPECTED_NC                                =       8420_u32
+  ERROR_DS_CANT_FIND_NC_IN_CACHE                                =       8421_u32
+  ERROR_DS_CANT_RETRIEVE_CHILD                                  =       8422_u32
+  ERROR_DS_SECURITY_ILLEGAL_MODIFY                              =       8423_u32
+  ERROR_DS_CANT_REPLACE_HIDDEN_REC                              =       8424_u32
+  ERROR_DS_BAD_HIERARCHY_FILE                                   =       8425_u32
+  ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED                         =       8426_u32
+  ERROR_DS_CONFIG_PARAM_MISSING                                 =       8427_u32
+  ERROR_DS_COUNTING_AB_INDICES_FAILED                           =       8428_u32
+  ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED                        =       8429_u32
+  ERROR_DS_INTERNAL_FAILURE                                     =       8430_u32
+  ERROR_DS_UNKNOWN_ERROR                                        =       8431_u32
+  ERROR_DS_ROOT_REQUIRES_CLASS_TOP                              =       8432_u32
+  ERROR_DS_REFUSING_FSMO_ROLES                                  =       8433_u32
+  ERROR_DS_MISSING_FSMO_SETTINGS                                =       8434_u32
+  ERROR_DS_UNABLE_TO_SURRENDER_ROLES                            =       8435_u32
+  ERROR_DS_DRA_GENERIC                                          =       8436_u32
+  ERROR_DS_DRA_INVALID_PARAMETER                                =       8437_u32
+  ERROR_DS_DRA_BUSY                                             =       8438_u32
+  ERROR_DS_DRA_BAD_DN                                           =       8439_u32
+  ERROR_DS_DRA_BAD_NC                                           =       8440_u32
+  ERROR_DS_DRA_DN_EXISTS                                        =       8441_u32
+  ERROR_DS_DRA_INTERNAL_ERROR                                   =       8442_u32
+  ERROR_DS_DRA_INCONSISTENT_DIT                                 =       8443_u32
+  ERROR_DS_DRA_CONNECTION_FAILED                                =       8444_u32
+  ERROR_DS_DRA_BAD_INSTANCE_TYPE                                =       8445_u32
+  ERROR_DS_DRA_OUT_OF_MEM                                       =       8446_u32
+  ERROR_DS_DRA_MAIL_PROBLEM                                     =       8447_u32
+  ERROR_DS_DRA_REF_ALREADY_EXISTS                               =       8448_u32
+  ERROR_DS_DRA_REF_NOT_FOUND                                    =       8449_u32
+  ERROR_DS_DRA_OBJ_IS_REP_SOURCE                                =       8450_u32
+  ERROR_DS_DRA_DB_ERROR                                         =       8451_u32
+  ERROR_DS_DRA_NO_REPLICA                                       =       8452_u32
+  ERROR_DS_DRA_ACCESS_DENIED                                    =       8453_u32
+  ERROR_DS_DRA_NOT_SUPPORTED                                    =       8454_u32
+  ERROR_DS_DRA_RPC_CANCELLED                                    =       8455_u32
+  ERROR_DS_DRA_SOURCE_DISABLED                                  =       8456_u32
+  ERROR_DS_DRA_SINK_DISABLED                                    =       8457_u32
+  ERROR_DS_DRA_NAME_COLLISION                                   =       8458_u32
+  ERROR_DS_DRA_SOURCE_REINSTALLED                               =       8459_u32
+  ERROR_DS_DRA_MISSING_PARENT                                   =       8460_u32
+  ERROR_DS_DRA_PREEMPTED                                        =       8461_u32
+  ERROR_DS_DRA_ABANDON_SYNC                                     =       8462_u32
+  ERROR_DS_DRA_SHUTDOWN                                         =       8463_u32
+  ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET                         =       8464_u32
+  ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA                        =       8465_u32
+  ERROR_DS_DRA_EXTN_CONNECTION_FAILED                           =       8466_u32
+  ERROR_DS_INSTALL_SCHEMA_MISMATCH                              =       8467_u32
+  ERROR_DS_DUP_LINK_ID                                          =       8468_u32
+  ERROR_DS_NAME_ERROR_RESOLVING                                 =       8469_u32
+  ERROR_DS_NAME_ERROR_NOT_FOUND                                 =       8470_u32
+  ERROR_DS_NAME_ERROR_NOT_UNIQUE                                =       8471_u32
+  ERROR_DS_NAME_ERROR_NO_MAPPING                                =       8472_u32
+  ERROR_DS_NAME_ERROR_DOMAIN_ONLY                               =       8473_u32
+  ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING                    =       8474_u32
+  ERROR_DS_CONSTRUCTED_ATT_MOD                                  =       8475_u32
+  ERROR_DS_WRONG_OM_OBJ_CLASS                                   =       8476_u32
+  ERROR_DS_DRA_REPL_PENDING                                     =       8477_u32
+  ERROR_DS_DS_REQUIRED                                          =       8478_u32
+  ERROR_DS_INVALID_LDAP_DISPLAY_NAME                            =       8479_u32
+  ERROR_DS_NON_BASE_SEARCH                                      =       8480_u32
+  ERROR_DS_CANT_RETRIEVE_ATTS                                   =       8481_u32
+  ERROR_DS_BACKLINK_WITHOUT_LINK                                =       8482_u32
+  ERROR_DS_EPOCH_MISMATCH                                       =       8483_u32
+  ERROR_DS_SRC_NAME_MISMATCH                                    =       8484_u32
+  ERROR_DS_SRC_AND_DST_NC_IDENTICAL                             =       8485_u32
+  ERROR_DS_DST_NC_MISMATCH                                      =       8486_u32
+  ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC                           =       8487_u32
+  ERROR_DS_SRC_GUID_MISMATCH                                    =       8488_u32
+  ERROR_DS_CANT_MOVE_DELETED_OBJECT                             =       8489_u32
+  ERROR_DS_PDC_OPERATION_IN_PROGRESS                            =       8490_u32
+  ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD                            =       8491_u32
+  ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION                          =       8492_u32
+  ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS                      =       8493_u32
+  ERROR_DS_NC_MUST_HAVE_NC_PARENT                               =       8494_u32
+  ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE                            =       8495_u32
+  ERROR_DS_DST_DOMAIN_NOT_NATIVE                                =       8496_u32
+  ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER                     =       8497_u32
+  ERROR_DS_CANT_MOVE_ACCOUNT_GROUP                              =       8498_u32
+  ERROR_DS_CANT_MOVE_RESOURCE_GROUP                             =       8499_u32
+  ERROR_DS_INVALID_SEARCH_FLAG                                  =       8500_u32
+  ERROR_DS_NO_TREE_DELETE_ABOVE_NC                              =       8501_u32
+  ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE                         =       8502_u32
+  ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE             =       8503_u32
+  ERROR_DS_SAM_INIT_FAILURE                                     =       8504_u32
+  ERROR_DS_SENSITIVE_GROUP_VIOLATION                            =       8505_u32
+  ERROR_DS_CANT_MOD_PRIMARYGROUPID                              =       8506_u32
+  ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD                              =       8507_u32
+  ERROR_DS_NONSAFE_SCHEMA_CHANGE                                =       8508_u32
+  ERROR_DS_SCHEMA_UPDATE_DISALLOWED                             =       8509_u32
+  ERROR_DS_CANT_CREATE_UNDER_SCHEMA                             =       8510_u32
+  ERROR_DS_INSTALL_NO_SRC_SCH_VERSION                           =       8511_u32
+  ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE                    =       8512_u32
+  ERROR_DS_INVALID_GROUP_TYPE                                   =       8513_u32
+  ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                   =       8514_u32
+  ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                    =       8515_u32
+  ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                        =       8516_u32
+  ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                    =       8517_u32
+  ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                     =       8518_u32
+  ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                  =       8519_u32
+  ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER             =       8520_u32
+  ERROR_DS_HAVE_PRIMARY_MEMBERS                                 =       8521_u32
+  ERROR_DS_STRING_SD_CONVERSION_FAILED                          =       8522_u32
+  ERROR_DS_NAMING_MASTER_GC                                     =       8523_u32
+  ERROR_DS_DNS_LOOKUP_FAILURE                                   =       8524_u32
+  ERROR_DS_COULDNT_UPDATE_SPNS                                  =       8525_u32
+  ERROR_DS_CANT_RETRIEVE_SD                                     =       8526_u32
+  ERROR_DS_KEY_NOT_UNIQUE                                       =       8527_u32
+  ERROR_DS_WRONG_LINKED_ATT_SYNTAX                              =       8528_u32
+  ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD                            =       8529_u32
+  ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY                              =       8530_u32
+  ERROR_DS_CANT_START                                           =       8531_u32
+  ERROR_DS_INIT_FAILURE                                         =       8532_u32
+  ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION                         =       8533_u32
+  ERROR_DS_SOURCE_DOMAIN_IN_FOREST                              =       8534_u32
+  ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST                     =       8535_u32
+  ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED                     =       8536_u32
+  ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN                          =       8537_u32
+  ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER                            =       8538_u32
+  ERROR_DS_SRC_SID_EXISTS_IN_FOREST                             =       8539_u32
+  ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH                    =       8540_u32
+  ERROR_SAM_INIT_FAILURE                                        =       8541_u32
+  ERROR_DS_DRA_SCHEMA_INFO_SHIP                                 =       8542_u32
+  ERROR_DS_DRA_SCHEMA_CONFLICT                                  =       8543_u32
+  ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT                          =       8544_u32
+  ERROR_DS_DRA_OBJ_NC_MISMATCH                                  =       8545_u32
+  ERROR_DS_NC_STILL_HAS_DSAS                                    =       8546_u32
+  ERROR_DS_GC_REQUIRED                                          =       8547_u32
+  ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                           =       8548_u32
+  ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS                           =       8549_u32
+  ERROR_DS_CANT_ADD_TO_GC                                       =       8550_u32
+  ERROR_DS_NO_CHECKPOINT_WITH_PDC                               =       8551_u32
+  ERROR_DS_SOURCE_AUDITING_NOT_ENABLED                          =       8552_u32
+  ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC                          =       8553_u32
+  ERROR_DS_INVALID_NAME_FOR_SPN                                 =       8554_u32
+  ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS                         =       8555_u32
+  ERROR_DS_UNICODEPWD_NOT_IN_QUOTES                             =       8556_u32
+  ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                       =       8557_u32
+  ERROR_DS_MUST_BE_RUN_ON_DST_DC                                =       8558_u32
+  ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER                        =       8559_u32
+  ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ                        =       8560_u32
+  ERROR_DS_INIT_FAILURE_CONSOLE                                 =       8561_u32
+  ERROR_DS_SAM_INIT_FAILURE_CONSOLE                             =       8562_u32
+  ERROR_DS_FOREST_VERSION_TOO_HIGH                              =       8563_u32
+  ERROR_DS_DOMAIN_VERSION_TOO_HIGH                              =       8564_u32
+  ERROR_DS_FOREST_VERSION_TOO_LOW                               =       8565_u32
+  ERROR_DS_DOMAIN_VERSION_TOO_LOW                               =       8566_u32
+  ERROR_DS_INCOMPATIBLE_VERSION                                 =       8567_u32
+  ERROR_DS_LOW_DSA_VERSION                                      =       8568_u32
+  ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN                   =       8569_u32
+  ERROR_DS_NOT_SUPPORTED_SORT_ORDER                             =       8570_u32
+  ERROR_DS_NAME_NOT_UNIQUE                                      =       8571_u32
+  ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4                       =       8572_u32
+  ERROR_DS_OUT_OF_VERSION_STORE                                 =       8573_u32
+  ERROR_DS_INCOMPATIBLE_CONTROLS_USED                           =       8574_u32
+  ERROR_DS_NO_REF_DOMAIN                                        =       8575_u32
+  ERROR_DS_RESERVED_LINK_ID                                     =       8576_u32
+  ERROR_DS_LINK_ID_NOT_AVAILABLE                                =       8577_u32
+  ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                        =       8578_u32
+  ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE                 =       8579_u32
+  ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC                          =       8580_u32
+  ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG                          =       8581_u32
+  ERROR_DS_MODIFYDN_WRONG_GRANDPARENT                           =       8582_u32
+  ERROR_DS_NAME_ERROR_TRUST_REFERRAL                            =       8583_u32
+  ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER                        =       8584_u32
+  ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD                        =       8585_u32
+  ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2                         =       8586_u32
+  ERROR_DS_THREAD_LIMIT_EXCEEDED                                =       8587_u32
+  ERROR_DS_NOT_CLOSEST                                          =       8588_u32
+  ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF                   =       8589_u32
+  ERROR_DS_SINGLE_USER_MODE_FAILED                              =       8590_u32
+  ERROR_DS_NTDSCRIPT_SYNTAX_ERROR                               =       8591_u32
+  ERROR_DS_NTDSCRIPT_PROCESS_ERROR                              =       8592_u32
+  ERROR_DS_DIFFERENT_REPL_EPOCHS                                =       8593_u32
+  ERROR_DS_DRS_EXTENSIONS_CHANGED                               =       8594_u32
+  ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR        =       8595_u32
+  ERROR_DS_NO_MSDS_INTID                                        =       8596_u32
+  ERROR_DS_DUP_MSDS_INTID                                       =       8597_u32
+  ERROR_DS_EXISTS_IN_RDNATTID                                   =       8598_u32
+  ERROR_DS_AUTHORIZATION_FAILED                                 =       8599_u32
+  ERROR_DS_INVALID_SCRIPT                                       =       8600_u32
+  ERROR_DS_REMOTE_CROSSREF_OP_FAILED                            =       8601_u32
+  ERROR_DS_CROSS_REF_BUSY                                       =       8602_u32
+  ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN                   =       8603_u32
+  ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC                        =       8604_u32
+  ERROR_DS_DUPLICATE_ID_FOUND                                   =       8605_u32
+  ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT                   =       8606_u32
+  ERROR_DS_GROUP_CONVERSION_ERROR                               =       8607_u32
+  ERROR_DS_CANT_MOVE_APP_BASIC_GROUP                            =       8608_u32
+  ERROR_DS_CANT_MOVE_APP_QUERY_GROUP                            =       8609_u32
+  ERROR_DS_ROLE_NOT_VERIFIED                                    =       8610_u32
+  ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL                      =       8611_u32
+  ERROR_DS_DOMAIN_RENAME_IN_PROGRESS                            =       8612_u32
+  ERROR_DS_EXISTING_AD_CHILD_NC                                 =       8613_u32
+  ERROR_DS_REPL_LIFETIME_EXCEEDED                               =       8614_u32
+  ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER                       =       8615_u32
+  ERROR_DS_LDAP_SEND_QUEUE_FULL                                 =       8616_u32
+  ERROR_DS_DRA_OUT_SCHEDULE_WINDOW                              =       8617_u32
+  DNS_ERROR_RESPONSE_CODES_BASE                                 =       9000_u32
+  DNS_ERROR_MASK                                                = 0x00002328_u32
+  DNS_ERROR_RCODE_FORMAT_ERROR                                  =       9001_u32
+  DNS_ERROR_RCODE_SERVER_FAILURE                                =       9002_u32
+  DNS_ERROR_RCODE_NAME_ERROR                                    =       9003_u32
+  DNS_ERROR_RCODE_NOT_IMPLEMENTED                               =       9004_u32
+  DNS_ERROR_RCODE_REFUSED                                       =       9005_u32
+  DNS_ERROR_RCODE_YXDOMAIN                                      =       9006_u32
+  DNS_ERROR_RCODE_YXRRSET                                       =       9007_u32
+  DNS_ERROR_RCODE_NXRRSET                                       =       9008_u32
+  DNS_ERROR_RCODE_NOTAUTH                                       =       9009_u32
+  DNS_ERROR_RCODE_NOTZONE                                       =       9010_u32
+  DNS_ERROR_RCODE_BADSIG                                        =       9016_u32
+  DNS_ERROR_RCODE_BADKEY                                        =       9017_u32
+  DNS_ERROR_RCODE_BADTIME                                       =       9018_u32
+  DNS_ERROR_RCODE_LAST                                          = DNS_ERROR_RCODE_BADTIME
+  DNS_ERROR_PACKET_FMT_BASE                                     = 9500_u32
+  DNS_INFO_NO_RECORDS                                           = 9501_u32
+  DNS_ERROR_BAD_PACKET                                          = 9502_u32
+  DNS_ERROR_NO_PACKET                                           = 9503_u32
+  DNS_ERROR_RCODE                                               = 9504_u32
+  DNS_ERROR_UNSECURE_PACKET                                     = 9505_u32
+  DNS_STATUS_PACKET_UNSECURE                                    = DNS_ERROR_UNSECURE_PACKET
+  DNS_ERROR_NO_MEMORY                                           = ERROR_OUTOFMEMORY
+  DNS_ERROR_INVALID_NAME                                        = ERROR_INVALID_NAME
+  DNS_ERROR_INVALID_DATA                                        = ERROR_INVALID_DATA
+  DNS_ERROR_GENERAL_API_BASE                                    =  9550_u32
+  DNS_ERROR_INVALID_TYPE                                        =  9551_u32
+  DNS_ERROR_INVALID_IP_ADDRESS                                  =  9552_u32
+  DNS_ERROR_INVALID_PROPERTY                                    =  9553_u32
+  DNS_ERROR_TRY_AGAIN_LATER                                     =  9554_u32
+  DNS_ERROR_NOT_UNIQUE                                          =  9555_u32
+  DNS_ERROR_NON_RFC_NAME                                        =  9556_u32
+  DNS_STATUS_FQDN                                               =  9557_u32
+  DNS_STATUS_DOTTED_NAME                                        =  9558_u32
+  DNS_STATUS_SINGLE_PART_NAME                                   =  9559_u32
+  DNS_ERROR_INVALID_NAME_CHAR                                   =  9560_u32
+  DNS_ERROR_NUMERIC_NAME                                        =  9561_u32
+  DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER                          =  9562_u32
+  DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION                        =  9563_u32
+  DNS_ERROR_CANNOT_FIND_ROOT_HINTS                              =  9564_u32
+  DNS_ERROR_INCONSISTENT_ROOT_HINTS                             =  9565_u32
+  DNS_ERROR_ZONE_BASE                                           =  9600_u32
+  DNS_ERROR_ZONE_DOES_NOT_EXIST                                 =  9601_u32
+  DNS_ERROR_NO_ZONE_INFO                                        =  9602_u32
+  DNS_ERROR_INVALID_ZONE_OPERATION                              =  9603_u32
+  DNS_ERROR_ZONE_CONFIGURATION_ERROR                            =  9604_u32
+  DNS_ERROR_ZONE_HAS_NO_SOA_RECORD                              =  9605_u32
+  DNS_ERROR_ZONE_HAS_NO_NS_RECORDS                              =  9606_u32
+  DNS_ERROR_ZONE_LOCKED                                         =  9607_u32
+  DNS_ERROR_ZONE_CREATION_FAILED                                =  9608_u32
+  DNS_ERROR_ZONE_ALREADY_EXISTS                                 =  9609_u32
+  DNS_ERROR_AUTOZONE_ALREADY_EXISTS                             =  9610_u32
+  DNS_ERROR_INVALID_ZONE_TYPE                                   =  9611_u32
+  DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP                        =  9612_u32
+  DNS_ERROR_ZONE_NOT_SECONDARY                                  =  9613_u32
+  DNS_ERROR_NEED_SECONDARY_ADDRESSES                            =  9614_u32
+  DNS_ERROR_WINS_INIT_FAILED                                    =  9615_u32
+  DNS_ERROR_NEED_WINS_SERVERS                                   =  9616_u32
+  DNS_ERROR_NBSTAT_INIT_FAILED                                  =  9617_u32
+  DNS_ERROR_SOA_DELETE_INVALID                                  =  9618_u32
+  DNS_ERROR_FORWARDER_ALREADY_EXISTS                            =  9619_u32
+  DNS_ERROR_ZONE_REQUIRES_MASTER_IP                             =  9620_u32
+  DNS_ERROR_ZONE_IS_SHUTDOWN                                    =  9621_u32
+  DNS_ERROR_DATAFILE_BASE                                       =  9650_u32
+  DNS_ERROR_PRIMARY_REQUIRES_DATAFILE                           =  9651_u32
+  DNS_ERROR_INVALID_DATAFILE_NAME                               =  9652_u32
+  DNS_ERROR_DATAFILE_OPEN_FAILURE                               =  9653_u32
+  DNS_ERROR_FILE_WRITEBACK_FAILED                               =  9654_u32
+  DNS_ERROR_DATAFILE_PARSING                                    =  9655_u32
+  DNS_ERROR_DATABASE_BASE                                       =  9700_u32
+  DNS_ERROR_RECORD_DOES_NOT_EXIST                               =  9701_u32
+  DNS_ERROR_RECORD_FORMAT                                       =  9702_u32
+  DNS_ERROR_NODE_CREATION_FAILED                                =  9703_u32
+  DNS_ERROR_UNKNOWN_RECORD_TYPE                                 =  9704_u32
+  DNS_ERROR_RECORD_TIMED_OUT                                    =  9705_u32
+  DNS_ERROR_NAME_NOT_IN_ZONE                                    =  9706_u32
+  DNS_ERROR_CNAME_LOOP                                          =  9707_u32
+  DNS_ERROR_NODE_IS_CNAME                                       =  9708_u32
+  DNS_ERROR_CNAME_COLLISION                                     =  9709_u32
+  DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT                            =  9710_u32
+  DNS_ERROR_RECORD_ALREADY_EXISTS                               =  9711_u32
+  DNS_ERROR_SECONDARY_DATA                                      =  9712_u32
+  DNS_ERROR_NO_CREATE_CACHE_DATA                                =  9713_u32
+  DNS_ERROR_NAME_DOES_NOT_EXIST                                 =  9714_u32
+  DNS_WARNING_PTR_CREATE_FAILED                                 =  9715_u32
+  DNS_WARNING_DOMAIN_UNDELETED                                  =  9716_u32
+  DNS_ERROR_DS_UNAVAILABLE                                      =  9717_u32
+  DNS_ERROR_DS_ZONE_ALREADY_EXISTS                              =  9718_u32
+  DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE                              =  9719_u32
+  DNS_ERROR_OPERATION_BASE                                      =  9750_u32
+  DNS_INFO_AXFR_COMPLETE                                        =  9751_u32
+  DNS_ERROR_AXFR                                                =  9752_u32
+  DNS_INFO_ADDED_LOCAL_WINS                                     =  9753_u32
+  DNS_ERROR_SECURE_BASE                                         =  9800_u32
+  DNS_STATUS_CONTINUE_NEEDED                                    =  9801_u32
+  DNS_ERROR_SETUP_BASE                                          =  9850_u32
+  DNS_ERROR_NO_TCPIP                                            =  9851_u32
+  DNS_ERROR_NO_DNS_SERVERS                                      =  9852_u32
+  DNS_ERROR_DP_BASE                                             =  9900_u32
+  DNS_ERROR_DP_DOES_NOT_EXIST                                   =  9901_u32
+  DNS_ERROR_DP_ALREADY_EXISTS                                   =  9902_u32
+  DNS_ERROR_DP_NOT_ENLISTED                                     =  9903_u32
+  DNS_ERROR_DP_ALREADY_ENLISTED                                 =  9904_u32
+  DNS_ERROR_DP_NOT_AVAILABLE                                    =  9905_u32
+  DNS_ERROR_DP_FSMO_ERROR                                       =  9906_u32
+  WSABASEERR                                                    = 10000_u32
+  WSAEINTR                                                      = (WSABASEERR + 4)
+  WSAEBADF                                                      = (WSABASEERR + 9)
+  WSAEACCES                                                     = (WSABASEERR + 13)
+  WSAEFAULT                                                     = (WSABASEERR + 14)
+  WSAEINVAL                                                     = (WSABASEERR + 22)
+  WSAEMFILE                                                     = (WSABASEERR + 24)
+  WSAEWOULDBLOCK                                                = (WSABASEERR + 35)
+  WSAEINPROGRESS                                                = (WSABASEERR + 36)
+  WSAEALREADY                                                   = (WSABASEERR + 37)
+  WSAENOTSOCK                                                   = (WSABASEERR + 38)
+  WSAEDESTADDRREQ                                               = (WSABASEERR + 39)
+  WSAEMSGSIZE                                                   = (WSABASEERR + 40)
+  WSAEPROTOTYPE                                                 = (WSABASEERR + 41)
+  WSAENOPROTOOPT                                                = (WSABASEERR + 42)
+  WSAEPROTONOSUPPORT                                            = (WSABASEERR + 43)
+  WSAESOCKTNOSUPPORT                                            = (WSABASEERR + 44)
+  WSAEOPNOTSUPP                                                 = (WSABASEERR + 45)
+  WSAEPFNOSUPPORT                                               = (WSABASEERR + 46)
+  WSAEAFNOSUPPORT                                               = (WSABASEERR + 47)
+  WSAEADDRINUSE                                                 = (WSABASEERR + 48)
+  WSAEADDRNOTAVAIL                                              = (WSABASEERR + 49)
+  WSAENETDOWN                                                   = (WSABASEERR + 50)
+  WSAENETUNREACH                                                = (WSABASEERR + 51)
+  WSAENETRESET                                                  = (WSABASEERR + 52)
+  WSAECONNABORTED                                               = (WSABASEERR + 53)
+  WSAECONNRESET                                                 = (WSABASEERR + 54)
+  WSAENOBUFS                                                    = (WSABASEERR + 55)
+  WSAEISCONN                                                    = (WSABASEERR + 56)
+  WSAENOTCONN                                                   = (WSABASEERR + 57)
+  WSAESHUTDOWN                                                  = (WSABASEERR + 58)
+  WSAETOOMANYREFS                                               = (WSABASEERR + 59)
+  WSAETIMEDOUT                                                  = (WSABASEERR + 60)
+  WSAECONNREFUSED                                               = (WSABASEERR + 61)
+  WSAELOOP                                                      = (WSABASEERR + 62)
+  WSAENAMETOOLONG                                               = (WSABASEERR + 63)
+  WSAEHOSTDOWN                                                  = (WSABASEERR + 64)
+  WSAEHOSTUNREACH                                               = (WSABASEERR + 65)
+  WSAENOTEMPTY                                                  = (WSABASEERR + 66)
+  WSAEPROCLIM                                                   = (WSABASEERR + 67)
+  WSAEUSERS                                                     = (WSABASEERR + 68)
+  WSAEDQUOT                                                     = (WSABASEERR + 69)
+  WSAESTALE                                                     = (WSABASEERR + 70)
+  WSAEREMOTE                                                    = (WSABASEERR + 71)
+  WSASYSNOTREADY                                                = (WSABASEERR + 91)
+  WSAVERNOTSUPPORTED                                            = (WSABASEERR + 92)
+  WSANOTINITIALISED                                             = (WSABASEERR + 93)
+  WSAEDISCON                                                    = (WSABASEERR + 101)
+  WSAENOMORE                                                    = (WSABASEERR + 102)
+  WSAECANCELLED                                                 = (WSABASEERR + 103)
+  WSAEINVALIDPROCTABLE                                          = (WSABASEERR + 104)
+  WSAEINVALIDPROVIDER                                           = (WSABASEERR + 105)
+  WSAEPROVIDERFAILEDINIT                                        = (WSABASEERR + 106)
+  WSASYSCALLFAILURE                                             = (WSABASEERR + 107)
+  WSASERVICE_NOT_FOUND                                          = (WSABASEERR + 108)
+  WSATYPE_NOT_FOUND                                             = (WSABASEERR + 109)
+  WSA_E_NO_MORE                                                 = (WSABASEERR + 110)
+  WSA_E_CANCELLED                                               = (WSABASEERR + 111)
+  WSAEREFUSED                                                   = (WSABASEERR + 112)
+  WSAHOST_NOT_FOUND                                             = (WSABASEERR + 1001)
+  WSATRY_AGAIN                                                  = (WSABASEERR + 1002)
+  WSANO_RECOVERY                                                = (WSABASEERR + 1003)
+  WSANO_DATA                                                    = (WSABASEERR + 1004)
+  WSA_QOS_RECEIVERS                                             = (WSABASEERR + 1005)
+  WSA_QOS_SENDERS                                               = (WSABASEERR + 1006)
+  WSA_QOS_NO_SENDERS                                            = (WSABASEERR + 1007)
+  WSA_QOS_NO_RECEIVERS                                          = (WSABASEERR + 1008)
+  WSA_QOS_REQUEST_CONFIRMED                                     = (WSABASEERR + 1009)
+  WSA_QOS_ADMISSION_FAILURE                                     = (WSABASEERR + 1010)
+  WSA_QOS_POLICY_FAILURE                                        = (WSABASEERR + 1011)
+  WSA_QOS_BAD_STYLE                                             = (WSABASEERR + 1012)
+  WSA_QOS_BAD_OBJECT                                            = (WSABASEERR + 1013)
+  WSA_QOS_TRAFFIC_CTRL_ERROR                                    = (WSABASEERR + 1014)
+  WSA_QOS_GENERIC_ERROR                                         = (WSABASEERR + 1015)
+  WSA_QOS_ESERVICETYPE                                          = (WSABASEERR + 1016)
+  WSA_QOS_EFLOWSPEC                                             = (WSABASEERR + 1017)
+  WSA_QOS_EPROVSPECBUF                                          = (WSABASEERR + 1018)
+  WSA_QOS_EFILTERSTYLE                                          = (WSABASEERR + 1019)
+  WSA_QOS_EFILTERTYPE                                           = (WSABASEERR + 1020)
+  WSA_QOS_EFILTERCOUNT                                          = (WSABASEERR + 1021)
+  WSA_QOS_EOBJLENGTH                                            = (WSABASEERR + 1022)
+  WSA_QOS_EFLOWCOUNT                                            = (WSABASEERR + 1023)
+  WSA_QOS_EUNKNOWNPSOBJ                                         = (WSABASEERR + 1024)
+  WSA_QOS_EUNKOWNPSOBJ                                          = WSA_QOS_EUNKNOWNPSOBJ
+  WSA_QOS_EPOLICYOBJ                                            = (WSABASEERR + 1025)
+  WSA_QOS_EFLOWDESC                                             = (WSABASEERR + 1026)
+  WSA_QOS_EPSFLOWSPEC                                           = (WSABASEERR + 1027)
+  WSA_QOS_EPSFILTERSPEC                                         = (WSABASEERR + 1028)
+  WSA_QOS_ESDMODEOBJ                                            = (WSABASEERR + 1029)
+  WSA_QOS_ESHAPERATEOBJ                                         = (WSABASEERR + 1030)
+  WSA_QOS_RESERVED_PETYPE                                       = (WSABASEERR + 1031)
+  ERROR_SXS_SECTION_NOT_FOUND                                   = 14000_u32
+  ERROR_SXS_CANT_GEN_ACTCTX                                     = 14001_u32
+  ERROR_SXS_INVALID_ACTCTXDATA_FORMAT                           = 14002_u32
+  ERROR_SXS_ASSEMBLY_NOT_FOUND                                  = 14003_u32
+  ERROR_SXS_MANIFEST_FORMAT_ERROR                               = 14004_u32
+  ERROR_SXS_MANIFEST_PARSE_ERROR                                = 14005_u32
+  ERROR_SXS_ACTIVATION_CONTEXT_DISABLED                         = 14006_u32
+  ERROR_SXS_KEY_NOT_FOUND                                       = 14007_u32
+  ERROR_SXS_VERSION_CONFLICT                                    = 14008_u32
+  ERROR_SXS_WRONG_SECTION_TYPE                                  = 14009_u32
+  ERROR_SXS_THREAD_QUERIES_DISABLED                             = 14010_u32
+  ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET                         = 14011_u32
+  ERROR_SXS_UNKNOWN_ENCODING_GROUP                              = 14012_u32
+  ERROR_SXS_UNKNOWN_ENCODING                                    = 14013_u32
+  ERROR_SXS_INVALID_XML_NAMESPACE_URI                           = 14014_u32
+  ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED              = 14015_u32
+  ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED              = 14016_u32
+  ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE                 = 14017_u32
+  ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE         = 14018_u32
+  ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE         = 14019_u32
+  ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT      = 14020_u32
+  ERROR_SXS_DUPLICATE_DLL_NAME                                  = 14021_u32
+  ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME                          = 14022_u32
+  ERROR_SXS_DUPLICATE_CLSID                                     = 14023_u32
+  ERROR_SXS_DUPLICATE_IID                                       = 14024_u32
+  ERROR_SXS_DUPLICATE_TLBID                                     = 14025_u32
+  ERROR_SXS_DUPLICATE_PROGID                                    = 14026_u32
+  ERROR_SXS_DUPLICATE_ASSEMBLY_NAME                             = 14027_u32
+  ERROR_SXS_FILE_HASH_MISMATCH                                  = 14028_u32
+  ERROR_SXS_POLICY_PARSE_ERROR                                  = 14029_u32
+  ERROR_SXS_XML_E_MISSINGQUOTE                                  = 14030_u32
+  ERROR_SXS_XML_E_COMMENTSYNTAX                                 = 14031_u32
+  ERROR_SXS_XML_E_BADSTARTNAMECHAR                              = 14032_u32
+  ERROR_SXS_XML_E_BADNAMECHAR                                   = 14033_u32
+  ERROR_SXS_XML_E_BADCHARINSTRING                               = 14034_u32
+  ERROR_SXS_XML_E_XMLDECLSYNTAX                                 = 14035_u32
+  ERROR_SXS_XML_E_BADCHARDATA                                   = 14036_u32
+  ERROR_SXS_XML_E_MISSINGWHITESPACE                             = 14037_u32
+  ERROR_SXS_XML_E_EXPECTINGTAGEND                               = 14038_u32
+  ERROR_SXS_XML_E_MISSINGSEMICOLON                              = 14039_u32
+  ERROR_SXS_XML_E_UNBALANCEDPAREN                               = 14040_u32
+  ERROR_SXS_XML_E_INTERNALERROR                                 = 14041_u32
+  ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE                         = 14042_u32
+  ERROR_SXS_XML_E_INCOMPLETE_ENCODING                           = 14043_u32
+  ERROR_SXS_XML_E_MISSING_PAREN                                 = 14044_u32
+  ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE                           = 14045_u32
+  ERROR_SXS_XML_E_MULTIPLE_COLONS                               = 14046_u32
+  ERROR_SXS_XML_E_INVALID_DECIMAL                               = 14047_u32
+  ERROR_SXS_XML_E_INVALID_HEXIDECIMAL                           = 14048_u32
+  ERROR_SXS_XML_E_INVALID_UNICODE                               = 14049_u32
+  ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK                      = 14050_u32
+  ERROR_SXS_XML_E_UNEXPECTEDENDTAG                              = 14051_u32
+  ERROR_SXS_XML_E_UNCLOSEDTAG                                   = 14052_u32
+  ERROR_SXS_XML_E_DUPLICATEATTRIBUTE                            = 14053_u32
+  ERROR_SXS_XML_E_MULTIPLEROOTS                                 = 14054_u32
+  ERROR_SXS_XML_E_INVALIDATROOTLEVEL                            = 14055_u32
+  ERROR_SXS_XML_E_BADXMLDECL                                    = 14056_u32
+  ERROR_SXS_XML_E_MISSINGROOT                                   = 14057_u32
+  ERROR_SXS_XML_E_UNEXPECTEDEOF                                 = 14058_u32
+  ERROR_SXS_XML_E_BADPEREFINSUBSET                              = 14059_u32
+  ERROR_SXS_XML_E_UNCLOSEDSTARTTAG                              = 14060_u32
+  ERROR_SXS_XML_E_UNCLOSEDENDTAG                                = 14061_u32
+  ERROR_SXS_XML_E_UNCLOSEDSTRING                                = 14062_u32
+  ERROR_SXS_XML_E_UNCLOSEDCOMMENT                               = 14063_u32
+  ERROR_SXS_XML_E_UNCLOSEDDECL                                  = 14064_u32
+  ERROR_SXS_XML_E_UNCLOSEDCDATA                                 = 14065_u32
+  ERROR_SXS_XML_E_RESERVEDNAMESPACE                             = 14066_u32
+  ERROR_SXS_XML_E_INVALIDENCODING                               = 14067_u32
+  ERROR_SXS_XML_E_INVALIDSWITCH                                 = 14068_u32
+  ERROR_SXS_XML_E_BADXMLCASE                                    = 14069_u32
+  ERROR_SXS_XML_E_INVALID_STANDALONE                            = 14070_u32
+  ERROR_SXS_XML_E_UNEXPECTED_STANDALONE                         = 14071_u32
+  ERROR_SXS_XML_E_INVALID_VERSION                               = 14072_u32
+  ERROR_SXS_XML_E_MISSINGEQUALS                                 = 14073_u32
+  ERROR_SXS_PROTECTION_RECOVERY_FAILED                          = 14074_u32
+  ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT                     = 14075_u32
+  ERROR_SXS_PROTECTION_CATALOG_NOT_VALID                        = 14076_u32
+  ERROR_SXS_UNTRANSLATABLE_HRESULT                              = 14077_u32
+  ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING                     = 14078_u32
+  ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE                 = 14079_u32
+  ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME            = 14080_u32
+  ERROR_SXS_ASSEMBLY_MISSING                                    = 14081_u32
+  ERROR_SXS_CORRUPT_ACTIVATION_STACK                            = 14082_u32
+  ERROR_SXS_CORRUPTION                                          = 14083_u32
+  ERROR_SXS_EARLY_DEACTIVATION                                  = 14084_u32
+  ERROR_SXS_INVALID_DEACTIVATION                                = 14085_u32
+  ERROR_SXS_MULTIPLE_DEACTIVATION                               = 14086_u32
+  ERROR_SXS_PROCESS_TERMINATION_REQUESTED                       = 14087_u32
+  ERROR_SXS_RELEASE_ACTIVATION_CONTEXT                          = 14088_u32
+  ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY             = 14089_u32
+  ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                    = 14090_u32
+  ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                     = 14091_u32
+  ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                        = 14092_u32
+  ERROR_SXS_IDENTITY_PARSE_ERROR                                = 14093_u32
+  ERROR_MALFORMED_SUBSTITUTION_STRING                           = 14094_u32
+  ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN                          = 14095_u32
+  ERROR_UNMAPPED_SUBSTITUTION_STRING                            = 14096_u32
+  ERROR_SXS_ASSEMBLY_NOT_LOCKED                                 = 14097_u32
+  ERROR_SXS_COMPONENT_STORE_CORRUPT                             = 14098_u32
+  ERROR_ADVANCED_INSTALLER_FAILED                               = 14099_u32
+  ERROR_XML_ENCODING_MISMATCH                                   = 14100_u32
+  ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT       = 14101_u32
+  ERROR_SXS_IDENTITIES_DIFFERENT                                = 14102_u32
+  ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                        = 14103_u32
+  ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY                           = 14104_u32
+  ERROR_SXS_MANIFEST_TOO_BIG                                    = 14105_u32
+  ERROR_SXS_SETTING_NOT_REGISTERED                              = 14106_u32
+  ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE                      = 14107_u32
+  ERROR_SMI_PRIMITIVE_INSTALLER_FAILED                          = 14108_u32
+  ERROR_GENERIC_COMMAND_FAILED                                  = 14109_u32
+  ERROR_SXS_FILE_HASH_MISSING                                   = 14110_u32
+  ERROR_IPSEC_QM_POLICY_EXISTS                                  = 13000_u32
+  ERROR_IPSEC_QM_POLICY_NOT_FOUND                               = 13001_u32
+  ERROR_IPSEC_QM_POLICY_IN_USE                                  = 13002_u32
+  ERROR_IPSEC_MM_POLICY_EXISTS                                  = 13003_u32
+  ERROR_IPSEC_MM_POLICY_NOT_FOUND                               = 13004_u32
+  ERROR_IPSEC_MM_POLICY_IN_USE                                  = 13005_u32
+  ERROR_IPSEC_MM_FILTER_EXISTS                                  = 13006_u32
+  ERROR_IPSEC_MM_FILTER_NOT_FOUND                               = 13007_u32
+  ERROR_IPSEC_TRANSPORT_FILTER_EXISTS                           = 13008_u32
+  ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND                        = 13009_u32
+  ERROR_IPSEC_MM_AUTH_EXISTS                                    = 13010_u32
+  ERROR_IPSEC_MM_AUTH_NOT_FOUND                                 = 13011_u32
+  ERROR_IPSEC_MM_AUTH_IN_USE                                    = 13012_u32
+  ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND                       = 13013_u32
+  ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND                         = 13014_u32
+  ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND                       = 13015_u32
+  ERROR_IPSEC_TUNNEL_FILTER_EXISTS                              = 13016_u32
+  ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND                           = 13017_u32
+  ERROR_IPSEC_MM_FILTER_PENDING_DELETION                        = 13018_u32
+  ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION                 = 13019_u32
+  ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION                    = 13020_u32
+  ERROR_IPSEC_MM_POLICY_PENDING_DELETION                        = 13021_u32
+  ERROR_IPSEC_MM_AUTH_PENDING_DELETION                          = 13022_u32
+  ERROR_IPSEC_QM_POLICY_PENDING_DELETION                        = 13023_u32
+  WARNING_IPSEC_MM_POLICY_PRUNED                                = 13024_u32
+  WARNING_IPSEC_QM_POLICY_PRUNED                                = 13025_u32
+  ERROR_IPSEC_IKE_NEG_STATUS_BEGIN                              = 13800_u32
+  ERROR_IPSEC_IKE_AUTH_FAIL                                     = 13801_u32
+  ERROR_IPSEC_IKE_ATTRIB_FAIL                                   = 13802_u32
+  ERROR_IPSEC_IKE_NEGOTIATION_PENDING                           = 13803_u32
+  ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR                      = 13804_u32
+  ERROR_IPSEC_IKE_TIMED_OUT                                     = 13805_u32
+  ERROR_IPSEC_IKE_NO_CERT                                       = 13806_u32
+  ERROR_IPSEC_IKE_SA_DELETED                                    = 13807_u32
+  ERROR_IPSEC_IKE_SA_REAPED                                     = 13808_u32
+  ERROR_IPSEC_IKE_MM_ACQUIRE_DROP                               = 13809_u32
+  ERROR_IPSEC_IKE_QM_ACQUIRE_DROP                               = 13810_u32
+  ERROR_IPSEC_IKE_QUEUE_DROP_MM                                 = 13811_u32
+  ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM                              = 13812_u32
+  ERROR_IPSEC_IKE_DROP_NO_RESPONSE                              = 13813_u32
+  ERROR_IPSEC_IKE_MM_DELAY_DROP                                 = 13814_u32
+  ERROR_IPSEC_IKE_QM_DELAY_DROP                                 = 13815_u32
+  ERROR_IPSEC_IKE_ERROR                                         = 13816_u32
+  ERROR_IPSEC_IKE_CRL_FAILED                                    = 13817_u32
+  ERROR_IPSEC_IKE_INVALID_KEY_USAGE                             = 13818_u32
+  ERROR_IPSEC_IKE_INVALID_CERT_TYPE                             = 13819_u32
+  ERROR_IPSEC_IKE_NO_PRIVATE_KEY                                = 13820_u32
+  ERROR_IPSEC_IKE_DH_FAIL                                       = 13822_u32
+  ERROR_IPSEC_IKE_INVALID_HEADER                                = 13824_u32
+  ERROR_IPSEC_IKE_NO_POLICY                                     = 13825_u32
+  ERROR_IPSEC_IKE_INVALID_SIGNATURE                             = 13826_u32
+  ERROR_IPSEC_IKE_KERBEROS_ERROR                                = 13827_u32
+  ERROR_IPSEC_IKE_NO_PUBLIC_KEY                                 = 13828_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR                                   = 13829_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_SA                                = 13830_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_PROP                              = 13831_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_TRANS                             = 13832_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_KE                                = 13833_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_ID                                = 13834_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_CERT                              = 13835_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ                          = 13836_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_HASH                              = 13837_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_SIG                               = 13838_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_NONCE                             = 13839_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY                            = 13840_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_DELETE                            = 13841_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR                            = 13842_u32
+  ERROR_IPSEC_IKE_INVALID_PAYLOAD                               = 13843_u32
+  ERROR_IPSEC_IKE_LOAD_SOFT_SA                                  = 13844_u32
+  ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN                             = 13845_u32
+  ERROR_IPSEC_IKE_INVALID_COOKIE                                = 13846_u32
+  ERROR_IPSEC_IKE_NO_PEER_CERT                                  = 13847_u32
+  ERROR_IPSEC_IKE_PEER_CRL_FAILED                               = 13848_u32
+  ERROR_IPSEC_IKE_POLICY_CHANGE                                 = 13849_u32
+  ERROR_IPSEC_IKE_NO_MM_POLICY                                  = 13850_u32
+  ERROR_IPSEC_IKE_NOTCBPRIV                                     = 13851_u32
+  ERROR_IPSEC_IKE_SECLOADFAIL                                   = 13852_u32
+  ERROR_IPSEC_IKE_FAILSSPINIT                                   = 13853_u32
+  ERROR_IPSEC_IKE_FAILQUERYSSP                                  = 13854_u32
+  ERROR_IPSEC_IKE_SRVACQFAIL                                    = 13855_u32
+  ERROR_IPSEC_IKE_SRVQUERYCRED                                  = 13856_u32
+  ERROR_IPSEC_IKE_GETSPIFAIL                                    = 13857_u32
+  ERROR_IPSEC_IKE_INVALID_FILTER                                = 13858_u32
+  ERROR_IPSEC_IKE_OUT_OF_MEMORY                                 = 13859_u32
+  ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED                         = 13860_u32
+  ERROR_IPSEC_IKE_INVALID_POLICY                                = 13861_u32
+  ERROR_IPSEC_IKE_UNKNOWN_DOI                                   = 13862_u32
+  ERROR_IPSEC_IKE_INVALID_SITUATION                             = 13863_u32
+  ERROR_IPSEC_IKE_DH_FAILURE                                    = 13864_u32
+  ERROR_IPSEC_IKE_INVALID_GROUP                                 = 13865_u32
+  ERROR_IPSEC_IKE_ENCRYPT                                       = 13866_u32
+  ERROR_IPSEC_IKE_DECRYPT                                       = 13867_u32
+  ERROR_IPSEC_IKE_POLICY_MATCH                                  = 13868_u32
+  ERROR_IPSEC_IKE_UNSUPPORTED_ID                                = 13869_u32
+  ERROR_IPSEC_IKE_INVALID_HASH                                  = 13870_u32
+  ERROR_IPSEC_IKE_INVALID_HASH_ALG                              = 13871_u32
+  ERROR_IPSEC_IKE_INVALID_HASH_SIZE                             = 13872_u32
+  ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG                           = 13873_u32
+  ERROR_IPSEC_IKE_INVALID_AUTH_ALG                              = 13874_u32
+  ERROR_IPSEC_IKE_INVALID_SIG                                   = 13875_u32
+  ERROR_IPSEC_IKE_LOAD_FAILED                                   = 13876_u32
+  ERROR_IPSEC_IKE_RPC_DELETE                                    = 13877_u32
+  ERROR_IPSEC_IKE_BENIGN_REINIT                                 = 13878_u32
+  ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY             = 13879_u32
+  ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN                           = 13881_u32
+  ERROR_IPSEC_IKE_MM_LIMIT                                      = 13882_u32
+  ERROR_IPSEC_IKE_NEGOTIATION_DISABLED                          = 13883_u32
+  ERROR_IPSEC_IKE_QM_LIMIT                                      = 13884_u32
+  ERROR_IPSEC_IKE_MM_EXPIRED                                    = 13885_u32
+  ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID                       = 13886_u32
+  ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH                    = 13887_u32
+  ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID                         = 13888_u32
+  ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD                          = 13889_u32
+  ERROR_IPSEC_IKE_DOS_COOKIE_SENT                               = 13890_u32
+  ERROR_IPSEC_IKE_SHUTTING_DOWN                                 = 13891_u32
+  ERROR_IPSEC_IKE_CGA_AUTH_FAILED                               = 13892_u32
+  ERROR_IPSEC_IKE_PROCESS_ERR_NATOA                             = 13893_u32
+  ERROR_IPSEC_IKE_INVALID_MM_FOR_QM                             = 13894_u32
+  ERROR_IPSEC_IKE_QM_EXPIRED                                    = 13895_u32
+  ERROR_IPSEC_IKE_TOO_MANY_FILTERS                              = 13896_u32
+  ERROR_IPSEC_IKE_NEG_STATUS_END                                = 13897_u32
+  ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL                         = 13898_u32
+  ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE                   = 13899_u32
+  ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING                    = 13900_u32
+  ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING      = 13901_u32
+  ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS                          = 13902_u32
+  ERROR_IPSEC_IKE_RATELIMIT_DROP                                = 13903_u32
+  ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE                    = 13904_u32
+  ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE                         = 13905_u32
+  ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE             = 13906_u32
+  ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY     = 13907_u32
+  ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE = 13908_u32
+  ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END                       = 13909_u32
+  ERROR_IPSEC_BAD_SPI                                           = 13910_u32
+  ERROR_IPSEC_SA_LIFETIME_EXPIRED                               = 13911_u32
+  ERROR_IPSEC_WRONG_SA                                          = 13912_u32
+  ERROR_IPSEC_REPLAY_CHECK_FAILED                               = 13913_u32
+  ERROR_IPSEC_INVALID_PACKET                                    = 13914_u32
+  ERROR_IPSEC_INTEGRITY_CHECK_FAILED                            = 13915_u32
+  ERROR_IPSEC_CLEAR_TEXT_DROP                                   = 13916_u32
+  ERROR_IPSEC_AUTH_FIREWALL_DROP                                = 13917_u32
+  ERROR_IPSEC_THROTTLE_DROP                                     = 13918_u32
+  ERROR_IPSEC_DOSP_BLOCK                                        = 13925_u32
+  ERROR_IPSEC_DOSP_RECEIVED_MULTICAST                           = 13926_u32
+  ERROR_IPSEC_DOSP_INVALID_PACKET                               = 13927_u32
+  ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED                          = 13928_u32
+  ERROR_IPSEC_DOSP_MAX_ENTRIES                                  = 13929_u32
+  ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                           = 13930_u32
+  ERROR_IPSEC_DOSP_NOT_INSTALLED                                = 13931_u32
+  ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                  = 13932_u32
+  ERROR_EVT_INVALID_CHANNEL_PATH                                = 15000_u32
+  ERROR_EVT_INVALID_QUERY                                       = 15001_u32
+  ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND                        = 15002_u32
+  ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND                            = 15003_u32
+  ERROR_EVT_INVALID_PUBLISHER_NAME                              = 15004_u32
+  ERROR_EVT_INVALID_EVENT_DATA                                  = 15005_u32
+  ERROR_EVT_CHANNEL_NOT_FOUND                                   = 15007_u32
+  ERROR_EVT_MALFORMED_XML_TEXT                                  = 15008_u32
+  ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL                      = 15009_u32
+  ERROR_EVT_CONFIGURATION_ERROR                                 = 15010_u32
+  ERROR_EVT_QUERY_RESULT_STALE                                  = 15011_u32
+  ERROR_EVT_QUERY_RESULT_INVALID_POSITION                       = 15012_u32
+  ERROR_EVT_NON_VALIDATING_MSXML                                = 15013_u32
+  ERROR_EVT_FILTER_ALREADYSCOPED                                = 15014_u32
+  ERROR_EVT_FILTER_NOTELTSET                                    = 15015_u32
+  ERROR_EVT_FILTER_INVARG                                       = 15016_u32
+  ERROR_EVT_FILTER_INVTEST                                      = 15017_u32
+  ERROR_EVT_FILTER_INVTYPE                                      = 15018_u32
+  ERROR_EVT_FILTER_PARSEERR                                     = 15019_u32
+  ERROR_EVT_FILTER_UNSUPPORTEDOP                                = 15020_u32
+  ERROR_EVT_FILTER_UNEXPECTEDTOKEN                              = 15021_u32
+  ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL       = 15022_u32
+  ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE                      = 15023_u32
+  ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE                    = 15024_u32
+  ERROR_EVT_CHANNEL_CANNOT_ACTIVATE                             = 15025_u32
+  ERROR_EVT_FILTER_TOO_COMPLEX                                  = 15026_u32
+  ERROR_EVT_MESSAGE_NOT_FOUND                                   = 15027_u32
+  ERROR_EVT_MESSAGE_ID_NOT_FOUND                                = 15028_u32
+  ERROR_EVT_UNRESOLVED_VALUE_INSERT                             = 15029_u32
+  ERROR_EVT_UNRESOLVED_PARAMETER_INSERT                         = 15030_u32
+  ERROR_EVT_MAX_INSERTS_REACHED                                 = 15031_u32
+  ERROR_EVT_EVENT_DEFINITION_NOT_FOUND                          = 15032_u32
+  ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND                            = 15033_u32
+  ERROR_EVT_VERSION_TOO_OLD                                     = 15034_u32
+  ERROR_EVT_VERSION_TOO_NEW                                     = 15035_u32
+  ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY                        = 15036_u32
+  ERROR_EVT_PUBLISHER_DISABLED                                  = 15037_u32
+  ERROR_EVT_FILTER_OUT_OF_RANGE                                 = 15038_u32
+  ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE                         = 15080_u32
+  ERROR_EC_LOG_DISABLED                                         = 15081_u32
+  ERROR_EC_CIRCULAR_FORWARDING                                  = 15082_u32
+  ERROR_EC_CREDSTORE_FULL                                       = 15083_u32
+  ERROR_EC_CRED_NOT_FOUND                                       = 15084_u32
+  ERROR_EC_NO_ACTIVE_CHANNEL                                    = 15085_u32
+  ERROR_MUI_FILE_NOT_FOUND                                      = 15100_u32
+  ERROR_MUI_INVALID_FILE                                        = 15101_u32
+  ERROR_MUI_INVALID_RC_CONFIG                                   = 15102_u32
+  ERROR_MUI_INVALID_LOCALE_NAME                                 = 15103_u32
+  ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME                       = 15104_u32
+  ERROR_MUI_FILE_NOT_LOADED                                     = 15105_u32
+  ERROR_RESOURCE_ENUM_USER_STOP                                 = 15106_u32
+  ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED                   = 15107_u32
+  ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME                    = 15108_u32
+  ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE              = 15110_u32
+  ERROR_MRM_INVALID_PRICONFIG                                   = 15111_u32
+  ERROR_MRM_INVALID_FILE_TYPE                                   = 15112_u32
+  ERROR_MRM_UNKNOWN_QUALIFIER                                   = 15113_u32
+  ERROR_MRM_INVALID_QUALIFIER_VALUE                             = 15114_u32
+  ERROR_MRM_NO_CANDIDATE                                        = 15115_u32
+  ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE                       = 15116_u32
+  ERROR_MRM_RESOURCE_TYPE_MISMATCH                              = 15117_u32
+  ERROR_MRM_DUPLICATE_MAP_NAME                                  = 15118_u32
+  ERROR_MRM_DUPLICATE_ENTRY                                     = 15119_u32
+  ERROR_MRM_INVALID_RESOURCE_IDENTIFIER                         = 15120_u32
+  ERROR_MRM_FILEPATH_TOO_LONG                                   = 15121_u32
+  ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE                          = 15122_u32
+  ERROR_MRM_INVALID_PRI_FILE                                    = 15126_u32
+  ERROR_MRM_NAMED_RESOURCE_NOT_FOUND                            = 15127_u32
+  ERROR_MRM_MAP_NOT_FOUND                                       = 15135_u32
+  ERROR_MRM_UNSUPPORTED_PROFILE_TYPE                            = 15136_u32
+  ERROR_MRM_INVALID_QUALIFIER_OPERATOR                          = 15137_u32
+  ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE                       = 15138_u32
+  ERROR_MRM_AUTOMERGE_ENABLED                                   = 15139_u32
+  ERROR_MRM_TOO_MANY_RESOURCES                                  = 15140_u32
+  ERROR_MCA_INVALID_CAPABILITIES_STRING                         = 15200_u32
+  ERROR_MCA_INVALID_VCP_VERSION                                 = 15201_u32
+  ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                 = 15202_u32
+  ERROR_MCA_MCCS_VERSION_MISMATCH                               = 15203_u32
+  ERROR_MCA_UNSUPPORTED_MCCS_VERSION                            = 15204_u32
+  ERROR_MCA_INTERNAL_ERROR                                      = 15205_u32
+  ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                    = 15206_u32
+  ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE                       = 15207_u32
+  ERROR_AMBIGUOUS_SYSTEM_DEVICE                                 = 15250_u32
+  ERROR_SYSTEM_DEVICE_NOT_FOUND                                 = 15299_u32
+  ERROR_HASH_NOT_SUPPORTED                                      = 15300_u32
+  ERROR_HASH_NOT_PRESENT                                        = 15301_u32
+  ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED                    = 15321_u32
+  ERROR_GPIO_CLIENT_INFORMATION_INVALID                         = 15322_u32
+  ERROR_GPIO_VERSION_NOT_SUPPORTED                              = 15323_u32
+  ERROR_GPIO_INVALID_REGISTRATION_PACKET                        = 15324_u32
+  ERROR_GPIO_OPERATION_DENIED                                   = 15325_u32
+  ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE                          = 15326_u32
+  ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED                         = 15327_u32
+  ERROR_CANNOT_SWITCH_RUNLEVEL                                  = 15400_u32
+  ERROR_INVALID_RUNLEVEL_SETTING                                = 15401_u32
+  ERROR_RUNLEVEL_SWITCH_TIMEOUT                                 = 15402_u32
+  ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT                           = 15403_u32
+  ERROR_RUNLEVEL_SWITCH_IN_PROGRESS                             = 15404_u32
+  ERROR_SERVICES_FAILED_AUTOSTART                               = 15405_u32
+  ERROR_COM_TASK_STOP_PENDING                                   = 15501_u32
+  ERROR_INSTALL_OPEN_PACKAGE_FAILED                             = 15600_u32
+  ERROR_INSTALL_PACKAGE_NOT_FOUND                               = 15601_u32
+  ERROR_INSTALL_INVALID_PACKAGE                                 = 15602_u32
+  ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED                       = 15603_u32
+  ERROR_INSTALL_OUT_OF_DISK_SPACE                               = 15604_u32
+  ERROR_INSTALL_NETWORK_FAILURE                                 = 15605_u32
+  ERROR_INSTALL_REGISTRATION_FAILURE                            = 15606_u32
+  ERROR_INSTALL_DEREGISTRATION_FAILURE                          = 15607_u32
+  ERROR_INSTALL_CANCEL                                          = 15608_u32
+  ERROR_INSTALL_FAILED                                          = 15609_u32
+  ERROR_REMOVE_FAILED                                           = 15610_u32
+  ERROR_PACKAGE_ALREADY_EXISTS                                  = 15611_u32
+  ERROR_NEEDS_REMEDIATION                                       = 15612_u32
+  ERROR_INSTALL_PREREQUISITE_FAILED                             = 15613_u32
+  ERROR_PACKAGE_REPOSITORY_CORRUPTED                            = 15614_u32
+  ERROR_INSTALL_POLICY_FAILURE                                  = 15615_u32
+  ERROR_PACKAGE_UPDATING                                        = 15616_u32
+  ERROR_DEPLOYMENT_BLOCKED_BY_POLICY                            = 15617_u32
+  ERROR_PACKAGES_IN_USE                                         = 15618_u32
+  ERROR_RECOVERY_FILE_CORRUPT                                   = 15619_u32
+  ERROR_INVALID_STAGED_SIGNATURE                                = 15620_u32
+  ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED          = 15621_u32
+  ERROR_INSTALL_PACKAGE_DOWNGRADE                               = 15622_u32
+  ERROR_SYSTEM_NEEDS_REMEDIATION                                = 15623_u32
+  ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN                         = 15624_u32
+  ERROR_RESILIENCY_FILE_CORRUPT                                 = 15625_u32
+  ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING                    = 15626_u32
+  APPMODEL_ERROR_NO_PACKAGE                                     = 15700_u32
+  APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT                        = 15701_u32
+  APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT                       = 15702_u32
+  APPMODEL_ERROR_NO_APPLICATION                                 = 15703_u32
+  ERROR_STATE_LOAD_STORE_FAILED                                 = 15800_u32
+  ERROR_STATE_GET_VERSION_FAILED                                = 15801_u32
+  ERROR_STATE_SET_VERSION_FAILED                                = 15802_u32
+  ERROR_STATE_STRUCTURED_RESET_FAILED                           = 15803_u32
+  ERROR_STATE_OPEN_CONTAINER_FAILED                             = 15804_u32
+  ERROR_STATE_CREATE_CONTAINER_FAILED                           = 15805_u32
+  ERROR_STATE_DELETE_CONTAINER_FAILED                           = 15806_u32
+  ERROR_STATE_READ_SETTING_FAILED                               = 15807_u32
+  ERROR_STATE_WRITE_SETTING_FAILED                              = 15808_u32
+  ERROR_STATE_DELETE_SETTING_FAILED                             = 15809_u32
+  ERROR_STATE_QUERY_SETTING_FAILED                              = 15810_u32
+  ERROR_STATE_READ_COMPOSITE_SETTING_FAILED                     = 15811_u32
+  ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED                    = 15812_u32
+  ERROR_STATE_ENUMERATE_CONTAINER_FAILED                        = 15813_u32
+  ERROR_STATE_ENUMERATE_SETTINGS_FAILED                         = 15814_u32
+  ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED       = 15815_u32
+  ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                 = 15816_u32
+  ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED                  = 15817_u32
+  ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED                = 15818_u32
+  ERROR_API_UNAVAILABLE                                         = 15841_u32
+end

From 6467eceda13b17c6ef683e701f0efe17586e9195 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Tue, 15 Aug 2017 20:28:29 +0300
Subject: [PATCH 02/14] run file through format tool

---
 src/lib_windows.cr | 79 +++++++++++++++++++++++-----------------------
 1 file changed, 39 insertions(+), 40 deletions(-)

diff --git a/src/lib_windows.cr b/src/lib_windows.cr
index 536ba20c4796..3b52a99fb5de 100644
--- a/src/lib_windows.cr
+++ b/src/lib_windows.cr
@@ -56,9 +56,9 @@ lib LibWindows
   fun write_file = WriteFile(file : Handle, buffer : UInt8*, size : DWord, written : DWord*, overlapped : Overlapped*) : Bool
   fun close_handle = CloseHandle(file : Handle) : Bool
 
-  fun get_current_directory = GetCurrentDirectoryA(size : DWord,  buffer : UInt8*) : DWord
+  fun get_current_directory = GetCurrentDirectoryA(size : DWord, buffer : UInt8*) : DWord
   fun set_current_directory = SetCurrentDirectoryA(path : UInt8*) : BOOL
-  fun create_directory = CreateDirectoryA(path : UInt8*, security_attribute : Void*): BOOL
+  fun create_directory = CreateDirectoryA(path : UInt8*, security_attribute : Void*) : BOOL
   fun remove_directory = RemoveDirectoryA(path : UInt8*) : BOOL
   fun get_temp_path = GetTempPathA(len : DWord, buffer : UInt8*) : DWord
 
@@ -68,40 +68,40 @@ lib LibWindows
     dwLowDateTime : DWord
     dwHighDateTime : DWord
   end
-  
+
   struct WIN32_FIND_DATA_A
-    dwFileAttributes: DWord
-    ftCreationTime: FILETIME
-    ftLastAccessTime: FILETIME
-    ftLastWriteTime: FILETIME
-    nFileSizeHigh: DWord
-    nFileSizeLow: DWord
-    dwReserved0: DWord
-    dwReserved1: DWord
-    cFileName: StaticArray(UInt8, MAX_PATH)
-    cAlternateFileName: StaticArray(UInt8, 14)
+    dwFileAttributes : DWord
+    ftCreationTime : FILETIME
+    ftLastAccessTime : FILETIME
+    ftLastWriteTime : FILETIME
+    nFileSizeHigh : DWord
+    nFileSizeLow : DWord
+    dwReserved0 : DWord
+    dwReserved1 : DWord
+    cFileName : StaticArray(UInt8, MAX_PATH)
+    cAlternateFileName : StaticArray(UInt8, 14)
   end
 
-  FILE_ATTRIBUTE_ARCHIVE        = 32_i32
-  FILE_ATTRIBUTE_COMPRESSED     = 2048_i32
-  FILE_ATTRIBUTE_NORMAL         = 128_i32
-  FILE_ATTRIBUTE_DIRECTORY      = 16_i32
-  FILE_ATTRIBUTE_HIDDEN         = 2_i32
-  FILE_ATTRIBUTE_READONLY       = 1_i32
-  FILE_ATTRIBUTE_REPARSE_POINT  = 1024_i32
-  FILE_ATTRIBUTE_SYSTEM         = 4_i32
-  FILE_ATTRIBUTE_TEMPORARY      = 256_i32
-  INVALID_FILE_ATTRIBUTES       = -1_i32
-  
-  FILE_BEGIN                    = 0_i32
-  FILE_CURRENT                  = 1_i32
-  FILE_END                      = 2_i32
-  INVALID_SET_FILE_POINTER      = (-1).to_u32
-
-  fun find_first_file = FindFirstFileA(fileName: UInt8*, filedata: WIN32_FIND_DATA_A*) : Handle
-  fun find_next_file = FindNextFileA(file: Handle, filedata: WIN32_FIND_DATA_A*) : BOOL
-  fun find_close = FindClose(file: Handle) : BOOL
-  fun get_file_attributes = GetFileAttributesA(filename : UInt8*) : DWord;
+  FILE_ATTRIBUTE_ARCHIVE       =   32_i32
+  FILE_ATTRIBUTE_COMPRESSED    = 2048_i32
+  FILE_ATTRIBUTE_NORMAL        =  128_i32
+  FILE_ATTRIBUTE_DIRECTORY     =   16_i32
+  FILE_ATTRIBUTE_HIDDEN        =    2_i32
+  FILE_ATTRIBUTE_READONLY      =    1_i32
+  FILE_ATTRIBUTE_REPARSE_POINT = 1024_i32
+  FILE_ATTRIBUTE_SYSTEM        =    4_i32
+  FILE_ATTRIBUTE_TEMPORARY     =  256_i32
+  INVALID_FILE_ATTRIBUTES      =   -1_i32
+
+  FILE_BEGIN               = 0_i32
+  FILE_CURRENT             = 1_i32
+  FILE_END                 = 2_i32
+  INVALID_SET_FILE_POINTER = (-1).to_u32
+
+  fun find_first_file = FindFirstFileA(fileName : UInt8*, filedata : WIN32_FIND_DATA_A*) : Handle
+  fun find_next_file = FindNextFileA(file : Handle, filedata : WIN32_FIND_DATA_A*) : BOOL
+  fun find_close = FindClose(file : Handle) : BOOL
+  fun get_file_attributes = GetFileAttributesA(filename : UInt8*) : DWord
   fun get_file_size = GetFileSize(file : Handle, fileSizeHigh : DWord*) : DWord
   fun get_file_size_ex = GetFileSizeEx(file : Handle, size : UInt64*) : BOOL
   fun get_file_time = GetFileTime(file : Handle, lpCreationTime : FILETIME*, lpLastAccessTime : FILETIME*, lpLastWriteTime : FILETIME*) : BOOL
@@ -138,7 +138,7 @@ lib LibWindows
 
   # CreateProcessA.dwCreationFlags
   NORMAL_PRIORITY_CLASS = 0x00000020_u32
-  CREATE_NO_WINDOW = 0x08000000_u32
+  CREATE_NO_WINDOW      = 0x08000000_u32
 
   struct StartupInfoA
     cb : DWord
@@ -155,7 +155,7 @@ lib LibWindows
     dwFlags : DWord
     wShowWindow : Word
     cbReserved2 : Word
-    lpReserved2: UInt8*
+    lpReserved2 : UInt8*
     hStdInput : Handle
     hStdOutput : Handle
     hStdError : Handle
@@ -167,14 +167,14 @@ lib LibWindows
     dwProcessId : DWord
     dwThreadId : DWord
   end
-  
-  fun create_process = CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*, 
+
+  fun create_process = CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*,
                                       lpProcessAttributes : SecurityAttributes*, lpThreadAttributes : SecurityAttributes*, bInheritHandles : BOOL,
-                                      dwCreationFlags : DWord, lpEnvironment : Void*, lpCurrentDirectory : UInt8*, 
+                                      dwCreationFlags : DWord, lpEnvironment : Void*, lpCurrentDirectory : UInt8*,
                                       lpStartupInfo : StartupInfoA*, lpProcessInformation : Process_Information*) : BOOL
   fun kill_process = KillProcess(hProcess : Handle, uExitCode : UInt32) : BOOL
   fun get_exit_code_process = GetExitCodeProcess(hProcess : Handle, lpExitCode : DWord*) : BOOL
-  
+
   FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100_u32
   FORMAT_MESSAGE_IGNORE_INSERTS  = 0x00000200_u32
   FORMAT_MESSAGE_FROM_STRING     = 0x00000400_u32
@@ -234,7 +234,6 @@ lib LibWindows
   fun get_time_zone_information = GetTimeZoneInformation(tz_info : TimeZoneInformation*) : DWord
   fun get_system_time_as_file_time = GetSystemTimeAsFileTime(time : FileTime*)
 
-
   fun get_computer_name = GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
 
   fun cxx_throw_exception = _CxxThrowException(exception_object : Void*, throw_info : Void*) : NoReturn

From b380d2d3afd1630b5f69774c2585cf564440cfc5 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Wed, 16 Aug 2017 17:48:52 +0300
Subject: [PATCH 03/14] put winapi bindings under src/lib_c/x86_64-windows-gnu

---
 .../x86_64-windows-gnu/c/winapi.cr}                  | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)
 rename src/{lib_windows.cr => lib_c/x86_64-windows-gnu/c/winapi.cr} (97%)

diff --git a/src/lib_windows.cr b/src/lib_c/x86_64-windows-gnu/c/winapi.cr
similarity index 97%
rename from src/lib_windows.cr
rename to src/lib_c/x86_64-windows-gnu/c/winapi.cr
index 3b52a99fb5de..20b1ea950942 100644
--- a/src/lib_windows.cr
+++ b/src/lib_c/x86_64-windows-gnu/c/winapi.cr
@@ -1,5 +1,4 @@
-@[CallConvention("X86_StdCall")]
-lib LibWindows
+lib LibC
   STD_INPUT_HANDLE  = 0xFFFFFFF6_u32
   STD_OUTPUT_HANDLE = 0xFFFFFFF5_u32
   STD_ERROR_HANDLE  = 0xFFFFFFF4_u32
@@ -243,11 +242,4 @@ module WindowsExt
   @[Primitive(:throw_info)]
   def self.throw_info : Void*
   end
-end
-
-require "winerror.cr"
-
-data = uninitialized LibWindows::WSAData
-if LibWindows.wsa_startup(0x0202, pointerof(data)) != 0
-  raise WinError.new "WSAStartup"
-end
+end
\ No newline at end of file

From 9ab0fe2cef7b6244c279ef166a30c164e2d53806 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Wed, 16 Aug 2017 17:50:24 +0300
Subject: [PATCH 04/14] WinError is subclass Errno

---
 src/winerror.cr | 91 +++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 84 insertions(+), 7 deletions(-)

diff --git a/src/winerror.cr b/src/winerror.cr
index d70cab0c26b6..e5d24002e837 100644
--- a/src/winerror.cr
+++ b/src/winerror.cr
@@ -1,17 +1,94 @@
-class WinError < Exception
-  property code : UInt32
-
+class WinError < Errno
   # NOTE: `get_last_error` must be called BEFORE an instance of this class
   # is malloced as it would change the "last error" to SUCCESS
   def self.new(message)
-    new(message, LibWindows.get_last_error)
+    new(message, LibC.get_last_error)
   end
 
-  def initialize(message, @code)
+  def initialize(message, code)
     buffer = uninitialized UInt8[256]
-    size = LibWindows.format_message(LibWindows::FORMAT_MESSAGE_FROM_SYSTEM, nil, @code, 0, buffer, buffer.size, nil)
+    size = LibC.format_message(LibC::FORMAT_MESSAGE_FROM_SYSTEM, nil, code, 0, buffer, buffer.size, nil)
     details = String.new(buffer.to_unsafe, size).strip
-    super "#{message}: #{details}"
+    super "#{message}: [WinError #{code}, #{details}]", winerror_to_errno(code)
+  end
+
+  def winerror_to_errno(winerror)
+    case winerror
+    when    2; return 2
+    when    3; return 2
+    when    4; return 24
+    when    5; return 13
+    when    6; return 9
+    when    7; return 12
+    when    8; return 12
+    when    9; return 12
+    when   10; return 7
+    when   11; return 8
+    when   15; return 2
+    when   16; return 13
+    when   17; return 18
+    when   18; return 2
+    when   19; return 13
+    when   20; return 13
+    when   21; return 13
+    when   22; return 13
+    when   23; return 13
+    when   24; return 13
+    when   25; return 13
+    when   26; return 13
+    when   27; return 13
+    when   28; return 13
+    when   29; return 13
+    when   30; return 13
+    when   31; return 13
+    when   32; return 13
+    when   33; return 13
+    when   34; return 13
+    when   35; return 13
+    when   36; return 13
+    when   53; return 2
+    when   65; return 13
+    when   67; return 2
+    when   80; return 17
+    when   82; return 13
+    when   83; return 13
+    when   89; return 11
+    when  108; return 13
+    when  109; return 32
+    when  112; return 28
+    when  114; return 9
+    when  128; return 10
+    when  129; return 10
+    when  130; return 9
+    when  132; return 13
+    when  145; return 41
+    when  158; return 13
+    when  161; return 2
+    when  164; return 11
+    when  167; return 13
+    when  183; return 17
+    when  188; return 8
+    when  189; return 8
+    when  190; return 8
+    when  191; return 8
+    when  192; return 8
+    when  193; return 8
+    when  194; return 8
+    when  195; return 8
+    when  196; return 8
+    when  197; return 8
+    when  198; return 8
+    when  199; return 8
+    when  200; return 8
+    when  201; return 8
+    when  202; return 8
+    when  206; return 2
+    when  215; return 11
+    when  232; return 32
+    when  267; return 20
+    when 1816; return 12
+    else       return Errno::EINVAL
+    end
   end
 
   ERROR_SUCCESS                                                 =          0_u32

From 47669e3829adff8a7f1914d43b00ccecca39f25d Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Wed, 16 Aug 2017 17:55:45 +0300
Subject: [PATCH 05/14] run file through format tool

---
 src/lib_c/x86_64-windows-gnu/c/winapi.cr | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib_c/x86_64-windows-gnu/c/winapi.cr b/src/lib_c/x86_64-windows-gnu/c/winapi.cr
index 20b1ea950942..f42910530f81 100644
--- a/src/lib_c/x86_64-windows-gnu/c/winapi.cr
+++ b/src/lib_c/x86_64-windows-gnu/c/winapi.cr
@@ -242,4 +242,4 @@ module WindowsExt
   @[Primitive(:throw_info)]
   def self.throw_info : Void*
   end
-end
\ No newline at end of file
+end

From 27b96faa99737dadeb6334bb7c773d9d2a9b48fe Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Thu, 17 Aug 2017 19:27:14 +0300
Subject: [PATCH 06/14] x86_64-windows-gnu was renamed x86_64-windows-msvc

---
 src/lib_c/{x86_64-windows-gnu => x86_64-windows-msvc}/c/winapi.cr | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename src/lib_c/{x86_64-windows-gnu => x86_64-windows-msvc}/c/winapi.cr (100%)

diff --git a/src/lib_c/x86_64-windows-gnu/c/winapi.cr b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
similarity index 100%
rename from src/lib_c/x86_64-windows-gnu/c/winapi.cr
rename to src/lib_c/x86_64-windows-msvc/c/winapi.cr

From 51ef5c668a51b690fc80276d733a6eb6f7eb7545 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Thu, 17 Aug 2017 19:28:18 +0300
Subject: [PATCH 07/14] injected 'win32' flag

---
 src/compiler/crystal/semantic/flags.cr | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/compiler/crystal/semantic/flags.cr b/src/compiler/crystal/semantic/flags.cr
index a2d0fa2a71cd..c0f48810ed07 100644
--- a/src/compiler/crystal/semantic/flags.cr
+++ b/src/compiler/crystal/semantic/flags.cr
@@ -27,6 +27,7 @@ class Crystal::Program
     set.add "freebsd" if set.any?(&.starts_with?("freebsd"))
     set.add "openbsd" if set.any?(&.starts_with?("openbsd"))
     set.add "unix" if set.any? { |flag| %w(cygnus darwin freebsd linux openbsd).includes?(flag) }
+    set.add "win32" if set.any?(&.starts_with?("windows")) && set.any? { |flag| %w(gnu msvc).includes?(flag) }
 
     set.add "x86_64" if set.any?(&.starts_with?("amd64"))
     set.add "i686" if set.any? { |flag| %w(i586 i486 i386).includes?(flag) }

From 8501cdc15a9e7806666770b755ed0674225dad77 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Fri, 18 Aug 2017 14:25:40 +0300
Subject: [PATCH 08/14] replace magic numbers with their respective constants

---
 src/lib_c/x86_64-windows-msvc/c/errno.cr |  42 +++++++
 src/winerror.cr                          | 149 ++++++++++++-----------
 2 files changed, 117 insertions(+), 74 deletions(-)
 create mode 100644 src/lib_c/x86_64-windows-msvc/c/errno.cr

diff --git a/src/lib_c/x86_64-windows-msvc/c/errno.cr b/src/lib_c/x86_64-windows-msvc/c/errno.cr
new file mode 100644
index 000000000000..6f1ad5310885
--- /dev/null
+++ b/src/lib_c/x86_64-windows-msvc/c/errno.cr
@@ -0,0 +1,42 @@
+lib LibC
+  # source https://docs.microsoft.com/en-us/cpp/c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr
+  EPERM        =  1
+  ENOENT       =  2
+  ESRCH        =  3
+  EINTR        =  4
+  EIO          =  5
+  ENXIO        =  6
+  E2BIG        =  7
+  ENOEXEC      =  8
+  EBADF        =  9
+  ECHILD       = 10
+  EAGAIN       = 11
+  ENOMEM       = 12
+  EACCES       = 13
+  EFAULT       = 14
+  EBUSY        = 16
+  EEXIST       = 17
+  EXDEV        = 18
+  ENODEV       = 19
+  ENOTDIR      = 20
+  EISDIR       = 21
+  EINVAL       = 22
+  ENFILE       = 23
+  EMFILE       = 24
+  ENOTTY       = 25
+  EFBIG        = 27
+  ENOSPC       = 28
+  ESPIPE       = 29
+  EROFS        = 30
+  EMLINK       = 31
+  EPIPE        = 32
+  EDOM         = 33
+  ERANGE       = 34
+  EDEADLK      = 36
+  ENAMETOOLONG = 38
+  ENOLCK       = 39
+  ENOSYS       = 40
+  ENOTEMPTY    = 41
+  EILSEQ       = 42
+  STRUNCATE    = 80
+end
diff --git a/src/winerror.cr b/src/winerror.cr
index e5d24002e837..3fb0bacbca02 100644
--- a/src/winerror.cr
+++ b/src/winerror.cr
@@ -12,82 +12,83 @@ class WinError < Errno
     super "#{message}: [WinError #{code}, #{details}]", winerror_to_errno(code)
   end
 
+  # https://github.com/python/cpython/blob/master/PC/generrmap.c
+  # https://github.com/python/cpython/blob/master/PC/errmap.h
   def winerror_to_errno(winerror)
     case winerror
-    when    2; return 2
-    when    3; return 2
-    when    4; return 24
-    when    5; return 13
-    when    6; return 9
-    when    7; return 12
-    when    8; return 12
-    when    9; return 12
-    when   10; return 7
-    when   11; return 8
-    when   15; return 2
-    when   16; return 13
-    when   17; return 18
-    when   18; return 2
-    when   19; return 13
-    when   20; return 13
-    when   21; return 13
-    when   22; return 13
-    when   23; return 13
-    when   24; return 13
-    when   25; return 13
-    when   26; return 13
-    when   27; return 13
-    when   28; return 13
-    when   29; return 13
-    when   30; return 13
-    when   31; return 13
-    when   32; return 13
-    when   33; return 13
-    when   34; return 13
-    when   35; return 13
-    when   36; return 13
-    when   53; return 2
-    when   65; return 13
-    when   67; return 2
-    when   80; return 17
-    when   82; return 13
-    when   83; return 13
-    when   89; return 11
-    when  108; return 13
-    when  109; return 32
-    when  112; return 28
-    when  114; return 9
-    when  128; return 10
-    when  129; return 10
-    when  130; return 9
-    when  132; return 13
-    when  145; return 41
-    when  158; return 13
-    when  161; return 2
-    when  164; return 11
-    when  167; return 13
-    when  183; return 17
-    when  188; return 8
-    when  189; return 8
-    when  190; return 8
-    when  191; return 8
-    when  192; return 8
-    when  193; return 8
-    when  194; return 8
-    when  195; return 8
-    when  196; return 8
-    when  197; return 8
-    when  198; return 8
-    when  199; return 8
-    when  200; return 8
-    when  201; return 8
-    when  202; return 8
-    when  206; return 2
-    when  215; return 11
-    when  232; return 32
-    when  267; return 20
-    when 1816; return 12
-    else       return Errno::EINVAL
+    when ERROR_FILE_NOT_FOUND           ; return Errno::ENOENT
+    when ERROR_PATH_NOT_FOUND           ; return Errno::ENOENT
+    when ERROR_TOO_MANY_OPEN_FILES      ; return Errno::EMFILE
+    when ERROR_ACCESS_DENIED            ; return Errno::EACCES
+    when ERROR_INVALID_HANDLE           ; return Errno::EBADF
+    when ERROR_ARENA_TRASHED            ; return Errno::ENOMEM
+    when ERROR_NOT_ENOUGH_MEMORY        ; return Errno::ENOMEM
+    when ERROR_INVALID_BLOCK            ; return Errno::ENOMEM
+    when ERROR_BAD_ENVIRONMENT          ; return Errno::E2BIG
+    when ERROR_BAD_FORMAT               ; return Errno::ENOEXEC
+    when ERROR_INVALID_DRIVE            ; return Errno::ENOENT
+    when ERROR_CURRENT_DIRECTORY        ; return Errno::EACCES
+    when ERROR_NOT_SAME_DEVICE          ; return Errno::EXDEV
+    when ERROR_NO_MORE_FILES            ; return Errno::ENOENT
+    when ERROR_WRITE_PROTECT            ; return Errno::EACCES
+    when ERROR_BAD_UNIT                 ; return Errno::EACCES
+    when ERROR_NOT_READY                ; return Errno::EACCES
+    when ERROR_BAD_COMMAND              ; return Errno::EACCES
+    when ERROR_CRC                      ; return Errno::EACCES
+    when ERROR_BAD_LENGTH               ; return Errno::EACCES
+    when ERROR_SEEK                     ; return Errno::EACCES
+    when ERROR_NOT_DOS_DISK             ; return Errno::EACCES
+    when ERROR_SECTOR_NOT_FOUND         ; return Errno::EACCES
+    when ERROR_OUT_OF_PAPER             ; return Errno::EACCES
+    when ERROR_WRITE_FAULT              ; return Errno::EACCES
+    when ERROR_READ_FAULT               ; return Errno::EACCES
+    when ERROR_GEN_FAILURE              ; return Errno::EACCES
+    when ERROR_SHARING_VIOLATION        ; return Errno::EACCES
+    when ERROR_LOCK_VIOLATION           ; return Errno::EACCES
+    when ERROR_WRONG_DISK               ; return Errno::EACCES
+    when ERROR_SHARING_BUFFER_EXCEEDED  ; return Errno::EACCES
+    when ERROR_BAD_NETPATH              ; return Errno::ENOENT
+    when ERROR_NETWORK_ACCESS_DENIED    ; return Errno::EACCES
+    when ERROR_BAD_NET_NAME             ; return Errno::ENOENT
+    when ERROR_FILE_EXISTS              ; return Errno::EEXIST
+    when ERROR_CANNOT_MAKE              ; return Errno::EACCES
+    when ERROR_FAIL_I24                 ; return Errno::EACCES
+    when ERROR_NO_PROC_SLOTS            ; return Errno::EAGAIN
+    when ERROR_DRIVE_LOCKED             ; return Errno::EACCES
+    when ERROR_BROKEN_PIPE              ; return Errno::EPIPE
+    when ERROR_DISK_FULL                ; return Errno::ENOSPC
+    when ERROR_INVALID_TARGET_HANDLE    ; return Errno::EBADF
+    when ERROR_WAIT_NO_CHILDREN         ; return Errno::ECHILD
+    when ERROR_CHILD_NOT_COMPLETE       ; return Errno::ECHILD
+    when ERROR_DIRECT_ACCESS_HANDLE     ; return Errno::EBADF
+    when ERROR_SEEK_ON_DEVICE           ; return Errno::EACCES
+    when ERROR_DIR_NOT_EMPTY            ; return Errno::ENOTEMPTY
+    when ERROR_NOT_LOCKED               ; return Errno::EACCES
+    when ERROR_BAD_PATHNAME             ; return Errno::ENOENT
+    when ERROR_MAX_THRDS_REACHED        ; return Errno::EAGAIN
+    when ERROR_LOCK_FAILED              ; return Errno::EACCES
+    when ERROR_ALREADY_EXISTS           ; return Errno::EEXIST
+    when ERROR_INVALID_STARTING_CODESEG ; return Errno::ENOEXEC
+    when ERROR_INVALID_STACKSEG         ; return Errno::ENOEXEC
+    when ERROR_INVALID_MODULETYPE       ; return Errno::ENOEXEC
+    when ERROR_INVALID_EXE_SIGNATURE    ; return Errno::ENOEXEC
+    when ERROR_EXE_MARKED_INVALID       ; return Errno::ENOEXEC
+    when ERROR_BAD_EXE_FORMAT           ; return Errno::ENOEXEC
+    when ERROR_ITERATED_DATA_EXCEEDS_64k; return Errno::ENOEXEC
+    when ERROR_INVALID_MINALLOCSIZE     ; return Errno::ENOEXEC
+    when ERROR_DYNLINK_FROM_INVALID_RING; return Errno::ENOEXEC
+    when ERROR_IOPL_NOT_ENABLED         ; return Errno::ENOEXEC
+    when ERROR_INVALID_SEGDPL           ; return Errno::ENOEXEC
+    when ERROR_AUTODATASEG_EXCEEDS_64k  ; return Errno::ENOEXEC
+    when ERROR_RING2SEG_MUST_BE_MOVABLE ; return Errno::ENOEXEC
+    when ERROR_RELOC_CHAIN_XEEDS_SEGLIM ; return Errno::ENOEXEC
+    when ERROR_INFLOOP_IN_RELOC_CHAIN   ; return Errno::ENOEXEC
+    when ERROR_FILENAME_EXCED_RANGE     ; return Errno::ENOENT
+    when ERROR_NESTING_NOT_ALLOWED      ; return Errno::EAGAIN
+    when ERROR_NO_DATA                  ; return Errno::EPIPE
+    when ERROR_DIRECTORY                ; return Errno::ENOTDIR
+    when ERROR_NOT_ENOUGH_QUOTA         ; return Errno::ENOMEM
+    else                                  return Errno::EINVAL
     end
   end
 

From 6fa4c19ac5b218bd77077f2c2074c7cf4c48b591 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Fri, 18 Aug 2017 14:43:06 +0300
Subject: [PATCH 09/14] removed a duplication

---
 src/lib_c/x86_64-windows-msvc/c/winapi.cr | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/lib_c/x86_64-windows-msvc/c/winapi.cr b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
index f42910530f81..222e5c4e0fd6 100644
--- a/src/lib_c/x86_64-windows-msvc/c/winapi.cr
+++ b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
@@ -225,13 +225,8 @@ lib LibC
     daylight_bias : Long
   end
 
-  struct FileTime
-    low_date_time : DWord
-    high_date_time : DWord
-  end
-
   fun get_time_zone_information = GetTimeZoneInformation(tz_info : TimeZoneInformation*) : DWord
-  fun get_system_time_as_file_time = GetSystemTimeAsFileTime(time : FileTime*)
+  fun get_system_time_as_file_time = GetSystemTimeAsFileTime(time : FILETIME*)
 
   fun get_computer_name = GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
 

From 7392588cdaf1652e7c851c63d30cff1942b25307 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Fri, 18 Aug 2017 14:46:51 +0300
Subject: [PATCH 10/14] refactored winerror.cr

---
 src/winerror.cr | 146 ++++++++++++++++++++++++------------------------
 1 file changed, 73 insertions(+), 73 deletions(-)

diff --git a/src/winerror.cr b/src/winerror.cr
index 3fb0bacbca02..cd7d41d0ccee 100644
--- a/src/winerror.cr
+++ b/src/winerror.cr
@@ -16,79 +16,79 @@ class WinError < Errno
   # https://github.com/python/cpython/blob/master/PC/errmap.h
   def winerror_to_errno(winerror)
     case winerror
-    when ERROR_FILE_NOT_FOUND           ; return Errno::ENOENT
-    when ERROR_PATH_NOT_FOUND           ; return Errno::ENOENT
-    when ERROR_TOO_MANY_OPEN_FILES      ; return Errno::EMFILE
-    when ERROR_ACCESS_DENIED            ; return Errno::EACCES
-    when ERROR_INVALID_HANDLE           ; return Errno::EBADF
-    when ERROR_ARENA_TRASHED            ; return Errno::ENOMEM
-    when ERROR_NOT_ENOUGH_MEMORY        ; return Errno::ENOMEM
-    when ERROR_INVALID_BLOCK            ; return Errno::ENOMEM
-    when ERROR_BAD_ENVIRONMENT          ; return Errno::E2BIG
-    when ERROR_BAD_FORMAT               ; return Errno::ENOEXEC
-    when ERROR_INVALID_DRIVE            ; return Errno::ENOENT
-    when ERROR_CURRENT_DIRECTORY        ; return Errno::EACCES
-    when ERROR_NOT_SAME_DEVICE          ; return Errno::EXDEV
-    when ERROR_NO_MORE_FILES            ; return Errno::ENOENT
-    when ERROR_WRITE_PROTECT            ; return Errno::EACCES
-    when ERROR_BAD_UNIT                 ; return Errno::EACCES
-    when ERROR_NOT_READY                ; return Errno::EACCES
-    when ERROR_BAD_COMMAND              ; return Errno::EACCES
-    when ERROR_CRC                      ; return Errno::EACCES
-    when ERROR_BAD_LENGTH               ; return Errno::EACCES
-    when ERROR_SEEK                     ; return Errno::EACCES
-    when ERROR_NOT_DOS_DISK             ; return Errno::EACCES
-    when ERROR_SECTOR_NOT_FOUND         ; return Errno::EACCES
-    when ERROR_OUT_OF_PAPER             ; return Errno::EACCES
-    when ERROR_WRITE_FAULT              ; return Errno::EACCES
-    when ERROR_READ_FAULT               ; return Errno::EACCES
-    when ERROR_GEN_FAILURE              ; return Errno::EACCES
-    when ERROR_SHARING_VIOLATION        ; return Errno::EACCES
-    when ERROR_LOCK_VIOLATION           ; return Errno::EACCES
-    when ERROR_WRONG_DISK               ; return Errno::EACCES
-    when ERROR_SHARING_BUFFER_EXCEEDED  ; return Errno::EACCES
-    when ERROR_BAD_NETPATH              ; return Errno::ENOENT
-    when ERROR_NETWORK_ACCESS_DENIED    ; return Errno::EACCES
-    when ERROR_BAD_NET_NAME             ; return Errno::ENOENT
-    when ERROR_FILE_EXISTS              ; return Errno::EEXIST
-    when ERROR_CANNOT_MAKE              ; return Errno::EACCES
-    when ERROR_FAIL_I24                 ; return Errno::EACCES
-    when ERROR_NO_PROC_SLOTS            ; return Errno::EAGAIN
-    when ERROR_DRIVE_LOCKED             ; return Errno::EACCES
-    when ERROR_BROKEN_PIPE              ; return Errno::EPIPE
-    when ERROR_DISK_FULL                ; return Errno::ENOSPC
-    when ERROR_INVALID_TARGET_HANDLE    ; return Errno::EBADF
-    when ERROR_WAIT_NO_CHILDREN         ; return Errno::ECHILD
-    when ERROR_CHILD_NOT_COMPLETE       ; return Errno::ECHILD
-    when ERROR_DIRECT_ACCESS_HANDLE     ; return Errno::EBADF
-    when ERROR_SEEK_ON_DEVICE           ; return Errno::EACCES
-    when ERROR_DIR_NOT_EMPTY            ; return Errno::ENOTEMPTY
-    when ERROR_NOT_LOCKED               ; return Errno::EACCES
-    when ERROR_BAD_PATHNAME             ; return Errno::ENOENT
-    when ERROR_MAX_THRDS_REACHED        ; return Errno::EAGAIN
-    when ERROR_LOCK_FAILED              ; return Errno::EACCES
-    when ERROR_ALREADY_EXISTS           ; return Errno::EEXIST
-    when ERROR_INVALID_STARTING_CODESEG ; return Errno::ENOEXEC
-    when ERROR_INVALID_STACKSEG         ; return Errno::ENOEXEC
-    when ERROR_INVALID_MODULETYPE       ; return Errno::ENOEXEC
-    when ERROR_INVALID_EXE_SIGNATURE    ; return Errno::ENOEXEC
-    when ERROR_EXE_MARKED_INVALID       ; return Errno::ENOEXEC
-    when ERROR_BAD_EXE_FORMAT           ; return Errno::ENOEXEC
-    when ERROR_ITERATED_DATA_EXCEEDS_64k; return Errno::ENOEXEC
-    when ERROR_INVALID_MINALLOCSIZE     ; return Errno::ENOEXEC
-    when ERROR_DYNLINK_FROM_INVALID_RING; return Errno::ENOEXEC
-    when ERROR_IOPL_NOT_ENABLED         ; return Errno::ENOEXEC
-    when ERROR_INVALID_SEGDPL           ; return Errno::ENOEXEC
-    when ERROR_AUTODATASEG_EXCEEDS_64k  ; return Errno::ENOEXEC
-    when ERROR_RING2SEG_MUST_BE_MOVABLE ; return Errno::ENOEXEC
-    when ERROR_RELOC_CHAIN_XEEDS_SEGLIM ; return Errno::ENOEXEC
-    when ERROR_INFLOOP_IN_RELOC_CHAIN   ; return Errno::ENOEXEC
-    when ERROR_FILENAME_EXCED_RANGE     ; return Errno::ENOENT
-    when ERROR_NESTING_NOT_ALLOWED      ; return Errno::EAGAIN
-    when ERROR_NO_DATA                  ; return Errno::EPIPE
-    when ERROR_DIRECTORY                ; return Errno::ENOTDIR
-    when ERROR_NOT_ENOUGH_QUOTA         ; return Errno::ENOMEM
-    else                                  return Errno::EINVAL
+    when ERROR_FILE_NOT_FOUND            then Errno::ENOENT
+    when ERROR_PATH_NOT_FOUND            then Errno::ENOENT
+    when ERROR_TOO_MANY_OPEN_FILES       then Errno::EMFILE
+    when ERROR_ACCESS_DENIED             then Errno::EACCES
+    when ERROR_INVALID_HANDLE            then Errno::EBADF
+    when ERROR_ARENA_TRASHED             then Errno::ENOMEM
+    when ERROR_NOT_ENOUGH_MEMORY         then Errno::ENOMEM
+    when ERROR_INVALID_BLOCK             then Errno::ENOMEM
+    when ERROR_BAD_ENVIRONMENT           then Errno::E2BIG
+    when ERROR_BAD_FORMAT                then Errno::ENOEXEC
+    when ERROR_INVALID_DRIVE             then Errno::ENOENT
+    when ERROR_CURRENT_DIRECTORY         then Errno::EACCES
+    when ERROR_NOT_SAME_DEVICE           then Errno::EXDEV
+    when ERROR_NO_MORE_FILES             then Errno::ENOENT
+    when ERROR_WRITE_PROTECT             then Errno::EACCES
+    when ERROR_BAD_UNIT                  then Errno::EACCES
+    when ERROR_NOT_READY                 then Errno::EACCES
+    when ERROR_BAD_COMMAND               then Errno::EACCES
+    when ERROR_CRC                       then Errno::EACCES
+    when ERROR_BAD_LENGTH                then Errno::EACCES
+    when ERROR_SEEK                      then Errno::EACCES
+    when ERROR_NOT_DOS_DISK              then Errno::EACCES
+    when ERROR_SECTOR_NOT_FOUND          then Errno::EACCES
+    when ERROR_OUT_OF_PAPER              then Errno::EACCES
+    when ERROR_WRITE_FAULT               then Errno::EACCES
+    when ERROR_READ_FAULT                then Errno::EACCES
+    when ERROR_GEN_FAILURE               then Errno::EACCES
+    when ERROR_SHARING_VIOLATION         then Errno::EACCES
+    when ERROR_LOCK_VIOLATION            then Errno::EACCES
+    when ERROR_WRONG_DISK                then Errno::EACCES
+    when ERROR_SHARING_BUFFER_EXCEEDED   then Errno::EACCES
+    when ERROR_BAD_NETPATH               then Errno::ENOENT
+    when ERROR_NETWORK_ACCESS_DENIED     then Errno::EACCES
+    when ERROR_BAD_NET_NAME              then Errno::ENOENT
+    when ERROR_FILE_EXISTS               then Errno::EEXIST
+    when ERROR_CANNOT_MAKE               then Errno::EACCES
+    when ERROR_FAIL_I24                  then Errno::EACCES
+    when ERROR_NO_PROC_SLOTS             then Errno::EAGAIN
+    when ERROR_DRIVE_LOCKED              then Errno::EACCES
+    when ERROR_BROKEN_PIPE               then Errno::EPIPE
+    when ERROR_DISK_FULL                 then Errno::ENOSPC
+    when ERROR_INVALID_TARGET_HANDLE     then Errno::EBADF
+    when ERROR_WAIT_NO_CHILDREN          then Errno::ECHILD
+    when ERROR_CHILD_NOT_COMPLETE        then Errno::ECHILD
+    when ERROR_DIRECT_ACCESS_HANDLE      then Errno::EBADF
+    when ERROR_SEEK_ON_DEVICE            then Errno::EACCES
+    when ERROR_DIR_NOT_EMPTY             then Errno::ENOTEMPTY
+    when ERROR_NOT_LOCKED                then Errno::EACCES
+    when ERROR_BAD_PATHNAME              then Errno::ENOENT
+    when ERROR_MAX_THRDS_REACHED         then Errno::EAGAIN
+    when ERROR_LOCK_FAILED               then Errno::EACCES
+    when ERROR_ALREADY_EXISTS            then Errno::EEXIST
+    when ERROR_INVALID_STARTING_CODESEG  then Errno::ENOEXEC
+    when ERROR_INVALID_STACKSEG          then Errno::ENOEXEC
+    when ERROR_INVALID_MODULETYPE        then Errno::ENOEXEC
+    when ERROR_INVALID_EXE_SIGNATURE     then Errno::ENOEXEC
+    when ERROR_EXE_MARKED_INVALID        then Errno::ENOEXEC
+    when ERROR_BAD_EXE_FORMAT            then Errno::ENOEXEC
+    when ERROR_ITERATED_DATA_EXCEEDS_64k then Errno::ENOEXEC
+    when ERROR_INVALID_MINALLOCSIZE      then Errno::ENOEXEC
+    when ERROR_DYNLINK_FROM_INVALID_RING then Errno::ENOEXEC
+    when ERROR_IOPL_NOT_ENABLED          then Errno::ENOEXEC
+    when ERROR_INVALID_SEGDPL            then Errno::ENOEXEC
+    when ERROR_AUTODATASEG_EXCEEDS_64k   then Errno::ENOEXEC
+    when ERROR_RING2SEG_MUST_BE_MOVABLE  then Errno::ENOEXEC
+    when ERROR_RELOC_CHAIN_XEEDS_SEGLIM  then Errno::ENOEXEC
+    when ERROR_INFLOOP_IN_RELOC_CHAIN    then Errno::ENOEXEC
+    when ERROR_FILENAME_EXCED_RANGE      then Errno::ENOENT
+    when ERROR_NESTING_NOT_ALLOWED       then Errno::EAGAIN
+    when ERROR_NO_DATA                   then Errno::EPIPE
+    when ERROR_DIRECTORY                 then Errno::ENOTDIR
+    when ERROR_NOT_ENOUGH_QUOTA          then Errno::ENOMEM
+    else                                      Errno::EINVAL
     end
   end
 

From 9dc4c97362107b432da529b7c2096ffe7b32785b Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Fri, 18 Aug 2017 15:19:40 +0300
Subject: [PATCH 11/14] keep exact naming of structs and field as in MSDN

---
 src/lib_c/x86_64-windows-msvc/c/winapi.cr | 165 +++++++++++-----------
 src/winerror.cr                           |   4 +-
 2 files changed, 85 insertions(+), 84 deletions(-)

diff --git a/src/lib_c/x86_64-windows-msvc/c/winapi.cr b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
index 222e5c4e0fd6..5be837139bfa 100644
--- a/src/lib_c/x86_64-windows-msvc/c/winapi.cr
+++ b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
@@ -33,33 +33,34 @@ lib LibC
   INVALID_HANDLE_VALUE = Pointer(Void).new((-1).to_u64)
   INFINITY             = 0xFFFFFFFF_u32
 
-  fun duplicate_handle = DuplicateHandle(source_process : Handle, source : Handle, target_process : Handle, target : Handle*, desired_access : DWord, inherit_handle : Bool, options : DWord) : Bool
+  fun _DuplicateHandle = DuplicateHandle(source_process : Handle, source : Handle, target_process : Handle, target : Handle*, desired_access : DWord, inherit_handle : Bool, options : DWord) : Bool
 
-  struct Overlapped
+  # member names are not original otherwise they would be really confusing
+  struct OVERLAPPED
     status : SizeT
     bytes_transfered : SizeT
     offset : UInt64
     event : Handle
   end
 
-  struct SecurityAttributes
-    length : DWord
-    security_descriptors : Void*
-    inherit_handle : BOOL
+  struct SECURITY_ATTRIBUTES
+    nLength : DWord
+    lpSecurityDescriptor : Void*
+    bInheritHandle : BOOL
   end
 
-  fun get_std_handle = GetStdHandle(std_handle : DWord) : Handle
-  fun get_file_type = GetFileType(file : Handle) : DWord
-  fun create_file = CreateFileA(filename : UInt8*, access : DWord, sharemode : DWord, security_attributes : SecurityAttributes*, creation : DWord, flags : DWord, template : Handle) : Handle
-  fun read_file = ReadFile(file : Handle, buffer : UInt8*, size : DWord, read : DWord*, overlapped : Overlapped*) : Bool
-  fun write_file = WriteFile(file : Handle, buffer : UInt8*, size : DWord, written : DWord*, overlapped : Overlapped*) : Bool
-  fun close_handle = CloseHandle(file : Handle) : Bool
+  fun _GetStdHandle = GetStdHandle(std_handle : DWord) : Handle
+  fun _GetFileType = GetFileType(file : Handle) : DWord
+  fun _CreateFileA = CreateFileA(filename : UInt8*, access : DWord, sharemode : DWord, security_attributes : SECURITY_ATTRIBUTES*, creation : DWord, flags : DWord, template : Handle) : Handle
+  fun _ReadFile = ReadFile(file : Handle, buffer : UInt8*, size : DWord, read : DWord*, overlapped : OVERLAPPED*) : Bool
+  fun _WriteFile = WriteFile(file : Handle, buffer : UInt8*, size : DWord, written : DWord*, overlapped : OVERLAPPED*) : Bool
+  fun _CloseHandle = CloseHandle(file : Handle) : Bool
 
-  fun get_current_directory = GetCurrentDirectoryA(size : DWord, buffer : UInt8*) : DWord
-  fun set_current_directory = SetCurrentDirectoryA(path : UInt8*) : BOOL
-  fun create_directory = CreateDirectoryA(path : UInt8*, security_attribute : Void*) : BOOL
-  fun remove_directory = RemoveDirectoryA(path : UInt8*) : BOOL
-  fun get_temp_path = GetTempPathA(len : DWord, buffer : UInt8*) : DWord
+  fun _GetCurrentDirectoryA = GetCurrentDirectoryA(size : DWord, buffer : UInt8*) : DWord
+  fun _SetCurrentDirectoryA = SetCurrentDirectoryA(path : UInt8*) : BOOL
+  fun _CreateDirectoryA = CreateDirectoryA(path : UInt8*, security_attribute : Void*) : BOOL
+  fun _RemoveDirectoryA = RemoveDirectoryA(path : UInt8*) : BOOL
+  fun _GetTempPathA = GetTempPathA(len : DWord, buffer : UInt8*) : DWord
 
   MAX_PATH = 260
 
@@ -97,49 +98,49 @@ lib LibC
   FILE_END                 = 2_i32
   INVALID_SET_FILE_POINTER = (-1).to_u32
 
-  fun find_first_file = FindFirstFileA(fileName : UInt8*, filedata : WIN32_FIND_DATA_A*) : Handle
-  fun find_next_file = FindNextFileA(file : Handle, filedata : WIN32_FIND_DATA_A*) : BOOL
-  fun find_close = FindClose(file : Handle) : BOOL
-  fun get_file_attributes = GetFileAttributesA(filename : UInt8*) : DWord
-  fun get_file_size = GetFileSize(file : Handle, fileSizeHigh : DWord*) : DWord
-  fun get_file_size_ex = GetFileSizeEx(file : Handle, size : UInt64*) : BOOL
-  fun get_file_time = GetFileTime(file : Handle, lpCreationTime : FILETIME*, lpLastAccessTime : FILETIME*, lpLastWriteTime : FILETIME*) : BOOL
-  fun set_file_pointer = SetFilePointer(file : Handle, lDistanceToMove : Long, lpDistanceToMoveHigh : Long*, dwMoveMethod : DWord) : DWord
-  fun set_end_of_file = SetEndOfFile(file : Handle) : BOOL
-  fun delete_file = DeleteFileA(filename : UInt8*) : BOOL
-  fun get_full_path_name = GetFullPathNameA(filename : UInt8*, buf_len : DWord, lpBuffer : UInt8*, lpFilePart : UInt8**) : DWord
+  fun _FindFirstFileA = FindFirstFileA(fileName : UInt8*, filedata : WIN32_FIND_DATA_A*) : Handle
+  fun _FindNextFileA = FindNextFileA(file : Handle, filedata : WIN32_FIND_DATA_A*) : BOOL
+  fun _FindClose = FindClose(file : Handle) : BOOL
+  fun _GetFileAttributesA = GetFileAttributesA(filename : UInt8*) : DWord
+  fun _GetFileSize = GetFileSize(file : Handle, fileSizeHigh : DWord*) : DWord
+  fun _GetFileSizeEx = GetFileSizeEx(file : Handle, size : UInt64*) : BOOL
+  fun _GetFileTime = GetFileTime(file : Handle, lpCreationTime : FILETIME*, lpLastAccessTime : FILETIME*, lpLastWriteTime : FILETIME*) : BOOL
+  fun _SetFilePointer = SetFilePointer(file : Handle, lDistanceToMove : Long, lpDistanceToMoveHigh : Long*, dwMoveMethod : DWord) : DWord
+  fun _SetEndOfFile = SetEndOfFile(file : Handle) : BOOL
+  fun _DeleteFileA = DeleteFileA(filename : UInt8*) : BOOL
+  fun _GetFullPathNameA = GetFullPathNameA(filename : UInt8*, buf_len : DWord, lpBuffer : UInt8*, lpFilePart : UInt8**) : DWord
   # from Shlwapi.lib
-  # fun path_file_dir_exists = PathFileExistsA(path : UInt8*) : BOOL
-  fun move_file = MoveFileA(lpExistingFileName : UInt8*, lpNewFileName : UInt8*) : BOOL
-  fun get_temp_file_name = GetTempFileNameA(path_name : UInt8*, prefix : UInt8*, unique_num : UInt32, temp_file_name : UInt8*) : UInt32
-
-  fun create_io_completion_port = CreateIoCompletionPort(file : Handle, port : Handle, data : Void*, threads : DWord) : Handle
-  fun get_queued_completion_status = GetQueuedCompletionStatus(port : Handle, bytes_transfered : DWord*, data : Void**, entry : Overlapped**, timeout_millis : DWord) : Bool
-  fun post_queued_completion_status = PostQueuedCompletionStatus(port : Handle, bytes_transfered : DWord, data : Void*, entry : Overlapped*) : Bool
-  fun get_current_process = GetCurrentProcess : Handle
-  fun get_current_thread = GetCurrentThread : Handle
-  fun create_pipe = CreatePipe(hReadPipe : UInt64*, hWritePipe : UInt64*, lpPipeAttributes : SecurityAttributes*, nSize : DWord) : BOOL
-  fun peek_named_pipe = PeekNamedPipe(hNamedPipe : Handle, lpBuffer : UInt8*, nBufferSize : DWord, lpBytesRead : DWord*, lpTotalBytesAvail : DWord*, lpBytesLeftThisMessage : DWord*) : BOOL
+  # fun _PathFileExistsA = PathFileExistsA(path : UInt8*) : BOOL
+  fun _MoveFileA = MoveFileA(lpExistingFileName : UInt8*, lpNewFileName : UInt8*) : BOOL
+  fun _GetTempFileNameA = GetTempFileNameA(path_name : UInt8*, prefix : UInt8*, unique_num : UInt32, temp_file_name : UInt8*) : UInt32
+
+  fun _CreateIoCompletionPort = CreateIoCompletionPort(file : Handle, port : Handle, data : Void*, threads : DWord) : Handle
+  fun _GetQueuedCompletionStatus = GetQueuedCompletionStatus(port : Handle, bytes_transfered : DWord*, data : Void**, entry : OVERLAPPED**, timeout_millis : DWord) : Bool
+  fun _PostQueuedCompletionStatus = PostQueuedCompletionStatus(port : Handle, bytes_transfered : DWord, data : Void*, entry : OVERLAPPED*) : Bool
+  fun _GetCurrentProcess = GetCurrentProcess : Handle
+  fun _GetCurrentThread = GetCurrentThread : Handle
+  fun _CreatePipe = CreatePipe(hReadPipe : UInt64*, hWritePipe : UInt64*, lpPipeAttributes : SECURITY_ATTRIBUTES*, nSize : DWord) : BOOL
+  fun _PeekNamedPipe = PeekNamedPipe(hNamedPipe : Handle, lpBuffer : UInt8*, nBufferSize : DWord, lpBytesRead : DWord*, lpTotalBytesAvail : DWord*, lpBytesLeftThisMessage : DWord*) : BOOL
 
   WAIT_ABANDONED = 0x00000080_u32
   WAIT_OBJECT_0  = 0x00000000_u32
   WAIT_TIMEOUT   = 0x00000102_u32
   WAIT_FAILED    = 0xFFFFFFFF_u32
 
-  fun wait_for_single_object = WaitForSingleObject(handle : Handle, timeout_millis : DWord) : DWord
-  fun create_timer_queue_timer = CreateTimerQueueTimer(timer_handle : Handle*, queue_handle : Handle, callback : (Void*, Bool) ->, data : Void*, due : DWord, period : DWord, flags : SizeT) : Bool
-  fun delete_timer_queue_timer = DeleteTimerQueueTimer(queue_handle : Handle, timer_handle : Handle, completion_event : Handle) : Bool
-  fun get_last_error = GetLastError : DWord
-  fun set_last_error = SetLastError(code : DWord) : Void
+  fun _WaitForSingleObject = WaitForSingleObject(handle : Handle, timeout_millis : DWord) : DWord
+  fun _CreateTimerQueueTimer = CreateTimerQueueTimer(timer_handle : Handle*, queue_handle : Handle, callback : (Void*, Bool) ->, data : Void*, due : DWord, period : DWord, flags : SizeT) : Bool
+  fun _DeleteTimerQueueTimer = DeleteTimerQueueTimer(queue_handle : Handle, timer_handle : Handle, completion_event : Handle) : Bool
+  fun _GetLastError = GetLastError : DWord
+  fun _SetLastError = SetLastError(code : DWord) : Void
 
-  # StartupInfoA.deFlags
+  # STARTUPINFOA.deFlags
   STARTF_USESTDHANDLES = 0x00000100_u32
 
   # CreateProcessA.dwCreationFlags
   NORMAL_PRIORITY_CLASS = 0x00000020_u32
   CREATE_NO_WINDOW      = 0x08000000_u32
 
-  struct StartupInfoA
+  struct STARTUPINFOA
     cb : DWord
     lpReserved : UInt8*
     lpDesktop : UInt8*
@@ -160,19 +161,19 @@ lib LibC
     hStdError : Handle
   end
 
-  struct Process_Information
+  struct PROCESS_INFORMATION
     hProcess : Handle
     hThread : Handle
     dwProcessId : DWord
     dwThreadId : DWord
   end
 
-  fun create_process = CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*,
-                                      lpProcessAttributes : SecurityAttributes*, lpThreadAttributes : SecurityAttributes*, bInheritHandles : BOOL,
-                                      dwCreationFlags : DWord, lpEnvironment : Void*, lpCurrentDirectory : UInt8*,
-                                      lpStartupInfo : StartupInfoA*, lpProcessInformation : Process_Information*) : BOOL
-  fun kill_process = KillProcess(hProcess : Handle, uExitCode : UInt32) : BOOL
-  fun get_exit_code_process = GetExitCodeProcess(hProcess : Handle, lpExitCode : DWord*) : BOOL
+  fun _CreateProcessA = CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*,
+                                       lpProcessAttributes : SECURITY_ATTRIBUTES*, lpThreadAttributes : SECURITY_ATTRIBUTES*, bInheritHandles : BOOL,
+                                       dwCreationFlags : DWord, lpEnvironment : Void*, lpCurrentDirectory : UInt8*,
+                                       lpStartupInfo : STARTUPINFOA*, lpProcessInformation : PROCESS_INFORMATION*) : BOOL
+  fun _KillProcess = KillProcess(hProcess : Handle, uExitCode : UInt32) : BOOL
+  fun _GetExitCodeProcess = GetExitCodeProcess(hProcess : Handle, lpExitCode : DWord*) : BOOL
 
   FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100_u32
   FORMAT_MESSAGE_IGNORE_INSERTS  = 0x00000200_u32
@@ -181,7 +182,7 @@ lib LibC
   FORMAT_MESSAGE_FROM_SYSTEM     = 0x00001000_u32
   FORMAT_MESSAGE_ARGUMENT_ARRAY  = 0x00002000_u32
 
-  fun format_message = FormatMessageA(flags : DWord, source : Void*, msg : DWord, lang : DWord, buffer : UInt8*, size : DWord, args : Void*) : DWord
+  fun _FormatMessageA = FormatMessageA(flags : DWord, source : Void*, msg : DWord, lang : DWord, buffer : UInt8*, size : DWord, args : Void*) : DWord
 
   WSASYSNOTREADY     = 10091
   WSAVERNOTSUPPORTED = 10092
@@ -191,46 +192,46 @@ lib LibC
   WSAEINVAL          = 10022
 
   struct WSAData
-    version : UInt16
-    high_version : UInt16
-    description : UInt8[257]
-    system_status : UInt8[129]
-    max_sockets : UInt16
-    max_udp_datagram : UInt16
-    vendor_info : UInt8*
+    wVersion : UInt16
+    wHighVersion : UInt16
+    szDescription : UInt8[257]
+    szSystemStatus : UInt8[129]
+    iMaxSockets : UInt16
+    iMaxUdpDg : UInt16
+    lpVendorInfo : UInt8*
   end
 
-  fun wsa_startup = WSAStartup(version : Int16, data : WSAData*) : Int32
+  fun _WSAStartup = WSAStartup(version : Int16, data : WSAData*) : Int32
 
   # source https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx
   struct SystemTime
-    year : Word
-    month : Word
-    day_of_week : Word
-    day : Word
-    hour : Word
-    minute : Word
-    second : Word
-    milliseconds : Word
+    wYear : Word
+    wMonth : Word
+    wDayOfWeek : Word
+    wDay : Word
+    wHour : Word
+    wMinute : Word
+    wSecond : Word
+    wMilliseconds : Word
   end
 
   # source https://msdn.microsoft.com/en-us/library/windows/desktop/ms725481(v=vs.85).aspx
-  struct TimeZoneInformation
-    bias : Long
-    standard_name : StaticArray(WChar, 32)
-    standard_date : SystemTime
-    standard_bias : Long
-    daylight_name : StaticArray(WChar, 32)
-    daylight_date : SystemTime
-    daylight_bias : Long
+  struct TIME_ZONE_INFORMATION
+    _Bias : Long
+    _StandardName : StaticArray(WChar, 32)
+    _StandardDate : SYSTEMTIME
+    _StandardBias : Long
+    _DaylightName : StaticArray(WChar, 32)
+    _DaylightDate : SYSTEMTIME
+    _DaylightBias : Long
   end
 
-  fun get_time_zone_information = GetTimeZoneInformation(tz_info : TimeZoneInformation*) : DWord
-  fun get_system_time_as_file_time = GetSystemTimeAsFileTime(time : FILETIME*)
+  fun _GetTimeZoneInformation = GetTimeZoneInformation(tz_info : TIME_ZONE_INFORMATION*) : DWord
+  fun _GetSystemTimeAsFileTime = GetSystemTimeAsFileTime(time : FILETIME*)
 
-  fun get_computer_name = GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
+  fun _GetComputerNameA = GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
 
-  fun cxx_throw_exception = _CxxThrowException(exception_object : Void*, throw_info : Void*) : NoReturn
+  fun _CxxThrowException = _CxxThrowException(exception_object : Void*, throw_info : Void*) : NoReturn
 end
 
 module WindowsExt
diff --git a/src/winerror.cr b/src/winerror.cr
index cd7d41d0ccee..9f92287c0244 100644
--- a/src/winerror.cr
+++ b/src/winerror.cr
@@ -2,12 +2,12 @@ class WinError < Errno
   # NOTE: `get_last_error` must be called BEFORE an instance of this class
   # is malloced as it would change the "last error" to SUCCESS
   def self.new(message)
-    new(message, LibC.get_last_error)
+    new(message, LibC._GetLastError)
   end
 
   def initialize(message, code)
     buffer = uninitialized UInt8[256]
-    size = LibC.format_message(LibC::FORMAT_MESSAGE_FROM_SYSTEM, nil, code, 0, buffer, buffer.size, nil)
+    size = LibC._FormatMessageA(LibC::FORMAT_MESSAGE_FROM_SYSTEM, nil, code, 0, buffer, buffer.size, nil)
     details = String.new(buffer.to_unsafe, size).strip
     super "#{message}: [WinError #{code}, #{details}]", winerror_to_errno(code)
   end

From 9610937f0dcd9105215ec9d165553437a5757220 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Fri, 18 Aug 2017 17:04:55 +0300
Subject: [PATCH 12/14] add brackets

---
 src/winerror.cr | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/winerror.cr b/src/winerror.cr
index 9f92287c0244..c107dab01845 100644
--- a/src/winerror.cr
+++ b/src/winerror.cr
@@ -9,7 +9,7 @@ class WinError < Errno
     buffer = uninitialized UInt8[256]
     size = LibC._FormatMessageA(LibC::FORMAT_MESSAGE_FROM_SYSTEM, nil, code, 0, buffer, buffer.size, nil)
     details = String.new(buffer.to_unsafe, size).strip
-    super "#{message}: [WinError #{code}, #{details}]", winerror_to_errno(code)
+    super("#{message}: [WinError #{code}, #{details}]", winerror_to_errno(code))
   end
 
   # https://github.com/python/cpython/blob/master/PC/generrmap.c

From f416f6c4814a45ab93e5f881dfdd380a47983f36 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Thu, 7 Sep 2017 23:10:29 +0300
Subject: [PATCH 13/14] fun can start with with an uppercase letter

---
 src/lib_c/x86_64-windows-msvc/c/winapi.cr | 92 +++++++++++------------
 src/winerror.cr                           |  4 +-
 2 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/src/lib_c/x86_64-windows-msvc/c/winapi.cr b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
index 5be837139bfa..bda7cfea4077 100644
--- a/src/lib_c/x86_64-windows-msvc/c/winapi.cr
+++ b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
@@ -33,7 +33,7 @@ lib LibC
   INVALID_HANDLE_VALUE = Pointer(Void).new((-1).to_u64)
   INFINITY             = 0xFFFFFFFF_u32
 
-  fun _DuplicateHandle = DuplicateHandle(source_process : Handle, source : Handle, target_process : Handle, target : Handle*, desired_access : DWord, inherit_handle : Bool, options : DWord) : Bool
+  fun DuplicateHandle(source_process : Handle, source : Handle, target_process : Handle, target : Handle*, desired_access : DWord, inherit_handle : Bool, options : DWord) : Bool
 
   # member names are not original otherwise they would be really confusing
   struct OVERLAPPED
@@ -49,18 +49,18 @@ lib LibC
     bInheritHandle : BOOL
   end
 
-  fun _GetStdHandle = GetStdHandle(std_handle : DWord) : Handle
-  fun _GetFileType = GetFileType(file : Handle) : DWord
-  fun _CreateFileA = CreateFileA(filename : UInt8*, access : DWord, sharemode : DWord, security_attributes : SECURITY_ATTRIBUTES*, creation : DWord, flags : DWord, template : Handle) : Handle
-  fun _ReadFile = ReadFile(file : Handle, buffer : UInt8*, size : DWord, read : DWord*, overlapped : OVERLAPPED*) : Bool
-  fun _WriteFile = WriteFile(file : Handle, buffer : UInt8*, size : DWord, written : DWord*, overlapped : OVERLAPPED*) : Bool
-  fun _CloseHandle = CloseHandle(file : Handle) : Bool
+  fun GetStdHandle(std_handle : DWord) : Handle
+  fun GetFileType(file : Handle) : DWord
+  fun CreateFileA(filename : UInt8*, access : DWord, sharemode : DWord, security_attributes : SECURITY_ATTRIBUTES*, creation : DWord, flags : DWord, template : Handle) : Handle
+  fun ReadFile(file : Handle, buffer : UInt8*, size : DWord, read : DWord*, overlapped : OVERLAPPED*) : Bool
+  fun WriteFile(file : Handle, buffer : UInt8*, size : DWord, written : DWord*, overlapped : OVERLAPPED*) : Bool
+  fun CloseHandle(file : Handle) : Bool
 
-  fun _GetCurrentDirectoryA = GetCurrentDirectoryA(size : DWord, buffer : UInt8*) : DWord
-  fun _SetCurrentDirectoryA = SetCurrentDirectoryA(path : UInt8*) : BOOL
-  fun _CreateDirectoryA = CreateDirectoryA(path : UInt8*, security_attribute : Void*) : BOOL
-  fun _RemoveDirectoryA = RemoveDirectoryA(path : UInt8*) : BOOL
-  fun _GetTempPathA = GetTempPathA(len : DWord, buffer : UInt8*) : DWord
+  fun GetCurrentDirectoryA(size : DWord, buffer : UInt8*) : DWord
+  fun SetCurrentDirectoryA(path : UInt8*) : BOOL
+  fun CreateDirectoryA(path : UInt8*, security_attribute : Void*) : BOOL
+  fun RemoveDirectoryA(path : UInt8*) : BOOL
+  fun GetTempPathA(len : DWord, buffer : UInt8*) : DWord
 
   MAX_PATH = 260
 
@@ -98,40 +98,40 @@ lib LibC
   FILE_END                 = 2_i32
   INVALID_SET_FILE_POINTER = (-1).to_u32
 
-  fun _FindFirstFileA = FindFirstFileA(fileName : UInt8*, filedata : WIN32_FIND_DATA_A*) : Handle
-  fun _FindNextFileA = FindNextFileA(file : Handle, filedata : WIN32_FIND_DATA_A*) : BOOL
-  fun _FindClose = FindClose(file : Handle) : BOOL
-  fun _GetFileAttributesA = GetFileAttributesA(filename : UInt8*) : DWord
-  fun _GetFileSize = GetFileSize(file : Handle, fileSizeHigh : DWord*) : DWord
-  fun _GetFileSizeEx = GetFileSizeEx(file : Handle, size : UInt64*) : BOOL
-  fun _GetFileTime = GetFileTime(file : Handle, lpCreationTime : FILETIME*, lpLastAccessTime : FILETIME*, lpLastWriteTime : FILETIME*) : BOOL
-  fun _SetFilePointer = SetFilePointer(file : Handle, lDistanceToMove : Long, lpDistanceToMoveHigh : Long*, dwMoveMethod : DWord) : DWord
-  fun _SetEndOfFile = SetEndOfFile(file : Handle) : BOOL
-  fun _DeleteFileA = DeleteFileA(filename : UInt8*) : BOOL
-  fun _GetFullPathNameA = GetFullPathNameA(filename : UInt8*, buf_len : DWord, lpBuffer : UInt8*, lpFilePart : UInt8**) : DWord
+  fun FindFirstFileA(fileName : UInt8*, filedata : WIN32_FIND_DATA_A*) : Handle
+  fun FindNextFileA(file : Handle, filedata : WIN32_FIND_DATA_A*) : BOOL
+  fun FindClose(file : Handle) : BOOL
+  fun GetFileAttributesA(filename : UInt8*) : DWord
+  fun GetFileSize(file : Handle, fileSizeHigh : DWord*) : DWord
+  fun GetFileSizeEx(file : Handle, size : UInt64*) : BOOL
+  fun GetFileTime(file : Handle, lpCreationTime : FILETIME*, lpLastAccessTime : FILETIME*, lpLastWriteTime : FILETIME*) : BOOL
+  fun SetFilePointer(file : Handle, lDistanceToMove : Long, lpDistanceToMoveHigh : Long*, dwMoveMethod : DWord) : DWord
+  fun SetEndOfFile(file : Handle) : BOOL
+  fun DeleteFileA(filename : UInt8*) : BOOL
+  fun GetFullPathNameA(filename : UInt8*, buf_len : DWord, lpBuffer : UInt8*, lpFilePart : UInt8**) : DWord
   # from Shlwapi.lib
   # fun _PathFileExistsA = PathFileExistsA(path : UInt8*) : BOOL
-  fun _MoveFileA = MoveFileA(lpExistingFileName : UInt8*, lpNewFileName : UInt8*) : BOOL
-  fun _GetTempFileNameA = GetTempFileNameA(path_name : UInt8*, prefix : UInt8*, unique_num : UInt32, temp_file_name : UInt8*) : UInt32
+  fun MoveFileA(lpExistingFileName : UInt8*, lpNewFileName : UInt8*) : BOOL
+  fun GetTempFileNameA(path_name : UInt8*, prefix : UInt8*, unique_num : UInt32, temp_file_name : UInt8*) : UInt32
 
-  fun _CreateIoCompletionPort = CreateIoCompletionPort(file : Handle, port : Handle, data : Void*, threads : DWord) : Handle
-  fun _GetQueuedCompletionStatus = GetQueuedCompletionStatus(port : Handle, bytes_transfered : DWord*, data : Void**, entry : OVERLAPPED**, timeout_millis : DWord) : Bool
-  fun _PostQueuedCompletionStatus = PostQueuedCompletionStatus(port : Handle, bytes_transfered : DWord, data : Void*, entry : OVERLAPPED*) : Bool
-  fun _GetCurrentProcess = GetCurrentProcess : Handle
-  fun _GetCurrentThread = GetCurrentThread : Handle
-  fun _CreatePipe = CreatePipe(hReadPipe : UInt64*, hWritePipe : UInt64*, lpPipeAttributes : SECURITY_ATTRIBUTES*, nSize : DWord) : BOOL
-  fun _PeekNamedPipe = PeekNamedPipe(hNamedPipe : Handle, lpBuffer : UInt8*, nBufferSize : DWord, lpBytesRead : DWord*, lpTotalBytesAvail : DWord*, lpBytesLeftThisMessage : DWord*) : BOOL
+  fun CreateIoCompletionPort(file : Handle, port : Handle, data : Void*, threads : DWord) : Handle
+  fun GetQueuedCompletionStatus(port : Handle, bytes_transfered : DWord*, data : Void**, entry : OVERLAPPED**, timeout_millis : DWord) : Bool
+  fun PostQueuedCompletionStatus(port : Handle, bytes_transfered : DWord, data : Void*, entry : OVERLAPPED*) : Bool
+  fun GetCurrentProcess : Handle
+  fun GetCurrentThread : Handle
+  fun CreatePipe(hReadPipe : UInt64*, hWritePipe : UInt64*, lpPipeAttributes : SECURITY_ATTRIBUTES*, nSize : DWord) : BOOL
+  fun PeekNamedPipe(hNamedPipe : Handle, lpBuffer : UInt8*, nBufferSize : DWord, lpBytesRead : DWord*, lpTotalBytesAvail : DWord*, lpBytesLeftThisMessage : DWord*) : BOOL
 
   WAIT_ABANDONED = 0x00000080_u32
   WAIT_OBJECT_0  = 0x00000000_u32
   WAIT_TIMEOUT   = 0x00000102_u32
   WAIT_FAILED    = 0xFFFFFFFF_u32
 
-  fun _WaitForSingleObject = WaitForSingleObject(handle : Handle, timeout_millis : DWord) : DWord
-  fun _CreateTimerQueueTimer = CreateTimerQueueTimer(timer_handle : Handle*, queue_handle : Handle, callback : (Void*, Bool) ->, data : Void*, due : DWord, period : DWord, flags : SizeT) : Bool
-  fun _DeleteTimerQueueTimer = DeleteTimerQueueTimer(queue_handle : Handle, timer_handle : Handle, completion_event : Handle) : Bool
-  fun _GetLastError = GetLastError : DWord
-  fun _SetLastError = SetLastError(code : DWord) : Void
+  fun WaitForSingleObject(handle : Handle, timeout_millis : DWord) : DWord
+  fun CreateTimerQueueTimer(timer_handle : Handle*, queue_handle : Handle, callback : (Void*, Bool) ->, data : Void*, due : DWord, period : DWord, flags : SizeT) : Bool
+  fun DeleteTimerQueueTimer(queue_handle : Handle, timer_handle : Handle, completion_event : Handle) : Bool
+  fun GetLastError : DWord
+  fun SetLastError(code : DWord) : Void
 
   # STARTUPINFOA.deFlags
   STARTF_USESTDHANDLES = 0x00000100_u32
@@ -168,12 +168,12 @@ lib LibC
     dwThreadId : DWord
   end
 
-  fun _CreateProcessA = CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*,
+  fun CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*,
                                        lpProcessAttributes : SECURITY_ATTRIBUTES*, lpThreadAttributes : SECURITY_ATTRIBUTES*, bInheritHandles : BOOL,
                                        dwCreationFlags : DWord, lpEnvironment : Void*, lpCurrentDirectory : UInt8*,
                                        lpStartupInfo : STARTUPINFOA*, lpProcessInformation : PROCESS_INFORMATION*) : BOOL
-  fun _KillProcess = KillProcess(hProcess : Handle, uExitCode : UInt32) : BOOL
-  fun _GetExitCodeProcess = GetExitCodeProcess(hProcess : Handle, lpExitCode : DWord*) : BOOL
+  fun KillProcess(hProcess : Handle, uExitCode : UInt32) : BOOL
+  fun GetExitCodeProcess(hProcess : Handle, lpExitCode : DWord*) : BOOL
 
   FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100_u32
   FORMAT_MESSAGE_IGNORE_INSERTS  = 0x00000200_u32
@@ -182,7 +182,7 @@ lib LibC
   FORMAT_MESSAGE_FROM_SYSTEM     = 0x00001000_u32
   FORMAT_MESSAGE_ARGUMENT_ARRAY  = 0x00002000_u32
 
-  fun _FormatMessageA = FormatMessageA(flags : DWord, source : Void*, msg : DWord, lang : DWord, buffer : UInt8*, size : DWord, args : Void*) : DWord
+  fun FormatMessageA(flags : DWord, source : Void*, msg : DWord, lang : DWord, buffer : UInt8*, size : DWord, args : Void*) : DWord
 
   WSASYSNOTREADY     = 10091
   WSAVERNOTSUPPORTED = 10092
@@ -201,7 +201,7 @@ lib LibC
     lpVendorInfo : UInt8*
   end
 
-  fun _WSAStartup = WSAStartup(version : Int16, data : WSAData*) : Int32
+  fun WSAStartup(version : Int16, data : WSAData*) : Int32
 
   # source https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx
   struct SystemTime
@@ -226,12 +226,12 @@ lib LibC
     _DaylightBias : Long
   end
 
-  fun _GetTimeZoneInformation = GetTimeZoneInformation(tz_info : TIME_ZONE_INFORMATION*) : DWord
-  fun _GetSystemTimeAsFileTime = GetSystemTimeAsFileTime(time : FILETIME*)
+  fun GetTimeZoneInformation(tz_info : TIME_ZONE_INFORMATION*) : DWord
+  fun GetSystemTimeAsFileTime(time : FILETIME*)
 
-  fun _GetComputerNameA = GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
+  fun GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
 
-  fun _CxxThrowException = _CxxThrowException(exception_object : Void*, throw_info : Void*) : NoReturn
+  fun _CxxThrowException(exception_object : Void*, throw_info : Void*) : NoReturn
 end
 
 module WindowsExt
diff --git a/src/winerror.cr b/src/winerror.cr
index c107dab01845..00a6ddd39fd9 100644
--- a/src/winerror.cr
+++ b/src/winerror.cr
@@ -2,12 +2,12 @@ class WinError < Errno
   # NOTE: `get_last_error` must be called BEFORE an instance of this class
   # is malloced as it would change the "last error" to SUCCESS
   def self.new(message)
-    new(message, LibC._GetLastError)
+    new(message, LibC.GetLastError)
   end
 
   def initialize(message, code)
     buffer = uninitialized UInt8[256]
-    size = LibC._FormatMessageA(LibC::FORMAT_MESSAGE_FROM_SYSTEM, nil, code, 0, buffer, buffer.size, nil)
+    size = LibC.FormatMessageA(LibC::FORMAT_MESSAGE_FROM_SYSTEM, nil, code, 0, buffer, buffer.size, nil)
     details = String.new(buffer.to_unsafe, size).strip
     super("#{message}: [WinError #{code}, #{details}]", winerror_to_errno(code))
   end

From 00a62324841a91e7e09da9c222715176b19955f7 Mon Sep 17 00:00:00 2001
From: Evgenii Guryanov <whats.eternal@gmail.com>
Date: Fri, 8 Sep 2017 00:47:03 +0300
Subject: [PATCH 14/14] Revert "fun can start with with an uppercase letter"

This reverts commit f416f6c4814a45ab93e5f881dfdd380a47983f36.

revert the previous commit
---
 src/lib_c/x86_64-windows-msvc/c/winapi.cr | 92 +++++++++++------------
 src/winerror.cr                           |  4 +-
 2 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/src/lib_c/x86_64-windows-msvc/c/winapi.cr b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
index bda7cfea4077..5be837139bfa 100644
--- a/src/lib_c/x86_64-windows-msvc/c/winapi.cr
+++ b/src/lib_c/x86_64-windows-msvc/c/winapi.cr
@@ -33,7 +33,7 @@ lib LibC
   INVALID_HANDLE_VALUE = Pointer(Void).new((-1).to_u64)
   INFINITY             = 0xFFFFFFFF_u32
 
-  fun DuplicateHandle(source_process : Handle, source : Handle, target_process : Handle, target : Handle*, desired_access : DWord, inherit_handle : Bool, options : DWord) : Bool
+  fun _DuplicateHandle = DuplicateHandle(source_process : Handle, source : Handle, target_process : Handle, target : Handle*, desired_access : DWord, inherit_handle : Bool, options : DWord) : Bool
 
   # member names are not original otherwise they would be really confusing
   struct OVERLAPPED
@@ -49,18 +49,18 @@ lib LibC
     bInheritHandle : BOOL
   end
 
-  fun GetStdHandle(std_handle : DWord) : Handle
-  fun GetFileType(file : Handle) : DWord
-  fun CreateFileA(filename : UInt8*, access : DWord, sharemode : DWord, security_attributes : SECURITY_ATTRIBUTES*, creation : DWord, flags : DWord, template : Handle) : Handle
-  fun ReadFile(file : Handle, buffer : UInt8*, size : DWord, read : DWord*, overlapped : OVERLAPPED*) : Bool
-  fun WriteFile(file : Handle, buffer : UInt8*, size : DWord, written : DWord*, overlapped : OVERLAPPED*) : Bool
-  fun CloseHandle(file : Handle) : Bool
+  fun _GetStdHandle = GetStdHandle(std_handle : DWord) : Handle
+  fun _GetFileType = GetFileType(file : Handle) : DWord
+  fun _CreateFileA = CreateFileA(filename : UInt8*, access : DWord, sharemode : DWord, security_attributes : SECURITY_ATTRIBUTES*, creation : DWord, flags : DWord, template : Handle) : Handle
+  fun _ReadFile = ReadFile(file : Handle, buffer : UInt8*, size : DWord, read : DWord*, overlapped : OVERLAPPED*) : Bool
+  fun _WriteFile = WriteFile(file : Handle, buffer : UInt8*, size : DWord, written : DWord*, overlapped : OVERLAPPED*) : Bool
+  fun _CloseHandle = CloseHandle(file : Handle) : Bool
 
-  fun GetCurrentDirectoryA(size : DWord, buffer : UInt8*) : DWord
-  fun SetCurrentDirectoryA(path : UInt8*) : BOOL
-  fun CreateDirectoryA(path : UInt8*, security_attribute : Void*) : BOOL
-  fun RemoveDirectoryA(path : UInt8*) : BOOL
-  fun GetTempPathA(len : DWord, buffer : UInt8*) : DWord
+  fun _GetCurrentDirectoryA = GetCurrentDirectoryA(size : DWord, buffer : UInt8*) : DWord
+  fun _SetCurrentDirectoryA = SetCurrentDirectoryA(path : UInt8*) : BOOL
+  fun _CreateDirectoryA = CreateDirectoryA(path : UInt8*, security_attribute : Void*) : BOOL
+  fun _RemoveDirectoryA = RemoveDirectoryA(path : UInt8*) : BOOL
+  fun _GetTempPathA = GetTempPathA(len : DWord, buffer : UInt8*) : DWord
 
   MAX_PATH = 260
 
@@ -98,40 +98,40 @@ lib LibC
   FILE_END                 = 2_i32
   INVALID_SET_FILE_POINTER = (-1).to_u32
 
-  fun FindFirstFileA(fileName : UInt8*, filedata : WIN32_FIND_DATA_A*) : Handle
-  fun FindNextFileA(file : Handle, filedata : WIN32_FIND_DATA_A*) : BOOL
-  fun FindClose(file : Handle) : BOOL
-  fun GetFileAttributesA(filename : UInt8*) : DWord
-  fun GetFileSize(file : Handle, fileSizeHigh : DWord*) : DWord
-  fun GetFileSizeEx(file : Handle, size : UInt64*) : BOOL
-  fun GetFileTime(file : Handle, lpCreationTime : FILETIME*, lpLastAccessTime : FILETIME*, lpLastWriteTime : FILETIME*) : BOOL
-  fun SetFilePointer(file : Handle, lDistanceToMove : Long, lpDistanceToMoveHigh : Long*, dwMoveMethod : DWord) : DWord
-  fun SetEndOfFile(file : Handle) : BOOL
-  fun DeleteFileA(filename : UInt8*) : BOOL
-  fun GetFullPathNameA(filename : UInt8*, buf_len : DWord, lpBuffer : UInt8*, lpFilePart : UInt8**) : DWord
+  fun _FindFirstFileA = FindFirstFileA(fileName : UInt8*, filedata : WIN32_FIND_DATA_A*) : Handle
+  fun _FindNextFileA = FindNextFileA(file : Handle, filedata : WIN32_FIND_DATA_A*) : BOOL
+  fun _FindClose = FindClose(file : Handle) : BOOL
+  fun _GetFileAttributesA = GetFileAttributesA(filename : UInt8*) : DWord
+  fun _GetFileSize = GetFileSize(file : Handle, fileSizeHigh : DWord*) : DWord
+  fun _GetFileSizeEx = GetFileSizeEx(file : Handle, size : UInt64*) : BOOL
+  fun _GetFileTime = GetFileTime(file : Handle, lpCreationTime : FILETIME*, lpLastAccessTime : FILETIME*, lpLastWriteTime : FILETIME*) : BOOL
+  fun _SetFilePointer = SetFilePointer(file : Handle, lDistanceToMove : Long, lpDistanceToMoveHigh : Long*, dwMoveMethod : DWord) : DWord
+  fun _SetEndOfFile = SetEndOfFile(file : Handle) : BOOL
+  fun _DeleteFileA = DeleteFileA(filename : UInt8*) : BOOL
+  fun _GetFullPathNameA = GetFullPathNameA(filename : UInt8*, buf_len : DWord, lpBuffer : UInt8*, lpFilePart : UInt8**) : DWord
   # from Shlwapi.lib
   # fun _PathFileExistsA = PathFileExistsA(path : UInt8*) : BOOL
-  fun MoveFileA(lpExistingFileName : UInt8*, lpNewFileName : UInt8*) : BOOL
-  fun GetTempFileNameA(path_name : UInt8*, prefix : UInt8*, unique_num : UInt32, temp_file_name : UInt8*) : UInt32
+  fun _MoveFileA = MoveFileA(lpExistingFileName : UInt8*, lpNewFileName : UInt8*) : BOOL
+  fun _GetTempFileNameA = GetTempFileNameA(path_name : UInt8*, prefix : UInt8*, unique_num : UInt32, temp_file_name : UInt8*) : UInt32
 
-  fun CreateIoCompletionPort(file : Handle, port : Handle, data : Void*, threads : DWord) : Handle
-  fun GetQueuedCompletionStatus(port : Handle, bytes_transfered : DWord*, data : Void**, entry : OVERLAPPED**, timeout_millis : DWord) : Bool
-  fun PostQueuedCompletionStatus(port : Handle, bytes_transfered : DWord, data : Void*, entry : OVERLAPPED*) : Bool
-  fun GetCurrentProcess : Handle
-  fun GetCurrentThread : Handle
-  fun CreatePipe(hReadPipe : UInt64*, hWritePipe : UInt64*, lpPipeAttributes : SECURITY_ATTRIBUTES*, nSize : DWord) : BOOL
-  fun PeekNamedPipe(hNamedPipe : Handle, lpBuffer : UInt8*, nBufferSize : DWord, lpBytesRead : DWord*, lpTotalBytesAvail : DWord*, lpBytesLeftThisMessage : DWord*) : BOOL
+  fun _CreateIoCompletionPort = CreateIoCompletionPort(file : Handle, port : Handle, data : Void*, threads : DWord) : Handle
+  fun _GetQueuedCompletionStatus = GetQueuedCompletionStatus(port : Handle, bytes_transfered : DWord*, data : Void**, entry : OVERLAPPED**, timeout_millis : DWord) : Bool
+  fun _PostQueuedCompletionStatus = PostQueuedCompletionStatus(port : Handle, bytes_transfered : DWord, data : Void*, entry : OVERLAPPED*) : Bool
+  fun _GetCurrentProcess = GetCurrentProcess : Handle
+  fun _GetCurrentThread = GetCurrentThread : Handle
+  fun _CreatePipe = CreatePipe(hReadPipe : UInt64*, hWritePipe : UInt64*, lpPipeAttributes : SECURITY_ATTRIBUTES*, nSize : DWord) : BOOL
+  fun _PeekNamedPipe = PeekNamedPipe(hNamedPipe : Handle, lpBuffer : UInt8*, nBufferSize : DWord, lpBytesRead : DWord*, lpTotalBytesAvail : DWord*, lpBytesLeftThisMessage : DWord*) : BOOL
 
   WAIT_ABANDONED = 0x00000080_u32
   WAIT_OBJECT_0  = 0x00000000_u32
   WAIT_TIMEOUT   = 0x00000102_u32
   WAIT_FAILED    = 0xFFFFFFFF_u32
 
-  fun WaitForSingleObject(handle : Handle, timeout_millis : DWord) : DWord
-  fun CreateTimerQueueTimer(timer_handle : Handle*, queue_handle : Handle, callback : (Void*, Bool) ->, data : Void*, due : DWord, period : DWord, flags : SizeT) : Bool
-  fun DeleteTimerQueueTimer(queue_handle : Handle, timer_handle : Handle, completion_event : Handle) : Bool
-  fun GetLastError : DWord
-  fun SetLastError(code : DWord) : Void
+  fun _WaitForSingleObject = WaitForSingleObject(handle : Handle, timeout_millis : DWord) : DWord
+  fun _CreateTimerQueueTimer = CreateTimerQueueTimer(timer_handle : Handle*, queue_handle : Handle, callback : (Void*, Bool) ->, data : Void*, due : DWord, period : DWord, flags : SizeT) : Bool
+  fun _DeleteTimerQueueTimer = DeleteTimerQueueTimer(queue_handle : Handle, timer_handle : Handle, completion_event : Handle) : Bool
+  fun _GetLastError = GetLastError : DWord
+  fun _SetLastError = SetLastError(code : DWord) : Void
 
   # STARTUPINFOA.deFlags
   STARTF_USESTDHANDLES = 0x00000100_u32
@@ -168,12 +168,12 @@ lib LibC
     dwThreadId : DWord
   end
 
-  fun CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*,
+  fun _CreateProcessA = CreateProcessA(lpApplicationName : UInt8*, lpCommandLine : UInt8*,
                                        lpProcessAttributes : SECURITY_ATTRIBUTES*, lpThreadAttributes : SECURITY_ATTRIBUTES*, bInheritHandles : BOOL,
                                        dwCreationFlags : DWord, lpEnvironment : Void*, lpCurrentDirectory : UInt8*,
                                        lpStartupInfo : STARTUPINFOA*, lpProcessInformation : PROCESS_INFORMATION*) : BOOL
-  fun KillProcess(hProcess : Handle, uExitCode : UInt32) : BOOL
-  fun GetExitCodeProcess(hProcess : Handle, lpExitCode : DWord*) : BOOL
+  fun _KillProcess = KillProcess(hProcess : Handle, uExitCode : UInt32) : BOOL
+  fun _GetExitCodeProcess = GetExitCodeProcess(hProcess : Handle, lpExitCode : DWord*) : BOOL
 
   FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x00000100_u32
   FORMAT_MESSAGE_IGNORE_INSERTS  = 0x00000200_u32
@@ -182,7 +182,7 @@ lib LibC
   FORMAT_MESSAGE_FROM_SYSTEM     = 0x00001000_u32
   FORMAT_MESSAGE_ARGUMENT_ARRAY  = 0x00002000_u32
 
-  fun FormatMessageA(flags : DWord, source : Void*, msg : DWord, lang : DWord, buffer : UInt8*, size : DWord, args : Void*) : DWord
+  fun _FormatMessageA = FormatMessageA(flags : DWord, source : Void*, msg : DWord, lang : DWord, buffer : UInt8*, size : DWord, args : Void*) : DWord
 
   WSASYSNOTREADY     = 10091
   WSAVERNOTSUPPORTED = 10092
@@ -201,7 +201,7 @@ lib LibC
     lpVendorInfo : UInt8*
   end
 
-  fun WSAStartup(version : Int16, data : WSAData*) : Int32
+  fun _WSAStartup = WSAStartup(version : Int16, data : WSAData*) : Int32
 
   # source https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx
   struct SystemTime
@@ -226,12 +226,12 @@ lib LibC
     _DaylightBias : Long
   end
 
-  fun GetTimeZoneInformation(tz_info : TIME_ZONE_INFORMATION*) : DWord
-  fun GetSystemTimeAsFileTime(time : FILETIME*)
+  fun _GetTimeZoneInformation = GetTimeZoneInformation(tz_info : TIME_ZONE_INFORMATION*) : DWord
+  fun _GetSystemTimeAsFileTime = GetSystemTimeAsFileTime(time : FILETIME*)
 
-  fun GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
+  fun _GetComputerNameA = GetComputerNameA(buffer : UInt8*, size : DWord*) : BOOL
 
-  fun _CxxThrowException(exception_object : Void*, throw_info : Void*) : NoReturn
+  fun _CxxThrowException = _CxxThrowException(exception_object : Void*, throw_info : Void*) : NoReturn
 end
 
 module WindowsExt
diff --git a/src/winerror.cr b/src/winerror.cr
index 00a6ddd39fd9..c107dab01845 100644
--- a/src/winerror.cr
+++ b/src/winerror.cr
@@ -2,12 +2,12 @@ class WinError < Errno
   # NOTE: `get_last_error` must be called BEFORE an instance of this class
   # is malloced as it would change the "last error" to SUCCESS
   def self.new(message)
-    new(message, LibC.GetLastError)
+    new(message, LibC._GetLastError)
   end
 
   def initialize(message, code)
     buffer = uninitialized UInt8[256]
-    size = LibC.FormatMessageA(LibC::FORMAT_MESSAGE_FROM_SYSTEM, nil, code, 0, buffer, buffer.size, nil)
+    size = LibC._FormatMessageA(LibC::FORMAT_MESSAGE_FROM_SYSTEM, nil, code, 0, buffer, buffer.size, nil)
     details = String.new(buffer.to_unsafe, size).strip
     super("#{message}: [WinError #{code}, #{details}]", winerror_to_errno(code))
   end