]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/windows/kernel32/kernel32.factor
use radix literals
[factor.git] / basis / windows / kernel32 / kernel32.factor
old mode 100755 (executable)
new mode 100644 (file)
index 075b021..8cb4110
@@ -1,21 +1,21 @@
 ! Copyright (C) 2005, 2006 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax kernel windows.types multiline
-classes.struct ;
+USING: alien alien.c-types alien.syntax kernel windows.types
+math multiline classes.struct ;
 IN: windows.kernel32
 
 CONSTANT: MAX_PATH 260
 
-CONSTANT: GHND          HEX: 40
+CONSTANT: GHND          0x40
 CONSTANT: GMEM_FIXED          0
 CONSTANT: GMEM_MOVEABLE       2
-CONSTANT: GMEM_ZEROINIT HEX: 40
-CONSTANT: GPTR          HEX: 40
+CONSTANT: GMEM_ZEROINIT 0x40
+CONSTANT: GPTR          0x40
 
-CONSTANT: GENERIC_READ    HEX: 80000000
-CONSTANT: GENERIC_WRITE   HEX: 40000000
-CONSTANT: GENERIC_EXECUTE HEX: 20000000
-CONSTANT: GENERIC_ALL     HEX: 10000000
+CONSTANT: GENERIC_READ    0x80000000
+CONSTANT: GENERIC_WRITE   0x40000000
+CONSTANT: GENERIC_EXECUTE 0x20000000
+CONSTANT: GENERIC_ALL     0x10000000
 
 CONSTANT: CREATE_NEW        1
 CONSTANT: CREATE_ALWAYS     2
@@ -23,66 +23,66 @@ CONSTANT: OPEN_EXISTING     3
 CONSTANT: OPEN_ALWAYS       4
 CONSTANT: TRUNCATE_EXISTING 5
               
-CONSTANT: FILE_LIST_DIRECTORY       HEX: 00000001
-CONSTANT: FILE_READ_DAT             HEX: 00000001
-CONSTANT: FILE_ADD_FILE             HEX: 00000002
-CONSTANT: FILE_WRITE_DATA           HEX: 00000002
-CONSTANT: FILE_ADD_SUBDIRECTORY     HEX: 00000004
-CONSTANT: FILE_APPEND_DATA          HEX: 00000004
-CONSTANT: FILE_CREATE_PIPE_INSTANCE HEX: 00000004
-CONSTANT: FILE_READ_EA              HEX: 00000008
-CONSTANT: FILE_READ_PROPERTIES      HEX: 00000008
-CONSTANT: FILE_WRITE_EA             HEX: 00000010
-CONSTANT: FILE_WRITE_PROPERTIES     HEX: 00000010
-CONSTANT: FILE_EXECUTE              HEX: 00000020
-CONSTANT: FILE_TRAVERSE             HEX: 00000020
-CONSTANT: FILE_DELETE_CHILD         HEX: 00000040
-CONSTANT: FILE_READ_ATTRIBUTES      HEX: 00000080
-CONSTANT: FILE_WRITE_ATTRIBUTES     HEX: 00000100
+CONSTANT: FILE_LIST_DIRECTORY       0x00000001
+CONSTANT: FILE_READ_DAT             0x00000001
+CONSTANT: FILE_ADD_FILE             0x00000002
+CONSTANT: FILE_WRITE_DATA           0x00000002
+CONSTANT: FILE_ADD_SUBDIRECTORY     0x00000004
+CONSTANT: FILE_APPEND_DATA          0x00000004
+CONSTANT: FILE_CREATE_PIPE_INSTANCE 0x00000004
+CONSTANT: FILE_READ_EA              0x00000008
+CONSTANT: FILE_READ_PROPERTIES      0x00000008
+CONSTANT: FILE_WRITE_EA             0x00000010
+CONSTANT: FILE_WRITE_PROPERTIES     0x00000010
+CONSTANT: FILE_EXECUTE              0x00000020
+CONSTANT: FILE_TRAVERSE             0x00000020
+CONSTANT: FILE_DELETE_CHILD         0x00000040
+CONSTANT: FILE_READ_ATTRIBUTES      0x00000080
+CONSTANT: FILE_WRITE_ATTRIBUTES     0x00000100
 
 CONSTANT: FILE_SHARE_READ        1
 CONSTANT: FILE_SHARE_WRITE       2
 CONSTANT: FILE_SHARE_DELETE      4
 CONSTANT: FILE_SHARE_VALID_FLAGS 7
 
