]> gitweb.factorcode.org Git - factor.git/commitdiff
move windows error handling to windows.errors and update usages.
authorDoug Coleman <doug.coleman@gmail.com>
Thu, 30 Apr 2009 14:36:25 +0000 (09:36 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Thu, 30 Apr 2009 14:36:25 +0000 (09:36 -0500)
19 files changed:
basis/calendar/windows/windows.factor
basis/io/backend/windows/nt/nt.factor
basis/io/backend/windows/windows.factor
basis/io/files/windows/nt/nt.factor
basis/io/monitors/windows/nt/nt.factor
basis/random/windows/windows.factor
basis/ui/backend/windows/windows.factor
basis/windows/advapi32/advapi32.factor
basis/windows/errors/errors-tests.factor [new file with mode: 0755]
basis/windows/errors/errors.factor
basis/windows/fonts/fonts.factor
basis/windows/kernel32/kernel32.factor
basis/windows/ole32/ole32.factor
basis/windows/shell32/shell32.factor
basis/windows/time/time.factor
basis/windows/types/types.factor
basis/windows/uniscribe/uniscribe.factor
basis/windows/windows.factor
basis/windows/winsock/winsock.factor

index 508cbb0a49596f6839bd65b60751097e85e1b443..caab530a23fb798437af2d216567a0e99e1ee36f 100644 (file)
@@ -1,5 +1,5 @@
-USING: calendar namespaces alien.c-types system windows
-windows.kernel32 kernel math combinators ;
+USING: calendar namespaces alien.c-types system
+windows.kernel32 kernel math combinators windows.errors ;
 IN: calendar.windows
 
 M: windows gmt-offset ( -- hours minutes seconds )
index 6f283ac1bb9bfdd0b229b5d3706e3b5926b18b02..46f8be22f0f1c42ab4ceada6bc763606e89cbc9e 100755 (executable)
@@ -46,7 +46,7 @@ M: winnt add-completion ( win32-handle -- )
             { [ dup integer? ] [ ] }
             { [ dup array? ] [
                 first dup eof?
-                [ drop 0 ] [ (win32-error-string) throw ] if
+                [ drop 0 ] [ win32-error-string throw ] if
             ] }
         } cond
     ] with-timeout ;
@@ -105,7 +105,7 @@ M: winnt seek-handle ( n seek-type handle -- )
         GetLastError {
             { [ dup expected-io-error? ] [ drop f ] }
             { [ dup eof? ] [ drop t ] }
-            [ (win32-error-string) throw ]
+            [ win32-error-string throw ]
         } cond
     ] [ f ] if ;
 
index 6ecbc49f2af249a6f701d6f0c0434444bcc013cb..9f5c00cc5f4ace2b91d31555b10747a8a7b633e9 100755 (executable)
@@ -1,10 +1,10 @@
 ! Copyright (C) 2004, 2008 Mackenzie Straight, Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien alien.c-types arrays destructors io io.backend
-io.buffers io.files io.ports io.binary io.timeouts
-windows.errors strings kernel math namespaces sequences windows
-windows.kernel32 windows.shell32 windows.types windows.winsock
-splitting continuations math.bitwise system accessors ;
+io.buffers io.files io.ports io.binary io.timeouts system
+windows.errors strings kernel math namespaces sequences
+windows.errors windows.kernel32 windows.shell32 windows.types
+windows.winsock splitting continuations math.bitwise accessors ;
 IN: io.backend.windows
 
 : set-inherit ( handle ? -- )
@@ -51,4 +51,4 @@ HOOK: add-completion io-backend ( port -- )
 : default-security-attributes ( -- obj )
     "SECURITY_ATTRIBUTES" <c-object>
     "SECURITY_ATTRIBUTES" heap-size
-    over set-SECURITY_ATTRIBUTES-nLength ;
\ No newline at end of file
+    over set-SECURITY_ATTRIBUTES-nLength ;
index afc81c784c70944f6a2ac1da034604fab0a64197..32424a37a3976db4fe8be260787e082c4e617bd9 100755 (executable)
@@ -4,7 +4,8 @@ io.backend.windows io.files.windows io.encodings.utf16n windows
 windows.kernel32 kernel libc math threads system environment
 alien.c-types alien.arrays alien.strings sequences combinators
 combinators.short-circuit ascii splitting alien strings assocs
-namespaces make accessors tr windows.time windows.shell32 ;
+namespaces make accessors tr windows.time windows.shell32
+windows.errors ;
 IN: io.files.windows.nt
 
 M: winnt cwd
index d2408a3dd1810c92b9f9ad7319ff0f3cc35c2bc0..bec249c04c70bf7adfa9a5b0c1170ff0bf903504 100755 (executable)
@@ -6,7 +6,7 @@ hashtables sorting arrays combinators math.bitwise strings
 system accessors threads splitting io.backend io.backend.windows
 io.backend.windows.nt io.files.windows.nt io.monitors io.ports
 io.buffers io.files io.timeouts io.encodings.string
-io.encodings.utf16n io windows windows.kernel32 windows.types
+io.encodings.utf16n io windows.errors windows.kernel32 windows.types
 io.pathnames ;
 IN: io.monitors.windows.nt
 
index a4cf74e1df1940b18c88d6116b72b5355e84fb3c..488deef41fe71b5e8ece12067d3e779de5df7f4f 100644 (file)
@@ -1,6 +1,6 @@
 USING: accessors alien.c-types byte-arrays continuations
-kernel windows windows.advapi32 init namespaces random
-destructors locals ;
+kernel windows.advapi32 init namespaces random destructors
+locals windows.errors ;
 IN: random.windows
 
 TUPLE: windows-rng provider type ;
index e405efb540d16f21ee39849e804d2c7c2a6690d8..42b80af8a92299d52c2cf7c292ef1ef55eceb6b3 100755 (executable)
@@ -6,15 +6,19 @@ ui.gadgets ui.gadgets.private ui.backend ui.clipboards
 ui.gadgets.worlds ui.gestures ui.event-loop io kernel math
 math.vectors namespaces make sequences strings vectors words
 windows.kernel32 windows.gdi32 windows.user32 windows.opengl32
-windows.messages windows.types windows.offscreen windows.nt windows
+windows.messages windows.types windows.offscreen windows.nt
 threads libc combinators fry combinators.short-circuit continuations
 command-line shuffle opengl ui.render ascii math.bitwise locals
 accessors math.rectangles math.order ascii calendar
-io.encodings.utf16n ;
+io.encodings.utf16n windows.errors ;
 IN: ui.backend.windows
 
 SINGLETON: windows-ui-backend
 
+: lo-word ( wparam -- lo ) <short> *short ; inline
+: hi-word ( wparam -- hi ) -16 shift lo-word ; inline
+: >lo-hi ( WORD -- array ) [ lo-word ] [ hi-word ] bi 2array ;
+
 : crlf>lf ( str -- str' )
     CHAR: \r swap remove ;
 
@@ -286,8 +290,6 @@ SYMBOL: nc-buttons
     message>button nc-buttons get
     swap [ push ] [ delete ] if ;
 
-: >lo-hi ( WORD -- array ) [ lo-word ] [ hi-word ] bi 2array ;
-
 : mouse-wheel ( wParam -- array ) >lo-hi [ sgn neg ] map ;
 
 : mouse-event>gesture ( uMsg -- button )
index 5b62f5479593d782352633acc034b5d322bcb13b..f715af378b651dbbcc8d666da96ffc73cb605bd3 100644 (file)
@@ -350,35 +350,46 @@ CONSTANT: TOKEN_ADJUST_DEFAULT         HEX: 0080
         TOKEN_ADJUST_DEFAULT
     } flags ; foldable
 
-CONSTANT: HKEY_CLASSES_ROOT       1
-CONSTANT: HKEY_CURRENT_CONFIG     2
-CONSTANT: HKEY_CURRENT_USER       3
-CONSTANT: HKEY_LOCAL_MACHINE      4
-CONSTANT: HKEY_USERS              5
-
-CONSTANT: KEY_ALL_ACCESS          HEX: 0001
-CONSTANT: KEY_CREATE_LINK         HEX: 0002
+CONSTANT: HKEY_CLASSES_ROOT        HEX: 80000000
+CONSTANT: HKEY_CURRENT_USER        HEX: 80000001
+CONSTANT: HKEY_LOCAL_MACHINE       HEX: 80000002
+CONSTANT: HKEY_USERS               HEX: 80000003
+CONSTANT: HKEY_PERFORMANCE_DATA    HEX: 80000004
+CONSTANT: HKEY_CURRENT_CONFIG      HEX: 80000005
+CONSTANT: HKEY_DYN_DATA            HEX: 80000006
+CONSTANT: HKEY_PERFORMANCE_TEXT    HEX: 80000050
+CONSTANT: HKEY_PERFORMANCE_NLSTEXT HEX: 80000060
+
+CONSTANT: KEY_QUERY_VALUE         HEX: 0001
+CONSTANT: KEY_SET_VALUE           HEX: 0002
 CONSTANT: KEY_CREATE_SUB_KEY      HEX: 0004
 CONSTANT: KEY_ENUMERATE_SUB_KEYS  HEX: 0008
-CONSTANT: KEY_EXECUTE             HEX: 0010
-CONSTANT: KEY_NOTIFY              HEX: 0020
-CONSTANT: KEY_QUERY_VALUE         HEX: 0040
-CONSTANT: KEY_READ                HEX: 0080
-CONSTANT: KEY_SET_VALUE           HEX: 0100
-CONSTANT: KEY_WOW64_64KEY         HEX: 0200
-CONSTANT: KEY_WOW64_32KEY         HEX: 0400
-CONSTANT: KEY_WRITE               HEX: 0800
-
-CONSTANT: REG_BINARY              1
-CONSTANT: REG_DWORD               2
-CONSTANT: REG_EXPAND_SZ           3
-CONSTANT: REG_MULTI_SZ            4
-CONSTANT: REG_QWORD               5
-CONSTANT: REG_SZ                  6
+CONSTANT: KEY_NOTIFY              HEX: 0010
+CONSTANT: KEY_CREATE_LINK         HEX: 0020
+CONSTANT: KEY_READ                HEX: 20019
+CONSTANT: KEY_WOW64_32KEY         HEX: 0200
+CONSTANT: KEY_WOW64_64KEY         HEX: 0100
+CONSTANT: KEY_WRITE               HEX: 20006
+CONSTANT: KEY_EXECUTE             KEY_READ
+CONSTANT: KEY_ALL_ACCESS          HEX: F003F
+
+CONSTANT: REG_NONE                         0
+CONSTANT: REG_SZ                           1
+CONSTANT: REG_EXPAND_SZ                    2
+CONSTANT: REG_BINARY                       3
+CONSTANT: REG_DWORD                        4
+CONSTANT: REG_DWORD_LITTLE_ENDIAN          4
+CONSTANT: REG_DWORD_BIG_ENDIAN             5
+CONSTANT: REG_LINK                         6
+CONSTANT: REG_MULTI_SZ                     7
+CONSTANT: REG_RESOURCE_LIST                8
+CONSTANT: REG_FULL_RESOURCE_DESCRIPTOR     9
+CONSTANT: REG_RESOURCE_REQUIREMENTS_LIST  10
+CONSTANT: REG_QWORD                       11
+CONSTANT: REG_QWORD_LITTLE_ENDIAN         11
 
 TYPEDEF: DWORD REGSAM
 
-
 ! : I_ScGetCurrentGroupStateW ;
 ! : A_SHAFinal ;
 ! : A_SHAInit ;