-CONSTANT: FILE_FLAG_WRITE_THROUGH       HEX: 80000000
-CONSTANT: FILE_FLAG_OVERLAPPED          HEX: 40000000
-CONSTANT: FILE_FLAG_NO_BUFFERING        HEX: 20000000
-CONSTANT: FILE_FLAG_RANDOM_ACCESS       HEX: 10000000
-CONSTANT: FILE_FLAG_SEQUENTIAL_SCAN     HEX: 08000000
-CONSTANT: FILE_FLAG_DELETE_ON_CLOSE     HEX: 04000000
-CONSTANT: FILE_FLAG_BACKUP_SEMANTICS    HEX: 02000000
-CONSTANT: FILE_FLAG_POSIX_SEMANTICS     HEX: 01000000
-CONSTANT: FILE_FLAG_OPEN_REPARSE_POINT  HEX: 00200000
-CONSTANT: FILE_FLAG_OPEN_NO_RECALL      HEX: 00100000
-CONSTANT: FILE_FLAG_FIRST_PIPE_INSTANCE HEX: 00080000
-
-CONSTANT: FILE_ATTRIBUTE_READONLY            HEX: 00000001
-CONSTANT: FILE_ATTRIBUTE_HIDDEN              HEX: 00000002
-CONSTANT: FILE_ATTRIBUTE_SYSTEM              HEX: 00000004
-CONSTANT: FILE_ATTRIBUTE_DIRECTORY           HEX: 00000010
-CONSTANT: FILE_ATTRIBUTE_ARCHIVE             HEX: 00000020
-CONSTANT: FILE_ATTRIBUTE_DEVICE              HEX: 00000040
-CONSTANT: FILE_ATTRIBUTE_NORMAL              HEX: 00000080
-CONSTANT: FILE_ATTRIBUTE_TEMPORARY           HEX: 00000100
-CONSTANT: FILE_ATTRIBUTE_SPARSE_FILE         HEX: 00000200
-CONSTANT: FILE_ATTRIBUTE_REPARSE_POINT       HEX: 00000400
-CONSTANT: FILE_ATTRIBUTE_COMPRESSED          HEX: 00000800
-CONSTANT: FILE_ATTRIBUTE_OFFLINE             HEX: 00001000
-CONSTANT: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED HEX: 00002000
-CONSTANT: FILE_ATTRIBUTE_ENCRYPTED           HEX: 00004000
-
-CONSTANT: FILE_NOTIFY_CHANGE_FILE        HEX: 001
-CONSTANT: FILE_NOTIFY_CHANGE_DIR_NAME    HEX: 002
-CONSTANT: FILE_NOTIFY_CHANGE_ATTRIBUTES  HEX: 004
-CONSTANT: FILE_NOTIFY_CHANGE_SIZE        HEX: 008
-CONSTANT: FILE_NOTIFY_CHANGE_LAST_WRITE  HEX: 010
-CONSTANT: FILE_NOTIFY_CHANGE_LAST_ACCESS HEX: 020
-CONSTANT: FILE_NOTIFY_CHANGE_CREATION    HEX: 040
-CONSTANT: FILE_NOTIFY_CHANGE_EA          HEX: 080
-CONSTANT: FILE_NOTIFY_CHANGE_SECURITY    HEX: 100
-CONSTANT: FILE_NOTIFY_CHANGE_FILE_NAME   HEX: 200
-CONSTANT: FILE_NOTIFY_CHANGE_ALL         HEX: 3ff
+CONSTANT: FILE_FLAG_WRITE_THROUGH       0x80000000
+CONSTANT: FILE_FLAG_OVERLAPPED          0x40000000
+CONSTANT: FILE_FLAG_NO_BUFFERING        0x20000000
+CONSTANT: FILE_FLAG_RANDOM_ACCESS       0x10000000
+CONSTANT: FILE_FLAG_SEQUENTIAL_SCAN     0x08000000
+CONSTANT: FILE_FLAG_DELETE_ON_CLOSE     0x04000000
+CONSTANT: FILE_FLAG_BACKUP_SEMANTICS    0x02000000
+CONSTANT: FILE_FLAG_POSIX_SEMANTICS     0x01000000
+CONSTANT: FILE_FLAG_OPEN_REPARSE_POINT  0x00200000
+CONSTANT: FILE_FLAG_OPEN_NO_RECALL      0x00100000
+CONSTANT: FILE_FLAG_FIRST_PIPE_INSTANCE 0x00080000
+
+CONSTANT: FILE_ATTRIBUTE_READONLY            0x00000001
+CONSTANT: FILE_ATTRIBUTE_HIDDEN              0x00000002
+CONSTANT: FILE_ATTRIBUTE_SYSTEM              0x00000004
+CONSTANT: FILE_ATTRIBUTE_DIRECTORY           0x00000010
+CONSTANT: FILE_ATTRIBUTE_ARCHIVE             0x00000020
+CONSTANT: FILE_ATTRIBUTE_DEVICE              0x00000040
+CONSTANT: FILE_ATTRIBUTE_NORMAL              0x00000080
+CONSTANT: FILE_ATTRIBUTE_TEMPORARY           0x00000100
+CONSTANT: FILE_ATTRIBUTE_SPARSE_FILE         0x00000200
+CONSTANT: FILE_ATTRIBUTE_REPARSE_POINT       0x00000400
+CONSTANT: FILE_ATTRIBUTE_COMPRESSED          0x00000800
+CONSTANT: FILE_ATTRIBUTE_OFFLINE             0x00001000
+CONSTANT: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
+CONSTANT: FILE_ATTRIBUTE_ENCRYPTED           0x00004000
+
+CONSTANT: FILE_NOTIFY_CHANGE_FILE        0x001
+CONSTANT: FILE_NOTIFY_CHANGE_DIR_NAME    0x002
+CONSTANT: FILE_NOTIFY_CHANGE_ATTRIBUTES  0x004
+CONSTANT: FILE_NOTIFY_CHANGE_SIZE        0x008
+CONSTANT: FILE_NOTIFY_CHANGE_LAST_WRITE  0x010
+CONSTANT: FILE_NOTIFY_CHANGE_LAST_ACCESS 0x020
+CONSTANT: FILE_NOTIFY_CHANGE_CREATION    0x040
+CONSTANT: FILE_NOTIFY_CHANGE_EA          0x080
+CONSTANT: FILE_NOTIFY_CHANGE_SECURITY    0x100
+CONSTANT: FILE_NOTIFY_CHANGE_FILE_NAME   0x200
+CONSTANT: FILE_NOTIFY_CHANGE_ALL         0x3ff
 
 CONSTANT: FILE_ACTION_ADDED 1
 CONSTANT: FILE_ACTION_REMOVED 2
@@ -90,6 +90,8 @@ CONSTANT: FILE_ACTION_MODIFIED 3
 CONSTANT: FILE_ACTION_RENAMED_OLD_NAME 4
 CONSTANT: FILE_ACTION_RENAMED_NEW_NAME 5
 
+CONSTANT: DONT_RESOLVE_DLL_REFERENCES 1
+
 STRUCT: FILE_NOTIFY_INFORMATION
     { NextEntryOffset DWORD }
     { Action DWORD }
@@ -103,8 +105,8 @@ CONSTANT: STD_OUTPUT_HANDLE -11
 CONSTANT: STD_ERROR_HANDLE  -12
 
 : INVALID_HANDLE_VALUE ( -- alien ) -1 <alien> ; inline
-CONSTANT: INVALID_FILE_SIZE HEX: FFFFFFFF
-CONSTANT: INVALID_SET_FILE_POINTER HEX: ffffffff
+CONSTANT: INVALID_FILE_SIZE 0xFFFFFFFF
+CONSTANT: INVALID_SET_FILE_POINTER 0xffffffff
 
 CONSTANT: FILE_BEGIN 0
 CONSTANT: FILE_CURRENT 1
@@ -127,19 +129,19 @@ CONSTANT: OF_PROMPT    8192
 CONSTANT: OF_REOPEN    32768
 CONSTANT: OF_VERIFY    1024
 
-CONSTANT: INFINITE HEX: FFFFFFFF
+CONSTANT: INFINITE 0xFFFFFFFF
 
 ! From C:\cygwin\usr\include\w32api\winbase.h
 CONSTANT: FILE_TYPE_UNKNOWN 0
 CONSTANT: FILE_TYPE_DISK 1
 CONSTANT: FILE_TYPE_CHAR 2
 CONSTANT: FILE_TYPE_PIPE 3
-CONSTANT: FILE_TYPE_REMOTE HEX: 8000
+CONSTANT: FILE_TYPE_REMOTE 0x8000
 
 CONSTANT: TIME_ZONE_ID_UNKNOWN 0
 CONSTANT: TIME_ZONE_ID_STANDARD 1
 CONSTANT: TIME_ZONE_ID_DAYLIGHT 2
-CONSTANT: TIME_ZONE_ID_INVALID HEX: FFFFFFFF
+CONSTANT: TIME_ZONE_ID_INVALID 0xFFFFFFFF
 
 CONSTANT: PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
 CONSTANT: PF_SSE3_INSTRUCTIONS_AVAILABLE 13
@@ -147,48 +149,48 @@ CONSTANT: PF_SSE3_INSTRUCTIONS_AVAILABLE 13
 CONSTANT: MAX_COMPUTERNAME_LENGTH 15
 CONSTANT: UNLEN 256
 
-CONSTANT: PROCESS_TERMINATE HEX: 1
-CONSTANT: PROCESS_CREATE_THREAD HEX: 2
-CONSTANT: PROCESS_VM_OPERATION HEX: 8
-CONSTANT: PROCESS_VM_READ HEX: 10
-CONSTANT: PROCESS_VM_WRITE HEX: 20
-CONSTANT: PROCESS_DUP_HANDLE HEX: 40
-CONSTANT: PROCESS_CREATE_PROCESS HEX: 80
-CONSTANT: PROCESS_SET_QUOTA HEX: 100
-CONSTANT: PROCESS_SET_INFORMATION HEX: 200
-CONSTANT: PROCESS_QUERY_INFORMATION HEX: 400
+CONSTANT: PROCESS_TERMINATE 0x1
+CONSTANT: PROCESS_CREATE_THREAD 0x2
+CONSTANT: PROCESS_VM_OPERATION 0x8
+CONSTANT: PROCESS_VM_READ 0x10
+CONSTANT: PROCESS_VM_WRITE 0x20
+CONSTANT: PROCESS_DUP_HANDLE 0x40
+CONSTANT: PROCESS_CREATE_PROCESS 0x80
+CONSTANT: PROCESS_SET_QUOTA 0x100
+CONSTANT: PROCESS_SET_INFORMATION 0x200
+CONSTANT: PROCESS_QUERY_INFORMATION 0x400
 
-CONSTANT: MEM_COMMIT HEX: 1000
-CONSTANT: MEM_RELEASE  HEX: 8000
+CONSTANT: MEM_COMMIT 0x1000
+CONSTANT: MEM_RELEASE  0x8000
 
 CONSTANT: PAGE_NOACCESS    1
 CONSTANT: PAGE_READONLY    2
 CONSTANT: PAGE_READWRITE 4
 CONSTANT: PAGE_WRITECOPY 8
-CONSTANT: PAGE_EXECUTE HEX: 10
-CONSTANT: PAGE_EXECUTE_READ HEX: 20
-CONSTANT: PAGE_EXECUTE_READWRITE HEX: 40
-CONSTANT: PAGE_EXECUTE_WRITECOPY HEX: 80
-CONSTANT: PAGE_GUARD HEX: 100
-CONSTANT: PAGE_NOCACHE HEX: 200
-
-CONSTANT: SEC_BASED HEX: 00200000
-CONSTANT: SEC_NO_CHANGE HEX: 00400000
-CONSTANT: SEC_FILE HEX: 00800000
-CONSTANT: SEC_IMAGE HEX: 01000000
-CONSTANT: SEC_VLM HEX: 02000000
-CONSTANT: SEC_RESERVE HEX: 04000000
-CONSTANT: SEC_COMMIT HEX: 08000000
-CONSTANT: SEC_NOCACHE HEX: 10000000
+CONSTANT: PAGE_EXECUTE 0x10
+CONSTANT: PAGE_EXECUTE_READ 0x20
+CONSTANT: PAGE_EXECUTE_READWRITE 0x40
+CONSTANT: PAGE_EXECUTE_WRITECOPY 0x80
+CONSTANT: PAGE_GUARD 0x100
+CONSTANT: PAGE_NOCACHE 0x200
+
+CONSTANT: SEC_BASED 0x00200000
+CONSTANT: SEC_NO_CHANGE 0x00400000
+CONSTANT: SEC_FILE 0x00800000
+CONSTANT: SEC_IMAGE 0x01000000
+CONSTANT: SEC_VLM 0x02000000
+CONSTANT: SEC_RESERVE 0x04000000
+CONSTANT: SEC_COMMIT 0x08000000
+CONSTANT: SEC_NOCACHE 0x10000000
 ALIAS: MEM_IMAGE SEC_IMAGE
 
-CONSTANT: FILE_MAP_ALL_ACCESS HEX: f001f
+CONSTANT: FILE_MAP_ALL_ACCESS 0xf001f
 CONSTANT: FILE_MAP_READ   4
 CONSTANT: FILE_MAP_WRITE  2
 CONSTANT: FILE_MAP_COPY   1
 
-CONSTANT: THREAD_MODE_BACKGROUND_BEGIN HEX: 10000
-CONSTANT: THREAD_MODE_BACKGROUND_END   HEX: 20000
+CONSTANT: THREAD_MODE_BACKGROUND_BEGIN 0x10000
+CONSTANT: THREAD_MODE_BACKGROUND_END   0x20000
 CONSTANT: THREAD_PRIORITY_ABOVE_NORMAL 1
 CONSTANT: THREAD_PRIORITY_BELOW_NORMAL -1
 CONSTANT: THREAD_PRIORITY_HIGHEST 2
@@ -197,7 +199,7 @@ CONSTANT: THREAD_PRIORITY_LOWEST -2
 CONSTANT: THREAD_PRIORITY_NORMAL 0
 CONSTANT: THREAD_PRIORITY_TIME_CRITICAL 15
 
-C-ENUM:
+ENUM: COMPUTER_NAME_FORMAT
     ComputerNameNetBIOS
     ComputerNameDnsHostname
     ComputerNameDnsDomain
@@ -208,8 +210,6 @@ C-ENUM:
     ComputerNamePhysicalDnsFullyQualified
     ComputerNameMax ;
 
-TYPEDEF: uint COMPUTER_NAME_FORMAT
-
 STRUCT: OVERLAPPED
     { internal UINT_PTR }
     { internal-high UINT_PTR }
@@ -349,57 +349,57 @@ STRUCT: GUID
     fDummy2  :17;
 */
 