@@ -874,7 +885,7 @@ FUNCTION: BOOL OpenThreadToken ( HANDLE ThreadHandle, DWORD DesiredAccess, BOOL
 ! : ReadEncryptedFileRaw ;
 ! : ReadEventLogA ;
 ! : ReadEventLogW ;
-! : RegCloseKey ;
+FUNCTION: LONG RegCloseKey ( HKEY hKey ) ;
 ! : RegConnectRegistryA ;
 ! : RegConnectRegistryW ;
 ! : RegCreateKeyA ;
@@ -900,17 +911,33 @@ FUNCTION: LONG RegCreateKeyExW ( HKEY hKey, LPCTSTR lpSubKey, DWORD Reserved, LP
 FUNCTION: LONG RegOpenCurrentUser ( REGSAM samDesired, PHKEY phkResult ) ;
 ! : RegOpenKeyA ;
 ! : RegOpenKeyExA ;
-! : RegOpenKeyExW ;
+FUNCTION: LONG RegOpenKeyExW ( HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ) ;
+ALIAS: RegOpenKeyEx RegOpenKeyExW
 ! : RegOpenKeyW ;
 ! : RegOpenUserClassesRoot ;
 ! : RegOverridePredefKey ;
 ! : RegQueryInfoKeyA ;
-! : RegQueryInfoKeyW ;
+FUNCTION: LONG RegQueryInfoKeyW (
+        HKEY hKey,
+        LPTSTR lpClass,
+        LPDWORD lpcClass,
+        LPDWORD lpReserved,
+        LPDWORD lpcSubKeys,
+        LPDWORD lpcMaxSubKeyLen,
+        LPDWORD lpcMaxClassLen,
+        LPDWORD lpcValues,
+        LPDWORD lpcMaxValueNameLen,
+        LPDWORD lpcMaxValueLen,
+        LPDWORD lpcbSecurityDescriptor,
+        PFILETIME lpftLastWriteTime
+    ) ;
+ALIAS: RegQueryInfoKey RegQueryInfoKeyW
 ! : RegQueryMultipleValuesA ;
 ! : RegQueryMultipleValuesW ;
 ! : RegQueryValueA ;
 ! : RegQueryValueExA ;
-FUNCTION: LONG RegQueryValueExW ( HKEY hKey, LPCTSTR lpValueName, LPWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ) ;
+FUNCTION: LONG RegQueryValueExW ( HKEY hKey, LPCTSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ) ;
+ALIAS: RegQueryValueEx RegQueryValueExW
 ! : RegQueryValueW ;
 ! : RegReplaceKeyA ;
 ! : RegReplaceKeyW ;
diff --git a/basis/windows/errors/errors-tests.factor b/basis/windows/errors/errors-tests.factor
new file mode 100755 (executable)
index 0000000..96edb8a
--- /dev/null
@@ -0,0 +1,6 @@
+! Copyright (C) 2009 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: tools.test windows.errors strings ;
+IN: windows.errors.tests
+
+[ t ] [ 0 n>win32-error-string string? ] unit-test
index 56bba768de9e39c8d65f223e7a0722e0148c2f48..34fd019889fdcdda7937bd8d854b14e98a3f78d8 100644 (file)
@@ -1,9 +1,753 @@
-IN: windows.errors 
-
-CONSTANT: ERROR_SUCCESS 0
-CONSTANT: ERROR_NO_MORE_FILES 18
-CONSTANT: ERROR_HANDLE_EOF 38
-CONSTANT: ERROR_BROKEN_PIPE 109
-CONSTANT: ERROR_ENVVAR_NOT_FOUND 203
-CONSTANT: ERROR_IO_INCOMPLETE 996
-CONSTANT: ERROR_IO_PENDING 997
+USING: alien.c-types kernel locals math math.bitwise
+windows.kernel32 sequences byte-arrays unicode.categories
+io.encodings.string io.encodings.utf16n alien.strings ;
+IN: windows.errors
+
+CONSTANT: ERROR_SUCCESS                               0
+CONSTANT: ERROR_INVALID_FUNCTION                      1
+CONSTANT: ERROR_FILE_NOT_FOUND                        2
+CONSTANT: ERROR_PATH_NOT_FOUND                        3
+CONSTANT: ERROR_TOO_MANY_OPEN_FILES                   4
+CONSTANT: ERROR_ACCESS_DENIED                         5
+CONSTANT: ERROR_INVALID_HANDLE                        6
+CONSTANT: ERROR_ARENA_TRASHED                         7
+CONSTANT: ERROR_NOT_ENOUGH_MEMORY                     8
+CONSTANT: ERROR_INVALID_BLOCK                         9
+CONSTANT: ERROR_BAD_ENVIRONMENT                      10
+CONSTANT: ERROR_BAD_FORMAT                           11
+CONSTANT: ERROR_INVALID_ACCESS                       12
+CONSTANT: ERROR_INVALID_DATA                         13
+CONSTANT: ERROR_OUTOFMEMORY                          14
+CONSTANT: ERROR_INVALID_DRIVE                        15
+CONSTANT: ERROR_CURRENT_DIRECTORY                    16
+CONSTANT: ERROR_NOT_SAME_DEVICE                      17
+CONSTANT: ERROR_NO_MORE_FILES                        18
+CONSTANT: ERROR_WRITE_PROTECT                        19
+CONSTANT: ERROR_BAD_UNIT                             20
+CONSTANT: ERROR_NOT_READY                            21
+CONSTANT: ERROR_BAD_COMMAND                          22
+CONSTANT: ERROR_CRC                                  23
+CONSTANT: ERROR_BAD_LENGTH                           24
+CONSTANT: ERROR_SEEK                                 25
+CONSTANT: ERROR_NOT_DOS_DISK                         26
+CONSTANT: ERROR_SECTOR_NOT_FOUND                     27
+CONSTANT: ERROR_OUT_OF_PAPER                         28
+CONSTANT: ERROR_WRITE_FAULT                          29
+CONSTANT: ERROR_READ_FAULT                           30
+CONSTANT: ERROR_GEN_FAILURE                          31
+CONSTANT: ERROR_SHARING_VIOLATION                    32
+CONSTANT: ERROR_LOCK_VIOLATION                       33
+CONSTANT: ERROR_WRONG_DISK                           34
+CONSTANT: ERROR_SHARING_BUFFER_EXCEEDED              36
+CONSTANT: ERROR_HANDLE_EOF                           38
+CONSTANT: ERROR_HANDLE_DISK_FULL                     39
+CONSTANT: ERROR_NOT_SUPPORTED                        50
+CONSTANT: ERROR_REM_NOT_LIST                         51
+CONSTANT: ERROR_DUP_NAME                             52
+CONSTANT: ERROR_BAD_NETPATH                          53
+CONSTANT: ERROR_NETWORK_BUSY                         54
+CONSTANT: ERROR_DEV_NOT_EXIST                        55
+CONSTANT: ERROR_TOO_MANY_CMDS                        56
+CONSTANT: ERROR_ADAP_HDW_ERR                         57
+CONSTANT: ERROR_BAD_NET_RESP                         58
+CONSTANT: ERROR_UNEXP_NET_ERR                        59
+CONSTANT: ERROR_BAD_REM_ADAP                         60
+CONSTANT: ERROR_PRINTQ_FULL                          61
+CONSTANT: ERROR_NO_SPOOL_SPACE                       62
+CONSTANT: ERROR_PRINT_CANCELLED                      63
+CONSTANT: ERROR_NETNAME_DELETED                      64
+CONSTANT: ERROR_NETWORK_ACCESS_DENIED                65
+CONSTANT: ERROR_BAD_DEV_TYPE                         66
+CONSTANT: ERROR_BAD_NET_NAME                         67
+CONSTANT: ERROR_TOO_MANY_NAMES                       68
+CONSTANT: ERROR_TOO_MANY_SESS                        69
+CONSTANT: ERROR_SHARING_PAUSED                       70
+CONSTANT: ERROR_REQ_NOT_ACCEP                        71
+CONSTANT: ERROR_REDIR_PAUSED                         72
+CONSTANT: ERROR_FILE_EXISTS                          80
+CONSTANT: ERROR_CANNOT_MAKE                          82
+CONSTANT: ERROR_FAIL_I24                             83
+CONSTANT: ERROR_OUT_OF_STRUCTURES                    84
+CONSTANT: ERROR_ALREADY_ASSIGNED                     85
+CONSTANT: ERROR_INVALID_PASSWORD                     86
+CONSTANT: ERROR_INVALID_PARAMETER                    87
+CONSTANT: ERROR_NET_WRITE_FAULT                      88
+CONSTANT: ERROR_NO_PROC_SLOTS                        89
+CONSTANT: ERROR_TOO_MANY_SEMAPHORES                 100
+CONSTANT: ERROR_EXCL_SEM_ALREADY_OWNED              101
+CONSTANT: ERROR_SEM_IS_SET                          102
+CONSTANT: ERROR_TOO_MANY_SEM_REQUESTS               103
+CONSTANT: ERROR_INVALID_AT_INTERRUPT_TIME           104
+CONSTANT: ERROR_SEM_OWNER_DIED                      105
+CONSTANT: ERROR_SEM_USER_LIMIT                      106
+CONSTANT: ERROR_DISK_CHANGE                         107
+CONSTANT: ERROR_DRIVE_LOCKED                        108
+CONSTANT: ERROR_BROKEN_PIPE                         109
+CONSTANT: ERROR_OPEN_FAILED                         110
+CONSTANT: ERROR_BUFFER_OVERFLOW                     111
+CONSTANT: ERROR_DISK_FULL                           112
+CONSTANT: ERROR_NO_MORE_SEARCH_HANDLES              113
+CONSTANT: ERROR_INVALID_TARGET_HANDLE               114
+CONSTANT: ERROR_INVALID_CATEGORY                    117
+CONSTANT: ERROR_INVALID_VERIFY_SWITCH               118
+CONSTANT: ERROR_BAD_DRIVER_LEVEL                    119
+CONSTANT: ERROR_CALL_NOT_IMPLEMENTED                120
+CONSTANT: ERROR_SEM_TIMEOUT                         121
+CONSTANT: ERROR_INSUFFICIENT_BUFFER                 122
+CONSTANT: ERROR_INVALID_NAME                        123
+CONSTANT: ERROR_INVALID_LEVEL                       124
+CONSTANT: ERROR_NO_VOLUME_LABEL                     125
+CONSTANT: ERROR_MOD_NOT_FOUND                       126
+CONSTANT: ERROR_PROC_NOT_FOUND                      127
+CONSTANT: ERROR_WAIT_NO_CHILDREN                    128
+CONSTANT: ERROR_CHILD_NOT_COMPLETE                  129
+CONSTANT: ERROR_DIRECT_ACCESS_HANDLE                130
+CONSTANT: ERROR_NEGATIVE_SEEK                       131
+CONSTANT: ERROR_SEEK_ON_DEVICE                      132
+CONSTANT: ERROR_IS_JOIN_TARGET                      133
+CONSTANT: ERROR_IS_JOINED                           134
+CONSTANT: ERROR_IS_SUBSTED                          135
+CONSTANT: ERROR_NOT_JOINED                          136
+CONSTANT: ERROR_NOT_SUBSTED                         137
+CONSTANT: ERROR_JOIN_TO_JOIN                        138
+CONSTANT: ERROR_SUBST_TO_SUBST                      139
+CONSTANT: ERROR_JOIN_TO_SUBST                       140
+CONSTANT: ERROR_SUBST_TO_JOIN                       141
+CONSTANT: ERROR_BUSY_DRIVE                          142
+CONSTANT: ERROR_SAME_DRIVE                          143
+CONSTANT: ERROR_DIR_NOT_ROOT                        144
+CONSTANT: ERROR_DIR_NOT_EMPTY                       145
+CONSTANT: ERROR_IS_SUBST_PATH                       146
+CONSTANT: ERROR_IS_JOIN_PATH                        147
+CONSTANT: ERROR_PATH_BUSY                           148
+CONSTANT: ERROR_IS_SUBST_TARGET                     149
+CONSTANT: ERROR_SYSTEM_TRACE                        150
+CONSTANT: ERROR_INVALID_EVENT_COUNT                 151
+CONSTANT: ERROR_TOO_MANY_MUXWAITERS                 152
+CONSTANT: ERROR_INVALID_LIST_FORMAT                 153
+CONSTANT: ERROR_LABEL_TOO_LONG                      154
+CONSTANT: ERROR_TOO_MANY_TCBS                       155
+CONSTANT: ERROR_SIGNAL_REFUSED                      156
+CONSTANT: ERROR_DISCARDED                           157
+CONSTANT: ERROR_NOT_LOCKED                          158
+CONSTANT: ERROR_BAD_THREADID_ADDR                   159
+CONSTANT: ERROR_BAD_ARGUMENTS                       160
+CONSTANT: ERROR_BAD_PATHNAME                        161
+CONSTANT: ERROR_SIGNAL_PENDING                      162
+CONSTANT: ERROR_MAX_THRDS_REACHED                   164
+CONSTANT: ERROR_LOCK_FAILED                         167
+CONSTANT: ERROR_BUSY                                170
+CONSTANT: ERROR_CANCEL_VIOLATION                    173
+CONSTANT: ERROR_ATOMIC_LOCKS_NOT_SUPPORTED          174
+CONSTANT: ERROR_INVALID_SEGMENT_NUMBER              180
+CONSTANT: ERROR_INVALID_ORDINAL                     182
+CONSTANT: ERROR_ALREADY_EXISTS                      183
+CONSTANT: ERROR_INVALID_FLAG_NUMBER                 186
+CONSTANT: ERROR_SEM_NOT_FOUND                       187
+CONSTANT: ERROR_INVALID_STARTING_CODESEG            188
+CONSTANT: ERROR_INVALID_STACKSEG                    189
+CONSTANT: ERROR_INVALID_MODULETYPE                  190
+CONSTANT: ERROR_INVALID_EXE_SIGNATURE               191
+CONSTANT: ERROR_EXE_MARKED_INVALID                  192
+CONSTANT: ERROR_BAD_EXE_FORMAT                      193
+CONSTANT: ERROR_ITERATED_DATA_EXCEEDS_64k           194
+CONSTANT: ERROR_INVALID_MINALLOCSIZE                195
+CONSTANT: ERROR_DYNLINK_FROM_INVALID_RING           196
+CONSTANT: ERROR_IOPL_NOT_ENABLED                    197
+CONSTANT: ERROR_INVALID_SEGDPL                      198
+CONSTANT: ERROR_AUTODATASEG_EXCEEDS_64k             199
+CONSTANT: ERROR_RING2SEG_MUST_BE_MOVABLE            200
+CONSTANT: ERROR_RELOC_CHAIN_XEEDS_SEGLIM            201
+CONSTANT: ERROR_INFLOOP_IN_RELOC_CHAIN              202
+CONSTANT: ERROR_ENVVAR_NOT_FOUND                    203
+CONSTANT: ERROR_NO_SIGNAL_SENT                      205
+CONSTANT: ERROR_FILENAME_EXCED_RANGE                206
+CONSTANT: ERROR_RING2_STACK_IN_USE                  207
+CONSTANT: ERROR_META_EXPANSION_TOO_LONG             208
+CONSTANT: ERROR_INVALID_SIGNAL_NUMBER               209
+CONSTANT: ERROR_THREAD_1_INACTIVE                   210
+CONSTANT: ERROR_LOCKED                              212
+CONSTANT: ERROR_TOO_MANY_MODULES                    214
+CONSTANT: ERROR_NESTING_NOT_ALLOWED                 215
+CONSTANT: ERROR_EXE_MACHINE_TYPE_MISMATCH           216
+CONSTANT: ERROR_BAD_PIPE                            230
+CONSTANT: ERROR_PIPE_BUSY                           231
+CONSTANT: ERROR_NO_DATA                             232
+CONSTANT: ERROR_PIPE_NOT_CONNECTED                  233
+CONSTANT: ERROR_MORE_DATA                           234
+CONSTANT: ERROR_VC_DISCONNECTED                     240
+CONSTANT: ERROR_INVALID_EA_NAME                     254
+CONSTANT: ERROR_EA_LIST_INCONSISTENT                255
+CONSTANT: ERROR_NO_MORE_ITEMS                       259
+CONSTANT: ERROR_CANNOT_COPY                         266
+CONSTANT: ERROR_DIRECTORY                           267
+CONSTANT: ERROR_EAS_DIDNT_FIT                       275
+CONSTANT: ERROR_EA_FILE_CORRUPT                     276
+CONSTANT: ERROR_EA_TABLE_FULL                       277
+CONSTANT: ERROR_INVALID_EA_HANDLE                   278
+CONSTANT: ERROR_EAS_NOT_SUPPORTED                   282
+CONSTANT: ERROR_NOT_OWNER                           288
+CONSTANT: ERROR_TOO_MANY_POSTS                      298
+CONSTANT: ERROR_PARTIAL_COPY                        299
+CONSTANT: ERROR_MR_MID_NOT_FOUND                    317
+CONSTANT: ERROR_INVALID_ADDRESS                     487
+CONSTANT: ERROR_ARITHMETIC_OVERFLOW                 534
+CONSTANT: ERROR_PIPE_CONNECTED                      535
+CONSTANT: ERROR_PIPE_LISTENING                      536
+CONSTANT: ERROR_EA_ACCESS_DENIED                    994
+CONSTANT: ERROR_OPERATION_ABORTED                   995
+CONSTANT: ERROR_IO_INCOMPLETE                       996
+CONSTANT: ERROR_IO_PENDING                          997
+CONSTANT: ERROR_NOACCESS                            998
+CONSTANT: ERROR_SWAPERROR                           999
+CONSTANT: ERROR_STACK_OVERFLOW                     1001
+CONSTANT: ERROR_INVALID_MESSAGE                    1002
+CONSTANT: ERROR_CAN_NOT_COMPLETE                   1003
+CONSTANT: ERROR_INVALID_FLAGS                      1004
+CONSTANT: ERROR_UNRECOGNIZED_VOLUME                1005
+CONSTANT: ERROR_FILE_INVALID                       1006
+CONSTANT: ERROR_FULLSCREEN_MODE                    1007
+CONSTANT: ERROR_NO_TOKEN                           1008
+CONSTANT: ERROR_BADDB                              1009
+CONSTANT: ERROR_BADKEY                             1010
+CONSTANT: ERROR_CANTOPEN                           1011
+CONSTANT: ERROR_CANTREAD                           1012
+CONSTANT: ERROR_CANTWRITE                          1013
+CONSTANT: ERROR_REGISTRY_RECOVERED                 1014
+CONSTANT: ERROR_REGISTRY_CORRUPT                   1015
+CONSTANT: ERROR_REGISTRY_IO_FAILED                 1016
+CONSTANT: ERROR_NOT_REGISTRY_FILE                  1017
+CONSTANT: ERROR_KEY_DELETED                        1018
+CONSTANT: ERROR_NO_LOG_SPACE                       1019
+CONSTANT: ERROR_KEY_HAS_CHILDREN                   1020
+CONSTANT: ERROR_CHILD_MUST_BE_VOLATILE             1021
+CONSTANT: ERROR_NOTIFY_ENUM_DIR                    1022
+CONSTANT: ERROR_DEPENDENT_SERVICES_RUNNING         1051
+CONSTANT: ERROR_INVALID_SERVICE_CONTROL            1052
+CONSTANT: ERROR_SERVICE_REQUEST_TIMEOUT            1053
+CONSTANT: ERROR_SERVICE_NO_THREAD                  1054
+CONSTANT: ERROR_SERVICE_DATABASE_LOCKED            1055
+CONSTANT: ERROR_SERVICE_ALREADY_RUNNING            1056
+CONSTANT: ERROR_INVALID_SERVICE_ACCOUNT            1057
+CONSTANT: ERROR_SERVICE_DISABLED                   1058
+CONSTANT: ERROR_CIRCULAR_DEPENDENCY                1059
+CONSTANT: ERROR_SERVICE_DOES_NOT_EXIST             1060
+CONSTANT: ERROR_SERVICE_CANNOT_ACCEPT_CTRL         1061
+CONSTANT: ERROR_SERVICE_NOT_ACTIVE                 1062
+CONSTANT: ERROR_FAILED_SERVICE_CONTROLLER_CONNECT  1063
+CONSTANT: ERROR_EXCEPTION_IN_SERVICE               1064
+CONSTANT: ERROR_DATABASE_DOES_NOT_EXIST            1065
+CONSTANT: ERROR_SERVICE_SPECIFIC_ERROR             1066
+CONSTANT: ERROR_PROCESS_ABORTED                    1067
+CONSTANT: ERROR_SERVICE_DEPENDENCY_FAIL            1068
+CONSTANT: ERROR_SERVICE_LOGON_FAILED               1069
+CONSTANT: ERROR_SERVICE_START_HANG                 1070
+CONSTANT: ERROR_INVALID_SERVICE_LOCK               1071
+CONSTANT: ERROR_SERVICE_MARKED_FOR_DELETE          1072
+CONSTANT: ERROR_SERVICE_EXISTS                     1073
+CONSTANT: ERROR_ALREADY_RUNNING_LKG                1074
+CONSTANT: ERROR_SERVICE_DEPENDENCY_DELETED         1075
+CONSTANT: ERROR_BOOT_ALREADY_ACCEPTED              1076
+CONSTANT: ERROR_SERVICE_NEVER_STARTED              1077
+CONSTANT: ERROR_DUPLICATE_SERVICE_NAME             1078
+CONSTANT: ERROR_DIFFERENT_SERVICE_ACCOUNT          1079
+CONSTANT: ERROR_END_OF_MEDIA                       1100
+CONSTANT: ERROR_FILEMARK_DETECTED                  1101
+CONSTANT: ERROR_BEGINNING_OF_MEDIA                 1102
+CONSTANT: ERROR_SETMARK_DETECTED                   1103
+CONSTANT: ERROR_NO_DATA_DETECTED                   1104
+CONSTANT: ERROR_PARTITION_FAILURE                  1105
+CONSTANT: ERROR_INVALID_BLOCK_LENGTH               1106
+CONSTANT: ERROR_DEVICE_NOT_PARTITIONED             1107
+CONSTANT: ERROR_UNABLE_TO_LOCK_MEDIA               1108
+CONSTANT: ERROR_UNABLE_TO_UNLOAD_MEDIA             1109
+CONSTANT: ERROR_MEDIA_CHANGED                      1110
+CONSTANT: ERROR_BUS_RESET                          1111
+CONSTANT: ERROR_NO_MEDIA_IN_DRIVE                  1112
+CONSTANT: ERROR_NO_UNICODE_TRANSLATION             1113
+CONSTANT: ERROR_DLL_INIT_FAILED                    1114
+CONSTANT: ERROR_SHUTDOWN_IN_PROGRESS               1115
+CONSTANT: ERROR_NO_SHUTDOWN_IN_PROGRESS            1116
+CONSTANT: ERROR_IO_DEVICE                          1117
+CONSTANT: ERROR_SERIAL_NO_DEVICE                   1118
+CONSTANT: ERROR_IRQ_BUSY                           1119
+CONSTANT: ERROR_MORE_WRITES                        1120
+CONSTANT: ERROR_COUNTER_TIMEOUT                    1121
+CONSTANT: ERROR_FLOPPY_ID_MARK_NOT_FOUND           1122
+CONSTANT: ERROR_FLOPPY_WRONG_CYLINDER              1123
+CONSTANT: ERROR_FLOPPY_UNKNOWN_ERROR               1124
+CONSTANT: ERROR_FLOPPY_BAD_REGISTERS               1125
+CONSTANT: ERROR_DISK_RECALIBRATE_FAILED            1126
+CONSTANT: ERROR_DISK_OPERATION_FAILED              1127
+CONSTANT: ERROR_DISK_RESET_FAILED                  1128
+CONSTANT: ERROR_EOM_OVERFLOW                       1129
+CONSTANT: ERROR_NOT_ENOUGH_SERVER_MEMORY           1130
+CONSTANT: ERROR_POSSIBLE_DEADLOCK                  1131
+CONSTANT: ERROR_MAPPED_ALIGNMENT                   1132
+CONSTANT: ERROR_SET_POWER_STATE_VETOED             1140
+CONSTANT: ERROR_SET_POWER_STATE_FAILED             1141
+CONSTANT: ERROR_TOO_MANY_LINKS                     1142
+CONSTANT: ERROR_OLD_WIN_VERSION                    1150
+CONSTANT: ERROR_APP_WRONG_OS                       1151
+CONSTANT: ERROR_SINGLE_INSTANCE_APP                1152
+CONSTANT: ERROR_RMODE_APP                          1153
+CONSTANT: ERROR_INVALID_DLL                        1154
+CONSTANT: ERROR_NO_ASSOCIATION                     1155
+CONSTANT: ERROR_DDE_FAIL                           1156
+CONSTANT: ERROR_DLL_NOT_FOUND                      1157
+CONSTANT: ERROR_BAD_DEVICE                         1200
+CONSTANT: ERROR_CONNECTION_UNAVAIL                 1201
+CONSTANT: ERROR_DEVICE_ALREADY_REMEMBERED          1202
+CONSTANT: ERROR_NO_NET_OR_BAD_PATH                 1203
+CONSTANT: ERROR_BAD_PROVIDER                       1204
+CONSTANT: ERROR_CANNOT_OPEN_PROFILE                1205
+CONSTANT: ERROR_BAD_PROFILE                        1206
+CONSTANT: ERROR_NOT_CONTAINER                      1207
+CONSTANT: ERROR_EXTENDED_ERROR                     1208
+CONSTANT: ERROR_INVALID_GROUPNAME                  1209
+CONSTANT: ERROR_INVALID_COMPUTERNAME               1210
+CONSTANT: ERROR_INVALID_EVENTNAME                  1211
+CONSTANT: ERROR_INVALID_DOMAINNAME                 1212
+CONSTANT: ERROR_INVALID_SERVICENAME                1213
+CONSTANT: ERROR_INVALID_NETNAME                    1214
+CONSTANT: ERROR_INVALID_SHARENAME                  1215
+CONSTANT: ERROR_INVALID_PASSWORDNAME               1216
+CONSTANT: ERROR_INVALID_MESSAGENAME                1217
+CONSTANT: ERROR_INVALID_MESSAGEDEST                1218
+CONSTANT: ERROR_SESSION_CREDENTIAL_CONFLICT        1219
+CONSTANT: ERROR_REMOTE_SESSION_LIMIT_EXCEEDED      1220
+CONSTANT: ERROR_DUP_DOMAINNAME                     1221
+CONSTANT: ERROR_NO_NETWORK                         1222
+CONSTANT: ERROR_CANCELLED                          1223
+CONSTANT: ERROR_USER_MAPPED_FILE                   1224
+CONSTANT: ERROR_CONNECTION_REFUSED                 1225
+CONSTANT: ERROR_GRACEFUL_DISCONNECT                1226
+CONSTANT: ERROR_ADDRESS_ALREADY_ASSOCIATED         1227
+CONSTANT: ERROR_ADDRESS_NOT_ASSOCIATED             1228
+CONSTANT: ERROR_CONNECTION_INVALID                 1229
+CONSTANT: ERROR_CONNECTION_ACTIVE                  1230
+CONSTANT: ERROR_NETWORK_UNREACHABLE                1231
+CONSTANT: ERROR_HOST_UNREACHABLE                   1232
+CONSTANT: ERROR_PROTOCOL_UNREACHABLE               1233
+CONSTANT: ERROR_PORT_UNREACHABLE                   1234
+CONSTANT: ERROR_REQUEST_ABORTED                    1235
+CONSTANT: ERROR_CONNECTION_ABORTED                 1236
+CONSTANT: ERROR_RETRY                              1237
+CONSTANT: ERROR_CONNECTION_COUNT_LIMIT             1238
+CONSTANT: ERROR_LOGIN_TIME_RESTRICTION             1239
+CONSTANT: ERROR_LOGIN_WKSTA_RESTRICTION            1240
+CONSTANT: ERROR_INCORRECT_ADDRESS                  1241
+CONSTANT: ERROR_ALREADY_REGISTERED                 1242
+CONSTANT: ERROR_SERVICE_NOT_FOUND                  1243
+CONSTANT: ERROR_NOT_AUTHENTICATED                  1244
+CONSTANT: ERROR_NOT_LOGGED_ON                      1245
+CONSTANT: ERROR_CONTINUE                           1246
+CONSTANT: ERROR_ALREADY_INITIALIZED                1247
+CONSTANT: ERROR_NO_MORE_DEVICES                    1248
+CONSTANT: ERROR_NOT_ALL_ASSIGNED                   1300
+CONSTANT: ERROR_SOME_NOT_MAPPED                    1301
+CONSTANT: ERROR_NO_QUOTAS_FOR_ACCOUNT              1302
+CONSTANT: ERROR_LOCAL_USER_SESSION_KEY             1303
+CONSTANT: ERROR_NULL_LM_PASSWORD                   1304
+CONSTANT: ERROR_UNKNOWN_REVISION                   1305
+CONSTANT: ERROR_REVISION_MISMATCH                  1306
+CONSTANT: ERROR_INVALID_OWNER                      1307
+CONSTANT: ERROR_INVALID_PRIMARY_GROUP              1308
+CONSTANT: ERROR_NO_IMPERSONATION_TOKEN             1309
+CONSTANT: ERROR_CANT_DISABLE_MANDATORY             1310
+CONSTANT: ERROR_NO_LOGON_SERVERS                   1311
+CONSTANT: ERROR_NO_SUCH_LOGON_SESSION              1312
+CONSTANT: ERROR_NO_SUCH_PRIVILEGE                  1313
+CONSTANT: ERROR_PRIVILEGE_NOT_HELD                 1314
+CONSTANT: ERROR_INVALID_ACCOUNT_NAME               1315
+CONSTANT: ERROR_USER_EXISTS                        1316
+CONSTANT: ERROR_NO_SUCH_USER                       1317
+CONSTANT: ERROR_GROUP_EXISTS                       1318
+CONSTANT: ERROR_NO_SUCH_GROUP                      1319
+CONSTANT: ERROR_MEMBER_IN_GROUP                    1320
+CONSTANT: ERROR_MEMBER_NOT_IN_GROUP                1321
+CONSTANT: ERROR_LAST_ADMIN                         1322
+CONSTANT: ERROR_WRONG_PASSWORD                     1323
+CONSTANT: ERROR_ILL_FORMED_PASSWORD                1324
+CONSTANT: ERROR_PASSWORD_RESTRICTION               1325
+CONSTANT: ERROR_LOGON_FAILURE                      1326
+CONSTANT: ERROR_ACCOUNT_RESTRICTION                1327
+CONSTANT: ERROR_INVALID_LOGON_HOURS                1328
+CONSTANT: ERROR_INVALID_WORKSTATION                1329
+CONSTANT: ERROR_PASSWORD_EXPIRED                   1330
+CONSTANT: ERROR_ACCOUNT_DISABLED                   1331
+CONSTANT: ERROR_NONE_MAPPED                        1332
+CONSTANT: ERROR_TOO_MANY_LUIDS_REQUESTED           1333
+CONSTANT: ERROR_LUIDS_EXHAUSTED                    1334
+CONSTANT: ERROR_INVALID_SUB_AUTHORITY              1335
+CONSTANT: ERROR_INVALID_ACL                        1336
+CONSTANT: ERROR_INVALID_SID                        1337
+CONSTANT: ERROR_INVALID_SECURITY_DESCR             1338
+CONSTANT: ERROR_BAD_INHERITANCE_ACL                1340
+CONSTANT: ERROR_SERVER_DISABLED                    1341
+CONSTANT: ERROR_SERVER_NOT_DISABLED                1342
+CONSTANT: ERROR_INVALID_ID_AUTHORITY               1343
+CONSTANT: ERROR_ALLOTTED_SPACE_EXCEEDED            1344
+CONSTANT: ERROR_INVALID_GROUP_ATTRIBUTES           1345
+CONSTANT: ERROR_BAD_IMPERSONATION_LEVEL            1346
+CONSTANT: ERROR_CANT_OPEN_ANONYMOUS                1347
+CONSTANT: ERROR_BAD_VALIDATION_CLASS               1348
+CONSTANT: ERROR_BAD_TOKEN_TYPE                     1349
+CONSTANT: ERROR_NO_SECURITY_ON_OBJECT              1350
+CONSTANT: ERROR_CANT_ACCESS_DOMAIN_INFO            1351
+CONSTANT: ERROR_INVALID_SERVER_STATE               1352
+CONSTANT: ERROR_INVALID_DOMAIN_STATE               1353
+CONSTANT: ERROR_INVALID_DOMAIN_ROLE                1354
+CONSTANT: ERROR_NO_SUCH_DOMAIN                     1355
+CONSTANT: ERROR_DOMAIN_EXISTS                      1356
+CONSTANT: ERROR_DOMAIN_LIMIT_EXCEEDED              1357
+CONSTANT: ERROR_INTERNAL_DB_CORRUPTION             1358
+CONSTANT: ERROR_INTERNAL_ERROR                     1359
+CONSTANT: ERROR_GENERIC_NOT_MAPPED                 1360
+CONSTANT: ERROR_BAD_DESCRIPTOR_FORMAT              1361
+CONSTANT: ERROR_NOT_LOGON_PROCESS                  1362
+CONSTANT: ERROR_LOGON_SESSION_EXISTS               1363
+CONSTANT: ERROR_NO_SUCH_PACKAGE                    1364
+CONSTANT: ERROR_BAD_LOGON_SESSION_STATE            1365
+CONSTANT: ERROR_LOGON_SESSION_COLLISION            1366
+CONSTANT: ERROR_INVALID_LOGON_TYPE                 1367
+CONSTANT: ERROR_CANNOT_IMPERSONATE                 1368
+CONSTANT: ERROR_RXACT_INVALID_STATE                1369
+CONSTANT: ERROR_RXACT_COMMIT_FAILURE               1370
+CONSTANT: ERROR_SPECIAL_ACCOUNT                    1371
+CONSTANT: ERROR_SPECIAL_GROUP                      1372
+CONSTANT: ERROR_SPECIAL_USER                       1373
+CONSTANT: ERROR_MEMBERS_PRIMARY_GROUP              1374
+CONSTANT: ERROR_TOKEN_ALREADY_IN_USE               1375
+CONSTANT: ERROR_NO_SUCH_ALIAS                      1376
+CONSTANT: ERROR_MEMBER_NOT_IN_ALIAS                1377
+CONSTANT: ERROR_MEMBER_IN_ALIAS                    1378
+CONSTANT: ERROR_ALIAS_EXISTS                       1379
+CONSTANT: ERROR_LOGON_NOT_GRANTED                  1380
+CONSTANT: ERROR_TOO_MANY_SECRETS                   1381
+CONSTANT: ERROR_SECRET_TOO_LONG                    1382
+CONSTANT: ERROR_INTERNAL_DB_ERROR                  1383
+CONSTANT: ERROR_TOO_MANY_CONTEXT_IDS               1384
+CONSTANT: ERROR_LOGON_TYPE_NOT_GRANTED             1385
+CONSTANT: ERROR_NT_CROSS_ENCRYPTION_REQUIRED       1386
+CONSTANT: ERROR_NO_SUCH_MEMBER                     1387
+CONSTANT: ERROR_INVALID_MEMBER                     1388
+CONSTANT: ERROR_TOO_MANY_SIDS                      1389
+CONSTANT: ERROR_LM_CROSS_ENCRYPTION_REQUIRED       1390
+CONSTANT: ERROR_NO_INHERITANCE                     1391
+CONSTANT: ERROR_FILE_CORRUPT                       1392
+CONSTANT: ERROR_DISK_CORRUPT                       1393
+CONSTANT: ERROR_NO_USER_SESSION_KEY                1394
+CONSTANT: ERROR_LICENSE_QUOTA_EXCEEDED             1395
+CONSTANT: ERROR_INVALID_WINDOW_HANDLE              1400
+CONSTANT: ERROR_INVALID_MENU_HANDLE                1401
+CONSTANT: ERROR_INVALID_CURSOR_HANDLE              1402
+CONSTANT: ERROR_INVALID_ACCEL_HANDLE               1403
+CONSTANT: ERROR_INVALID_HOOK_HANDLE                1404
+CONSTANT: ERROR_INVALID_DWP_HANDLE                 1405
+CONSTANT: ERROR_TLW_WITH_WSCHILD                   1406
+CONSTANT: ERROR_CANNOT_FIND_WND_CLASS              1407
+CONSTANT: ERROR_WINDOW_OF_OTHER_THREAD             1408
+CONSTANT: ERROR_HOTKEY_ALREADY_REGISTERED          1409
+CONSTANT: ERROR_CLASS_ALREADY_EXISTS               1410
+CONSTANT: ERROR_CLASS_DOES_NOT_EXIST               1411
+CONSTANT: ERROR_CLASS_HAS_WINDOWS                  1412
+CONSTANT: ERROR_INVALID_INDEX                      1413
+CONSTANT: ERROR_INVALID_ICON_HANDLE                1414
+CONSTANT: ERROR_PRIVATE_DIALOG_INDEX               1415
+CONSTANT: ERROR_LISTBOX_ID_NOT_FOUND               1416
+CONSTANT: ERROR_NO_WILDCARD_CHARACTERS             1417
+CONSTANT: ERROR_CLIPBOARD_NOT_OPEN                 1418
+CONSTANT: ERROR_HOTKEY_NOT_REGISTERED              1419
+CONSTANT: ERROR_WINDOW_NOT_DIALOG                  1420
+CONSTANT: ERROR_CONTROL_ID_NOT_FOUND               1421
+CONSTANT: ERROR_INVALID_COMBOBOX_MESSAGE           1422
+CONSTANT: ERROR_WINDOW_NOT_COMBOBOX                1423
+CONSTANT: ERROR_INVALID_EDIT_HEIGHT                1424
+CONSTANT: ERROR_DC_NOT_FOUND                       1425
+CONSTANT: ERROR_INVALID_HOOK_FILTER                1426
+CONSTANT: ERROR_INVALID_FILTER_PROC                1427
+CONSTANT: ERROR_HOOK_NEEDS_HMOD                    1428
+CONSTANT: ERROR_GLOBAL_ONLY_HOOK                   1429
+CONSTANT: ERROR_JOURNAL_HOOK_SET                   1430
+CONSTANT: ERROR_HOOK_NOT_INSTALLED                 1431
+CONSTANT: ERROR_INVALID_LB_MESSAGE                 1432
+CONSTANT: ERROR_LB_WITHOUT_TABSTOPS                1434
+CONSTANT: ERROR_DESTROY_OBJECT_OF_OTHER_THREAD     1435
+CONSTANT: ERROR_CHILD_WINDOW_MENU                  1436
+CONSTANT: ERROR_NO_SYSTEM_MENU                     1437
+CONSTANT: ERROR_INVALID_MSGBOX_STYLE               1438
+CONSTANT: ERROR_INVALID_SPI_VALUE                  1439
+CONSTANT: ERROR_SCREEN_ALREADY_LOCKED              1440
+CONSTANT: ERROR_HWNDS_HAVE_DIFF_PARENT             1441
+CONSTANT: ERROR_NOT_CHILD_WINDOW                   1442
+CONSTANT: ERROR_INVALID_GW_COMMAND                 1443
+CONSTANT: ERROR_INVALID_THREAD_ID                  1444
+CONSTANT: ERROR_NON_MDICHILD_WINDOW                1445
+CONSTANT: ERROR_POPUP_ALREADY_ACTIVE               1446
+CONSTANT: ERROR_NO_SCROLLBARS                      1447
+CONSTANT: ERROR_INVALID_SCROLLBAR_RANGE            1448
+CONSTANT: ERROR_INVALID_SHOWWIN_COMMAND            1449
+CONSTANT: ERROR_NO_SYSTEM_RESOURCES                1450
+CONSTANT: ERROR_NONPAGED_SYSTEM_RESOURCES          1451
+CONSTANT: ERROR_PAGED_SYSTEM_RESOURCES             1452
+CONSTANT: ERROR_WORKING_SET_QUOTA                  1453
+CONSTANT: ERROR_PAGEFILE_QUOTA                     1454
+CONSTANT: ERROR_COMMITMENT_LIMIT                   1455
+CONSTANT: ERROR_MENU_ITEM_NOT_FOUND                1456
+CONSTANT: ERROR_INVALID_KEYBOARD_HANDLE            1457
+CONSTANT: ERROR_HOOK_TYPE_NOT_ALLOWED              1458
+CONSTANT: ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION 1459
+CONSTANT: ERROR_TIMEOUT                            1460
+CONSTANT: ERROR_EVENTLOG_FILE_CORRUPT              1500
+CONSTANT: ERROR_EVENTLOG_CANT_START                1501
+CONSTANT: ERROR_LOG_FILE_FULL                      1502
+CONSTANT: ERROR_EVENTLOG_FILE_CHANGED              1503
+CONSTANT: RPC_S_INVALID_STRING_BINDING             1700
+CONSTANT: RPC_S_WRONG_KIND_OF_BINDING              1701
+CONSTANT: RPC_S_INVALID_BINDING                    1702
+CONSTANT: RPC_S_PROTSEQ_NOT_SUPPORTED              1703
+CONSTANT: RPC_S_INVALID_RPC_PROTSEQ                1704
+CONSTANT: RPC_S_INVALID_STRING_UUID                1705
+CONSTANT: RPC_S_INVALID_ENDPOINT_FORMAT            1706
+CONSTANT: RPC_S_INVALID_NET_ADDR                   1707
+CONSTANT: RPC_S_NO_ENDPOINT_FOUND                  1708
+CONSTANT: RPC_S_INVALID_TIMEOUT                    1709
+CONSTANT: RPC_S_OBJECT_NOT_FOUND                   1710
+CONSTANT: RPC_S_ALREADY_REGISTERED                 1711
+CONSTANT: RPC_S_TYPE_ALREADY_REGISTERED            1712
+CONSTANT: RPC_S_ALREADY_LISTENING                  1713
+CONSTANT: RPC_S_NO_PROTSEQS_REGISTERED             1714
+CONSTANT: RPC_S_NOT_LISTENING                      1715
+CONSTANT: RPC_S_UNKNOWN_MGR_TYPE                   1716
+CONSTANT: RPC_S_UNKNOWN_IF                         1717
+CONSTANT: RPC_S_NO_BINDINGS                        1718
+CONSTANT: RPC_S_NO_PROTSEQS                        1719
+CONSTANT: RPC_S_CANT_CREATE_ENDPOINT               1720
+CONSTANT: RPC_S_OUT_OF_RESOURCES                   1721
+CONSTANT: RPC_S_SERVER_UNAVAILABLE                 1722
+CONSTANT: RPC_S_SERVER_TOO_BUSY                    1723
+CONSTANT: RPC_S_INVALID_NETWORK_OPTIONS            1724
+CONSTANT: RPC_S_NO_CALL_ACTIVE                     1725
+CONSTANT: RPC_S_CALL_FAILED                        1726
+CONSTANT: RPC_S_CALL_FAILED_DNE                    1727
+CONSTANT: RPC_S_PROTOCOL_ERROR                     1728
+CONSTANT: RPC_S_UNSUPPORTED_TRANS_SYN              1730
+CONSTANT: RPC_S_UNSUPPORTED_TYPE                   1732
+CONSTANT: RPC_S_INVALID_TAG                        1733
+CONSTANT: RPC_S_INVALID_BOUND                      1734
+CONSTANT: RPC_S_NO_ENTRY_NAME                      1735
+CONSTANT: RPC_S_INVALID_NAME_SYNTAX                1736
+CONSTANT: RPC_S_UNSUPPORTED_NAME_SYNTAX            1737
+CONSTANT: RPC_S_UUID_NO_ADDRESS                    1739
+CONSTANT: RPC_S_DUPLICATE_ENDPOINT                 1740
+CONSTANT: RPC_S_UNKNOWN_AUTHN_TYPE                 1741
+CONSTANT: RPC_S_MAX_CALLS_TOO_SMALL                1742
+CONSTANT: RPC_S_STRING_TOO_LONG                    1743
+CONSTANT: RPC_S_PROTSEQ_NOT_FOUND                  1744
+CONSTANT: RPC_S_PROCNUM_OUT_OF_RANGE               1745
+CONSTANT: RPC_S_BINDING_HAS_NO_AUTH                1746
+CONSTANT: RPC_S_UNKNOWN_AUTHN_SERVICE              1747
+CONSTANT: RPC_S_UNKNOWN_AUTHN_LEVEL                1748
+CONSTANT: RPC_S_INVALID_AUTH_IDENTITY              1749
+CONSTANT: RPC_S_UNKNOWN_AUTHZ_SERVICE              1750
+CONSTANT: EPT_S_INVALID_ENTRY                      1751
+CONSTANT: EPT_S_CANT_PERFORM_OP                    1752
+CONSTANT: EPT_S_NOT_REGISTERED                     1753
+CONSTANT: RPC_S_NOTHING_TO_EXPORT                  1754
+CONSTANT: RPC_S_INCOMPLETE_NAME                    1755
+CONSTANT: RPC_S_INVALID_VERS_OPTION                1756
+CONSTANT: RPC_S_NO_MORE_MEMBERS                    1757
+CONSTANT: RPC_S_NOT_ALL_OBJS_UNEXPORTED            1758
+CONSTANT: RPC_S_INTERFACE_NOT_FOUND                1759
+CONSTANT: RPC_S_ENTRY_ALREADY_EXISTS               1760
+CONSTANT: RPC_S_ENTRY_NOT_FOUND                    1761
+CONSTANT: RPC_S_NAME_SERVICE_UNAVAILABLE           1762
+CONSTANT: RPC_S_INVALID_NAF_ID                     1763
+CONSTANT: RPC_S_CANNOT_SUPPORT                     1764
+CONSTANT: RPC_S_NO_CONTEXT_AVAILABLE               1765
+CONSTANT: RPC_S_INTERNAL_ERROR                     1766
+CONSTANT: RPC_S_ZERO_DIVIDE                        1767
+CONSTANT: RPC_S_ADDRESS_ERROR                      1768
+CONSTANT: RPC_S_FP_DIV_ZERO                        1769
+CONSTANT: RPC_S_FP_UNDERFLOW                       1770
+CONSTANT: RPC_S_FP_OVERFLOW                        1771
+CONSTANT: RPC_X_NO_MORE_ENTRIES                    1772
+CONSTANT: RPC_X_SS_CHAR_TRANS_OPEN_FAIL            1773
+CONSTANT: RPC_X_SS_CHAR_TRANS_SHORT_FILE           1774
+CONSTANT: RPC_X_SS_IN_NULL_CONTEXT                 1775
+CONSTANT: RPC_X_SS_CONTEXT_DAMAGED                 1777
+CONSTANT: RPC_X_SS_HANDLES_MISMATCH                1778
+CONSTANT: RPC_X_SS_CANNOT_GET_CALL_HANDLE          1779
+CONSTANT: RPC_X_NULL_REF_POINTER                   1780
+CONSTANT: RPC_X_ENUM_VALUE_OUT_OF_RANGE            1781
+CONSTANT: RPC_X_BYTE_COUNT_TOO_SMALL               1782
+CONSTANT: RPC_X_BAD_STUB_DATA                      1783
+CONSTANT: ERROR_INVALID_USER_BUFFER                1784
+CONSTANT: ERROR_UNRECOGNIZED_MEDIA                 1785
+CONSTANT: ERROR_NO_TRUST_LSA_SECRET                1786
+CONSTANT: ERROR_NO_TRUST_SAM_ACCOUNT               1787
+CONSTANT: ERROR_TRUSTED_DOMAIN_FAILURE             1788
+CONSTANT: ERROR_TRUSTED_RELATIONSHIP_FAILURE       1789
+CONSTANT: ERROR_TRUST_FAILURE                      1790
+CONSTANT: RPC_S_CALL_IN_PROGRESS                   1791
+CONSTANT: ERROR_NETLOGON_NOT_STARTED               1792
+CONSTANT: ERROR_ACCOUNT_EXPIRED                    1793
+CONSTANT: ERROR_REDIRECTOR_HAS_OPEN_HANDLES        1794
+CONSTANT: ERROR_PRINTER_DRIVER_ALREADY_INSTALLED   1795
+CONSTANT: ERROR_UNKNOWN_PORT                       1796
+CONSTANT: ERROR_UNKNOWN_PRINTER_DRIVER             1797
+CONSTANT: ERROR_UNKNOWN_PRINTPROCESSOR             1798
+CONSTANT: ERROR_INVALID_SEPARATOR_FILE             1799
+CONSTANT: ERROR_INVALID_PRIORITY                   1800
+CONSTANT: ERROR_INVALID_PRINTER_NAME               1801
+CONSTANT: ERROR_PRINTER_ALREADY_EXISTS             1802
+CONSTANT: ERROR_INVALID_PRINTER_COMMAND            1803
+CONSTANT: ERROR_INVALID_DATATYPE                   1804
+CONSTANT: ERROR_INVALID_ENVIRONMENT                1805
+CONSTANT: RPC_S_NO_MORE_BINDINGS                   1806
+CONSTANT: ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT  1807
+CONSTANT: ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT  1808
+CONSTANT: ERROR_NOLOGON_SERVER_TRUST_ACCOUNT       1809
+CONSTANT: ERROR_DOMAIN_TRUST_INCONSISTENT          1810
+CONSTANT: ERROR_SERVER_HAS_OPEN_HANDLES            1811
+CONSTANT: ERROR_RESOURCE_DATA_NOT_FOUND            1812
+CONSTANT: ERROR_RESOURCE_TYPE_NOT_FOUND            1813
+CONSTANT: ERROR_RESOURCE_NAME_NOT_FOUND            1814
+CONSTANT: ERROR_RESOURCE_LANG_NOT_FOUND            1815
+CONSTANT: ERROR_NOT_ENOUGH_QUOTA                   1816
+CONSTANT: RPC_S_NO_INTERFACES                      1817
+CONSTANT: RPC_S_CALL_CANCELLED                     1818
+CONSTANT: RPC_S_BINDING_INCOMPLETE                 1819
+CONSTANT: RPC_S_COMM_FAILURE                       1820
+CONSTANT: RPC_S_UNSUPPORTED_AUTHN_LEVEL            1821
+CONSTANT: RPC_S_NO_PRINC_NAME                      1822
+CONSTANT: RPC_S_NOT_RPC_ERROR                      1823
+CONSTANT: RPC_S_UUID_LOCAL_ONLY                    1824
+CONSTANT: RPC_S_SEC_PKG_ERROR                      1825
+CONSTANT: RPC_S_NOT_CANCELLED                      1826
+CONSTANT: RPC_X_INVALID_ES_ACTION                  1827
+CONSTANT: RPC_X_WRONG_ES_VERSION                   1828
+CONSTANT: RPC_X_WRONG_STUB_VERSION                 1829
+CONSTANT: RPC_X_INVALID_PIPE_OBJECT                1830
+CONSTANT: RPC_X_INVALID_PIPE_OPERATION             1831
+CONSTANT: RPC_X_WRONG_PIPE_VERSION                 1832
+CONSTANT: RPC_S_GROUP_MEMBER_NOT_FOUND             1898
+CONSTANT: EPT_S_CANT_CREATE                        1899
+CONSTANT: RPC_S_INVALID_OBJECT                     1900
+CONSTANT: ERROR_INVALID_TIME                       1901
+CONSTANT: ERROR_INVALID_FORM_NAME                  1902
+CONSTANT: ERROR_INVALID_FORM_SIZE                  1903
+CONSTANT: ERROR_ALREADY_WAITING                    1904
+CONSTANT: ERROR_PRINTER_DELETED                    1905
+CONSTANT: ERROR_INVALID_PRINTER_STATE              1906
+CONSTANT: ERROR_PASSWORD_MUST_CHANGE               1907
+CONSTANT: ERROR_DOMAIN_CONTROLLER_NOT_FOUND        1908
+CONSTANT: ERROR_ACCOUNT_LOCKED_OUT                 1909
+CONSTANT: OR_INVALID_OXID                          1910
+CONSTANT: OR_INVALID_OID                           1911
+CONSTANT: OR_INVALID_SET                           1912
+CONSTANT: RPC_S_SEND_INCOMPLETE                    1913
+CONSTANT: ERROR_INVALID_PIXEL_FORMAT               2000
+CONSTANT: ERROR_BAD_DRIVER                         2001
+CONSTANT: ERROR_INVALID_WINDOW_STYLE               2002
+CONSTANT: ERROR_METAFILE_NOT_SUPPORTED             2003
+CONSTANT: ERROR_TRANSFORM_NOT_SUPPORTED            2004
+CONSTANT: ERROR_CLIPPING_NOT_SUPPORTED             2005
+CONSTANT: ERROR_BAD_USERNAME                       2202
+CONSTANT: ERROR_NOT_CONNECTED                      2250
+CONSTANT: ERROR_OPEN_FILES                         2401
+CONSTANT: ERROR_ACTIVE_CONNECTIONS                 2402
+CONSTANT: ERROR_DEVICE_IN_USE                      2404
+CONSTANT: ERROR_UNKNOWN_PRINT_MONITOR              3000
+CONSTANT: ERROR_PRINTER_DRIVER_IN_USE              3001
+CONSTANT: ERROR_SPOOL_FILE_NOT_FOUND               3002
+CONSTANT: ERROR_SPL_NO_STARTDOC                    3003
+CONSTANT: ERROR_SPL_NO_ADDJOB                      3004
+CONSTANT: ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED  3005
+CONSTANT: ERROR_PRINT_MONITOR_ALREADY_INSTALLED    3006
+CONSTANT: ERROR_INVALID_PRINT_MONITOR              3007
+CONSTANT: ERROR_PRINT_MONITOR_IN_USE               3008
+CONSTANT: ERROR_PRINTER_HAS_JOBS_QUEUED            3009
+CONSTANT: ERROR_SUCCESS_REBOOT_REQUIRED            3010
+CONSTANT: ERROR_SUCCESS_RESTART_REQUIRED           3011
+CONSTANT: ERROR_WINS_INTERNAL                      4000
+CONSTANT: ERROR_CAN_NOT_DEL_LOCAL_WINS             4001
+CONSTANT: ERROR_STATIC_INIT                        4002
+CONSTANT: ERROR_INC_BACKUP                         4003
+CONSTANT: ERROR_FULL_BACKUP                        4004
+CONSTANT: ERROR_REC_NON_EXISTENT                   4005
+CONSTANT: ERROR_RPL_NOT_ALLOWED                    4006
+CONSTANT: ERROR_NO_BROWSER_SERVERS_FOUND           6118
+
+CONSTANT: SUBLANG_NEUTRAL 0
+CONSTANT: LANG_NEUTRAL 0
+CONSTANT: SUBLANG_DEFAULT 1
+
+CONSTANT: FORMAT_MESSAGE_ALLOCATE_BUFFER  HEX: 00000100
+CONSTANT: FORMAT_MESSAGE_IGNORE_INSERTS   HEX: 00000200
+CONSTANT: FORMAT_MESSAGE_FROM_STRING      HEX: 00000400
+CONSTANT: FORMAT_MESSAGE_FROM_HMODULE     HEX: 00000800
+CONSTANT: FORMAT_MESSAGE_FROM_SYSTEM      HEX: 00001000
+CONSTANT: FORMAT_MESSAGE_ARGUMENT_ARRAY   HEX: 00002000
+CONSTANT: FORMAT_MESSAGE_MAX_WIDTH_MASK   HEX: 000000FF
+
+: make-lang-id ( lang1 lang2 -- n )
+    10 shift bitor ; inline
+
+ERROR: error-message-failed id ;
+:: n>win32-error-string ( id -- string )
+    {
+        FORMAT_MESSAGE_FROM_SYSTEM
+        FORMAT_MESSAGE_ARGUMENT_ARRAY
+    } flags
+    f
+    id
+    LANG_NEUTRAL SUBLANG_DEFAULT make-lang-id
+    32768 [ "TCHAR" <c-array> ] keep 
+    f pick [ FormatMessage 0 = [ id error-message-failed ] when ] dip
+    utf16n alien>string [ blank? ] trim ;
+
+: win32-error-string ( -- str )
+    GetLastError n>win32-error-string ;
+
+: (win32-error) ( n -- )
+    dup zero? [
+        drop
+    ] [
+        win32-error-string throw
+    ] if ;
+
+: win32-error ( -- )
+    GetLastError (win32-error) ;
+
+: win32-error=0/f ( n -- ) { 0 f } member? [ win32-error ] when ;
+: win32-error>0 ( n -- ) 0 > [ win32-error ] when ;
+: win32-error<0 ( n -- ) 0 < [ win32-error ] when ;
+: win32-error<>0 ( n -- ) zero? [ win32-error ] unless ;
+
+: invalid-handle? ( handle -- )
+    INVALID_HANDLE_VALUE = [
+        win32-error-string throw
+    ] when ;
+
+CONSTANT: expected-io-errors
+    {
+        ERROR_SUCCESS
+        ERROR_IO_INCOMPLETE
+        ERROR_IO_PENDING
+        WAIT_TIMEOUT
+    }
+
+: expected-io-error? ( error-code -- ? )
+    expected-io-errors member? ;
+
+: expected-io-error ( error-code -- )
+    dup expected-io-error? [
+        drop
+    ] [
+        win32-error-string throw
+    ] if ;
+
+: io-error ( return-value -- )
+    { 0 f } member? [ GetLastError expected-io-error ] when ;
index a034856b34a1dcc49f05b4c34e798bc3278cda5a..1753ff1ce1f13f656573b0a4ca385d9bfdeca95a 100755 (executable)
@@ -1,5 +1,5 @@
 USING: assocs memoize locals kernel accessors init fonts math\r
-combinators windows windows.types windows.gdi32 ;\r
+combinators windows.errors windows.types windows.gdi32 ;\r
 IN: windows.fonts\r
 \r
 : windows-font-name ( string -- string' )\r
index 1a513df1867728bba1d738437a5776606c576b7c..e654b68bdc034f33a3cd9dfe3795c27324e9cad7 100755 (executable)
@@ -1110,7 +1110,19 @@ FUNCTION: BOOL FindVolumeMountPointClose ( HANDLE hFindVolumeMountPoint ) ;
 ! FUNCTION: FoldStringA
 ! FUNCTION: FoldStringW
 ! FUNCTION: FormatMessageA
-! FUNCTION: FormatMessageW
+FUNCTION: DWORD FormatMessageW (
+        DWORD dwFlags,
+        LPCVOID lpSource,
+        DWORD dwMessageId,
+        DWORD dwLanguageId,
+        LPTSTR lpBuffer,
+        DWORD nSize,
+        void* Arguments
+    ) ;
+
+ALIAS: FormatMessage FormatMessageW
+
+
 FUNCTION: BOOL FreeConsole ( ) ;
 ! FUNCTION: FreeEnvironmentStringsA
 FUNCTION: BOOL FreeEnvironmentStringsW ( LPTCH lpszEnvironmentBlock ) ;
index e69a9213b0622b67c07de9acd5a3ffd6142b0afd..864700cb0fa6afe362c6490daac0bd45550b8f00 100755 (executable)
@@ -1,6 +1,6 @@
 USING: alien alien.syntax alien.c-types alien.strings math
-kernel sequences windows windows.types debugger io accessors
-math.order namespaces make math.parser windows.kernel32
+kernel sequences windows.errors windows.types debugger io
+accessors math.order namespaces make math.parser windows.kernel32
 combinators locals specialized-arrays.direct.uchar ;
 IN: windows.ole32
 
@@ -120,7 +120,7 @@ TUPLE: ole32-error error-code ;
 C: <ole32-error> ole32-error
 
 M: ole32-error error.
-    "COM method failed: " print error-code>> (win32-error-string) print ;
+    "COM method failed: " print error-code>> n>win32-error-string print ;
 
 : ole32-error ( hresult -- )
     dup succeeded? [ drop ] [ <ole32-error> throw ] if ;
index 7802ceb297c27b8b0dcba804494707fb570a9d54..016f5ab149dc2a5cb0fe810423969f5c440600cb 100644 (file)
@@ -2,8 +2,8 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien alien.c-types alien.strings alien.syntax
 combinators io.encodings.utf16n io.files io.pathnames kernel
-windows windows.com windows.com.syntax windows.user32
-windows.ole32 ;
+windows.errors windows.com windows.com.syntax windows.user32
+windows.ole32 windows ;
 IN: windows.shell32
 
 CONSTANT: CSIDL_DESKTOP HEX: 00
index e63834d3695801278f3a78f6234cf6ec564c59ab..71726a554a8fadb123bc988239e2fbf275a4ca84 100644 (file)
@@ -1,11 +1,11 @@
 ! Copyright (C) 2007 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.c-types kernel math windows windows.kernel32
-namespaces calendar math.bitwise ;
+USING: alien alien.c-types kernel math windows.errors
+windows.kernel32 namespaces calendar math.bitwise ;
 IN: windows.time
 
 : >64bit ( lo hi -- n )
-    32 shift bitor ;
+    32 shift bitor ; inline
 
 : windows-1601 ( -- timestamp )
     1601 1 1 0 0 0 instant <timestamp> ;
index 20bae06f30d82fb872b9291c1ae81659bc6c2bf3..062196c3f88183d72f01d3a34f57986717c4bad9 100755 (executable)
@@ -100,7 +100,7 @@ TYPEDEF: HANDLE              HGDIOBJ
 TYPEDEF: HANDLE              HGLOBAL
 TYPEDEF: HANDLE              HHOOK
 TYPEDEF: HANDLE              HINSTANCE
-TYPEDEF: HANDLE              HKEY
+TYPEDEF: DWORD               HKEY
 TYPEDEF: HANDLE              HKL
 TYPEDEF: HANDLE              HLOCAL
 TYPEDEF: HANDLE              HMENU
index fb0c134b9a88bb5db99bf949e8a752420ad21224..feb0bef7a8ab7dd06c204a058107992f93250fd2 100755 (executable)
@@ -2,9 +2,9 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel assocs math sequences fry io.encodings.string
 io.encodings.utf16n accessors arrays combinators destructors
-cache namespaces init fonts alien.c-types windows windows.usp10
+cache namespaces init fonts alien.c-types windows.usp10
 windows.offscreen windows.gdi32 windows.ole32 windows.types
-windows.fonts opengl.textures locals ;
+windows.fonts opengl.textures locals windows.errors ;
 IN: windows.uniscribe
 
 TUPLE: script-string font string metrics ssa size image disposed ;
index 902b1bec8ddf0275a8424939f38e09a674998269..92ba8b638a4366af029cb25e0e2d0d4fff16da7e 100755 (executable)
@@ -1,61 +1,5 @@
 ! Copyright (C) 2005, 2006 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax alien.c-types alien.strings arrays
-combinators kernel math namespaces parser sequences
-windows.errors windows.types windows.kernel32 words
-io.encodings.utf16n ;
 IN: windows
 
-: lo-word ( wparam -- lo ) <short> *short ; inline
-: hi-word ( wparam -- hi ) -16 shift lo-word ; inline
 CONSTANT: MAX_UNICODE_PATH 32768
-
-! You must LocalFree the return value!
-FUNCTION: void* error_message ( DWORD id ) ;
-
-: (win32-error-string) ( n -- string )
-    error_message
-    dup utf16n alien>string
-    swap LocalFree drop ;
-
-: win32-error-string ( -- str )
-    GetLastError (win32-error-string) ;
-
-: (win32-error) ( n -- )
-    dup zero? [
-        drop
-    ] [
-        win32-error-string throw
-    ] if ;
-
-: win32-error ( -- )
-    GetLastError (win32-error) ;
-
-: win32-error=0/f ( n -- ) { 0 f } member? [ win32-error ] when ;
-: win32-error>0 ( n -- ) 0 > [ win32-error ] when ;
-: win32-error<0 ( n -- ) 0 < [ win32-error ] when ;
-: win32-error<>0 ( n -- ) zero? [ win32-error ] unless ;
-
-: invalid-handle? ( handle -- )
-    INVALID_HANDLE_VALUE = [
-        win32-error-string throw
-    ] when ;
-
-: expected-io-errors ( -- seq )
-    ERROR_SUCCESS
-    ERROR_IO_INCOMPLETE
-    ERROR_IO_PENDING
-    WAIT_TIMEOUT 4array ; foldable
-
-: expected-io-error? ( error-code -- ? )
-    expected-io-errors member? ;
-
-: expected-io-error ( error-code -- )
-    dup expected-io-error? [
-        drop
-    ] [
-        (win32-error-string) throw
-    ] if ;
-
-: io-error ( return-value -- )
-    { 0 f } member? [ GetLastError expected-io-error ] when ;
index 06df74cd4cff8ad768b686adb13e78cfb784758b..f0d32588f5d7278ed9c155bb58dcacd88a37fe6f 100755 (executable)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien alien.c-types alien.strings alien.syntax arrays
 byte-arrays kernel math sequences windows.types windows.kernel32
-windows.errors windows math.bitwise io.encodings.utf16n ;
+windows.errors math.bitwise io.encodings.utf16n ;
 IN: windows.winsock
 
 USE: libc
@@ -403,7 +403,7 @@ CONSTANT: SIO_GET_EXTENSION_FUNCTION_POINTER -939524090
 : (winsock-error-string) ( n -- str )
     ! #! WSAStartup returns the error code 'n' directly
     dup winsock-expected-error?
-    [ drop f ] [ error_message utf16n alien>string ] if ;
+    [ drop f ] [ n>win32-error-string ] if ;
 
 : winsock-error-string ( -- string/f )
     WSAGetLastError (winsock-error-string) ;