-CONSTANT: SP_SERIALCOMM   HEX: 1
-CONSTANT: BAUD_075        HEX: 1
-CONSTANT: BAUD_110        HEX: 2
-CONSTANT: BAUD_134_5      HEX: 4
-CONSTANT: BAUD_150        HEX: 8
-CONSTANT: BAUD_300        HEX: 10
-CONSTANT: BAUD_600        HEX: 20
-CONSTANT: BAUD_1200       HEX: 40
-CONSTANT: BAUD_1800       HEX: 80
-CONSTANT: BAUD_2400       HEX: 100
-CONSTANT: BAUD_4800       HEX: 200
-CONSTANT: BAUD_7200       HEX: 400
-CONSTANT: BAUD_9600       HEX: 800
-CONSTANT: BAUD_14400      HEX: 1000
-CONSTANT: BAUD_19200      HEX: 2000
-CONSTANT: BAUD_38400      HEX: 4000
-CONSTANT: BAUD_56K        HEX: 8000
-CONSTANT: BAUD_57600      HEX: 40000
-CONSTANT: BAUD_115200     HEX: 20000
-CONSTANT: BAUD_128K       HEX: 10000
-CONSTANT: BAUD_USER       HEX: 10000000
-CONSTANT: PST_FAX     HEX: 21
-CONSTANT: PST_LAT     HEX: 101
-CONSTANT: PST_MODEM       HEX: 6
-CONSTANT: PST_NETWORK_BRIDGE  HEX: 100
-CONSTANT: PST_PARALLELPORT    HEX: 2
-CONSTANT: PST_RS232       HEX: 1
-CONSTANT: PST_RS422       HEX: 3
-CONSTANT: PST_RS423       HEX: 4
-CONSTANT: PST_RS449       HEX: 5
-CONSTANT: PST_SCANNER     HEX: 22
-CONSTANT: PST_TCPIP_TELNET    HEX: 102
+CONSTANT: SP_SERIALCOMM   0x1
+CONSTANT: BAUD_075        0x1
+CONSTANT: BAUD_110        0x2
+CONSTANT: BAUD_134_5      0x4
+CONSTANT: BAUD_150        0x8
+CONSTANT: BAUD_300        0x10
+CONSTANT: BAUD_600        0x20
+CONSTANT: BAUD_1200       0x40
+CONSTANT: BAUD_1800       0x80
+CONSTANT: BAUD_2400       0x100
+CONSTANT: BAUD_4800       0x200
+CONSTANT: BAUD_7200       0x400
+CONSTANT: BAUD_9600       0x800
+CONSTANT: BAUD_14400      0x1000
+CONSTANT: BAUD_19200      0x2000
+CONSTANT: BAUD_38400      0x4000
+CONSTANT: BAUD_56K        0x8000
+CONSTANT: BAUD_57600      0x40000
+CONSTANT: BAUD_115200     0x20000
+CONSTANT: BAUD_128K       0x10000
+CONSTANT: BAUD_USER       0x10000000
+CONSTANT: PST_FAX     0x21
+CONSTANT: PST_LAT     0x101
+CONSTANT: PST_MODEM       0x6
+CONSTANT: PST_NETWORK_BRIDGE  0x100
+CONSTANT: PST_PARALLELPORT    0x2
+CONSTANT: PST_RS232       0x1
+CONSTANT: PST_RS422       0x3
+CONSTANT: PST_RS423       0x4
+CONSTANT: PST_RS449       0x5
+CONSTANT: PST_SCANNER     0x22
+CONSTANT: PST_TCPIP_TELNET    0x102
 CONSTANT: PST_UNSPECIFIED 0
-CONSTANT: PST_X25     HEX: 103
-CONSTANT: PCF_16BITMODE   HEX: 200
-CONSTANT: PCF_DTRDSR      HEX: 1
-CONSTANT: PCF_INTTIMEOUTS HEX: 80
-CONSTANT: PCF_PARITY_CHECK    HEX: 8
-CONSTANT: PCF_RLSD        HEX: 4
-CONSTANT: PCF_RTSCTS      HEX: 2
-CONSTANT: PCF_SETXCHAR    HEX: 20
-CONSTANT: PCF_SPECIALCHARS    HEX: 100
-CONSTANT: PCF_TOTALTIMEOUTS   HEX: 40
-CONSTANT: PCF_XONXOFF     HEX: 10
-CONSTANT: SP_BAUD     HEX: 2
-CONSTANT: SP_DATABITS     HEX: 4
-CONSTANT: SP_HANDSHAKING  HEX: 10
-CONSTANT: SP_PARITY       HEX: 1
-CONSTANT: SP_PARITY_CHECK HEX: 20
-CONSTANT: SP_RLSD     HEX: 40
-CONSTANT: SP_STOPBITS     HEX: 8
+CONSTANT: PST_X25     0x103
+CONSTANT: PCF_16BITMODE   0x200
+CONSTANT: PCF_DTRDSR      0x1
+CONSTANT: PCF_INTTIMEOUTS 0x80
+CONSTANT: PCF_PARITY_CHECK    0x8
+CONSTANT: PCF_RLSD        0x4
+CONSTANT: PCF_RTSCTS      0x2
+CONSTANT: PCF_SETXCHAR    0x20
+CONSTANT: PCF_SPECIALCHARS    0x100
+CONSTANT: PCF_TOTALTIMEOUTS   0x40
+CONSTANT: PCF_XONXOFF     0x10
+CONSTANT: SP_BAUD     0x2
+CONSTANT: SP_DATABITS     0x4
+CONSTANT: SP_HANDSHAKING  0x10
+CONSTANT: SP_PARITY       0x1
+CONSTANT: SP_PARITY_CHECK 0x20
+CONSTANT: SP_RLSD     0x40
+CONSTANT: SP_STOPBITS     0x8
 CONSTANT: DATABITS_5      1
 CONSTANT: DATABITS_6      2
 CONSTANT: DATABITS_7      4
@@ -414,7 +414,7 @@ CONSTANT: PARITY_ODD      512
 CONSTANT: PARITY_EVEN     1024
 CONSTANT: PARITY_MARK     2048
 CONSTANT: PARITY_SPACE    4096
-CONSTANT: COMMPROP_INITIALIZED    HEX: e73cf52e
+CONSTANT: COMMPROP_INITIALIZED    0xe73cf52e
 
 CONSTANT: CBR_110         110
 CONSTANT: CBR_300         300
@@ -448,81 +448,81 @@ CONSTANT: ONE5STOPBITS        1
 CONSTANT: TWOSTOPBITS         2
 
 ! Flowcontrol bit mask in DCB
-CONSTANT: FM_fBinary          HEX: 1
-CONSTANT: FM_fParity          HEX: 2
-CONSTANT: FM_fOutxCtsFlow     HEX: 4
-CONSTANT: FM_fOutxDsrFlow     HEX: 8
-CONSTANT: FM_fDtrControl      HEX: 30
-CONSTANT: FM_fDsrSensitivity      HEX: 40
-CONSTANT: FM_fTXContinueOnXoff    HEX: 80
-CONSTANT: FM_fOutX            HEX: 100
-CONSTANT: FM_fInX         HEX: 200
-CONSTANT: FM_fErrorChar       HEX: 400
-CONSTANT: FM_fNull            HEX: 800
-CONSTANT: FM_fRtsControl      HEX: 3000
-CONSTANT: FM_fAbortOnError        HEX: 4000
-CONSTANT: FM_fDummy2          HEX: ffff8000
-
-CONSTANT: BM_fCtsHold     HEX: 1
-CONSTANT: BM_fDsrHold     HEX: 2
-CONSTANT: BM_fRlsdHold    HEX: 4
-CONSTANT: BM_fXoffHold    HEX: 8
-CONSTANT: BM_fXoffSent    HEX: 10
-CONSTANT: BM_fEof     HEX: 20
-CONSTANT: BM_fTxim        HEX: 40
-CONSTANT: BM_AllBits      HEX: 7f
+CONSTANT: FM_fBinary          0x1
+CONSTANT: FM_fParity          0x2
+CONSTANT: FM_fOutxCtsFlow     0x4
+CONSTANT: FM_fOutxDsrFlow     0x8
+CONSTANT: FM_fDtrControl      0x30
+CONSTANT: FM_fDsrSensitivity      0x40
+CONSTANT: FM_fTXContinueOnXoff    0x80
+CONSTANT: FM_fOutX            0x100
+CONSTANT: FM_fInX         0x200
+CONSTANT: FM_fErrorChar       0x400
+CONSTANT: FM_fNull            0x800
+CONSTANT: FM_fRtsControl      0x3000
+CONSTANT: FM_fAbortOnError        0x4000
+CONSTANT: FM_fDummy2          0xffff8000
+
+CONSTANT: BM_fCtsHold     0x1
+CONSTANT: BM_fDsrHold     0x2
+CONSTANT: BM_fRlsdHold    0x4
+CONSTANT: BM_fXoffHold    0x8
+CONSTANT: BM_fXoffSent    0x10
+CONSTANT: BM_fEof     0x20
+CONSTANT: BM_fTxim        0x40
+CONSTANT: BM_AllBits      0x7f
 
 ! PurgeComm bit mask
-CONSTANT: PURGE_TXABORT   HEX: 1
-CONSTANT: PURGE_RXABORT   HEX: 2
-CONSTANT: PURGE_TXCLEAR   HEX: 4
-CONSTANT: PURGE_RXCLEAR   HEX: 8
+CONSTANT: PURGE_TXABORT   0x1
+CONSTANT: PURGE_RXABORT   0x2
+CONSTANT: PURGE_TXCLEAR   0x4
+CONSTANT: PURGE_RXCLEAR   0x8
 
 ! GetCommModemStatus bit mask
-CONSTANT: MS_CTS_ON       HEX: 10
-CONSTANT: MS_DSR_ON       HEX: 20
-CONSTANT: MS_RING_ON      HEX: 40
-CONSTANT: MS_RLSD_ON      HEX: 80
+CONSTANT: MS_CTS_ON       0x10
+CONSTANT: MS_DSR_ON       0x20
+CONSTANT: MS_RING_ON      0x40
+CONSTANT: MS_RLSD_ON      0x80
 
 ! EscapeCommFunction operations
-CONSTANT: SETXOFF     HEX: 1
-CONSTANT: SETXON      HEX: 2
-CONSTANT: SETRTS      HEX: 3
-CONSTANT: CLRRTS      HEX: 4
-CONSTANT: SETDTR      HEX: 5
-CONSTANT: CLRDTR      HEX: 6
-CONSTANT: SETBREAK        HEX: 8
-CONSTANT: CLRBREAK        HEX: 9
+CONSTANT: SETXOFF     0x1
+CONSTANT: SETXON      0x2
+CONSTANT: SETRTS      0x3
+CONSTANT: CLRRTS      0x4
+CONSTANT: SETDTR      0x5
+CONSTANT: CLRDTR      0x6
+CONSTANT: SETBREAK        0x8
+CONSTANT: CLRBREAK        0x9
 
 ! ClearCommError bit mask
-CONSTANT: CE_RXOVER       HEX: 1
-CONSTANT: CE_OVERRUN      HEX: 2
-CONSTANT: CE_RXPARITY     HEX: 4
-CONSTANT: CE_FRAME        HEX: 8
-CONSTANT: CE_BREAK        HEX: 10
-CONSTANT: CE_TXFULL       HEX: 100
+CONSTANT: CE_RXOVER       0x1
+CONSTANT: CE_OVERRUN      0x2
+CONSTANT: CE_RXPARITY     0x4
+CONSTANT: CE_FRAME        0x8
+CONSTANT: CE_BREAK        0x10
+CONSTANT: CE_TXFULL       0x100
 ! LPT only
-CONSTANT: CE_PTO        HEX: 200
-CONSTANT: CE_IOE        HEX: 400
-CONSTANT: CE_DNS        HEX: 800
-CONSTANT: CE_OOP        HEX: 1000
+CONSTANT: CE_PTO        0x200
+CONSTANT: CE_IOE        0x400
+CONSTANT: CE_DNS        0x800
+CONSTANT: CE_OOP        0x1000
 ! LPT only
-CONSTANT: CE_MODE     HEX: 8000
+CONSTANT: CE_MODE     0x8000
 
 ! GetCommMask bits
-CONSTANT: EV_RXCHAR       HEX: 1
-CONSTANT: EV_RXFLAG       HEX: 2
-CONSTANT: EV_TXEMPTY      HEX: 4
-CONSTANT: EV_CTS      HEX: 8
-CONSTANT: EV_DSR      HEX: 10
-CONSTANT: EV_RLSD     HEX: 20
-CONSTANT: EV_BREAK        HEX: 40
-CONSTANT: EV_ERR      HEX: 80
-CONSTANT: EV_RING     HEX: 100
-CONSTANT: EV_PERR     HEX: 200
-CONSTANT: EV_RX80FULL     HEX: 400
-CONSTANT: EV_EVENT1       HEX: 800
-CONSTANT: EV_EVENT2       HEX: 1000
+CONSTANT: EV_RXCHAR       0x1
+CONSTANT: EV_RXFLAG       0x2
+CONSTANT: EV_TXEMPTY      0x4
+CONSTANT: EV_CTS      0x8
+CONSTANT: EV_DSR      0x10
+CONSTANT: EV_RLSD     0x20
+CONSTANT: EV_BREAK        0x40
+CONSTANT: EV_ERR      0x80
+CONSTANT: EV_RING     0x100
+CONSTANT: EV_PERR     0x200
+CONSTANT: EV_RX80FULL     0x400
+CONSTANT: EV_EVENT1       0x800
+CONSTANT: EV_EVENT2       0x1000
 
 STRUCT: DCB
     { DCBlength DWORD }
@@ -543,7 +543,7 @@ STRUCT: DCB
 TYPEDEF: DCB* PDCB
 TYPEDEF: DCB* LPDCB
 
-STRUCT: COMM_CONFIG
+STRUCT: COMMCONFIG
     { dwSize DWORD }
     { wVersion WORD }
     { wReserved WORD }
@@ -606,44 +606,44 @@ CONSTANT: SE_MANAGE_VOLUME_NAME "SeManageVolumePrivilege"
 CONSTANT: SE_IMPERSONATE_NAME "SeImpersonatePrivilege"
 CONSTANT: SE_CREATE_GLOBAL_NAME "SeCreateGlobalPrivilege"
 
-CONSTANT: SE_GROUP_MANDATORY HEX: 00000001
-CONSTANT: SE_GROUP_ENABLED_BY_DEFAULT HEX: 00000002
-CONSTANT: SE_GROUP_ENABLED HEX: 00000004
-CONSTANT: SE_GROUP_OWNER HEX: 00000008
-CONSTANT: SE_GROUP_USE_FOR_DENY_ONLY HEX: 00000010
-CONSTANT: SE_GROUP_LOGON_ID HEX: C0000000
-CONSTANT: SE_GROUP_RESOURCE HEX: 20000000
+CONSTANT: SE_GROUP_MANDATORY 0x00000001
+CONSTANT: SE_GROUP_ENABLED_BY_DEFAULT 0x00000002
+CONSTANT: SE_GROUP_ENABLED 0x00000004
+CONSTANT: SE_GROUP_OWNER 0x00000008
+CONSTANT: SE_GROUP_USE_FOR_DENY_ONLY 0x00000010
+CONSTANT: SE_GROUP_LOGON_ID 0xC0000000
+CONSTANT: SE_GROUP_RESOURCE 0x20000000
 
-CONSTANT: SE_PRIVILEGE_ENABLED_BY_DEFAULT HEX: 00000001
-CONSTANT: SE_PRIVILEGE_ENABLED HEX: 00000002
-CONSTANT: SE_PRIVILEGE_REMOVE HEX: 00000004
-CONSTANT: SE_PRIVILEGE_USED_FOR_ACCESS HEX: 80000000
+CONSTANT: SE_PRIVILEGE_ENABLED_BY_DEFAULT 0x00000001
+CONSTANT: SE_PRIVILEGE_ENABLED 0x00000002
+CONSTANT: SE_PRIVILEGE_REMOVE 0x00000004
+CONSTANT: SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000
 
 CONSTANT: PRIVILEGE_SET_ALL_NECESSARY 1
 
-CONSTANT: SE_OWNER_DEFAULTED HEX: 00000001
-CONSTANT: SE_GROUP_DEFAULTED HEX: 00000002
-CONSTANT: SE_DACL_PRESENT HEX: 00000004
-CONSTANT: SE_DACL_DEFAULTED HEX: 00000008
-CONSTANT: SE_SACL_PRESENT HEX: 00000010
-CONSTANT: SE_SACL_DEFAULTED HEX: 00000020
-CONSTANT: SE_DACL_AUTO_INHERIT_REQ HEX: 00000100
-CONSTANT: SE_SACL_AUTO_INHERIT_REQ HEX: 00000200
-CONSTANT: SE_DACL_AUTO_INHERITED HEX: 00000400
-CONSTANT: SE_SACL_AUTO_INHERITED HEX: 00000800
-CONSTANT: SE_DACL_PROTECTED  HEX: 00001000
-CONSTANT: SE_SACL_PROTECTED  HEX: 00002000
-CONSTANT: SE_SELF_RELATIVE HEX: 00008000
+CONSTANT: SE_OWNER_DEFAULTED 0x00000001
+CONSTANT: SE_GROUP_DEFAULTED 0x00000002
+CONSTANT: SE_DACL_PRESENT 0x00000004
+CONSTANT: SE_DACL_DEFAULTED 0x00000008
+CONSTANT: SE_SACL_PRESENT 0x00000010
+CONSTANT: SE_SACL_DEFAULTED 0x00000020
+CONSTANT: SE_DACL_AUTO_INHERIT_REQ 0x00000100
+CONSTANT: SE_SACL_AUTO_INHERIT_REQ 0x00000200
+CONSTANT: SE_DACL_AUTO_INHERITED 0x00000400
+CONSTANT: SE_SACL_AUTO_INHERITED 0x00000800
+CONSTANT: SE_DACL_PROTECTED  0x00001000
+CONSTANT: SE_SACL_PROTECTED  0x00002000
+CONSTANT: SE_SELF_RELATIVE 0x00008000
 
 CONSTANT: ANYSIZE_ARRAY 1
 
 CONSTANT: MAXIMUM_WAIT_OBJECTS 64
-CONSTANT: MAXIMUM_SUSPEND_COUNT HEX: 7f
+CONSTANT: MAXIMUM_SUSPEND_COUNT 0x7f
 CONSTANT: WAIT_OBJECT_0 0
 CONSTANT: WAIT_ABANDONED_0 128
 CONSTANT: WAIT_TIMEOUT 258
-CONSTANT: WAIT_IO_COMPLETION HEX: c0
-CONSTANT: WAIT_FAILED HEX: ffffffff
+CONSTANT: WAIT_IO_COMPLETION 0xc0
+CONSTANT: WAIT_FAILED 0xffffffff
 
 STRUCT: LUID
     { LowPart DWORD }
@@ -704,7 +704,7 @@ STRUCT: WIN32_FIND_DATA
     { nFileSizeLow DWORD }
     { dwReserved0 DWORD }
     { dwReserved1 DWORD }
-    { cFileName { "TCHAR" MAX_PATH } }
+    { cFileName { TCHAR MAX_PATH } }
     { cAlternateFileName TCHAR[14] } ;
 
 TYPEDEF: WIN32_FIND_DATA* PWIN32_FIND_DATA
@@ -733,16 +733,16 @@ STRUCT: SECURITY_ATTRIBUTES
 CONSTANT: HANDLE_FLAG_INHERIT 1
 CONSTANT: HANDLE_FLAG_PROTECT_FROM_CLOSE 2
 
-CONSTANT: STARTF_USESHOWWINDOW    HEX: 00000001
-CONSTANT: STARTF_USESIZE          HEX: 00000002
-CONSTANT: STARTF_USEPOSITION      HEX: 00000004
-CONSTANT: STARTF_USECOUNTCHARS    HEX: 00000008
-CONSTANT: STARTF_USEFILLATTRIBUTE HEX: 00000010
-CONSTANT: STARTF_RUNFULLSCREEN    HEX: 00000020
-CONSTANT: STARTF_FORCEONFEEDBACK  HEX: 00000040
-CONSTANT: STARTF_FORCEOFFFEEDBACK HEX: 00000080
-CONSTANT: STARTF_USESTDHANDLES    HEX: 00000100
-CONSTANT: STARTF_USEHOTKEY        HEX: 00000200
+CONSTANT: STARTF_USESHOWWINDOW    0x00000001
+CONSTANT: STARTF_USESIZE          0x00000002
+CONSTANT: STARTF_USEPOSITION      0x00000004
+CONSTANT: STARTF_USECOUNTCHARS    0x00000008
+CONSTANT: STARTF_USEFILLATTRIBUTE 0x00000010
+CONSTANT: STARTF_RUNFULLSCREEN    0x00000020
+CONSTANT: STARTF_FORCEONFEEDBACK  0x00000040
+CONSTANT: STARTF_FORCEOFFFEEDBACK 0x00000080
+CONSTANT: STARTF_USESTDHANDLES    0x00000100
+CONSTANT: STARTF_USEHOTKEY        0x00000200
 
 CONSTANT: PIPE_ACCESS_INBOUND  1
 CONSTANT: PIPE_ACCESS_OUTBOUND 2
@@ -759,6 +759,58 @@ CONSTANT: PIPE_NOWAIT 1
 
 CONSTANT: PIPE_UNLIMITED_INSTANCES 255
 
+CONSTANT: EXCEPTION_NONCONTINUABLE          0x1
+CONSTANT: STATUS_GUARD_PAGE_VIOLATION       0x80000001
+CONSTANT: STATUS_DATATYPE_MISALIGNMENT      0x80000002
+CONSTANT: STATUS_BREAKPOINT                 0x80000003
+CONSTANT: STATUS_SINGLE_STEP                0x80000004
+CONSTANT: STATUS_ACCESS_VIOLATION           0xC0000005
+CONSTANT: STATUS_IN_PAGE_ERROR              0xC0000006
+CONSTANT: STATUS_INVALID_HANDLE             0xC0000008
+CONSTANT: STATUS_NO_MEMORY                  0xC0000017
+CONSTANT: STATUS_ILLEGAL_INSTRUCTION        0xC000001D
+CONSTANT: STATUS_NONCONTINUABLE_EXCEPTION   0xC0000025
+CONSTANT: STATUS_INVALID_DISPOSITION        0xC0000026
+CONSTANT: STATUS_ARRAY_BOUNDS_EXCEEDED      0xC000008C
+CONSTANT: STATUS_FLOAT_DENORMAL_OPERAND     0xC000008D
+CONSTANT: STATUS_FLOAT_DIVIDE_BY_ZERO       0xC000008E
+CONSTANT: STATUS_FLOAT_INEXACT_RESULT       0xC000008F
+CONSTANT: STATUS_FLOAT_INVALID_OPERATION    0xC0000090
+CONSTANT: STATUS_FLOAT_OVERFLOW             0xC0000091
+CONSTANT: STATUS_FLOAT_STACK_CHECK          0xC0000092
+CONSTANT: STATUS_FLOAT_UNDERFLOW            0xC0000093
+CONSTANT: STATUS_INTEGER_DIVIDE_BY_ZERO     0xC0000094
+CONSTANT: STATUS_INTEGER_OVERFLOW           0xC0000095
+CONSTANT: STATUS_PRIVILEGED_INSTRUCTION     0xC0000096
+CONSTANT: STATUS_STACK_OVERFLOW             0xC00000FD
+CONSTANT: STATUS_CONTROL_C_EXIT             0xC000013A
+CONSTANT: STATUS_FLOAT_MULTIPLE_FAULTS      0xC00002B4
+CONSTANT: STATUS_FLOAT_MULTIPLE_TRAPS       0xC00002B5
+
+! Resource IDs
+: MAKEINTRESOURCE ( int -- resource ) 0xffff bitand <alien> ; inline
+
+: RT_CURSOR       ( -- id )  1 MAKEINTRESOURCE ; inline
+: RT_BITMAP       ( -- id )  2 MAKEINTRESOURCE ; inline
+: RT_ICON         ( -- id )  3 MAKEINTRESOURCE ; inline
+: RT_MENU         ( -- id )  4 MAKEINTRESOURCE ; inline
+: RT_DIALOG       ( -- id )  5 MAKEINTRESOURCE ; inline
+: RT_STRING       ( -- id )  6 MAKEINTRESOURCE ; inline
+: RT_FONTDIR      ( -- id )  7 MAKEINTRESOURCE ; inline
+: RT_FONT         ( -- id )  8 MAKEINTRESOURCE ; inline
+: RT_ACCELERATOR  ( -- id )  9 MAKEINTRESOURCE ; inline
+: RT_RCDATA       ( -- id ) 10 MAKEINTRESOURCE ; inline
+: RT_MESSAGETABLE ( -- id ) 11 MAKEINTRESOURCE ; inline
+: RT_GROUP_CURSOR ( -- id ) 12 MAKEINTRESOURCE ; inline
+: RT_GROUP_ICON   ( -- id ) 14 MAKEINTRESOURCE ; inline
+: RT_VERSION      ( -- id ) 16 MAKEINTRESOURCE ; inline
+: RT_DLGINCLUDE   ( -- id ) 17 MAKEINTRESOURCE ; inline
+: RT_PLUGPLAY     ( -- id ) 19 MAKEINTRESOURCE ; inline
+: RT_VXD          ( -- id ) 20 MAKEINTRESOURCE ; inline
+: RT_ANICURSOR    ( -- id ) 21 MAKEINTRESOURCE ; inline
+: RT_ANIICON      ( -- id ) 22 MAKEINTRESOURCE ; inline
+: RT_MANIFEST     ( -- id ) 24 MAKEINTRESOURCE ; inline
+
 LIBRARY: kernel32
 ! FUNCTION: _hread
 ! FUNCTION: _hwrite
@@ -798,7 +850,8 @@ FUNCTION: BOOL AllocConsole ( ) ;
 ! FUNCTION: BaseUpdateAppcompatCache
 ! FUNCTION: Beep
 ! FUNCTION: BeginUpdateResourceA
-! FUNCTION: BeginUpdateResourceW
+FUNCTION: HANDLE BeginUpdateResourceW ( LPCTSTR pFileName, BOOL bDeleteExistingResources ) ;
+ALIAS: BeginUpdateResource BeginUpdateResourceW
 ! FUNCTION: BindIoCompletionCallback
 ! FUNCTION: BuildCommDCBA
 ! FUNCTION: BuildCommDCBAndTimeoutsA
@@ -882,29 +935,29 @@ ALIAS: CreateNamedPipe CreateNamedPipeW
 ! FUNCTION: CreateNlsSecurityDescriptor
 FUNCTION: BOOL CreatePipe ( PHANDLE hReadPipe, PHANDLE hWritePipe, LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize ) ;
 
-CONSTANT: DEBUG_PROCESS                   HEX: 00000001
-CONSTANT: DEBUG_ONLY_THIS_PROCESS         HEX: 00000002
-CONSTANT: CREATE_SUSPENDED                HEX: 00000004
-CONSTANT: DETACHED_PROCESS                HEX: 00000008
-CONSTANT: CREATE_NEW_CONSOLE              HEX: 00000010
-CONSTANT: NORMAL_PRIORITY_CLASS           HEX: 00000020
-CONSTANT: IDLE_PRIORITY_CLASS             HEX: 00000040
-CONSTANT: HIGH_PRIORITY_CLASS             HEX: 00000080
-CONSTANT: REALTIME_PRIORITY_CLASS         HEX: 00000100
-CONSTANT: CREATE_NEW_PROCESS_GROUP        HEX: 00000200
-CONSTANT: CREATE_UNICODE_ENVIRONMENT      HEX: 00000400
-CONSTANT: CREATE_SEPARATE_WOW_VDM         HEX: 00000800
-CONSTANT: CREATE_SHARED_WOW_VDM           HEX: 00001000
-CONSTANT: CREATE_FORCEDOS                 HEX: 00002000
-CONSTANT: BELOW_NORMAL_PRIORITY_CLASS     HEX: 00004000
-CONSTANT: ABOVE_NORMAL_PRIORITY_CLASS     HEX: 00008000
-CONSTANT: CREATE_BREAKAWAY_FROM_JOB       HEX: 01000000
-CONSTANT: CREATE_WITH_USERPROFILE         HEX: 02000000
-CONSTANT: CREATE_DEFAULT_ERROR_MODE       HEX: 04000000
-CONSTANT: CREATE_NO_WINDOW                HEX: 08000000
-CONSTANT: PROFILE_USER                    HEX: 10000000
-CONSTANT: PROFILE_KERNEL                  HEX: 20000000
-CONSTANT: PROFILE_SERVER                  HEX: 40000000
+CONSTANT: DEBUG_PROCESS                   0x00000001
+CONSTANT: DEBUG_ONLY_THIS_PROCESS         0x00000002
+CONSTANT: CREATE_SUSPENDED                0x00000004
+CONSTANT: DETACHED_PROCESS                0x00000008
+CONSTANT: CREATE_NEW_CONSOLE              0x00000010
+CONSTANT: NORMAL_PRIORITY_CLASS           0x00000020
+CONSTANT: IDLE_PRIORITY_CLASS             0x00000040
+CONSTANT: HIGH_PRIORITY_CLASS             0x00000080
+CONSTANT: REALTIME_PRIORITY_CLASS         0x00000100
+CONSTANT: CREATE_NEW_PROCESS_GROUP        0x00000200
+CONSTANT: CREATE_UNICODE_ENVIRONMENT      0x00000400
+CONSTANT: CREATE_SEPARATE_WOW_VDM         0x00000800
+CONSTANT: CREATE_SHARED_WOW_VDM           0x00001000
+CONSTANT: CREATE_FORCEDOS                 0x00002000
+CONSTANT: BELOW_NORMAL_PRIORITY_CLASS     0x00004000
+CONSTANT: ABOVE_NORMAL_PRIORITY_CLASS     0x00008000
+CONSTANT: CREATE_BREAKAWAY_FROM_JOB       0x01000000
+CONSTANT: CREATE_WITH_USERPROFILE         0x02000000
+CONSTANT: CREATE_DEFAULT_ERROR_MODE       0x04000000
+CONSTANT: CREATE_NO_WINDOW                0x08000000
+CONSTANT: PROFILE_USER                    0x10000000
+CONSTANT: PROFILE_KERNEL                  0x20000000
+CONSTANT: PROFILE_SERVER                  0x40000000
 
 FUNCTION: BOOL CreateProcessW ( LPCTSTR lpApplicationname,
                                 LPTSTR lpCommandLine,
@@ -985,7 +1038,8 @@ CONSTANT: DUPLICATE_SAME_ACCESS 2
 ! FUNCTION: EncodePointer
 ! FUNCTION: EncodeSystemPointer
 ! FUNCTION: EndUpdateResourceA
-! FUNCTION: EndUpdateResourceW
+FUNCTION: BOOL EndUpdateResourceW ( HANDLE hUpdate, BOOL fDiscard ) ;
+ALIAS: EndUpdateResource EndUpdateResourceW
 ! FUNCTION: EnterCriticalSection
 ! FUNCTION: EnumCalendarInfoA
 ! FUNCTION: EnumCalendarInfoExA
@@ -1113,7 +1167,7 @@ FUNCTION: BOOL FreeConsole ( ) ;
 ! FUNCTION: FreeEnvironmentStringsA
 FUNCTION: BOOL FreeEnvironmentStringsW ( LPTCH lpszEnvironmentBlock ) ;
 ALIAS: FreeEnvironmentStrings FreeEnvironmentStringsW
-! FUNCTION: FreeLibrary
+FUNCTION: BOOL FreeLibrary ( HMODULE hModule ) ;
 ! FUNCTION: FreeLibraryAndExitThread
 ! FUNCTION: FreeResource
 ! FUNCTION: FreeUserPhysicalPages
@@ -1260,7 +1314,8 @@ FUNCTION: DWORD GetLogicalDrives ( ) ;
 ! FUNCTION: GetLongPathNameW
 ! FUNCTION: GetMailslotInfo
 ! FUNCTION: GetModuleFileNameA
-! FUNCTION: GetModuleFileNameW
+FUNCTION: DWORD GetModuleFileNameW ( HMODULE hModule, LPTSTR lpFilename, DWORD nSize ) ;
+ALIAS: GetModuleFileName GetModuleFileNameW
 FUNCTION: HMODULE GetModuleHandleW ( LPCWSTR lpModuleName ) ;
 ALIAS: GetModuleHandle GetModuleHandleW
 ! FUNCTION: GetModuleHandleExA
@@ -1295,7 +1350,7 @@ FUNCTION: DWORD GetPriorityClass ( HANDLE hProcess ) ;
 ! FUNCTION: GetPrivateProfileStringW
 ! FUNCTION: GetPrivateProfileStructA
 ! FUNCTION: GetPrivateProfileStructW
-FUNCTION: LPVOID GetProcAddress ( HMODULE hModule, char* lpProcName ) ;
+FUNCTION: LPVOID GetProcAddress ( HMODULE hModule, c-string lpProcName ) ;
 ! FUNCTION: GetProcessAffinityMask
 ! FUNCTION: GetProcessHandleCount
 ! FUNCTION: GetProcessHeap
@@ -1594,8 +1649,8 @@ FUNCTION: HANDLE OpenProcess ( DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD
 ! FUNCTION: QueryDosDeviceW
 ! FUNCTION: QueryInformationJobObject
 ! FUNCTION: QueryMemoryResourceNotification
-! FUNCTION: QueryPerformanceCounter
-! FUNCTION: QueryPerformanceFrequency
+FUNCTION: BOOL QueryPerformanceCounter ( LARGE_INTEGER* lpPerformanceCount ) ;
+FUNCTION: BOOL QueryPerformanceFrequency ( LARGE_INTEGER* lpFrequency ) ;
 ! FUNCTION: QueryWin31IniFilesMappedToRegistry
 ! FUNCTION: QueueUserAPC
 ! FUNCTION: QueueUserWorkItem
@@ -1715,7 +1770,8 @@ ALIAS: SetEnvironmentVariable SetEnvironmentVariableW
 ! FUNCTION: SetFileApisToANSI
 ! FUNCTION: SetFileApisToOEM
 ! FUNCTION: SetFileAttributesA
-! FUNCTION: SetFileAttributesW
+FUNCTION: BOOL SetFileAttributesW ( LPCTSTR lpFileName, DWORD dwFileAttributes ) ;
+ALIAS: SetFileAttributes SetFileAttributesW
 FUNCTION: DWORD SetFilePointer ( HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod ) ;
 FUNCTION: DWORD SetFilePointerEx ( HANDLE hFile, LARGE_INTEGER lDistanceToMove, PLARGE_INTEGER lpDistanceToMoveHigh, DWORD dwMoveMethod ) ;
 ! FUNCTION: SetFileShortNameA
@@ -1745,7 +1801,7 @@ FUNCTION: BOOL SetProcessPriorityBoost ( HANDLE hProcess, BOOL disablePriorityBo
 ! FUNCTION: SetProcessWorkingSetSize
 ! FUNCTION: SetStdHandle
 ! FUNCTION: SetSystemPowerState
-! FUNCTION: SetSystemTime
+FUNCTION: BOOL SetSystemTime ( SYSTEMTIME* lpSystemTime ) ;
 ! FUNCTION: SetSystemTimeAdjustment
 ! FUNCTION: SetTapeParameters
 ! FUNCTION: SetTapePosition
@@ -1803,7 +1859,8 @@ FUNCTION: BOOL UnmapViewOfFile ( LPCVOID lpBaseAddress ) ;
 ! FUNCTION: UnregisterWait
 ! FUNCTION: UnregisterWaitEx
 ! FUNCTION: UpdateResourceA
-! FUNCTION: UpdateResourceW
+FUNCTION: BOOL UpdateResourceW ( HANDLE hUpdate, LPCTSTR lpType, LPCTSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cbData ) ;
+ALIAS: UpdateResource UpdateResourceW
 ! FUNCTION: UTRegister
 ! FUNCTION: UTUnRegister
 ! FUNCTION: ValidateLCType