aboutsummaryrefslogtreecommitdiff
path: root/win32/include/winapi
diff options
context:
space:
mode:
Diffstat (limited to 'win32/include/winapi')
-rw-r--r--win32/include/winapi/basetsd.h119
-rw-r--r--win32/include/winapi/basetyps.h144
-rw-r--r--win32/include/winapi/winbase.h1852
-rw-r--r--win32/include/winapi/wincon.h207
-rw-r--r--win32/include/winapi/windef.h240
-rw-r--r--win32/include/winapi/windows.h176
-rw-r--r--win32/include/winapi/winerror.h1054
-rw-r--r--win32/include/winapi/wingdi.h2843
-rw-r--r--win32/include/winapi/winnetwk.h346
-rw-r--r--win32/include/winapi/winnls.h651
-rw-r--r--win32/include/winapi/winnt.h2667
-rw-r--r--win32/include/winapi/winreg.h159
-rw-r--r--win32/include/winapi/winsvc.h309
-rw-r--r--win32/include/winapi/winuser.h3472
-rw-r--r--win32/include/winapi/winver.h133
15 files changed, 14372 insertions, 0 deletions
diff --git a/win32/include/winapi/basetsd.h b/win32/include/winapi/basetsd.h
new file mode 100644
index 0000000..1b18f9f
--- /dev/null
+++ b/win32/include/winapi/basetsd.h
@@ -0,0 +1,119 @@
+#ifndef _BASETSD_H
+#define _BASETSD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __GNUC__
+#ifndef __int64
+#define __int64 long long
+#endif
+#endif
+
+#if defined(_WIN64)
+#define __int3264 __int64
+#define ADDRESS_TAG_BIT 0x40000000000UI64
+#else /* !_WIN64 */
+#define __int3264 __int32
+#define ADDRESS_TAG_BIT 0x80000000UL
+#define HandleToUlong( h ) ((ULONG)(ULONG_PTR)(h) )
+#define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
+#define LongToHandle( h) ((HANDLE)(LONG_PTR) (h))
+#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
+#define PtrToLong( p ) ((LONG)(LONG_PTR) (p) )
+#define PtrToUint( p ) ((UINT)(UINT_PTR) (p) )
+#define PtrToInt( p ) ((INT)(INT_PTR) (p) )
+#define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) )
+#define PtrToShort( p ) ((short)(LONG_PTR)(p) )
+#define IntToPtr( i ) ((VOID*)(INT_PTR)((int)i))
+#define UIntToPtr( ui ) ((VOID*)(UINT_PTR)((unsigned int)ui))
+#define LongToPtr( l ) ((VOID*)(LONG_PTR)((long)l))
+#define ULongToPtr( ul ) ((VOID*)(ULONG_PTR)((unsigned long)ul))
+#endif /* !_WIN64 */
+
+#define UlongToPtr(ul) ULongToPtr(ul)
+#define UintToPtr(ui) UIntToPtr(ui)
+#define MAXUINT_PTR (~((UINT_PTR)0))
+#define MAXINT_PTR ((INT_PTR)(MAXUINT_PTR >> 1))
+#define MININT_PTR (~MAXINT_PTR)
+#define MAXULONG_PTR (~((ULONG_PTR)0))
+#define MAXLONG_PTR ((LONG_PTR)(MAXULONG_PTR >> 1))
+#define MINLONG_PTR (~MAXLONG_PTR)
+#define MAXUHALF_PTR ((UHALF_PTR)~0)
+#define MAXHALF_PTR ((HALF_PTR)(MAXUHALF_PTR >> 1))
+#define MINHALF_PTR (~MAXHALF_PTR)
+
+#ifndef RC_INVOKED
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef int LONG32, *PLONG32;
+#ifndef XFree86Server
+typedef int INT32, *PINT32;
+#endif /* ndef XFree86Server */
+typedef unsigned int ULONG32, *PULONG32;
+typedef unsigned int DWORD32, *PDWORD32;
+typedef unsigned int UINT32, *PUINT32;
+
+#if defined(_WIN64)
+typedef __int64 INT_PTR, *PINT_PTR;
+typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
+typedef __int64 LONG_PTR, *PLONG_PTR;
+typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
+typedef unsigned __int64 HANDLE_PTR;
+typedef unsigned int UHALF_PTR, *PUHALF_PTR;
+typedef int HALF_PTR, *PHALF_PTR;
+
+#if 0 /* TODO when WIN64 is here */
+inline unsigned long HandleToUlong(const void* h )
+ { return((unsigned long) h ); }
+inline long HandleToLong( const void* h )
+ { return((long) h ); }
+inline void* LongToHandle( const long h )
+ { return((void*) (INT_PTR) h ); }
+inline unsigned long PtrToUlong( const void* p)
+ { return((unsigned long) p ); }
+inline unsigned int PtrToUint( const void* p )
+ { return((unsigned int) p ); }
+inline unsigned short PtrToUshort( const void* p )
+ { return((unsigned short) p ); }
+inline long PtrToLong( const void* p )
+ { return((long) p ); }
+inline int PtrToInt( const void* p )
+ { return((int) p ); }
+inline short PtrToShort( const void* p )
+ { return((short) p ); }
+inline void* IntToPtr( const int i )
+ { return( (void*)(INT_PTR)i ); }
+inline void* UIntToPtr(const unsigned int ui)
+ { return( (void*)(UINT_PTR)ui ); }
+inline void* LongToPtr( const long l )
+ { return( (void*)(LONG_PTR)l ); }
+inline void* ULongToPtr( const unsigned long ul )
+ { return( (void*)(ULONG_PTR)ul ); }
+#endif /* 0_ */
+
+#else /* !_WIN64 */
+typedef int INT_PTR, *PINT_PTR;
+typedef unsigned int UINT_PTR, *PUINT_PTR;
+typedef long LONG_PTR, *PLONG_PTR;
+typedef unsigned long ULONG_PTR, *PULONG_PTR;
+typedef unsigned short UHALF_PTR, *PUHALF_PTR;
+typedef short HALF_PTR, *PHALF_PTR;
+typedef unsigned long HANDLE_PTR;
+#endif /* !_WIN64 */
+
+typedef ULONG_PTR SIZE_T, *PSIZE_T;
+typedef LONG_PTR SSIZE_T, *PSSIZE_T;
+typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
+typedef __int64 LONG64, *PLONG64;
+typedef __int64 INT64, *PINT64;
+typedef unsigned __int64 ULONG64, *PULONG64;
+typedef unsigned __int64 DWORD64, *PDWORD64;
+typedef unsigned __int64 UINT64, *PUINT64;
+#ifdef __cplusplus
+}
+#endif
+#endif /* !RC_INVOKED */
+
+#endif /* _BASETSD_H */
diff --git a/win32/include/winapi/basetyps.h b/win32/include/winapi/basetyps.h
new file mode 100644
index 0000000..4d36bc9
--- /dev/null
+++ b/win32/include/winapi/basetyps.h
@@ -0,0 +1,144 @@
+#ifndef _BASETYPS_H
+#define _BASETYPS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef __OBJC__
+#ifdef __cplusplus
+#define EXTERN_C extern "C"
+#else
+#define EXTERN_C extern
+#endif /* __cplusplus */
+#define STDMETHODCALLTYPE __stdcall
+#define STDMETHODVCALLTYPE __cdecl
+#define STDAPICALLTYPE __stdcall
+#define STDAPIVCALLTYPE __cdecl
+#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
+#define STDAPI_(t) EXTERN_C t STDAPICALLTYPE
+#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
+#define STDMETHODIMP_(t) t STDMETHODCALLTYPE
+#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
+#define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE
+#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
+#define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE
+#define interface struct
+#if defined(__cplusplus) && !defined(CINTERFACE)
+#define STDMETHOD(m) virtual HRESULT STDMETHODCALLTYPE m
+#define STDMETHOD_(t,m) virtual t STDMETHODCALLTYPE m
+#define PURE =0
+#define THIS_
+#define THIS void
+/*
+ __attribute__((com_interface)) is obsolete in __GNUC__ >= 3
+ g++ vtables are now COM-compatible by default
+*/
+#if defined(__GNUC__) && __GNUC__ < 3 && !defined(NOCOMATTRIBUTE)
+#define DECLARE_INTERFACE(i) interface __attribute__((com_interface)) i
+#define DECLARE_INTERFACE_(i,b) interface __attribute__((com_interface)) i : public b
+#else
+#define DECLARE_INTERFACE(i) interface i
+#define DECLARE_INTERFACE_(i,b) interface i : public b
+#endif
+#else
+#define STDMETHOD(m) HRESULT(STDMETHODCALLTYPE *m)
+#define STDMETHOD_(t,m) t(STDMETHODCALLTYPE *m)
+#define PURE
+#define THIS_ INTERFACE *,
+#define THIS INTERFACE *
+#ifndef CONST_VTABLE
+#define CONST_VTABLE
+#endif
+#define DECLARE_INTERFACE(i) \
+typedef interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \
+typedef CONST_VTABLE struct i##Vtbl i##Vtbl; \
+CONST_VTABLE struct i##Vtbl
+#define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i)
+#endif
+#define BEGIN_INTERFACE
+#define END_INTERFACE
+
+#define FWD_DECL(i) typedef interface i i
+#if defined(__cplusplus) && !defined(CINTERFACE)
+#define IENUM_THIS(T)
+#define IENUM_THIS_(T)
+#else
+#define IENUM_THIS(T) T*
+#define IENUM_THIS_(T) T*,
+#endif
+#define DECLARE_ENUMERATOR_(I,T) \
+DECLARE_INTERFACE_(I,IUnknown) \
+{ \
+ STDMETHOD(QueryInterface)(IENUM_THIS_(I) REFIID,PVOID*) PURE; \
+ STDMETHOD_(ULONG,AddRef)(IENUM_THIS(I)) PURE; \
+ STDMETHOD_(ULONG,Release)(IENUM_THIS(I)) PURE; \
+ STDMETHOD(Next)(IENUM_THIS_(I) ULONG,T*,ULONG*) PURE; \
+ STDMETHOD(Skip)(IENUM_THIS_(I) ULONG) PURE; \
+ STDMETHOD(Reset)(IENUM_THIS(I)) PURE; \
+ STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \
+}
+#define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T)
+
+#endif /* __OBJC__ */
+
+#ifndef _GUID_DEFINED /* also defined in winnt.h */
+#define _GUID_DEFINED
+typedef struct _GUID
+{
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID,*REFGUID,*LPGUID;
+#endif /* _GUID_DEFINED */
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#endif /* UUID_DEFINED */
+typedef GUID IID;
+typedef GUID CLSID;
+typedef CLSID *LPCLSID;
+typedef IID *LPIID;
+typedef IID *REFIID;
+typedef CLSID *REFCLSID;
+typedef GUID FMTID;
+typedef FMTID *REFFMTID;
+typedef unsigned long error_status_t;
+#define uuid_t UUID
+typedef unsigned long PROPID;
+
+#ifndef _REFGUID_DEFINED
+#if defined (__cplusplus) && !defined (CINTERFACE)
+#define REFGUID const GUID&
+#define REFIID const IID&
+#define REFCLSID const CLSID&
+#else
+#define REFGUID const GUID* const
+#define REFIID const IID* const
+#define REFCLSID const CLSID* const
+#endif
+#define _REFGUID_DEFINED
+#define _REFGIID_DEFINED
+#define _REFCLSID_DEFINED
+#endif
+#ifndef GUID_SECTION
+#define GUID_SECTION ".text"
+#endif
+#ifdef __GNUC__
+#define GUID_SECT __attribute__ ((section (GUID_SECTION)))
+#else
+#define GUID_SECT
+#endif
+#if !defined(INITGUID) || (defined(INITGUID) && defined(__cplusplus))
+#define GUID_EXT EXTERN_C
+#else
+#define GUID_EXT
+#endif
+#ifdef INITGUID
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#else
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n
+#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#endif
+#endif
diff --git a/win32/include/winapi/winbase.h b/win32/include/winapi/winbase.h
new file mode 100644
index 0000000..edd1776
--- /dev/null
+++ b/win32/include/winapi/winbase.h
@@ -0,0 +1,1852 @@
+#ifndef _WINBASE_H
+#define _WINBASE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define WINBASEAPI DECLSPEC_IMPORT
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define SP_SERIALCOMM 1
+#define PST_UNSPECIFIED 0
+#define PST_RS232 1
+#define PST_PARALLELPORT 2
+#define PST_RS422 3
+#define PST_RS423 4
+#define PST_RS449 5
+#define PST_MODEM 6
+#define PST_FAX 0x21
+#define PST_SCANNER 0x22
+#define PST_NETWORK_BRIDGE 0x100
+#define PST_LAT 0x101
+#define PST_TCPIP_TELNET 0x102
+#define PST_X25 0x103
+#define BAUD_075 1
+#define BAUD_110 2
+#define BAUD_134_5 4
+#define BAUD_150 8
+#define BAUD_300 16
+#define BAUD_600 32
+#define BAUD_1200 64
+#define BAUD_1800 128
+#define BAUD_2400 256
+#define BAUD_4800 512
+#define BAUD_7200 1024
+#define BAUD_9600 2048
+#define BAUD_14400 4096
+#define BAUD_19200 8192
+#define BAUD_38400 16384
+#define BAUD_56K 32768
+#define BAUD_128K 65536
+#define BAUD_115200 131072
+#define BAUD_57600 262144
+#define BAUD_USER 0x10000000
+#define PCF_DTRDSR 1
+#define PCF_RTSCTS 2
+#define PCF_RLSD 4
+#define PCF_PARITY_CHECK 8
+#define PCF_XONXOFF 16
+#define PCF_SETXCHAR 32
+#define PCF_TOTALTIMEOUTS 64
+#define PCF_INTTIMEOUTS 128
+#define PCF_SPECIALCHARS 256
+#define PCF_16BITMODE 512
+#define SP_PARITY 1
+#define SP_BAUD 2
+#define SP_DATABITS 4
+#define SP_STOPBITS 8
+#define SP_HANDSHAKING 16
+#define SP_PARITY_CHECK 32
+#define SP_RLSD 64
+#define DATABITS_5 1
+#define DATABITS_6 2
+#define DATABITS_7 4
+#define DATABITS_8 8
+#define DATABITS_16 16
+#define DATABITS_16X 32
+#define STOPBITS_10 1
+#define STOPBITS_15 2
+#define STOPBITS_20 4
+#define PARITY_NONE 256
+#define PARITY_ODD 512
+#define PARITY_EVEN 1024
+#define PARITY_MARK 2048
+#define PARITY_SPACE 4096
+#define EXCEPTION_DEBUG_EVENT 1
+#define CREATE_THREAD_DEBUG_EVENT 2
+#define CREATE_PROCESS_DEBUG_EVENT 3
+#define EXIT_THREAD_DEBUG_EVENT 4
+#define EXIT_PROCESS_DEBUG_EVENT 5
+#define LOAD_DLL_DEBUG_EVENT 6
+#define UNLOAD_DLL_DEBUG_EVENT 7
+#define OUTPUT_DEBUG_STRING_EVENT 8
+#define RIP_EVENT 9
+#define HFILE_ERROR ((HFILE)-1)
+#define FILE_BEGIN 0
+#define FILE_CURRENT 1
+#define FILE_END 2
+#define INVALID_SET_FILE_POINTER ((DWORD)-1)
+#define OF_READ 0
+#define OF_READWRITE 2
+#define OF_WRITE 1
+#define OF_SHARE_COMPAT 0
+#define OF_SHARE_DENY_NONE 64
+#define OF_SHARE_DENY_READ 48
+#define OF_SHARE_DENY_WRITE 32
+#define OF_SHARE_EXCLUSIVE 16
+#define OF_CANCEL 2048
+#define OF_CREATE 4096
+#define OF_DELETE 512
+#define OF_EXIST 16384
+#define OF_PARSE 256
+#define OF_PROMPT 8192
+#define OF_REOPEN 32768
+#define OF_VERIFY 1024
+#define NMPWAIT_NOWAIT 1
+#define NMPWAIT_WAIT_FOREVER (-1)
+#define NMPWAIT_USE_DEFAULT_WAIT 0
+#define CE_BREAK 16
+#define CE_DNS 2048
+#define CE_FRAME 8
+#define CE_IOE 1024
+#define CE_MODE 32768
+#define CE_OOP 4096
+#define CE_OVERRUN 2
+#define CE_PTO 512
+#define CE_RXOVER 1
+#define CE_RXPARITY 4
+#define CE_TXFULL 256
+#define PROGRESS_CONTINUE 0
+#define PROGRESS_CANCEL 1
+#define PROGRESS_STOP 2
+#define PROGRESS_QUIET 3
+#define CALLBACK_CHUNK_FINISHED 0
+#define CALLBACK_STREAM_SWITCH 1
+#define COPY_FILE_FAIL_IF_EXISTS 1
+#define COPY_FILE_RESTARTABLE 2
+#define OFS_MAXPATHNAME 128
+#define DUPLICATE_CLOSE_SOURCE 1
+#define DUPLICATE_SAME_ACCESS 2
+#define FILE_MAP_ALL_ACCESS 0xf001f
+#define FILE_MAP_READ 4
+#define FILE_MAP_WRITE 2
+#define FILE_MAP_COPY 1
+#define MUTEX_ALL_ACCESS 0x1f0001
+#define MUTEX_MODIFY_STATE 1
+#define SEMAPHORE_ALL_ACCESS 0x1f0003
+#define SEMAPHORE_MODIFY_STATE 2
+#define EVENT_ALL_ACCESS 0x1f0003
+#define EVENT_MODIFY_STATE 2
+#define PIPE_ACCESS_DUPLEX 3
+#define PIPE_ACCESS_INBOUND 1
+#define PIPE_ACCESS_OUTBOUND 2
+#define PIPE_TYPE_BYTE 0
+#define PIPE_TYPE_MESSAGE 4
+#define PIPE_READMODE_BYTE 0
+#define PIPE_READMODE_MESSAGE 2
+#define PIPE_WAIT 0
+#define PIPE_NOWAIT 1
+#define PIPE_CLIENT_END 0
+#define PIPE_SERVER_END 1
+#define PIPE_UNLIMITED_INSTANCES 255
+#define CREATE_DEFAULT_ERROR_MODE 67108864
+#define DEBUG_PROCESS 1
+#define DEBUG_ONLY_THIS_PROCESS 2
+#define CREATE_SUSPENDED 4
+#define DETACHED_PROCESS 8
+#define CREATE_NEW_CONSOLE 16
+#define NORMAL_PRIORITY_CLASS 32
+#define IDLE_PRIORITY_CLASS 64
+#define HIGH_PRIORITY_CLASS 128
+#define REALTIME_PRIORITY_CLASS 256
+#define CREATE_NEW_PROCESS_GROUP 512
+#define CREATE_UNICODE_ENVIRONMENT 1024
+#define CREATE_SEPARATE_WOW_VDM 2048
+#define CREATE_SHARED_WOW_VDM 4096
+#define CREATE_FORCEDOS 8192
+#define CREATE_NO_WINDOW 0x8000000
+#define CONSOLE_TEXTMODE_BUFFER 1
+#define CREATE_NEW 1
+#define CREATE_ALWAYS 2
+#define OPEN_EXISTING 3
+#define OPEN_ALWAYS 4
+#define TRUNCATE_EXISTING 5
+#define FILE_FLAG_WRITE_THROUGH 0x80000000
+#define FILE_FLAG_OVERLAPPED 1073741824
+#define FILE_FLAG_NO_BUFFERING 536870912
+#define FILE_FLAG_RANDOM_ACCESS 268435456
+#define FILE_FLAG_SEQUENTIAL_SCAN 134217728
+#define FILE_FLAG_DELETE_ON_CLOSE 67108864
+#define FILE_FLAG_BACKUP_SEMANTICS 33554432
+#define FILE_FLAG_POSIX_SEMANTICS 16777216
+#define FILE_FLAG_OPEN_REPARSE_POINT 2097152
+#define FILE_FLAG_OPEN_NO_RECALL 1048576
+#define CLRDTR 6
+#define CLRRTS 4
+#define SETDTR 5
+#define SETRTS 3
+#define SETXOFF 1
+#define SETXON 2
+#define SETBREAK 8
+#define CLRBREAK 9
+#define STILL_ACTIVE 0x103
+#define FIND_FIRST_EX_CASE_SENSITIVE 1
+#define SCS_32BIT_BINARY 0
+#define SCS_DOS_BINARY 1
+#define SCS_OS216_BINARY 5
+#define SCS_PIF_BINARY 3
+#define SCS_POSIX_BINARY 4
+#define SCS_WOW_BINARY 2
+#define MAX_COMPUTERNAME_LENGTH 15
+#define HW_PROFILE_GUIDLEN 39
+#define MAX_PROFILE_LEN 80
+#define DOCKINFO_UNDOCKED 1
+#define DOCKINFO_DOCKED 2
+#define DOCKINFO_USER_SUPPLIED 4
+#define DOCKINFO_USER_UNDOCKED (DOCKINFO_USER_SUPPLIED|DOCKINFO_UNDOCKED)
+#define DOCKINFO_USER_DOCKED (DOCKINFO_USER_SUPPLIED|DOCKINFO_DOCKED)
+#define DRIVE_REMOVABLE 2
+#define DRIVE_FIXED 3
+#define DRIVE_REMOTE 4
+#define DRIVE_CDROM 5
+#define DRIVE_RAMDISK 6
+#define DRIVE_UNKNOWN 0
+#define DRIVE_NO_ROOT_DIR 1
+#define FILE_TYPE_UNKNOWN 0
+#define FILE_TYPE_DISK 1
+#define FILE_TYPE_CHAR 2
+#define FILE_TYPE_PIPE 3
+#define FILE_TYPE_REMOTE 0x8000
+#define HANDLE_FLAG_INHERIT 1
+#define HANDLE_FLAG_PROTECT_FROM_CLOSE 2
+#define STD_INPUT_HANDLE (DWORD)(0xfffffff6)
+#define STD_OUTPUT_HANDLE (DWORD)(0xfffffff5)
+#define STD_ERROR_HANDLE (DWORD)(0xfffffff4)
+#define INVALID_HANDLE_VALUE (HANDLE)(-1)
+#define GET_TAPE_MEDIA_INFORMATION 0
+#define GET_TAPE_DRIVE_INFORMATION 1
+#define SET_TAPE_MEDIA_INFORMATION 0
+#define SET_TAPE_DRIVE_INFORMATION 1
+#define THREAD_PRIORITY_ABOVE_NORMAL 1
+#define THREAD_PRIORITY_BELOW_NORMAL (-1)
+#define THREAD_PRIORITY_HIGHEST 2
+#define THREAD_PRIORITY_IDLE (-15)
+#define THREAD_PRIORITY_LOWEST (-2)
+#define THREAD_PRIORITY_NORMAL 0
+#define THREAD_PRIORITY_TIME_CRITICAL 15
+#define THREAD_PRIORITY_ERROR_RETURN 2147483647
+#define TIME_ZONE_ID_UNKNOWN 0
+#define TIME_ZONE_ID_STANDARD 1
+#define TIME_ZONE_ID_DAYLIGHT 2
+#define TIME_ZONE_ID_INVALID 0xFFFFFFFF
+#define FS_CASE_IS_PRESERVED 2
+#define FS_CASE_SENSITIVE 1
+#define FS_UNICODE_STORED_ON_DISK 4
+#define FS_PERSISTENT_ACLS 8
+#define FS_FILE_COMPRESSION 16
+#define FS_VOL_IS_COMPRESSED 32768
+#define GMEM_FIXED 0
+#define GMEM_MOVEABLE 2
+#define GMEM_MODIFY 128
+#define GPTR 64
+#define GHND 66
+#define GMEM_DDESHARE 8192
+#define GMEM_DISCARDABLE 256
+#define GMEM_LOWER 4096
+#define GMEM_NOCOMPACT 16
+#define GMEM_NODISCARD 32
+#define GMEM_NOT_BANKED 4096
+#define GMEM_NOTIFY 16384
+#define GMEM_SHARE 8192
+#define GMEM_ZEROINIT 64
+#define GMEM_DISCARDED 16384
+#define GMEM_INVALID_HANDLE 32768
+#define GMEM_LOCKCOUNT 255
+#define STATUS_WAIT_0 0
+#define STATUS_ABANDONED_WAIT_0 0x80
+#define STATUS_USER_APC 0xC0
+#define STATUS_TIMEOUT 0x102
+#define STATUS_PENDING 0x103
+#define STATUS_SEGMENT_NOTIFICATION 0x40000005
+#define STATUS_GUARD_PAGE_VIOLATION 0x80000001
+#define STATUS_DATATYPE_MISALIGNMENT 0x80000002
+#define STATUS_BREAKPOINT 0x80000003
+#define STATUS_SINGLE_STEP 0x80000004
+#define STATUS_ACCESS_VIOLATION 0xC0000005
+#define STATUS_IN_PAGE_ERROR 0xC0000006
+#define STATUS_INVALID_HANDLE 0xC0000008L
+#define STATUS_NO_MEMORY 0xC0000017
+#define STATUS_ILLEGAL_INSTRUCTION 0xC000001D
+#define STATUS_NONCONTINUABLE_EXCEPTION 0xC0000025
+#define STATUS_INVALID_DISPOSITION 0xC0000026
+#define STATUS_ARRAY_BOUNDS_EXCEEDED 0xC000008C
+#define STATUS_FLOAT_DENORMAL_OPERAND 0xC000008D
+#define STATUS_FLOAT_DIVIDE_BY_ZERO 0xC000008E
+#define STATUS_FLOAT_INEXACT_RESULT 0xC000008F
+#define STATUS_FLOAT_INVALID_OPERATION 0xC0000090
+#define STATUS_FLOAT_OVERFLOW 0xC0000091
+#define STATUS_FLOAT_STACK_CHECK 0xC0000092
+#define STATUS_FLOAT_UNDERFLOW 0xC0000093
+#define STATUS_INTEGER_DIVIDE_BY_ZERO 0xC0000094
+#define STATUS_INTEGER_OVERFLOW 0xC0000095
+#define STATUS_PRIVILEGED_INSTRUCTION 0xC0000096
+#define STATUS_STACK_OVERFLOW 0xC00000FD
+#define STATUS_CONTROL_C_EXIT 0xC000013A
+#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
+#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
+#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
+#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
+#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
+#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
+#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
+#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
+#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
+#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
+#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
+#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
+#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
+#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
+#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
+#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
+#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION
+#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION
+#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW
+#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION
+#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION
+#define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE
+#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT
+#define PROCESS_HEAP_REGION 1
+#define PROCESS_HEAP_UNCOMMITTED_RANGE 2
+#define PROCESS_HEAP_ENTRY_BUSY 4
+#define PROCESS_HEAP_ENTRY_MOVEABLE 16
+#define PROCESS_HEAP_ENTRY_DDESHARE 32
+#define DONT_RESOLVE_DLL_REFERENCES 1
+#define LOAD_LIBRARY_AS_DATAFILE 2
+#define LOAD_WITH_ALTERED_SEARCH_PATH 8
+#define LMEM_FIXED 0
+#define LMEM_MOVEABLE 2
+#define LMEM_NONZEROLHND 2
+#define LMEM_NONZEROLPTR 0
+#define LMEM_DISCARDABLE 3840
+#define LMEM_NOCOMPACT 16
+#define LMEM_NODISCARD 32
+#define LMEM_ZEROINIT 64
+#define LMEM_DISCARDED 16384
+#define LMEM_MODIFY 128
+#define LMEM_INVALID_HANDLE 32768
+#define LMEM_LOCKCOUNT 255
+#define LPTR 64
+#define LHND 66
+#define NONZEROLHND 2
+#define NONZEROLPTR 0
+#define LOCKFILE_FAIL_IMMEDIATELY 1
+#define LOCKFILE_EXCLUSIVE_LOCK 2
+#define LOGON32_PROVIDER_DEFAULT 0
+#define LOGON32_PROVIDER_WINNT35 1
+#define LOGON32_LOGON_INTERACTIVE 2
+#define LOGON32_LOGON_BATCH 4
+#define LOGON32_LOGON_SERVICE 5
+#define MOVEFILE_REPLACE_EXISTING 1
+#define MOVEFILE_COPY_ALLOWED 2
+#define MOVEFILE_DELAY_UNTIL_REBOOT 4
+#define MOVEFILE_WRITE_THROUGH 8
+#define MAXIMUM_WAIT_OBJECTS 64
+#define MAXIMUM_SUSPEND_COUNT 0x7F
+#define WAIT_OBJECT_0 0
+#define WAIT_ABANDONED_0 128
+#define WAIT_TIMEOUT 0x102
+#define WAIT_IO_COMPLETION 0xC0
+#define WAIT_ABANDONED 128
+#define WAIT_FAILED 0xFFFFFFFF
+#define PURGE_TXABORT 1
+#define PURGE_RXABORT 2
+#define PURGE_TXCLEAR 4
+#define PURGE_RXCLEAR 8
+#define EVENTLOG_FORWARDS_READ 4
+#define EVENTLOG_BACKWARDS_READ 8
+#define EVENTLOG_SEEK_READ 2
+#define EVENTLOG_SEQUENTIAL_READ 1
+#define EVENTLOG_ERROR_TYPE 1
+#define EVENTLOG_WARNING_TYPE 2
+#define EVENTLOG_INFORMATION_TYPE 4
+#define EVENTLOG_AUDIT_SUCCESS 8
+#define EVENTLOG_AUDIT_FAILURE 16
+#define FORMAT_MESSAGE_ALLOCATE_BUFFER 256
+#define FORMAT_MESSAGE_IGNORE_INSERTS 512
+#define FORMAT_MESSAGE_FROM_STRING 1024
+#define FORMAT_MESSAGE_FROM_HMODULE 2048
+#define FORMAT_MESSAGE_FROM_SYSTEM 4096
+#define FORMAT_MESSAGE_ARGUMENT_ARRAY 8192
+#define FORMAT_MESSAGE_MAX_WIDTH_MASK 255
+#define EV_BREAK 64
+#define EV_CTS 8
+#define EV_DSR 16
+#define EV_ERR 128
+#define EV_EVENT1 2048
+#define EV_EVENT2 4096
+#define EV_PERR 512
+#define EV_RING 256
+#define EV_RLSD 32
+#define EV_RX80FULL 1024
+#define EV_RXCHAR 1
+#define EV_RXFLAG 2
+#define EV_TXEMPTY 4
+#define SEM_FAILCRITICALERRORS 1
+#define SEM_NOALIGNMENTFAULTEXCEPT 4
+#define SEM_NOGPFAULTERRORBOX 2
+#define SEM_NOOPENFILEERRORBOX 32768
+#define SLE_ERROR 1
+#define SLE_MINORERROR 2
+#define SLE_WARNING 3
+#define SHUTDOWN_NORETRY 1
+#define EXCEPTION_EXECUTE_HANDLER 1
+#define EXCEPTION_CONTINUE_EXECUTION (-1)
+#define EXCEPTION_CONTINUE_SEARCH 0
+#define MAXINTATOM 0xC000
+#define INVALID_ATOM ((ATOM)0)
+#define IGNORE 0
+#define INFINITE 0xFFFFFFFF
+#define NOPARITY 0
+#define ODDPARITY 1
+#define EVENPARITY 2
+#define MARKPARITY 3
+#define SPACEPARITY 4
+#define ONESTOPBIT 0
+#define ONE5STOPBITS 1
+#define TWOSTOPBITS 2
+#define CBR_110 110
+#define CBR_300 300
+#define CBR_600 600
+#define CBR_1200 1200
+#define CBR_2400 2400
+#define CBR_4800 4800
+#define CBR_9600 9600
+#define CBR_14400 14400
+#define CBR_19200 19200
+#define CBR_38400 38400
+#define CBR_56000 56000
+#define CBR_57600 57600
+#define CBR_115200 115200
+#define CBR_128000 128000
+#define CBR_256000 256000
+#define BACKUP_INVALID 0
+#define BACKUP_DATA 1
+#define BACKUP_EA_DATA 2
+#define BACKUP_SECURITY_DATA 3
+#define BACKUP_ALTERNATE_DATA 4
+#define BACKUP_LINK 5
+#define BACKUP_PROPERTY_DATA 6
+#define BACKUP_OBJECT_ID 7
+#define BACKUP_REPARSE_DATA 8
+#define BACKUP_SPARSE_BLOCK 9
+#define STREAM_NORMAL_ATTRIBUTE 0
+#define STREAM_MODIFIED_WHEN_READ 1
+#define STREAM_CONTAINS_SECURITY 2
+#define STREAM_CONTAINS_PROPERTIES 4
+#define STARTF_USESHOWWINDOW 1
+#define STARTF_USESIZE 2
+#define STARTF_USEPOSITION 4
+#define STARTF_USECOUNTCHARS 8
+#define STARTF_USEFILLATTRIBUTE 16
+#define STARTF_RUNFULLSCREEN 32
+#define STARTF_FORCEONFEEDBACK 64
+#define STARTF_FORCEOFFFEEDBACK 128
+#define STARTF_USESTDHANDLES 256
+#define STARTF_USEHOTKEY 512
+#define TC_NORMAL 0
+#define TC_HARDERR 1
+#define TC_GP_TRAP 2
+#define TC_SIGNAL 3
+#define AC_LINE_OFFLINE 0
+#define AC_LINE_ONLINE 1
+#define AC_LINE_BACKUP_POWER 2
+#define AC_LINE_UNKNOWN 255
+#define BATTERY_FLAG_HIGH 1
+#define BATTERY_FLAG_LOW 2
+#define BATTERY_FLAG_CRITICAL 4
+#define BATTERY_FLAG_CHARGING 8
+#define BATTERY_FLAG_NO_BATTERY 128
+#define BATTERY_FLAG_UNKNOWN 255
+#define BATTERY_PERCENTAGE_UNKNOWN 255
+#define BATTERY_LIFE_UNKNOWN 0xFFFFFFFF
+#define DDD_RAW_TARGET_PATH 1
+#define DDD_REMOVE_DEFINITION 2
+#define DDD_EXACT_MATCH_ON_REMOVE 4
+#define HINSTANCE_ERROR 32
+#define MS_CTS_ON 16
+#define MS_DSR_ON 32
+#define MS_RING_ON 64
+#define MS_RLSD_ON 128
+#define PROFILE_USER 0x10000000
+#define PROFILE_KERNEL 0x20000000
+#define PROFILE_SERVER 0x40000000
+#define DTR_CONTROL_DISABLE 0
+#define DTR_CONTROL_ENABLE 1
+#define DTR_CONTROL_HANDSHAKE 2
+#define RTS_CONTROL_DISABLE 0
+#define RTS_CONTROL_ENABLE 1
+#define RTS_CONTROL_HANDSHAKE 2
+#define RTS_CONTROL_TOGGLE 3
+#define SECURITY_ANONYMOUS (SecurityAnonymous<<16)
+#define SECURITY_IDENTIFICATION (SecurityIdentification<<16)
+#define SECURITY_IMPERSONATION (SecurityImpersonation<<16)
+#define SECURITY_DELEGATION (SecurityDelegation<<16)
+#define SECURITY_CONTEXT_TRACKING 0x40000
+#define SECURITY_EFFECTIVE_ONLY 0x80000
+#define SECURITY_SQOS_PRESENT 0x100000
+#define SECURITY_VALID_SQOS_FLAGS 0x1F0000
+#define INVALID_FILE_SIZE 0xFFFFFFFF
+#define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF
+
+#ifndef RC_INVOKED
+typedef struct _FILETIME {
+ DWORD dwLowDateTime;
+ DWORD dwHighDateTime;
+} FILETIME,*PFILETIME,*LPFILETIME;
+typedef struct _BY_HANDLE_FILE_INFORMATION {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD dwVolumeSerialNumber;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ DWORD nNumberOfLinks;
+ DWORD nFileIndexHigh;
+ DWORD nFileIndexLow;
+} BY_HANDLE_FILE_INFORMATION,*LPBY_HANDLE_FILE_INFORMATION;
+typedef struct _DCB {
+ DWORD DCBlength;
+ DWORD BaudRate;
+ DWORD fBinary:1;
+ DWORD fParity:1;
+ DWORD fOutxCtsFlow:1;
+ DWORD fOutxDsrFlow:1;
+ DWORD fDtrControl:2;
+ DWORD fDsrSensitivity:1;
+ DWORD fTXContinueOnXoff:1;
+ DWORD fOutX:1;
+ DWORD fInX:1;
+ DWORD fErrorChar:1;
+ DWORD fNull:1;
+ DWORD fRtsControl:2;
+ DWORD fAbortOnError:1;
+ DWORD fDummy2:17;
+ WORD wReserved;
+ WORD XonLim;
+ WORD XoffLim;
+ BYTE ByteSize;
+ BYTE Parity;
+ BYTE StopBits;
+ char XonChar;
+ char XoffChar;
+ char ErrorChar;
+ char EofChar;
+ char EvtChar;
+ WORD wReserved1;
+} DCB,*LPDCB;
+typedef struct _COMM_CONFIG {
+ DWORD dwSize;
+ WORD wVersion;
+ WORD wReserved;
+ DCB dcb;
+ DWORD dwProviderSubType;
+ DWORD dwProviderOffset;
+ DWORD dwProviderSize;
+ WCHAR wcProviderData[1];
+} COMMCONFIG,*LPCOMMCONFIG;
+typedef struct _COMMPROP {
+ WORD wPacketLength;
+ WORD wPacketVersion;
+ DWORD dwServiceMask;
+ DWORD dwReserved1;
+ DWORD dwMaxTxQueue;
+ DWORD dwMaxRxQueue;
+ DWORD dwMaxBaud;
+ DWORD dwProvSubType;
+ DWORD dwProvCapabilities;
+ DWORD dwSettableParams;
+ DWORD dwSettableBaud;
+ WORD wSettableData;
+ WORD wSettableStopParity;
+ DWORD dwCurrentTxQueue;
+ DWORD dwCurrentRxQueue;
+ DWORD dwProvSpec1;
+ DWORD dwProvSpec2;
+ WCHAR wcProvChar[1];
+} COMMPROP,*LPCOMMPROP;
+typedef struct _COMMTIMEOUTS {
+ DWORD ReadIntervalTimeout;
+ DWORD ReadTotalTimeoutMultiplier;
+ DWORD ReadTotalTimeoutConstant;
+ DWORD WriteTotalTimeoutMultiplier;
+ DWORD WriteTotalTimeoutConstant;
+} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
+typedef struct _COMSTAT {
+ DWORD fCtsHold:1;
+ DWORD fDsrHold:1;
+ DWORD fRlsdHold:1;
+ DWORD fXoffHold:1;
+ DWORD fXoffSent:1;
+ DWORD fEof:1;
+ DWORD fTxim:1;
+ DWORD fReserved:25;
+ DWORD cbInQue;
+ DWORD cbOutQue;
+} COMSTAT,*LPCOMSTAT;
+typedef DWORD (WINAPI *LPTHREAD_START_ROUTINE)(LPVOID);
+typedef struct _CREATE_PROCESS_DEBUG_INFO {
+ HANDLE hFile;
+ HANDLE hProcess;
+ HANDLE hThread;
+ LPVOID lpBaseOfImage;
+ DWORD dwDebugInfoFileOffset;
+ DWORD nDebugInfoSize;
+ LPVOID lpThreadLocalBase;
+ LPTHREAD_START_ROUTINE lpStartAddress;
+ LPVOID lpImageName;
+ WORD fUnicode;
+} CREATE_PROCESS_DEBUG_INFO,*LPCREATE_PROCESS_DEBUG_INFO;
+typedef struct _CREATE_THREAD_DEBUG_INFO {
+ HANDLE hThread;
+ LPVOID lpThreadLocalBase;
+ LPTHREAD_START_ROUTINE lpStartAddress;
+} CREATE_THREAD_DEBUG_INFO,*LPCREATE_THREAD_DEBUG_INFO;
+typedef struct _EXCEPTION_DEBUG_INFO {
+ EXCEPTION_RECORD ExceptionRecord;
+ DWORD dwFirstChance;
+} EXCEPTION_DEBUG_INFO,*LPEXCEPTION_DEBUG_INFO;
+typedef struct _EXIT_THREAD_DEBUG_INFO {
+ DWORD dwExitCode;
+} EXIT_THREAD_DEBUG_INFO,*LPEXIT_THREAD_DEBUG_INFO;
+typedef struct _EXIT_PROCESS_DEBUG_INFO {
+ DWORD dwExitCode;
+} EXIT_PROCESS_DEBUG_INFO,*LPEXIT_PROCESS_DEBUG_INFO;
+typedef struct _LOAD_DLL_DEBUG_INFO {
+ HANDLE hFile;
+ LPVOID lpBaseOfDll;
+ DWORD dwDebugInfoFileOffset;
+ DWORD nDebugInfoSize;
+ LPVOID lpImageName;
+ WORD fUnicode;
+} LOAD_DLL_DEBUG_INFO,*LPLOAD_DLL_DEBUG_INFO;
+typedef struct _UNLOAD_DLL_DEBUG_INFO {
+ LPVOID lpBaseOfDll;
+} UNLOAD_DLL_DEBUG_INFO,*LPUNLOAD_DLL_DEBUG_INFO;
+typedef struct _OUTPUT_DEBUG_STRING_INFO {
+ LPSTR lpDebugStringData;
+ WORD fUnicode;
+ WORD nDebugStringLength;
+} OUTPUT_DEBUG_STRING_INFO,*LPOUTPUT_DEBUG_STRING_INFO;
+typedef struct _RIP_INFO {
+ DWORD dwError;
+ DWORD dwType;
+} RIP_INFO,*LPRIP_INFO;
+typedef struct _DEBUG_EVENT {
+ DWORD dwDebugEventCode;
+ DWORD dwProcessId;
+ DWORD dwThreadId;
+ union {
+ EXCEPTION_DEBUG_INFO Exception;
+ CREATE_THREAD_DEBUG_INFO CreateThread;
+ CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
+ EXIT_THREAD_DEBUG_INFO ExitThread;
+ EXIT_PROCESS_DEBUG_INFO ExitProcess;
+ LOAD_DLL_DEBUG_INFO LoadDll;
+ UNLOAD_DLL_DEBUG_INFO UnloadDll;
+ OUTPUT_DEBUG_STRING_INFO DebugString;
+ RIP_INFO RipInfo;
+ } u;
+} DEBUG_EVENT,*LPDEBUG_EVENT;
+typedef struct _OVERLAPPED {
+ DWORD Internal;
+ DWORD InternalHigh;
+ DWORD Offset;
+ DWORD OffsetHigh;
+ HANDLE hEvent;
+} OVERLAPPED,*POVERLAPPED,*LPOVERLAPPED;
+typedef struct _STARTUPINFOA {
+ DWORD cb;
+ LPSTR lpReserved;
+ LPSTR lpDesktop;
+ LPSTR lpTitle;
+ DWORD dwX;
+ DWORD dwY;
+ DWORD dwXSize;
+ DWORD dwYSize;
+ DWORD dwXCountChars;
+ DWORD dwYCountChars;
+ DWORD dwFillAttribute;
+ DWORD dwFlags;
+ WORD wShowWindow;
+ WORD cbReserved2;
+ PBYTE lpReserved2;
+ HANDLE hStdInput;
+ HANDLE hStdOutput;
+ HANDLE hStdError;
+} STARTUPINFOA,*LPSTARTUPINFOA;
+typedef struct _STARTUPINFOW {
+ DWORD cb;
+ LPWSTR lpReserved;
+ LPWSTR lpDesktop;
+ LPWSTR lpTitle;
+ DWORD dwX;
+ DWORD dwY;
+ DWORD dwXSize;
+ DWORD dwYSize;
+ DWORD dwXCountChars;
+ DWORD dwYCountChars;
+ DWORD dwFillAttribute;
+ DWORD dwFlags;
+ WORD wShowWindow;
+ WORD cbReserved2;
+ PBYTE lpReserved2;
+ HANDLE hStdInput;
+ HANDLE hStdOutput;
+ HANDLE hStdError;
+} STARTUPINFOW,*LPSTARTUPINFOW;
+typedef struct _PROCESS_INFORMATION {
+ HANDLE hProcess;
+ HANDLE hThread;
+ DWORD dwProcessId;
+ DWORD dwThreadId;
+} PROCESS_INFORMATION,*LPPROCESS_INFORMATION;
+typedef struct _CRITICAL_SECTION_DEBUG {
+ WORD Type;
+ WORD CreatorBackTraceIndex;
+ struct _CRITICAL_SECTION *CriticalSection;
+ LIST_ENTRY ProcessLocksList;
+ DWORD EntryCount;
+ DWORD ContentionCount;
+ DWORD Spare [2];
+} CRITICAL_SECTION_DEBUG,*PCRITICAL_SECTION_DEBUG;
+typedef struct _CRITICAL_SECTION {
+ PCRITICAL_SECTION_DEBUG DebugInfo;
+ LONG LockCount;
+ LONG RecursionCount;
+ HANDLE OwningThread;
+ HANDLE LockSemaphore;
+ DWORD SpinCount;
+} CRITICAL_SECTION,*PCRITICAL_SECTION,*LPCRITICAL_SECTION;
+typedef struct _SYSTEMTIME {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+} SYSTEMTIME,*LPSYSTEMTIME;
+typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+} WIN32_FILE_ATTRIBUTE_DATA,*LPWIN32_FILE_ATTRIBUTE_DATA;
+typedef struct _WIN32_FIND_DATAA {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ DWORD dwReserved0;
+ DWORD dwReserved1;
+ CHAR cFileName[MAX_PATH];
+ CHAR cAlternateFileName[14];
+} WIN32_FIND_DATAA,*LPWIN32_FIND_DATAA;
+typedef struct _WIN32_FIND_DATAW {
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ DWORD dwReserved0;
+ DWORD dwReserved1;
+ WCHAR cFileName[MAX_PATH];
+ WCHAR cAlternateFileName[14];
+} WIN32_FIND_DATAW,*LPWIN32_FIND_DATAW;
+typedef struct _WIN32_STREAM_ID {
+ DWORD dwStreamId;
+ DWORD dwStreamAttributes;
+ LARGE_INTEGER Size;
+ DWORD dwStreamNameSize;
+ WCHAR cStreamName[ANYSIZE_ARRAY];
+} WIN32_STREAM_ID;
+typedef enum _FINDEX_INFO_LEVELS {
+ FindExInfoStandard,
+ FindExInfoMaxInfoLevel
+} FINDEX_INFO_LEVELS;
+typedef enum _FINDEX_SEARCH_OPS {
+ FindExSearchNameMatch,
+ FindExSearchLimitToDirectories,
+ FindExSearchLimitToDevices,
+ FindExSearchMaxSearchOp
+} FINDEX_SEARCH_OPS;
+typedef enum _ACL_INFORMATION_CLASS {
+ AclRevisionInformation=1,
+ AclSizeInformation
+} ACL_INFORMATION_CLASS;
+typedef struct tagHW_PROFILE_INFOA {
+ DWORD dwDockInfo;
+ CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+ CHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA;
+typedef struct tagHW_PROFILE_INFOW {
+ DWORD dwDockInfo;
+ WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
+ WCHAR szHwProfileName[MAX_PROFILE_LEN];
+} HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW;
+typedef enum _GET_FILEEX_INFO_LEVELS {
+ GetFileExInfoStandard,
+ GetFileExMaxInfoLevel
+} GET_FILEEX_INFO_LEVELS;
+typedef struct _SYSTEM_INFO {
+ _ANONYMOUS_UNION union {
+ DWORD dwOemId;
+ _ANONYMOUS_STRUCT struct {
+ WORD wProcessorArchitecture;
+ WORD wReserved;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ DWORD dwPageSize;
+ PVOID lpMinimumApplicationAddress;
+ PVOID lpMaximumApplicationAddress;
+ DWORD dwActiveProcessorMask;
+ DWORD dwNumberOfProcessors;
+ DWORD dwProcessorType;
+ DWORD dwAllocationGranularity;
+ WORD wProcessorLevel;
+ WORD wProcessorRevision;
+} SYSTEM_INFO,*LPSYSTEM_INFO;
+typedef struct _SYSTEM_POWER_STATUS {
+ BYTE ACLineStatus;
+ BYTE BatteryFlag;
+ BYTE BatteryLifePercent;
+ BYTE Reserved1;
+ DWORD BatteryLifeTime;
+ DWORD BatteryFullLifeTime;
+} SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS;
+typedef struct _TIME_ZONE_INFORMATION {
+ LONG Bias;
+ WCHAR StandardName[32];
+ SYSTEMTIME StandardDate;
+ LONG StandardBias;
+ WCHAR DaylightName[32];
+ SYSTEMTIME DaylightDate;
+ LONG DaylightBias;
+} TIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
+typedef struct _MEMORYSTATUS {
+ DWORD dwLength;
+ DWORD dwMemoryLoad;
+ DWORD dwTotalPhys;
+ DWORD dwAvailPhys;
+ DWORD dwTotalPageFile;
+ DWORD dwAvailPageFile;
+ DWORD dwTotalVirtual;
+ DWORD dwAvailVirtual;
+} MEMORYSTATUS,*LPMEMORYSTATUS;
+typedef struct _LDT_ENTRY {
+ WORD LimitLow;
+ WORD BaseLow;
+ union {
+ struct {
+ BYTE BaseMid;
+ BYTE Flags1;
+ BYTE Flags2;
+ BYTE BaseHi;
+ } Bytes;
+ struct {
+ DWORD BaseMid:8;
+ DWORD Type:5;
+ DWORD Dpl:2;
+ DWORD Pres:1;
+ DWORD LimitHi:4;
+ DWORD Sys:1;
+ DWORD Reserved_0:1;
+ DWORD Default_Big:1;
+ DWORD Granularity:1;
+ DWORD BaseHi:8;
+ } Bits;
+ } HighWord;
+} LDT_ENTRY,*PLDT_ENTRY,*LPLDT_ENTRY;
+typedef struct _PROCESS_HEAP_ENTRY {
+ PVOID lpData;
+ DWORD cbData;
+ BYTE cbOverhead;
+ BYTE iRegionIndex;
+ WORD wFlags;
+ _ANONYMOUS_UNION union {
+ struct {
+ HANDLE hMem;
+ DWORD dwReserved[3];
+ } Block;
+ struct {
+ DWORD dwCommittedSize;
+ DWORD dwUnCommittedSize;
+ LPVOID lpFirstBlock;
+ LPVOID lpLastBlock;
+ } Region;
+ } DUMMYUNIONNAME;
+} PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY;
+typedef struct _OFSTRUCT {
+ BYTE cBytes;
+ BYTE fFixedDisk;
+ WORD nErrCode;
+ WORD Reserved1;
+ WORD Reserved2;
+ CHAR szPathName[OFS_MAXPATHNAME];
+} OFSTRUCT,*LPOFSTRUCT,*POFSTRUCT;
+typedef struct _WIN_CERTIFICATE {
+ DWORD dwLength;
+ WORD wRevision;
+ WORD wCertificateType;
+ BYTE bCertificate[1];
+} WIN_CERTIFICATE, *LPWIN_CERTIFICATE;
+
+typedef DWORD(WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,LARGE_INTEGER,DWORD,DWORD,HANDLE,HANDLE,LPVOID);
+typedef void(WINAPI *LPFIBER_START_ROUTINE)(PVOID);
+typedef BOOL(CALLBACK *ENUMRESLANGPROC)(HMODULE,LPCTSTR,LPCTSTR,WORD,LONG);
+typedef BOOL(CALLBACK *ENUMRESNAMEPROC)(HMODULE,LPCTSTR,LPTSTR,LONG);
+typedef BOOL(CALLBACK *ENUMRESTYPEPROC)(HMODULE,LPTSTR,LONG);
+typedef void(CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD,DWORD,LPOVERLAPPED);
+typedef LONG(CALLBACK *PTOP_LEVEL_EXCEPTION_FILTER)(LPEXCEPTION_POINTERS);
+typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
+typedef void(APIENTRY *PAPCFUNC)(DWORD);
+typedef void(CALLBACK *PTIMERAPCROUTINE)(PVOID,DWORD,DWORD);
+#define MAKEINTATOM(i) (LPTSTR)((DWORD)((WORD)(i)))
+/* Functions */
+#ifndef UNDER_CE
+int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
+#else
+int APIENTRY WinMain(HINSTANCE,HINSTANCE,LPWSTR,int);
+#endif
+int APIENTRY wWinMain(HINSTANCE,HINSTANCE,LPWSTR,int);
+long WINAPI _hread(HFILE,LPVOID,long);
+long WINAPI _hwrite(HFILE,LPCSTR,long);
+HFILE WINAPI _lclose(HFILE);
+HFILE WINAPI _lcreat(LPCSTR,int);
+LONG WINAPI _llseek(HFILE,LONG,int);
+HFILE WINAPI _lopen(LPCSTR,int);
+UINT WINAPI _lread(HFILE,LPVOID,UINT);
+UINT WINAPI _lwrite(HFILE,LPCSTR,UINT);
+#define AbnormalTermination() FALSE
+BOOL WINAPI AccessCheck(PSECURITY_DESCRIPTOR,HANDLE,DWORD,PGENERIC_MAPPING,PPRIVILEGE_SET,PDWORD,PDWORD,PBOOL);
+BOOL WINAPI AccessCheckAndAuditAlarmA(LPCSTR,LPVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
+BOOL WINAPI AccessCheckAndAuditAlarmW(LPCWSTR,LPVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,DWORD,PGENERIC_MAPPING,BOOL,PDWORD,PBOOL,PBOOL);
+BOOL WINAPI AddAccessAllowedAce(PACL,DWORD,DWORD,PSID);
+BOOL WINAPI AddAccessDeniedAce(PACL,DWORD,DWORD,PSID);
+BOOL WINAPI AddAce(PACL,DWORD,DWORD,PVOID,DWORD);
+ATOM WINAPI AddAtomA(LPCSTR);
+ATOM WINAPI AddAtomW(LPCWSTR);
+BOOL WINAPI AddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL);
+BOOL WINAPI AdjustTokenGroups(HANDLE,BOOL,PTOKEN_GROUPS,DWORD,PTOKEN_GROUPS,PDWORD);
+BOOL WINAPI AdjustTokenPrivileges(HANDLE,BOOL,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD);
+BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID*);
+BOOL WINAPI AllocateLocallyUniqueId(PLUID);
+BOOL WINAPI AreAllAccessesGranted(DWORD,DWORD);
+BOOL WINAPI AreAnyAccessesGranted(DWORD,DWORD);
+BOOL WINAPI AreFileApisANSI(void);
+BOOL WINAPI BackupEventLogA(HANDLE,LPCSTR);
+BOOL WINAPI BackupEventLogW(HANDLE,LPCWSTR);
+BOOL WINAPI BackupRead(HANDLE,PBYTE,DWORD,PDWORD,BOOL,BOOL,PVOID);
+BOOL WINAPI BackupSeek(HANDLE,DWORD,DWORD,PDWORD,PDWORD,PVOID);
+BOOL WINAPI BackupWrite(HANDLE,PBYTE,DWORD,PDWORD,BOOL,BOOL,PVOID);
+BOOL WINAPI Beep(DWORD,DWORD);
+HANDLE WINAPI BeginUpdateResourceA(LPCSTR,BOOL);
+HANDLE WINAPI BeginUpdateResourceW(LPCWSTR,BOOL);
+BOOL WINAPI BuildCommDCBA(LPCSTR,LPDCB);
+BOOL WINAPI BuildCommDCBW(LPCWSTR,LPDCB);
+BOOL WINAPI BuildCommDCBAndTimeoutsA(LPCSTR,LPDCB,LPCOMMTIMEOUTS);
+BOOL WINAPI BuildCommDCBAndTimeoutsW(LPCWSTR,LPDCB,LPCOMMTIMEOUTS);
+BOOL WINAPI CallNamedPipeA(LPCSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD);
+BOOL WINAPI CallNamedPipeW(LPCWSTR,PVOID,DWORD,PVOID,DWORD,PDWORD,DWORD);
+BOOL WINAPI CancelIo(HANDLE);
+BOOL WINAPI CancelWaitableTimer(HANDLE);
+BOOL WINAPI ClearCommBreak(HANDLE);
+BOOL WINAPI ClearCommError(HANDLE,PDWORD,LPCOMSTAT);
+BOOL WINAPI ClearEventLogA(HANDLE,LPCSTR);
+BOOL WINAPI ClearEventLogW(HANDLE,LPCWSTR);
+BOOL WINAPI CloseEventLog(HANDLE);
+BOOL WINAPI CloseHandle(HANDLE);
+BOOL WINAPI CommConfigDialogA(LPCSTR,HWND,LPCOMMCONFIG);
+BOOL WINAPI CommConfigDialogW(LPCWSTR,HWND,LPCOMMCONFIG);
+LONG WINAPI CompareFileTime(CONST FILETIME*,CONST FILETIME*);
+BOOL WINAPI ConnectNamedPipe(HANDLE,LPOVERLAPPED);
+BOOL WINAPI ContinueDebugEvent(DWORD,DWORD,DWORD);
+PVOID WINAPI ConvertThreadToFiber(PVOID);
+BOOL WINAPI CopyFileA(LPCSTR,LPCSTR,BOOL);
+BOOL WINAPI CopyFileW(LPCWSTR,LPCWSTR,BOOL);
+BOOL WINAPI CopyFileExA(LPCSTR,LPCSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
+BOOL WINAPI CopyFileExW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
+#define RtlMoveMemory memmove
+#define RtlCopyMemory memcpy
+#define RtlFillMemory(d,l,f) memset((d), (f), (l))
+#define RtlZeroMemory(d,l) RtlFillMemory((d),(l),0)
+#define MoveMemory RtlMoveMemory
+#define CopyMemory RtlCopyMemory
+#define FillMemory RtlFillMemory
+#define ZeroMemory RtlZeroMemory
+BOOL WINAPI CopySid(DWORD,PSID,PSID);
+BOOL WINAPI CreateDirectoryA(LPCSTR,LPSECURITY_ATTRIBUTES);
+BOOL WINAPI CreateDirectoryW(LPCWSTR,LPSECURITY_ATTRIBUTES);
+BOOL WINAPI CreateDirectoryExA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
+BOOL WINAPI CreateDirectoryExW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateEventA(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR);
+HANDLE WINAPI CreateEventW(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCWSTR);
+LPVOID WINAPI CreateFiber(DWORD,LPFIBER_START_ROUTINE,LPVOID);
+HANDLE WINAPI CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
+HANDLE WINAPI CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE);
+HANDLE WINAPI CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR);
+HANDLE WINAPI CreateFileMappingW(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR);
+HANDLE WINAPI CreateHardLinkA(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateHardLinkW(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateIoCompletionPort(HANDLE,HANDLE,DWORD,DWORD);
+HANDLE WINAPI CreateMailslotA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateMailslotW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateMutexA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
+HANDLE WINAPI CreateMutexW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+HANDLE WINAPI CreateNamedPipeA(LPCSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HANDLE WINAPI CreateNamedPipeW(LPCWSTR,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+BOOL WINAPI CreatePipe(PHANDLE,PHANDLE,LPSECURITY_ATTRIBUTES,DWORD);
+BOOL WINAPI CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOL,HANDLE,PGENERIC_MAPPING);
+BOOL WINAPI CreateProcessA(LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
+BOOL WINAPI CreateProcessW(LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
+BOOL WINAPI CreateProcessAsUserA(HANDLE,LPCSTR,LPSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCSTR,LPSTARTUPINFOA,LPPROCESS_INFORMATION);
+BOOL WINAPI CreateProcessAsUserW(HANDLE,LPCWSTR,LPWSTR,LPSECURITY_ATTRIBUTES,LPSECURITY_ATTRIBUTES,BOOL,DWORD,PVOID,LPCWSTR,LPSTARTUPINFOW,LPPROCESS_INFORMATION);
+HANDLE WINAPI CreateRemoteThread(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,LPVOID,DWORD,LPDWORD);
+HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR);
+HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR);
+DWORD WINAPI CreateTapePartition(HANDLE,DWORD,DWORD,DWORD);
+HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES,DWORD,LPTHREAD_START_ROUTINE,PVOID,DWORD,PDWORD);
+HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES,BOOL,LPCSTR);
+HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES,BOOL,LPCWSTR);
+BOOL WINAPI DebugActiveProcess(DWORD);
+void WINAPI DebugBreak(void);
+BOOL WINAPI DefineDosDeviceA(DWORD,LPCSTR,LPCSTR);
+BOOL WINAPI DefineDosDeviceW(DWORD,LPCWSTR,LPCWSTR);
+#define DefineHandleTable(w) ((w),TRUE)
+BOOL WINAPI DeleteAce(PACL,DWORD);
+ATOM WINAPI DeleteAtom(ATOM);
+void WINAPI DeleteCriticalSection(PCRITICAL_SECTION);
+void WINAPI DeleteFiber(PVOID);
+BOOL WINAPI DeleteFileA(LPCSTR);
+BOOL WINAPI DeleteFileW(LPCWSTR);
+BOOL WINAPI DeregisterEventSource(HANDLE);
+BOOL WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*);
+BOOL WINAPI DeviceIoControl(HANDLE,DWORD,PVOID,DWORD,PVOID,DWORD,PDWORD,POVERLAPPED);
+BOOL WINAPI DisableThreadLibraryCalls(HMODULE);
+BOOL WINAPI DisconnectNamedPipe(HANDLE);
+BOOL WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
+BOOL WINAPI DuplicateHandle(HANDLE,HANDLE,HANDLE,PHANDLE,DWORD,BOOL,DWORD);
+BOOL WINAPI DuplicateToken(HANDLE,SECURITY_IMPERSONATION_LEVEL,PHANDLE);
+BOOL WINAPI DuplicateTokenEx(HANDLE,DWORD,LPSECURITY_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE);
+BOOL WINAPI EndUpdateResourceA(HANDLE,BOOL);
+BOOL WINAPI EndUpdateResourceW(HANDLE,BOOL);
+void WINAPI EnterCriticalSection(LPCRITICAL_SECTION);
+BOOL WINAPI EnumResourceLanguagesA(HINSTANCE,LPCSTR,LPCSTR,ENUMRESLANGPROC,LONG);
+BOOL WINAPI EnumResourceLanguagesW(HINSTANCE,LPCWSTR,LPCWSTR,ENUMRESLANGPROC,LONG);
+BOOL WINAPI EnumResourceNamesA(HINSTANCE,LPCSTR,ENUMRESNAMEPROC,LONG);
+BOOL WINAPI EnumResourceNamesW(HINSTANCE,LPCWSTR,ENUMRESNAMEPROC,LONG);
+BOOL WINAPI EnumResourceTypesA(HINSTANCE,ENUMRESTYPEPROC,LONG);
+BOOL WINAPI EnumResourceTypesW(HINSTANCE,ENUMRESTYPEPROC,LONG);
+BOOL WINAPI EqualPrefixSid(PSID,PSID);
+BOOL WINAPI EqualSid(PSID,PSID);
+DWORD WINAPI EraseTape(HANDLE,DWORD,BOOL);
+BOOL WINAPI EscapeCommFunction(HANDLE,DWORD);
+DECLSPEC_NORETURN void WINAPI ExitProcess(UINT);
+DECLSPEC_NORETURN void WINAPI ExitThread(DWORD);
+DWORD WINAPI ExpandEnvironmentStringsA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI ExpandEnvironmentStringsW(LPCWSTR,LPWSTR,DWORD);
+void WINAPI FatalAppExitA(UINT,LPCSTR);
+void WINAPI FatalAppExitW(UINT,LPCWSTR);
+void WINAPI FatalExit(int);
+BOOL WINAPI FileTimeToDosDateTime(CONST FILETIME *,LPWORD,LPWORD);
+BOOL WINAPI FileTimeToLocalFileTime(FILETIME *,LPFILETIME);
+BOOL WINAPI FileTimeToSystemTime(CONST FILETIME *,LPSYSTEMTIME);
+ATOM WINAPI FindAtomA(LPCSTR);
+ATOM WINAPI FindAtomW(LPCWSTR);
+BOOL WINAPI FindClose(HANDLE);
+BOOL WINAPI FindCloseChangeNotification(HANDLE);
+HANDLE WINAPI FindFirstChangeNotificationA(LPCSTR,BOOL,DWORD);
+HANDLE WINAPI FindFirstChangeNotificationW(LPCWSTR,BOOL,DWORD);
+HANDLE WINAPI FindFirstFileA(LPCSTR,LPWIN32_FIND_DATAA);
+HANDLE WINAPI FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW);
+HANDLE WINAPI FindFirstFileExA(LPCSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD);
+HANDLE WINAPI FindFirstFileExW(LPCWSTR,FINDEX_INFO_LEVELS,PVOID,FINDEX_SEARCH_OPS,PVOID,DWORD);
+BOOL WINAPI FindFirstFreeAce(PACL,PVOID*);
+BOOL WINAPI FindNextChangeNotification(HANDLE);
+BOOL WINAPI FindNextFileA(HANDLE,LPWIN32_FIND_DATAA);
+BOOL WINAPI FindNextFileW(HANDLE,LPWIN32_FIND_DATAW);
+HRSRC WINAPI FindResourceA(HMODULE,LPCSTR,LPCSTR);
+HRSRC WINAPI FindResourceW(HINSTANCE,LPCWSTR,LPCWSTR);
+HRSRC WINAPI FindResourceExA(HINSTANCE,LPCSTR,LPCSTR,WORD);
+HRSRC WINAPI FindResourceExW(HINSTANCE,LPCWSTR,LPCWSTR,WORD);
+BOOL WINAPI FlushFileBuffers(HANDLE);
+BOOL WINAPI FlushInstructionCache(HANDLE,PCVOID,DWORD);
+BOOL WINAPI FlushViewOfFile(PCVOID,DWORD);
+DWORD WINAPI FormatMessageA(DWORD,PCVOID,DWORD,DWORD,LPSTR,DWORD,va_list*);
+DWORD WINAPI FormatMessageW(DWORD,PCVOID,DWORD,DWORD,LPWSTR,DWORD,va_list*);
+BOOL WINAPI FreeEnvironmentStringsA(LPSTR);
+BOOL WINAPI FreeEnvironmentStringsW(LPWSTR);
+BOOL WINAPI FreeLibrary(HMODULE);
+DECLSPEC_NORETURN void WINAPI FreeLibraryAndExitThread(HMODULE,DWORD);
+#define FreeModule(m) FreeLibrary(m)
+#define FreeProcInstance(p) (void)(p)
+#ifndef XFree86Server
+BOOL WINAPI FreeResource(HGLOBAL);
+#endif /* ndef XFree86Server */
+PVOID WINAPI FreeSid(PSID);
+BOOL WINAPI GetAce(PACL,DWORD,PVOID);
+BOOL WINAPI GetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS);
+UINT WINAPI GetAtomNameA(ATOM,LPSTR,int);
+UINT WINAPI GetAtomNameW(ATOM,LPWSTR,int);
+BOOL WINAPI GetBinaryTypeA(LPCSTR,PDWORD);
+BOOL WINAPI GetBinaryTypeW(LPCWSTR,PDWORD);
+LPSTR WINAPI GetCommandLineA(VOID);
+LPWSTR WINAPI GetCommandLineW(VOID);
+BOOL WINAPI GetCommConfig(HANDLE,LPCOMMCONFIG,PDWORD);
+BOOL WINAPI GetCommMask(HANDLE,PDWORD);
+BOOL WINAPI GetCommModemStatus(HANDLE,PDWORD);
+BOOL WINAPI GetCommProperties(HANDLE,LPCOMMPROP);
+BOOL WINAPI GetCommState(HANDLE,LPDCB);
+BOOL WINAPI GetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
+DWORD WINAPI GetCompressedFileSizeA(LPCSTR,PDWORD);
+DWORD WINAPI GetCompressedFileSizeW(LPCWSTR,PDWORD);
+BOOL WINAPI GetComputerNameA(LPSTR,PDWORD);
+BOOL WINAPI GetComputerNameW(LPWSTR,PDWORD);
+DWORD WINAPI GetCurrentDirectoryA(DWORD,LPSTR);
+DWORD WINAPI GetCurrentDirectoryW(DWORD,LPWSTR);
+BOOL WINAPI GetCurrentHwProfileA(LPHW_PROFILE_INFOA);
+BOOL WINAPI GetCurrentHwProfileW(LPHW_PROFILE_INFOW);
+HANDLE WINAPI GetCurrentProcess(void);
+DWORD WINAPI GetCurrentProcessId(void);
+HANDLE WINAPI GetCurrentThread(void);
+DWORD WINAPI GetCurrentThreadId(void);
+#define GetCurrentTime GetTickCount
+BOOL WINAPI GetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,PDWORD);
+BOOL WINAPI GetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,PDWORD);
+BOOL WINAPI GetDiskFreeSpaceA(LPCSTR,PDWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI GetDiskFreeSpaceW(LPCWSTR,PDWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI GetDiskFreeSpaceExA(LPCSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
+BOOL WINAPI GetDiskFreeSpaceExW(LPCWSTR,PULARGE_INTEGER,PULARGE_INTEGER,PULARGE_INTEGER);
+UINT WINAPI GetDriveTypeA(LPCSTR);
+UINT WINAPI GetDriveTypeW(LPCWSTR);
+LPSTR WINAPI GetEnvironmentStrings(void);
+LPSTR WINAPI GetEnvironmentStringsA(void);
+LPWSTR WINAPI GetEnvironmentStringsW(void);
+DWORD WINAPI GetEnvironmentVariableA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetEnvironmentVariableW(LPCWSTR,LPWSTR,DWORD);
+BOOL WINAPI GetExitCodeProcess(HANDLE,PDWORD);
+BOOL WINAPI GetExitCodeThread(HANDLE,PDWORD);
+DWORD WINAPI GetFileAttributesA(LPCSTR);
+DWORD WINAPI GetFileAttributesW(LPCWSTR);
+BOOL WINAPI GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,PVOID);
+BOOL WINAPI GetFileAttributesExW(LPCWSTR,GET_FILEEX_INFO_LEVELS,PVOID);
+BOOL WINAPI GetFileInformationByHandle(HANDLE,LPBY_HANDLE_FILE_INFORMATION);
+BOOL WINAPI GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+BOOL WINAPI GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+DWORD WINAPI GetFileSize(HANDLE,PDWORD);
+BOOL WINAPI GetFileTime(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME);
+DWORD WINAPI GetFileType(HANDLE);
+#define GetFreeSpace(w) (0x100000L)
+DWORD WINAPI GetFullPathNameA(LPCSTR,DWORD,LPSTR,LPSTR*);
+DWORD WINAPI GetFullPathNameW(LPCWSTR,DWORD,LPWSTR,LPWSTR*);
+BOOL WINAPI GetHandleInformation(HANDLE,PDWORD);
+BOOL WINAPI GetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+DWORD WINAPI GetLengthSid(PSID);
+void WINAPI GetLocalTime(LPSYSTEMTIME);
+DWORD WINAPI GetLogicalDrives(void);
+DWORD WINAPI GetLogicalDriveStringsA(DWORD,LPSTR);
+DWORD WINAPI GetLogicalDriveStringsW(DWORD,LPWSTR);
+DWORD WINAPI GetLongPathNameA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetLongPathNameW(LPCWSTR,LPWSTR,DWORD);
+BOOL WINAPI GetMailslotInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
+DWORD WINAPI GetModuleFileNameA(HINSTANCE,LPSTR,DWORD);
+DWORD WINAPI GetModuleFileNameW(HINSTANCE,LPWSTR,DWORD);
+HMODULE WINAPI GetModuleHandleA(LPCSTR);
+HMODULE WINAPI GetModuleHandleW(LPCWSTR);
+BOOL WINAPI GetNamedPipeHandleStateA(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD);
+BOOL WINAPI GetNamedPipeHandleStateW(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD);
+BOOL WINAPI GetNamedPipeInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
+BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
+BOOL WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,PDWORD,BOOL);
+DWORD WINAPI GetPriorityClass(HANDLE);
+BOOL WINAPI GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+UINT WINAPI GetPrivateProfileIntA(LPCSTR,LPCSTR,INT,LPCSTR);
+UINT WINAPI GetPrivateProfileIntW(LPCWSTR,LPCWSTR,INT,LPCWSTR);
+DWORD WINAPI GetPrivateProfileSectionA(LPCSTR,LPSTR,DWORD,LPCSTR);
+DWORD WINAPI GetPrivateProfileSectionW(LPCWSTR,LPWSTR,DWORD,LPCWSTR);
+DWORD WINAPI GetPrivateProfileSectionNamesA(LPSTR,DWORD,LPCSTR);
+DWORD WINAPI GetPrivateProfileSectionNamesW(LPWSTR,DWORD,LPCWSTR);
+DWORD WINAPI GetPrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD,LPCSTR);
+DWORD WINAPI GetPrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD,LPCWSTR);
+BOOL WINAPI GetPrivateProfileStructA(LPCSTR,LPCSTR,PVOID,UINT,LPCSTR);
+BOOL WINAPI GetPrivateProfileStructW(LPCWSTR,LPCWSTR,PVOID,UINT,LPCWSTR);
+FARPROC WINAPI GetProcAddress(HINSTANCE,LPCSTR);
+BOOL WINAPI GetProcessAffinityMask(HANDLE,PDWORD,PDWORD);
+HANDLE WINAPI GetProcessHeap(VOID);
+DWORD WINAPI GetProcessHeaps(DWORD,PHANDLE);
+BOOL WINAPI GetProcessPriorityBoost(HANDLE,PBOOL);
+BOOL WINAPI GetProcessShutdownParameters(PDWORD,PDWORD);
+BOOL WINAPI GetProcessTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
+DWORD WINAPI GetProcessVersion(DWORD);
+HWINSTA WINAPI GetProcessWindowStation(void);
+BOOL WINAPI GetProcessWorkingSetSize(HANDLE,PDWORD,PDWORD);
+UINT WINAPI GetProfileIntA(LPCSTR,LPCSTR,INT);
+UINT WINAPI GetProfileIntW(LPCWSTR,LPCWSTR,INT);
+DWORD WINAPI GetProfileSectionA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetProfileSectionW(LPCWSTR,LPWSTR,DWORD);
+DWORD WINAPI GetProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+BOOL WINAPI GetQueuedCompletionStatus(HANDLE,PDWORD,PDWORD,LPOVERLAPPED*,DWORD);
+BOOL WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR_CONTROL,PDWORD);
+BOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL);
+BOOL WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID*,LPBOOL);
+DWORD WINAPI GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR);
+BOOL WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID*,LPBOOL);
+BOOL WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,LPBOOL,PACL*,LPBOOL);
+DWORD WINAPI GetShortPathNameA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI GetShortPathNameW(LPCWSTR,LPWSTR,DWORD);
+PSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(PSID);
+DWORD WINAPI GetSidLengthRequired(UCHAR);
+PDWORD WINAPI GetSidSubAuthority(PSID,DWORD);
+PUCHAR WINAPI GetSidSubAuthorityCount(PSID);
+VOID WINAPI GetStartupInfoA(LPSTARTUPINFOA);
+VOID WINAPI GetStartupInfoW(LPSTARTUPINFOW);
+HANDLE WINAPI GetStdHandle(DWORD);
+UINT WINAPI GetSystemDirectoryA(LPSTR,UINT);
+UINT WINAPI GetSystemDirectoryW(LPWSTR,UINT);
+VOID WINAPI GetSystemInfo(LPSYSTEM_INFO);
+BOOL WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
+VOID WINAPI GetSystemTime(LPSYSTEMTIME);
+BOOL WINAPI GetSystemTimeAdjustment(PDWORD,PDWORD,PBOOL);
+void WINAPI GetSystemTimeAsFileTime(LPFILETIME);
+DWORD WINAPI GetTapeParameters(HANDLE,DWORD,PDWORD,PVOID);
+DWORD WINAPI GetTapePosition(HANDLE,DWORD,PDWORD,PDWORD,PDWORD);
+DWORD WINAPI GetTapeStatus(HANDLE);
+UINT WINAPI GetTempFileNameA(LPCSTR,LPCSTR,UINT,LPSTR);
+UINT WINAPI GetTempFileNameW(LPCWSTR,LPCWSTR,UINT,LPWSTR);
+DWORD WINAPI GetTempPathA(DWORD,LPSTR);
+DWORD WINAPI GetTempPathW(DWORD,LPWSTR);
+BOOL WINAPI GetThreadContext(HANDLE,LPCONTEXT);
+int WINAPI GetThreadPriority(HANDLE);
+BOOL WINAPI GetThreadPriorityBoost(HANDLE,PBOOL);
+BOOL WINAPI GetThreadSelectorEntry(HANDLE,DWORD,LPLDT_ENTRY);
+BOOL WINAPI GetThreadTimes(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME,LPFILETIME);
+DWORD WINAPI GetTickCount(void);
+DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION);
+BOOL WINAPI GetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD,PDWORD);
+BOOL WINAPI GetUserNameA (LPSTR,PDWORD);
+BOOL WINAPI GetUserNameW(LPWSTR,PDWORD);
+DWORD WINAPI GetVersion(void);
+BOOL WINAPI GetVersionExA(LPOSVERSIONINFOA);
+BOOL WINAPI GetVersionExW(LPOSVERSIONINFOW);
+BOOL WINAPI GetVolumeInformationA(LPCSTR,LPSTR,DWORD,PDWORD,PDWORD,PDWORD,LPSTR,DWORD);
+BOOL WINAPI GetVolumeInformationW(LPCWSTR,LPWSTR,DWORD,PDWORD,PDWORD,PDWORD,LPWSTR,DWORD);
+UINT WINAPI GetWindowsDirectoryA(LPSTR,UINT);
+UINT WINAPI GetWindowsDirectoryW(LPWSTR,UINT);
+DWORD WINAPI GetWindowThreadProcessId(HWND,PDWORD);
+ATOM WINAPI GlobalAddAtomA(LPCSTR);
+ATOM WINAPI GlobalAddAtomW( LPCWSTR);
+HGLOBAL WINAPI GlobalAlloc(UINT,DWORD);
+UINT WINAPI GlobalCompact(DWORD);
+ATOM WINAPI GlobalDeleteAtom(ATOM);
+HGLOBAL GlobalDiscard(HGLOBAL);
+ATOM WINAPI GlobalFindAtomA(LPCSTR);
+ATOM WINAPI GlobalFindAtomW(LPCWSTR);
+VOID WINAPI GlobalFix(HGLOBAL);
+UINT WINAPI GlobalFlags(HGLOBAL);
+HGLOBAL WINAPI GlobalFree(HGLOBAL);
+UINT WINAPI GlobalGetAtomNameA(ATOM,LPSTR,int);
+UINT WINAPI GlobalGetAtomNameW(ATOM,LPWSTR,int);
+HGLOBAL WINAPI GlobalHandle(PCVOID);
+LPVOID WINAPI GlobalLock(HGLOBAL);
+VOID WINAPI GlobalMemoryStatus(LPMEMORYSTATUS);
+HGLOBAL WINAPI GlobalReAlloc(HGLOBAL,DWORD,UINT);
+DWORD WINAPI GlobalSize(HGLOBAL);
+VOID WINAPI GlobalUnfix(HGLOBAL);
+BOOL WINAPI GlobalUnlock(HGLOBAL);
+BOOL WINAPI GlobalUnWire(HGLOBAL);
+PVOID WINAPI GlobalWire(HGLOBAL);
+#define HasOverlappedIoCompleted(lpOverlapped) ((lpOverlapped)->Internal != STATUS_PENDING)
+PVOID WINAPI HeapAlloc(HANDLE,DWORD,DWORD);
+UINT WINAPI HeapCompact(HANDLE,DWORD);
+HANDLE WINAPI HeapCreate(DWORD,DWORD,DWORD);
+BOOL WINAPI HeapDestroy(HANDLE);
+BOOL WINAPI HeapFree(HANDLE,DWORD,PVOID);
+BOOL WINAPI HeapLock(HANDLE);
+PVOID WINAPI HeapReAlloc(HANDLE,DWORD,PVOID,DWORD);
+DWORD WINAPI HeapSize(HANDLE,DWORD,PCVOID);
+BOOL WINAPI HeapUnlock(HANDLE);
+BOOL WINAPI HeapValidate(HANDLE,DWORD,PCVOID);
+BOOL WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY);
+BOOL WINAPI ImpersonateLoggedOnUser(HANDLE);
+BOOL WINAPI ImpersonateNamedPipeClient(HANDLE);
+BOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
+BOOL WINAPI InitAtomTable(DWORD);
+BOOL WINAPI InitializeAcl(PACL,DWORD,DWORD);
+VOID WINAPI InitializeCriticalSection(LPCRITICAL_SECTION);
+#if (_WIN32_WINNT >= 0x0403) /* Needs NT4, SP3 or later. */
+BOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION,DWORD);
+DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION,DWORD);
+#endif
+BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
+BOOL WINAPI InitializeSid (PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
+LONG WINAPI InterlockedCompareExchange(LPLONG,LONG,LONG);
+/* PVOID WINAPI InterlockedCompareExchangePointer(PVOID*,PVOID,PVOID); */
+#define InterlockedCompareExchangePointer(d,e,c) \
+ (PVOID)InterlockedCompareExchange((LPLONG)(d),(LONG)(e),(LONG)(c))
+LONG WINAPI InterlockedDecrement(LPLONG);
+LONG WINAPI InterlockedExchange(LPLONG,LONG);
+/* PVOID WINAPI InterlockedExchangePointer(PVOID*,PVOID); */
+#define InterlockedExchangePointer(t,v) \
+ (PVOID)InterlockedExchange((LPLONG)(t),(LONG)(v))
+LONG WINAPI InterlockedExchangeAdd(PLONG,LONG);
+LONG WINAPI InterlockedIncrement(LPLONG);
+BOOL WINAPI IsBadCodePtr(FARPROC);
+BOOL WINAPI IsBadHugeReadPtr(PCVOID,UINT);
+BOOL WINAPI IsBadHugeWritePtr(PVOID,UINT);
+BOOL WINAPI IsBadReadPtr(PCVOID,UINT);
+BOOL WINAPI IsBadStringPtrA(LPCSTR,UINT);
+BOOL WINAPI IsBadStringPtrW(LPCWSTR,UINT);
+BOOL WINAPI IsBadWritePtr(PVOID,UINT);
+BOOL WINAPI IsDebuggerPresent(void);
+BOOL WINAPI IsProcessorFeaturePresent(DWORD);
+BOOL WINAPI IsTextUnicode(PCVOID,int,LPINT);
+BOOL WINAPI IsValidAcl(PACL);
+BOOL WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
+BOOL WINAPI IsValidSid(PSID);
+void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION);
+#define LimitEmsPages(n)
+HINSTANCE WINAPI LoadLibraryA(LPCSTR);
+HINSTANCE WINAPI LoadLibraryExA(LPCSTR,HANDLE,DWORD);
+HINSTANCE WINAPI LoadLibraryExW(LPCWSTR,HANDLE,DWORD);
+HINSTANCE WINAPI LoadLibraryW(LPCWSTR);
+DWORD WINAPI LoadModule(LPCSTR,PVOID);
+HGLOBAL WINAPI LoadResource(HINSTANCE,HRSRC);
+HLOCAL WINAPI LocalAlloc(UINT,UINT);
+UINT WINAPI LocalCompact(UINT);
+HLOCAL LocalDiscard(HLOCAL);
+BOOL WINAPI LocalFileTimeToFileTime(CONST FILETIME *,LPFILETIME);
+UINT WINAPI LocalFlags(HLOCAL);
+HLOCAL WINAPI LocalFree(HLOCAL);
+HLOCAL WINAPI LocalHandle(LPCVOID);
+PVOID WINAPI LocalLock(HLOCAL);
+HLOCAL WINAPI LocalReAlloc(HLOCAL,UINT,UINT);
+UINT WINAPI LocalShrink(HLOCAL,UINT);
+UINT WINAPI LocalSize(HLOCAL);
+BOOL WINAPI LocalUnlock(HLOCAL);
+BOOL WINAPI LockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+BOOL WINAPI LockFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,LPOVERLAPPED);
+PVOID WINAPI LockResource(HGLOBAL);
+#define LockSegment(w) GlobalFix((HANDLE)(w))
+BOOL WINAPI LogonUserA(LPSTR,LPSTR,LPSTR,DWORD,DWORD,PHANDLE);
+BOOL WINAPI LogonUserW(LPWSTR,LPWSTR,LPWSTR,DWORD,DWORD,PHANDLE);
+BOOL WINAPI LookupAccountNameA(LPCSTR,LPCSTR,PSID,PDWORD,LPSTR,PDWORD,PSID_NAME_USE);
+BOOL WINAPI LookupAccountNameW(LPCWSTR,LPCWSTR,PSID,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE);
+BOOL WINAPI LookupAccountSidA(LPCSTR,PSID,LPSTR,PDWORD,LPSTR,PDWORD,PSID_NAME_USE);
+BOOL WINAPI LookupAccountSidW(LPCWSTR,PSID,LPWSTR,PDWORD,LPWSTR,PDWORD,PSID_NAME_USE);
+BOOL WINAPI LookupPrivilegeDisplayNameA(LPCSTR,LPCSTR,LPSTR,PDWORD,PDWORD);
+BOOL WINAPI LookupPrivilegeDisplayNameW(LPCWSTR,LPCWSTR,LPWSTR,PDWORD,PDWORD);
+BOOL WINAPI LookupPrivilegeNameA(LPCSTR,PLUID,LPSTR,PDWORD);
+BOOL WINAPI LookupPrivilegeNameW(LPCWSTR,PLUID,LPWSTR,PDWORD);
+BOOL WINAPI LookupPrivilegeValueA(LPCSTR,LPCSTR,PLUID);
+BOOL WINAPI LookupPrivilegeValueW(LPCWSTR,LPCWSTR,PLUID);
+LPSTR WINAPI lstrcatA(LPSTR,LPCSTR);
+LPWSTR WINAPI lstrcatW(LPWSTR,LPCWSTR);
+int WINAPI lstrcmpA(LPCSTR,LPCSTR);
+int WINAPI lstrcmpiA(LPCSTR,LPCSTR);
+int WINAPI lstrcmpiW( LPCWSTR,LPCWSTR);
+int WINAPI lstrcmpW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI lstrcpyA(LPSTR,LPCSTR);
+LPSTR WINAPI lstrcpynA(LPSTR,LPCSTR,int);
+LPWSTR WINAPI lstrcpynW(LPWSTR,LPCWSTR,int);
+LPWSTR WINAPI lstrcpyW(LPWSTR,LPCWSTR);
+int WINAPI lstrlenA(LPCSTR);
+int WINAPI lstrlenW(LPCWSTR);
+BOOL WINAPI MakeAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD);
+#define MakeProcInstance(p,i) (p)
+BOOL WINAPI MakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD);
+VOID WINAPI MapGenericMask(PDWORD,PGENERIC_MAPPING);
+PVOID WINAPI MapViewOfFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+PVOID WINAPI MapViewOfFileEx(HANDLE,DWORD,DWORD,DWORD,DWORD,PVOID);
+BOOL WINAPI MoveFileA(LPCSTR,LPCSTR);
+BOOL WINAPI MoveFileExA(LPCSTR,LPCSTR,DWORD);
+BOOL WINAPI MoveFileExW(LPCWSTR,LPCWSTR,DWORD);
+BOOL WINAPI MoveFileW(LPCWSTR,LPCWSTR);
+int WINAPI MulDiv(int,int,int);
+BOOL WINAPI NotifyChangeEventLog(HANDLE,HANDLE);
+BOOL WINAPI ObjectCloseAuditAlarmA(LPCSTR,PVOID,BOOL);
+BOOL WINAPI ObjectCloseAuditAlarmW(LPCWSTR,PVOID,BOOL);
+BOOL WINAPI ObjectDeleteAuditAlarmA(LPCSTR,PVOID,BOOL);
+BOOL WINAPI ObjectDeleteAuditAlarmW(LPCWSTR,PVOID,BOOL);
+BOOL WINAPI ObjectOpenAuditAlarmA(LPCSTR,PVOID,LPSTR,LPSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL);
+BOOL WINAPI ObjectOpenAuditAlarmW(LPCWSTR,PVOID,LPWSTR,LPWSTR,PSECURITY_DESCRIPTOR,HANDLE,DWORD,DWORD,PPRIVILEGE_SET,BOOL,BOOL,PBOOL);
+BOOL WINAPI ObjectPrivilegeAuditAlarmA(LPCSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
+BOOL WINAPI ObjectPrivilegeAuditAlarmW(LPCWSTR,PVOID,HANDLE,DWORD,PPRIVILEGE_SET,BOOL);
+HANDLE WINAPI OpenBackupEventLogA(LPCSTR,LPCSTR);
+HANDLE WINAPI OpenBackupEventLogW(LPCWSTR,LPCWSTR);
+HANDLE WINAPI OpenEventA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenEventLogA (LPCSTR,LPCSTR);
+HANDLE WINAPI OpenEventLogW(LPCWSTR,LPCWSTR);
+HANDLE WINAPI OpenEventW(DWORD,BOOL,LPCWSTR);
+HFILE WINAPI OpenFile(LPCSTR,LPOFSTRUCT,UINT);
+HANDLE WINAPI OpenFileMappingA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenFileMappingW(DWORD,BOOL,LPCWSTR);
+HANDLE WINAPI OpenMutexA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenMutexW(DWORD,BOOL,LPCWSTR);
+HANDLE WINAPI OpenProcess(DWORD,BOOL,DWORD);
+BOOL WINAPI OpenProcessToken(HANDLE,DWORD,PHANDLE);
+HANDLE WINAPI OpenSemaphoreA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenSemaphoreW(DWORD,BOOL,LPCWSTR);
+BOOL WINAPI OpenThreadToken(HANDLE,DWORD,BOOL,PHANDLE);
+HANDLE WINAPI OpenWaitableTimerA(DWORD,BOOL,LPCSTR);
+HANDLE WINAPI OpenWaitableTimerW(DWORD,BOOL,LPCWSTR);
+void WINAPI OutputDebugStringA(LPCSTR);
+void WINAPI OutputDebugStringW(LPCWSTR);
+BOOL WINAPI PeekNamedPipe(HANDLE,PVOID,DWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI PostQueuedCompletionStatus(HANDLE,DWORD,DWORD,LPOVERLAPPED);
+DWORD WINAPI PrepareTape(HANDLE,DWORD,BOOL);
+BOOL WINAPI PrivilegeCheck (HANDLE,PPRIVILEGE_SET,PBOOL);
+BOOL WINAPI PrivilegedServiceAuditAlarmA(LPCSTR,LPCSTR,HANDLE,PPRIVILEGE_SET,BOOL);
+BOOL WINAPI PrivilegedServiceAuditAlarmW(LPCWSTR,LPCWSTR,HANDLE,PPRIVILEGE_SET,BOOL);
+BOOL WINAPI PulseEvent(HANDLE);
+BOOL WINAPI PurgeComm(HANDLE,DWORD);
+DWORD WINAPI QueryDosDeviceA(LPCSTR,LPSTR,DWORD);
+DWORD WINAPI QueryDosDeviceW(LPCWSTR,LPWSTR,DWORD);
+BOOL WINAPI QueryPerformanceCounter(PLARGE_INTEGER);
+BOOL WINAPI QueryPerformanceFrequency(PLARGE_INTEGER);
+DWORD WINAPI QueueUserAPC(PAPCFUNC,HANDLE,DWORD);
+void WINAPI RaiseException(DWORD,DWORD,DWORD,const DWORD*);
+BOOL WINAPI ReadDirectoryChangesW(HANDLE,PVOID,DWORD,BOOL,DWORD,PDWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+BOOL WINAPI ReadEventLogA(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
+BOOL WINAPI ReadEventLogW(HANDLE,DWORD,DWORD,PVOID,DWORD,DWORD *,DWORD *);
+BOOL WINAPI ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED);
+BOOL WINAPI ReadFileEx(HANDLE,PVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+BOOL WINAPI ReadProcessMemory(HANDLE,PCVOID,PVOID,DWORD,PDWORD);
+HANDLE WINAPI RegisterEventSourceA (LPCSTR,LPCSTR);
+HANDLE WINAPI RegisterEventSourceW(LPCWSTR,LPCWSTR);
+BOOL WINAPI ReleaseMutex(HANDLE);
+BOOL WINAPI ReleaseSemaphore(HANDLE,LONG,LPLONG);
+BOOL WINAPI RemoveDirectoryA(LPCSTR);
+BOOL WINAPI RemoveDirectoryW(LPCWSTR);
+BOOL WINAPI ReportEventA(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCSTR*,PVOID);
+BOOL WINAPI ReportEventW(HANDLE,WORD,WORD,DWORD,PSID,WORD,DWORD,LPCWSTR*,PVOID);
+BOOL WINAPI ResetEvent(HANDLE);
+DWORD WINAPI ResumeThread(HANDLE);
+BOOL WINAPI RevertToSelf(void);
+DWORD WINAPI SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*);
+DWORD WINAPI SearchPathW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*);
+BOOL WINAPI SetAclInformation(PACL,PVOID,DWORD,ACL_INFORMATION_CLASS);
+BOOL WINAPI SetCommBreak(HANDLE);
+BOOL WINAPI SetCommConfig(HANDLE,LPCOMMCONFIG,DWORD);
+BOOL WINAPI SetCommMask(HANDLE,DWORD);
+BOOL WINAPI SetCommState(HANDLE,LPDCB);
+BOOL WINAPI SetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
+BOOL WINAPI SetComputerNameA(LPCSTR);
+BOOL WINAPI SetComputerNameW(LPCWSTR);
+BOOL WINAPI SetCurrentDirectoryA(LPCSTR);
+BOOL WINAPI SetCurrentDirectoryW(LPCWSTR);
+BOOL WINAPI SetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,DWORD);
+BOOL WINAPI SetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,DWORD);
+BOOL WINAPI SetEndOfFile(HANDLE);
+BOOL WINAPI SetEnvironmentVariableA(LPCSTR,LPCSTR);
+BOOL WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
+UINT WINAPI SetErrorMode(UINT);
+BOOL WINAPI SetEvent(HANDLE);
+VOID WINAPI SetFileApisToANSI(void);
+VOID WINAPI SetFileApisToOEM(void);
+BOOL WINAPI SetFileAttributesA(LPCSTR,DWORD);
+BOOL WINAPI SetFileAttributesW(LPCWSTR,DWORD);
+DWORD WINAPI SetFilePointer(HANDLE,LONG,PLONG,DWORD);
+BOOL WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+BOOL WINAPI SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+BOOL WINAPI SetFileTime(HANDLE,const FILETIME*,const FILETIME*,const FILETIME*);
+UINT WINAPI SetHandleCount(UINT);
+BOOL WINAPI SetHandleInformation(HANDLE,DWORD,DWORD);
+BOOL WINAPI SetKernelObjectSecurity(HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+void WINAPI SetLastError(DWORD);
+void WINAPI SetLastErrorEx(DWORD,DWORD);
+BOOL WINAPI SetLocalTime(const SYSTEMTIME*);
+BOOL WINAPI SetMailslotInfo(HANDLE,DWORD);
+BOOL WINAPI SetNamedPipeHandleState(HANDLE,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI SetPriorityClass(HANDLE,DWORD);
+BOOL WINAPI SetPrivateObjectSecurity(SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR *,PGENERIC_MAPPING,HANDLE);
+BOOL WINAPI SetProcessAffinityMask(HANDLE,DWORD);
+BOOL WINAPI SetProcessPriorityBoost(HANDLE,BOOL);
+BOOL WINAPI SetProcessShutdownParameters(DWORD,DWORD);
+BOOL WINAPI SetProcessWorkingSetSize(HANDLE,DWORD,DWORD);
+BOOL WINAPI SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL);
+BOOL WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
+BOOL WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID,BOOL);
+BOOL WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID,BOOL);
+BOOL WINAPI SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
+BOOL WINAPI SetStdHandle(DWORD,HANDLE);
+#define SetSwapAreaSize(w) (w)
+BOOL WINAPI SetSystemPowerState(BOOL,BOOL);
+BOOL WINAPI SetSystemTime(const SYSTEMTIME*);
+BOOL WINAPI SetSystemTimeAdjustment(DWORD,BOOL);
+DWORD WINAPI SetTapeParameters(HANDLE,DWORD,PVOID);
+DWORD WINAPI SetTapePosition(HANDLE,DWORD,DWORD,DWORD,DWORD,BOOL);
+DWORD WINAPI SetThreadAffinityMask(HANDLE,DWORD);
+BOOL WINAPI SetThreadContext(HANDLE,const CONTEXT*);
+DWORD WINAPI SetThreadIdealProcessor(HANDLE,DWORD);
+BOOL WINAPI SetThreadPriority(HANDLE,int);
+BOOL WINAPI SetThreadPriorityBoost(HANDLE,BOOL);
+BOOL WINAPI SetThreadToken (PHANDLE,HANDLE);
+BOOL WINAPI SetTimeZoneInformation(const TIME_ZONE_INFORMATION *);
+BOOL WINAPI SetTokenInformation(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,DWORD);
+LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER);
+BOOL WINAPI SetupComm(HANDLE,DWORD,DWORD);
+BOOL WINAPI SetVolumeLabelA(LPCSTR,LPCSTR);
+BOOL WINAPI SetVolumeLabelW(LPCWSTR,LPCWSTR);
+BOOL WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,PVOID,BOOL);
+BOOL WINAPI SignalObjectAndWait(HANDLE,HANDLE,DWORD,BOOL);
+DWORD WINAPI SizeofResource(HINSTANCE,HRSRC);
+void WINAPI Sleep(DWORD);
+DWORD WINAPI SleepEx(DWORD,BOOL);
+DWORD WINAPI SuspendThread(HANDLE);
+void WINAPI SwitchToFiber(PVOID);
+BOOL WINAPI SwitchToThread(void);
+BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
+BOOL WINAPI SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION,LPSYSTEMTIME,LPSYSTEMTIME);
+BOOL WINAPI TerminateProcess(HANDLE,UINT);
+BOOL WINAPI TerminateThread(HANDLE,DWORD);
+DWORD WINAPI TlsAlloc(VOID);
+BOOL WINAPI TlsFree(DWORD);
+PVOID WINAPI TlsGetValue(DWORD);
+BOOL WINAPI TlsSetValue(DWORD,PVOID);
+BOOL WINAPI TransactNamedPipe(HANDLE,PVOID,DWORD,PVOID,DWORD,PDWORD,LPOVERLAPPED);
+BOOL WINAPI TransmitCommChar(HANDLE,char);
+BOOL WINAPI TryEnterCriticalSection(LPCRITICAL_SECTION);
+LONG WINAPI UnhandledExceptionFilter(LPEXCEPTION_POINTERS);
+BOOL WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+BOOL WINAPI UnlockFileEx(HANDLE,DWORD,DWORD,DWORD,LPOVERLAPPED);
+#define UnlockResource(h) (h)
+#define UnlockSegment(w) GlobalUnfix((HANDLE)(w))
+BOOL WINAPI UnmapViewOfFile(PVOID);
+BOOL WINAPI UpdateResourceA(HANDLE,LPCSTR,LPCSTR,WORD,PVOID,DWORD);
+BOOL WINAPI UpdateResourceW(HANDLE,LPCWSTR,LPCWSTR,WORD,PVOID,DWORD);
+BOOL WINAPI VerifyVersionInfoA(LPOSVERSIONINFOEXA,DWORD,DWORDLONG);
+BOOL WINAPI VerifyVersionInfoW(LPOSVERSIONINFOEXW,DWORD,DWORDLONG);
+PVOID WINAPI VirtualAlloc(PVOID,DWORD,DWORD,DWORD);
+PVOID WINAPI VirtualAllocEx(HANDLE,PVOID,DWORD,DWORD,DWORD);
+BOOL WINAPI VirtualFree(PVOID,DWORD,DWORD);
+BOOL WINAPI VirtualFreeEx(HANDLE,PVOID,DWORD,DWORD);
+BOOL WINAPI VirtualLock(PVOID,DWORD);
+BOOL WINAPI VirtualProtect(PVOID,DWORD,DWORD,PDWORD);
+BOOL WINAPI VirtualProtectEx(HANDLE,PVOID,DWORD,DWORD,PDWORD);
+DWORD WINAPI VirtualQuery(LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD);
+DWORD WINAPI VirtualQueryEx(HANDLE,LPCVOID,PMEMORY_BASIC_INFORMATION,DWORD);
+BOOL WINAPI VirtualUnlock(PVOID,DWORD);
+BOOL WINAPI WaitCommEvent(HANDLE,PDWORD,LPOVERLAPPED);
+BOOL WINAPI WaitForDebugEvent(LPDEBUG_EVENT,DWORD);
+DWORD WINAPI WaitForMultipleObjects(DWORD,const HANDLE*,BOOL,DWORD);
+DWORD WINAPI WaitForMultipleObjectsEx(DWORD,const HANDLE*,BOOL,DWORD,BOOL);
+DWORD WINAPI WaitForSingleObject(HANDLE,DWORD);
+DWORD WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
+BOOL WINAPI WaitNamedPipeA(LPCSTR,DWORD);
+BOOL WINAPI WaitNamedPipeW(LPCWSTR,DWORD);
+BOOL WINAPI WinLoadTrustProvider(GUID*);
+BOOL WINAPI WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED);
+BOOL WINAPI WriteFileEx(HANDLE,PCVOID,DWORD,LPOVERLAPPED,LPOVERLAPPED_COMPLETION_ROUTINE);
+BOOL WINAPI WritePrivateProfileSectionA(LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI WritePrivateProfileSectionW(LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI WritePrivateProfileStringA(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI WritePrivateProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI WritePrivateProfileStructA(LPCSTR,LPCSTR,PVOID,UINT,LPCSTR);
+BOOL WINAPI WritePrivateProfileStructW(LPCWSTR,LPCWSTR,PVOID,UINT,LPCWSTR);
+BOOL WINAPI WriteProcessMemory(HANDLE,PVOID,PVOID,DWORD,PDWORD);
+BOOL WINAPI WriteProfileSectionA(LPCSTR,LPCSTR);
+BOOL WINAPI WriteProfileSectionW(LPCWSTR,LPCWSTR);
+BOOL WINAPI WriteProfileStringA(LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI WriteProfileStringW(LPCWSTR,LPCWSTR,LPCWSTR);
+DWORD WINAPI WriteTapemark(HANDLE,DWORD,DWORD,BOOL);
+#define Yield()
+
+#ifdef UNICODE
+typedef STARTUPINFOW STARTUPINFO,*LPSTARTUPINFO;
+typedef WIN32_FIND_DATAW WIN32_FIND_DATA,*LPWIN32_FIND_DATA;
+typedef HW_PROFILE_INFOW HW_PROFILE_INFO,*LPHW_PROFILE_INFO;
+#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmW
+#define AddAtom AddAtomW
+#define BackupEventLog BackupEventLogW
+#define BeginUpdateResource BeginUpdateResourceW
+#define BuildCommDCB BuildCommDCBW
+#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsW
+#define CallNamedPipe CallNamedPipeW
+#define ClearEventLog ClearEventLogW
+#define CommConfigDialog CommConfigDialogW
+#define CopyFile CopyFileW
+#define CopyFileEx CopyFileExW
+#define CreateDirectory CreateDirectoryW
+#define CreateDirectoryEx CreateDirectoryExW
+#define CreateEvent CreateEventW
+#define CreateFile CreateFileW
+#define CreateFileMapping CreateFileMappingW
+#define CreateHardLink CreateHardLinkW
+#define CreateMailslot CreateMailslotW
+#define CreateMutex CreateMutexW
+#define CreateNamedPipe CreateNamedPipeW
+#define CreateProcess CreateProcessW
+#define CreateProcessAsUser CreateProcessAsUserW
+#define CreateSemaphore CreateSemaphoreW
+#define CreateWaitableTimer CreateWaitableTimerW
+#define DefineDosDevice DefineDosDeviceW
+#define DeleteFile DeleteFileW
+#define EndUpdateResource EndUpdateResourceW
+#define EnumResourceLanguages EnumResourceLanguagesW
+#define EnumResourceNames EnumResourceNamesW
+#define EnumResourceTypes EnumResourceTypesW
+#define ExpandEnvironmentStrings ExpandEnvironmentStringsW
+#define FatalAppExit FatalAppExitW
+#define FindAtom FindAtomW
+#define FindFirstChangeNotification FindFirstChangeNotificationW
+#define FindFirstFile FindFirstFileW
+#define FindFirstFileEx FindFirstFileExW
+#define FindNextFile FindNextFileW
+#define FindResource FindResourceW
+#define FindResourceEx FindResourceExW
+#define FormatMessage FormatMessageW
+#define FreeEnvironmentStrings FreeEnvironmentStringsW
+#define GetAtomName GetAtomNameW
+#define GetBinaryType GetBinaryTypeW
+#define GetCommandLine GetCommandLineW
+#define GetCompressedFileSize GetCompressedFileSizeW
+#define GetComputerName GetComputerNameW
+#define GetCurrentDirectory GetCurrentDirectoryW
+#define GetDefaultCommConfig GetDefaultCommConfigW
+#define GetDiskFreeSpace GetDiskFreeSpaceW
+#define GetDiskFreeSpaceEx GetDiskFreeSpaceExW
+#define GetDriveType GetDriveTypeW
+#define GetEnvironmentStrings GetEnvironmentStringsW
+#define GetEnvironmentVariable GetEnvironmentVariableW
+#define GetFileAttributes GetFileAttributesW
+#define GetFileSecurity GetFileSecurityW
+#define GetFileAttributesEx GetFileAttributesExW
+#define GetFullPathName GetFullPathNameW
+#define GetLogicalDriveStrings GetLogicalDriveStringsW
+#define GetLongPathName GetLongPathNameW
+#define GetModuleFileName GetModuleFileNameW
+#define GetModuleHandle GetModuleHandleW
+#define GetNamedPipeHandleState GetNamedPipeHandleStateW
+#define GetPrivateProfileInt GetPrivateProfileIntW
+#define GetPrivateProfileSection GetPrivateProfileSectionW
+#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesW
+#define GetPrivateProfileString GetPrivateProfileStringW
+#define GetPrivateProfileStruct GetPrivateProfileStructW
+#define GetProfileInt GetProfileIntW
+#define GetProfileSection GetProfileSectionW
+#define GetProfileString GetProfileStringW
+#define GetShortPathName GetShortPathNameW
+#define GetStartupInfo GetStartupInfoW
+#define GetSystemDirectory GetSystemDirectoryW
+#define GetTempFileName GetTempFileNameW
+#define GetTempPath GetTempPathW
+#define GetUserName GetUserNameW
+#define GetVersionEx GetVersionExW
+#define GetVolumeInformation GetVolumeInformationW
+#define GetWindowsDirectory GetWindowsDirectoryW
+#define GlobalAddAtom GlobalAddAtomW
+#define GlobalFindAtom GlobalFindAtomW
+#define GlobalGetAtomName GlobalGetAtomNameW
+#define IsBadStringPtr IsBadStringPtrW
+#define LoadLibrary LoadLibraryW
+#define LoadLibraryEx LoadLibraryExW
+#define LogonUser LogonUserW
+#define LookupAccountName LookupAccountNameW
+#define LookupAccountSid LookupAccountSidW
+#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW
+#define LookupPrivilegeName LookupPrivilegeNameW
+#define LookupPrivilegeValue LookupPrivilegeValueW
+#define lstrcat lstrcatW
+#define lstrcmp lstrcmpW
+#define lstrcmpi lstrcmpiW
+#define lstrcpy lstrcpyW
+#define lstrcpyn lstrcpynW
+#define lstrlen lstrlenW
+#define MoveFile MoveFileW
+#define MoveFileEx MoveFileExW
+#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmW
+#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmW
+#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmW
+#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmW
+#define OpenBackupEventLog OpenBackupEventLogW
+#define OpenEvent OpenEventW
+#define OpenEventLog OpenEventLogW
+#define OpenFileMapping OpenFileMappingW
+#define OpenMutex OpenMutexW
+#define OpenSemaphore OpenSemaphoreW
+#define OutputDebugString OutputDebugStringW
+#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmW
+#define QueryDosDevice QueryDosDeviceW
+#define ReadEventLog ReadEventLogW
+#define RegisterEventSource RegisterEventSourceW
+#define RemoveDirectory RemoveDirectoryW
+#define ReportEvent ReportEventW
+#define SearchPath SearchPathW
+#define SetComputerName SetComputerNameW
+#define SetCurrentDirectory SetCurrentDirectoryW
+#define SetDefaultCommConfig SetDefaultCommConfigW
+#define SetEnvironmentVariable SetEnvironmentVariableW
+#define SetFileAttributes SetFileAttributesW
+#define SetFileSecurity SetFileSecurityW
+#define SetVolumeLabel SetVolumeLabelW
+#define UpdateResource UpdateResourceW
+#define VerifyVersionInfo VerifyVersionInfoW
+#define WaitNamedPipe WaitNamedPipeW
+#define WritePrivateProfileSection WritePrivateProfileSectionW
+#define WritePrivateProfileString WritePrivateProfileStringW
+#define WritePrivateProfileStruct WritePrivateProfileStructW
+#define WriteProfileSection WriteProfileSectionW
+#define WriteProfileString WriteProfileStringW
+#else
+typedef STARTUPINFOA STARTUPINFO,*LPSTARTUPINFO;
+typedef WIN32_FIND_DATAA WIN32_FIND_DATA,*LPWIN32_FIND_DATA;
+typedef HW_PROFILE_INFOA HW_PROFILE_INFO,*LPHW_PROFILE_INFO;
+#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmA
+#define AddAtom AddAtomA
+#define BackupEventLog BackupEventLogA
+#define BeginUpdateResource BeginUpdateResourceA
+#define BuildCommDCB BuildCommDCBA
+#define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsA
+#define CallNamedPipe CallNamedPipeA
+#define ClearEventLog ClearEventLogA
+#define CommConfigDialog CommConfigDialogA
+#define CopyFile CopyFileA
+#define CopyFileEx CopyFileExA
+#define CreateDirectory CreateDirectoryA
+#define CreateDirectoryEx CreateDirectoryExA
+#define CreateEvent CreateEventA
+#define CreateFile CreateFileA
+#define CreateFileMapping CreateFileMappingA
+#define CreateHardLink CreateHardLinkA
+#define CreateMailslot CreateMailslotA
+#define CreateMutex CreateMutexA
+#define CreateNamedPipe CreateNamedPipeA
+#define CreateProcess CreateProcessA
+#define CreateProcessAsUser CreateProcessAsUserA
+#define CreateSemaphore CreateSemaphoreA
+#define CreateWaitableTimer CreateWaitableTimerA
+#define DefineDosDevice DefineDosDeviceA
+#define DeleteFile DeleteFileA
+#define EndUpdateResource EndUpdateResourceA
+#define EnumResourceLanguages EnumResourceLanguagesA
+#define EnumResourceNames EnumResourceNamesA
+#define EnumResourceTypes EnumResourceTypesA
+#define ExpandEnvironmentStrings ExpandEnvironmentStringsA
+#define FatalAppExit FatalAppExitA
+#define FindAtom FindAtomA
+#define FindFirstChangeNotification FindFirstChangeNotificationA
+#define FindFirstFile FindFirstFileA
+#define FindFirstFileEx FindFirstFileExW
+#define FindNextFile FindNextFileA
+#define FindResource FindResourceA
+#define FindResourceEx FindResourceExA
+#define FormatMessage FormatMessageA
+#define FreeEnvironmentStrings FreeEnvironmentStringsA
+#define GetAtomName GetAtomNameA
+#define GetBinaryType GetBinaryTypeA
+#define GetCommandLine GetCommandLineA
+#define GetComputerName GetComputerNameA
+#define GetCompressedFileSize GetCompressedFileSizeA
+#define GetCurrentDirectory GetCurrentDirectoryA
+#define GetDefaultCommConfig GetDefaultCommConfigA
+#define GetDiskFreeSpace GetDiskFreeSpaceA
+#define GetDiskFreeSpaceEx GetDiskFreeSpaceExA
+#define GetDriveType GetDriveTypeA
+#define GetEnvironmentStringsA GetEnvironmentStrings
+#define GetEnvironmentVariable GetEnvironmentVariableA
+#define GetFileAttributes GetFileAttributesA
+#define GetFileSecurity GetFileSecurityA
+#define GetFileAttributesEx GetFileAttributesExA
+#define GetFullPathName GetFullPathNameA
+#define GetLogicalDriveStrings GetLogicalDriveStringsA
+#define GetLongPathName GetLongPathNameA
+#define GetNamedPipeHandleState GetNamedPipeHandleStateA
+#define GetModuleHandle GetModuleHandleA
+#define GetModuleFileName GetModuleFileNameA
+#define GetPrivateProfileInt GetPrivateProfileIntA
+#define GetPrivateProfileSection GetPrivateProfileSectionA
+#define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesA
+#define GetPrivateProfileString GetPrivateProfileStringA
+#define GetPrivateProfileStruct GetPrivateProfileStructA
+#define GetProfileInt GetProfileIntA
+#define GetProfileSection GetProfileSectionA
+#define GetProfileString GetProfileStringA
+#define GetShortPathName GetShortPathNameA
+#define GetStartupInfo GetStartupInfoA
+#define GetSystemDirectory GetSystemDirectoryA
+#define GetTempFileName GetTempFileNameA
+#define GetTempPath GetTempPathA
+#define GetUserName GetUserNameA
+#define GetVersionEx GetVersionExA
+#define GetVolumeInformation GetVolumeInformationA
+#define GetWindowsDirectory GetWindowsDirectoryA
+#define GlobalAddAtom GlobalAddAtomA
+#define GlobalFindAtom GlobalFindAtomA
+#define GlobalGetAtomName GlobalGetAtomNameA
+#define IsBadStringPtr IsBadStringPtrA
+#define LoadLibrary LoadLibraryA
+#define LoadLibraryEx LoadLibraryExA
+#define LogonUser LogonUserA
+#define LookupAccountName LookupAccountNameA
+#define LookupAccountSid LookupAccountSidA
+#define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA
+#define LookupPrivilegeName LookupPrivilegeNameA
+#define LookupPrivilegeValue LookupPrivilegeValueA
+#define lstrcat lstrcatA
+#define lstrcmp lstrcmpA
+#define lstrcmpi lstrcmpiA
+#define lstrcpy lstrcpyA
+#define lstrcpyn lstrcpynA
+#define lstrlen lstrlenA
+#define MoveFile MoveFileA
+#define MoveFileEx MoveFileExA
+#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmA
+#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmA
+#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmA
+#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmA
+#define OpenBackupEventLog OpenBackupEventLogA
+#define OpenEvent OpenEventA
+#define OpenEventLog OpenEventLogA
+#define OpenFileMapping OpenFileMappingA
+#define OpenMutex OpenMutexA
+#define OpenSemaphore OpenSemaphoreA
+#define OutputDebugString OutputDebugStringA
+#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmA
+#define QueryDosDevice QueryDosDeviceA
+#define ReadEventLog ReadEventLogA
+#define RegisterEventSource RegisterEventSourceA
+#define RemoveDirectory RemoveDirectoryA
+#define ReportEvent ReportEventA
+#define SearchPath SearchPathA
+#define SetComputerName SetComputerNameA
+#define SetCurrentDirectory SetCurrentDirectoryA
+#define SetDefaultCommConfig SetDefaultCommConfigA
+#define SetEnvironmentVariable SetEnvironmentVariableA
+#define SetFileAttributes SetFileAttributesA
+#define SetFileSecurity SetFileSecurityA
+#define SetVolumeLabel SetVolumeLabelA
+#define UpdateResource UpdateResourceA
+#define VerifyVersionInfo VerifyVersionInfoA
+#define WaitNamedPipe WaitNamedPipeA
+#define WritePrivateProfileSection WritePrivateProfileSectionA
+#define WritePrivateProfileString WritePrivateProfileStringA
+#define WritePrivateProfileStruct WritePrivateProfileStructA
+#define WriteProfileSection WriteProfileSectionA
+#define WriteProfileString WriteProfileStringA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINBASE_H */
diff --git a/win32/include/winapi/wincon.h b/win32/include/winapi/wincon.h
new file mode 100644
index 0000000..6f6d638
--- /dev/null
+++ b/win32/include/winapi/wincon.h
@@ -0,0 +1,207 @@
+#ifndef _WINCON_H
+#define _WINCON_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define FOREGROUND_BLUE 1
+#define FOREGROUND_GREEN 2
+#define FOREGROUND_RED 4
+#define FOREGROUND_INTENSITY 8
+#define BACKGROUND_BLUE 16
+#define BACKGROUND_GREEN 32
+#define BACKGROUND_RED 64
+#define BACKGROUND_INTENSITY 128
+#define CTRL_C_EVENT 0
+#define CTRL_BREAK_EVENT 1
+#define CTRL_CLOSE_EVENT 2
+#define CTRL_LOGOFF_EVENT 5
+#define CTRL_SHUTDOWN_EVENT 6
+#define ENABLE_LINE_INPUT 2
+#define ENABLE_ECHO_INPUT 4
+#define ENABLE_PROCESSED_INPUT 1
+#define ENABLE_WINDOW_INPUT 8
+#define ENABLE_MOUSE_INPUT 16
+#define ENABLE_PROCESSED_OUTPUT 1
+#define ENABLE_WRAP_AT_EOL_OUTPUT 2
+#define KEY_EVENT 1
+#define MOUSE_EVENT 2
+#define WINDOW_BUFFER_SIZE_EVENT 4
+#define MENU_EVENT 8
+#define FOCUS_EVENT 16
+#define CAPSLOCK_ON 128
+#define ENHANCED_KEY 256
+#define RIGHT_ALT_PRESSED 1
+#define LEFT_ALT_PRESSED 2
+#define RIGHT_CTRL_PRESSED 4
+#define LEFT_CTRL_PRESSED 8
+#define SHIFT_PRESSED 16
+#define NUMLOCK_ON 32
+#define SCROLLLOCK_ON 64
+#define FROM_LEFT_1ST_BUTTON_PRESSED 1
+#define RIGHTMOST_BUTTON_PRESSED 2
+#define FROM_LEFT_2ND_BUTTON_PRESSED 4
+#define FROM_LEFT_3RD_BUTTON_PRESSED 8
+#define FROM_LEFT_4TH_BUTTON_PRESSED 16
+#define MOUSE_MOVED 1
+#define DOUBLE_CLICK 2
+#define MOUSE_WHEELED 4
+
+typedef struct _CHAR_INFO {
+ union {
+ WCHAR UnicodeChar;
+ CHAR AsciiChar;
+ } Char;
+ WORD Attributes;
+} CHAR_INFO,*PCHAR_INFO;
+typedef struct _SMALL_RECT {
+ SHORT Left;
+ SHORT Top;
+ SHORT Right;
+ SHORT Bottom;
+} SMALL_RECT,*PSMALL_RECT;
+typedef struct _CONSOLE_CURSOR_INFO {
+ DWORD dwSize;
+ BOOL bVisible;
+} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
+typedef struct _COORD {
+ SHORT X;
+ SHORT Y;
+} COORD;
+typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
+ COORD dwSize;
+ COORD dwCursorPosition;
+ WORD wAttributes;
+ SMALL_RECT srWindow;
+ COORD dwMaximumWindowSize;
+} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
+typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(DWORD);
+typedef struct _KEY_EVENT_RECORD {
+ BOOL bKeyDown;
+ WORD wRepeatCount;
+ WORD wVirtualKeyCode;
+ WORD wVirtualScanCode;
+ union {
+ WCHAR UnicodeChar;
+ CHAR AsciiChar;
+ } uChar;
+ DWORD dwControlKeyState;
+}
+#ifdef __GNUC__
+/* gcc's alignment is not what win32 expects */
+ PACKED
+#endif
+KEY_EVENT_RECORD;
+
+typedef struct _MOUSE_EVENT_RECORD {
+ COORD dwMousePosition;
+ DWORD dwButtonState;
+ DWORD dwControlKeyState;
+ DWORD dwEventFlags;
+} MOUSE_EVENT_RECORD;
+typedef struct _WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD;
+typedef struct _MENU_EVENT_RECORD { UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
+typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD;
+typedef struct _INPUT_RECORD {
+ WORD EventType;
+ union {
+ KEY_EVENT_RECORD KeyEvent;
+ MOUSE_EVENT_RECORD MouseEvent;
+ WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
+ MENU_EVENT_RECORD MenuEvent;
+ FOCUS_EVENT_RECORD FocusEvent;
+ } Event;
+} INPUT_RECORD,*PINPUT_RECORD;
+
+BOOL WINAPI AllocConsole(void);
+HANDLE WINAPI CreateConsoleScreenBuffer(DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,PVOID);
+BOOL WINAPI FillConsoleOutputAttribute(HANDLE,WORD,DWORD,COORD,PDWORD);
+BOOL WINAPI FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,PDWORD);
+BOOL WINAPI FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,PDWORD);
+BOOL WINAPI FlushConsoleInputBuffer(HANDLE);
+BOOL WINAPI FreeConsole(void);
+BOOL WINAPI GenerateConsoleCtrlEvent(DWORD,DWORD);
+UINT WINAPI GetConsoleCP(void);
+BOOL WINAPI GetConsoleCursorInfo(HANDLE,PCONSOLE_CURSOR_INFO);
+BOOL WINAPI GetConsoleMode(HANDLE,PDWORD);
+UINT WINAPI GetConsoleOutputCP(void);
+BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE,PCONSOLE_SCREEN_BUFFER_INFO);
+DWORD WINAPI GetConsoleTitleA(LPSTR,DWORD);
+DWORD WINAPI GetConsoleTitleW(LPWSTR,DWORD);
+COORD WINAPI GetLargestConsoleWindowSize(HANDLE);
+BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE,PDWORD);
+BOOL WINAPI GetNumberOfConsoleMouseButtons(PDWORD);
+BOOL WINAPI PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI PeekConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI ReadConsoleW(HANDLE,PVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputAttribute(HANDLE,LPWORD,DWORD,COORD,LPDWORD);
+BOOL WINAPI ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI ReadConsoleOutputA(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI ReadConsoleOutputW(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI ScrollConsoleScreenBufferA(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*);
+BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*);
+BOOL WINAPI SetConsoleActiveScreenBuffer(HANDLE);
+BOOL WINAPI SetConsoleCP(UINT);
+BOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE,BOOL);
+BOOL WINAPI SetConsoleCursorInfo(HANDLE,const CONSOLE_CURSOR_INFO*);
+BOOL WINAPI SetConsoleCursorPosition(HANDLE,COORD);
+BOOL WINAPI SetConsoleMode(HANDLE,DWORD);
+BOOL WINAPI SetConsoleOutputCP(UINT);
+BOOL WINAPI SetConsoleScreenBufferSize(HANDLE,COORD);
+BOOL WINAPI SetConsoleTextAttribute(HANDLE,WORD);
+BOOL WINAPI SetConsoleTitleA(LPCSTR);
+BOOL WINAPI SetConsoleTitleW(LPCWSTR);
+BOOL WINAPI SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*);
+BOOL WINAPI WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID);
+BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
+BOOL WINAPI WriteConsoleInputW(HANDLE,const INPUT_RECORD*,DWORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT);
+BOOL WINAPI WriteConsoleOutputAttribute(HANDLE,const WORD*,DWORD,COORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,PDWORD);
+BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,PDWORD);
+
+#ifdef UNICODE
+#define FillConsoleOutputCharacter FillConsoleOutputCharacterW
+#define GetConsoleTitle GetConsoleTitleW
+#define PeekConsoleInput PeekConsoleInputW
+#define ReadConsole ReadConsoleW
+#define ReadConsoleInput ReadConsoleInputW
+#define ReadConsoleOutput ReadConsoleOutputW
+#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
+#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
+#define SetConsoleTitle SetConsoleTitleW
+#define WriteConsole WriteConsoleW
+#define WriteConsoleInput WriteConsoleInputW
+#define WriteConsoleOutput WriteConsoleOutputW
+#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
+#else
+#define FillConsoleOutputCharacter FillConsoleOutputCharacterA
+#define GetConsoleTitle GetConsoleTitleA
+#define PeekConsoleInput PeekConsoleInputA
+#define ReadConsole ReadConsoleA
+#define ReadConsoleInput ReadConsoleInputA
+#define ReadConsoleOutput ReadConsoleOutputA
+#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
+#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
+#define SetConsoleTitle SetConsoleTitleA
+#define WriteConsole WriteConsoleA
+#define WriteConsoleInput WriteConsoleInputA
+#define WriteConsoleOutput WriteConsoleOutputA
+#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/win32/include/winapi/windef.h b/win32/include/winapi/windef.h
new file mode 100644
index 0000000..c5c6426
--- /dev/null
+++ b/win32/include/winapi/windef.h
@@ -0,0 +1,240 @@
+#ifndef _WINDEF_H
+#define _WINDEF_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0400
+#endif
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT WINVER
+#endif
+#ifndef WIN32
+#define WIN32
+#endif
+#ifndef _WIN32
+#define _WIN32
+#endif
+#define FAR
+#define far
+#define NEAR
+#define near
+#ifndef CONST
+#define CONST const
+#endif
+#undef MAX_PATH
+#define MAX_PATH 260
+
+#ifndef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void*)0)
+#endif
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef TRUE
+#define TRUE 1
+#endif
+#define IN
+#define OUT
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
+#ifdef __GNUC__
+#define PACKED __attribute__((packed))
+#ifndef _stdcall
+#define _stdcall __attribute__((stdcall))
+#endif
+#ifndef __stdcall
+#define __stdcall __attribute__((stdcall))
+#endif
+#ifndef _cdecl
+#define _cdecl __attribute__((cdecl))
+#endif
+#ifndef __cdecl
+#define __cdecl __attribute__((cdecl))
+#endif
+#ifndef __declspec
+#define __declspec(e) __attribute__((e))
+#endif
+#ifndef _declspec
+#define _declspec(e) __attribute__((e))
+#endif
+#else
+#define PACKED
+#define _cdecl
+#define __cdecl
+#endif
+
+#undef pascal
+#undef _pascal
+#undef __pascal
+#define pascal __stdcall
+#define _pascal __stdcall
+#define __pascal __stdcall
+#define PASCAL _pascal
+#define CDECL _cdecl
+#define STDCALL __stdcall
+#define WINAPI __stdcall
+#define WINAPIV __cdecl
+#define APIENTRY __stdcall
+#define CALLBACK __stdcall
+#define APIPRIVATE __stdcall
+
+#define DECLSPEC_IMPORT __declspec(dllimport)
+#define DECLSPEC_EXPORT __declspec(dllexport)
+#ifdef __GNUC__
+#define DECLSPEC_NORETURN __declspec(noreturn)
+#define DECLARE_STDCALL_P( type ) __stdcall type
+#elif defined(__WATCOMC__)
+#define DECLSPEC_NORETURN
+#define DECLARE_STDCALL_P( type ) type __stdcall
+#endif /* __GNUC__/__WATCOMC__ */
+#define MAKEWORD(a,b) ((WORD)(((BYTE)(a))|(((WORD)((BYTE)(b)))<<8)))
+#define MAKELONG(a,b) ((LONG)(((WORD)(a))|(((DWORD)((WORD)(b)))<<16)))
+#define LOWORD(l) ((WORD)((DWORD)(l)))
+#define HIWORD(l) ((WORD)(((DWORD)(l)>>16)&0xFFFF))
+#define LOBYTE(w) ((BYTE)(w))
+#define HIBYTE(w) ((BYTE)(((WORD)(w)>>8)&0xFF))
+
+#ifndef _export
+#define _export
+#endif
+#ifndef __export
+#define __export
+#endif
+
+#ifndef NOMINMAX
+#ifndef max
+#define max(a,b) ((a)>(b)?(a):(b))
+#endif
+#ifndef min
+#define min(a,b) ((a)<(b)?(a):(b))
+#endif
+#endif
+
+#define UNREFERENCED_PARAMETER(P) {(P)=(P);}
+#define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);}
+#define DBG_UNREFERENCED_PARAMETER(P)
+#define DBG_UNREFERENCED_LOCAL_VARIABLE(L)
+
+typedef unsigned long DWORD;
+typedef int WINBOOL,*PWINBOOL,*LPWINBOOL;
+/* FIXME: Is there a good solution to this? */
+#ifndef XFree86Server
+#ifndef __OBJC__
+typedef WINBOOL BOOL;
+#else
+#define BOOL WINBOOL
+#endif
+typedef unsigned char BYTE;
+#endif /* ndef XFree86Server */
+typedef BOOL *PBOOL,*LPBOOL;
+typedef unsigned short WORD;
+typedef float FLOAT;
+typedef FLOAT *PFLOAT;
+typedef BYTE *PBYTE,*LPBYTE;
+typedef int *PINT,*LPINT;
+typedef WORD *PWORD,*LPWORD;
+typedef long *LPLONG;
+typedef DWORD *PDWORD,*LPDWORD;
+typedef void *PVOID,*LPVOID;
+typedef CONST void *PCVOID,*LPCVOID;
+typedef int INT;
+typedef unsigned int UINT,*PUINT,*LPUINT;
+
+#include <winnt.h>
+
+typedef UINT WPARAM;
+typedef LONG LPARAM;
+typedef LONG LRESULT;
+#ifndef _HRESULT_DEFINED
+typedef LONG HRESULT;
+#define _HRESULT_DEFINED
+#endif
+#ifndef XFree86Server
+typedef WORD ATOM;
+#endif /* XFree86Server */
+typedef HANDLE HGLOBAL;
+typedef HANDLE HLOCAL;
+typedef HANDLE GLOBALHANDLE;
+typedef HANDLE LOCALHANDLE;
+typedef void *HGDIOBJ;
+DECLARE_HANDLE(HACCEL);
+DECLARE_HANDLE(HBITMAP);
+DECLARE_HANDLE(HBRUSH);
+DECLARE_HANDLE(HCOLORSPACE);
+DECLARE_HANDLE(HDC);
+DECLARE_HANDLE(HGLRC);
+DECLARE_HANDLE(HDESK);
+DECLARE_HANDLE(HENHMETAFILE);
+DECLARE_HANDLE(HFONT);
+DECLARE_HANDLE(HICON);
+DECLARE_HANDLE(HKEY);
+/* FIXME: How to handle these. SM_CMONITORS etc in winuser.h also. */
+/* #if (WINVER >= 0x0500) */
+DECLARE_HANDLE(HMONITOR);
+#define HMONITOR_DECLARED 1
+DECLARE_HANDLE(HTERMINAL);
+DECLARE_HANDLE(HWINEVENTHOOK);
+/* #endif */
+typedef HKEY *PHKEY;
+DECLARE_HANDLE(HMENU);
+DECLARE_HANDLE(HMETAFILE);
+DECLARE_HANDLE(HINSTANCE);
+typedef HINSTANCE HMODULE;
+DECLARE_HANDLE(HPALETTE);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HRSRC);
+DECLARE_HANDLE(HSTR);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HWND);
+DECLARE_HANDLE(HWINSTA);
+DECLARE_HANDLE(HKL);
+typedef int HFILE;
+typedef HICON HCURSOR;
+typedef DWORD COLORREF;
+typedef int (WINAPI *FARPROC)();
+typedef int (WINAPI *NEARPROC)();
+typedef int (WINAPI *PROC)();
+typedef struct tagRECT {
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECT,*PRECT,*LPRECT;
+typedef const RECT *LPCRECT;
+typedef struct tagRECTL {
+ LONG left;
+ LONG top;
+ LONG right;
+ LONG bottom;
+} RECTL,*PRECTL,*LPRECTL;
+typedef const RECTL *LPCRECTL;
+typedef struct tagPOINT {
+ LONG x;
+ LONG y;
+} POINT,POINTL,*PPOINT,*LPPOINT,*PPOINTL,*LPPOINTL;
+typedef struct tagSIZE {
+ LONG cx;
+ LONG cy;
+} SIZE,SIZEL,*PSIZE,*LPSIZE,*PSIZEL,*LPSIZEL;
+typedef struct tagPOINTS {
+ SHORT x;
+ SHORT y;
+} POINTS,*PPOINTS,*LPPOINTS;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/win32/include/winapi/windows.h b/win32/include/winapi/windows.h
new file mode 100644
index 0000000..faf6e7f
--- /dev/null
+++ b/win32/include/winapi/windows.h
@@ -0,0 +1,176 @@
+/*
+ windows.h - main header file for the Win32 API
+
+ Written by Anders Norlander <anorland@hem2.passagen.se>
+
+ This file is part of a free library for the Win32 API.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+#ifndef _WINDOWS_H
+#define _WINDOWS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+/* translate GCC target defines to MS equivalents. Keep this synchronized
+ with winnt.h. */
+#if defined(__i686__) && !defined(_M_IX86)
+#define _M_IX86 600
+#elif defined(__i586__) && !defined(_M_IX86)
+#define _M_IX86 500
+#elif defined(__i486__) && !defined(_M_IX86)
+#define _M_IX86 400
+#elif defined(__i386__) && !defined(_M_IX86)
+#define _M_IX86 300
+#endif
+#if defined(_M_IX86) && !defined(_X86_)
+#define _X86_
+#elif defined(_M_ALPHA) && !defined(_ALPHA_)
+#define _ALPHA_
+#elif defined(_M_PPC) && !defined(_PPC_)
+#define _PPC_
+#elif defined(_M_MRX000) && !defined(_MIPS_)
+#define _MIPS_
+#elif defined(_M_M68K) && !defined(_68K_)
+#define _68K_
+#endif
+
+#ifdef RC_INVOKED
+/* winresrc.h includes the necessary headers */
+#include <winresrc.h>
+#else
+
+#ifdef __GNUC__
+#ifndef NONAMELESSUNION
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+#define _ANONYMOUS_UNION __extension__
+#define _ANONYMOUS_STRUCT __extension__
+#else
+#if defined(__cplusplus)
+#define _ANONYMOUS_UNION __extension__
+#endif /* __cplusplus */
+#endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */
+#endif /* NONAMELESSUNION */
+#elif defined(__WATCOMC__)
+#define _ANONYMOUS_UNION
+#define _ANONYMOUS_STRUCT
+#endif /* __GNUC__/__WATCOMC__ */
+
+#ifndef _ANONYMOUS_UNION
+#define _ANONYMOUS_UNION
+#define _UNION_NAME(x) x
+#define DUMMYUNIONNAME u
+#define DUMMYUNIONNAME2 u2
+#define DUMMYUNIONNAME3 u3
+#define DUMMYUNIONNAME4 u4
+#define DUMMYUNIONNAME5 u5
+#define DUMMYUNIONNAME6 u6
+#define DUMMYUNIONNAME7 u7
+#define DUMMYUNIONNAME8 u8
+#else
+#define _UNION_NAME(x)
+#define DUMMYUNIONNAME
+#define DUMMYUNIONNAME2
+#define DUMMYUNIONNAME3
+#define DUMMYUNIONNAME4
+#define DUMMYUNIONNAME5
+#define DUMMYUNIONNAME6
+#define DUMMYUNIONNAME7
+#define DUMMYUNIONNAME8
+#endif
+#ifndef _ANONYMOUS_STRUCT
+#define _ANONYMOUS_STRUCT
+#define _STRUCT_NAME(x) x
+#define DUMMYSTRUCTNAME s
+#define DUMMYSTRUCTNAME2 s2
+#define DUMMYSTRUCTNAME3 s3
+#else
+#define _STRUCT_NAME(x)
+#define DUMMYSTRUCTNAME
+#define DUMMYSTRUCTNAME2
+#define DUMMYSTRUCTNAME3
+#endif
+
+#ifndef NO_STRICT
+#ifndef STRICT
+#define STRICT 1
+#endif
+#endif
+
+#include <stdarg.h>
+#include <windef.h>
+#include <wincon.h>
+#include <basetyps.h>
+#include <excpt.h>
+#include <winbase.h>
+#ifndef _WINGDI_H
+#include <wingdi.h>
+#endif
+#ifndef _WINUSER_H
+#include <winuser.h>
+#endif
+#ifndef _WINNLS_H
+#include <winnls.h>
+#endif
+#ifndef _WINVER_H
+#include <winver.h>
+#endif
+#ifndef _WINNETWK_H
+#include <winnetwk.h>
+#endif
+#ifndef _WINREG_H
+#include <winreg.h>
+#endif
+#ifndef _WINSVC_H
+#include <winsvc.h>
+#endif
+
+#ifndef WIN32_LEAN_AND_MEAN
+#include <commdlg.h>
+#include <cderr.h>
+#include <dde.h>
+#include <ddeml.h>
+#include <dlgs.h>
+#include <lzexpand.h>
+#include <mmsystem.h>
+#include <nb30.h>
+#include <rpc.h>
+#include <shellapi.h>
+#include <winperf.h>
+#include <winspool.h>
+#if defined(Win32_Winsock)
+#warning "The Win32_Winsock macro name is deprecated.\
+ Please use __USE_W32_SOCKETS instead"
+#ifndef __USE_W32_SOCKETS
+#define __USE_W32_SOCKETS
+#endif
+#endif
+#if defined(__USE_W32_SOCKETS) || !(defined(__CYGWIN__) || defined(__MSYS__) || defined(_UWIN))
+#if (_WIN32_WINNT >= 0x0400)
+#include <winsock2.h>
+/*
+ * MS likes to include mswsock.h here as well,
+ * but that can cause undefined symbols if
+ * winsock2.h is included before windows.h
+ */
+#else
+#include <winsock.h>
+#endif /* (_WIN32_WINNT >= 0x0400) */
+#endif
+#endif /* WIN32_LEAN_AND_MEAN */
+
+#endif /* RC_INVOKED */
+
+#ifdef __OBJC__
+/* FIXME: Not undefining BOOL here causes all BOOLs to be WINBOOL (int),
+ but undefining it causes trouble as well if a file is included after
+ windows.h
+*/
+#undef BOOL
+#endif
+
+#endif
diff --git a/win32/include/winapi/winerror.h b/win32/include/winapi/winerror.h
new file mode 100644
index 0000000..05d528f
--- /dev/null
+++ b/win32/include/winapi/winerror.h
@@ -0,0 +1,1054 @@
+#ifndef _WINERROR_H
+#define _WINERROR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define ERROR_SUCCESS 0L
+#define NO_ERROR 0L
+#define ERROR_INVALID_FUNCTION 1L
+#define ERROR_FILE_NOT_FOUND 2L
+#define ERROR_PATH_NOT_FOUND 3L
+#define ERROR_TOO_MANY_OPEN_FILES 4L
+#define ERROR_ACCESS_DENIED 5L
+#define ERROR_INVALID_HANDLE 6L
+#define ERROR_ARENA_TRASHED 7L
+#define ERROR_NOT_ENOUGH_MEMORY 8L
+#define ERROR_INVALID_BLOCK 9L
+#define ERROR_BAD_ENVIRONMENT 10L
+#define ERROR_BAD_FORMAT 11L
+#define ERROR_INVALID_ACCESS 12L
+#define ERROR_INVALID_DATA 13L
+#define ERROR_OUTOFMEMORY 14L
+#define ERROR_INVALID_DRIVE 15L
+#define ERROR_CURRENT_DIRECTORY 16L
+#define ERROR_NOT_SAME_DEVICE 17L
+#define ERROR_NO_MORE_FILES 18L
+#define ERROR_WRITE_PROTECT 19L
+#define ERROR_BAD_UNIT 20L
+#define ERROR_NOT_READY 21L
+#define ERROR_BAD_COMMAND 22L
+#define ERROR_CRC 23L
+#define ERROR_BAD_LENGTH 24L
+#define ERROR_SEEK 25L
+#define ERROR_NOT_DOS_DISK 26L
+#define ERROR_SECTOR_NOT_FOUND 27L
+#define ERROR_OUT_OF_PAPER 28L
+#define ERROR_WRITE_FAULT 29L
+#define ERROR_READ_FAULT 30L
+#define ERROR_GEN_FAILURE 31L
+#define ERROR_SHARING_VIOLATION 32L
+#define ERROR_LOCK_VIOLATION 33L
+#define ERROR_WRONG_DISK 34L
+#define ERROR_SHARING_BUFFER_EXCEEDED 36L
+#define ERROR_HANDLE_EOF 38L
+#define ERROR_HANDLE_DISK_FULL 39L
+#define ERROR_NOT_SUPPORTED 50L
+#define ERROR_REM_NOT_LIST 51L
+#define ERROR_DUP_NAME 52L
+#define ERROR_BAD_NETPATH 53L
+#define ERROR_NETWORK_BUSY 54L
+#define ERROR_DEV_NOT_EXIST 55L
+#define ERROR_TOO_MANY_CMDS 56L
+#define ERROR_ADAP_HDW_ERR 57L
+#define ERROR_BAD_NET_RESP 58L
+#define ERROR_UNEXP_NET_ERR 59L
+#define ERROR_BAD_REM_ADAP 60L
+#define ERROR_PRINTQ_FULL 61L
+#define ERROR_NO_SPOOL_SPACE 62L
+#define ERROR_PRINT_CANCELLED 63L
+#define ERROR_NETNAME_DELETED 64L
+#define ERROR_NETWORK_ACCESS_DENIED 65L
+#define ERROR_BAD_DEV_TYPE 66L
+#define ERROR_BAD_NET_NAME 67L
+#define ERROR_TOO_MANY_NAMES 68L
+#define ERROR_TOO_MANY_SESS 69L
+#define ERROR_SHARING_PAUSED 70L
+#define ERROR_REQ_NOT_ACCEP 71L
+#define ERROR_REDIR_PAUSED 72L
+#define ERROR_FILE_EXISTS 80L
+#define ERROR_CANNOT_MAKE 82L
+#define ERROR_FAIL_I24 83L
+#define ERROR_OUT_OF_STRUCTURES 84L
+#define ERROR_ALREADY_ASSIGNED 85L
+#define ERROR_INVALID_PASSWORD 86L
+#define ERROR_INVALID_PARAMETER 87L
+#define ERROR_NET_WRITE_FAULT 88L
+#define ERROR_NO_PROC_SLOTS 89L
+#define ERROR_TOO_MANY_SEMAPHORES 100L
+#define ERROR_EXCL_SEM_ALREADY_OWNED 101L
+#define ERROR_SEM_IS_SET 102L
+#define ERROR_TOO_MANY_SEM_REQUESTS 103L
+#define ERROR_INVALID_AT_INTERRUPT_TIME 104L
+#define ERROR_SEM_OWNER_DIED 105L
+#define ERROR_SEM_USER_LIMIT 106L
+#define ERROR_DISK_CHANGE 107L
+#define ERROR_DRIVE_LOCKED 108L
+#define ERROR_BROKEN_PIPE 109L
+#define ERROR_OPEN_FAILED 110L
+#define ERROR_BUFFER_OVERFLOW 111L
+#define ERROR_DISK_FULL 112L
+#define ERROR_NO_MORE_SEARCH_HANDLES 113L
+#define ERROR_INVALID_TARGET_HANDLE 114L
+#define ERROR_INVALID_CATEGORY 117L
+#define ERROR_INVALID_VERIFY_SWITCH 118L
+#define ERROR_BAD_DRIVER_LEVEL 119L
+#define ERROR_CALL_NOT_IMPLEMENTED 120L
+#define ERROR_SEM_TIMEOUT 121L
+#define ERROR_INSUFFICIENT_BUFFER 122L
+#define ERROR_INVALID_NAME 123L
+#define ERROR_INVALID_LEVEL 124L
+#define ERROR_NO_VOLUME_LABEL 125L
+#define ERROR_MOD_NOT_FOUND 126L
+#define ERROR_PROC_NOT_FOUND 127L
+#define ERROR_WAIT_NO_CHILDREN 128L
+#define ERROR_CHILD_NOT_COMPLETE 129L
+#define ERROR_DIRECT_ACCESS_HANDLE 130L
+#define ERROR_NEGATIVE_SEEK 131L
+#define ERROR_SEEK_ON_DEVICE 132L
+#define ERROR_IS_JOIN_TARGET 133L
+#define ERROR_IS_JOINED 134L
+#define ERROR_IS_SUBSTED 135L
+#define ERROR_NOT_JOINED 136L
+#define ERROR_NOT_SUBSTED 137L
+#define ERROR_JOIN_TO_JOIN 138L
+#define ERROR_SUBST_TO_SUBST 139L
+#define ERROR_JOIN_TO_SUBST 140L
+#define ERROR_SUBST_TO_JOIN 141L
+#define ERROR_BUSY_DRIVE 142L
+#define ERROR_SAME_DRIVE 143L
+#define ERROR_DIR_NOT_ROOT 144L
+#define ERROR_DIR_NOT_EMPTY 145L
+#define ERROR_IS_SUBST_PATH 146L
+#define ERROR_IS_JOIN_PATH 147L
+#define ERROR_PATH_BUSY 148L
+#define ERROR_IS_SUBST_TARGET 149L
+#define ERROR_SYSTEM_TRACE 150L
+#define ERROR_INVALID_EVENT_COUNT 151L
+#define ERROR_TOO_MANY_MUXWAITERS 152L
+#define ERROR_INVALID_LIST_FORMAT 153L
+#define ERROR_LABEL_TOO_LONG 154L
+#define ERROR_TOO_MANY_TCBS 155L
+#define ERROR_SIGNAL_REFUSED 156L
+#define ERROR_DISCARDED 157L
+#define ERROR_NOT_LOCKED 158L
+#define ERROR_BAD_THREADID_ADDR 159L
+#define ERROR_BAD_ARGUMENTS 160L
+#define ERROR_BAD_PATHNAME 161L
+#define ERROR_SIGNAL_PENDING 162L
+#define ERROR_MAX_THRDS_REACHED 164L
+#define ERROR_LOCK_FAILED 167L
+#define ERROR_BUSY 170L
+#define ERROR_CANCEL_VIOLATION 173L
+#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED 174L
+#define ERROR_INVALID_SEGMENT_NUMBER 180L
+#define ERROR_INVALID_ORDINAL 182L
+#define ERROR_ALREADY_EXISTS 183L
+#define ERROR_INVALID_FLAG_NUMBER 186L
+#define ERROR_SEM_NOT_FOUND 187L
+#define ERROR_INVALID_STARTING_CODESEG 188L
+#define ERROR_INVALID_STACKSEG 189L
+#define ERROR_INVALID_MODULETYPE 190L
+#define ERROR_INVALID_EXE_SIGNATURE 191L
+#define ERROR_EXE_MARKED_INVALID 192L
+#define ERROR_BAD_EXE_FORMAT 193L
+#define ERROR_ITERATED_DATA_EXCEEDS_64k 194L
+#define ERROR_INVALID_MINALLOCSIZE 195L
+#define ERROR_DYNLINK_FROM_INVALID_RING 196L
+#define ERROR_IOPL_NOT_ENABLED 197L
+#define ERROR_INVALID_SEGDPL 198L
+#define ERROR_AUTODATASEG_EXCEEDS_64k 199L
+#define ERROR_RING2SEG_MUST_BE_MOVABLE 200L
+#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM 201L
+#define ERROR_INFLOOP_IN_RELOC_CHAIN 202L
+#define ERROR_ENVVAR_NOT_FOUND 203L
+#define ERROR_NO_SIGNAL_SENT 205L
+#define ERROR_FILENAME_EXCED_RANGE 206L
+#define ERROR_RING2_STACK_IN_USE 207L
+#define ERROR_META_EXPANSION_TOO_LONG 208L
+#define ERROR_INVALID_SIGNAL_NUMBER 209L
+#define ERROR_THREAD_1_INACTIVE 210L
+#define ERROR_LOCKED 212L
+#define ERROR_TOO_MANY_MODULES 214L
+#define ERROR_NESTING_NOT_ALLOWED 215L
+#define ERROR_BAD_PIPE 230L
+#define ERROR_PIPE_BUSY 231L
+#define ERROR_NO_DATA 232L
+#define ERROR_PIPE_NOT_CONNECTED 233L
+#define ERROR_MORE_DATA 234L
+#define ERROR_VC_DISCONNECTED 240L
+#define ERROR_INVALID_EA_NAME 254L
+#define ERROR_EA_LIST_INCONSISTENT 255L
+#define ERROR_NO_MORE_ITEMS 259L
+#define ERROR_CANNOT_COPY 266L
+#define ERROR_DIRECTORY 267L
+#define ERROR_EAS_DIDNT_FIT 275L
+#define ERROR_EA_FILE_CORRUPT 276L
+#define ERROR_EA_TABLE_FULL 277L
+#define ERROR_INVALID_EA_HANDLE 278L
+#define ERROR_EAS_NOT_SUPPORTED 282L
+#define ERROR_NOT_OWNER 288L
+#define ERROR_TOO_MANY_POSTS 298L
+#define ERROR_PARTIAL_COPY 299L
+#define ERROR_MR_MID_NOT_FOUND 317L
+#define ERROR_INVALID_ADDRESS 487L
+#define ERROR_ARITHMETIC_OVERFLOW 534L
+#define ERROR_PIPE_CONNECTED 535L
+#define ERROR_PIPE_LISTENING 536L
+#define ERROR_EA_ACCESS_DENIED 994L
+#define ERROR_OPERATION_ABORTED 995L
+#define ERROR_IO_INCOMPLETE 996L
+#define ERROR_IO_PENDING 997L
+#define ERROR_NOACCESS 998L
+#define ERROR_SWAPERROR 999L
+#define ERROR_STACK_OVERFLOW 1001L
+#define ERROR_INVALID_MESSAGE 1002L
+#define ERROR_CAN_NOT_COMPLETE 1003L
+#define ERROR_INVALID_FLAGS 1004L
+#define ERROR_UNRECOGNIZED_VOLUME 1005L
+#define ERROR_FILE_INVALID 1006L
+#define ERROR_FULLSCREEN_MODE 1007L
+#define ERROR_NO_TOKEN 1008L
+#define ERROR_BADDB 1009L
+#define ERROR_BADKEY 1010L
+#define ERROR_CANTOPEN 1011L
+#define ERROR_CANTREAD 1012L
+#define ERROR_CANTWRITE 1013L
+#define ERROR_REGISTRY_RECOVERED 1014L
+#define ERROR_REGISTRY_CORRUPT 1015L
+#define ERROR_REGISTRY_IO_FAILED 1016L
+#define ERROR_NOT_REGISTRY_FILE 1017L
+#define ERROR_KEY_DELETED 1018L
+#define ERROR_NO_LOG_SPACE 1019L
+#define ERROR_KEY_HAS_CHILDREN 1020L
+#define ERROR_CHILD_MUST_BE_VOLATILE 1021L
+#define ERROR_NOTIFY_ENUM_DIR 1022L
+#define ERROR_DEPENDENT_SERVICES_RUNNING 1051L
+#define ERROR_INVALID_SERVICE_CONTROL 1052L
+#define ERROR_SERVICE_REQUEST_TIMEOUT 1053L
+#define ERROR_SERVICE_NO_THREAD 1054L
+#define ERROR_SERVICE_DATABASE_LOCKED 1055L
+#define ERROR_SERVICE_ALREADY_RUNNING 1056L
+#define ERROR_INVALID_SERVICE_ACCOUNT 1057L
+#define ERROR_SERVICE_DISABLED 1058L
+#define ERROR_CIRCULAR_DEPENDENCY 1059L
+#define ERROR_SERVICE_DOES_NOT_EXIST 1060L
+#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL 1061L
+#define ERROR_SERVICE_NOT_ACTIVE 1062L
+#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT 1063L
+#define ERROR_EXCEPTION_IN_SERVICE 1064L
+#define ERROR_DATABASE_DOES_NOT_EXIST 1065L
+#define ERROR_SERVICE_SPECIFIC_ERROR 1066L
+#define ERROR_PROCESS_ABORTED 1067L
+#define ERROR_SERVICE_DEPENDENCY_FAIL 1068L
+#define ERROR_SERVICE_LOGON_FAILED 1069L
+#define ERROR_SERVICE_START_HANG 1070L
+#define ERROR_INVALID_SERVICE_LOCK 1071L
+#define ERROR_SERVICE_MARKED_FOR_DELETE 1072L
+#define ERROR_SERVICE_EXISTS 1073L
+#define ERROR_ALREADY_RUNNING_LKG 1074L
+#define ERROR_SERVICE_DEPENDENCY_DELETED 1075L
+#define ERROR_BOOT_ALREADY_ACCEPTED 1076L
+#define ERROR_SERVICE_NEVER_STARTED 1077L
+#define ERROR_DUPLICATE_SERVICE_NAME 1078L
+#define ERROR_END_OF_MEDIA 1100L
+#define ERROR_FILEMARK_DETECTED 1101L
+#define ERROR_BEGINNING_OF_MEDIA 1102L
+#define ERROR_SETMARK_DETECTED 1103L
+#define ERROR_NO_DATA_DETECTED 1104L
+#define ERROR_PARTITION_FAILURE 1105L
+#define ERROR_INVALID_BLOCK_LENGTH 1106L
+#define ERROR_DEVICE_NOT_PARTITIONED 1107L
+#define ERROR_UNABLE_TO_LOCK_MEDIA 1108L
+#define ERROR_UNABLE_TO_UNLOAD_MEDIA 1109L
+#define ERROR_MEDIA_CHANGED 1110L
+#define ERROR_BUS_RESET 1111L
+#define ERROR_NO_MEDIA_IN_DRIVE 1112L
+#define ERROR_NO_UNICODE_TRANSLATION 1113L
+#define ERROR_DLL_INIT_FAILED 1114L
+#define ERROR_SHUTDOWN_IN_PROGRESS 1115L
+#define ERROR_NO_SHUTDOWN_IN_PROGRESS 1116L
+#define ERROR_IO_DEVICE 1117L
+#define ERROR_SERIAL_NO_DEVICE 1118L
+#define ERROR_IRQ_BUSY 1119L
+#define ERROR_MORE_WRITES 1120L
+#define ERROR_COUNTER_TIMEOUT 1121L
+#define ERROR_FLOPPY_ID_MARK_NOT_FOUND 1122L
+#define ERROR_FLOPPY_WRONG_CYLINDER 1123L
+#define ERROR_FLOPPY_UNKNOWN_ERROR 1124L
+#define ERROR_FLOPPY_BAD_REGISTERS 1125L
+#define ERROR_DISK_RECALIBRATE_FAILED 1126L
+#define ERROR_DISK_OPERATION_FAILED 1127L
+#define ERROR_DISK_RESET_FAILED 1128L
+#define ERROR_EOM_OVERFLOW 1129L
+#define ERROR_NOT_ENOUGH_SERVER_MEMORY 1130L
+#define ERROR_POSSIBLE_DEADLOCK 1131L
+#define ERROR_MAPPED_ALIGNMENT 1132L
+#define ERROR_SET_POWER_STATE_VETOED 1140L
+#define ERROR_SET_POWER_STATE_FAILED 1141L
+#define ERROR_TOO_MANY_LINKS 1142L
+#define ERROR_OLD_WIN_VERSION 1150L
+#define ERROR_APP_WRONG_OS 1151L
+#define ERROR_SINGLE_INSTANCE_APP 1152L
+#define ERROR_RMODE_APP 1153L
+#define ERROR_INVALID_DLL 1154L
+#define ERROR_NO_ASSOCIATION 1155L
+#define ERROR_DDE_FAIL 1156L
+#define ERROR_DLL_NOT_FOUND 1157L
+#define ERROR_BAD_USERNAME 2202L
+#define ERROR_NOT_CONNECTED 2250L
+#define ERROR_OPEN_FILES 2401L
+#define ERROR_ACTIVE_CONNECTIONS 2402L
+#define ERROR_DEVICE_IN_USE 2404L
+#define ERROR_BAD_DEVICE 1200L
+#define ERROR_CONNECTION_UNAVAIL 1201L
+#define ERROR_DEVICE_ALREADY_REMEMBERED 1202L
+#define ERROR_NO_NET_OR_BAD_PATH 1203L
+#define ERROR_BAD_PROVIDER 1204L
+#define ERROR_CANNOT_OPEN_PROFILE 1205L
+#define ERROR_BAD_PROFILE 1206L
+#define ERROR_NOT_CONTAINER 1207L
+#define ERROR_EXTENDED_ERROR 1208L
+#define ERROR_INVALID_GROUPNAME 1209L
+#define ERROR_INVALID_COMPUTERNAME 1210L
+#define ERROR_INVALID_EVENTNAME 1211L
+#define ERROR_INVALID_DOMAINNAME 1212L
+#define ERROR_INVALID_SERVICENAME 1213L
+#define ERROR_INVALID_NETNAME 1214L
+#define ERROR_INVALID_SHARENAME 1215L
+#define ERROR_INVALID_PASSWORDNAME 1216L
+#define ERROR_INVALID_MESSAGENAME 1217L
+#define ERROR_INVALID_MESSAGEDEST 1218L
+#define ERROR_SESSION_CREDENTIAL_CONFLICT 1219L
+#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED 1220L
+#define ERROR_DUP_DOMAINNAME 1221L
+#define ERROR_NO_NETWORK 1222L
+#define ERROR_CANCELLED 1223L
+#define ERROR_USER_MAPPED_FILE 1224L
+#define ERROR_CONNECTION_REFUSED 1225L
+#define ERROR_GRACEFUL_DISCONNECT 1226L
+#define ERROR_ADDRESS_ALREADY_ASSOCIATED 1227L
+#define ERROR_ADDRESS_NOT_ASSOCIATED 1228L
+#define ERROR_CONNECTION_INVALID 1229L
+#define ERROR_CONNECTION_ACTIVE 1230L
+#define ERROR_NETWORK_UNREACHABLE 1231L
+#define ERROR_HOST_UNREACHABLE 1232L
+#define ERROR_PROTOCOL_UNREACHABLE 1233L
+#define ERROR_PORT_UNREACHABLE 1234L
+#define ERROR_REQUEST_ABORTED 1235L
+#define ERROR_CONNECTION_ABORTED 1236L
+#define ERROR_RETRY 1237L
+#define ERROR_CONNECTION_COUNT_LIMIT 1238L
+#define ERROR_LOGIN_TIME_RESTRICTION 1239L
+#define ERROR_LOGIN_WKSTA_RESTRICTION 1240L
+#define ERROR_INCORRECT_ADDRESS 1241L
+#define ERROR_ALREADY_REGISTERED 1242L
+#define ERROR_SERVICE_NOT_FOUND 1243L
+#define ERROR_NOT_AUTHENTICATED 1244L
+#define ERROR_NOT_LOGGED_ON 1245L
+#define ERROR_CONTINUE 1246L
+#define ERROR_ALREADY_INITIALIZED 1247L
+#define ERROR_NO_MORE_DEVICES 1248L
+#define ERROR_NOT_ALL_ASSIGNED 1300L
+#define ERROR_SOME_NOT_MAPPED 1301L
+#define ERROR_NO_QUOTAS_FOR_ACCOUNT 1302L
+#define ERROR_LOCAL_USER_SESSION_KEY 1303L
+#define ERROR_NULL_LM_PASSWORD 1304L
+#define ERROR_UNKNOWN_REVISION 1305L
+#define ERROR_REVISION_MISMATCH 1306L
+#define ERROR_INVALID_OWNER 1307L
+#define ERROR_INVALID_PRIMARY_GROUP 1308L
+#define ERROR_NO_IMPERSONATION_TOKEN 1309L
+#define ERROR_CANT_DISABLE_MANDATORY 1310L
+#define ERROR_NO_LOGON_SERVERS 1311L
+#define ERROR_NO_SUCH_LOGON_SESSION 1312L
+#define ERROR_NO_SUCH_PRIVILEGE 1313L
+#define ERROR_PRIVILEGE_NOT_HELD 1314L
+#define ERROR_INVALID_ACCOUNT_NAME 1315L
+#define ERROR_USER_EXISTS 1316L
+#define ERROR_NO_SUCH_USER 1317L
+#define ERROR_GROUP_EXISTS 1318L
+#define ERROR_NO_SUCH_GROUP 1319L
+#define ERROR_MEMBER_IN_GROUP 1320L
+#define ERROR_MEMBER_NOT_IN_GROUP 1321L
+#define ERROR_LAST_ADMIN 1322L
+#define ERROR_WRONG_PASSWORD 1323L
+#define ERROR_ILL_FORMED_PASSWORD 1324L
+#define ERROR_PASSWORD_RESTRICTION 1325L
+#define ERROR_LOGON_FAILURE 1326L
+#define ERROR_ACCOUNT_RESTRICTION 1327L
+#define ERROR_INVALID_LOGON_HOURS 1328L
+#define ERROR_INVALID_WORKSTATION 1329L
+#define ERROR_PASSWORD_EXPIRED 1330L
+#define ERROR_ACCOUNT_DISABLED 1331L
+#define ERROR_NONE_MAPPED 1332L
+#define ERROR_TOO_MANY_LUIDS_REQUESTED 1333L
+#define ERROR_LUIDS_EXHAUSTED 1334L
+#define ERROR_INVALID_SUB_AUTHORITY 1335L
+#define ERROR_INVALID_ACL 1336L
+#define ERROR_INVALID_SID 1337L
+#define ERROR_INVALID_SECURITY_DESCR 1338L
+#define ERROR_BAD_INHERITANCE_ACL 1340L
+#define ERROR_SERVER_DISABLED 1341L
+#define ERROR_SERVER_NOT_DISABLED 1342L
+#define ERROR_INVALID_ID_AUTHORITY 1343L
+#define ERROR_ALLOTTED_SPACE_EXCEEDED 1344L
+#define ERROR_INVALID_GROUP_ATTRIBUTES 1345L
+#define ERROR_BAD_IMPERSONATION_LEVEL 1346L
+#define ERROR_CANT_OPEN_ANONYMOUS 1347L
+#define ERROR_BAD_VALIDATION_CLASS 1348L
+#define ERROR_BAD_TOKEN_TYPE 1349L
+#define ERROR_NO_SECURITY_ON_OBJECT 1350L
+#define ERROR_CANT_ACCESS_DOMAIN_INFO 1351L
+#define ERROR_INVALID_SERVER_STATE 1352L
+#define ERROR_INVALID_DOMAIN_STATE 1353L
+#define ERROR_INVALID_DOMAIN_ROLE 1354L
+#define ERROR_NO_SUCH_DOMAIN 1355L
+#define ERROR_DOMAIN_EXISTS 1356L
+#define ERROR_DOMAIN_LIMIT_EXCEEDED 1357L
+#define ERROR_INTERNAL_DB_CORRUPTION 1358L
+#define ERROR_INTERNAL_ERROR 1359L
+#define ERROR_GENERIC_NOT_MAPPED 1360L
+#define ERROR_BAD_DESCRIPTOR_FORMAT 1361L
+#define ERROR_NOT_LOGON_PROCESS 1362L
+#define ERROR_LOGON_SESSION_EXISTS 1363L
+#define ERROR_NO_SUCH_PACKAGE 1364L
+#define ERROR_BAD_LOGON_SESSION_STATE 1365L
+#define ERROR_LOGON_SESSION_COLLISION 1366L
+#define ERROR_INVALID_LOGON_TYPE 1367L
+#define ERROR_CANNOT_IMPERSONATE 1368L
+#define ERROR_RXACT_INVALID_STATE 1369L
+#define ERROR_RXACT_COMMIT_FAILURE 1370L
+#define ERROR_SPECIAL_ACCOUNT 1371L
+#define ERROR_SPECIAL_GROUP 1372L
+#define ERROR_SPECIAL_USER 1373L
+#define ERROR_MEMBERS_PRIMARY_GROUP 1374L
+#define ERROR_TOKEN_ALREADY_IN_USE 1375L
+#define ERROR_NO_SUCH_ALIAS 1376L
+#define ERROR_MEMBER_NOT_IN_ALIAS 1377L
+#define ERROR_MEMBER_IN_ALIAS 1378L
+#define ERROR_ALIAS_EXISTS 1379L
+#define ERROR_LOGON_NOT_GRANTED 1380L
+#define ERROR_TOO_MANY_SECRETS 1381L
+#define ERROR_SECRET_TOO_LONG 1382L
+#define ERROR_INTERNAL_DB_ERROR 1383L
+#define ERROR_TOO_MANY_CONTEXT_IDS 1384L
+#define ERROR_LOGON_TYPE_NOT_GRANTED 1385L
+#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED 1386L
+#define ERROR_NO_SUCH_MEMBER 1387L
+#define ERROR_INVALID_MEMBER 1388L
+#define ERROR_TOO_MANY_SIDS 1389L
+#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED 1390L
+#define ERROR_NO_INHERITANCE 1391L
+#define ERROR_FILE_CORRUPT 1392L
+#define ERROR_DISK_CORRUPT 1393L
+#define ERROR_NO_USER_SESSION_KEY 1394L
+#define ERROR_LICENSE_QUOTA_EXCEEDED 1395L
+#define ERROR_INVALID_WINDOW_HANDLE 1400L
+#define ERROR_INVALID_MENU_HANDLE 1401L
+#define ERROR_INVALID_CURSOR_HANDLE 1402L
+#define ERROR_INVALID_ACCEL_HANDLE 1403L
+#define ERROR_INVALID_HOOK_HANDLE 1404L
+#define ERROR_INVALID_DWP_HANDLE 1405L
+#define ERROR_TLW_WITH_WSCHILD 1406L
+#define ERROR_CANNOT_FIND_WND_CLASS 1407L
+#define ERROR_WINDOW_OF_OTHER_THREAD 1408L
+#define ERROR_HOTKEY_ALREADY_REGISTERED 1409L
+#define ERROR_CLASS_ALREADY_EXISTS 1410L
+#define ERROR_CLASS_DOES_NOT_EXIST 1411L
+#define ERROR_CLASS_HAS_WINDOWS 1412L
+#define ERROR_INVALID_INDEX 1413L
+#define ERROR_INVALID_ICON_HANDLE 1414L
+#define ERROR_PRIVATE_DIALOG_INDEX 1415L
+#define ERROR_LISTBOX_ID_NOT_FOUND 1416L
+#define ERROR_NO_WILDCARD_CHARACTERS 1417L
+#define ERROR_CLIPBOARD_NOT_OPEN 1418L
+#define ERROR_HOTKEY_NOT_REGISTERED 1419L
+#define ERROR_WINDOW_NOT_DIALOG 1420L
+#define ERROR_CONTROL_ID_NOT_FOUND 1421L
+#define ERROR_INVALID_COMBOBOX_MESSAGE 1422L
+#define ERROR_WINDOW_NOT_COMBOBOX 1423L
+#define ERROR_INVALID_EDIT_HEIGHT 1424L
+#define ERROR_DC_NOT_FOUND 1425L
+#define ERROR_INVALID_HOOK_FILTER 1426L
+#define ERROR_INVALID_FILTER_PROC 1427L
+#define ERROR_HOOK_NEEDS_HMOD 1428L
+#define ERROR_GLOBAL_ONLY_HOOK 1429L
+#define ERROR_JOURNAL_HOOK_SET 1430L
+#define ERROR_HOOK_NOT_INSTALLED 1431L
+#define ERROR_INVALID_LB_MESSAGE 1432L
+#define ERROR_SETCOUNT_ON_BAD_LB 1433L
+#define ERROR_LB_WITHOUT_TABSTOPS 1434L
+#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD 1435L
+#define ERROR_CHILD_WINDOW_MENU 1436L
+#define ERROR_NO_SYSTEM_MENU 1437L
+#define ERROR_INVALID_MSGBOX_STYLE 1438L
+#define ERROR_INVALID_SPI_VALUE 1439L
+#define ERROR_SCREEN_ALREADY_LOCKED 1440L
+#define ERROR_HWNDS_HAVE_DIFF_PARENT 1441L
+#define ERROR_NOT_CHILD_WINDOW 1442L
+#define ERROR_INVALID_GW_COMMAND 1443L
+#define ERROR_INVALID_THREAD_ID 1444L
+#define ERROR_NON_MDICHILD_WINDOW 1445L
+#define ERROR_POPUP_ALREADY_ACTIVE 1446L
+#define ERROR_NO_SCROLLBARS 1447L
+#define ERROR_INVALID_SCROLLBAR_RANGE 1448L
+#define ERROR_INVALID_SHOWWIN_COMMAND 1449L
+#define ERROR_NO_SYSTEM_RESOURCES 1450L
+#define ERROR_NONPAGED_SYSTEM_RESOURCES 1451L
+#define ERROR_PAGED_SYSTEM_RESOURCES 1452L
+#define ERROR_WORKING_SET_QUOTA 1453L
+#define ERROR_PAGEFILE_QUOTA 1454L
+#define ERROR_COMMITMENT_LIMIT 1455L
+#define ERROR_MENU_ITEM_NOT_FOUND 1456L
+#define ERROR_EVENTLOG_FILE_CORRUPT 1500L
+#define ERROR_EVENTLOG_CANT_START 1501L
+#define ERROR_LOG_FILE_FULL 1502L
+#define ERROR_EVENTLOG_FILE_CHANGED 1503L
+#define RPC_S_INVALID_STRING_BINDING 1700L
+#define RPC_S_WRONG_KIND_OF_BINDING 1701L
+#define RPC_S_INVALID_BINDING 1702L
+#define RPC_S_PROTSEQ_NOT_SUPPORTED 1703L
+#define RPC_S_INVALID_RPC_PROTSEQ 1704L
+#define RPC_S_INVALID_STRING_UUID 1705L
+#define RPC_S_INVALID_ENDPOINT_FORMAT 1706L
+#define RPC_S_INVALID_NET_ADDR 1707L
+#define RPC_S_NO_ENDPOINT_FOUND 1708L
+#define RPC_S_INVALID_TIMEOUT 1709L
+#define RPC_S_OBJECT_NOT_FOUND 1710L
+#define RPC_S_ALREADY_REGISTERED 1711L
+#define RPC_S_TYPE_ALREADY_REGISTERED 1712L
+#define RPC_S_ALREADY_LISTENING 1713L
+#define RPC_S_NO_PROTSEQS_REGISTERED 1714L
+#define RPC_S_NOT_LISTENING 1715L
+#define RPC_S_UNKNOWN_MGR_TYPE 1716L
+#define RPC_S_UNKNOWN_IF 1717L
+#define RPC_S_NO_BINDINGS 1718L
+#define RPC_S_NO_PROTSEQS 1719L
+#define RPC_S_CANT_CREATE_ENDPOINT 1720L
+#define RPC_S_OUT_OF_RESOURCES 1721L
+#define RPC_S_SERVER_UNAVAILABLE 1722L
+#define RPC_S_SERVER_TOO_BUSY 1723L
+#define RPC_S_INVALID_NETWORK_OPTIONS 1724L
+#define RPC_S_NO_CALL_ACTIVE 1725L
+#define RPC_S_CALL_FAILED 1726L
+#define RPC_S_CALL_FAILED_DNE 1727L
+#define RPC_S_PROTOCOL_ERROR 1728L
+#define RPC_S_UNSUPPORTED_TRANS_SYN 1730L
+#define RPC_S_UNSUPPORTED_TYPE 1732L
+#define RPC_S_INVALID_TAG 1733L
+#define RPC_S_INVALID_BOUND 1734L
+#define RPC_S_NO_ENTRY_NAME 1735L
+#define RPC_S_INVALID_NAME_SYNTAX 1736L
+#define RPC_S_UNSUPPORTED_NAME_SYNTAX 1737L
+#define RPC_S_UUID_NO_ADDRESS 1739L
+#define RPC_S_DUPLICATE_ENDPOINT 1740L
+#define RPC_S_UNKNOWN_AUTHN_TYPE 1741L
+#define RPC_S_MAX_CALLS_TOO_SMALL 1742L
+#define RPC_S_STRING_TOO_LONG 1743L
+#define RPC_S_PROTSEQ_NOT_FOUND 1744L
+#define RPC_S_PROCNUM_OUT_OF_RANGE 1745L
+#define RPC_S_BINDING_HAS_NO_AUTH 1746L
+#define RPC_S_UNKNOWN_AUTHN_SERVICE 1747L
+#define RPC_S_UNKNOWN_AUTHN_LEVEL 1748L
+#define RPC_S_INVALID_AUTH_IDENTITY 1749L
+#define RPC_S_UNKNOWN_AUTHZ_SERVICE 1750L
+#define EPT_S_INVALID_ENTRY 1751L
+#define EPT_S_CANT_PERFORM_OP 1752L
+#define EPT_S_NOT_REGISTERED 1753L
+#define RPC_S_NOTHING_TO_EXPORT 1754L
+#define RPC_S_INCOMPLETE_NAME 1755L
+#define RPC_S_INVALID_VERS_OPTION 1756L
+#define RPC_S_NO_MORE_MEMBERS 1757L
+#define RPC_S_NOT_ALL_OBJS_UNEXPORTED 1758L
+#define RPC_S_INTERFACE_NOT_FOUND 1759L
+#define RPC_S_ENTRY_ALREADY_EXISTS 1760L
+#define RPC_S_ENTRY_NOT_FOUND 1761L
+#define RPC_S_NAME_SERVICE_UNAVAILABLE 1762L
+#define RPC_S_INVALID_NAF_ID 1763L
+#define RPC_S_CANNOT_SUPPORT 1764L
+#define RPC_S_NO_CONTEXT_AVAILABLE 1765L
+#define RPC_S_INTERNAL_ERROR 1766L
+#define RPC_S_ZERO_DIVIDE 1767L
+#define RPC_S_ADDRESS_ERROR 1768L
+#define RPC_S_FP_DIV_ZERO 1769L
+#define RPC_S_FP_UNDERFLOW 1770L
+#define RPC_S_FP_OVERFLOW 1771L
+#define RPC_X_NO_MORE_ENTRIES 1772L
+#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL 1773L
+#define RPC_X_SS_CHAR_TRANS_SHORT_FILE 1774L
+#define RPC_X_SS_IN_NULL_CONTEXT 1775L
+#define RPC_X_SS_CONTEXT_DAMAGED 1777L
+#define RPC_X_SS_HANDLES_MISMATCH 1778L
+#define RPC_X_SS_CANNOT_GET_CALL_HANDLE 1779L
+#define RPC_X_NULL_REF_POINTER 1780L
+#define RPC_X_ENUM_VALUE_OUT_OF_RANGE 1781L
+#define RPC_X_BYTE_COUNT_TOO_SMALL 1782L
+#define RPC_X_BAD_STUB_DATA 1783L
+#define ERROR_INVALID_USER_BUFFER 1784L
+#define ERROR_UNRECOGNIZED_MEDIA 1785L
+#define ERROR_NO_TRUST_LSA_SECRET 1786L
+#define ERROR_NO_TRUST_SAM_ACCOUNT 1787L
+#define ERROR_TRUSTED_DOMAIN_FAILURE 1788L
+#define ERROR_TRUSTED_RELATIONSHIP_FAILURE 1789L
+#define ERROR_TRUST_FAILURE 1790L
+#define RPC_S_CALL_IN_PROGRESS 1791L
+#define ERROR_NETLOGON_NOT_STARTED 1792L
+#define ERROR_ACCOUNT_EXPIRED 1793L
+#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES 1794L
+#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED 1795L
+#define ERROR_UNKNOWN_PORT 1796L
+#define ERROR_UNKNOWN_PRINTER_DRIVER 1797L
+#define ERROR_UNKNOWN_PRINTPROCESSOR 1798L
+#define ERROR_INVALID_SEPARATOR_FILE 1799L
+#define ERROR_INVALID_PRIORITY 1800L
+#define ERROR_INVALID_PRINTER_NAME 1801L
+#define ERROR_PRINTER_ALREADY_EXISTS 1802L
+#define ERROR_INVALID_PRINTER_COMMAND 1803L
+#define ERROR_INVALID_DATATYPE 1804L
+#define ERROR_INVALID_ENVIRONMENT 1805L
+#define RPC_S_NO_MORE_BINDINGS 1806L
+#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT 1807L
+#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT 1808L
+#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT 1809L
+#define ERROR_DOMAIN_TRUST_INCONSISTENT 1810L
+#define ERROR_SERVER_HAS_OPEN_HANDLES 1811L
+#define ERROR_RESOURCE_DATA_NOT_FOUND 1812L
+#define ERROR_RESOURCE_TYPE_NOT_FOUND 1813L
+#define ERROR_RESOURCE_NAME_NOT_FOUND 1814L
+#define ERROR_RESOURCE_LANG_NOT_FOUND 1815L
+#define ERROR_NOT_ENOUGH_QUOTA 1816L
+#define RPC_S_NO_INTERFACES 1817L
+#define RPC_S_CALL_CANCELLED 1818L
+#define RPC_S_BINDING_INCOMPLETE 1819L
+#define RPC_S_COMM_FAILURE 1820L
+#define RPC_S_UNSUPPORTED_AUTHN_LEVEL 1821L
+#define RPC_S_NO_PRINC_NAME 1822L
+#define RPC_S_NOT_RPC_ERROR 1823L
+#define RPC_S_UUID_LOCAL_ONLY 1824L
+#define RPC_S_SEC_PKG_ERROR 1825L
+#define RPC_S_NOT_CANCELLED 1826L
+#define RPC_X_INVALID_ES_ACTION 1827L
+#define RPC_X_WRONG_ES_VERSION 1828L
+#define RPC_X_WRONG_STUB_VERSION 1829L
+#define RPC_S_GROUP_MEMBER_NOT_FOUND 1898L
+#define EPT_S_CANT_CREATE 1899L
+#define RPC_S_INVALID_OBJECT 1900L
+#define ERROR_INVALID_TIME 1901L
+#define ERROR_INVALID_FORM_NAME 1902L
+#define ERROR_INVALID_FORM_SIZE 1903L
+#define ERROR_ALREADY_WAITING 1904L
+#define ERROR_PRINTER_DELETED 1905L
+#define ERROR_INVALID_PRINTER_STATE 1906L
+#define ERROR_PASSWORD_MUST_CHANGE 1907L
+#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND 1908L
+#define ERROR_ACCOUNT_LOCKED_OUT 1909L
+#define ERROR_NO_BROWSER_SERVERS_FOUND 6118L
+#define ERROR_INVALID_PIXEL_FORMAT 2000L
+#define ERROR_BAD_DRIVER 2001L
+#define ERROR_INVALID_WINDOW_STYLE 2002L
+#define ERROR_METAFILE_NOT_SUPPORTED 2003L
+#define ERROR_TRANSFORM_NOT_SUPPORTED 2004L
+#define ERROR_CLIPPING_NOT_SUPPORTED 2005L
+#define ERROR_UNKNOWN_PRINT_MONITOR 3000L
+#define ERROR_PRINTER_DRIVER_IN_USE 3001L
+#define ERROR_SPOOL_FILE_NOT_FOUND 3002L
+#define ERROR_SPL_NO_STARTDOC 3003L
+#define ERROR_SPL_NO_ADDJOB 3004L
+#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED 3005L
+#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED 3006L
+#define ERROR_WINS_INTERNAL 4000L
+#define ERROR_CAN_NOT_DEL_LOCAL_WINS 4001L
+#define ERROR_STATIC_INIT 4002L
+#define ERROR_INC_BACKUP 4003L
+#define ERROR_FULL_BACKUP 4004L
+#define ERROR_REC_NON_EXISTENT 4005L
+#define ERROR_RPL_NOT_ALLOWED 4006L
+#define SEVERITY_SUCCESS 0
+#define SEVERITY_ERROR 1
+#define FACILITY_WINDOWS 8
+#define FACILITY_STORAGE 3
+#define FACILITY_RPC 1
+#define FACILITY_WIN32 7
+#define FACILITY_CONTROL 10
+#define FACILITY_NULL 0
+#define FACILITY_ITF 4
+#define FACILITY_DISPATCH 2
+#define SUCCEEDED(Status) ((HRESULT)(Status) >= 0)
+#define FAILED(Status) ((HRESULT)(Status)<0)
+#define IS_ERROR(Status) ((unsigned long)(Status) >> 31 == SEVERITY_ERROR)
+#define HRESULT_CODE(r) ((r)&0xFFFF)
+#define SCODE_CODE(c) ((c)&0xFFFF)
+#define HRESULT_FACILITY(r) (((r)>>16)&0x1fff)
+#define SCODE_FACILITY(c) (((c)>>16)&0x1fff)
+#define HRESULT_SEVERITY(r) (((r)>>31)&0x1)
+#define SCODE_SEVERITY(c) (((c)>>31)&0x1)
+#define MAKE_HRESULT(s,f,c) ((HRESULT)(((unsigned long)(s)<<31)|((unsigned long)(f)<<16)|((unsigned long)(c))))
+#define MAKE_SCODE(s,f,c) ((SCODE)(((unsigned long)(s)<<31)|((unsigned long)(f)<<16)|((unsigned long)(c))) )
+#define FACILITY_NT_BIT 0x10000000
+#define HRESULT_FROM_WIN32(x) (x?((HRESULT)(((x)&0x0000FFFF)|(FACILITY_WIN32<<16)|0x80000000)):0)
+#define HRESULT_FROM_NT(x) ((HRESULT)((x)|FACILITY_NT_BIT))
+#define GetScode(hr) ((SCODE) (hr))
+#define ResultFromScode(sc) ((HRESULT) (sc))
+#define PropagateResult(hrPrevious, scBase) ((HRESULT) scBase)
+
+#define NOERROR S_OK
+#define E_UNEXPECTED 0x8000FFFFL
+#define E_NOTIMPL 0x80004001L
+#define E_OUTOFMEMORY 0x8007000EL
+#define E_INVALIDARG 0x80070057L
+#define E_NOINTERFACE 0x80004002L
+#define E_POINTER 0x80004003L
+#define E_HANDLE 0x80070006L
+#define E_ABORT 0x80004004L
+#define E_FAIL 0x80004005L
+#define E_ACCESSDENIED 0x80070005L
+#define E_PENDING 0x8000000AL
+#define CO_E_INIT_TLS 0x80004006L
+#define CO_E_INIT_SHARED_ALLOCATOR 0x80004007L
+#define CO_E_INIT_MEMORY_ALLOCATOR 0x80004008L
+#define CO_E_INIT_CLASS_CACHE 0x80004009L
+#define CO_E_INIT_RPC_CHANNEL 0x8000400AL
+#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL 0x8000400BL
+#define CO_E_INIT_TLS_CHANNEL_CONTROL 0x8000400CL
+#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR 0x8000400DL
+#define CO_E_INIT_SCM_MUTEX_EXISTS 0x8000400EL
+#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS 0x8000400FL
+#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE 0x80004010L
+#define CO_E_INIT_SCM_EXEC_FAILURE 0x80004011L
+#define CO_E_INIT_ONLY_SINGLE_THREADED 0x80004012L
+#define S_OK (0x00000000L)
+#define S_FALSE (0x00000001L)
+#define OLE_E_FIRST 0x80040000L
+#define OLE_E_LAST 0x800400FFL
+#define OLE_S_FIRST 0x00040000L
+#define OLE_S_LAST 0x000400FFL
+#define OLE_E_OLEVERB 0x80040000L
+#define OLE_E_ADVF 0x80040001L
+#define OLE_E_ENUM_NOMORE 0x80040002L
+#define OLE_E_ADVISENOTSUPPORTED 0x80040003L
+#define OLE_E_NOCONNECTION 0x80040004L
+#define OLE_E_NOTRUNNING 0x80040005L
+#define OLE_E_NOCACHE 0x80040006L
+#define OLE_E_BLANK 0x80040007L
+#define OLE_E_CLASSDIFF 0x80040008L
+#define OLE_E_CANT_GETMONIKER 0x80040009L
+#define OLE_E_CANT_BINDTOSOURCE 0x8004000AL
+#define OLE_E_STATIC 0x8004000BL
+#define OLE_E_PROMPTSAVECANCELLED 0x8004000CL
+#define OLE_E_INVALIDRECT 0x8004000DL
+#define OLE_E_WRONGCOMPOBJ 0x8004000EL
+#define OLE_E_INVALIDHWND 0x8004000FL
+#define OLE_E_NOT_INPLACEACTIVE 0x80040010L
+#define OLE_E_CANTCONVERT 0x80040011L
+#define OLE_E_NOSTORAGE 0x80040012L
+#define DV_E_FORMATETC 0x80040064L
+#define DV_E_DVTARGETDEVICE 0x80040065L
+#define DV_E_STGMEDIUM 0x80040066L
+#define DV_E_STATDATA 0x80040067L
+#define DV_E_LINDEX 0x80040068L
+#define DV_E_TYMED 0x80040069L
+#define DV_E_CLIPFORMAT 0x8004006AL
+#define DV_E_DVASPECT 0x8004006BL
+#define DV_E_DVTARGETDEVICE_SIZE 0x8004006CL
+#define DV_E_NOIVIEWOBJECT 0x8004006DL
+#define DRAGDROP_E_FIRST 0x80040100L
+#define DRAGDROP_E_LAST 0x8004010FL
+#define DRAGDROP_S_FIRST 0x00040100L
+#define DRAGDROP_S_LAST 0x0004010FL
+#define DRAGDROP_E_NOTREGISTERED 0x80040100L
+#define DRAGDROP_E_ALREADYREGISTERED 0x80040101L
+#define DRAGDROP_E_INVALIDHWND 0x80040102L
+#define CLASSFACTORY_E_FIRST 0x80040110L
+#define CLASSFACTORY_E_LAST 0x8004011FL
+#define CLASSFACTORY_S_FIRST 0x00040110L
+#define CLASSFACTORY_S_LAST 0x0004011FL
+#define CLASS_E_NOAGGREGATION 0x80040110L
+#define CLASS_E_CLASSNOTAVAILABLE 0x80040111L
+#define MARSHAL_E_FIRST 0x80040120L
+#define MARSHAL_E_LAST 0x8004012FL
+#define MARSHAL_S_FIRST 0x00040120L
+#define MARSHAL_S_LAST 0x0004012FL
+#define DATA_E_FIRST 0x80040130L
+#define DATA_E_LAST 0x8004013FL
+#define DATA_S_FIRST 0x00040130L
+#define DATA_S_LAST 0x0004013FL
+#define VIEW_E_FIRST 0x80040140L
+#define VIEW_E_LAST 0x8004014FL
+#define VIEW_S_FIRST 0x00040140L
+#define VIEW_S_LAST 0x0004014FL
+#define VIEW_E_DRAW 0x80040140L
+#define REGDB_E_FIRST 0x80040150L
+#define REGDB_E_LAST 0x8004015FL
+#define REGDB_S_FIRST 0x00040150L
+#define REGDB_S_LAST 0x0004015FL
+#define REGDB_E_READREGDB 0x80040150L
+#define REGDB_E_WRITEREGDB 0x80040151L
+#define REGDB_E_KEYMISSING 0x80040152L
+#define REGDB_E_INVALIDVALUE 0x80040153L
+#define REGDB_E_CLASSNOTREG 0x80040154L
+#define REGDB_E_IIDNOTREG 0x80040155L
+#define CACHE_E_FIRST 0x80040170L
+#define CACHE_E_LAST 0x8004017FL
+#define CACHE_S_FIRST 0x00040170L
+#define CACHE_S_LAST 0x0004017FL
+#define CACHE_E_NOCACHE_UPDATED 0x80040170L
+#define OLEOBJ_E_FIRST 0x80040180L
+#define OLEOBJ_E_LAST 0x8004018FL
+#define OLEOBJ_S_FIRST 0x00040180L
+#define OLEOBJ_S_LAST 0x0004018FL
+#define OLEOBJ_E_NOVERBS 0x80040180L
+#define OLEOBJ_E_INVALIDVERB 0x80040181L
+#define CLIENTSITE_E_FIRST 0x80040190L
+#define CLIENTSITE_E_LAST 0x8004019FL
+#define CLIENTSITE_S_FIRST 0x00040190L
+#define CLIENTSITE_S_LAST 0x0004019FL
+#define INPLACE_E_NOTUNDOABLE 0x800401A0L
+#define INPLACE_E_NOTOOLSPACE 0x800401A1L
+#define INPLACE_E_FIRST 0x800401A0L
+#define INPLACE_E_LAST 0x800401AFL
+#define INPLACE_S_FIRST 0x000401A0L
+#define INPLACE_S_LAST 0x000401AFL
+#define ENUM_E_FIRST 0x800401B0L
+#define ENUM_E_LAST 0x800401BFL
+#define ENUM_S_FIRST 0x000401B0L
+#define ENUM_S_LAST 0x000401BFL
+#define CONVERT10_E_FIRST 0x800401C0L
+#define CONVERT10_E_LAST 0x800401CFL
+#define CONVERT10_S_FIRST 0x000401C0L
+#define CONVERT10_S_LAST 0x000401CFL
+#define CONVERT10_E_OLESTREAM_GET 0x800401C0L
+#define CONVERT10_E_OLESTREAM_PUT 0x800401C1L
+#define CONVERT10_E_OLESTREAM_FMT 0x800401C2L
+#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB 0x800401C3L
+#define CONVERT10_E_STG_FMT 0x800401C4L
+#define CONVERT10_E_STG_NO_STD_STREAM 0x800401C5L
+#define CONVERT10_E_STG_DIB_TO_BITMAP 0x800401C6L
+#define CLIPBRD_E_FIRST 0x800401D0L
+#define CLIPBRD_E_LAST 0x800401DFL
+#define CLIPBRD_S_FIRST 0x000401D0L
+#define CLIPBRD_S_LAST 0x000401DFL
+#define CLIPBRD_E_CANT_OPEN 0x800401D0L
+#define CLIPBRD_E_CANT_EMPTY 0x800401D1L
+#define CLIPBRD_E_CANT_SET 0x800401D2L
+#define CLIPBRD_E_BAD_DATA 0x800401D3L
+#define CLIPBRD_E_CANT_CLOSE 0x800401D4L
+#define MK_E_FIRST 0x800401E0L
+#define MK_E_LAST 0x800401EFL
+#define MK_S_FIRST 0x000401E0L
+#define MK_S_LAST 0x000401EFL
+#define MK_E_CONNECTMANUALLY 0x800401E0L
+#define MK_E_EXCEEDEDDEADLINE 0x800401E1L
+#define MK_E_NEEDGENERIC 0x800401E2L
+#define MK_E_UNAVAILABLE 0x800401E3L
+#define MK_E_SYNTAX 0x800401E4L
+#define MK_E_NOOBJECT 0x800401E5L
+#define MK_E_INVALIDEXTENSION 0x800401E6L
+#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED 0x800401E7L
+#define MK_E_NOTBINDABLE 0x800401E8L
+#define MK_E_NOTBOUND 0x800401E9L
+#define MK_E_CANTOPENFILE 0x800401EAL
+#define MK_E_MUSTBOTHERUSER 0x800401EBL
+#define MK_E_NOINVERSE 0x800401ECL
+#define MK_E_NOSTORAGE 0x800401EDL
+#define MK_E_NOPREFIX 0x800401EEL
+#define MK_E_ENUMERATION_FAILED 0x800401EFL
+#define CO_E_FIRST 0x800401F0L
+#define CO_E_LAST 0x800401FFL
+#define CO_S_FIRST 0x000401F0L
+#define CO_S_LAST 0x000401FFL
+#define CO_E_NOTINITIALIZED 0x800401F0L
+#define CO_E_ALREADYINITIALIZED 0x800401F1L
+#define CO_E_CANTDETERMINECLASS 0x800401F2L
+#define CO_E_CLASSSTRING 0x800401F3L
+#define CO_E_IIDSTRING 0x800401F4L
+#define CO_E_APPNOTFOUND 0x800401F5L
+#define CO_E_APPSINGLEUSE 0x800401F6L
+#define CO_E_ERRORINAPP 0x800401F7L
+#define CO_E_DLLNOTFOUND 0x800401F8L
+#define CO_E_ERRORINDLL 0x800401F9L
+#define CO_E_WRONGOSFORAPP 0x800401FAL
+#define CO_E_OBJNOTREG 0x800401FBL
+#define CO_E_OBJISREG 0x800401FCL
+#define CO_E_OBJNOTCONNECTED 0x800401FDL
+#define CO_E_APPDIDNTREG 0x800401FEL
+#define CO_E_RELEASED 0x800401FFL
+#define OLE_S_USEREG 0x00040000L
+#define OLE_S_STATIC 0x00040001L
+#define OLE_S_MAC_CLIPFORMAT 0x00040002L
+#define DRAGDROP_S_DROP 0x00040100L
+#define DRAGDROP_S_CANCEL 0x00040101L
+#define DRAGDROP_S_USEDEFAULTCURSORS 0x00040102L
+#define DATA_S_SAMEFORMATETC 0x00040130L
+#define VIEW_S_ALREADY_FROZEN 0x00040140L
+#define CACHE_S_FORMATETC_NOTSUPPORTED 0x00040170L
+#define CACHE_S_SAMECACHE 0x00040171L
+#define CACHE_S_SOMECACHES_NOTUPDATED 0x00040172L
+#define OLEOBJ_S_INVALIDVERB 0x00040180L
+#define OLEOBJ_S_CANNOT_DOVERB_NOW 0x00040181L
+#define OLEOBJ_S_INVALIDHWND 0x00040182L
+#define INPLACE_S_TRUNCATED 0x000401A0L
+#define CONVERT10_S_NO_PRESENTATION 0x000401C0L
+#define MK_S_REDUCED_TO_SELF 0x000401E2L
+#define MK_S_ME 0x000401E4L
+#define MK_S_HIM 0x000401E5L
+#define MK_S_US 0x000401E6L
+#define MK_S_MONIKERALREADYREGISTERED 0x000401E7L
+#define CO_E_CLASS_CREATE_FAILED 0x80080001L
+#define CO_E_SCM_ERROR 0x80080002L
+#define CO_E_SCM_RPC_FAILURE 0x80080003L
+#define CO_E_BAD_PATH 0x80080004L
+#define CO_E_SERVER_EXEC_FAILURE 0x80080005L
+#define CO_E_OBJSRV_RPC_FAILURE 0x80080006L
+#define MK_E_NO_NORMALIZED 0x80080007L
+#define CO_E_SERVER_STOPPING 0x80080008L
+#define MEM_E_INVALID_ROOT 0x80080009L
+#define MEM_E_INVALID_LINK 0x80080010L
+#define MEM_E_INVALID_SIZE 0x80080011L
+#define DISP_E_UNKNOWNINTERFACE 0x80020001L
+#define DISP_E_MEMBERNOTFOUND 0x80020003L
+#define DISP_E_PARAMNOTFOUND 0x80020004L
+#define DISP_E_TYPEMISMATCH 0x80020005L
+#define DISP_E_UNKNOWNNAME 0x80020006L
+#define DISP_E_NONAMEDARGS 0x80020007L
+#define DISP_E_BADVARTYPE 0x80020008L
+#define DISP_E_EXCEPTION 0x80020009L
+#define DISP_E_OVERFLOW 0x8002000AL
+#define DISP_E_BADINDEX 0x8002000BL
+#define DISP_E_UNKNOWNLCID 0x8002000CL
+#define DISP_E_ARRAYISLOCKED 0x8002000DL
+#define DISP_E_BADPARAMCOUNT 0x8002000EL
+#define DISP_E_PARAMNOTOPTIONAL 0x8002000FL
+#define DISP_E_BADCALLEE 0x80020010L
+#define DISP_E_NOTACOLLECTION 0x80020011L
+#define TYPE_E_BUFFERTOOSMALL 0x80028016L
+#define TYPE_E_INVDATAREAD 0x80028018L
+#define TYPE_E_UNSUPFORMAT 0x80028019L
+#define TYPE_E_REGISTRYACCESS 0x8002801CL
+#define TYPE_E_LIBNOTREGISTERED 0x8002801DL
+#define TYPE_E_UNDEFINEDTYPE 0x80028027L
+#define TYPE_E_QUALIFIEDNAMEDISALLOWED 0x80028028L
+#define TYPE_E_INVALIDSTATE 0x80028029L
+#define TYPE_E_WRONGTYPEKIND 0x8002802AL
+#define TYPE_E_ELEMENTNOTFOUND 0x8002802BL
+#define TYPE_E_AMBIGUOUSNAME 0x8002802CL
+#define TYPE_E_NAMECONFLICT 0x8002802DL
+#define TYPE_E_UNKNOWNLCID 0x8002802EL
+#define TYPE_E_DLLFUNCTIONNOTFOUND 0x8002802FL
+#define TYPE_E_BADMODULEKIND 0x800288BDL
+#define TYPE_E_SIZETOOBIG 0x800288C5L
+#define TYPE_E_DUPLICATEID 0x800288C6L
+#define TYPE_E_INVALIDID 0x800288CFL
+#define TYPE_E_TYPEMISMATCH 0x80028CA0L
+#define TYPE_E_OUTOFBOUNDS 0x80028CA1L
+#define TYPE_E_IOERROR 0x80028CA2L
+#define TYPE_E_CANTCREATETMPFILE 0x80028CA3L
+#define TYPE_E_CANTLOADLIBRARY 0x80029C4AL
+#define TYPE_E_INCONSISTENTPROPFUNCS 0x80029C83L
+#define TYPE_E_CIRCULARTYPE 0x80029C84L
+#define STG_E_INVALIDFUNCTION 0x80030001L
+#define STG_E_FILENOTFOUND 0x80030002L
+#define STG_E_PATHNOTFOUND 0x80030003L
+#define STG_E_TOOMANYOPENFILES 0x80030004L
+#define STG_E_ACCESSDENIED 0x80030005L
+#define STG_E_INVALIDHANDLE 0x80030006L
+#define STG_E_INSUFFICIENTMEMORY 0x80030008L
+#define STG_E_INVALIDPOINTER 0x80030009L
+#define STG_E_NOMOREFILES 0x80030012L
+#define STG_E_DISKISWRITEPROTECTED 0x80030013L
+#define STG_E_SEEKERROR 0x80030019L
+#define STG_E_WRITEFAULT 0x8003001DL
+#define STG_E_READFAULT 0x8003001EL
+#define STG_E_SHAREVIOLATION 0x80030020L
+#define STG_E_LOCKVIOLATION 0x80030021L
+#define STG_E_FILEALREADYEXISTS 0x80030050L
+#define STG_E_INVALIDPARAMETER 0x80030057L
+#define STG_E_MEDIUMFULL 0x80030070L
+#define STG_E_ABNORMALAPIEXIT 0x800300FAL
+#define STG_E_INVALIDHEADER 0x800300FBL
+#define STG_E_INVALIDNAME 0x800300FCL
+#define STG_E_UNKNOWN 0x800300FDL
+#define STG_E_UNIMPLEMENTEDFUNCTION 0x800300FEL
+#define STG_E_INVALIDFLAG 0x800300FFL
+#define STG_E_INUSE 0x80030100L
+#define STG_E_NOTCURRENT 0x80030101L
+#define STG_E_REVERTED 0x80030102L
+#define STG_E_CANTSAVE 0x80030103L
+#define STG_E_OLDFORMAT 0x80030104L
+#define STG_E_OLDDLL 0x80030105L
+#define STG_E_SHAREREQUIRED 0x80030106L
+#define STG_E_NOTFILEBASEDSTORAGE 0x80030107L
+#define STG_E_EXTANTMARSHALLINGS 0x80030108L
+#define STG_S_CONVERTED 0x00030200L
+#define RPC_E_CALL_REJECTED 0x80010001L
+#define RPC_E_CALL_CANCELED 0x80010002L
+#define RPC_E_CANTPOST_INSENDCALL 0x80010003L
+#define RPC_E_CANTCALLOUT_INASYNCCALL 0x80010004L
+#define RPC_E_CANTCALLOUT_INEXTERNALCALL 0x80010005L
+#define RPC_E_CONNECTION_TERMINATED 0x80010006L
+#define RPC_E_SERVER_DIED 0x80010007L
+#define RPC_E_CLIENT_DIED 0x80010008L
+#define RPC_E_INVALID_DATAPACKET 0x80010009L
+#define RPC_E_CANTTRANSMIT_CALL 0x8001000AL
+#define RPC_E_CLIENT_CANTMARSHAL_DATA 0x8001000BL
+#define RPC_E_CLIENT_CANTUNMARSHAL_DATA 0x8001000CL
+#define RPC_E_SERVER_CANTMARSHAL_DATA 0x8001000DL
+#define RPC_E_SERVER_CANTUNMARSHAL_DATA 0x8001000EL
+#define RPC_E_INVALID_DATA 0x8001000FL
+#define RPC_E_INVALID_PARAMETER 0x80010010L
+#define RPC_E_CANTCALLOUT_AGAIN 0x80010011L
+#define RPC_E_SERVER_DIED_DNE 0x80010012L
+#define RPC_E_SYS_CALL_FAILED 0x80010100L
+#define RPC_E_OUT_OF_RESOURCES 0x80010101L
+#define RPC_E_ATTEMPTED_MULTITHREAD 0x80010102L
+#define RPC_E_NOT_REGISTERED 0x80010103L
+#define RPC_E_FAULT 0x80010104L
+#define RPC_E_SERVERFAULT 0x80010105L
+#define RPC_E_CHANGED_MODE 0x80010106L
+#define RPC_E_INVALIDMETHOD 0x80010107L
+#define RPC_E_DISCONNECTED 0x80010108L
+#define RPC_E_RETRY 0x80010109L
+#define RPC_E_SERVERCALL_RETRYLATER 0x8001010AL
+#define RPC_E_SERVERCALL_REJECTED 0x8001010BL
+#define RPC_E_INVALID_CALLDATA 0x8001010CL
+#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL 0x8001010DL
+#define RPC_E_WRONG_THREAD 0x8001010EL
+#define RPC_E_THREAD_NOT_INIT 0x8001010FL
+#define RPC_E_UNEXPECTED 0x8001FFFFL
+
+#define NTE_BAD_UID 0x80090001L
+#define NTE_BAD_HASH 0x80090002L
+#define NTE_BAD_KEY 0x80090003L
+#define NTE_BAD_LEN 0x80090004L
+#define NTE_BAD_DATA 0x80090005L
+#define NTE_BAD_SIGNATURE 0x80090006L
+#define NTE_BAD_VER 0x80090007L
+#define NTE_BAD_ALGID 0x80090008L
+#define NTE_BAD_FLAGS 0x80090009L
+#define NTE_BAD_TYPE 0x8009000AL
+#define NTE_BAD_KEY_STATE 0x8009000BL
+#define NTE_BAD_HASH_STATE 0x8009000CL
+#define NTE_NO_KEY 0x8009000DL
+#define NTE_NO_MEMORY 0x8009000EL
+#define NTE_EXISTS 0x8009000FL
+#define NTE_PERM 0x80090010L
+#define NTE_NOT_FOUND 0x80090011L
+#define NTE_DOUBLE_ENCRYPT 0x80090012L
+#define NTE_BAD_PROVIDER 0x80090013L
+#define NTE_BAD_PROV_TYPE 0x80090014L
+#define NTE_BAD_PUBLIC_KEY 0x80090015L
+#define NTE_BAD_KEYSET 0x80090016L
+#define NTE_PROV_TYPE_NOT_DEF 0x80090017L
+#define NTE_PROV_TYPE_ENTRY_BAD 0x80090018L
+#define NTE_KEYSET_NOT_DEF 0x80090019L
+#define NTE_KEYSET_ENTRY_BAD 0x8009001AL
+#define NTE_PROV_TYPE_NO_MATCH 0x8009001BL
+#define NTE_SIGNATURE_FILE_BAD 0x8009001CL
+#define NTE_PROVIDER_DLL_FAIL 0x8009001DL
+#define NTE_PROV_DLL_NOT_FOUND 0x8009001EL
+#define NTE_BAD_KEYSET_PARAM 0x8009001FL
+#define NTE_FAIL 0x80090020L
+#define NTE_SYS_ERR 0x80090021L
+/* #define NTE_TOKEN_KEYSET_STORAGE ??? */
+
+#endif
diff --git a/win32/include/winapi/wingdi.h b/win32/include/winapi/wingdi.h
new file mode 100644
index 0000000..20e3bbd
--- /dev/null
+++ b/win32/include/winapi/wingdi.h
@@ -0,0 +1,2843 @@
+#ifndef _WINGDI_H
+#define _WINGDI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WINGDIAPI
+#define BI_RGB 0
+#define BI_RLE8 1
+#define BI_RLE4 2
+#define BI_BITFIELDS 3
+#define BI_JPEG 4
+#define BI_PNG 5
+#define LF_FACESIZE 32
+#define LF_FULLFACESIZE 64
+#define CA_NEGATIVE 1
+#define CA_LOG_FILTER 2
+#define ILLUMINANT_DEVICE_DEFAULT 0
+#define ILLUMINANT_A 1
+#define ILLUMINANT_B 2
+#define ILLUMINANT_C 3
+#define ILLUMINANT_D50 4
+#define ILLUMINANT_D55 5
+#define ILLUMINANT_D65 6
+#define ILLUMINANT_D75 7
+#define ILLUMINANT_F2 8
+#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2
+#define ILLUMINANT_TUNGSTEN ILLUMINANT_A
+#define ILLUMINANT_DAYLIGHT ILLUMINANT_C
+#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2
+#define ILLUMINANT_NTSC ILLUMINANT_C
+#define RGB_GAMMA_MIN 2500
+#define RGB_GAMMA_MAX 65000
+#define REFERENCE_WHITE_MIN 6000
+#define REFERENCE_WHITE_MAX 10000
+#define REFERENCE_BLACK_MIN 0
+#define REFERENCE_BLACK_MAX 4000
+#define COLOR_ADJ_MIN (-100)
+#define COLOR_ADJ_MAX 100
+#define CCHDEVICENAME 32
+#define CCHFORMNAME 32
+#define DI_COMPAT 4
+#define DI_DEFAULTSIZE 8
+#define DI_IMAGE 2
+#define DI_MASK 1
+#define DI_NORMAL 3
+#define DI_APPBANDING 1
+#define EMR_HEADER 1
+#define EMR_POLYBEZIER 2
+#define EMR_POLYGON 3
+#define EMR_POLYLINE 4
+#define EMR_POLYBEZIERTO 5
+#define EMR_POLYLINETO 6
+#define EMR_POLYPOLYLINE 7
+#define EMR_POLYPOLYGON 8
+#define EMR_SETWINDOWEXTEX 9
+#define EMR_SETWINDOWORGEX 10
+#define EMR_SETVIEWPORTEXTEX 11
+#define EMR_SETVIEWPORTORGEX 12
+#define EMR_SETBRUSHORGEX 13
+#define EMR_EOF 14
+#define EMR_SETPIXELV 15
+#define EMR_SETMAPPERFLAGS 16
+#define EMR_SETMAPMODE 17
+#define EMR_SETBKMODE 18
+#define EMR_SETPOLYFILLMODE 19
+#define EMR_SETROP2 20
+#define EMR_SETSTRETCHBLTMODE 21
+#define EMR_SETTEXTALIGN 22
+#define EMR_SETCOLORADJUSTMENT 23
+#define EMR_SETTEXTCOLOR 24
+#define EMR_SETBKCOLOR 25
+#define EMR_OFFSETCLIPRGN 26
+#define EMR_MOVETOEX 27
+#define EMR_SETMETARGN 28
+#define EMR_EXCLUDECLIPRECT 29
+#define EMR_INTERSECTCLIPRECT 30
+#define EMR_SCALEVIEWPORTEXTEX 31
+#define EMR_SCALEWINDOWEXTEX 32
+#define EMR_SAVEDC 33
+#define EMR_RESTOREDC 34
+#define EMR_SETWORLDTRANSFORM 35
+#define EMR_MODIFYWORLDTRANSFORM 36
+#define EMR_SELECTOBJECT 37
+#define EMR_CREATEPEN 38
+#define EMR_CREATEBRUSHINDIRECT 39
+#define EMR_DELETEOBJECT 40
+#define EMR_ANGLEARC 41
+#define EMR_ELLIPSE 42
+#define EMR_RECTANGLE 43
+#define EMR_ROUNDRECT 44
+#define EMR_ARC 45
+#define EMR_CHORD 46
+#define EMR_PIE 47
+#define EMR_SELECTPALETTE 48
+#define EMR_CREATEPALETTE 49
+#define EMR_SETPALETTEENTRIES 50
+#define EMR_RESIZEPALETTE 51
+#define EMR_REALIZEPALETTE 52
+#define EMR_EXTFLOODFILL 53
+#define EMR_LINETO 54
+#define EMR_ARCTO 55
+#define EMR_POLYDRAW 56
+#define EMR_SETARCDIRECTION 57
+#define EMR_SETMITERLIMIT 58
+#define EMR_BEGINPATH 59
+#define EMR_ENDPATH 60
+#define EMR_CLOSEFIGURE 61
+#define EMR_FILLPATH 62
+#define EMR_STROKEANDFILLPATH 63
+#define EMR_STROKEPATH 64
+#define EMR_FLATTENPATH 65
+#define EMR_WIDENPATH 66
+#define EMR_SELECTCLIPPATH 67
+#define EMR_ABORTPATH 68
+#define EMR_GDICOMMENT 70
+#define EMR_FILLRGN 71
+#define EMR_FRAMERGN 72
+#define EMR_INVERTRGN 73
+#define EMR_PAINTRGN 74
+#define EMR_EXTSELECTCLIPRGN 75
+#define EMR_BITBLT 76
+#define EMR_STRETCHBLT 77
+#define EMR_MASKBLT 78
+#define EMR_PLGBLT 79
+#define EMR_SETDIBITSTODEVICE 80
+#define EMR_STRETCHDIBITS 81
+#define EMR_EXTCREATEFONTINDIRECTW 82
+#define EMR_EXTTEXTOUTA 83
+#define EMR_EXTTEXTOUTW 84
+#define EMR_POLYBEZIER16 85
+#define EMR_POLYGON16 86
+#define EMR_POLYLINE16 87
+#define EMR_POLYBEZIERTO16 88
+#define EMR_POLYLINETO16 89
+#define EMR_POLYPOLYLINE16 90
+#define EMR_POLYPOLYGON16 91
+#define EMR_POLYDRAW16 92
+#define EMR_CREATEMONOBRUSH 93
+#define EMR_CREATEDIBPATTERNBRUSHPT 94
+#define EMR_EXTCREATEPEN 95
+#define EMR_POLYTEXTOUTA 96
+#define EMR_POLYTEXTOUTW 97
+#define EMR_SETICMMODE 98
+#define EMR_CREATECOLORSPACE 99
+#define EMR_SETCOLORSPACE 100
+#define EMR_DELETECOLORSPACE 101
+#define EMR_GLSRECORD 102
+#define EMR_GLSBOUNDEDRECORD 103
+#define EMR_PIXELFORMAT 104
+#define ENHMETA_SIGNATURE 1179469088
+#define EPS_SIGNATURE 0x46535045
+#define META_SETBKCOLOR 0x201
+#define META_SETBKMODE 0x102
+#define META_SETMAPMODE 0x103
+#define META_SETROP2 0x104
+#define META_SETRELABS 0x105
+#define META_SETPOLYFILLMODE 0x106
+#define META_SETSTRETCHBLTMODE 0x107
+#define META_SETTEXTCHAREXTRA 0x108
+#define META_SETTEXTCOLOR 0x209
+#define META_SETTEXTJUSTIFICATION 0x20A
+#define META_SETWINDOWORG 0x20B
+#define META_SETWINDOWEXT 0x20C
+#define META_SETVIEWPORTORG 0x20D
+#define META_SETVIEWPORTEXT 0x20E
+#define META_OFFSETWINDOWORG 0x20F
+#define META_SCALEWINDOWEXT 0x410
+#define META_OFFSETVIEWPORTORG 0x211
+#define META_SCALEVIEWPORTEXT 0x412
+#define META_LINETO 0x213
+#define META_MOVETO 0x214
+#define META_EXCLUDECLIPRECT 0x415
+#define META_INTERSECTCLIPRECT 0x416
+#define META_ARC 0x817
+#define META_ELLIPSE 0x418
+#define META_FLOODFILL 0x419
+#define META_PIE 0x81A
+#define META_RECTANGLE 0x41B
+#define META_ROUNDRECT 0x61C
+#define META_PATBLT 0x61D
+#define META_SAVEDC 0x1E
+#define META_SETPIXEL 0x41F
+#define META_OFFSETCLIPRGN 0x220
+#define META_TEXTOUT 0x521
+#define META_BITBLT 0x922
+#define META_STRETCHBLT 0xB23
+#define META_POLYGON 0x324
+#define META_POLYLINE 0x325
+#define META_ESCAPE 0x626
+#define META_RESTOREDC 0x127
+#define META_FILLREGION 0x228
+#define META_FRAMEREGION 0x429
+#define META_INVERTREGION 0x12A
+#define META_PAINTREGION 0x12B
+#define META_SELECTCLIPREGION 0x12C
+#define META_SELECTOBJECT 0x12D
+#define META_SETTEXTALIGN 0x12E
+#define META_CHORD 0x830
+#define META_SETMAPPERFLAGS 0x231
+#define META_EXTTEXTOUT 0xa32
+#define META_SETDIBTODEV 0xd33
+#define META_SELECTPALETTE 0x234
+#define META_REALIZEPALETTE 0x35
+#define META_ANIMATEPALETTE 0x436
+#define META_SETPALENTRIES 0x37
+#define META_POLYPOLYGON 0x538
+#define META_RESIZEPALETTE 0x139
+#define META_DIBBITBLT 0x940
+#define META_DIBSTRETCHBLT 0xb41
+#define META_DIBCREATEPATTERNBRUSH 0x142
+#define META_STRETCHDIB 0xf43
+#define META_EXTFLOODFILL 0x548
+#define META_DELETEOBJECT 0x1f0
+#define META_CREATEPALETTE 0xf7
+#define META_CREATEPATTERNBRUSH 0x1F9
+#define META_CREATEPENINDIRECT 0x2FA
+#define META_CREATEFONTINDIRECT 0x2FB
+#define META_CREATEBRUSHINDIRECT 0x2FC
+#define META_CREATEREGION 0x6FF
+#define PT_MOVETO 6
+#define PT_LINETO 2
+#define PT_BEZIERTO 4
+#define PT_CLOSEFIGURE 1
+#define ELF_VENDOR_SIZE 4
+#define ELF_VERSION 0
+#define ELF_CULTURE_LATIN 0
+#define PFD_TYPE_RGBA 0
+#define PFD_TYPE_COLORINDEX 1
+#define PFD_MAIN_PLANE 0
+#define PFD_OVERLAY_PLANE 1
+#define PFD_UNDERLAY_PLANE (-1)
+#define PFD_DOUBLEBUFFER 1
+#define PFD_STEREO 2
+#define PFD_DRAW_TO_WINDOW 4
+#define PFD_DRAW_TO_BITMAP 8
+#define PFD_SUPPORT_GDI 16
+#define PFD_SUPPORT_OPENGL 32
+#define PFD_GENERIC_FORMAT 64
+#define PFD_NEED_PALETTE 128
+#define PFD_NEED_SYSTEM_PALETTE 0x00000100
+#define PFD_SWAP_EXCHANGE 0x00000200
+#define PFD_SWAP_COPY 0x00000400
+#define PFD_GENERIC_ACCELERATED 0x00001000
+#define PFD_DEPTH_DONTCARE 0x20000000
+#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000
+#define PFD_STEREO_DONTCARE 0x80000000
+#define SP_ERROR (-1)
+#define SP_OUTOFDISK (-4)
+#define SP_OUTOFMEMORY (-5)
+#define SP_USERABORT (-3)
+#define SP_APPABORT (-2)
+#define BLACKNESS 0x42
+#define NOTSRCERASE 0x1100A6
+#define NOTSRCCOPY 0x330008
+#define SRCERASE 0x440328
+#define DSTINVERT 0x550009
+#define PATINVERT 0x5A0049
+#define SRCINVERT 0x660046
+#define SRCAND 0x8800C6
+#define MERGEPAINT 0xBB0226
+#define MERGECOPY 0xC000CA
+#define SRCCOPY 0xCC0020
+#define SRCPAINT 0xEE0086
+#define PATCOPY 0xF00021
+#define PATPAINT 0xFB0A09
+#define WHITENESS 0xFF0062
+#define R2_BLACK 1
+#define R2_COPYPEN 13
+#define R2_MASKNOTPEN 3
+#define R2_MASKPEN 9
+#define R2_MASKPENNOT 5
+#define R2_MERGENOTPEN 12
+#define R2_MERGEPEN 15
+#define R2_MERGEPENNOT 14
+#define R2_NOP 11
+#define R2_NOT 6
+#define R2_NOTCOPYPEN 4
+#define R2_NOTMASKPEN 8
+#define R2_NOTMERGEPEN 2
+#define R2_NOTXORPEN 10
+#define R2_WHITE 16
+#define R2_XORPEN 7
+#define CM_OUT_OF_GAMUT 255
+#define CM_IN_GAMUT 0
+#define RGN_AND 1
+#define RGN_COPY 5
+#define RGN_DIFF 4
+#define RGN_OR 2
+#define RGN_XOR 3
+#define NULLREGION 1
+#define SIMPLEREGION 2
+#define COMPLEXREGION 3
+#define ERROR 0
+#define CBM_INIT 4
+#define DIB_PAL_COLORS 1
+#define DIB_RGB_COLORS 0
+#define FW_DONTCARE 0
+#define FW_THIN 100
+#define FW_EXTRALIGHT 200
+#define FW_ULTRALIGHT FW_EXTRALIGHT
+#define FW_LIGHT 300
+#define FW_NORMAL 400
+#define FW_REGULAR 400
+#define FW_MEDIUM 500
+#define FW_SEMIBOLD 600
+#define FW_DEMIBOLD FW_SEMIBOLD
+#define FW_BOLD 700
+#define FW_EXTRABOLD 800
+#define FW_ULTRABOLD FW_EXTRABOLD
+#define FW_HEAVY 900
+#define FW_BLACK FW_HEAVY
+#define ANSI_CHARSET 0
+#define DEFAULT_CHARSET 1
+#define SYMBOL_CHARSET 2
+#define SHIFTJIS_CHARSET 128
+#define HANGEUL_CHARSET 129
+#define HANGUL_CHARSET 129
+#define GB2312_CHARSET 134
+#define CHINESEBIG5_CHARSET 136
+#define GREEK_CHARSET 161
+#define TURKISH_CHARSET 162
+#define HEBREW_CHARSET 177
+#define ARABIC_CHARSET 178
+#define BALTIC_CHARSET 186
+#define RUSSIAN_CHARSET 204
+#define THAI_CHARSET 222
+#define EASTEUROPE_CHARSET 238
+#define OEM_CHARSET 255
+#define JOHAB_CHARSET 130
+#define VIETNAMESE_CHARSET 163
+#define MAC_CHARSET 77
+#define BALTIC_CHARSET 186
+#define JOHAB_CHARSET 130
+#define VIETNAMESE_CHARSET 163
+#define OUT_DEFAULT_PRECIS 0
+#define OUT_STRING_PRECIS 1
+#define OUT_CHARACTER_PRECIS 2
+#define OUT_STROKE_PRECIS 3
+#define OUT_TT_PRECIS 4
+#define OUT_DEVICE_PRECIS 5
+#define OUT_RASTER_PRECIS 6
+#define OUT_TT_ONLY_PRECIS 7
+#define OUT_OUTLINE_PRECIS 8
+#define CLIP_DEFAULT_PRECIS 0
+#define CLIP_CHARACTER_PRECIS 1
+#define CLIP_STROKE_PRECIS 2
+#define CLIP_MASK 15
+#define CLIP_LH_ANGLES 16
+#define CLIP_TT_ALWAYS 32
+#define CLIP_EMBEDDED 128
+#define DEFAULT_QUALITY 0
+#define DRAFT_QUALITY 1
+#define PROOF_QUALITY 2
+#define NONANTIALIASED_QUALITY 3
+#define ANTIALIASED_QUALITY 4
+#define DEFAULT_PITCH 0
+#define FIXED_PITCH 1
+#define VARIABLE_PITCH 2
+#define MONO_FONT 8
+#define FF_DECORATIVE 80
+#define FF_DONTCARE 0
+#define FF_MODERN 48
+#define FF_ROMAN 16
+#define FF_SCRIPT 64
+#define FF_SWISS 32
+#define PANOSE_COUNT 10
+#define PAN_FAMILYTYPE_INDEX 0
+#define PAN_SERIFSTYLE_INDEX 1
+#define PAN_WEIGHT_INDEX 2
+#define PAN_PROPORTION_INDEX 3
+#define PAN_CONTRAST_INDEX 4
+#define PAN_STROKEVARIATION_INDEX 5
+#define PAN_ARMSTYLE_INDEX 6
+#define PAN_LETTERFORM_INDEX 7
+#define PAN_MIDLINE_INDEX 8
+#define PAN_XHEIGHT_INDEX 9
+#define PAN_CULTURE_LATIN 0
+#define PAN_ANY 0
+#define PAN_NO_FIT 1
+#define PAN_FAMILY_TEXT_DISPLAY 2
+#define PAN_FAMILY_SCRIPT 3
+#define PAN_FAMILY_DECORATIVE 4
+#define PAN_FAMILY_PICTORIAL 5
+#define PAN_SERIF_COVE 2
+#define PAN_SERIF_OBTUSE_COVE 3
+#define PAN_SERIF_SQUARE_COVE 4
+#define PAN_SERIF_OBTUSE_SQUARE_COVE 5
+#define PAN_SERIF_SQUARE 6
+#define PAN_SERIF_THIN 7
+#define PAN_SERIF_BONE 8
+#define PAN_SERIF_EXAGGERATED 9
+#define PAN_SERIF_TRIANGLE 10
+#define PAN_SERIF_NORMAL_SANS 11
+#define PAN_SERIF_OBTUSE_SANS 12
+#define PAN_SERIF_PERP_SANS 13
+#define PAN_SERIF_FLARED 14
+#define PAN_SERIF_ROUNDED 15
+#define PAN_WEIGHT_VERY_LIGHT 2
+#define PAN_WEIGHT_LIGHT 3
+#define PAN_WEIGHT_THIN 4
+#define PAN_WEIGHT_BOOK 5
+#define PAN_WEIGHT_MEDIUM 6
+#define PAN_WEIGHT_DEMI 7
+#define PAN_WEIGHT_BOLD 8
+#define PAN_WEIGHT_HEAVY 9
+#define PAN_WEIGHT_BLACK 10
+#define PAN_WEIGHT_NORD 11
+#define PAN_PROP_OLD_STYLE 2
+#define PAN_PROP_MODERN 3
+#define PAN_PROP_EVEN_WIDTH 4
+#define PAN_PROP_EXPANDED 5
+#define PAN_PROP_CONDENSED 6
+#define PAN_PROP_VERY_EXPANDED 7
+#define PAN_PROP_VERY_CONDENSED 8
+#define PAN_PROP_MONOSPACED 9
+#define PAN_CONTRAST_NONE 2
+#define PAN_CONTRAST_VERY_LOW 3
+#define PAN_CONTRAST_LOW 4
+#define PAN_CONTRAST_MEDIUM_LOW 5
+#define PAN_CONTRAST_MEDIUM 6
+#define PAN_CONTRAST_MEDIUM_HIGH 7
+#define PAN_CONTRAST_HIGH 8
+#define PAN_CONTRAST_VERY_HIGH 9
+#define PAN_STROKE_GRADUAL_DIAG 2
+#define PAN_STROKE_GRADUAL_TRAN 3
+#define PAN_STROKE_GRADUAL_VERT 4
+#define PAN_STROKE_GRADUAL_HORZ 5
+#define PAN_STROKE_RAPID_VERT 6
+#define PAN_STROKE_RAPID_HORZ 7
+#define PAN_STROKE_INSTANT_VERT 8
+#define PAN_STRAIGHT_ARMS_HORZ 2
+#define PAN_STRAIGHT_ARMS_WEDGE 3
+#define PAN_STRAIGHT_ARMS_VERT 4
+#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
+#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
+#define PAN_BENT_ARMS_HORZ 7
+#define PAN_BENT_ARMS_WEDGE 8
+#define PAN_BENT_ARMS_VERT 9
+#define PAN_BENT_ARMS_SINGLE_SERIF 10
+#define PAN_BENT_ARMS_DOUBLE_SERIF 11
+#define PAN_LETT_NORMAL_CONTACT 2
+#define PAN_LETT_NORMAL_WEIGHTED 3
+#define PAN_LETT_NORMAL_BOXED 4
+#define PAN_LETT_NORMAL_FLATTENED 5
+#define PAN_LETT_NORMAL_ROUNDED 6
+#define PAN_LETT_NORMAL_OFF_CENTER 7
+#define PAN_LETT_NORMAL_SQUARE 8
+#define PAN_LETT_OBLIQUE_CONTACT 9
+#define PAN_LETT_OBLIQUE_WEIGHTED 10
+#define PAN_LETT_OBLIQUE_BOXED 11
+#define PAN_LETT_OBLIQUE_FLATTENED 12
+#define PAN_LETT_OBLIQUE_ROUNDED 13
+#define PAN_LETT_OBLIQUE_OFF_CENTER 14
+#define PAN_LETT_OBLIQUE_SQUARE 15
+#define PAN_MIDLINE_STANDARD_TRIMMED 2
+#define PAN_MIDLINE_STANDARD_POINTED 3
+#define PAN_MIDLINE_STANDARD_SERIFED 4
+#define PAN_MIDLINE_HIGH_TRIMMED 5
+#define PAN_MIDLINE_HIGH_POINTED 6
+#define PAN_MIDLINE_HIGH_SERIFED 7
+#define PAN_MIDLINE_CONSTANT_TRIMMED 8
+#define PAN_MIDLINE_CONSTANT_POINTED 9
+#define PAN_MIDLINE_CONSTANT_SERIFED 10
+#define PAN_MIDLINE_LOW_TRIMMED 11
+#define PAN_MIDLINE_LOW_POINTED 12
+#define PAN_MIDLINE_LOW_SERIFED 13
+#define PAN_XHEIGHT_CONSTANT_SMALL 2
+#define PAN_XHEIGHT_CONSTANT_STD 3
+#define PAN_XHEIGHT_CONSTANT_LARGE 4
+#define PAN_XHEIGHT_DUCKING_SMALL 5
+#define PAN_XHEIGHT_DUCKING_STD 6
+#define PAN_XHEIGHT_DUCKING_LARGE 7
+#define FS_LATIN1 1
+#define FS_LATIN2 2
+#define FS_CYRILLIC 4
+#define FS_GREEK 8
+#define FS_TURKISH 16
+#define FS_HEBREW 32
+#define FS_ARABIC 64
+#define FS_BALTIC 128
+#define FS_THAI 0x10000
+#define FS_JISJAPAN 0x20000
+#define FS_CHINESESIMP 0x40000
+#define FS_WANSUNG 0x80000
+#define FS_CHINESETRAD 0x100000
+#define FS_JOHAB 0x200000
+#define FS_SYMBOL 0x80000000
+#define HS_BDIAGONAL 3
+#define HS_CROSS 4
+#define HS_DIAGCROSS 5
+#define HS_FDIAGONAL 2
+#define HS_HORIZONTAL 0
+#define HS_VERTICAL 1
+#define PS_GEOMETRIC 65536
+#define PS_COSMETIC 0
+#define PS_ALTERNATE 8
+#define PS_SOLID 0
+#define PS_DASH 1
+#define PS_DOT 2
+#define PS_DASHDOT 3
+#define PS_DASHDOTDOT 4
+#define PS_NULL 5
+#define PS_USERSTYLE 7
+#define PS_INSIDEFRAME 6
+#define PS_ENDCAP_ROUND 0
+#define PS_ENDCAP_SQUARE 256
+#define PS_ENDCAP_FLAT 512
+#define PS_JOIN_BEVEL 4096
+#define PS_JOIN_MITER 8192
+#define PS_JOIN_ROUND 0
+#define PS_STYLE_MASK 15
+#define PS_ENDCAP_MASK 3840
+#define PS_TYPE_MASK 983040
+#define ALTERNATE 1
+#define WINDING 2
+#define DC_BINNAMES 12
+#define DC_BINS 6
+#define DC_COPIES 18
+#define DC_DRIVER 11
+#define DC_DATATYPE_PRODUCED 21
+#define DC_DUPLEX 7
+#define DC_EMF_COMPLIANT 20
+#define DC_ENUMRESOLUTIONS 13
+#define DC_EXTRA 9
+#define DC_FIELDS 1
+#define DC_FILEDEPENDENCIES 14
+#define DC_MAXEXTENT 5
+#define DC_MINEXTENT 4
+#define DC_ORIENTATION 17
+#define DC_PAPERNAMES 16
+#define DC_PAPERS 2
+#define DC_PAPERSIZE 3
+#define DC_SIZE 8
+#define DC_TRUETYPE 15
+#define DCTT_BITMAP 1
+#define DCTT_DOWNLOAD 2
+#define DCTT_SUBDEV 4
+#define DCTT_DOWNLOAD_OUTLINE 8
+#define DC_VERSION 10
+#define DC_BINADJUST 19
+#define DC_EMF_COMPLIANT 20
+#define DC_DATATYPE_PRODUCED 21
+#define DC_MANUFACTURER 23
+#define DC_MODEL 24
+#define DCBA_FACEUPNONE 0
+#define DCBA_FACEUPCENTER 1
+#define DCBA_FACEUPLEFT 2
+#define DCBA_FACEUPRIGHT 3
+#define DCBA_FACEDOWNNONE 256
+#define DCBA_FACEDOWNCENTER 257
+#define DCBA_FACEDOWNLEFT 258
+#define DCBA_FACEDOWNRIGHT 259
+#define FLOODFILLBORDER 0
+#define FLOODFILLSURFACE 1
+#define ETO_CLIPPED 4
+#define ETO_GLYPH_INDEX 16
+#define ETO_OPAQUE 2
+#define ETO_RTLREADING 128
+#define GDICOMMENT_WINDOWS_METAFILE (-2147483647)
+#define GDICOMMENT_BEGINGROUP 2
+#define GDICOMMENT_ENDGROUP 3
+#define GDICOMMENT_MULTIFORMATS 1073741828
+#define GDICOMMENT_IDENTIFIER 1128875079
+#define AD_COUNTERCLOCKWISE 1
+#define AD_CLOCKWISE 2
+#define RDH_RECTANGLES 1
+#define GCPCLASS_LATIN 1
+#define GCPCLASS_HEBREW 2
+#define GCPCLASS_ARABIC 2
+#define GCPCLASS_NEUTRAL 3
+#define GCPCLASS_LOCALNUMBER 4
+#define GCPCLASS_LATINNUMBER 5
+#define GCPCLASS_LATINNUMERICTERMINATOR 6
+#define GCPCLASS_LATINNUMERICSEPARATOR 7
+#define GCPCLASS_NUMERICSEPARATOR 8
+#define GCPCLASS_PREBOUNDLTR 128
+#define GCPCLASS_PREBOUNDRTL 64
+#define GCPCLASS_POSTBOUNDLTR 32
+#define GCPCLASS_POSTBOUNDRTL 16
+#define GCPGLYPH_LINKBEFORE 0x8000
+#define GCPGLYPH_LINKAFTER 0x4000
+#define DCB_DISABLE 8
+#define DCB_ENABLE 4
+#define DCB_RESET 1
+#define DCB_SET 3
+#define DCB_ACCUMULATE 2
+#define DCB_DIRTY 2
+#define OBJ_BRUSH 2
+#define OBJ_PEN 1
+#define OBJ_PAL 5
+#define OBJ_FONT 6
+#define OBJ_BITMAP 7
+#define OBJ_EXTPEN 11
+#define OBJ_REGION 8
+#define OBJ_DC 3
+#define OBJ_MEMDC 10
+#define OBJ_METAFILE 9
+#define OBJ_METADC 4
+#define OBJ_ENHMETAFILE 13
+#define OBJ_ENHMETADC 12
+#define DRIVERVERSION 0
+#define TECHNOLOGY 2
+#define DT_PLOTTER 0
+#define DT_RASDISPLAY 1
+#define DT_RASPRINTER 2
+#define DT_RASCAMERA 3
+#define DT_CHARSTREAM 4
+#define DT_METAFILE 5
+#define DT_DISPFILE 6
+#define HORZSIZE 4
+#define VERTSIZE 6
+#define HORZRES 8
+#define VERTRES 10
+#define LOGPIXELSX 88
+#define LOGPIXELSY 90
+#define BITSPIXEL 12
+#define PLANES 14
+#define NUMBRUSHES 16
+#define NUMPENS 18
+#define NUMFONTS 22
+#define NUMCOLORS 24
+#define NUMMARKERS 20
+#define ASPECTX 40
+#define ASPECTY 42
+#define ASPECTXY 44
+#define PDEVICESIZE 26
+#define CLIPCAPS 36
+#define SIZEPALETTE 104
+#define NUMRESERVED 106
+#define COLORRES 108
+#define PHYSICALWIDTH 110
+#define PHYSICALHEIGHT 111
+#define PHYSICALOFFSETX 112
+#define PHYSICALOFFSETY 113
+#define SCALINGFACTORX 114
+#define SCALINGFACTORY 115
+#define VREFRESH 116
+#define DESKTOPHORZRES 118
+#define DESKTOPVERTRES 117
+#define BLTALIGNMENT 119
+#define RASTERCAPS 38
+#define RC_BANDING 2
+#define RC_BITBLT 1
+#define RC_BITMAP64 8
+#define RC_DI_BITMAP 128
+#define RC_DIBTODEV 512
+#define RC_FLOODFILL 4096
+#define RC_GDI20_OUTPUT 16
+#define RC_PALETTE 256
+#define RC_SCALING 4
+#define RC_STRETCHBLT 2048
+#define RC_STRETCHDIB 8192
+#define RC_DEVBITS 0x8000
+#define RC_OP_DX_OUTPUT 0x4000
+#define CURVECAPS 28
+#define CC_NONE 0
+#define CC_CIRCLES 1
+#define CC_PIE 2
+#define CC_CHORD 4
+#define CC_ELLIPSES 8
+#define CC_WIDE 16
+#define CC_STYLED 32
+#define CC_WIDESTYLED 64
+#define CC_INTERIORS 128
+#define CC_ROUNDRECT 256
+#define LINECAPS 30
+#define LC_NONE 0
+#define LC_POLYLINE 2
+#define LC_MARKER 4
+#define LC_POLYMARKER 8
+#define LC_WIDE 16
+#define LC_STYLED 32
+#define LC_WIDESTYLED 64
+#define LC_INTERIORS 128
+#define POLYGONALCAPS 32
+#define RC_BANDING 2
+#define RC_BIGFONT 1024
+#define RC_BITBLT 1
+#define RC_BITMAP64 8
+#define RC_DEVBITS 0x8000
+#define RC_DI_BITMAP 128
+#define RC_GDI20_OUTPUT 16
+#define RC_GDI20_STATE 32
+#define RC_NONE 0
+#define RC_OP_DX_OUTPUT 0x4000
+#define RC_PALETTE 256
+#define RC_SAVEBITMAP 64
+#define RC_SCALING 4
+#define PC_NONE 0
+#define PC_POLYGON 1
+#define PC_POLYPOLYGON 256
+#define PC_PATHS 512
+#define PC_RECTANGLE 2
+#define PC_WINDPOLYGON 4
+#define PC_SCANLINE 8
+#define PC_TRAPEZOID 4
+#define PC_WIDE 16
+#define PC_STYLED 32
+#define PC_WIDESTYLED 64
+#define PC_INTERIORS 128
+#define PC_PATHS 512
+#define TEXTCAPS 34
+#define TC_OP_CHARACTER 1
+#define TC_OP_STROKE 2
+#define TC_CP_STROKE 4
+#define TC_CR_90 8
+#define TC_CR_ANY 16
+#define TC_SF_X_YINDEP 32
+#define TC_SA_DOUBLE 64
+#define TC_SA_INTEGER 128
+#define TC_SA_CONTIN 256
+#define TC_EA_DOUBLE 512
+#define TC_IA_ABLE 1024
+#define TC_UA_ABLE 2048
+#define TC_SO_ABLE 4096
+#define TC_RA_ABLE 8192
+#define TC_VA_ABLE 16384
+#define TC_RESERVED 32768
+#define TC_SCROLLBLT 65536
+#define GCP_DBCS 1
+#define GCP_ERROR 0x8000
+#define GCP_CLASSIN 0x80000
+#define GCP_DIACRITIC 256
+#define GCP_DISPLAYZWG 0x400000
+#define GCP_GLYPHSHAPE 16
+#define GCP_JUSTIFY 0x10000
+#define GCP_JUSTIFYIN 0x200000
+#define GCP_KASHIDA 1024
+#define GCP_LIGATE 32
+#define GCP_MAXEXTENT 0x100000
+#define GCP_NEUTRALOVERRIDE 0x2000000
+#define GCP_NUMERICOVERRIDE 0x1000000
+#define GCP_NUMERICSLATIN 0x4000000
+#define GCP_NUMERICSLOCAL 0x8000000
+#define GCP_REORDER 2
+#define GCP_SYMSWAPOFF 0x800000
+#define GCP_USEKERNING 8
+#define FLI_GLYPHS 0x40000
+#define FLI_MASK 0x103b
+#define GGO_METRICS 0
+#define GGO_BITMAP 1
+#define GGO_NATIVE 2
+#define GGO_BEZIER 3
+#define GGO_GRAY2_BITMAP 4
+#define GGO_GRAY4_BITMAP 5
+#define GGO_GRAY8_BITMAP 6
+#define GGO_GLYPH_INDEX 128
+#define GGO_UNHINTED 256
+#define GM_COMPATIBLE 1
+#define GM_ADVANCED 2
+#define MM_ANISOTROPIC 8
+#define MM_HIENGLISH 5
+#define MM_HIMETRIC 3
+#define MM_ISOTROPIC 7
+#define MM_LOENGLISH 4
+#define MM_LOMETRIC 2
+#define MM_TEXT 1
+#define MM_TWIPS 6
+#define MM_MAX_FIXEDSCALE MM_TWIPS
+#define ABSOLUTE 1
+#define RELATIVE 2
+#define PC_EXPLICIT 2
+#define PC_NOCOLLAPSE 4
+#define PC_RESERVED 1
+#define CLR_NONE 0xffffffff
+#define CLR_INVALID CLR_NONE
+#define CLR_DEFAULT 0xff000000
+#define PT_MOVETO 6
+#define PT_LINETO 2
+#define PT_BEZIERTO 4
+#define PT_CLOSEFIGURE 1
+#define TT_AVAILABLE 1
+#define TT_ENABLED 2
+#define BLACK_BRUSH 4
+#define DKGRAY_BRUSH 3
+#define GRAY_BRUSH 2
+#define HOLLOW_BRUSH 5
+#define LTGRAY_BRUSH 1
+#define NULL_BRUSH 5
+#define WHITE_BRUSH 0
+#define BLACK_PEN 7
+#define NULL_PEN 8
+#define WHITE_PEN 6
+#define ANSI_FIXED_FONT 11
+#define ANSI_VAR_FONT 12
+#define DEVICE_DEFAULT_FONT 14
+#define DEFAULT_GUI_FONT 17
+#define OEM_FIXED_FONT 10
+#define SYSTEM_FONT 13
+#define SYSTEM_FIXED_FONT 16
+#define DEFAULT_PALETTE 15
+#define SYSPAL_NOSTATIC 2
+#define SYSPAL_STATIC 1
+#define SYSPAL_ERROR 0
+#define TA_BASELINE 24
+#define TA_BOTTOM 8
+#define TA_TOP 0
+#define TA_CENTER 6
+#define TA_LEFT 0
+#define TA_RIGHT 2
+#define TA_RTLREADING 256
+#define TA_NOUPDATECP 0
+#define TA_UPDATECP 1
+#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING)
+#define VTA_BASELINE 24
+#define VTA_CENTER 6
+#define VTA_LEFT TA_BOTTOM
+#define VTA_RIGHT TA_TOP
+#define VTA_BOTTOM TA_RIGHT
+#define VTA_TOP TA_LEFT
+#define MWT_IDENTITY 1
+#define MWT_LEFTMULTIPLY 2
+#define MWT_RIGHTMULTIPLY 3
+#define OPAQUE 2
+#define TRANSPARENT 1
+#define BLACKONWHITE 1
+#define WHITEONBLACK 2
+#define COLORONCOLOR 3
+#define HALFTONE 4
+#define MAXSTRETCHBLTMODE 4
+#define STRETCH_ANDSCANS 1
+#define STRETCH_DELETESCANS 3
+#define STRETCH_HALFTONE 4
+#define STRETCH_ORSCANS 2
+#define TCI_SRCCHARSET 1
+#define TCI_SRCCODEPAGE 2
+#define TCI_SRCFONTSIG 3
+#define ICM_ON 2
+#define ICM_OFF 1
+#define ICM_QUERY 3
+#define NEWFRAME 1
+#define ABORTDOC 2
+#define NEXTBAND 3
+#define SETCOLORTABLE 4
+#define GETCOLORTABLE 5
+#define FLUSHOUTPUT 6
+#define DRAFTMODE 7
+#define QUERYESCSUPPORT 8
+#define SETABORTPROC 9
+#define STARTDOC 10
+#define ENDDOC 11
+#define GETPHYSPAGESIZE 12
+#define GETPRINTINGOFFSET 13
+#define GETSCALINGFACTOR 14
+#define MFCOMMENT 15
+#define GETPENWIDTH 16
+#define SETCOPYCOUNT 17
+#define SELECTPAPERSOURCE 18
+#define DEVICEDATA 19
+#define PASSTHROUGH 19
+#define GETTECHNOLGY 20
+#define GETTECHNOLOGY 20
+#define SETLINECAP 21
+#define SETLINEJOIN 22
+#define SETMITERLIMIT 23
+#define BANDINFO 24
+#define DRAWPATTERNRECT 25
+#define GETVECTORPENSIZE 26
+#define GETVECTORBRUSHSIZE 27
+#define ENABLEDUPLEX 28
+#define GETSETPAPERBINS 29
+#define GETSETPRINTORIENT 30
+#define ENUMPAPERBINS 31
+#define SETDIBSCALING 32
+#define EPSPRINTING 33
+#define ENUMPAPERMETRICS 34
+#define GETSETPAPERMETRICS 35
+#define POSTSCRIPT_DATA 37
+#define POSTSCRIPT_IGNORE 38
+#define MOUSETRAILS 39
+#define GETDEVICEUNITS 42
+#define GETEXTENDEDTEXTMETRICS 256
+#define GETEXTENTTABLE 257
+#define GETPAIRKERNTABLE 258
+#define GETTRACKKERNTABLE 259
+#define EXTTEXTOUT 512
+#define GETFACENAME 513
+#define DOWNLOADFACE 514
+#define ENABLERELATIVEWIDTHS 768
+#define ENABLEPAIRKERNING 769
+#define SETKERNTRACK 770
+#define SETALLJUSTVALUES 771
+#define SETCHARSET 772
+#define STRETCHBLT 2048
+#define GETSETSCREENPARAMS 3072
+#define QUERYDIBSUPPORT 3073
+#define BEGIN_PATH 4096
+#define CLIP_TO_PATH 4097
+#define END_PATH 4098
+#define EXT_DEVICE_CAPS 4099
+#define RESTORE_CTM 4100
+#define SAVE_CTM 4101
+#define SET_ARC_DIRECTION 4102
+#define SET_BACKGROUND_COLOR 4103
+#define SET_POLY_MODE 4104
+#define SET_SCREEN_ANGLE 4105
+#define SET_SPREAD 4106
+#define TRANSFORM_CTM 4107
+#define SET_CLIP_BOX 4108
+#define SET_BOUNDS 4109
+#define SET_MIRROR_MODE 4110
+#define OPENCHANNEL 4110
+#define DOWNLOADHEADER 4111
+#define CLOSECHANNEL 4112
+#define POSTSCRIPT_PASSTHROUGH 4115
+#define ENCAPSULATED_POSTSCRIPT 4116
+#define QDI_SETDIBITS 1
+#define QDI_GETDIBITS 2
+#define QDI_DIBTOSCREEN 4
+#define QDI_STRETCHDIB 8
+#define SP_NOTREPORTED 0x4000
+#define PR_JOBSTATUS 0
+#define ASPECT_FILTERING 1
+#define BS_SOLID 0
+#define BS_NULL 1
+#define BS_HOLLOW 1
+#define BS_HATCHED 2
+#define BS_PATTERN 3
+#define BS_INDEXED 4
+#define BS_DIBPATTERN 5
+#define BS_DIBPATTERNPT 6
+#define BS_PATTERN8X8 7
+#define BS_DIBPATTERN8X8 8
+#define LCS_CALIBRATED_RGB 0
+#define LCS_DEVICE_RGB 1
+#define LCS_DEVICE_CMYK 2
+#define LCS_GM_BUSINESS 1
+#define LCS_GM_GRAPHICS 2
+#define LCS_GM_IMAGES 4
+#define RASTER_FONTTYPE 1
+#define DEVICE_FONTTYPE 2
+#define TRUETYPE_FONTTYPE 4
+#define DMORIENT_PORTRAIT 1
+#define DMORIENT_LANDSCAPE 2
+#define DMPAPER_FIRST 1
+#define DMPAPER_LETTER 1
+#define DMPAPER_LETTERSMALL 2
+#define DMPAPER_TABLOID 3
+#define DMPAPER_LEDGER 4
+#define DMPAPER_LEGAL 5
+#define DMPAPER_STATEMENT 6
+#define DMPAPER_EXECUTIVE 7
+#define DMPAPER_A3 8
+#define DMPAPER_A4 9
+#define DMPAPER_A4SMALL 10
+#define DMPAPER_A5 11
+#define DMPAPER_B4 12
+#define DMPAPER_B5 13
+#define DMPAPER_FOLIO 14
+#define DMPAPER_QUARTO 15
+#define DMPAPER_10X14 16
+#define DMPAPER_11X17 17
+#define DMPAPER_NOTE 18
+#define DMPAPER_ENV_9 19
+#define DMPAPER_ENV_10 20
+#define DMPAPER_ENV_11 21
+#define DMPAPER_ENV_12 22
+#define DMPAPER_ENV_14 23
+#define DMPAPER_CSHEET 24
+#define DMPAPER_DSHEET 25
+#define DMPAPER_ESHEET 26
+#define DMPAPER_ENV_DL 27
+#define DMPAPER_ENV_C5 28
+#define DMPAPER_ENV_C3 29
+#define DMPAPER_ENV_C4 30
+#define DMPAPER_ENV_C6 31
+#define DMPAPER_ENV_C65 32
+#define DMPAPER_ENV_B4 33
+#define DMPAPER_ENV_B5 34
+#define DMPAPER_ENV_B6 35
+#define DMPAPER_ENV_ITALY 36
+#define DMPAPER_ENV_MONARCH 37
+#define DMPAPER_ENV_PERSONAL 38
+#define DMPAPER_FANFOLD_US 39
+#define DMPAPER_FANFOLD_STD_GERMAN 40
+#define DMPAPER_FANFOLD_LGL_GERMAN 41
+#define DMPAPER_ISO_B4 42
+#define DMPAPER_JAPANESE_POSTCARD 43
+#define DMPAPER_9X11 44
+#define DMPAPER_10X11 45
+#define DMPAPER_15X11 46
+#define DMPAPER_ENV_INVITE 47
+#define DMPAPER_RESERVED_48 48
+#define DMPAPER_RESERVED_49 49
+#define DMPAPER_LETTER_EXTRA 50
+#define DMPAPER_LEGAL_EXTRA 51
+#define DMPAPER_TABLOID_EXTRA 52
+#define DMPAPER_A4_EXTRA 53
+#define DMPAPER_LETTER_TRANSVERSE 54
+#define DMPAPER_A4_TRANSVERSE 55
+#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
+#define DMPAPER_A_PLUS 57
+#define DMPAPER_B_PLUS 58
+#define DMPAPER_LETTER_PLUS 59
+#define DMPAPER_A4_PLUS 60
+#define DMPAPER_A5_TRANSVERSE 61
+#define DMPAPER_B5_TRANSVERSE 62
+#define DMPAPER_A3_EXTRA 63
+#define DMPAPER_A5_EXTRA 64
+#define DMPAPER_B5_EXTRA 65
+#define DMPAPER_A2 66
+#define DMPAPER_A3_TRANSVERSE 67
+#define DMPAPER_A3_EXTRA_TRANSVERSE 68
+#define DMPAPER_LAST 68
+#define DMPAPER_USER 256
+#define DMBIN_FIRST 1
+#define DMBIN_UPPER 1
+#define DMBIN_ONLYONE 1
+#define DMBIN_LOWER 2
+#define DMBIN_MIDDLE 3
+#define DMBIN_MANUAL 4
+#define DMBIN_ENVELOPE 5
+#define DMBIN_ENVMANUAL 6
+#define DMBIN_AUTO 7
+#define DMBIN_TRACTOR 8
+#define DMBIN_SMALLFMT 9
+#define DMBIN_LARGEFMT 10
+#define DMBIN_LARGECAPACITY 11
+#define DMBIN_CASSETTE 14
+#define DMBIN_FORMSOURCE 15
+#define DMBIN_LAST 15
+#define DMBIN_USER 256
+#define DMRES_DRAFT (-1)
+#define DMRES_LOW (-2)
+#define DMRES_MEDIUM (-3)
+#define DMRES_HIGH (-4)
+#define DMCOLOR_MONOCHROME 1
+#define DMCOLOR_COLOR 2
+#define DMDUP_SIMPLEX 1
+#define DMDUP_VERTICAL 2
+#define DMDUP_HORIZONTAL 3
+#define DMTT_BITMAP 1
+#define DMTT_DOWNLOAD 2
+#define DMTT_SUBDEV 3
+#define DMTT_DOWNLOAD_OUTLINE 4
+#define DMCOLLATE_FALSE 0
+#define DMCOLLATE_TRUE 1
+#define DM_GRAYSCALE 1
+#define DM_INTERLACED 2
+#define DM_UPDATE 1
+#define DM_COPY 2
+#define DM_PROMPT 4
+#define DM_MODIFY 8
+#define DM_IN_BUFFER DM_MODIFY
+#define DM_IN_PROMPT DM_PROMPT
+#define DM_OUT_BUFFER DM_COPY
+#define DM_OUT_DEFAULT DM_UPDATE
+#define DM_ORIENTATION 1
+#define DM_PAPERSIZE 2
+#define DM_PAPERLENGTH 4
+#define DM_PAPERWIDTH 8
+#define DM_SCALE 16
+#define DM_COPIES 256
+#define DM_DEFAULTSOURCE 512
+#define DM_PRINTQUALITY 1024
+#define DM_COLOR 2048
+#define DM_DUPLEX 4096
+#define DM_YRESOLUTION 8192
+#define DM_TTOPTION 16384
+#define DM_COLLATE 32768
+#define DM_FORMNAME 65536
+#define DM_LOGPIXELS 0x20000
+#define DM_BITSPERPEL 0x40000
+#define DM_PELSWIDTH 0x80000
+#define DM_PELSHEIGHT 0x100000
+#define DM_DISPLAYFLAGS 0x200000
+#define DM_DISPLAYFREQUENCY 0x400000
+#define DM_ICMMETHOD 0x800000
+#define DM_ICMINTENT 0x1000000
+#define DM_MEDIATYPE 0x2000000
+#define DM_DITHERTYPE 0x4000000
+#define DMICMMETHOD_NONE 1
+#define DMICMMETHOD_SYSTEM 2
+#define DMICMMETHOD_DRIVER 3
+#define DMICMMETHOD_DEVICE 4
+#define DMICMMETHOD_USER 256
+#define DMICM_SATURATE 1
+#define DMICM_CONTRAST 2
+#define DMICM_COLORMETRIC 3
+#define DMICM_USER 256
+#define DMMEDIA_STANDARD 1
+#define DMMEDIA_TRANSPARENCY 2
+#define DMMEDIA_GLOSSY 3
+#define DMMEDIA_USER 256
+#define DMDITHER_NONE 1
+#define DMDITHER_COARSE 2
+#define DMDITHER_FINE 3
+#define DMDITHER_LINEART 4
+#define DMDITHER_ERRORDIFFUSION 5
+#define DMDITHER_RESERVED6 6
+#define DMDITHER_RESERVED7 7
+#define DMDITHER_RESERVED8 8
+#define DMDITHER_RESERVED9 9
+#define DMDITHER_GRAYSCALE 10
+#define DMDITHER_USER 256
+#define GDI_ERROR 0xFFFFFFFF
+#define HGDI_ERROR ((HANDLE)GDI_ERROR)
+#define TMPF_FIXED_PITCH 1
+#define TMPF_VECTOR 2
+#define TMPF_TRUETYPE 4
+#define TMPF_DEVICE 8
+#define NTM_ITALIC 1
+#define NTM_BOLD 32
+#define NTM_REGULAR 64
+#define TT_POLYGON_TYPE 24
+#define TT_PRIM_LINE 1
+#define TT_PRIM_QSPLINE 2
+#define FONTMAPPER_MAX 10
+#define ENHMETA_STOCK_OBJECT 0x80000000
+#define WGL_FONT_LINES 0
+#define WGL_FONT_POLYGONS 1
+#define LPD_DOUBLEBUFFER 1
+#define LPD_STEREO 2
+#define LPD_SUPPORT_GDI 16
+#define LPD_SUPPORT_OPENGL 32
+#define LPD_SHARE_DEPTH 64
+#define LPD_SHARE_STENCIL 128
+#define LPD_SHARE_ACCUM 256
+#define LPD_SWAP_EXCHANGE 512
+#define LPD_SWAP_COPY 1024
+#define LPD_TRANSPARENT 4096
+#define LPD_TYPE_RGBA 0
+#define LPD_TYPE_COLORINDEX 1
+#define WGL_SWAP_MAIN_PLANE 1
+#define WGL_SWAP_OVERLAY1 2
+#define WGL_SWAP_OVERLAY2 4
+#define WGL_SWAP_OVERLAY3 8
+#define WGL_SWAP_OVERLAY4 16
+#define WGL_SWAP_OVERLAY5 32
+#define WGL_SWAP_OVERLAY6 64
+#define WGL_SWAP_OVERLAY7 128
+#define WGL_SWAP_OVERLAY8 256
+#define WGL_SWAP_OVERLAY9 512
+#define WGL_SWAP_OVERLAY10 1024
+#define WGL_SWAP_OVERLAY11 2048
+#define WGL_SWAP_OVERLAY12 4096
+#define WGL_SWAP_OVERLAY13 8192
+#define WGL_SWAP_OVERLAY14 16384
+#define WGL_SWAP_OVERLAY15 32768
+#define WGL_SWAP_UNDERLAY1 65536
+#define WGL_SWAP_UNDERLAY2 0x20000
+#define WGL_SWAP_UNDERLAY3 0x40000
+#define WGL_SWAP_UNDERLAY4 0x80000
+#define WGL_SWAP_UNDERLAY5 0x100000
+#define WGL_SWAP_UNDERLAY6 0x200000
+#define WGL_SWAP_UNDERLAY7 0x400000
+#define WGL_SWAP_UNDERLAY8 0x800000
+#define WGL_SWAP_UNDERLAY9 0x1000000
+#define WGL_SWAP_UNDERLAY10 0x2000000
+#define WGL_SWAP_UNDERLAY11 0x4000000
+#define WGL_SWAP_UNDERLAY12 0x8000000
+#define WGL_SWAP_UNDERLAY13 0x10000000
+#define WGL_SWAP_UNDERLAY14 0x20000000
+#define WGL_SWAP_UNDERLAY15 0x40000000
+#define AC_SRC_OVER 0
+#define LAYOUT_RTL 1
+#define LAYOUT_BITMAPORIENTATIONPRESERVED 8
+
+#ifndef RC_INVOKED
+typedef struct _ABC {
+ int abcA;
+ UINT abcB;
+ int abcC;
+} ABC,*LPABC;
+typedef struct _ABCFLOAT {
+ FLOAT abcfA;
+ FLOAT abcfB;
+ FLOAT abcfC;
+} ABCFLOAT,*LPABCFLOAT;
+typedef struct tagBITMAP {
+ LONG bmType;
+ LONG bmWidth;
+ LONG bmHeight;
+ LONG bmWidthBytes;
+ WORD bmPlanes;
+ WORD bmBitsPixel;
+ LPVOID bmBits;
+} BITMAP,*PBITMAP,*LPBITMAP;
+typedef struct tagBITMAPCOREHEADER {
+ DWORD bcSize;
+ WORD bcWidth;
+ WORD bcHeight;
+ WORD bcPlanes;
+ WORD bcBitCount;
+} BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER;
+#pragma pack(push,1)
+typedef struct tagRGBTRIPLE {
+ BYTE rgbtBlue;
+ BYTE rgbtGreen;
+ BYTE rgbtRed;
+} RGBTRIPLE;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct tagBITMAPFILEHEADER {
+ WORD bfType;
+ DWORD bfSize;
+ WORD bfReserved1;
+ WORD bfReserved2;
+ DWORD bfOffBits;
+} BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
+#pragma pack(pop)
+typedef struct _BITMAPCOREINFO {
+ BITMAPCOREHEADER bmciHeader;
+ RGBTRIPLE bmciColors[1];
+} BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO;
+typedef struct tagBITMAPINFOHEADER{
+ DWORD biSize;
+ LONG biWidth;
+ LONG biHeight;
+ WORD biPlanes;
+ WORD biBitCount;
+ DWORD biCompression;
+ DWORD biSizeImage;
+ LONG biXPelsPerMeter;
+ LONG biYPelsPerMeter;
+ DWORD biClrUsed;
+ DWORD biClrImportant;
+} BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
+typedef struct tagRGBQUAD {
+ BYTE rgbBlue;
+ BYTE rgbGreen;
+ BYTE rgbRed;
+ BYTE rgbReserved;
+} RGBQUAD;
+typedef struct tagBITMAPINFO {
+ BITMAPINFOHEADER bmiHeader;
+ RGBQUAD bmiColors[1];
+} BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO;
+typedef long FXPT16DOT16,*LPFXPT16DOT16;
+typedef long FXPT2DOT30,*LPFXPT2DOT30;
+typedef struct tagCIEXYZ {
+ FXPT2DOT30 ciexyzX;
+ FXPT2DOT30 ciexyzY;
+ FXPT2DOT30 ciexyzZ;
+} CIEXYZ,*LPCIEXYZ;
+typedef struct tagCIEXYZTRIPLE {
+ CIEXYZ ciexyzRed;
+ CIEXYZ ciexyzGreen;
+ CIEXYZ ciexyzBlue;
+} CIEXYZTRIPLE,*LPCIEXYZTRIPLE;
+typedef struct {
+ DWORD bV4Size;
+ LONG bV4Width;
+ LONG bV4Height;
+ WORD bV4Planes;
+ WORD bV4BitCount;
+ DWORD bV4V4Compression;
+ DWORD bV4SizeImage;
+ LONG bV4XPelsPerMeter;
+ LONG bV4YPelsPerMeter;
+ DWORD bV4ClrUsed;
+ DWORD bV4ClrImportant;
+ DWORD bV4RedMask;
+ DWORD bV4GreenMask;
+ DWORD bV4BlueMask;
+ DWORD bV4AlphaMask;
+ DWORD bV4CSType;
+ CIEXYZTRIPLE bV4Endpoints;
+ DWORD bV4GammaRed;
+ DWORD bV4GammaGreen;
+ DWORD bV4GammaBlue;
+} BITMAPV4HEADER,*LPBITMAPV4HEADER,*PBITMAPV4HEADER;
+typedef struct tagFONTSIGNATURE {
+ DWORD fsUsb[4];
+ DWORD fsCsb[2];
+} FONTSIGNATURE,*LPFONTSIGNATURE;
+typedef struct {
+ UINT ciCharset;
+ UINT ciACP;
+ FONTSIGNATURE fs;
+} CHARSETINFO,*LPCHARSETINFO;
+typedef struct tagCOLORADJUSTMENT {
+ WORD caSize;
+ WORD caFlags;
+ WORD caIlluminantIndex;
+ WORD caRedGamma;
+ WORD caGreenGamma;
+ WORD caBlueGamma;
+ WORD caReferenceBlack;
+ WORD caReferenceWhite;
+ SHORT caContrast;
+ SHORT caBrightness;
+ SHORT caColorfulness;
+ SHORT caRedGreenTint;
+} COLORADJUSTMENT,*LPCOLORADJUSTMENT;
+typedef struct _devicemodeA {
+ BYTE dmDeviceName[CCHDEVICENAME];
+ WORD dmSpecVersion;
+ WORD dmDriverVersion;
+ WORD dmSize;
+ WORD dmDriverExtra;
+ DWORD dmFields;
+ short dmOrientation;
+ short dmPaperSize;
+ short dmPaperLength;
+ short dmPaperWidth;
+ short dmScale;
+ short dmCopies;
+ short dmDefaultSource;
+ short dmPrintQuality;
+ short dmColor;
+ short dmDuplex;
+ short dmYResolution;
+ short dmTTOption;
+ short dmCollate;
+ BYTE dmFormName[CCHFORMNAME];
+ WORD dmLogPixels;
+ DWORD dmBitsPerPel;
+ DWORD dmPelsWidth;
+ DWORD dmPelsHeight;
+ DWORD dmDisplayFlags;
+ DWORD dmDisplayFrequency;
+ DWORD dmICMMethod;
+ DWORD dmICMIntent;
+ DWORD dmMediaType;
+ DWORD dmDitherType;
+ DWORD dmICCManufacturer;
+ DWORD dmICCModel;
+} DEVMODEA,*LPDEVMODEA,*PDEVMODEA;
+typedef struct _devicemodeW {
+ WCHAR dmDeviceName[CCHDEVICENAME];
+ WORD dmSpecVersion;
+ WORD dmDriverVersion;
+ WORD dmSize;
+ WORD dmDriverExtra;
+ DWORD dmFields;
+ short dmOrientation;
+ short dmPaperSize;
+ short dmPaperLength;
+ short dmPaperWidth;
+ short dmScale;
+ short dmCopies;
+ short dmDefaultSource;
+ short dmPrintQuality;
+ short dmColor;
+ short dmDuplex;
+ short dmYResolution;
+ short dmTTOption;
+ short dmCollate;
+ WCHAR dmFormName[CCHFORMNAME];
+ WORD dmLogPixels;
+ DWORD dmBitsPerPel;
+ DWORD dmPelsWidth;
+ DWORD dmPelsHeight;
+ DWORD dmDisplayFlags;
+ DWORD dmDisplayFrequency;
+ DWORD dmICMMethod;
+ DWORD dmICMIntent;
+ DWORD dmMediaType;
+ DWORD dmDitherType;
+ DWORD dmICCManufacturer;
+ DWORD dmICCModel;
+} DEVMODEW,*LPDEVMODEW,*PDEVMODEW;
+typedef struct tagDIBSECTION {
+ BITMAP dsBm;
+ BITMAPINFOHEADER dsBmih;
+ DWORD dsBitfields[3];
+ HANDLE dshSection;
+ DWORD dsOffset;
+} DIBSECTION;
+typedef struct _DOCINFOA {
+ int cbSize;
+ LPCTSTR lpszDocName;
+ LPCTSTR lpszOutput;
+ LPCTSTR lpszDatatype;
+ DWORD fwType;
+} DOCINFOA,*LPDOCINFOA;
+typedef struct _DOCINFOW {
+ int cbSize;
+ LPCWSTR lpszDocName;
+ LPCWSTR lpszOutput;
+ LPCWSTR lpszDatatype;
+ DWORD fwType;
+} DOCINFOW,*LPDOCINFOW;
+typedef struct tagEMR {
+ DWORD iType;
+ DWORD nSize;
+} EMR,*PEMR;
+typedef struct tagEMRANGLEARC {
+ EMR emr;
+ POINTL ptlCenter;
+ DWORD nRadius;
+ FLOAT eStartAngle;
+ FLOAT eSweepAngle;
+} EMRANGLEARC,*PEMRANGLEARC;
+typedef struct tagEMRARC {
+ EMR emr;
+ RECTL rclBox;
+ POINTL ptlStart;
+ POINTL ptlEnd;
+} EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE;
+typedef struct _XFORM {
+ FLOAT eM11;
+ FLOAT eM12;
+ FLOAT eM21;
+ FLOAT eM22;
+ FLOAT eDx;
+ FLOAT eDy;
+} XFORM,*LPXFORM;
+typedef struct tagEMRBITBLT {
+ EMR emr;
+ RECTL rclBounds;
+ LONG xDest;
+ LONG yDest;
+ LONG cxDest;
+ LONG cyDest;
+ DWORD dwRop;
+ LONG xSrc;
+ LONG ySrc;
+ XFORM xformSrc;
+ COLORREF crBkColorSrc;
+ DWORD iUsageSrc;
+ DWORD offBmiSrc;
+ DWORD offBitsSrc;
+ DWORD cbBitsSrc;
+} EMRBITBLT,*PEMRBITBLT;
+typedef struct tagLOGBRUSH {
+ UINT lbStyle;
+ COLORREF lbColor;
+ LONG lbHatch;
+} LOGBRUSH,*LPLOGBRUSH;
+typedef LOGBRUSH PATTERN,*PPATTERN,*LPPATTERN;
+typedef struct tagEMRCREATEBRUSHINDIRECT {
+ EMR emr;
+ DWORD ihBrush;
+ LOGBRUSH lb;
+} EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT;
+typedef LONG LCSCSTYPE;
+typedef LONG LCSGAMUTMATCH;
+typedef struct tagLOGCOLORSPACEA {
+ DWORD lcsSignature;
+ DWORD lcsVersion;
+ DWORD lcsSize;
+ LCSCSTYPE lcsCSType;
+ LCSGAMUTMATCH lcsIntent;
+ CIEXYZTRIPLE lcsEndpoints;
+ DWORD lcsGammaRed;
+ DWORD lcsGammaGreen;
+ DWORD lcsGammaBlue;
+ CHAR lcsFilename[MAX_PATH];
+} LOGCOLORSPACEA,*LPLOGCOLORSPACEA;
+typedef struct tagLOGCOLORSPACEW {
+ DWORD lcsSignature;
+ DWORD lcsVersion;
+ DWORD lcsSize;
+ LCSCSTYPE lcsCSType;
+ LCSGAMUTMATCH lcsIntent;
+ CIEXYZTRIPLE lcsEndpoints;
+ DWORD lcsGammaRed;
+ DWORD lcsGammaGreen;
+ DWORD lcsGammaBlue;
+ WCHAR lcsFilename[MAX_PATH];
+} LOGCOLORSPACEW,*LPLOGCOLORSPACEW;
+typedef struct tagEMRCREATECOLORSPACE {
+ EMR emr;
+ DWORD ihCS;
+ LOGCOLORSPACEW lcs;
+} EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
+typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
+ EMR emr;
+ DWORD ihBrush;
+ DWORD iUsage;
+ DWORD offBmi;
+ DWORD cbBmi;
+ DWORD offBits;
+ DWORD cbBits;
+} EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT;
+typedef struct tagEMRCREATEMONOBRUSH {
+ EMR emr;
+ DWORD ihBrush;
+ DWORD iUsage;
+ DWORD offBmi;
+ DWORD cbBmi;
+ DWORD offBits;
+ DWORD cbBits;
+} EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH;
+typedef struct tagPALETTEENTRY {
+ BYTE peRed;
+ BYTE peGreen;
+ BYTE peBlue;
+ BYTE peFlags;
+} PALETTEENTRY,*LPPALETTEENTRY,*PPALETTEENTRY;
+typedef struct tagLOGPALETTE {
+ WORD palVersion;
+ WORD palNumEntries;
+ PALETTEENTRY palPalEntry[1];
+} LOGPALETTE,*NPLOGPALETTE,*PLOGPALETTE,*LPLOGPALETTE;
+typedef struct tagEMRCREATEPALETTE {
+ EMR emr;
+ DWORD ihPal;
+ LOGPALETTE lgpl;
+} EMRCREATEPALETTE,*PEMRCREATEPALETTE;
+typedef struct tagLOGPEN {
+ UINT lopnStyle;
+ POINT lopnWidth;
+ COLORREF lopnColor;
+} LOGPEN,*LPLOGPEN;
+typedef struct tagEMRCREATEPEN {
+ EMR emr;
+ DWORD ihPen;
+ LOGPEN lopn;
+} EMRCREATEPEN,*PEMRCREATEPEN;
+typedef struct tagEMRELLIPSE {
+ EMR emr;
+ RECTL rclBox;
+} EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE;
+typedef struct tagEMREOF {
+ EMR emr;
+ DWORD nPalEntries;
+ DWORD offPalEntries;
+ DWORD nSizeLast;
+} EMREOF,*PEMREOF;
+typedef struct tagEMREXCLUDECLIPRECT {
+ EMR emr;
+ RECTL rclClip;
+} EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT;
+typedef struct tagPANOSE {
+ BYTE bFamilyType;
+ BYTE bSerifStyle;
+ BYTE bWeight;
+ BYTE bProportion;
+ BYTE bContrast;
+ BYTE bStrokeVariation;
+ BYTE bArmStyle;
+ BYTE bLetterform;
+ BYTE bMidline;
+ BYTE bXHeight;
+} PANOSE;
+typedef struct tagLOGFONTA {
+ LONG lfHeight;
+ LONG lfWidth;
+ LONG lfEscapement;
+ LONG lfOrientation;
+ LONG lfWeight;
+ BYTE lfItalic;
+ BYTE lfUnderline;
+ BYTE lfStrikeOut;
+ BYTE lfCharSet;
+ BYTE lfOutPrecision;
+ BYTE lfClipPrecision;
+ BYTE lfQuality;
+ BYTE lfPitchAndFamily;
+ CHAR lfFaceName[LF_FACESIZE];
+} LOGFONTA,*PLOGFONTA,*LPLOGFONTA;
+typedef struct tagLOGFONTW {
+ LONG lfHeight;
+ LONG lfWidth;
+ LONG lfEscapement;
+ LONG lfOrientation;
+ LONG lfWeight;
+ BYTE lfItalic;
+ BYTE lfUnderline;
+ BYTE lfStrikeOut;
+ BYTE lfCharSet;
+ BYTE lfOutPrecision;
+ BYTE lfClipPrecision;
+ BYTE lfQuality;
+ BYTE lfPitchAndFamily;
+ WCHAR lfFaceName[LF_FACESIZE];
+} LOGFONTW,*PLOGFONTW,*LPLOGFONTW;
+typedef struct tagEXTLOGFONTA {
+ LOGFONTA elfLogFont;
+ BYTE elfFullName[LF_FULLFACESIZE];
+ BYTE elfStyle[LF_FACESIZE];
+ DWORD elfVersion;
+ DWORD elfStyleSize;
+ DWORD elfMatch;
+ DWORD elfReserved;
+ BYTE elfVendorId[ELF_VENDOR_SIZE];
+ DWORD elfCulture;
+ PANOSE elfPanose;
+} EXTLOGFONTA,*PEXTLOGFONTA,*LPEXTLOGFONTA;
+typedef struct tagEXTLOGFONTW {
+ LOGFONTW elfLogFont;
+ WCHAR elfFullName[LF_FULLFACESIZE];
+ WCHAR elfStyle[LF_FACESIZE];
+ DWORD elfVersion;
+ DWORD elfStyleSize;
+ DWORD elfMatch;
+ DWORD elfReserved;
+ BYTE elfVendorId[ELF_VENDOR_SIZE];
+ DWORD elfCulture;
+ PANOSE elfPanose;
+} EXTLOGFONTW,*PEXTLOGFONTW,*LPEXTLOGFONTW;
+typedef struct tagEMREXTCREATEFONTINDIRECTW {
+ EMR emr;
+ DWORD ihFont;
+ EXTLOGFONTW elfw;
+} EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW;
+typedef struct tagEXTLOGPEN {
+ UINT elpPenStyle;
+ UINT elpWidth;
+ UINT elpBrushStyle;
+ COLORREF elpColor;
+ LONG elpHatch;
+ DWORD elpNumEntries;
+ DWORD elpStyleEntry[1];
+} EXTLOGPEN,*PEXTLOGPEN,*LPEXTLOGPEN;
+typedef struct tagEMREXTCREATEPEN {
+ EMR emr;
+ DWORD ihPen;
+ DWORD offBmi;
+ DWORD cbBmi;
+ DWORD offBits;
+ DWORD cbBits;
+ EXTLOGPEN elp;
+} EMREXTCREATEPEN,*PEMREXTCREATEPEN;
+typedef struct tagEMREXTFLOODFILL {
+ EMR emr;
+ POINTL ptlStart;
+ COLORREF crColor;
+ DWORD iMode;
+} EMREXTFLOODFILL,*PEMREXTFLOODFILL;
+typedef struct tagEMREXTSELECTCLIPRGN {
+ EMR emr;
+ DWORD cbRgnData;
+ DWORD iMode;
+ BYTE RgnData[1];
+} EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN;
+typedef struct tagEMRTEXT {
+ POINTL ptlReference;
+ DWORD nChars;
+ DWORD offString;
+ DWORD fOptions;
+ RECTL rcl;
+ DWORD offDx;
+} EMRTEXT,*PEMRTEXT;
+typedef struct tagEMREXTTEXTOUTA {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD iGraphicsMode;
+ FLOAT exScale;
+ FLOAT eyScale;
+ EMRTEXT emrtext;
+} EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW;
+typedef struct tagEMRFILLPATH {
+ EMR emr;
+ RECTL rclBounds;
+} EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH;
+typedef struct tagEMRFILLRGN {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD cbRgnData;
+ DWORD ihBrush;
+ BYTE RgnData[1];
+} EMRFILLRGN,*PEMRFILLRGN;
+typedef struct tagEMRFORMAT {
+ DWORD dSignature;
+ DWORD nVersion;
+ DWORD cbData;
+ DWORD offData;
+} EMRFORMAT;
+typedef struct tagEMRFRAMERGN {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD cbRgnData;
+ DWORD ihBrush;
+ SIZEL szlStroke;
+ BYTE RgnData[1];
+} EMRFRAMERGN,*PEMRFRAMERGN;
+typedef struct tagEMRGDICOMMENT {
+ EMR emr;
+ DWORD cbData;
+ BYTE Data[1];
+} EMRGDICOMMENT,*PEMRGDICOMMENT;
+typedef struct tagEMRINVERTRGN {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD cbRgnData;
+ BYTE RgnData[1];
+} EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN;
+typedef struct tagEMRLINETO {
+ EMR emr;
+ POINTL ptl;
+} EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX;
+typedef struct tagEMRMASKBLT {
+ EMR emr;
+ RECTL rclBounds;
+ LONG xDest;
+ LONG yDest;
+ LONG cxDest;
+ LONG cyDest;
+ DWORD dwRop;
+ LONG xSrc;
+ LONG ySrc;
+ XFORM xformSrc;
+ COLORREF crBkColorSrc;
+ DWORD iUsageSrc;
+ DWORD offBmiSrc;
+ DWORD cbBmiSrc;
+ DWORD offBitsSrc;
+ DWORD cbBitsSrc;
+ LONG xMask;
+ LONG yMask;
+ DWORD iUsageMask;
+ DWORD offBmiMask;
+ DWORD cbBmiMask;
+ DWORD offBitsMask;
+ DWORD cbBitsMask;
+} EMRMASKBLT,*PEMRMASKBLT;
+typedef struct tagEMRMODIFYWORLDTRANSFORM {
+ EMR emr;
+ XFORM xform;
+ DWORD iMode;
+} EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM;
+typedef struct tagEMROFFSETCLIPRGN {
+ EMR emr;
+ POINTL ptlOffset;
+} EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN;
+typedef struct tagEMRPLGBLT {
+ EMR emr;
+ RECTL rclBounds;
+ POINTL aptlDest[3];
+ LONG xSrc;
+ LONG ySrc;
+ LONG cxSrc;
+ LONG cySrc;
+ XFORM xformSrc;
+ COLORREF crBkColorSrc;
+ DWORD iUsageSrc;
+ DWORD offBmiSrc;
+ DWORD cbBmiSrc;
+ DWORD offBitsSrc;
+ DWORD cbBitsSrc;
+ LONG xMask;
+ LONG yMask;
+ DWORD iUsageMask;
+ DWORD offBmiMask;
+ DWORD cbBmiMask;
+ DWORD offBitsMask;
+ DWORD cbBitsMask;
+} EMRPLGBLT,*PEMRPLGBLT;
+typedef struct tagEMRPOLYDRAW {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD cptl;
+ POINTL aptl[1];
+ BYTE abTypes[1];
+} EMRPOLYDRAW,*PEMRPOLYDRAW;
+typedef struct tagEMRPOLYDRAW16 {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD cpts;
+ POINTS apts[1];
+ BYTE abTypes[1];
+} EMRPOLYDRAW16,*PEMRPOLYDRAW16;
+typedef struct tagEMRPOLYLINE {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD cptl;
+ POINTL aptl[1];
+} EMRPOLYLINE,*PEMRPOLYLINE,EMRPOLYBEZIER,*PEMRPOLYBEZIER,EMRPOLYGON,*PEMRPOLYGON,EMRPOLYBEZIERTO,*PEMRPOLYBEZIERTO,EMRPOLYLINETO,*PEMRPOLYLINETO;
+typedef struct tagEMRPOLYLINE16 {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD cpts;
+ POINTL apts[1];
+} EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16;
+typedef struct tagEMRPOLYPOLYLINE {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD nPolys;
+ DWORD cptl;
+ DWORD aPolyCounts[1];
+ POINTL aptl[1];
+} EMRPOLYPOLYLINE,*PEMRPOLYPOLYLINE,EMRPOLYPOLYGON,*PEMRPOLYPOLYGON;
+typedef struct tagEMRPOLYPOLYLINE16 {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD nPolys;
+ DWORD cpts;
+ DWORD aPolyCounts[1];
+ POINTS apts[1];
+} EMRPOLYPOLYLINE16,*PEMRPOLYPOLYLINE16,EMRPOLYPOLYGON16,*PEMRPOLYPOLYGON16;
+typedef struct tagEMRPOLYTEXTOUTA {
+ EMR emr;
+ RECTL rclBounds;
+ DWORD iGraphicsMode;
+ FLOAT exScale;
+ FLOAT eyScale;
+ LONG cStrings;
+ EMRTEXT aemrtext[1];
+} EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW;
+typedef struct tagEMRRESIZEPALETTE {
+ EMR emr;
+ DWORD ihPal;
+ DWORD cEntries;
+} EMRRESIZEPALETTE,*PEMRRESIZEPALETTE;
+typedef struct tagEMRRESTOREDC {
+ EMR emr;
+ LONG iRelative;
+} EMRRESTOREDC,*PEMRRESTOREDC;
+typedef struct tagEMRROUNDRECT {
+ EMR emr;
+ RECTL rclBox;
+ SIZEL szlCorner;
+} EMRROUNDRECT,*PEMRROUNDRECT;
+typedef struct tagEMRSCALEVIEWPORTEXTEX {
+ EMR emr;
+ LONG xNum;
+ LONG xDenom;
+ LONG yNum;
+ LONG yDenom;
+} EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX;
+typedef struct tagEMRSELECTCOLORSPACE {
+ EMR emr;
+ DWORD ihCS;
+} EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE;
+typedef struct tagEMRSELECTOBJECT {
+ EMR emr;
+ DWORD ihObject;
+} EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT;
+typedef struct tagEMRSELECTPALETTE {
+ EMR emr;
+ DWORD ihPal;
+} EMRSELECTPALETTE,*PEMRSELECTPALETTE;
+typedef struct tagEMRSETARCDIRECTION {
+ EMR emr;
+ DWORD iArcDirection;
+} EMRSETARCDIRECTION,*PEMRSETARCDIRECTION;
+typedef struct tagEMRSETTEXTCOLOR {
+ EMR emr;
+ COLORREF crColor;
+} EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR;
+typedef struct tagEMRSETCOLORADJUSTMENT {
+ EMR emr;
+ COLORADJUSTMENT ColorAdjustment;
+} EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT;
+typedef struct tagEMRSETDIBITSTODEVICE {
+ EMR emr;
+ RECTL rclBounds;
+ LONG xDest;
+ LONG yDest;
+ LONG xSrc;
+ LONG ySrc;
+ LONG cxSrc;
+ LONG cySrc;
+ DWORD offBmiSrc;
+ DWORD cbBmiSrc;
+ DWORD offBitsSrc;
+ DWORD cbBitsSrc;
+ DWORD iUsageSrc;
+ DWORD iStartScan;
+ DWORD cScans;
+} EMRSETDIBITSTODEVICE,*PEMRSETDIBITSTODEVICE;
+typedef struct tagEMRSETMAPPERFLAGS {
+ EMR emr;
+ DWORD dwFlags;
+} EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS;
+typedef struct tagEMRSETMITERLIMIT {
+ EMR emr;
+ FLOAT eMiterLimit;
+} EMRSETMITERLIMIT,*PEMRSETMITERLIMIT;
+typedef struct tagEMRSETPALETTEENTRIES {
+ EMR emr;
+ DWORD ihPal;
+ DWORD iStart;
+ DWORD cEntries;
+ PALETTEENTRY aPalEntries[1];
+} EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES;
+typedef struct tagEMRSETPIXELV {
+ EMR emr;
+ POINTL ptlPixel;
+ COLORREF crColor;
+} EMRSETPIXELV,*PEMRSETPIXELV;
+typedef struct tagEMRSETVIEWPORTEXTEX {
+ EMR emr;
+ SIZEL szlExtent;
+} EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX;
+typedef struct tagEMRSETVIEWPORTORGEX {
+ EMR emr;
+ POINTL ptlOrigin;
+} EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX;
+typedef struct tagEMRSETWORLDTRANSFORM {
+ EMR emr;
+ XFORM xform;
+} EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM;
+typedef struct tagEMRSTRETCHBLT {
+ EMR emr;
+ RECTL rclBounds;
+ LONG xDest;
+ LONG yDest;
+ LONG cxDest;
+ LONG cyDest;
+ DWORD dwRop;
+ LONG xSrc;
+ LONG ySrc;
+ XFORM xformSrc;
+ COLORREF crBkColorSrc;
+ DWORD iUsageSrc;
+ DWORD offBmiSrc;
+ DWORD cbBmiSrc;
+ DWORD offBitsSrc;
+ DWORD cbBitsSrc;
+ LONG cxSrc;
+ LONG cySrc;
+} EMRSTRETCHBLT,*PEMRSTRETCHBLT;
+typedef struct tagEMRSTRETCHDIBITS {
+ EMR emr;
+ RECTL rclBounds;
+ LONG xDest;
+ LONG yDest;
+ LONG xSrc;
+ LONG ySrc;
+ LONG cxSrc;
+ LONG cySrc;
+ DWORD offBmiSrc;
+ DWORD cbBmiSrc;
+ DWORD offBitsSrc;
+ DWORD cbBitsSrc;
+ DWORD iUsageSrc;
+ DWORD dwRop;
+ LONG cxDest;
+ LONG cyDest;
+} EMRSTRETCHDIBITS,*PEMRSTRETCHDIBITS;
+typedef struct tagABORTPATH {
+ EMR emr;
+} EMRABORTPATH,*PEMRABORTPATH,EMRBEGINPATH,*PEMRBEGINPATH,EMRENDPATH,*PEMRENDPATH,EMRCLOSEFIGURE,*PEMRCLOSEFIGURE,EMRFLATTENPATH,*PEMRFLATTENPATH,EMRWIDENPATH,*PEMRWIDENPATH,EMRSETMETARGN,*PEMRSETMETARGN,EMRSAVEDC,*PEMRSAVEDC,EMRREALIZEPALETTE,*PEMRREALIZEPALETTE;
+typedef struct tagEMRSELECTCLIPPATH {
+ EMR emr;
+ DWORD iMode;
+} EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH,EMRSETBKMODE,*PEMRSETBKMODE,EMRSETMAPMODE,*PEMRSETMAPMODE,EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN,EMRENABLEICM,*PEMRENABLEICM;
+#pragma pack(push,2)
+typedef struct tagMETAHEADER {
+ WORD mtType;
+ WORD mtHeaderSize;
+ WORD mtVersion;
+ DWORD mtSize;
+ WORD mtNoObjects;
+ DWORD mtMaxRecord;
+ WORD mtNoParameters;
+} METAHEADER,*PMETAHEADER,*LPMETAHEADER;
+#pragma pack(pop)
+typedef struct tagENHMETAHEADER {
+ DWORD iType;
+ DWORD nSize;
+ RECTL rclBounds;
+ RECTL rclFrame;
+ DWORD dSignature;
+ DWORD nVersion;
+ DWORD nBytes;
+ DWORD nRecords;
+ WORD nHandles;
+ WORD sReserved;
+ DWORD nDescription;
+ DWORD offDescription;
+ DWORD nPalEntries;
+ SIZEL szlDevice;
+ SIZEL szlMillimeters;
+} ENHMETAHEADER,*LPENHMETAHEADER;
+typedef struct tagMETARECORD {
+ DWORD rdSize;
+ WORD rdFunction;
+ WORD rdParm[1];
+} METARECORD,*PMETARECORD,*LPMETARECORD;
+typedef struct tagENHMETARECORD {
+ DWORD iType;
+ DWORD nSize;
+ DWORD dParm[1];
+} ENHMETARECORD,*LPENHMETARECORD;
+typedef struct tagHANDLETABLE {
+ HGDIOBJ objectHandle[1];
+} HANDLETABLE,*LPHANDLETABLE;
+typedef struct tagTEXTMETRICA {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ BYTE tmFirstChar;
+ BYTE tmLastChar;
+ BYTE tmDefaultChar;
+ BYTE tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+} TEXTMETRICA,*PTEXTMETRICA,*LPTEXTMETRICA;
+typedef struct tagTEXTMETRICW {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+} TEXTMETRICW,*PTEXTMETRICW,*LPTEXTMETRICW;
+typedef struct _RGNDATAHEADER {
+ DWORD dwSize;
+ DWORD iType;
+ DWORD nCount;
+ DWORD nRgnSize;
+ RECT rcBound;
+} RGNDATAHEADER;
+typedef struct _RGNDATA {
+ RGNDATAHEADER rdh;
+ char Buffer[1];
+} RGNDATA,*LPRGNDATA;
+/* for GetRandomRgn */
+#define SYSRGN 4
+typedef struct tagGCP_RESULTSA {
+ DWORD lStructSize;
+ LPSTR lpOutString;
+ UINT *lpOrder;
+ INT *lpDx;
+ INT *lpCaretPos;
+ LPSTR lpClass;
+ UINT *lpGlyphs;
+ UINT nGlyphs;
+ UINT nMaxFit;
+} GCP_RESULTSA,*LPGCP_RESULTSA;
+typedef struct tagGCP_RESULTSW {
+ DWORD lStructSize;
+ LPWSTR lpOutString;
+ UINT *lpOrder;
+ INT *lpDx;
+ INT *lpCaretPos;
+ LPWSTR lpClass;
+ UINT *lpGlyphs;
+ UINT nGlyphs;
+ UINT nMaxFit;
+} GCP_RESULTSW,*LPGCP_RESULTSW;
+typedef struct _GLYPHMETRICS {
+ UINT gmBlackBoxX;
+ UINT gmBlackBoxY;
+ POINT gmptGlyphOrigin;
+ short gmCellIncX;
+ short gmCellIncY;
+} GLYPHMETRICS,*LPGLYPHMETRICS;
+typedef struct tagKERNINGPAIR {
+ WORD wFirst;
+ WORD wSecond;
+ int iKernAmount;
+} KERNINGPAIR,*LPKERNINGPAIR;
+typedef struct _FIXED {
+ WORD fract;
+ short value;
+} FIXED;
+typedef struct _MAT2 {
+ FIXED eM11;
+ FIXED eM12;
+ FIXED eM21;
+ FIXED eM22;
+} MAT2,*LPMAT2;
+typedef struct _OUTLINETEXTMETRICA {
+ UINT otmSize;
+ TEXTMETRICA otmTextMetrics;
+ BYTE otmFiller;
+ PANOSE otmPanoseNumber;
+ UINT otmfsSelection;
+ UINT otmfsType;
+ int otmsCharSlopeRise;
+ int otmsCharSlopeRun;
+ int otmItalicAngle;
+ UINT otmEMSquare;
+ int otmAscent;
+ int otmDescent;
+ UINT otmLineGap;
+ UINT otmsCapEmHeight;
+ UINT otmsXHeight;
+ RECT otmrcFontBox;
+ int otmMacAscent;
+ int otmMacDescent;
+ UINT otmMacLineGap;
+ UINT otmusMinimumPPEM;
+ POINT otmptSubscriptSize;
+ POINT otmptSubscriptOffset;
+ POINT otmptSuperscriptSize;
+ POINT otmptSuperscriptOffset;
+ UINT otmsStrikeoutSize;
+ int otmsStrikeoutPosition;
+ int otmsUnderscoreSize;
+ int otmsUnderscorePosition;
+ PSTR otmpFamilyName;
+ PSTR otmpFaceName;
+ PSTR otmpStyleName;
+ PSTR otmpFullName;
+} OUTLINETEXTMETRICA,*POUTLINETEXTMETRICA,*LPOUTLINETEXTMETRICA;
+typedef struct _OUTLINETEXTMETRICW {
+ UINT otmSize;
+ TEXTMETRICW otmTextMetrics;
+ BYTE otmFiller;
+ PANOSE otmPanoseNumber;
+ UINT otmfsSelection;
+ UINT otmfsType;
+ int otmsCharSlopeRise;
+ int otmsCharSlopeRun;
+ int otmItalicAngle;
+ UINT otmEMSquare;
+ int otmAscent;
+ int otmDescent;
+ UINT otmLineGap;
+ UINT otmsCapEmHeight;
+ UINT otmsXHeight;
+ RECT otmrcFontBox;
+ int otmMacAscent;
+ int otmMacDescent;
+ UINT otmMacLineGap;
+ UINT otmusMinimumPPEM;
+ POINT otmptSubscriptSize;
+ POINT otmptSubscriptOffset;
+ POINT otmptSuperscriptSize;
+ POINT otmptSuperscriptOffset;
+ UINT otmsStrikeoutSize;
+ int otmsStrikeoutPosition;
+ int otmsUnderscoreSize;
+ int otmsUnderscorePosition;
+ PSTR otmpFamilyName;
+ PSTR otmpFaceName;
+ PSTR otmpStyleName;
+ PSTR otmpFullName;
+} OUTLINETEXTMETRICW,*POUTLINETEXTMETRICW,*LPOUTLINETEXTMETRICW;
+typedef struct _RASTERIZER_STATUS {
+ short nSize;
+ short wFlags;
+ short nLanguageID;
+} RASTERIZER_STATUS,*LPRASTERIZER_STATUS;
+typedef struct _POLYTEXTA {
+ int x;
+ int y;
+ UINT n;
+ LPCSTR lpstr;
+ UINT uiFlags;
+ RECT rcl;
+ int *pdx;
+} POLYTEXTA;
+typedef struct _POLYTEXTW {
+ int x;
+ int y;
+ UINT n;
+ LPCWSTR lpstr;
+ UINT uiFlags;
+ RECT rcl;
+ int *pdx;
+} POLYTEXTW;
+typedef struct tagPIXELFORMATDESCRIPTOR {
+ WORD nSize;
+ WORD nVersion;
+ DWORD dwFlags;
+ BYTE iPixelType;
+ BYTE cColorBits;
+ BYTE cRedBits;
+ BYTE cRedShift;
+ BYTE cGreenBits;
+ BYTE cGreenShift;
+ BYTE cBlueBits;
+ BYTE cBlueShift;
+ BYTE cAlphaBits;
+ BYTE cAlphaShift;
+ BYTE cAccumBits;
+ BYTE cAccumRedBits;
+ BYTE cAccumGreenBits;
+ BYTE cAccumBlueBits;
+ BYTE cAccumAlphaBits;
+ BYTE cDepthBits;
+ BYTE cStencilBits;
+ BYTE cAuxBuffers;
+ BYTE iLayerType;
+ BYTE bReserved;
+ DWORD dwLayerMask;
+ DWORD dwVisibleMask;
+ DWORD dwDamageMask;
+} PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR;
+typedef struct tagMETAFILEPICT {
+ LONG mm;
+ LONG xExt;
+ LONG yExt;
+ HMETAFILE hMF;
+} METAFILEPICT,*LPMETAFILEPICT;
+typedef struct tagLOCALESIGNATURE {
+ DWORD lsUsb[4];
+ DWORD lsCsbDefault[2];
+ DWORD lsCsbSupported[2];
+} LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE;
+typedef LONG LCSTYPE;
+#pragma pack(push,4)
+typedef struct tagNEWTEXTMETRICA {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ BYTE tmFirstChar;
+ BYTE tmLastChar;
+ BYTE tmDefaultChar;
+ BYTE tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+ DWORD ntmFlags;
+ UINT ntmSizeEM;
+ UINT ntmCellHeight;
+ UINT ntmAvgWidth;
+} NEWTEXTMETRICA,*PNEWTEXTMETRICA,*LPNEWTEXTMETRICA;
+typedef struct tagNEWTEXTMETRICW {
+ LONG tmHeight;
+ LONG tmAscent;
+ LONG tmDescent;
+ LONG tmInternalLeading;
+ LONG tmExternalLeading;
+ LONG tmAveCharWidth;
+ LONG tmMaxCharWidth;
+ LONG tmWeight;
+ LONG tmOverhang;
+ LONG tmDigitizedAspectX;
+ LONG tmDigitizedAspectY;
+ WCHAR tmFirstChar;
+ WCHAR tmLastChar;
+ WCHAR tmDefaultChar;
+ WCHAR tmBreakChar;
+ BYTE tmItalic;
+ BYTE tmUnderlined;
+ BYTE tmStruckOut;
+ BYTE tmPitchAndFamily;
+ BYTE tmCharSet;
+ DWORD ntmFlags;
+ UINT ntmSizeEM;
+ UINT ntmCellHeight;
+ UINT ntmAvgWidth;
+} NEWTEXTMETRICW,*PNEWTEXTMETRICW,*LPNEWTEXTMETRICW;
+#pragma pack(pop)
+typedef struct tagNEWTEXTMETRICEXA {
+ NEWTEXTMETRICA ntmTm;
+ FONTSIGNATURE ntmFontSig;
+} NEWTEXTMETRICEXA;
+typedef struct tagNEWTEXTMETRICEXW {
+ NEWTEXTMETRICW ntmTm;
+ FONTSIGNATURE ntmFontSig;
+} NEWTEXTMETRICEXW;
+typedef struct tagPELARRAY {
+ LONG paXCount;
+ LONG paYCount;
+ LONG paXExt;
+ LONG paYExt;
+ BYTE paRGBs;
+} PELARRAY,*PPELARRAY,*LPPELARRAY;
+typedef struct tagENUMLOGFONTA {
+ LOGFONTA elfLogFont;
+ BYTE elfFullName[LF_FULLFACESIZE];
+ BYTE elfStyle[LF_FACESIZE];
+} ENUMLOGFONTA,*LPENUMLOGFONTA;
+typedef struct tagENUMLOGFONTW {
+ LOGFONTW elfLogFont;
+ WCHAR elfFullName[LF_FULLFACESIZE];
+ WCHAR elfStyle[LF_FACESIZE];
+} ENUMLOGFONTW,*LPENUMLOGFONTW;
+typedef struct tagENUMLOGFONTEXA {
+ LOGFONTA elfLogFont;
+ BYTE elfFullName[LF_FULLFACESIZE];
+ BYTE elfStyle[LF_FACESIZE];
+ BYTE elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
+typedef struct tagENUMLOGFONTEXW {
+ LOGFONTW elfLogFont;
+ WCHAR elfFullName[LF_FULLFACESIZE];
+ BYTE elfStyle[LF_FACESIZE];
+ BYTE elfScript[LF_FACESIZE];
+} ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
+typedef struct tagPOINTFX {
+ FIXED x;
+ FIXED y;
+} POINTFX,*LPPOINTFX;
+typedef struct tagTTPOLYCURVE {
+ WORD wType;
+ WORD cpfx;
+ POINTFX apfx[1];
+} TTPOLYCURVE,*LPTTPOLYCURVE;
+typedef struct tagTTPOLYGONHEADER {
+ DWORD cb;
+ DWORD dwType;
+ POINTFX pfxStart;
+} TTPOLYGONHEADER,*LPTTPOLYGONHEADER;
+typedef struct _POINTFLOAT {
+ FLOAT x;
+ FLOAT y;
+} POINTFLOAT,*PPOINTFLOAT;
+typedef struct _GLYPHMETRICSFLOAT {
+ FLOAT gmfBlackBoxX;
+ FLOAT gmfBlackBoxY;
+ POINTFLOAT gmfptGlyphOrigin;
+ FLOAT gmfCellIncX;
+ FLOAT gmfCellIncY;
+} GLYPHMETRICSFLOAT,*PGLYPHMETRICSFLOAT,*LPGLYPHMETRICSFLOAT;
+typedef struct tagLAYERPLANEDESCRIPTOR {
+ WORD nSize;
+ WORD nVersion;
+ DWORD dwFlags;
+ BYTE iPixelType;
+ BYTE cColorBits;
+ BYTE cRedBits;
+ BYTE cRedShift;
+ BYTE cGreenBits;
+ BYTE cGreenShift;
+ BYTE cBlueBits;
+ BYTE cBlueShift;
+ BYTE cAlphaBits;
+ BYTE cAlphaShift;
+ BYTE cAccumBits;
+ BYTE cAccumRedBits;
+ BYTE cAccumGreenBits;
+ BYTE cAccumBlueBits;
+ BYTE cAccumAlphaBits;
+ BYTE cDepthBits;
+ BYTE cStencilBits;
+ BYTE cAuxBuffers;
+ BYTE iLayerPlane;
+ BYTE bReserved;
+ COLORREF crTransparent;
+} LAYERPLANEDESCRIPTOR,*PLAYERPLANEDESCRIPTOR,*LPLAYERPLANEDESCRIPTOR;
+typedef struct _BLENDFUNCTION {
+ BYTE BlendOp;
+ BYTE BlendFlags;
+ BYTE SourceConstantAlpha;
+ BYTE AlphaFormat;
+} BLENDFUNCTION,*PBLENDFUNCTION,*LPBLENDFUNCTION;
+typedef BOOL (CALLBACK *ABORTPROC)(HDC,int);
+typedef int (CALLBACK *MFENUMPROC)(HDC,HANDLETABLE*,METARECORD*,int,LPARAM);
+typedef int (CALLBACK *ENHMFENUMPROC)(HDC,HANDLETABLE*,ENHMETARECORD*,int,LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCA)(const LOGFONTA*,const TEXTMETRICA*,DWORD,LPARAM);
+typedef int (CALLBACK *OLDFONTENUMPROCW)(const LOGFONTW*,const TEXTMETRICW*,DWORD,LPARAM);
+typedef OLDFONTENUMPROCA FONTENUMPROCA;
+typedef OLDFONTENUMPROCW FONTENUMPROCW;
+typedef int (CALLBACK *ICMENUMPROCA)(LPSTR,LPARAM);
+typedef int (CALLBACK *ICMENUMPROCW)(LPWSTR,LPARAM);
+typedef void (CALLBACK *GOBJENUMPROC)(LPVOID,LPARAM);
+typedef void (CALLBACK *LINEDDAPROC)(int,int,LPARAM);
+typedef UINT (CALLBACK *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA,LPSTR,UINT);
+typedef DWORD (CALLBACK *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODEA);
+
+
+#define RGB(r,g,b) ((DWORD)(((BYTE)(r)|((WORD)(g)<<8))|(((DWORD)(BYTE)(b))<<16)))
+#define MAKEPOINTS(l) (*((POINTS*)&(l)))
+#define MAKEROP4(f,b) (DWORD)((((b)<<8)&0xFF000000)|(f))
+#define PALETTEINDEX(i) ((0x01000000|(COLORREF)(WORD)(i)))
+#define PALETTERGB(r,g,b) (0x02000000|RGB(r,g,b))
+int WINAPI AbortDoc(HDC);
+BOOL WINAPI AbortPath(HDC);
+int WINAPI AddFontResourceA(LPCSTR);
+int WINAPI AddFontResourceW(LPCWSTR);
+BOOL WINAPI AngleArc(HDC,int,int,DWORD,FLOAT,FLOAT);
+BOOL WINAPI AnimatePalette(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+BOOL WINAPI Arc(HDC,int,int,int,int,int,int,int,int);
+BOOL WINAPI ArcTo(HDC,int,int,int,int,int,int,int,int);
+BOOL WINAPI BeginPath(HDC);
+BOOL WINAPI BitBlt(HDC,int,int,int,int,HDC,int,int,DWORD);
+BOOL WINAPI CancelDC(HDC);
+BOOL WINAPI CheckColorsInGamut(HDC,PVOID,PVOID,DWORD);
+BOOL WINAPI Chord(HDC,int,int,int,int,int,int,int,int);
+int WINAPI ChoosePixelFormat(HDC,CONST PIXELFORMATDESCRIPTOR*);
+HENHMETAFILE WINAPI CloseEnhMetaFile(HDC);
+BOOL WINAPI CloseFigure(HDC);
+HMETAFILE WINAPI CloseMetaFile(HDC);
+BOOL WINAPI ColorMatchToTarget(HDC,HDC,DWORD);
+int WINAPI CombineRgn(HRGN,HRGN,HRGN,int);
+BOOL WINAPI CombineTransform(LPXFORM,const XFORM*,const XFORM*);
+HENHMETAFILE WINAPI CopyEnhMetaFileA(HENHMETAFILE,LPCSTR);
+HENHMETAFILE WINAPI CopyEnhMetaFileW(HENHMETAFILE,LPCWSTR);
+HMETAFILE WINAPI CopyMetaFileA(HMETAFILE,LPCSTR);
+HMETAFILE WINAPI CopyMetaFileW(HMETAFILE,LPCWSTR);
+HBITMAP WINAPI CreateBitmap(int,int,UINT,UINT,PCVOID);
+HBITMAP WINAPI CreateBitmapIndirect(const BITMAP*);
+HBRUSH WINAPI CreateBrushIndirect(const LOGBRUSH*);
+HCOLORSPACE WINAPI CreateColorSpaceA(LPLOGCOLORSPACEA);
+HCOLORSPACE WINAPI CreateColorSpaceW(LPLOGCOLORSPACEW);
+HBITMAP WINAPI CreateCompatibleBitmap(HDC,int,int);
+HDC WINAPI CreateCompatibleDC(HDC);
+HDC WINAPI CreateDCA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+HDC WINAPI CreateDCW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
+HBITMAP WINAPI CreateDIBitmap(HDC,const BITMAPINFOHEADER*,DWORD,PCVOID,const BITMAPINFO*,UINT);
+HBRUSH WINAPI CreateDIBPatternBrush(HGLOBAL,UINT);
+HBRUSH WINAPI CreateDIBPatternBrushPt(PCVOID,UINT);
+HBITMAP WINAPI CreateDIBSection(HDC,const BITMAPINFO*,UINT,void**,HANDLE,DWORD);
+HBITMAP WINAPI CreateDiscardableBitmap(HDC,int,int);
+HRGN WINAPI CreateEllipticRgn(int,int,int,int);
+HRGN WINAPI CreateEllipticRgnIndirect(LPCRECT);
+HDC WINAPI CreateEnhMetaFileA(HDC,LPCSTR,LPCRECT,LPCSTR);
+HDC WINAPI CreateEnhMetaFileW(HDC,LPCWSTR,LPCRECT,LPCWSTR);
+HFONT WINAPI CreateFontA(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR);
+HFONT WINAPI CreateFontW(int,int,int,int,int,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR);
+HFONT WINAPI CreateFontIndirectA(const LOGFONTA*);
+HFONT WINAPI CreateFontIndirectW(const LOGFONTW*);
+HPALETTE WINAPI CreateHalftonePalette(HDC);
+HBRUSH WINAPI CreateHatchBrush(int,COLORREF);
+HDC WINAPI CreateICA(LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+HDC WINAPI CreateICW(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*);
+HDC WINAPI CreateMetaFileA(LPCSTR);
+HDC WINAPI CreateMetaFileW(LPCWSTR);
+HPALETTE WINAPI CreatePalette(const LOGPALETTE*);
+HBRUSH WINAPI CreatePatternBrush(HBITMAP);
+HPEN WINAPI CreatePen(int,int,COLORREF);
+HPEN WINAPI CreatePenIndirect(const LOGPEN*);
+HRGN WINAPI CreatePolygonRgn(const POINT*,int,int);
+HRGN WINAPI CreatePolyPolygonRgn(const POINT*,const INT*,int,int);
+HRGN WINAPI CreateRectRgn(int,int,int,int);
+HRGN WINAPI CreateRectRgnIndirect(LPCRECT);
+HRGN WINAPI CreateRoundRectRgn(int,int,int,int,int,int);
+BOOL WINAPI CreateScalableFontResourceA(DWORD,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI CreateScalableFontResourceW(DWORD,LPCWSTR,LPCWSTR,LPCWSTR);
+HBRUSH WINAPI CreateSolidBrush(COLORREF);
+BOOL WINAPI DeleteColorSpace(HCOLORSPACE);
+BOOL WINAPI DeleteDC(HDC);
+BOOL WINAPI DeleteEnhMetaFile(HENHMETAFILE);
+BOOL WINAPI DeleteMetaFile(HMETAFILE);
+BOOL WINAPI DeleteObject(HGDIOBJ);
+int WINAPI DescribePixelFormat(HDC,int,UINT,LPPIXELFORMATDESCRIPTOR);
+DWORD WINAPI DeviceCapabilitiesA(LPCSTR,LPCSTR,WORD,LPSTR,const DEVMODEA*);
+DWORD WINAPI DeviceCapabilitiesW(LPCWSTR,LPCWSTR,WORD,LPWSTR,const DEVMODEW*);
+BOOL WINAPI DPtoLP(HDC,LPPOINT,int);
+int WINAPI DrawEscape(HDC,int,int,LPCSTR);
+BOOL WINAPI Ellipse(HDC,int,int,int,int);
+int WINAPI EndDoc(HDC);
+int WINAPI EndPage(HDC);
+BOOL WINAPI EndPath(HDC);
+BOOL WINAPI EnumEnhMetaFile(HDC,HENHMETAFILE,ENHMFENUMPROC,PVOID,LPCRECT);
+int WINAPI EnumFontFamiliesA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
+int WINAPI EnumFontFamiliesW(HDC,LPCWSTR,FONTENUMPROCW,LPARAM);
+int WINAPI EnumFontFamiliesExA(HDC,PLOGFONTA,FONTENUMPROCA,LPARAM,DWORD);
+int WINAPI EnumFontFamiliesExW(HDC,PLOGFONTW,FONTENUMPROCW,LPARAM,DWORD);
+int WINAPI EnumFontsA(HDC,LPCSTR,FONTENUMPROCA,LPARAM);
+int WINAPI EnumFontsW(HDC,LPCWSTR,FONTENUMPROCA,LPARAM);
+int WINAPI EnumICMProfilesA(HDC,ICMENUMPROCA,LPARAM);
+int WINAPI EnumICMProfilesW(HDC,ICMENUMPROCW,LPARAM);
+BOOL WINAPI EnumMetaFile(HDC,HMETAFILE,MFENUMPROC,LPARAM);
+int WINAPI EnumObjects(HDC,int,GOBJENUMPROC,LPARAM);
+BOOL WINAPI EqualRgn(HRGN,HRGN);
+int WINAPI Escape(HDC,int,int,LPCSTR,PVOID);
+int WINAPI ExcludeClipRect(HDC,int,int,int,int);
+int WINAPI ExcludeUpdateRgn(HDC,HWND);
+HPEN WINAPI ExtCreatePen(DWORD,DWORD,const LOGBRUSH*,DWORD,const DWORD*);
+HRGN WINAPI ExtCreateRegion(const XFORM*,DWORD,const RGNDATA*);
+int WINAPI ExtEscape(HDC,int,int,LPCSTR,int,LPSTR);
+BOOL WINAPI ExtFloodFill(HDC,int,int,COLORREF,UINT);
+int WINAPI ExtSelectClipRgn(HDC,HRGN,int);
+BOOL WINAPI ExtTextOutA(HDC,int,int,UINT,LPCRECT,LPCSTR,UINT,const INT*);
+BOOL WINAPI ExtTextOutW(HDC,int,int,UINT,LPCRECT,LPCWSTR,UINT,const INT*);
+BOOL WINAPI FillPath(HDC);
+int WINAPI FillRect(HDC,LPCRECT,HBRUSH);
+int WINAPI FillRgn(HDC,HRGN,HBRUSH);
+BOOL WINAPI FixBrushOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI FlattenPath(HDC);
+BOOL WINAPI FloodFill(HDC,int,int,COLORREF);
+BOOL WINAPI GdiComment(HDC,UINT,const BYTE*);
+BOOL WINAPI GdiFlush(void);
+DWORD WINAPI GdiGetBatchLimit(void);
+DWORD WINAPI GdiSetBatchLimit(DWORD);
+#define GetCValue(cmyk) ((BYTE)(cmyk))
+#define GetMValue(cmyk) ((BYTE)((cmyk)>> 8))
+#define GetYValue(cmyk) ((BYTE)((cmyk)>>16))
+#define GetKValue(cmyk) ((BYTE)((cmyk)>>24))
+#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(c)|((WORD)((BYTE)(m))<<8))|(((DWORD)(BYTE)(y))<<16))|(((DWORD)(BYTE)(k))<<24)))
+#define GetRValue(c) ((BYTE)(c))
+#define GetGValue(c) ((BYTE)(((WORD)(c))>>8))
+#define GetBValue(c) ((BYTE)((c)>>16))
+int WINAPI GetArcDirection(HDC);
+BOOL WINAPI GetAspectRatioFilterEx(HDC,LPSIZE);
+LONG WINAPI GetBitmapBits(HBITMAP,LONG,PVOID);
+BOOL WINAPI GetBitmapDimensionEx(HBITMAP,LPSIZE);
+COLORREF WINAPI GetBkColor(HDC);
+int WINAPI GetBkMode(HDC);
+UINT WINAPI GetBoundsRect(HDC,LPRECT,UINT);
+BOOL WINAPI GetBrushOrgEx(HDC,LPPOINT);
+BOOL WINAPI GetCharABCWidthsA(HDC,UINT,UINT,LPABC);
+BOOL WINAPI GetCharABCWidthsW(HDC,UINT,UINT,LPABC);
+BOOL WINAPI GetCharABCWidthsFloatA(HDC,UINT,UINT,LPABCFLOAT);
+BOOL WINAPI GetCharABCWidthsFloatW(HDC,UINT,UINT,LPABCFLOAT);
+DWORD WINAPI GetCharacterPlacementA(HDC,LPCSTR,int,int,LPGCP_RESULTSA,DWORD);
+DWORD WINAPI GetCharacterPlacementW(HDC,LPCWSTR,int,int,LPGCP_RESULTSW,DWORD);
+BOOL WINAPI GetCharWidth32A(HDC,UINT,UINT,LPINT);
+BOOL WINAPI GetCharWidth32W(HDC,UINT,UINT,LPINT);
+BOOL WINAPI GetCharWidthA(HDC,UINT,UINT,LPINT);
+BOOL WINAPI GetCharWidthW(HDC,UINT,UINT,LPINT);
+BOOL WINAPI GetCharWidthFloatA(HDC,UINT,UINT,PFLOAT);
+BOOL WINAPI GetCharWidthFloatW(HDC,UINT,UINT,PFLOAT);
+int WINAPI GetClipBox(HDC,LPRECT);
+int WINAPI GetClipRgn(HDC,HRGN);
+BOOL WINAPI GetColorAdjustment(HDC,LPCOLORADJUSTMENT);
+HANDLE WINAPI GetColorSpace(HDC);
+HGDIOBJ WINAPI GetCurrentObject(HDC,UINT);
+BOOL WINAPI GetCurrentPositionEx(HDC,LPPOINT);
+HCURSOR WINAPI GetCursor(void);
+BOOL WINAPI GetDCOrgEx(HDC,LPPOINT);
+int WINAPI GetDeviceCaps(HDC,int);
+BOOL WINAPI GetDeviceGammaRamp(HDC,PVOID);
+UINT WINAPI GetDIBColorTable(HDC,UINT,UINT,RGBQUAD*);
+int WINAPI GetDIBits(HDC,HBITMAP,UINT,UINT,PVOID,LPBITMAPINFO,UINT);
+HENHMETAFILE WINAPI GetEnhMetaFileA(LPCSTR);
+HENHMETAFILE WINAPI GetEnhMetaFileW(LPCWSTR);
+UINT WINAPI GetEnhMetaFileDescriptionA(HENHMETAFILE,UINT,LPSTR);
+UINT WINAPI GetEnhMetaFileDescriptionW(HENHMETAFILE,UINT,LPWSTR);
+UINT WINAPI GetEnhMetaFileHeader(HENHMETAFILE,UINT,LPENHMETAHEADER);
+UINT WINAPI GetEnhMetaFilePaletteEntries(HENHMETAFILE,UINT,LPPALETTEENTRY);
+UINT WINAPI GetEnhMetaFilePixelFormat(HENHMETAFILE,DWORD,PIXELFORMATDESCRIPTOR*);
+DWORD WINAPI GetFontData(HDC,DWORD,DWORD,PVOID,DWORD);
+DWORD WINAPI GetFontLanguageInfo(HDC);
+DWORD WINAPI GetGlyphOutlineA(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
+DWORD WINAPI GetGlyphOutlineW(HDC,UINT,UINT,LPGLYPHMETRICS,DWORD,PVOID,const MAT2*);
+int WINAPI GetGraphicsMode(HDC);
+BOOL WINAPI GetICMProfileA(HDC,DWORD,LPSTR);
+BOOL WINAPI GetICMProfileW(HDC,DWORD,LPWSTR);
+DWORD WINAPI GetKerningPairsA(HDC,DWORD,LPKERNINGPAIR);
+DWORD WINAPI GetKerningPairsW(HDC,DWORD,LPKERNINGPAIR);
+BOOL WINAPI GetLogColorSpaceA(HCOLORSPACE,LPLOGCOLORSPACEA,DWORD);
+BOOL WINAPI GetLogColorSpaceW(HCOLORSPACE,LPLOGCOLORSPACEW,DWORD);
+int WINAPI GetMapMode(HDC);
+HMETAFILE WINAPI GetMetaFileA(LPCSTR);
+HMETAFILE WINAPI GetMetaFileW(LPCWSTR);
+UINT WINAPI GetMetaFileBitsEx(HMETAFILE,UINT,PVOID);
+int WINAPI GetMetaRgn(HDC,HRGN);
+BOOL WINAPI GetMiterLimit(HDC,PFLOAT);
+COLORREF WINAPI GetNearestColor(HDC,COLORREF);
+UINT WINAPI GetNearestPaletteIndex(HPALETTE,COLORREF);
+int WINAPI GetObjectA(HGDIOBJ,int,PVOID);
+int WINAPI GetObjectW(HGDIOBJ,int,PVOID);
+DWORD WINAPI GetObjectType(HGDIOBJ);
+UINT WINAPI GetOutlineTextMetricsA(HDC,UINT,LPOUTLINETEXTMETRICA);
+UINT WINAPI GetOutlineTextMetricsW(HDC,UINT,LPOUTLINETEXTMETRICW);
+UINT WINAPI GetPaletteEntries(HPALETTE,UINT,UINT,LPPALETTEENTRY);
+int WINAPI GetPath(HDC,LPPOINT,PBYTE,int);
+COLORREF WINAPI GetPixel(HDC,int,int);
+int WINAPI GetPixelFormat(HDC);
+int WINAPI GetPolyFillMode(HDC);
+BOOL WINAPI GetRasterizerCaps(LPRASTERIZER_STATUS,UINT);
+int WINAPI GetRandomRgn (HDC,HRGN,INT);
+DWORD WINAPI GetRegionData(HRGN,DWORD,LPRGNDATA);
+int WINAPI GetRgnBox(HRGN,LPRECT);
+int WINAPI GetROP2(HDC);
+HGDIOBJ WINAPI GetStockObject(int);
+int WINAPI GetStretchBltMode(HDC);
+UINT WINAPI GetSystemPaletteEntries(HDC,UINT,UINT,LPPALETTEENTRY);
+UINT WINAPI GetSystemPaletteUse(HDC);
+UINT WINAPI GetTextAlign(HDC);
+int WINAPI GetTextCharacterExtra(HDC);
+int WINAPI GetTextCharset(HDC);
+int WINAPI GetTextCharsetInfo(HDC,LPFONTSIGNATURE,DWORD);
+COLORREF WINAPI GetTextColor(HDC);
+BOOL WINAPI GetTextExtentExPointA(HDC,LPCSTR,int,int,LPINT,LPINT,LPSIZE);
+BOOL WINAPI GetTextExtentExPointW( HDC,LPCWSTR,int,int,LPINT,LPINT,LPSIZE );
+BOOL WINAPI GetTextExtentPointA(HDC,LPCSTR,int,LPSIZE);
+BOOL WINAPI GetTextExtentPointW(HDC,LPCWSTR,int,LPSIZE);
+BOOL WINAPI GetTextExtentPoint32A(HDC,LPCSTR,int,LPSIZE);
+BOOL WINAPI GetTextExtentPoint32W( HDC,LPCWSTR,int,LPSIZE);
+int WINAPI GetTextFaceA(HDC,int,LPSTR);
+int WINAPI GetTextFaceW(HDC,int,LPWSTR);
+BOOL WINAPI GetTextMetricsA(HDC,LPTEXTMETRICA);
+BOOL WINAPI GetTextMetricsW(HDC,LPTEXTMETRICW);
+BOOL WINAPI GetViewportExtEx(HDC,LPSIZE);
+BOOL WINAPI GetViewportOrgEx(HDC,LPPOINT);
+BOOL WINAPI GetWindowExtEx(HDC,LPSIZE);
+BOOL WINAPI GetWindowOrgEx(HDC,LPPOINT);
+UINT WINAPI GetWinMetaFileBits(HENHMETAFILE,UINT,LPBYTE,INT,HDC);
+BOOL WINAPI GetWorldTransform(HDC,LPXFORM);
+int WINAPI IntersectClipRect(HDC,int,int,int,int);
+BOOL WINAPI InvertRgn(HDC,HRGN);
+BOOL WINAPI LineDDA(int,int,int,int,LINEDDAPROC,LPARAM);
+BOOL WINAPI LineTo(HDC,int,int);
+BOOL WINAPI LPtoDP(HDC,LPPOINT,int);
+BOOL WINAPI MaskBlt(HDC,int,int,int,int,HDC,int,int,HBITMAP,int,int,DWORD);
+BOOL WINAPI ModifyWorldTransform(HDC,const XFORM*,DWORD);
+BOOL WINAPI MoveToEx(HDC,int,int,LPPOINT);
+int WINAPI OffsetClipRgn(HDC,int,int);
+int WINAPI OffsetRgn(HRGN,int,int);
+BOOL WINAPI OffsetViewportOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI OffsetWindowOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI PaintRgn(HDC,HRGN);
+BOOL WINAPI PatBlt(HDC,int,int,int,int,DWORD);
+HRGN WINAPI PathToRegion(HDC);
+BOOL WINAPI Pie(HDC,int,int,int,int,int,int,int,int);
+BOOL WINAPI PlayEnhMetaFile(HDC,HENHMETAFILE,LPCRECT);
+BOOL WINAPI PlayEnhMetaFileRecord(HDC,LPHANDLETABLE,const ENHMETARECORD*,UINT);
+BOOL WINAPI PlayMetaFile(HDC,HMETAFILE);
+BOOL WINAPI PlayMetaFileRecord(HDC,LPHANDLETABLE,LPMETARECORD,UINT);
+BOOL WINAPI PlgBlt(HDC,const POINT*,HDC,int,int,int,int,HBITMAP,int,int);
+BOOL WINAPI PolyBezier(HDC,const POINT*,DWORD);
+BOOL WINAPI PolyBezierTo(HDC,const POINT*,DWORD);
+BOOL WINAPI PolyDraw(HDC,const POINT*,const BYTE*,int);
+BOOL WINAPI Polygon(HDC,const POINT*,int);
+BOOL WINAPI Polyline(HDC,const POINT*,int);
+BOOL WINAPI PolylineTo(HDC,const POINT*,DWORD);
+BOOL WINAPI PolyPolygon(HDC,const POINT*,const INT*,int);
+BOOL WINAPI PolyPolyline(HDC,const POINT*,const DWORD*,DWORD);
+BOOL WINAPI PolyTextOutA(HDC,const POLYTEXTA*,int);
+BOOL WINAPI PolyTextOutW(HDC,const POLYTEXTW*,int);
+BOOL WINAPI PtInRegion(HRGN,int,int);
+BOOL WINAPI PtVisible(HDC,int,int);
+UINT WINAPI RealizePalette(HDC);
+BOOL WINAPI Rectangle(HDC,int,int,int,int);
+BOOL WINAPI RectInRegion(HRGN,LPCRECT);
+BOOL WINAPI RectVisible(HDC,LPCRECT);
+BOOL WINAPI RemoveFontResourceA(LPCSTR);
+BOOL WINAPI RemoveFontResourceW(LPCWSTR);
+HDC WINAPI ResetDCA(HDC,const DEVMODEA*);
+HDC WINAPI ResetDCW(HDC,const DEVMODEW*);
+BOOL WINAPI ResizePalette(HPALETTE,UINT);
+BOOL WINAPI RestoreDC(HDC,int);
+BOOL WINAPI RoundRect(HDC,int,int,int,int,int,int);
+int WINAPI SaveDC(HDC);
+BOOL WINAPI ScaleViewportExtEx(HDC,int,int,int,int,LPSIZE);
+BOOL WINAPI ScaleWindowExtEx(HDC,int,int,int,int,LPSIZE);
+BOOL WINAPI SelectClipPath(HDC,int);
+int WINAPI SelectClipRgn(HDC,HRGN);
+HGDIOBJ WINAPI SelectObject(HDC,HGDIOBJ);
+HPALETTE WINAPI SelectPalette(HDC,HPALETTE,BOOL);
+int WINAPI SetAbortProc(HDC,ABORTPROC);
+int WINAPI SetArcDirection(HDC,int);
+LONG WINAPI SetBitmapBits(HBITMAP,DWORD,PCVOID);
+BOOL WINAPI SetBitmapDimensionEx(HBITMAP,int,int,LPSIZE);
+COLORREF WINAPI SetBkColor(HDC,COLORREF);
+int WINAPI SetBkMode(HDC,int);
+UINT WINAPI SetBoundsRect(HDC,LPCRECT,UINT);
+BOOL WINAPI SetBrushOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI SetColorAdjustment(HDC,const COLORADJUSTMENT*);
+BOOL WINAPI SetColorSpace(HDC,HCOLORSPACE);
+BOOL WINAPI SetDeviceGammaRamp(HDC,PVOID);
+UINT WINAPI SetDIBColorTable(HDC,UINT,UINT,const RGBQUAD*);
+int WINAPI SetDIBits(HDC,HBITMAP,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
+int WINAPI SetDIBitsToDevice(HDC,int,int,DWORD,DWORD,int,int,UINT,UINT,PCVOID,const BITMAPINFO*,UINT);
+HENHMETAFILE WINAPI SetEnhMetaFileBits(UINT,const BYTE*);
+int WINAPI SetGraphicsMode(HDC,int);
+int WINAPI SetICMMode(HDC,int);
+BOOL WINAPI SetICMProfileA(HDC,LPSTR);
+BOOL WINAPI SetICMProfileW(HDC,LPWSTR);
+int WINAPI SetMapMode(HDC,int);
+DWORD WINAPI SetMapperFlags(HDC,DWORD);
+HMETAFILE WINAPI SetMetaFileBitsEx(UINT,const BYTE *);
+int WINAPI SetMetaRgn(HDC);
+BOOL WINAPI SetMiterLimit(HDC,FLOAT,PFLOAT);
+UINT WINAPI SetPaletteEntries(HPALETTE,UINT,UINT,const PALETTEENTRY*);
+COLORREF WINAPI SetPixel(HDC,int,int,COLORREF);
+BOOL WINAPI SetPixelFormat(HDC,int,const PIXELFORMATDESCRIPTOR*);
+BOOL WINAPI SetPixelV(HDC,int,int,COLORREF);
+int WINAPI SetPolyFillMode(HDC,int);
+BOOL WINAPI SetRectRgn(HRGN,int,int,int,int);
+int WINAPI SetROP2(HDC,int);
+int WINAPI SetStretchBltMode(HDC,int);
+UINT WINAPI SetSystemPaletteUse(HDC,UINT);
+UINT WINAPI SetTextAlign(HDC,UINT);
+int WINAPI SetTextCharacterExtra(HDC,int);
+COLORREF WINAPI SetTextColor(HDC,COLORREF);
+BOOL WINAPI SetTextJustification(HDC,int,int);
+BOOL WINAPI SetViewportExtEx(HDC,int,int,LPSIZE);
+BOOL WINAPI SetViewportOrgEx(HDC,int,int,LPPOINT);
+BOOL WINAPI SetWindowExtEx(HDC,int,int,LPSIZE);
+BOOL WINAPI SetWindowOrgEx(HDC,int,int,LPPOINT);
+HENHMETAFILE WINAPI SetWinMetaFileBits(UINT,const BYTE*,HDC,const METAFILEPICT*);
+BOOL WINAPI SetWorldTransform(HDC,const XFORM *);
+int WINAPI StartDocA(HDC,const DOCINFOA*);
+int WINAPI StartDocW(HDC,const DOCINFOW*);
+int WINAPI StartPage(HDC);
+BOOL WINAPI StretchBlt(HDC,int,int,int,int,HDC,int,int,int,int,DWORD);
+int WINAPI StretchDIBits(HDC,int,int,int,int,int,int,int,int,const VOID *,const BITMAPINFO *,UINT,DWORD);
+BOOL WINAPI StrokeAndFillPath(HDC);
+BOOL WINAPI StrokePath(HDC);
+BOOL WINAPI SwapBuffers(HDC);
+BOOL WINAPI TextOutA(HDC,int,int,LPCSTR,int);
+BOOL WINAPI TextOutW(HDC,int,int,LPCWSTR,int);
+BOOL WINAPI TranslateCharsetInfo(PDWORD,LPCHARSETINFO,DWORD);
+BOOL WINAPI UnrealizeObject(HGDIOBJ);
+BOOL WINAPI UpdateColors(HDC);
+BOOL WINAPI UpdateICMRegKeyA(DWORD,DWORD,LPSTR,UINT);
+BOOL WINAPI UpdateICMRegKeyW(DWORD,DWORD,LPWSTR,UINT);
+BOOL WINAPI WidenPath(HDC);
+BOOL WINAPI wglCopyContext(HGLRC,HGLRC,UINT);
+HGLRC WINAPI wglCreateContext(HDC);
+HGLRC WINAPI wglCreateLayerContext(HDC,int);
+BOOL WINAPI wglDeleteContext(HGLRC);
+BOOL WINAPI wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR);
+HGLRC WINAPI wglGetCurrentContext(void);
+HDC WINAPI wglGetCurrentDC(void);
+int WINAPI wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF*);
+PROC WINAPI wglGetProcAddress(LPCSTR);
+BOOL WINAPI wglMakeCurrent(HDC,HGLRC);
+BOOL WINAPI wglRealizeLayerPalette(HDC,int,BOOL);
+int WINAPI wglSetLayerPaletteEntries(HDC,int,int,int,const COLORREF*);
+BOOL WINAPI wglShareLists(HGLRC,HGLRC);
+BOOL WINAPI wglSwapLayerBuffers(HDC,UINT);
+BOOL WINAPI wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
+BOOL WINAPI wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
+BOOL WINAPI wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
+BOOL WINAPI wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
+
+#ifdef UNICODE
+typedef WCHAR BCHAR;
+typedef DOCINFOW DOCINFO, *LPDOCINFO;
+typedef LOGFONTW LOGFONT,*PLOGFONT,*LPLOGFONT;
+typedef TEXTMETRICW TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;
+#define ICMENUMPROC ICMENUMPROCW
+#define FONTENUMPROC FONTENUMPROCW
+typedef DEVMODEW DEVMODE,*PDEVMODE,*LPDEVMODE;
+typedef EXTLOGFONTW EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
+typedef GCP_RESULTSW GCP_RESULTS,*LPGCP_RESULTS;
+typedef OUTLINETEXTMETRICW OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
+typedef POLYTEXTW POLYTEXT;
+typedef LOGCOLORSPACEW LOGCOLORSPACE,*LPLOGCOLORSPACE;
+typedef NEWTEXTMETRICW NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC;
+typedef NEWTEXTMETRICEXW NEWTEXTMETRICEX;
+typedef ENUMLOGFONTW ENUMLOGFONT,*LPENUMLOGFONT;
+typedef ENUMLOGFONTEXW ENUMLOGFONTEX,*LPENUMLOGFONTEX;
+#define AddFontResource AddFontResourceW
+#define CopyEnhMetaFile CopyEnhMetaFileW
+#define CopyMetaFile CopyMetaFileW
+#define CreateDC CreateDCW
+#define CreateEnhMetaFile CreateEnhMetaFileW
+#define CreateFont CreateFontW
+#define CreateFontIndirect CreateFontIndirectW
+#define CreateIC CreateICW
+#define CreateMetaFile CreateMetaFileW
+#define CreateScalableFontResource CreateScalableFontResourceW
+#define DeviceCapabilities DeviceCapabilitiesW
+#define EnumFontFamilies EnumFontFamiliesW
+#define EnumFontFamiliesEx EnumFontFamiliesExW
+#define EnumFonts EnumFontsW
+#define EnumICMProfiles EnumICMProfilesW
+#define ExtTextOut ExtTextOutW
+#define GetCharABCWidthsFloat GetCharABCWidthsFloatW
+#define GetCharABCWidths GetCharABCWidthsW
+#define GetCharacterPlacement GetCharacterPlacementW
+#define GetCharWidth32 GetCharWidth32W
+#define GetCharWidthFloat GetCharWidthFloatW
+#define GetCharWidth GetCharWidthW
+#define GetEnhMetaFile GetEnhMetaFileW
+#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionW
+#define GetGlyphOutline GetGlyphOutlineW
+#define GetICMProfile GetICMProfileW
+#define GetKerningPairs GetKerningPairsW
+#define GetLogColorSpace GetLogColorSpaceW
+#define GetMetaFile GetMetaFileW
+#define GetObject GetObjectW
+#define GetOutlineTextMetrics GetOutlineTextMetricsW
+#define GetTextExtentPoint GetTextExtentPointW
+#define GetTextExtentExPoint GetTextExtentExPointW
+#define GetTextExtentPoint32 GetTextExtentPoint32W
+#define GetTextFace GetTextFaceW
+#define GetTextMetrics GetTextMetricsW
+#define PolyTextOut PolyTextOutW
+#define RemoveFontResource RemoveFontResourceW
+#define ResetDC ResetDCW
+#define SetICMProfile SetICMProfileW
+#define StartDoc StartDocW
+#define TextOut TextOutW
+#define UpdateICMRegKey UpdateICMRegKeyW
+#define wglUseFontBitmaps wglUseFontBitmapsW
+#define wglUseFontOutlines wglUseFontOutlinesW
+#else
+typedef BYTE BCHAR;
+typedef DOCINFOA DOCINFO, *LPDOCINFO;
+typedef LOGFONTA LOGFONT,*PLOGFONT,*LPLOGFONT;
+typedef TEXTMETRICA TEXTMETRIC,*PTEXTMETRIC,*LPTEXTMETRIC;
+#define ICMENUMPROC ICMENUMPROCA
+#define FONTENUMPROC FONTENUMPROCA
+typedef DEVMODEA DEVMODE,*PDEVMODE,*LPDEVMODE;
+typedef EXTLOGFONTA EXTLOGFONT,*PEXTLOGFONT,*LPEXTLOGFONT;
+typedef GCP_RESULTSA GCP_RESULTS,*LPGCP_RESULTS;
+typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC,*POUTLINETEXTMETRIC,*LPOUTLINETEXTMETRIC;
+typedef POLYTEXTA POLYTEXT;
+typedef LOGCOLORSPACEA LOGCOLORSPACE,*LPLOGCOLORSPACE;
+typedef NEWTEXTMETRICA NEWTEXTMETRIC,*PNEWTEXTMETRIC,*LPNEWTEXTMETRIC;
+typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX;
+typedef ENUMLOGFONTA ENUMLOGFONT,*LPENUMLOGFONT;
+typedef ENUMLOGFONTEXA ENUMLOGFONTEX,*LPENUMLOGFONTEX;
+#define AddFontResource AddFontResourceA
+#define CopyEnhMetaFile CopyEnhMetaFileA
+#define CopyMetaFile CopyMetaFileA
+#define CreateDC CreateDCA
+#define CreateEnhMetaFile CreateEnhMetaFileA
+#define CreateFont CreateFontA
+#define CreateFontIndirect CreateFontIndirectA
+#define CreateIC CreateICA
+#define CreateMetaFile CreateMetaFileA
+#define CreateScalableFontResource CreateScalableFontResourceA
+#define DeviceCapabilities DeviceCapabilitiesA
+#define EnumFontFamilies EnumFontFamiliesA
+#define EnumFontFamiliesEx EnumFontFamiliesExA
+#define EnumFonts EnumFontsA
+#define EnumICMProfiles EnumICMProfilesA
+#define ExtTextOut ExtTextOutA
+#define GetCharWidthFloat GetCharWidthFloatA
+#define GetCharWidth GetCharWidthA
+#define GetCharacterPlacement GetCharacterPlacementA
+#define GetCharABCWidths GetCharABCWidthsA
+#define GetCharABCWidthsFloat GetCharABCWidthsFloatA
+#define GetCharWidth32 GetCharWidth32A
+#define GetEnhMetaFile GetEnhMetaFileA
+#define GetEnhMetaFileDescription GetEnhMetaFileDescriptionA
+#define GetGlyphOutline GetGlyphOutlineA
+#define GetICMProfile GetICMProfileA
+#define GetKerningPairs GetKerningPairsA
+#define GetLogColorSpace GetLogColorSpaceA
+#define GetMetaFile GetMetaFileA
+#define GetObject GetObjectA
+#define GetOutlineTextMetrics GetOutlineTextMetricsA
+#define GetTextExtentPoint GetTextExtentPointA
+#define GetTextExtentExPoint GetTextExtentExPointA
+#define GetTextExtentPoint32 GetTextExtentPoint32A
+#define GetTextFace GetTextFaceA
+#define GetTextMetrics GetTextMetricsA
+#define PolyTextOut PolyTextOutA
+#define RemoveFontResource RemoveFontResourceA
+#define ResetDC ResetDCA
+#define SetICMProfile SetICMProfileA
+#define StartDoc StartDocA
+#define TextOut TextOutA
+#define UpdateICMRegKey UpdateICMRegKeyA
+#define wglUseFontBitmaps wglUseFontBitmapsA
+#define wglUseFontOutlines wglUseFontOutlinesA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/win32/include/winapi/winnetwk.h b/win32/include/winapi/winnetwk.h
new file mode 100644
index 0000000..fd25ba3
--- /dev/null
+++ b/win32/include/winapi/winnetwk.h
@@ -0,0 +1,346 @@
+#ifndef _WINNETWK_H
+#define _WINNETWK_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WNNC_NET_MSNET 0x00010000
+#define WNNC_NET_LANMAN 0x00020000
+#define WNNC_NET_NETWARE 0x00030000
+#define WNNC_NET_VINES 0x00040000
+#define WNNC_NET_10NET 0x00050000
+#define WNNC_NET_LOCUS 0x00060000
+#define WNNC_NET_SUN_PC_NFS 0x00070000
+#define WNNC_NET_LANSTEP 0x00080000
+#define WNNC_NET_9TILES 0x00090000
+#define WNNC_NET_LANTASTIC 0x000A0000
+#define WNNC_NET_AS400 0x000B0000
+#define WNNC_NET_FTP_NFS 0x000C0000
+#define WNNC_NET_PATHWORKS 0x000D0000
+#define WNNC_NET_LIFENET 0x000E0000
+#define WNNC_NET_POWERLAN 0x000F0000
+#define WNNC_NET_BWNFS 0x00100000
+#define WNNC_NET_COGENT 0x00110000
+#define WNNC_NET_FARALLON 0x00120000
+#define WNNC_NET_APPLETALK 0x00130000
+#define WNNC_NET_INTERGRAPH 0x00140000
+#define WNNC_NET_SYMFONET 0x00150000
+#define WNNC_NET_CLEARCASE 0x00160000
+#define WNNC_NET_FRONTIER 0x00170000
+#define WNNC_NET_BMC 0x00180000
+#define WNNC_NET_DCE 0x00190000
+#define WNNC_NET_AVID 0x001A0000
+#define WNNC_NET_DOCUSPACE 0x001B0000
+#define WNNC_NET_MANGOSOFT 0x001C0000
+#define WNNC_NET_SERNET 0x001D0000
+#define WNNC_NET_DECORB 0x00200000
+#define WNNC_NET_PROTSTOR 0x00210000
+#define WNNC_NET_FJ_REDIR 0x00220000
+#define WNNC_NET_DISTINCT 0x00230000
+#define WNNC_NET_TWINS 0x00240000
+#define WNNC_NET_RDR2SAMPLE 0x00250000
+#define WNNC_NET_CSC 0x00260000
+#define WNNC_NET_3IN1 0x00270000
+#define WNNC_NET_EXTENDNET 0x00290000
+#define WNNC_NET_OBJECT_DIRE 0x00300000
+#define WNNC_NET_MASFAX 0x00310000
+#define WNNC_NET_HOB_NFS 0x00320000
+#define WNNC_NET_SHIVA 0x00330000
+#define WNNC_NET_IBMAL 0x00340000
+#define WNNC_CRED_MANAGER 0xFFFF0000
+
+#define RESOURCE_CONNECTED 1
+#define RESOURCE_GLOBALNET 2
+#define RESOURCE_REMEMBERED 3
+#define RESOURCE_RECENT 4
+#define RESOURCE_CONTEXT 5
+#define RESOURCETYPE_ANY 0
+#define RESOURCETYPE_DISK 1
+#define RESOURCETYPE_PRINT 2
+#define RESOURCETYPE_RESERVED 8
+#define RESOURCETYPE_UNKNOWN 0xFFFFFFFF
+#define RESOURCEUSAGE_CONNECTABLE 0x00000001
+#define RESOURCEUSAGE_CONTAINER 0x00000002
+#define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004
+#define RESOURCEUSAGE_SIBLING 0x00000008
+#define RESOURCEUSAGE_ATTACHED 0x00000010
+#define RESOURCEUSAGE_ALL (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED)
+#define RESOURCEUSAGE_RESERVED 0x80000000
+#define RESOURCEDISPLAYTYPE_GENERIC 0
+#define RESOURCEDISPLAYTYPE_DOMAIN 1
+#define RESOURCEDISPLAYTYPE_SERVER 2
+#define RESOURCEDISPLAYTYPE_SHARE 3
+#define RESOURCEDISPLAYTYPE_FILE 4
+#define RESOURCEDISPLAYTYPE_GROUP 5
+#define RESOURCEDISPLAYTYPE_NETWORK 6
+#define RESOURCEDISPLAYTYPE_ROOT 7
+#define RESOURCEDISPLAYTYPE_SHAREADMIN 8
+#define RESOURCEDISPLAYTYPE_DIRECTORY 9
+#define RESOURCEDISPLAYTYPE_TREE 10
+#define NETPROPERTY_PERSISTENT 1
+#define CONNECT_UPDATE_PROFILE 1
+#define CONNECT_UPDATE_RECENT 2
+#define CONNECT_TEMPORARY 4
+#define CONNECT_INTERACTIVE 8
+#define CONNECT_PROMPT 16
+#define CONNECT_NEED_DRIVE 32
+#define CONNECT_REFCOUNT 64
+#define CONNECT_REDIRECT 128
+#define CONNECT_LOCALDRIVE 256
+#define CONNECT_CURRENT_MEDIA 512
+#define CONNDLG_RO_PATH 1
+#define CONNDLG_CONN_POINT 2
+#define CONNDLG_USE_MRU 4
+#define CONNDLG_HIDE_BOX 8
+#define CONNDLG_PERSIST 16
+#define CONNDLG_NOT_PERSIST 32
+#define DISC_UPDATE_PROFILE 1
+#define DISC_NO_FORCE 64
+#define WNFMT_MULTILINE 1
+#define WNFMT_ABBREVIATED 2
+#define WNFMT_INENUM 16
+#define WNFMT_CONNECTION 32
+#define WN_SUCCESS NO_ERROR
+#define WN_NO_ERROR NO_ERROR
+#define WN_NOT_SUPPORTED ERROR_NOT_SUPPORTED
+#define WN_CANCEL ERROR_CANCELLED
+#define WN_RETRY ERROR_RETRY
+#define WN_NET_ERROR ERROR_UNEXP_NET_ERR
+#define WN_MORE_DATA ERROR_MORE_DATA
+#define WN_BAD_POINTER ERROR_INVALID_ADDRESS
+#define WN_BAD_VALUE ERROR_INVALID_PARAMETER
+#define WN_BAD_USER ERROR_BAD_USERNAME
+#define WN_BAD_PASSWORD ERROR_INVALID_PASSWORD
+#define WN_ACCESS_DENIED ERROR_ACCESS_DENIED
+#define WN_FUNCTION_BUSY ERROR_BUSY
+#define WN_WINDOWS_ERROR ERROR_UNEXP_NET_ERR
+#define WN_OUT_OF_MEMORY ERROR_NOT_ENOUGH_MEMORY
+#define WN_NO_NETWORK ERROR_NO_NETWORK
+#define WN_EXTENDED_ERROR ERROR_EXTENDED_ERROR
+#define WN_BAD_LEVEL ERROR_INVALID_LEVEL
+#define WN_BAD_HANDLE ERROR_INVALID_HANDLE
+#define WN_NOT_INITIALIZING ERROR_ALREADY_INITIALIZED
+#define WN_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES
+#define WN_NOT_CONNECTED ERROR_NOT_CONNECTED
+#define WN_OPEN_FILES ERROR_OPEN_FILES
+#define WN_DEVICE_IN_USE ERROR_DEVICE_IN_USE
+#define WN_BAD_NETNAME ERROR_BAD_NET_NAME
+#define WN_BAD_LOCALNAME ERROR_BAD_DEVICE
+#define WN_ALREADY_CONNECTED ERROR_ALREADY_ASSIGNED
+#define WN_DEVICE_ERROR ERROR_GEN_FAILURE
+#define WN_CONNECTION_CLOSED ERROR_CONNECTION_UNAVAIL
+#define WN_NO_NET_OR_BAD_PATH ERROR_NO_NET_OR_BAD_PATH
+#define WN_BAD_PROVIDER ERROR_BAD_PROVIDER
+#define WN_CANNOT_OPEN_PROFILE ERROR_CANNOT_OPEN_PROFILE
+#define WN_BAD_PROFILE ERROR_BAD_PROFILE
+#define WN_BAD_DEV_TYPE ERROR_BAD_DEV_TYPE
+#define WN_DEVICE_ALREADY_REMEMBERED ERROR_DEVICE_ALREADY_REMEMBERED
+#define WN_NO_MORE_ENTRIES ERROR_NO_MORE_ITEMS
+#define WN_NOT_CONTAINER ERROR_NOT_CONTAINER
+#define WN_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED
+#define WN_NOT_LOGGED_ON ERROR_NOT_LOGGED_ON
+#define WN_NOT_VALIDATED ERROR_NO_LOGON_SERVERS
+#define UNIVERSAL_NAME_INFO_LEVEL 1
+#define REMOTE_NAME_INFO_LEVEL 2
+#define NETINFO_DLL16 1
+#define NETINFO_DISKRED 4
+#define NETINFO_PRINTERRED 8
+#define RP_LOGON 1
+#define RP_INIFILE 2
+#define PP_DISPLAYERRORS 1
+#define WNCON_FORNETCARD 1
+#define WNCON_NOTROUTED 2
+#define WNCON_SLOWLINK 4
+#define WNCON_DYNAMIC 8
+
+#ifndef RC_INVOKED
+typedef struct _NETRESOURCEA {
+ DWORD dwScope;
+ DWORD dwType;
+ DWORD dwDisplayType;
+ DWORD dwUsage;
+ LPSTR lpLocalName;
+ LPSTR lpRemoteName;
+ LPSTR lpComment ;
+ LPSTR lpProvider;
+}NETRESOURCEA,*LPNETRESOURCEA;
+typedef struct _NETRESOURCEW {
+ DWORD dwScope;
+ DWORD dwType;
+ DWORD dwDisplayType;
+ DWORD dwUsage;
+ LPWSTR lpLocalName;
+ LPWSTR lpRemoteName;
+ LPWSTR lpComment ;
+ LPWSTR lpProvider;
+}NETRESOURCEW,*LPNETRESOURCEW;
+typedef struct _CONNECTDLGSTRUCTA{
+ DWORD cbStructure;
+ HWND hwndOwner;
+ LPNETRESOURCEA lpConnRes;
+ DWORD dwFlags;
+ DWORD dwDevNum;
+} CONNECTDLGSTRUCTA,*LPCONNECTDLGSTRUCTA;
+typedef struct _CONNECTDLGSTRUCTW{
+ DWORD cbStructure;
+ HWND hwndOwner;
+ LPNETRESOURCEW lpConnRes;
+ DWORD dwFlags;
+ DWORD dwDevNum;
+} CONNECTDLGSTRUCTW,*LPCONNECTDLGSTRUCTW;
+typedef struct _DISCDLGSTRUCTA{
+ DWORD cbStructure;
+ HWND hwndOwner;
+ LPSTR lpLocalName;
+ LPSTR lpRemoteName;
+ DWORD dwFlags;
+} DISCDLGSTRUCTA,*LPDISCDLGSTRUCTA;
+typedef struct _DISCDLGSTRUCTW{
+ DWORD cbStructure;
+ HWND hwndOwner;
+ LPWSTR lpLocalName;
+ LPWSTR lpRemoteName;
+ DWORD dwFlags;
+} DISCDLGSTRUCTW,*LPDISCDLGSTRUCTW;
+typedef struct _UNIVERSAL_NAME_INFOA { LPSTR lpUniversalName; }UNIVERSAL_NAME_INFOA,*LPUNIVERSAL_NAME_INFOA;
+typedef struct _UNIVERSAL_NAME_INFOW { LPWSTR lpUniversalName; }UNIVERSAL_NAME_INFOW,*LPUNIVERSAL_NAME_INFOW;
+typedef struct _REMOTE_NAME_INFOA {
+ LPSTR lpUniversalName;
+ LPSTR lpConnectionName;
+ LPSTR lpRemainingPath;
+}REMOTE_NAME_INFOA,*LPREMOTE_NAME_INFOA;
+typedef struct _REMOTE_NAME_INFOW {
+ LPWSTR lpUniversalName;
+ LPWSTR lpConnectionName;
+ LPWSTR lpRemainingPath;
+}REMOTE_NAME_INFOW,*LPREMOTE_NAME_INFOW;
+typedef struct _NETINFOSTRUCT{
+ DWORD cbStructure;
+ DWORD dwProviderVersion;
+ DWORD dwStatus;
+ DWORD dwCharacteristics;
+ DWORD dwHandle;
+ WORD wNetType;
+ DWORD dwPrinters;
+ DWORD dwDrives;
+} NETINFOSTRUCT,*LPNETINFOSTRUCT;
+typedef UINT(PASCAL *PFNGETPROFILEPATHA)(LPCSTR,LPSTR,UINT);
+typedef UINT(PASCAL *PFNGETPROFILEPATHW)(LPCWSTR,LPWSTR,UINT);
+typedef UINT(PASCAL *PFNRECONCILEPROFILEA)(LPCSTR,LPCSTR,DWORD);
+typedef UINT(PASCAL *PFNRECONCILEPROFILEW)(LPCWSTR,LPCWSTR,DWORD);
+typedef BOOL(PASCAL *PFNPROCESSPOLICIESA)(HWND,LPCSTR,LPCSTR,LPCSTR,DWORD);
+typedef BOOL(PASCAL *PFNPROCESSPOLICIESW)(HWND,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+typedef struct _NETCONNECTINFOSTRUCT{
+ DWORD cbStructure;
+ DWORD dwFlags;
+ DWORD dwSpeed;
+ DWORD dwDelay;
+ DWORD dwOptDataSize;
+} NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT;
+
+DWORD APIENTRY WNetAddConnectionA(LPCSTR,LPCSTR,LPCSTR);
+DWORD APIENTRY WNetAddConnectionW(LPCWSTR,LPCWSTR,LPCWSTR);
+DWORD APIENTRY WNetAddConnection2A(LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
+DWORD APIENTRY WNetAddConnection2W(LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
+DWORD APIENTRY WNetAddConnection3A(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD);
+DWORD APIENTRY WNetAddConnection3W(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD);
+DWORD APIENTRY WNetCancelConnectionA(LPCSTR,BOOL);
+DWORD APIENTRY WNetCancelConnectionW(LPCWSTR,BOOL);
+DWORD APIENTRY WNetCancelConnection2A(LPCSTR,DWORD,BOOL);
+DWORD APIENTRY WNetCancelConnection2W(LPCWSTR,DWORD,BOOL);
+DWORD APIENTRY WNetGetConnectionA(LPCSTR,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetConnectionW(LPCWSTR,LPWSTR,PDWORD);
+DWORD APIENTRY WNetUseConnectionA(HWND,LPNETRESOURCEA,LPCSTR,LPCSTR,DWORD,LPSTR,PDWORD,PDWORD);
+DWORD APIENTRY WNetUseConnectionW(HWND,LPNETRESOURCEW,LPCWSTR,LPCWSTR,DWORD,LPWSTR,PDWORD,PDWORD);
+DWORD APIENTRY WNetSetConnectionA(LPCSTR,DWORD,PVOID);
+DWORD APIENTRY WNetSetConnectionW(LPCWSTR,DWORD,PVOID);
+DWORD APIENTRY WNetConnectionDialog(HWND,DWORD);
+DWORD APIENTRY WNetDisconnectDialog(HWND,DWORD);
+DWORD APIENTRY WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA);
+DWORD APIENTRY WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW);
+DWORD APIENTRY WNetDisconnectDialog1A(LPDISCDLGSTRUCTA);
+DWORD APIENTRY WNetDisconnectDialog1W(LPDISCDLGSTRUCTW);
+DWORD APIENTRY WNetOpenEnumA(DWORD,DWORD,DWORD,LPNETRESOURCEA,LPHANDLE);
+DWORD APIENTRY WNetOpenEnumW(DWORD,DWORD,DWORD,LPNETRESOURCEW,LPHANDLE);
+DWORD APIENTRY WNetEnumResourceA(HANDLE,PDWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetEnumResourceW(HANDLE,PDWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetCloseEnum(HANDLE);
+DWORD APIENTRY WNetGetUniversalNameA(LPCSTR,DWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetGetUniversalNameW(LPCWSTR,DWORD,PVOID,PDWORD);
+DWORD APIENTRY WNetGetUserA(LPCSTR,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetUserW(LPCWSTR,LPWSTR,PDWORD);
+DWORD APIENTRY WNetGetProviderNameA(DWORD,LPSTR,PDWORD);
+DWORD APIENTRY WNetGetProviderNameW(DWORD,LPWSTR,PDWORD);
+DWORD APIENTRY WNetGetNetworkInformationA(LPCSTR,LPNETINFOSTRUCT);
+DWORD APIENTRY WNetGetNetworkInformationW(LPCWSTR,LPNETINFOSTRUCT);
+DWORD APIENTRY WNetGetResourceInformationA(LPNETRESOURCEA,LPVOID,LPDWORD,LPCSTR*);
+DWORD APIENTRY WNetGetResourceInformationW(LPNETRESOURCEA,LPVOID,LPDWORD,LPCWSTR*);
+DWORD APIENTRY WNetGetLastErrorA(PDWORD,LPSTR,DWORD,LPSTR,DWORD);
+DWORD APIENTRY WNetGetLastErrorW(PDWORD,LPWSTR,DWORD,LPWSTR,DWORD);
+DWORD APIENTRY MultinetGetConnectionPerformanceA(LPNETRESOURCEA,LPNETCONNECTINFOSTRUCT);
+DWORD APIENTRY MultinetGetConnectionPerformanceW(LPNETRESOURCEW,LPNETCONNECTINFOSTRUCT);
+#ifdef UNICODE
+#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESW
+#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEW
+#define PFNGETPROFILEPATH PFNGETPROFILEPATHW
+typedef NETRESOURCEW NETRESOURCE,*LPNETRESOURCE;
+typedef CONNECTDLGSTRUCTW CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT;
+typedef DISCDLGSTRUCTW DISCDLGSTRUCT,*LPDISCDLGSTRUCT;
+typedef REMOTE_NAME_INFOW REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO;
+typedef UNIVERSAL_NAME_INFOW UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO;
+#define WNetEnumResource WNetEnumResourceW
+#define WNetOpenEnum WNetOpenEnumW
+#define WNetGetResourceInformation WNetGetResourceInformationW
+#define WNetGetUniversalName WNetGetUniversalNameW
+#define WNetSetConnection WNetSetConnectionW
+#define WNetUseConnection WNetUseConnectionW
+#define WNetGetConnection WNetGetConnectionW
+#define WNetCancelConnection2 WNetCancelConnection2W
+#define WNetCancelConnection WNetCancelConnectionW
+#define WNetAddConnection3 WNetAddConnection3W
+#define WNetAddConnection2 WNetAddConnection2W
+#define WNetAddConnection WNetAddConnectionW
+#define WNetConnectionDialog1 WNetConnectionDialog1W
+#define WNetDisconnectDialog1 WNetDisconnectDialog1W
+#define WNetGetNetworkInformation WNetGetNetworkInformationW
+#define WNetGetProviderName WNetGetProviderNameW
+#define WNetGetUser WNetGetUserW
+#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceW
+#define WNetGetLastError WNetGetLastErrorW
+#else
+#define PFNGETPROFILEPATH PFNGETPROFILEPATHA
+#define PFNRECONCILEPROFILE PFNRECONCILEPROFILEA
+#define PFNPROCESSPOLICIES PFNPROCESSPOLICIESA
+typedef NETRESOURCEA NETRESOURCE,*LPNETRESOURCE;
+typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT,*LPCONNECTDLGSTRUCT;
+typedef DISCDLGSTRUCTA DISCDLGSTRUCT,*LPDISCDLGSTRUCT;
+typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO,*LPUNIVERSAL_NAME_INFO;
+typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO,*LPREMOTE_NAME_INFO;
+#define WNetOpenEnum WNetOpenEnumA
+#define WNetEnumResource WNetEnumResourceA
+#define WNetGetResourceInformation WNetGetResourceInformationA
+#define WNetGetUniversalName WNetGetUniversalNameA
+#define WNetConnectionDialog1 WNetConnectionDialog1A
+#define WNetDisconnectDialog1 WNetDisconnectDialog1A
+#define WNetAddConnection2 WNetAddConnection2A
+#define WNetAddConnection3 WNetAddConnection3A
+#define WNetCancelConnection WNetCancelConnectionA
+#define WNetCancelConnection2 WNetCancelConnection2A
+#define WNetGetConnection WNetGetConnectionA
+#define WNetUseConnection WNetUseConnectionA
+#define WNetSetConnection WNetSetConnectionA
+#define WNetAddConnection WNetAddConnectionA
+#define WNetGetUser WNetGetUserA
+#define WNetGetProviderName WNetGetProviderNameA
+#define WNetGetNetworkInformation WNetGetNetworkInformationA
+#define WNetGetLastError WNetGetLastErrorA
+#define MultinetGetConnectionPerformance MultinetGetConnectionPerformanceA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/win32/include/winapi/winnls.h b/win32/include/winapi/winnls.h
new file mode 100644
index 0000000..e82fceb
--- /dev/null
+++ b/win32/include/winapi/winnls.h
@@ -0,0 +1,651 @@
+#ifndef _WINNLS_H
+#define _WINNLS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAX_LEADBYTES 12
+#define MAX_DEFAULTCHAR 2
+#define LOCALE_NOUSEROVERRIDE 0x80000000
+#define LOCALE_USE_CP_ACP 0x40000000
+#define LOCALE_ILANGUAGE 1
+#define LOCALE_SLANGUAGE 2
+#define LOCALE_SENGLANGUAGE 0x1001
+#define LOCALE_SABBREVLANGNAME 3
+#define LOCALE_SNATIVELANGNAME 4
+#define LOCALE_ICOUNTRY 5
+#define LOCALE_SCOUNTRY 6
+#define LOCALE_SENGCOUNTRY 0x1002
+#define LOCALE_SABBREVCTRYNAME 7
+#define LOCALE_SNATIVECTRYNAME 8
+#define LOCALE_IDEFAULTLANGUAGE 9
+#define LOCALE_IDEFAULTCOUNTRY 10
+#define LOCALE_IDEFAULTCODEPAGE 11
+#define LOCALE_IDEFAULTANSICODEPAGE 0x1004
+#define LOCALE_SLIST 12
+#define LOCALE_IMEASURE 13
+#define LOCALE_SDECIMAL 14
+#define LOCALE_STHOUSAND 15
+#define LOCALE_SGROUPING 16
+#define LOCALE_IDIGITS 17
+#define LOCALE_ILZERO 18
+#define LOCALE_INEGNUMBER 0x1010
+#define LOCALE_SNATIVEDIGITS 19
+#define LOCALE_SCURRENCY 20
+#define LOCALE_SINTLSYMBOL 21
+#define LOCALE_SMONDECIMALSEP 22
+#define LOCALE_SMONTHOUSANDSEP 23
+#define LOCALE_SMONGROUPING 24
+#define LOCALE_ICURRDIGITS 25
+#define LOCALE_IINTLCURRDIGITS 26
+#define LOCALE_ICURRENCY 27
+#define LOCALE_INEGCURR 28
+#define LOCALE_SDATE 29
+#define LOCALE_STIME 30
+#define LOCALE_SSHORTDATE 31
+#define LOCALE_SLONGDATE 32
+#define LOCALE_STIMEFORMAT 0x1003
+#define LOCALE_IDATE 33
+#define LOCALE_ILDATE 34
+#define LOCALE_ITIME 35
+#define LOCALE_ITIMEMARKPOSN 0x1005
+#define LOCALE_ICENTURY 36
+#define LOCALE_ITLZERO 37
+#define LOCALE_IDAYLZERO 38
+#define LOCALE_IMONLZERO 39
+#define LOCALE_S1159 40
+#define LOCALE_S2359 41
+#define LOCALE_ICALENDARTYPE 0x1009
+#define LOCALE_IOPTIONALCALENDAR 0x100B
+#define LOCALE_IFIRSTDAYOFWEEK 0x100C
+#define LOCALE_IFIRSTWEEKOFYEAR 0x100D
+#define LOCALE_SDAYNAME1 42
+#define LOCALE_SDAYNAME2 43
+#define LOCALE_SDAYNAME3 44
+#define LOCALE_SDAYNAME4 45
+#define LOCALE_SDAYNAME5 46
+#define LOCALE_SDAYNAME6 47
+#define LOCALE_SDAYNAME7 48
+#define LOCALE_SABBREVDAYNAME1 49
+#define LOCALE_SABBREVDAYNAME2 50
+#define LOCALE_SABBREVDAYNAME3 51
+#define LOCALE_SABBREVDAYNAME4 52
+#define LOCALE_SABBREVDAYNAME5 53
+#define LOCALE_SABBREVDAYNAME6 54
+#define LOCALE_SABBREVDAYNAME7 55
+#define LOCALE_SMONTHNAME1 56
+#define LOCALE_SMONTHNAME2 57
+#define LOCALE_SMONTHNAME3 58
+#define LOCALE_SMONTHNAME4 59
+#define LOCALE_SMONTHNAME5 60
+#define LOCALE_SMONTHNAME6 61
+#define LOCALE_SMONTHNAME7 62
+#define LOCALE_SMONTHNAME8 63
+#define LOCALE_SMONTHNAME9 64
+#define LOCALE_SMONTHNAME10 65
+#define LOCALE_SMONTHNAME11 66
+#define LOCALE_SMONTHNAME12 67
+#define LOCALE_SMONTHNAME13 0x100E
+#define LOCALE_SABBREVMONTHNAME1 68
+#define LOCALE_SABBREVMONTHNAME2 69
+#define LOCALE_SABBREVMONTHNAME3 70
+#define LOCALE_SABBREVMONTHNAME4 71
+#define LOCALE_SABBREVMONTHNAME5 72
+#define LOCALE_SABBREVMONTHNAME6 73
+#define LOCALE_SABBREVMONTHNAME7 74
+#define LOCALE_SABBREVMONTHNAME8 75
+#define LOCALE_SABBREVMONTHNAME9 76
+#define LOCALE_SABBREVMONTHNAME10 77
+#define LOCALE_SABBREVMONTHNAME11 78
+#define LOCALE_SABBREVMONTHNAME12 79
+#define LOCALE_SABBREVMONTHNAME13 0x100F
+#define LOCALE_SPOSITIVESIGN 80
+#define LOCALE_SNEGATIVESIGN 81
+#define LOCALE_IPOSSIGNPOSN 82
+#define LOCALE_INEGSIGNPOSN 83
+#define LOCALE_IPOSSYMPRECEDES 84
+#define LOCALE_IPOSSEPBYSPACE 85
+#define LOCALE_INEGSYMPRECEDES 86
+#define LOCALE_INEGSEPBYSPACE 87
+#define LOCALE_FONTSIGNATURE 88
+#define LOCALE_SISO639LANGNAME 89
+#define LOCALE_SISO3166CTRYNAME 90
+#define LOCALE_SYSTEM_DEFAULT 0x800
+#define LOCALE_USER_DEFAULT 0x400
+#define NORM_IGNORECASE 1
+#define NORM_IGNOREKANATYPE 65536
+#define NORM_IGNORENONSPACE 2
+#define NORM_IGNORESYMBOLS 4
+#define NORM_IGNOREWIDTH 131072
+#define SORT_STRINGSORT 4096
+#define LCMAP_LOWERCASE 0x00000100
+#define LCMAP_UPPERCASE 0x00000200
+#define LCMAP_SORTKEY 0x00000400
+#define LCMAP_BYTEREV 0x00000800
+#define LCMAP_HIRAGANA 0x00100000
+#define LCMAP_KATAKANA 0x00200000
+#define LCMAP_HALFWIDTH 0x00400000
+#define LCMAP_FULLWIDTH 0x00800000
+#define LCMAP_LINGUISTIC_CASING 0x01000000
+#define LCMAP_SIMPLIFIED_CHINESE 0x02000000
+#define LCMAP_TRADITIONAL_CHINESE 0x04000000
+#define ENUM_ALL_CALENDARS (-1)
+#define DATE_SHORTDATE 1
+#define DATE_LONGDATE 2
+#define DATE_USE_ALT_CALENDAR 4
+#define CP_INSTALLED 1
+#define CP_SUPPORTED 2
+#define LCID_INSTALLED 1
+#define LCID_SUPPORTED 2
+#define LCID_ALTERNATE_SORTS 4
+#define MAP_FOLDCZONE 16
+#define MAP_FOLDDIGITS 128
+#define MAP_PRECOMPOSED 32
+#define MAP_COMPOSITE 64
+#define CP_ACP 0
+#define CP_OEMCP 1
+#define CP_MACCP 2
+#define CP_THREAD_ACP 3
+#define CP_SYMBOL 42
+#define CP_UTF7 65000
+#define CP_UTF8 65001
+#define CT_CTYPE1 1
+#define CT_CTYPE2 2
+#define CT_CTYPE3 4
+#define C1_UPPER 1
+#define C1_LOWER 2
+#define C1_DIGIT 4
+#define C1_SPACE 8
+#define C1_PUNCT 16
+#define C1_CNTRL 32
+#define C1_BLANK 64
+#define C1_XDIGIT 128
+#define C1_ALPHA 256
+#define C2_LEFTTORIGHT 1
+#define C2_RIGHTTOLEFT 2
+#define C2_EUROPENUMBER 3
+#define C2_EUROPESEPARATOR 4
+#define C2_EUROPETERMINATOR 5
+#define C2_ARABICNUMBER 6
+#define C2_COMMONSEPARATOR 7
+#define C2_BLOCKSEPARATOR 8
+#define C2_SEGMENTSEPARATOR 9
+#define C2_WHITESPACE 10
+#define C2_OTHERNEUTRAL 11
+#define C2_NOTAPPLICABLE 0
+#define C3_NONSPACING 1
+#define C3_DIACRITIC 2
+#define C3_VOWELMARK 4
+#define C3_SYMBOL 8
+#define C3_KATAKANA 16
+#define C3_HIRAGANA 32
+#define C3_HALFWIDTH 64
+#define C3_FULLWIDTH 128
+#define C3_IDEOGRAPH 256
+#define C3_KASHIDA 512
+#define C3_LEXICAL 1024
+#define C3_ALPHA 32768
+#define C3_NOTAPPLICABLE 0
+#define TIME_NOMINUTESORSECONDS 1
+#define TIME_NOSECONDS 2
+#define TIME_NOTIMEMARKER 4
+#define TIME_FORCE24HOURFORMAT 8
+#define MB_PRECOMPOSED 1
+#define MB_COMPOSITE 2
+#define MB_ERR_INVALID_CHARS 8
+#define MB_USEGLYPHCHARS 4
+#define WC_COMPOSITECHECK 512
+#define WC_DISCARDNS 16
+#define WC_SEPCHARS 32
+#define WC_DEFAULTCHAR 64
+#define CTRY_DEFAULT 0
+#define CTRY_ALBANIA 355
+#define CTRY_ALGERIA 213
+#define CTRY_ARGENTINA 54
+#define CTRY_ARMENIA 374
+#define CTRY_AUSTRALIA 61
+#define CTRY_AUSTRIA 43
+#define CTRY_AZERBAIJAN 994
+#define CTRY_BAHRAIN 973
+#define CTRY_BELARUS 375
+#define CTRY_BELGIUM 32
+#define CTRY_BELIZE 501
+#define CTRY_BOLIVIA 591
+#define CTRY_BRAZIL 55
+#define CTRY_BRUNEI_DARUSSALAM 673
+#define CTRY_BULGARIA 359
+#define CTRY_CANADA 2
+#define CTRY_CARIBBEAN 1
+#define CTRY_CHILE 56
+#define CTRY_COLOMBIA 57
+#define CTRY_COSTA_RICA 506
+#define CTRY_CROATIA 385
+#define CTRY_CZECH 420
+#define CTRY_DENMARK 45
+#define CTRY_DOMINICAN_REPUBLIC 1
+#define CTRY_ECUADOR 593
+#define CTRY_EGYPT 20
+#define CTRY_EL_SALVADOR 503
+#define CTRY_ESTONIA 372
+#define CTRY_FAEROE_ISLANDS 298
+#define CTRY_FINLAND 358
+#define CTRY_FRANCE 33
+#define CTRY_GEORGIA 995
+#define CTRY_GERMANY 49
+#define CTRY_GREECE 30
+#define CTRY_GUATEMALA 502
+#define CTRY_HONDURAS 504
+#define CTRY_HONG_KONG 852
+#define CTRY_HUNGARY 36
+#define CTRY_ICELAND 354
+#define CTRY_INDIA 91
+#define CTRY_INDONESIA 62
+#define CTRY_IRAN 981
+#define CTRY_IRAQ 964
+#define CTRY_IRELAND 353
+#define CTRY_ISRAEL 972
+#define CTRY_ITALY 39
+#define CTRY_JAMAICA 1
+#define CTRY_JAPAN 81
+#define CTRY_JORDAN 962
+#define CTRY_KAZAKSTAN 7
+#define CTRY_KENYA 254
+#define CTRY_KUWAIT 965
+#define CTRY_LATVIA 371
+#define CTRY_LEBANON 961
+#define CTRY_LIBYA 218
+#define CTRY_LIECHTENSTEIN 41
+#define CTRY_LITHUANIA 370
+#define CTRY_LUXEMBOURG 352
+#define CTRY_MACAU 853
+#define CTRY_MACEDONIA 389
+#define CTRY_MALAYSIA 60
+#define CTRY_MEXICO 52
+#define CTRY_MONACO 33
+#define CTRY_MOROCCO 212
+#define CTRY_NETHERLANDS 31
+#define CTRY_NEW_ZEALAND 64
+#define CTRY_NICARAGUA 505
+#define CTRY_NORWAY 47
+#define CTRY_OMAN 968
+#define CTRY_PAKISTAN 92
+#define CTRY_PANAMA 507
+#define CTRY_PARAGUAY 595
+#define CTRY_PERU 51
+#define CTRY_PHILIPPINES 63
+#define CTRY_POLAND 48
+#define CTRY_PORTUGAL 351
+#define CTRY_PRCHINA 86
+#define CTRY_PUERTO_RICO 1
+#define CTRY_QATAR 974
+#define CTRY_ROMANIA 40
+#define CTRY_RUSSIA 7
+#define CTRY_SAUDI_ARABIA 966
+#define CTRY_SERBIA 381
+#define CTRY_SINGAPORE 65
+#define CTRY_SLOVAK 421
+#define CTRY_SLOVENIA 386
+#define CTRY_SOUTH_AFRICA 27
+#define CTRY_SOUTH_KOREA 82
+#define CTRY_SPAIN 34
+#define CTRY_SWEDEN 46
+#define CTRY_SWITZERLAND 41
+#define CTRY_SYRIA 963
+#define CTRY_TAIWAN 886
+#define CTRY_TATARSTAN 7
+#define CTRY_THAILAND 66
+#define CTRY_TRINIDAD_Y_TOBAGO 1
+#define CTRY_TUNISIA 216
+#define CTRY_TURKEY 90
+#define CTRY_UAE 971
+#define CTRY_UKRAINE 380
+#define CTRY_UNITED_KINGDOM 44
+#define CTRY_UNITED_STATES 1
+#define CTRY_URUGUAY 598
+#define CTRY_UZBEKISTAN 7
+#define CTRY_VENEZUELA 58
+#define CTRY_VIET_NAM 84
+#define CTRY_YEMEN 967
+#define CTRY_ZIMBABWE 263
+#define CAL_ICALINTVALUE 1
+#define CAL_SCALNAME 2
+#define CAL_IYEAROFFSETRANGE 3
+#define CAL_SERASTRING 4
+#define CAL_SSHORTDATE 5
+#define CAL_SLONGDATE 6
+#define CAL_SDAYNAME1 7
+#define CAL_SDAYNAME2 8
+#define CAL_SDAYNAME3 9
+#define CAL_SDAYNAME4 10
+#define CAL_SDAYNAME5 11
+#define CAL_SDAYNAME6 12
+#define CAL_SDAYNAME7 13
+#define CAL_SABBREVDAYNAME1 14
+#define CAL_SABBREVDAYNAME2 15
+#define CAL_SABBREVDAYNAME3 16
+#define CAL_SABBREVDAYNAME4 17
+#define CAL_SABBREVDAYNAME5 18
+#define CAL_SABBREVDAYNAME6 19
+#define CAL_SABBREVDAYNAME7 20
+#define CAL_SMONTHNAME1 21
+#define CAL_SMONTHNAME2 22
+#define CAL_SMONTHNAME3 23
+#define CAL_SMONTHNAME4 24
+#define CAL_SMONTHNAME5 25
+#define CAL_SMONTHNAME6 26
+#define CAL_SMONTHNAME7 27
+#define CAL_SMONTHNAME8 28
+#define CAL_SMONTHNAME9 29
+#define CAL_SMONTHNAME10 30
+#define CAL_SMONTHNAME11 31
+#define CAL_SMONTHNAME12 32
+#define CAL_SMONTHNAME13 33
+#define CAL_SABBREVMONTHNAME1 34
+#define CAL_SABBREVMONTHNAME2 35
+#define CAL_SABBREVMONTHNAME3 36
+#define CAL_SABBREVMONTHNAME4 37
+#define CAL_SABBREVMONTHNAME5 38
+#define CAL_SABBREVMONTHNAME6 39
+#define CAL_SABBREVMONTHNAME7 40
+#define CAL_SABBREVMONTHNAME8 41
+#define CAL_SABBREVMONTHNAME9 42
+#define CAL_SABBREVMONTHNAME10 43
+#define CAL_SABBREVMONTHNAME11 44
+#define CAL_SABBREVMONTHNAME12 45
+#define CAL_SABBREVMONTHNAME13 46
+#define CAL_GREGORIAN 1
+#define CAL_GREGORIAN_US 2
+#define CAL_JAPAN 3
+#define CAL_TAIWAN 4
+#define CAL_KOREA 5
+#define CAL_HIJRI 6
+#define CAL_THAI 7
+#define CAL_HEBREW 8
+#define CAL_GREGORIAN_ME_FRENCH 9
+#define CAL_GREGORIAN_ARABIC 10
+#define CAL_GREGORIAN_XLIT_ENGLISH 11
+#define CAL_GREGORIAN_XLIT_FRENCH 12
+#define CSTR_LESS_THAN 1
+#define CSTR_EQUAL 2
+#define CSTR_GREATER_THAN 3
+#define LGRPID_INSTALLED 1
+#define LGRPID_SUPPORTED 2
+#define LGRPID_WESTERN_EUROPE 1
+#define LGRPID_CENTRAL_EUROPE 2
+#define LGRPID_BALTIC 3
+#define LGRPID_GREEK 4
+#define LGRPID_CYRILLIC 5
+#define LGRPID_TURKISH 6
+#define LGRPID_JAPANESE 7
+#define LGRPID_KOREAN 8
+#define LGRPID_TRADITIONAL_CHINESE 9
+#define LGRPID_SIMPLIFIED_CHINESE 10
+#define LGRPID_THAI 11
+#define LGRPID_HEBREW 12
+#define LGRPID_ARABIC 13
+#define LGRPID_VIETNAMESE 14
+#define LGRPID_INDIC 15
+#define LGRPID_GEORGIAN 16
+#define LGRPID_ARMENIAN 17
+
+#if(WINVER >= 0x0500)
+#define LOCALE_SYEARMONTH 0x1006
+#define LOCALE_SENGCURRNAME 0x1007
+#define LOCALE_SNATIVECURRNAME 0x1008
+#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x1012
+#define LOCALE_SSORTNAME 0x1013
+#define LOCALE_IDIGITSUBSTITUTION 0x1014
+#define LOCALE_IPAPERSIZE 0x100A
+#define DATE_YEARMONTH 8
+#define DATE_LTRREADING 16
+#define DATE_RTLREADING 32
+#define MAP_EXPAND_LIGATURES 0x2000
+#define WC_NO_BEST_FIT_CHARS 1024
+#define CAL_SYEARMONTH 47
+#define CAL_ITWODIGITYEARMAX 48
+#define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
+#define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER
+#define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
+#endif /* WINVER >= 0x0500 */
+#ifndef _BASETSD_H
+typedef long LONG_PTR;
+#endif
+
+#ifndef RC_INVOKED
+typedef DWORD LCTYPE;
+typedef DWORD CALTYPE;
+typedef DWORD CALID;
+typedef DWORD LGRPID;
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXA)(LPSTR, CALID);
+typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXW)(LPWSTR, CALID);
+typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
+typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
+typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR);
+typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR);
+typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR);
+typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR);
+typedef BOOL (CALLBACK *LOCALE_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *LOCALE_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK *DATEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *DATEFMT_ENUMPROCW)(LPWSTR);
+typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXA)(LPSTR, CALID);
+typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXW)(LPWSTR, CALID);
+typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *TIMEFMT_ENUMPROCW)(LPWSTR);
+
+typedef struct _cpinfo {
+ UINT MaxCharSize;
+ BYTE DefaultChar[MAX_DEFAULTCHAR];
+ BYTE LeadByte[MAX_LEADBYTES];
+} CPINFO,*LPCPINFO;
+typedef struct _cpinfoexA {
+ UINT MaxCharSize;
+ BYTE DefaultChar[MAX_DEFAULTCHAR];
+ BYTE LeadByte[MAX_LEADBYTES];
+ WCHAR UnicodeDefaultChar;
+ UINT CodePage;
+ CHAR CodePageName[MAX_PATH];
+} CPINFOEXA, *LPCPINFOEXA;
+typedef struct _cpinfoexW {
+ UINT MaxCharSize;
+ BYTE DefaultChar[MAX_DEFAULTCHAR];
+ BYTE LeadByte[MAX_LEADBYTES];
+ WCHAR UnicodeDefaultChar;
+ UINT CodePage;
+ WCHAR CodePageName[MAX_PATH];
+} CPINFOEXW, *LPCPINFOEXW;
+typedef struct _currencyfmtA {
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPSTR lpDecimalSep;
+ LPSTR lpThousandSep;
+ UINT NegativeOrder;
+ UINT PositiveOrder;
+ LPSTR lpCurrencySymbol;
+} CURRENCYFMTA, *LPCURRENCYFMTA;
+typedef struct _currencyfmtW {
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPWSTR lpDecimalSep;
+ LPWSTR lpThousandSep;
+ UINT NegativeOrder;
+ UINT PositiveOrder;
+ LPWSTR lpCurrencySymbol;
+} CURRENCYFMTW, *LPCURRENCYFMTW;
+typedef struct _numberfmtA {
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPSTR lpDecimalSep;
+ LPSTR lpThousandSep;
+ UINT NegativeOrder;
+} NUMBERFMTA, *LPNUMBERFMTA;
+typedef struct _numberfmtW {
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPWSTR lpDecimalSep;
+ LPWSTR lpThousandSep;
+ UINT NegativeOrder;
+} NUMBERFMTW, *LPNUMBERFMTW;
+
+int WINAPI CompareStringA(LCID,DWORD,LPCSTR,int,LPCSTR,int);
+int WINAPI CompareStringW(LCID,DWORD,LPCWSTR,int,LPCWSTR,int);
+LCID WINAPI ConvertDefaultLocale(LCID);
+BOOL WINAPI EnumCalendarInfoA(CALINFO_ENUMPROCA,LCID,CALID,CALTYPE);
+BOOL WINAPI EnumCalendarInfoW(CALINFO_ENUMPROCW,LCID,CALID,CALTYPE);
+BOOL WINAPI EnumDateFormatsA(DATEFMT_ENUMPROCA,LCID,DWORD);
+BOOL WINAPI EnumDateFormatsW(DATEFMT_ENUMPROCW,LCID,DWORD);
+BOOL WINAPI EnumSystemCodePagesA(CODEPAGE_ENUMPROCA,DWORD);
+BOOL WINAPI EnumSystemCodePagesW(CODEPAGE_ENUMPROCW,DWORD);
+BOOL WINAPI EnumSystemLocalesA(LOCALE_ENUMPROCA,DWORD);
+BOOL WINAPI EnumSystemLocalesW(LOCALE_ENUMPROCW,DWORD);
+BOOL WINAPI EnumTimeFormatsA(TIMEFMT_ENUMPROCA,LCID,DWORD);
+BOOL WINAPI EnumTimeFormatsW(TIMEFMT_ENUMPROCW,LCID,DWORD);
+int WINAPI FoldStringA(DWORD,LPCSTR,int,LPSTR,int);
+int WINAPI FoldStringW(DWORD,LPCWSTR,int,LPWSTR,int);
+UINT WINAPI GetACP(void);
+BOOL WINAPI GetCPInfo(UINT,LPCPINFO);
+BOOL WINAPI GetCPInfoExA(UINT,DWORD,LPCPINFOEXA);
+BOOL WINAPI GetCPInfoExW(UINT,DWORD,LPCPINFOEXW);
+int WINAPI GetCurrencyFormatA(LCID,DWORD,LPCSTR,const CURRENCYFMTA*,LPSTR,int);
+int WINAPI GetCurrencyFormatW(LCID,DWORD,LPCWSTR,const CURRENCYFMTW*,LPWSTR,int);
+int WINAPI GetDateFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
+int WINAPI GetDateFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
+int WINAPI GetLocaleInfoA(LCID,LCTYPE,LPSTR,int);
+int WINAPI GetLocaleInfoW(LCID,LCTYPE,LPWSTR,int);
+int WINAPI GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,int);
+int WINAPI GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,int);
+UINT WINAPI GetOEMCP(void);
+BOOL WINAPI GetStringTypeA(LCID,DWORD,LPCSTR,int,LPWORD);
+BOOL WINAPI GetStringTypeW(DWORD,LPCWSTR,int,LPWORD);
+BOOL WINAPI GetStringTypeExA(LCID,DWORD,LPCSTR,int,LPWORD);
+BOOL WINAPI GetStringTypeExW(LCID,DWORD,LPCWSTR,int,LPWORD);
+LANGID WINAPI GetSystemDefaultLangID(void);
+LCID WINAPI GetSystemDefaultLCID(void);
+LCID WINAPI GetThreadLocale(void);
+int WINAPI GetTimeFormatA(LCID,DWORD,const SYSTEMTIME*,LPCSTR,LPSTR,int);
+int WINAPI GetTimeFormatW(LCID,DWORD,const SYSTEMTIME*,LPCWSTR,LPWSTR,int);
+LANGID WINAPI GetUserDefaultLangID(void);
+LCID WINAPI GetUserDefaultLCID(void);
+BOOL WINAPI IsDBCSLeadByte(BYTE);
+BOOL WINAPI IsDBCSLeadByteEx(UINT,BYTE);
+BOOL WINAPI IsValidCodePage(UINT);
+BOOL WINAPI IsValidLocale(LCID,DWORD);
+int WINAPI LCMapStringA(LCID,DWORD,LPCSTR,int,LPSTR,int);
+int WINAPI LCMapStringW(LCID,DWORD,LPCWSTR,int,LPWSTR,int);
+int WINAPI MultiByteToWideChar(UINT,DWORD,LPCSTR,int,LPWSTR,int);
+BOOL WINAPI SetLocaleInfoA(LCID,LCTYPE,LPCSTR);
+BOOL WINAPI SetLocaleInfoW(LCID,LCTYPE,LPCWSTR);
+BOOL WINAPI SetThreadLocale(LCID);
+int WINAPI WideCharToMultiByte(UINT,DWORD,LPCWSTR,int,LPSTR,int,LPCSTR,LPBOOL);
+#if (WINVER >= 0x0500)
+BOOL WINAPI EnumCalendarInfoExA(CALINFO_ENUMPROCEXA,LCID,CALID,CALTYPE);
+BOOL WINAPI EnumCalendarInfoExW(CALINFO_ENUMPROCEXW,LCID,CALID,CALTYPE);
+BOOL WINAPI EnumDateFormatsExA(DATEFMT_ENUMPROCEXA,LCID,DWORD);
+BOOL WINAPI EnumDateFormatsExW(DATEFMT_ENUMPROCEXW,LCID,DWORD);
+BOOL WINAPI EnumSystemLanguageGroupsA(LANGUAGEGROUP_ENUMPROCA,DWORD,LONG_PTR);
+BOOL WINAPI EnumSystemLanguageGroupsW(LANGUAGEGROUP_ENUMPROCW,DWORD,LONG_PTR);
+BOOL WINAPI EnumLanguageGroupLocalesA(LANGGROUPLOCALE_ENUMPROCA,LGRPID,DWORD,LONG_PTR);
+BOOL WINAPI EnumLanguageGroupLocalesW(LANGGROUPLOCALE_ENUMPROCW,LGRPID,DWORD,LONG_PTR);
+BOOL WINAPI EnumUILanguagesA(UILANGUAGE_ENUMPROCA,DWORD,LONG_PTR);
+BOOL WINAPI EnumUILanguagesW(UILANGUAGE_ENUMPROCW,DWORD,LONG_PTR);
+LANGID WINAPI GetSystemDefaultUILanguage(void);
+LANGID WINAPI GetUserDefaultUILanguage(void);
+BOOL WINAPI IsValidLanguageGroup(LGRPID,DWORD);
+#endif /* (WINVER >= 0x0500) */
+
+#ifdef UNICODE
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCW
+#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXW
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCW
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
+#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXW
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
+#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCW
+#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCW
+#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCW
+typedef CPINFOEXW CPINFOEX;
+typedef LPCPINFOEXW LPCPINFOEX;
+typedef CURRENCYFMTW CURRENCYFMT;
+typedef LPCURRENCYFMTW LPCURRENCYFMT;
+typedef NUMBERFMTW NUMBERFMT;
+typedef LPNUMBERFMTW LPNUMBERFMT;
+#define CompareString CompareStringW
+#define EnumCalendarInfo EnumCalendarInfoW
+#define EnumSystemCodePages EnumSystemCodePagesW
+#define EnumSystemLocales EnumSystemLocalesW
+#define EnumTimeFormats EnumTimeFormatsW
+#define FoldString FoldStringW
+#define GetCPInfoEx GetCPInfoExW
+#define GetCurrencyFormat GetCurrencyFormatW
+#define GetDateFormat GetDateFormatW
+#define GetLocaleInfo GetLocaleInfoW
+#define GetNumberFormat GetNumberFormatW
+#define GetStringTypeEx GetStringTypeExW
+#define GetTimeFormat GetTimeFormatW
+#define LCMapString LCMapStringW
+#define SetLocaleInfo SetLocaleInfoW
+#if (WINVER >= 0x0500)
+#define EnumCalendarInfoEx EnumCalendarInfoExW;
+#define EnumDateFormatsEx EnumDateFormatsExW;
+#define EnumSystemLanguageGroups EnumSystemLanguageGroupsW;
+#define EnumLanguageGroupLocales EnumLanguageGroupLocalesW;
+#define EnumUILanguages EnumUILanguagesW;
+#endif /* (WINVER >= 0x0500) */
+#else
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCA
+#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCA
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
+#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
+#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA
+#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA
+#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA
+typedef CPINFOEXA CPINFOEX;
+typedef LPCPINFOEXA LPCPINFOEX;
+typedef CURRENCYFMTA CURRENCYFMT;
+typedef LPCURRENCYFMTA LPCURRENCYFMT;
+typedef NUMBERFMTA NUMBERFMT;
+typedef LPNUMBERFMTA LPNUMBERFMT;
+#define CompareString CompareStringA
+#define EnumCalendarInfo EnumCalendarInfoA
+#define EnumSystemCodePages EnumSystemCodePagesA
+#define EnumSystemLocales EnumSystemLocalesA
+#define EnumTimeFormats EnumTimeFormatsA
+#define FoldString FoldStringA
+#define GetCPInfoEx GetCPInfoExA
+#define GetCurrencyFormat GetCurrencyFormatA
+#define GetDateFormat GetDateFormatA
+#define GetLocaleInfo GetLocaleInfoA
+#define GetNumberFormat GetNumberFormatA
+#define GetStringTypeEx GetStringTypeExA
+#define GetTimeFormat GetTimeFormatA
+#define LCMapString LCMapStringA
+#define SetLocaleInfo SetLocaleInfoA
+#if (WINVER >= 0x0500)
+#define EnumCalendarInfoEx EnumCalendarInfoExA;
+#define EnumDateFormatsEx EnumDateFormatsExA;
+#define EnumSystemLanguageGroups EnumSystemLanguageGroupsA;
+#define EnumLanguageGroupLocales EnumLanguageGroupLocalesA;
+#define EnumUILanguages EnumUILanguagesA;
+#endif /* (WINVER >= 0x0500) */
+#endif /* UNICODE */
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/win32/include/winapi/winnt.h b/win32/include/winapi/winnt.h
new file mode 100644
index 0000000..5b7cc75
--- /dev/null
+++ b/win32/include/winapi/winnt.h
@@ -0,0 +1,2667 @@
+#ifndef _WINNT_H
+#define _WINNT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+/* translate GCC target defines to MS equivalents. Keep this synchronized
+ with windows.h. */
+#if defined(__i686__) && !defined(_M_IX86)
+#define _M_IX86 600
+#elif defined(__i586__) && !defined(_M_IX86)
+#define _M_IX86 500
+#elif defined(__i486__) && !defined(_M_IX86)
+#define _M_IX86 400
+#elif defined(__i386__) && !defined(_M_IX86)
+#define _M_IX86 300
+#endif
+#if defined(_M_IX86) && !defined(_X86_)
+#define _X86_
+#elif defined(_M_ALPHA) && !defined(_ALPHA_)
+#define _ALPHA_
+#elif defined(_M_PPC) && !defined(_PPC_)
+#define _PPC_
+#elif defined(_M_MRX000) && !defined(_MIPS_)
+#define _MIPS_
+#elif defined(_M_M68K) && !defined(_68K_)
+#define _68K_
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winerror.h>
+
+#ifndef RC_INVOKED
+#include <string.h>
+
+/* FIXME: add more architectures. Is there a way to specify this in GCC? */
+#ifdef _X86_
+#define UNALIGNED
+#else
+#define UNALIGNED
+#endif
+
+#ifndef VOID
+#define VOID void
+#endif
+typedef char CHAR;
+typedef short SHORT;
+typedef long LONG;
+typedef CHAR CCHAR;
+typedef unsigned char UCHAR,*PUCHAR;
+typedef unsigned short USHORT,*PUSHORT;
+typedef unsigned long ULONG,*PULONG;
+typedef char *PSZ;
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef _WCHAR_T_
+#define _WCHAR_T_
+#undef __need_wchar_t
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif
+#endif
+#endif
+
+typedef wchar_t WCHAR;
+typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR;
+typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;
+typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR;
+typedef CONST CHAR *LPCCH,*PCSTR,*LPCSTR;
+#ifndef _TCHAR_DEFINED
+#define _TCHAR_DEFINED
+#ifdef UNICODE
+/*
+ * NOTE: This tests UNICODE, which is different from the _UNICODE define
+ * used to differentiate standard C runtime calls.
+ */
+typedef WCHAR TCHAR;
+typedef WCHAR _TCHAR;
+#else
+typedef CHAR TCHAR;
+typedef CHAR _TCHAR;
+#endif
+#endif
+typedef TCHAR TBYTE,*PTCH,*PTBYTE;
+typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP,*PTCHAR;
+typedef const TCHAR *LPCTSTR;
+#ifdef UNICODE
+/*
+ * __TEXT is a private macro whose specific use is to force the expansion of a
+ * macro passed as an argument to the macro TEXT. DO NOT use this
+ * macro within your programs. It's name and function could change without
+ * notice.
+ */
+#define __TEXT(q) L##q
+#else
+#define __TEXT(q) q
+#endif
+/*
+ * UNICODE a constant string when UNICODE is defined, else returns the string
+ * unmodified.
+ * The corresponding macros _TEXT() and _T() for mapping _UNICODE strings
+ * passed to C runtime functions are defined in mingw/tchar.h
+ */
+#define TEXT(q) __TEXT(q)
+typedef SHORT *PSHORT;
+typedef LONG *PLONG;
+typedef void *HANDLE;
+typedef HANDLE *PHANDLE,*LPHANDLE;
+#ifdef STRICT
+#define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n
+#else
+#define DECLARE_HANDLE(n) typedef HANDLE n
+#endif
+typedef DWORD LCID;
+typedef PDWORD PLCID;
+typedef WORD LANGID;
+#ifdef __GNUC__
+#define _HAVE_INT64
+#define _INTEGRAL_MAX_BITS 64
+#undef __int64
+#define __int64 long long
+#elif defined(__WATCOMC__) && (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64 )
+#define _HAVE_INT64
+#endif /* __GNUC__/__WATCOMC */
+#if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
+typedef __int64 LONGLONG;
+typedef unsigned __int64 DWORDLONG;
+#else
+typedef double LONGLONG,DWORDLONG;
+#endif
+typedef LONGLONG *PLONGLONG;
+typedef DWORDLONG *PDWORDLONG;
+typedef DWORDLONG ULONGLONG,*PULONGLONG;
+typedef LONGLONG USN;
+#ifdef _HAVE_INT64
+#define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b))
+#define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b))
+#define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b))
+#define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b))
+#define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b))
+#endif
+#define ANSI_NULL '\0'
+#define UNICODE_NULL L'\0'
+typedef BYTE BOOLEAN,*PBOOLEAN;
+#endif
+
+#define NTAPI __stdcall
+#include <basetsd.h>
+#define APPLICATION_ERROR_MASK 0x20000000
+#define ERROR_SEVERITY_SUCCESS 0x00000000
+#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
+#define ERROR_SEVERITY_WARNING 0x80000000
+#define ERROR_SEVERITY_ERROR 0xC0000000
+#define COMPRESSION_FORMAT_NONE 0
+#define COMPRESSION_FORMAT_DEFAULT 1
+#define COMPRESSION_FORMAT_LZNT1 2
+#define COMPRESSION_ENGINE_STANDARD 0
+#define COMPRESSION_ENGINE_MAXIMUM 256
+#define ACCESS_ALLOWED_ACE_TYPE 0
+#define ACCESS_DENIED_ACE_TYPE 1
+#define ANYSIZE_ARRAY 1
+#define SYSTEM_AUDIT_ACE_TYPE 2
+#define SYSTEM_ALARM_ACE_TYPE 3
+#define OBJECT_INHERIT_ACE 1
+#define CONTAINER_INHERIT_ACE 2
+#define NO_PROPAGATE_INHERIT_ACE 4
+#define INHERIT_ONLY_ACE 8
+#define VALID_INHERIT_FLAGS 16
+#define SUCCESSFUL_ACCESS_ACE_FLAG 64
+#define FAILED_ACCESS_ACE_FLAG 128
+#define DELETE 0x00010000L
+#define READ_CONTROL 0x20000L
+#define WRITE_DAC 0x40000L
+#define WRITE_OWNER 0x80000L
+#define SYNCHRONIZE 0x100000L
+#define STANDARD_RIGHTS_REQUIRED 0xF0000
+#define STANDARD_RIGHTS_READ 0x20000
+#define STANDARD_RIGHTS_WRITE 0x20000
+#define STANDARD_RIGHTS_EXECUTE 0x20000
+#define STANDARD_RIGHTS_ALL 0x1F0000
+#define SPECIFIC_RIGHTS_ALL 0xFFFF
+#define ACCESS_SYSTEM_SECURITY 0x1000000
+#define MAXIMUM_ALLOWED 0x2000000
+#define GENERIC_READ 0x80000000
+#define GENERIC_WRITE 0x40000000
+#define GENERIC_EXECUTE 0x20000000
+#define GENERIC_ALL 0x10000000
+#define FILE_READ_DATA 1
+#define FILE_LIST_DIRECTORY 1
+#define FILE_WRITE_DATA 2
+#define FILE_ADD_FILE 2
+#define FILE_APPEND_DATA 4
+#define FILE_ADD_SUBDIRECTORY 4
+#define FILE_CREATE_PIPE_INSTANCE 4
+#define FILE_READ_EA 8
+#define FILE_READ_PROPERTIES 8
+#define FILE_WRITE_EA 16
+#define FILE_WRITE_PROPERTIES 16
+#define FILE_EXECUTE 32
+#define FILE_TRAVERSE 32
+#define FILE_DELETE_CHILD 64
+#define FILE_READ_ATTRIBUTES 128
+#define FILE_WRITE_ATTRIBUTES 256
+#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1FF)
+#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONIZE)
+#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONIZE)
+#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE|FILE_READ_ATTRIBUTES|FILE_EXECUTE|SYNCHRONIZE)
+#define FILE_SHARE_READ 1
+#define FILE_SHARE_WRITE 2
+#define FILE_SHARE_DELETE 4
+#define FILE_ATTRIBUTE_READONLY 1
+#define FILE_ATTRIBUTE_HIDDEN 2
+#define FILE_ATTRIBUTE_SYSTEM 4
+#define FILE_ATTRIBUTE_DIRECTORY 16
+#define FILE_ATTRIBUTE_ARCHIVE 32
+#define FILE_ATTRIBUTE_DEVICE 64
+#define FILE_ATTRIBUTE_NORMAL 128
+#define FILE_ATTRIBUTE_TEMPORARY 256
+#define FILE_ATTRIBUTE_SPARSE_FILE 512
+#define FILE_ATTRIBUTE_REPARSE_POINT 1024
+#define FILE_ATTRIBUTE_COMPRESSED 2048
+#define FILE_ATTRIBUTE_OFFLINE 0x1000
+#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x2000
+#define FILE_ATTRIBUTE_ENCRYPTED 0x4000
+#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
+#define FILE_NOTIFY_CHANGE_FILE_NAME 1
+#define FILE_NOTIFY_CHANGE_DIR_NAME 2
+#define FILE_NOTIFY_CHANGE_ATTRIBUTES 4
+#define FILE_NOTIFY_CHANGE_SIZE 8
+#define FILE_NOTIFY_CHANGE_LAST_WRITE 16
+#define FILE_NOTIFY_CHANGE_LAST_ACCESS 32
+#define FILE_NOTIFY_CHANGE_CREATION 64
+#define FILE_NOTIFY_CHANGE_SECURITY 256
+#define MAILSLOT_NO_MESSAGE ((DWORD)-1)
+#define MAILSLOT_WAIT_FOREVER ((DWORD)-1)
+#define FILE_CASE_SENSITIVE_SEARCH 1
+#define FILE_CASE_PRESERVED_NAMES 2
+#define FILE_UNICODE_ON_DISK 4
+#define FILE_PERSISTENT_ACLS 8
+#define FILE_FILE_COMPRESSION 16
+#define FILE_VOLUME_QUOTAS 32
+#define FILE_SUPPORTS_SPARSE_FILES 64
+#define FILE_SUPPORTS_REPARSE_POINTS 128
+#define FILE_SUPPORTS_REMOTE_STORAGE 256
+#define FILE_VOLUME_IS_COMPRESSED 0x8000
+#define FILE_SUPPORTS_OBJECT_IDS 0x10000
+#define FILE_SUPPORTS_ENCRYPTION 0x20000
+#define FILE_NAMED_STREAMS 0x40000
+#define IO_COMPLETION_MODIFY_STATE 2
+#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|3)
+#define DUPLICATE_CLOSE_SOURCE 1
+#define DUPLICATE_SAME_ACCESS 2
+#define PROCESS_TERMINATE 1
+#define PROCESS_CREATE_THREAD 2
+#define PROCESS_VM_OPERATION 8
+#define PROCESS_VM_READ 16
+#define PROCESS_VM_WRITE 32
+#define PROCESS_DUP_HANDLE 64
+#define PROCESS_CREATE_PROCESS 128
+#define PROCESS_SET_QUOTA 256
+#define PROCESS_SET_INFORMATION 512
+#define PROCESS_QUERY_INFORMATION 1024
+#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF)
+#define THREAD_TERMINATE 1
+#define THREAD_SUSPEND_RESUME 2
+#define THREAD_GET_CONTEXT 8
+#define THREAD_SET_CONTEXT 16
+#define THREAD_SET_INFORMATION 32
+#define THREAD_QUERY_INFORMATION 64
+#define THREAD_SET_THREAD_TOKEN 128
+#define THREAD_IMPERSONATE 256
+#define THREAD_DIRECT_IMPERSONATION 0x200
+#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF)
+#define EXCEPTION_NONCONTINUABLE 1
+#define EXCEPTION_MAXIMUM_PARAMETERS 15
+/*
+ * To prevent gcc compiler warnings, bracket these defines when initialising
+ * a SID_IDENTIFIER_AUTHORITY, eg.
+ * SID_IDENTIFIER_AUTHORITY aNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY};
+ */
+#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
+#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
+#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
+#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
+#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
+#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
+#define SECURITY_NULL_RID 0
+#define SECURITY_WORLD_RID 0
+#define SECURITY_LOCAL_RID 0
+#define SECURITY_CREATOR_OWNER_RID 0
+#define SECURITY_CREATOR_GROUP_RID 1
+#define SECURITY_DIALUP_RID 1
+#define SECURITY_NETWORK_RID 2
+#define SECURITY_BATCH_RID 3
+#define SECURITY_INTERACTIVE_RID 4
+#define SECURITY_LOGON_IDS_RID 5
+#define SECURITY_SERVICE_RID 6
+#define SECURITY_LOCAL_SYSTEM_RID 18
+#define SECURITY_BUILTIN_DOMAIN_RID 32
+#define SECURITY_PRINCIPAL_SELF_RID 10
+#define SID_REVISION 1
+#define DOMAIN_USER_RID_ADMIN 0x1F4L
+#define DOMAIN_USER_RID_GUEST 0x1F5L
+#define DOMAIN_GROUP_RID_ADMINS 0x200L
+#define DOMAIN_GROUP_RID_USERS 0x201L
+#define DOMAIN_ALIAS_RID_ADMINS 0x220L
+#define DOMAIN_ALIAS_RID_USERS 0x221L
+#define DOMAIN_ALIAS_RID_GUESTS 0x222L
+#define DOMAIN_ALIAS_RID_POWER_USERS 0x223L
+#define DOMAIN_ALIAS_RID_ACCOUNT_OPS 0x224L
+#define DOMAIN_ALIAS_RID_SYSTEM_OPS 0x225L
+#define DOMAIN_ALIAS_RID_PRINT_OPS 0x226L
+#define DOMAIN_ALIAS_RID_BACKUP_OPS 0x227L
+#define DOMAIN_ALIAS_RID_REPLICATOR 0x228L
+#define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
+#define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
+#define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
+#define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
+#define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
+#define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
+#define SE_TCB_NAME TEXT("SeTcbPrivilege")
+#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
+#define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
+#define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
+#define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
+#define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
+#define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
+#define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
+#define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
+#define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
+#define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
+#define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
+#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
+#define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
+#define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
+#define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
+#define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
+#define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
+#define SE_GROUP_MANDATORY 1
+#define SE_GROUP_ENABLED_BY_DEFAULT 2
+#define SE_GROUP_ENABLED 4
+#define SE_GROUP_OWNER 8
+#define SE_GROUP_USE_FOR_DENY_ONLY 16
+#define SE_GROUP_LOGON_ID 3221225472U
+#define SE_GROUP_RESOURCE 536870912
+#define LANG_NEUTRAL 0x00
+#define LANG_ARABIC 0x01
+#define LANG_BULGARIAN 0x02
+#define LANG_CATALAN 0x03
+#define LANG_CHINESE 0x04
+#define LANG_CZECH 0x05
+#define LANG_DANISH 0x06
+#define LANG_GERMAN 0x07
+#define LANG_GREEK 0x08
+#define LANG_ENGLISH 0x09
+#define LANG_SPANISH 0x0a
+#define LANG_FINNISH 0x0b
+#define LANG_FRENCH 0x0c
+#define LANG_HEBREW 0x0d
+#define LANG_HUNGARIAN 0x0e
+#define LANG_ICELANDIC 0x0f
+#define LANG_ITALIAN 0x10
+#define LANG_JAPANESE 0x11
+#define LANG_KOREAN 0x12
+#define LANG_DUTCH 0x13
+#define LANG_NORWEGIAN 0x14
+#define LANG_POLISH 0x15
+#define LANG_PORTUGUESE 0x16
+#define LANG_ROMANIAN 0x18
+#define LANG_RUSSIAN 0x19
+#define LANG_CROATIAN 0x1a
+#define LANG_SERBIAN 0x1a
+#define LANG_SLOVAK 0x1b
+#define LANG_ALBANIAN 0x1c
+#define LANG_SWEDISH 0x1d
+#define LANG_THAI 0x1e
+#define LANG_TURKISH 0x1f
+#define LANG_URDU 0x20
+#define LANG_INDONESIAN 0x21
+#define LANG_UKRAINIAN 0x22
+#define LANG_BELARUSIAN 0x23
+#define LANG_SLOVENIAN 0x24
+#define LANG_ESTONIAN 0x25
+#define LANG_LATVIAN 0x26
+#define LANG_LITHUANIAN 0x27
+#define LANG_FARSI 0x29
+#define LANG_VIETNAMESE 0x2a
+#define LANG_ARMENIAN 0x2b
+#define LANG_AZERI 0x2c
+#define LANG_BASQUE 0x2d
+#define LANG_MACEDONIAN 0x2f
+#define LANG_AFRIKAANS 0x36
+#define LANG_GEORGIAN 0x37
+#define LANG_FAEROESE 0x38
+#define LANG_HINDI 0x39
+#define LANG_MALAY 0x3e
+#define LANG_KAZAK 0x3f
+#define LANG_SWAHILI 0x41
+#define LANG_UZBEK 0x43
+#define LANG_TATAR 0x44
+#define LANG_BENGALI 0x45
+#define LANG_PUNJABI 0x46
+#define LANG_GUJARATI 0x47
+#define LANG_ORIYA 0x48
+#define LANG_TAMIL 0x49
+#define LANG_TELUGU 0x4a
+#define LANG_KANNADA 0x4b
+#define LANG_MALAYALAM 0x4c
+#define LANG_ASSAMESE 0x4d
+#define LANG_MARATHI 0x4e
+#define LANG_SANSKRIT 0x4f
+#define LANG_KONKANI 0x57
+#define LANG_MANIPURI 0x58
+#define LANG_SINDHI 0x59
+#define LANG_KASHMIRI 0x60
+#define LANG_NEPALI 0x61
+#define SUBLANG_NEUTRAL 0x00
+#define SUBLANG_DEFAULT 0x01
+#define SUBLANG_SYS_DEFAULT 0x02
+#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
+#define SUBLANG_ARABIC_IRAQ 0x02
+#define SUBLANG_ARABIC_EGYPT 0x03
+#define SUBLANG_ARABIC_LIBYA 0x04
+#define SUBLANG_ARABIC_ALGERIA 0x05
+#define SUBLANG_ARABIC_MOROCCO 0x06
+#define SUBLANG_ARABIC_TUNISIA 0x07
+#define SUBLANG_ARABIC_OMAN 0x08
+#define SUBLANG_ARABIC_YEMEN 0x09
+#define SUBLANG_ARABIC_SYRIA 0x0a
+#define SUBLANG_ARABIC_JORDAN 0x0b
+#define SUBLANG_ARABIC_LEBANON 0x0c
+#define SUBLANG_ARABIC_KUWAIT 0x0d
+#define SUBLANG_ARABIC_UAE 0x0e
+#define SUBLANG_ARABIC_BAHRAIN 0x0f
+#define SUBLANG_ARABIC_QATAR 0x10
+#define SUBLANG_AZERI_CYRILLIC 0x01
+#define SUBLANG_AZERI_LATIN 0x02
+#define SUBLANG_CHINESE_TRADITIONAL 0x01
+#define SUBLANG_CHINESE_SIMPLIFIED 0x02
+#define SUBLANG_CHINESE_HONGKONG 0x03
+#define SUBLANG_CHINESE_SINGAPORE 0x04
+#define SUBLANG_CHINESE_MACAU 0x05
+#define SUBLANG_DUTCH 0x01
+#define SUBLANG_DUTCH_BELGIAN 0x02
+#define SUBLANG_ENGLISH_US 0x01
+#define SUBLANG_ENGLISH_UK 0x02
+#define SUBLANG_ENGLISH_AUS 0x03
+#define SUBLANG_ENGLISH_CAN 0x04
+#define SUBLANG_ENGLISH_NZ 0x05
+#define SUBLANG_ENGLISH_EIRE 0x06
+#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
+#define SUBLANG_ENGLISH_JAMAICA 0x08
+#define SUBLANG_ENGLISH_CARIBBEAN 0x09
+#define SUBLANG_ENGLISH_BELIZE 0x0a
+#define SUBLANG_ENGLISH_TRINIDAD 0x0b
+#define SUBLANG_ENGLISH_PHILIPPINES 0x0c
+#define SUBLANG_ENGLISH_ZIMBABWE 0x0d
+#define SUBLANG_FRENCH 0x01
+#define SUBLANG_FRENCH_BELGIAN 0x02
+#define SUBLANG_FRENCH_CANADIAN 0x03
+#define SUBLANG_FRENCH_SWISS 0x04
+#define SUBLANG_FRENCH_LUXEMBOURG 0x05
+#define SUBLANG_FRENCH_MONACO 0x06
+#define SUBLANG_GERMAN 0x01
+#define SUBLANG_GERMAN_SWISS 0x02
+#define SUBLANG_GERMAN_AUSTRIAN 0x03
+#define SUBLANG_GERMAN_LUXEMBOURG 0x04
+#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
+#define SUBLANG_ITALIAN 0x01
+#define SUBLANG_ITALIAN_SWISS 0x02
+#define SUBLANG_KASHMIRI_INDIA 0x02
+#define SUBLANG_KOREAN 0x01
+#define SUBLANG_LITHUANIAN 0x01
+#define SUBLANG_MALAY_MALAYSIA 0x01
+#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
+#define SUBLANG_NEPALI_INDIA 0x02
+#define SUBLANG_NORWEGIAN_BOKMAL 0x01
+#define SUBLANG_NORWEGIAN_NYNORSK 0x02
+#define SUBLANG_PORTUGUESE 0x01
+#define SUBLANG_PORTUGUESE_BRAZILIAN 0x02
+#define SUBLANG_SERBIAN_LATIN 0x02
+#define SUBLANG_SERBIAN_CYRILLIC 0x03
+#define SUBLANG_SPANISH 0x01
+#define SUBLANG_SPANISH_MEXICAN 0x02
+#define SUBLANG_SPANISH_MODERN 0x03
+#define SUBLANG_SPANISH_GUATEMALA 0x04
+#define SUBLANG_SPANISH_COSTA_RICA 0x05
+#define SUBLANG_SPANISH_PANAMA 0x06
+#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
+#define SUBLANG_SPANISH_VENEZUELA 0x08
+#define SUBLANG_SPANISH_COLOMBIA 0x09
+#define SUBLANG_SPANISH_PERU 0x0a
+#define SUBLANG_SPANISH_ARGENTINA 0x0b
+#define SUBLANG_SPANISH_ECUADOR 0x0c
+#define SUBLANG_SPANISH_CHILE 0x0d
+#define SUBLANG_SPANISH_URUGUAY 0x0e
+#define SUBLANG_SPANISH_PARAGUAY 0x0f
+#define SUBLANG_SPANISH_BOLIVIA 0x10
+#define SUBLANG_SPANISH_EL_SALVADOR 0x11
+#define SUBLANG_SPANISH_HONDURAS 0x12
+#define SUBLANG_SPANISH_NICARAGUA 0x13
+#define SUBLANG_SPANISH_PUERTO_RICO 0x14
+#define SUBLANG_SWEDISH 0x01
+#define SUBLANG_SWEDISH_FINLAND 0x02
+#define SUBLANG_URDU_PAKISTAN 0x01
+#define SUBLANG_URDU_INDIA 0x02
+#define SUBLANG_UZBEK_LATIN 0x01
+#define SUBLANG_UZBEK_CYRILLIC 0x02
+#define NLS_VALID_LOCALE_MASK 1048575
+#define SORT_DEFAULT 0
+#define SORT_JAPANESE_XJIS 0
+#define SORT_JAPANESE_UNICODE 1
+#define SORT_CHINESE_BIG5 0
+#define SORT_CHINESE_PRCP 0
+#define SORT_CHINESE_UNICODE 1
+#define SORT_CHINESE_PRC 2
+#define SORT_CHINESE_BOPOMOFO 3
+#define SORT_KOREAN_KSC 0
+#define SORT_KOREAN_UNICODE 1
+#define SORT_GERMAN_PHONE_BOOK 1
+#define SORT_HUNGARIAN_DEFAULT 0
+#define SORT_HUNGARIAN_TECHNICAL 1
+#define SORT_GEORGIAN_TRADITIONAL 0
+#define SORT_GEORGIAN_MODERN 1
+#define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p))
+#define MAKELCID(l,s) ((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l)))))
+#define PRIMARYLANGID(l) ((WORD)(l)&0x3ff)
+#define SORTIDFROMLCID(l) ((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16))
+#define SORTVERSIONFROMLCID(l) ((WORD)((((DWORD)(l))>>20)&0xf))
+#define SUBLANGID(l) ((WORD)(l)>>10)
+#define LANGIDFROMLCID(l) ((WORD)(l))
+#define LANG_SYSTEM_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT)
+#define LANG_USER_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT)
+#define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT)
+#define ACL_REVISION 2
+#define ACL_REVISION_DS 4
+#define ACL_REVISION1 1
+#define ACL_REVISION2 2
+#define ACL_REVISION3 3
+#define ACL_REVISION4 4
+#define MIN_ACL_REVISION 2
+#define MAX_ACL_REVISION 4
+#define MINCHAR 0x80
+#define MAXCHAR 0x7f
+#define MINSHORT 0x8000
+#define MAXSHORT 0x7fff
+#define MINLONG 0x80000000
+#define MAXLONG 0x7fffffff
+#define MAXBYTE 0xff
+#define MAXWORD 0xffff
+#define MAXDWORD 0xffffffff
+#define PROCESSOR_INTEL_386 386
+#define PROCESSOR_INTEL_486 486
+#define PROCESSOR_INTEL_PENTIUM 586
+#define PROCESSOR_MIPS_R4000 4000
+#define PROCESSOR_ALPHA_21064 21064
+#define PROCESSOR_ARCHITECTURE_INTEL 0
+#define PROCESSOR_ARCHITECTURE_MIPS 1
+#define PROCESSOR_ARCHITECTURE_ALPHA 2
+#define PROCESSOR_ARCHITECTURE_PPC 3
+#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
+#define PF_FLOATING_POINT_PRECISION_ERRATA 0
+#define PF_FLOATING_POINT_EMULATED 1
+#define PF_COMPARE_EXCHANGE_DOUBLE 2
+#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
+#define PF_PPC_MOVEMEM_64BIT_OK 4
+#define PF_ALPHA_BYTE_INSTRUCTIONS 5
+#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
+#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
+#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
+#define PF_PAE_ENABLED 9
+#define PAGE_READONLY 2
+#define PAGE_READWRITE 4
+#define PAGE_WRITECOPY 8
+#define FILE_ACTION_ADDED 1
+#define FILE_ACTION_REMOVED 2
+#define FILE_ACTION_MODIFIED 3
+#define FILE_ACTION_RENAMED_OLD_NAME 4
+#define FILE_ACTION_RENAMED_NEW_NAME 5
+#define HEAP_NO_SERIALIZE 1
+#define HEAP_GROWABLE 2
+#define HEAP_GENERATE_EXCEPTIONS 4
+#define HEAP_ZERO_MEMORY 8
+#define HEAP_REALLOC_IN_PLACE_ONLY 16
+#define HEAP_TAIL_CHECKING_ENABLED 32
+#define HEAP_FREE_CHECKING_ENABLED 64
+#define HEAP_DISABLE_COALESCE_ON_FREE 128
+#define HEAP_CREATE_ALIGN_16 0x0000
+#define HEAP_CREATE_ENABLE_TRACING 0x20000
+#define HEAP_MAXIMUM_TAG 0xFFF
+#define HEAP_PSEUDO_TAG_FLAG 0x8000
+#define HEAP_TAG_SHIFT 16
+#define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16)))
+#define KEY_QUERY_VALUE 1
+#define KEY_SET_VALUE 2
+#define KEY_CREATE_SUB_KEY 4
+#define KEY_ENUMERATE_SUB_KEYS 8
+#define KEY_NOTIFY 16
+#define KEY_CREATE_LINK 32
+#define KEY_WRITE 0x20006
+#define KEY_EXECUTE 0x20019
+#define KEY_READ 0x20019
+#define KEY_ALL_ACCESS 0xf003f
+#define REG_WHOLE_HIVE_VOLATILE 1
+#define REG_REFRESH_HIVE 2
+#define REG_NO_LAZY_FLUSH 4
+#define REG_OPTION_RESERVED 0
+#define REG_OPTION_NON_VOLATILE 0
+#define REG_OPTION_VOLATILE 1
+#define REG_OPTION_CREATE_LINK 2
+#define REG_OPTION_BACKUP_RESTORE 4
+#define REG_OPTION_OPEN_LINK 8
+#define REG_LEGAL_OPTION 15
+#define OWNER_SECURITY_INFORMATION 1
+#define GROUP_SECURITY_INFORMATION 2
+#define DACL_SECURITY_INFORMATION 4
+#define SACL_SECURITY_INFORMATION 8
+#define MAXIMUM_PROCESSORS 32
+#define PAGE_EXECUTE 16
+#define PAGE_EXECUTE_READ 32
+#define PAGE_EXECUTE_READWRITE 64
+#define PAGE_GUARD 256
+#define PAGE_NOACCESS 1
+#define PAGE_NOCACHE 512
+#define MEM_COMMIT 0x1000
+#define MEM_RESERVE 0x2000
+#define MEM_DECOMMIT 0x4000
+#define MEM_RELEASE 0x8000
+#define MEM_FREE 0x10000
+#define MEM_PRIVATE 0x20000
+#define MEM_MAPPED 0x40000
+#define MEM_RESET 0x80000
+#define MEM_TOP_DOWN 0x100000
+#define MEM_WRITE_WATCH 0x200000 /* 98/Me */
+#define MEM_PHYSICAL 0x400000
+#define MEM_4MB_PAGES 0x80000000
+#define MEM_IMAGE 16777216
+#define SEC_FILE 0x800000
+#define SEC_IMAGE 0x1000000
+#define SEC_VLM 0x2000000
+#define SEC_RESERVE 0x4000000
+#define SEC_COMMIT 0x8000000
+#define SEC_NOCACHE 0x10000000
+#define PAGE_EXECUTE_WRITECOPY 128
+#define SECTION_EXTEND_SIZE 16
+#define SECTION_MAP_READ 4
+#define SECTION_MAP_WRITE 2
+#define SECTION_QUERY 1
+#define SECTION_ALL_ACCESS 0xf001f
+#define MESSAGE_RESOURCE_UNICODE 1
+#define RTL_CRITSECT_TYPE 0
+#define RTL_RESOURCE_TYPE 1
+#define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f))
+#define IMAGE_SIZEOF_FILE_HEADER 20
+#define IMAGE_FILE_RELOCS_STRIPPED 1
+#define IMAGE_FILE_EXECUTABLE_IMAGE 2
+#define IMAGE_FILE_LINE_NUMS_STRIPPED 4
+#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 8
+#define IMAGE_FILE_BYTES_REVERSED_LO 128
+#define IMAGE_FILE_32BIT_MACHINE 256
+#define IMAGE_FILE_DEBUG_STRIPPED 512
+#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 1024
+#define IMAGE_FILE_NET_RUN_FROM_SWAP 2048
+#define IMAGE_FILE_SYSTEM 4096
+#define IMAGE_FILE_DLL 8192
+#define IMAGE_FILE_UP_SYSTEM_ONLY 16384
+#define IMAGE_FILE_BYTES_REVERSED_HI 32768
+#define IMAGE_FILE_MACHINE_UNKNOWN 0
+#define IMAGE_FILE_MACHINE_I386 332
+#define IMAGE_FILE_MACHINE_R3000 354
+#define IMAGE_FILE_MACHINE_R4000 358
+#define IMAGE_FILE_MACHINE_R10000 360
+#define IMAGE_FILE_MACHINE_ALPHA 388
+#define IMAGE_FILE_MACHINE_POWERPC 496
+#define IMAGE_DOS_SIGNATURE 0x5A4D
+#define IMAGE_OS2_SIGNATURE 0x454E
+#define IMAGE_OS2_SIGNATURE_LE 0x454C
+#define IMAGE_VXD_SIGNATURE 0x454C
+#define IMAGE_NT_SIGNATURE 0x00004550
+#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
+#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
+#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
+#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
+#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
+#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
+#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
+#define IMAGE_SIZEOF_SHORT_NAME 8
+#define IMAGE_SIZEOF_SECTION_HEADER 40
+#define IMAGE_SIZEOF_SYMBOL 18
+#define IMAGE_SIZEOF_AUX_SYMBOL 18
+#define IMAGE_SIZEOF_RELOCATION 10
+#define IMAGE_SIZEOF_BASE_RELOCATION 8
+#define IMAGE_SIZEOF_LINENUMBER 6
+#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
+#define SIZEOF_RFPO_DATA 16
+#define IMAGE_SUBSYSTEM_UNKNOWN 0
+#define IMAGE_SUBSYSTEM_NATIVE 1
+#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
+#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
+#define IMAGE_SUBSYSTEM_OS2_CUI 5
+#define IMAGE_SUBSYSTEM_POSIX_CUI 7
+#define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) ((DWORD)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader))
+#define IMAGE_DIRECTORY_ENTRY_EXPORT 0
+#define IMAGE_DIRECTORY_ENTRY_IMPORT 1
+#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
+#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
+#define IMAGE_DIRECTORY_ENTRY_SECURITY 4
+#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
+#define IMAGE_DIRECTORY_ENTRY_DEBUG 6
+#define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7
+#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8
+#define IMAGE_DIRECTORY_ENTRY_TLS 9
+#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
+#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
+#define IMAGE_DIRECTORY_ENTRY_IAT 12
+#define IMAGE_SCN_TYPE_NO_PAD 8
+#define IMAGE_SCN_CNT_CODE 32
+#define IMAGE_SCN_CNT_INITIALIZED_DATA 64
+#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 128
+#define IMAGE_SCN_LNK_OTHER 256
+#define IMAGE_SCN_LNK_INFO 512
+#define IMAGE_SCN_LNK_REMOVE 2048
+#define IMAGE_SCN_LNK_COMDAT 4096
+#define IMAGE_SCN_MEM_FARDATA 0x8000
+#define IMAGE_SCN_MEM_PURGEABLE 0x20000
+#define IMAGE_SCN_MEM_16BIT 0x20000
+#define IMAGE_SCN_MEM_LOCKED 0x40000
+#define IMAGE_SCN_MEM_PRELOAD 0x80000
+#define IMAGE_SCN_ALIGN_1BYTES 0x100000
+#define IMAGE_SCN_ALIGN_2BYTES 0x200000
+#define IMAGE_SCN_ALIGN_4BYTES 0x300000
+#define IMAGE_SCN_ALIGN_8BYTES 0x400000
+#define IMAGE_SCN_ALIGN_16BYTES 0x500000
+#define IMAGE_SCN_ALIGN_32BYTES 0x600000
+#define IMAGE_SCN_ALIGN_64BYTES 0x700000
+#define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000
+#define IMAGE_SCN_MEM_DISCARDABLE 0x2000000
+#define IMAGE_SCN_MEM_NOT_CACHED 0x4000000
+#define IMAGE_SCN_MEM_NOT_PAGED 0x8000000
+#define IMAGE_SCN_MEM_SHARED 0x10000000
+#define IMAGE_SCN_MEM_EXECUTE 0x20000000
+#define IMAGE_SCN_MEM_READ 0x40000000
+#define IMAGE_SCN_MEM_WRITE 0x80000000
+#define IMAGE_SYM_UNDEFINED 0
+#define IMAGE_SYM_ABSOLUTE (-1)
+#define IMAGE_SYM_DEBUG (-2)
+#define IMAGE_SYM_TYPE_NULL 0
+#define IMAGE_SYM_TYPE_VOID 1
+#define IMAGE_SYM_TYPE_CHAR 2
+#define IMAGE_SYM_TYPE_SHORT 3
+#define IMAGE_SYM_TYPE_INT 4
+#define IMAGE_SYM_TYPE_LONG 5
+#define IMAGE_SYM_TYPE_FLOAT 6
+#define IMAGE_SYM_TYPE_DOUBLE 7
+#define IMAGE_SYM_TYPE_STRUCT 8
+#define IMAGE_SYM_TYPE_UNION 9
+#define IMAGE_SYM_TYPE_ENUM 10
+#define IMAGE_SYM_TYPE_MOE 11
+#define IMAGE_SYM_TYPE_BYTE 12
+#define IMAGE_SYM_TYPE_WORD 13
+#define IMAGE_SYM_TYPE_UINT 14
+#define IMAGE_SYM_TYPE_DWORD 15
+#define IMAGE_SYM_TYPE_PCODE 32768
+#define IMAGE_SYM_DTYPE_NULL 0
+#define IMAGE_SYM_DTYPE_POINTER 1
+#define IMAGE_SYM_DTYPE_FUNCTION 2
+#define IMAGE_SYM_DTYPE_ARRAY 3
+#define IMAGE_SYM_CLASS_END_OF_FUNCTION (-1)
+#define IMAGE_SYM_CLASS_NULL 0
+#define IMAGE_SYM_CLASS_AUTOMATIC 1
+#define IMAGE_SYM_CLASS_EXTERNAL 2
+#define IMAGE_SYM_CLASS_STATIC 3
+#define IMAGE_SYM_CLASS_REGISTER 4
+#define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
+#define IMAGE_SYM_CLASS_LABEL 6
+#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
+#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
+#define IMAGE_SYM_CLASS_ARGUMENT 9
+#define IMAGE_SYM_CLASS_STRUCT_TAG 10
+#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
+#define IMAGE_SYM_CLASS_UNION_TAG 12
+#define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
+#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
+#define IMAGE_SYM_CLASS_ENUM_TAG 15
+#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
+#define IMAGE_SYM_CLASS_REGISTER_PARAM 17
+#define IMAGE_SYM_CLASS_BIT_FIELD 18
+#define IMAGE_SYM_CLASS_FAR_EXTERNAL 68
+#define IMAGE_SYM_CLASS_BLOCK 100
+#define IMAGE_SYM_CLASS_FUNCTION 101
+#define IMAGE_SYM_CLASS_END_OF_STRUCT 102
+#define IMAGE_SYM_CLASS_FILE 103
+#define IMAGE_SYM_CLASS_SECTION 104
+#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
+#define IMAGE_COMDAT_SELECT_NODUPLICATES 1
+#define IMAGE_COMDAT_SELECT_ANY 2
+#define IMAGE_COMDAT_SELECT_SAME_SIZE 3
+#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
+#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
+#define IMAGE_COMDAT_SELECT_LARGEST 6
+#define IMAGE_COMDAT_SELECT_NEWEST 7
+#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
+#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
+#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
+#define IMAGE_REL_I386_ABSOLUTE 0
+#define IMAGE_REL_I386_DIR16 1
+#define IMAGE_REL_I386_REL16 2
+#define IMAGE_REL_I386_DIR32 6
+#define IMAGE_REL_I386_DIR32NB 7
+#define IMAGE_REL_I386_SEG12 9
+#define IMAGE_REL_I386_SECTION 10
+#define IMAGE_REL_I386_SECREL 11
+#define IMAGE_REL_I386_REL32 20
+#define IMAGE_REL_MIPS_ABSOLUTE 0
+#define IMAGE_REL_MIPS_REFHALF 1
+#define IMAGE_REL_MIPS_REFWORD 2
+#define IMAGE_REL_MIPS_JMPADDR 3
+#define IMAGE_REL_MIPS_REFHI 4
+#define IMAGE_REL_MIPS_REFLO 5
+#define IMAGE_REL_MIPS_GPREL 6
+#define IMAGE_REL_MIPS_LITERAL 7
+#define IMAGE_REL_MIPS_SECTION 10
+#define IMAGE_REL_MIPS_SECREL 11
+#define IMAGE_REL_MIPS_SECRELLO 12
+#define IMAGE_REL_MIPS_SECRELHI 13
+#define IMAGE_REL_MIPS_REFWORDNB 34
+#define IMAGE_REL_MIPS_PAIR 35
+#define IMAGE_REL_ALPHA_ABSOLUTE 0
+#define IMAGE_REL_ALPHA_REFLONG 1
+#define IMAGE_REL_ALPHA_REFQUAD 2
+#define IMAGE_REL_ALPHA_GPREL32 3
+#define IMAGE_REL_ALPHA_LITERAL 4
+#define IMAGE_REL_ALPHA_LITUSE 5
+#define IMAGE_REL_ALPHA_GPDISP 6
+#define IMAGE_REL_ALPHA_BRADDR 7
+#define IMAGE_REL_ALPHA_HINT 8
+#define IMAGE_REL_ALPHA_INLINE_REFLONG 9
+#define IMAGE_REL_ALPHA_REFHI 10
+#define IMAGE_REL_ALPHA_REFLO 11
+#define IMAGE_REL_ALPHA_PAIR 12
+#define IMAGE_REL_ALPHA_MATCH 13
+#define IMAGE_REL_ALPHA_SECTION 14
+#define IMAGE_REL_ALPHA_SECREL 15
+#define IMAGE_REL_ALPHA_REFLONGNB 16
+#define IMAGE_REL_ALPHA_SECRELLO 17
+#define IMAGE_REL_ALPHA_SECRELHI 18
+#define IMAGE_REL_PPC_ABSOLUTE 0
+#define IMAGE_REL_PPC_ADDR64 1
+#define IMAGE_REL_PPC_ADDR32 2
+#define IMAGE_REL_PPC_ADDR24 3
+#define IMAGE_REL_PPC_ADDR16 4
+#define IMAGE_REL_PPC_ADDR14 5
+#define IMAGE_REL_PPC_REL24 6
+#define IMAGE_REL_PPC_REL14 7
+#define IMAGE_REL_PPC_TOCREL16 8
+#define IMAGE_REL_PPC_TOCREL14 9
+#define IMAGE_REL_PPC_ADDR32NB 10
+#define IMAGE_REL_PPC_SECREL 11
+#define IMAGE_REL_PPC_SECTION 12
+#define IMAGE_REL_PPC_IFGLUE 13
+#define IMAGE_REL_PPC_IMGLUE 14
+#define IMAGE_REL_PPC_SECREL16 15
+#define IMAGE_REL_PPC_REFHI 16
+#define IMAGE_REL_PPC_REFLO 17
+#define IMAGE_REL_PPC_PAIR 18
+#define IMAGE_REL_PPC_TYPEMASK 255
+#define IMAGE_REL_PPC_NEG 256
+#define IMAGE_REL_PPC_BRTAKEN 512
+#define IMAGE_REL_PPC_BRNTAKEN 1024
+#define IMAGE_REL_PPC_TOCDEFN 2048
+#define IMAGE_REL_BASED_ABSOLUTE 0
+#define IMAGE_REL_BASED_HIGH 1
+#define IMAGE_REL_BASED_LOW 2
+#define IMAGE_REL_BASED_HIGHLOW 3
+#define IMAGE_REL_BASED_HIGHADJ 4
+#define IMAGE_REL_BASED_MIPS_JMPADDR 5
+#define IMAGE_ARCHIVE_START_SIZE 8
+#define IMAGE_ARCHIVE_START "!<arch>\n"
+#define IMAGE_ARCHIVE_END "`\n"
+#define IMAGE_ARCHIVE_PAD "\n"
+#define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
+#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
+#define IMAGE_ORDINAL_FLAG 0x80000000
+#define IMAGE_SNAP_BY_ORDINAL(o) ((o&IMAGE_ORDINAL_FLAG)!=0)
+#define IMAGE_ORDINAL(o) (o&0xffff)
+#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
+#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
+#define IMAGE_DEBUG_TYPE_UNKNOWN 0
+#define IMAGE_DEBUG_TYPE_COFF 1
+#define IMAGE_DEBUG_TYPE_CODEVIEW 2
+#define IMAGE_DEBUG_TYPE_FPO 3
+#define IMAGE_DEBUG_TYPE_MISC 4
+#define IMAGE_DEBUG_TYPE_EXCEPTION 5
+#define IMAGE_DEBUG_TYPE_FIXUP 6
+#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
+#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
+#define FRAME_FPO 0
+#define FRAME_TRAP 1
+#define FRAME_TSS 2
+#define FRAME_NONFPO 3
+#define IMAGE_DEBUG_MISC_EXENAME 1
+#define N_BTMASK 0x000F
+#define N_TMASK 0x0030
+#define N_TMASK1 0x00C0
+#define N_TMASK2 0x00F0
+#define N_BTSHFT 4
+#define N_TSHIFT 2
+#define IS_TEXT_UNICODE_ASCII16 1
+#define IS_TEXT_UNICODE_REVERSE_ASCII16 16
+#define IS_TEXT_UNICODE_STATISTICS 2
+#define IS_TEXT_UNICODE_REVERSE_STATISTICS 32
+#define IS_TEXT_UNICODE_CONTROLS 4
+#define IS_TEXT_UNICODE_REVERSE_CONTROLS 64
+#define IS_TEXT_UNICODE_SIGNATURE 8
+#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 128
+#define IS_TEXT_UNICODE_ILLEGAL_CHARS 256
+#define IS_TEXT_UNICODE_ODD_LENGTH 512
+#define IS_TEXT_UNICODE_NULL_BYTES 4096
+#define IS_TEXT_UNICODE_UNICODE_MASK 15
+#define IS_TEXT_UNICODE_REVERSE_MASK 240
+#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 3840
+#define IS_TEXT_UNICODE_NOT_ASCII_MASK 61440
+#define SERVICE_KERNEL_DRIVER 1
+#define SERVICE_FILE_SYSTEM_DRIVER 2
+#define SERVICE_ADAPTER 4
+#define SERVICE_RECOGNIZER_DRIVER 8
+#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER)
+#define SERVICE_WIN32_OWN_PROCESS 16
+#define SERVICE_WIN32_SHARE_PROCESS 32
+#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS)
+#define SERVICE_INTERACTIVE_PROCESS 256
+#define SERVICE_TYPE_ALL (SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS)
+#define SERVICE_BOOT_START 0
+#define SERVICE_SYSTEM_START 1
+#define SERVICE_AUTO_START 2
+#define SERVICE_DEMAND_START 3
+#define SERVICE_DISABLED 4
+#define SERVICE_ERROR_IGNORE 0
+#define SERVICE_ERROR_NORMAL 1
+#define SERVICE_ERROR_SEVERE 2
+#define SERVICE_ERROR_CRITICAL 3
+#define SE_OWNER_DEFAULTED 1
+#define SE_GROUP_DEFAULTED 2
+#define SE_DACL_PRESENT 4
+#define SE_DACL_DEFAULTED 8
+#define SE_SACL_PRESENT 16
+#define SE_SACL_DEFAULTED 32
+#define SE_DACL_AUTO_INHERIT_REQ 256
+#define SE_SACL_AUTO_INHERIT_REQ 512
+#define SE_DACL_AUTO_INHERITED 1024
+#define SE_SACL_AUTO_INHERITED 2048
+#define SE_DACL_PROTECTED 4096
+#define SE_SACL_PROTECTED 8192
+#define SE_SELF_RELATIVE 0x8000
+#define SECURITY_DESCRIPTOR_MIN_LENGTH 20
+#define SECURITY_DESCRIPTOR_REVISION 1
+#define SECURITY_DESCRIPTOR_REVISION1 1
+#define SE_PRIVILEGE_ENABLED_BY_DEFAULT 1
+#define SE_PRIVILEGE_ENABLED 2
+#define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000
+#define PRIVILEGE_SET_ALL_NECESSARY 1
+#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
+#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
+#define SECURITY_DYNAMIC_TRACKING TRUE
+#define SECURITY_STATIC_TRACKING FALSE
+#define TOKEN_SOURCE_LENGTH 8
+#define TOKEN_ADJUST_DEFAULT 128
+#define TOKEN_ADJUST_GROUPS 64
+#define TOKEN_ADJUST_PRIVILEGES 32
+#define TOKEN_ALL_ACCESS 0xf00ff
+#define TOKEN_ASSIGN_PRIMARY 1
+#define TOKEN_DUPLICATE 2
+#define TOKEN_EXECUTE 0x20000
+#define TOKEN_IMPERSONATE 4
+#define TOKEN_QUERY 8
+#define TOKEN_QUERY_SOURCE 16
+#define TOKEN_READ 0x20008
+#define TOKEN_WRITE 0x200e0
+#define DLL_PROCESS_DETACH 0
+#define DLL_PROCESS_ATTACH 1
+#define DLL_THREAD_ATTACH 2
+#define DLL_THREAD_DETACH 3
+#define DBG_CONTINUE 0x10002
+#define DBG_TERMINATE_THREAD 0x40010003
+#define DBG_TERMINATE_PROCESS 0x40010004
+#define DBG_CONTROL_C 0x40010005
+#define DBG_CONTROL_BREAK 0x40010008
+#define DBG_EXCEPTION_NOT_HANDLED 0x80010001
+#define TAPE_ABSOLUTE_POSITION 0
+#define TAPE_LOGICAL_POSITION 1
+#define TAPE_PSEUDO_LOGICAL_POSITION 2
+#define TAPE_REWIND 0
+#define TAPE_ABSOLUTE_BLOCK 1
+#define TAPE_LOGICAL_BLOCK 2
+#define TAPE_PSEUDO_LOGICAL_BLOCK 3
+#define TAPE_SPACE_END_OF_DATA 4
+#define TAPE_SPACE_RELATIVE_BLOCKS 5
+#define TAPE_SPACE_FILEMARKS 6
+#define TAPE_SPACE_SEQUENTIAL_FMKS 7
+#define TAPE_SPACE_SETMARKS 8
+#define TAPE_SPACE_SEQUENTIAL_SMKS 9
+#define TAPE_DRIVE_FIXED 1
+#define TAPE_DRIVE_SELECT 2
+#define TAPE_DRIVE_INITIATOR 4
+#define TAPE_DRIVE_ERASE_SHORT 16
+#define TAPE_DRIVE_ERASE_LONG 32
+#define TAPE_DRIVE_ERASE_BOP_ONLY 64
+#define TAPE_DRIVE_ERASE_IMMEDIATE 128
+#define TAPE_DRIVE_TAPE_CAPACITY 256
+#define TAPE_DRIVE_TAPE_REMAINING 512
+#define TAPE_DRIVE_FIXED_BLOCK 1024
+#define TAPE_DRIVE_VARIABLE_BLOCK 2048
+#define TAPE_DRIVE_WRITE_PROTECT 4096
+#define TAPE_DRIVE_EOT_WZ_SIZE 8192
+#define TAPE_DRIVE_ECC 0x10000
+#define TAPE_DRIVE_COMPRESSION 0x20000
+#define TAPE_DRIVE_PADDING 0x40000
+#define TAPE_DRIVE_REPORT_SMKS 0x80000
+#define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x100000
+#define TAPE_DRIVE_GET_LOGICAL_BLK 0x200000
+#define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x400000
+#define TAPE_DRIVE_EJECT_MEDIA 0x1000000
+#define TAPE_DRIVE_CLEAN_REQUESTS 0x2000000
+#define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x4000000
+#define TAPE_DRIVE_RESERVED_BIT 0x80000000
+#define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
+#define TAPE_DRIVE_TENSION 0x80000002
+#define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
+#define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
+#define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
+#define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
+#define TAPE_DRIVE_TENSION_IMMED 0x80000040
+#define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
+#define TAPE_DRIVE_SET_ECC 0x80000100
+#define TAPE_DRIVE_SET_COMPRESSION 0x80000200
+#define TAPE_DRIVE_SET_PADDING 0x80000400
+#define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
+#define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
+#define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
+#define TAPE_DRIVE_LOGICAL_BLK 0x80004000
+#define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
+#define TAPE_DRIVE_END_OF_DATA 0x80010000
+#define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
+#define TAPE_DRIVE_FILEMARKS 0x80040000
+#define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
+#define TAPE_DRIVE_SETMARKS 0x80100000
+#define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
+#define TAPE_DRIVE_REVERSE_POSITION 0x80400000
+#define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
+#define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
+#define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
+#define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
+#define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
+#define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
+#define TAPE_DRIVE_FORMAT 0xA0000000
+#define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
+#define TAPE_DRIVE_HIGH_FEATURES 0x80000000
+#define TAPE_FIXED_PARTITIONS 0
+#define TAPE_INITIATOR_PARTITIONS 2
+#define TAPE_SELECT_PARTITIONS 1
+#define TAPE_FILEMARKS 1
+#define TAPE_LONG_FILEMARKS 3
+#define TAPE_SETMARKS 0
+#define TAPE_SHORT_FILEMARKS 2
+#define TAPE_ERASE_LONG 1
+#define TAPE_ERASE_SHORT 0
+#define TAPE_LOAD 0
+#define TAPE_UNLOAD 1
+#define TAPE_TENSION 2
+#define TAPE_LOCK 3
+#define TAPE_UNLOCK 4
+#define TAPE_FORMAT 5
+#define VER_PLATFORM_WIN32s 0
+#define VER_PLATFORM_WIN32_WINDOWS 1
+#define VER_PLATFORM_WIN32_NT 2
+#define VER_NT_WORKSTATION 1
+#define VER_NT_DOMAIN_CONTROLLER 2
+#define VER_NT_SERVER 3
+#define VER_SUITE_SMALLBUSINESS 1
+#define VER_SUITE_ENTERPRISE 2
+#define VER_SUITE_BACKOFFICE 4
+#define VER_SUITE_TERMINAL 16
+#define VER_SUITE_SMALLBUSINESS_RESTRICTED 32
+#define VER_SUITE_DATACENTER 128
+#define VER_SUITE_PERSONAL 512
+#define BTYPE(x) ((x)&N_BTMASK)
+#define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT))
+#define ISFCN(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION<<N_BTSHFT))
+#define ISARY(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY<<N_BTSHFT))
+#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG||(x)==IMAGE_SYM_CLASS_UNION_TAG||(x)==IMAGE_SYM_CLASS_ENUM_TAG)
+#define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
+#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
+#define TLS_MINIMUM_AVAILABLE 64
+#define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
+#define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
+#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE 16384
+#define IO_REPARSE_TAG_RESERVED_ZERO 0
+#define IO_REPARSE_TAG_RESERVED_ONE 1
+#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
+#define IsReparseTagMicrosoft(x) ((x)&0x80000000)
+#define IsReparseTagHighLatency(x) ((x)&0x40000000)
+#define IsReparseTagNameSurrogate(x) ((x)&0x20000000)
+#define IO_REPARSE_TAG_VALID_VALUES 0xE000FFFF
+#define IsReparseTagValid(x) (!((x)&~IO_REPARSE_TAG_VALID_VALUES)&&((x)>IO_REPARSE_TAG_RESERVED_RANGE))
+#define IO_REPARSE_TAG_SYMBOLIC_LINK IO_REPARSE_TAG_RESERVED_ZERO
+#define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003
+#ifndef RC_INVOKED
+typedef DWORD ACCESS_MASK, *PACCESS_MASK;
+#ifndef _GUID_DEFINED /* also defined in basetyps.h */
+#define _GUID_DEFINED
+typedef struct _GUID {
+ unsigned long Data1;
+ unsigned short Data2;
+ unsigned short Data3;
+ unsigned char Data4[8];
+} GUID, *REFGUID, *LPGUID;
+#define SYSTEM_LUID { QuadPart:999 }
+#endif /* _GUID_DEFINED */
+typedef struct _GENERIC_MAPPING {
+ ACCESS_MASK GenericRead;
+ ACCESS_MASK GenericWrite;
+ ACCESS_MASK GenericExecute;
+ ACCESS_MASK GenericAll;
+} GENERIC_MAPPING, *PGENERIC_MAPPING;
+typedef struct _ACE_HEADER {
+ BYTE AceType;
+ BYTE AceFlags;
+ WORD AceSize;
+} ACE_HEADER;
+typedef struct _ACCESS_ALLOWED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD SidStart;
+} ACCESS_ALLOWED_ACE;
+typedef struct _ACCESS_DENIED_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD SidStart;
+} ACCESS_DENIED_ACE;
+typedef struct _SYSTEM_AUDIT_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD SidStart;
+} SYSTEM_AUDIT_ACE;
+typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
+typedef struct _SYSTEM_ALARM_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD SidStart;
+} SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE;
+typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD Flags;
+ GUID ObjectType;
+ GUID InheritedObjectType;
+ DWORD SidStart;
+} ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE;
+typedef struct _ACCESS_DENIED_OBJECT_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD Flags;
+ GUID ObjectType;
+ GUID InheritedObjectType;
+ DWORD SidStart;
+} ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE;
+typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD Flags;
+ GUID ObjectType;
+ GUID InheritedObjectType;
+ DWORD SidStart;
+} SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE;
+typedef struct _SYSTEM_ALARM_OBJECT_ACE {
+ ACE_HEADER Header;
+ ACCESS_MASK Mask;
+ DWORD Flags;
+ GUID ObjectType;
+ GUID InheritedObjectType;
+ DWORD SidStart;
+} SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE;
+typedef struct _ACL {
+ BYTE AclRevision;
+ BYTE Sbz1;
+ WORD AclSize;
+ WORD AceCount;
+ WORD Sbz2;
+} ACL,*PACL;
+typedef struct _ACL_REVISION_INFORMATION {
+ DWORD AclRevision;
+} ACL_REVISION_INFORMATION;
+typedef struct _ACL_SIZE_INFORMATION {
+ DWORD AceCount;
+ DWORD AclBytesInUse;
+ DWORD AclBytesFree;
+} ACL_SIZE_INFORMATION;
+
+/* FIXME: add more machines */
+#ifdef _X86_
+#define SIZE_OF_80387_REGISTERS 80
+#define CONTEXT_i386 0x10000
+#define CONTEXT_i486 0x10000
+#define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L)
+#define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L)
+#define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L)
+#define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L)
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)
+#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
+#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
+#define MAXIMUM_SUPPORTED_EXTENSION 512
+typedef struct _FLOATING_SAVE_AREA {
+ DWORD ControlWord;
+ DWORD StatusWord;
+ DWORD TagWord;
+ DWORD ErrorOffset;
+ DWORD ErrorSelector;
+ DWORD DataOffset;
+ DWORD DataSelector;
+ BYTE RegisterArea[80];
+ DWORD Cr0NpxState;
+} FLOATING_SAVE_AREA;
+typedef struct _CONTEXT {
+ DWORD ContextFlags;
+ DWORD Dr0;
+ DWORD Dr1;
+ DWORD Dr2;
+ DWORD Dr3;
+ DWORD Dr6;
+ DWORD Dr7;
+ FLOATING_SAVE_AREA FloatSave;
+ DWORD SegGs;
+ DWORD SegFs;
+ DWORD SegEs;
+ DWORD SegDs;
+ DWORD Edi;
+ DWORD Esi;
+ DWORD Ebx;
+ DWORD Edx;
+ DWORD Ecx;
+ DWORD Eax;
+ DWORD Ebp;
+ DWORD Eip;
+ DWORD SegCs;
+ DWORD EFlags;
+ DWORD Esp;
+ DWORD SegSs;
+ BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
+} CONTEXT;
+#elif defined(_PPC_)
+#define CONTEXT_CONTROL 1L
+#define CONTEXT_FLOATING_POINT 2L
+#define CONTEXT_INTEGER 4L
+#define CONTEXT_DEBUG_REGISTERS 8L
+#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
+typedef struct {
+ double Fpr0;
+ double Fpr1;
+ double Fpr2;
+ double Fpr3;
+ double Fpr4;
+ double Fpr5;
+ double Fpr6;
+ double Fpr7;
+ double Fpr8;
+ double Fpr9;
+ double Fpr10;
+ double Fpr11;
+ double Fpr12;
+ double Fpr13;
+ double Fpr14;
+ double Fpr15;
+ double Fpr16;
+ double Fpr17;
+ double Fpr18;
+ double Fpr19;
+ double Fpr20;
+ double Fpr21;
+ double Fpr22;
+ double Fpr23;
+ double Fpr24;
+ double Fpr25;
+ double Fpr26;
+ double Fpr27;
+ double Fpr28;
+ double Fpr29;
+ double Fpr30;
+ double Fpr31;
+ double Fpscr;
+ DWORD Gpr0;
+ DWORD Gpr1;
+ DWORD Gpr2;
+ DWORD Gpr3;
+ DWORD Gpr4;
+ DWORD Gpr5;
+ DWORD Gpr6;
+ DWORD Gpr7;
+ DWORD Gpr8;
+ DWORD Gpr9;
+ DWORD Gpr10;
+ DWORD Gpr11;
+ DWORD Gpr12;
+ DWORD Gpr13;
+ DWORD Gpr14;
+ DWORD Gpr15;
+ DWORD Gpr16;
+ DWORD Gpr17;
+ DWORD Gpr18;
+ DWORD Gpr19;
+ DWORD Gpr20;
+ DWORD Gpr21;
+ DWORD Gpr22;
+ DWORD Gpr23;
+ DWORD Gpr24;
+ DWORD Gpr25;
+ DWORD Gpr26;
+ DWORD Gpr27;
+ DWORD Gpr28;
+ DWORD Gpr29;
+ DWORD Gpr30;
+ DWORD Gpr31;
+ DWORD Cr;
+ DWORD Xer;
+ DWORD Msr;
+ DWORD Iar;
+ DWORD Lr;
+ DWORD Ctr;
+ DWORD ContextFlags;
+ DWORD Fill[3];
+ DWORD Dr0;
+ DWORD Dr1;
+ DWORD Dr2;
+ DWORD Dr3;
+ DWORD Dr4;
+ DWORD Dr5;
+ DWORD Dr6;
+ DWORD Dr7;
+} CONTEXT;
+#elif defined(_ALPHA_)
+#define CONTEXT_ALPHA 0x20000
+#define CONTEXT_CONTROL (CONTEXT_ALPHA|1L)
+#define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA|2L)
+#define CONTEXT_INTEGER (CONTEXT_ALPHA|4L)
+#define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER)
+typedef struct _CONTEXT {
+ ULONGLONG FltF0;
+ ULONGLONG FltF1;
+ ULONGLONG FltF2;
+ ULONGLONG FltF3;
+ ULONGLONG FltF4;
+ ULONGLONG FltF5;
+ ULONGLONG FltF6;
+ ULONGLONG FltF7;
+ ULONGLONG FltF8;
+ ULONGLONG FltF9;
+ ULONGLONG FltF10;
+ ULONGLONG FltF11;
+ ULONGLONG FltF12;
+ ULONGLONG FltF13;
+ ULONGLONG FltF14;
+ ULONGLONG FltF15;
+ ULONGLONG FltF16;
+ ULONGLONG FltF17;
+ ULONGLONG FltF18;
+ ULONGLONG FltF19;
+ ULONGLONG FltF20;
+ ULONGLONG FltF21;
+ ULONGLONG FltF22;
+ ULONGLONG FltF23;
+ ULONGLONG FltF24;
+ ULONGLONG FltF25;
+ ULONGLONG FltF26;
+ ULONGLONG FltF27;
+ ULONGLONG FltF28;
+ ULONGLONG FltF29;
+ ULONGLONG FltF30;
+ ULONGLONG FltF31;
+ ULONGLONG IntV0;
+ ULONGLONG IntT0;
+ ULONGLONG IntT1;
+ ULONGLONG IntT2;
+ ULONGLONG IntT3;
+ ULONGLONG IntT4;
+ ULONGLONG IntT5;
+ ULONGLONG IntT6;
+ ULONGLONG IntT7;
+ ULONGLONG IntS0;
+ ULONGLONG IntS1;
+ ULONGLONG IntS2;
+ ULONGLONG IntS3;
+ ULONGLONG IntS4;
+ ULONGLONG IntS5;
+ ULONGLONG IntFp;
+ ULONGLONG IntA0;
+ ULONGLONG IntA1;
+ ULONGLONG IntA2;
+ ULONGLONG IntA3;
+ ULONGLONG IntA4;
+ ULONGLONG IntA5;
+ ULONGLONG IntT8;
+ ULONGLONG IntT9;
+ ULONGLONG IntT10;
+ ULONGLONG IntT11;
+ ULONGLONG IntRa;
+ ULONGLONG IntT12;
+ ULONGLONG IntAt;
+ ULONGLONG IntGp;
+ ULONGLONG IntSp;
+ ULONGLONG IntZero;
+ ULONGLONG Fpcr;
+ ULONGLONG SoftFpcr;
+ ULONGLONG Fir;
+ DWORD Psr;
+ DWORD ContextFlags;
+ DWORD Fill[4];
+} CONTEXT;
+#elif defined(SHx)
+
+/* These are the debug or break registers on the SH3 */
+typedef struct _DEBUG_REGISTERS {
+ ULONG BarA;
+ UCHAR BasrA;
+ UCHAR BamrA;
+ USHORT BbrA;
+ ULONG BarB;
+ UCHAR BasrB;
+ UCHAR BamrB;
+ USHORT BbrB;
+ ULONG BdrB;
+ ULONG BdmrB;
+ USHORT Brcr;
+ USHORT Align;
+} DEBUG_REGISTERS, *PDEBUG_REGISTERS;
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_SH3 0x00000040
+#define CONTEXT_SH4 0x000000c0 /* CONTEXT_SH3 | 0x80 - must contain the SH3 bits */
+
+#ifdef SH3
+#define CONTEXT_CONTROL (CONTEXT_SH3 | 0x00000001L)
+#define CONTEXT_INTEGER (CONTEXT_SH3 | 0x00000002L)
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH3 | 0x00000008L)
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS)
+#else /* SH4 */
+#define CONTEXT_CONTROL (CONTEXT_SH4 | 0x00000001L)
+#define CONTEXT_INTEGER (CONTEXT_SH4 | 0x00000002L)
+#define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH4 | 0x00000008L)
+#define CONTEXT_FLOATING_POINT (CONTEXT_SH4 | 0x00000004L)
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS | CONTEXT_FLOATING_POINT)
+#endif
+
+/* Context Frame */
+
+/* This frame is used to store a limited processor context into the */
+/* Thread structure for CPUs which have no floating point support. */
+
+typedef struct _CONTEXT {
+ /* The flags values within this flag control the contents of */
+ /* a CONTEXT record. */
+
+ /* If the context record is used as an input parameter, then */
+ /* for each portion of the context record controlled by a flag */
+ /* whose value is set, it is assumed that that portion of the */
+ /* context record contains valid context. If the context record */
+ /* is being used to modify a thread's context, then only that */
+ /* portion of the threads context will be modified. */
+
+ /* If the context record is used as an IN OUT parameter to capture */
+ /* the context of a thread, then only those portions of the thread's */
+ /* context corresponding to set flags will be returned. */
+
+ /* The context record is never used as an OUT only parameter. */
+
+
+ ULONG ContextFlags;
+
+ /* This section is specified/returned if the ContextFlags word contains */
+ /* the flag CONTEXT_INTEGER. */
+
+ /* N.B. The registers RA and R15 are defined in this section, but are */
+ /* considered part of the control context rather than part of the integer */
+ /* context. */
+
+ ULONG PR;
+ ULONG MACH;
+ ULONG MACL;
+ ULONG GBR;
+ ULONG R0;
+ ULONG R1;
+ ULONG R2;
+ ULONG R3;
+ ULONG R4;
+ ULONG R5;
+ ULONG R6;
+ ULONG R7;
+ ULONG R8;
+ ULONG R9;
+ ULONG R10;
+ ULONG R11;
+ ULONG R12;
+ ULONG R13;
+ ULONG R14;
+ ULONG R15;
+
+ /* This section is specified/returned if the ContextFlags word contains */
+ /* the flag CONTEXT_CONTROL. */
+
+ /* N.B. The registers r15 and ra are defined in the integer section, */
+ /* but are considered part of the control context rather than part of */
+ /* the integer context. */
+
+ ULONG Fir;
+ ULONG Psr;
+
+#if !defined(SH3e) && !defined(SH4)
+ ULONG OldStuff[2];
+ DEBUG_REGISTERS DebugRegisters;
+#else
+ ULONG Fpscr;
+ ULONG Fpul;
+ ULONG FRegs[16];
+#if defined(SH4)
+ ULONG xFRegs[16];
+#endif
+#endif
+} CONTEXT;
+
+#elif defined(MIPS)
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_R4000 0x00010000 /* r4000 context */
+
+#define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001L)
+#define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002L)
+#define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004L)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)
+
+/* Context Frame */
+
+/* N.B. This frame must be exactly a multiple of 16 bytes in length. */
+
+/* This frame has a several purposes: 1) it is used as an argument to */
+/* NtContinue, 2) it is used to constuct a call frame for APC delivery, */
+/* 3) it is used to construct a call frame for exception dispatching */
+/* in user mode, and 4) it is used in the user level thread creation */
+/* routines. */
+
+/* The layout of the record conforms to a standard call frame. */
+
+
+typedef struct _CONTEXT {
+
+ /* This section is always present and is used as an argument build */
+ /* area. */
+
+ DWORD Argument[4];
+
+ /* This section is specified/returned if the ContextFlags word contains */
+ /* the flag CONTEXT_FLOATING_POINT. */
+
+ DWORD FltF0;
+ DWORD FltF1;
+ DWORD FltF2;
+ DWORD FltF3;
+ DWORD FltF4;
+ DWORD FltF5;
+ DWORD FltF6;
+ DWORD FltF7;
+ DWORD FltF8;
+ DWORD FltF9;
+ DWORD FltF10;
+ DWORD FltF11;
+ DWORD FltF12;
+ DWORD FltF13;
+ DWORD FltF14;
+ DWORD FltF15;
+ DWORD FltF16;
+ DWORD FltF17;
+ DWORD FltF18;
+ DWORD FltF19;
+ DWORD FltF20;
+ DWORD FltF21;
+ DWORD FltF22;
+ DWORD FltF23;
+ DWORD FltF24;
+ DWORD FltF25;
+ DWORD FltF26;
+ DWORD FltF27;
+ DWORD FltF28;
+ DWORD FltF29;
+ DWORD FltF30;
+ DWORD FltF31;
+
+ /* This section is specified/returned if the ContextFlags word contains */
+ /* the flag CONTEXT_INTEGER. */
+
+ /* N.B. The registers gp, sp, and ra are defined in this section, but are */
+ /* considered part of the control context rather than part of the integer */
+ /* context. */
+
+ /* N.B. Register zero is not stored in the frame. */
+
+ DWORD IntZero;
+ DWORD IntAt;
+ DWORD IntV0;
+ DWORD IntV1;
+ DWORD IntA0;
+ DWORD IntA1;
+ DWORD IntA2;
+ DWORD IntA3;
+ DWORD IntT0;
+ DWORD IntT1;
+ DWORD IntT2;
+ DWORD IntT3;
+ DWORD IntT4;
+ DWORD IntT5;
+ DWORD IntT6;
+ DWORD IntT7;
+ DWORD IntS0;
+ DWORD IntS1;
+ DWORD IntS2;
+ DWORD IntS3;
+ DWORD IntS4;
+ DWORD IntS5;
+ DWORD IntS6;
+ DWORD IntS7;
+ DWORD IntT8;
+ DWORD IntT9;
+ DWORD IntK0;
+ DWORD IntK1;
+ DWORD IntGp;
+ DWORD IntSp;
+ DWORD IntS8;
+ DWORD IntRa;
+ DWORD IntLo;
+ DWORD IntHi;
+
+ /* This section is specified/returned if the ContextFlags word contains */
+ /* the flag CONTEXT_FLOATING_POINT. */
+
+ DWORD Fsr;
+
+ /* This section is specified/returned if the ContextFlags word contains */
+ /* the flag CONTEXT_CONTROL. */
+
+ /* N.B. The registers gp, sp, and ra are defined in the integer section, */
+ /* but are considered part of the control context rather than part of */
+ /* the integer context. */
+
+ DWORD Fir;
+ DWORD Psr;
+
+ /* The flags values within this flag control the contents of */
+ /* a CONTEXT record. */
+
+ /* If the context record is used as an input parameter, then */
+ /* for each portion of the context record controlled by a flag */
+ /* whose value is set, it is assumed that that portion of the */
+ /* context record contains valid context. If the context record */
+ /* is being used to modify a thread's context, then only that */
+ /* portion of the threads context will be modified. */
+
+ /* If the context record is used as an IN OUT parameter to capture */
+ /* the context of a thread, then only those portions of the thread's */
+ /* context corresponding to set flags will be returned. */
+
+ /* The context record is never used as an OUT only parameter. */
+
+ DWORD ContextFlags;
+
+ DWORD Fill[2];
+
+} CONTEXT;
+#elif defined(ARM)
+
+/* The following flags control the contents of the CONTEXT structure. */
+
+#define CONTEXT_ARM 0x0000040
+#define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001L)
+#define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002L)
+
+#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
+
+typedef struct _CONTEXT {
+ /* The flags values within this flag control the contents of
+ a CONTEXT record.
+
+ If the context record is used as an input parameter, then
+ for each portion of the context record controlled by a flag
+ whose value is set, it is assumed that that portion of the
+ context record contains valid context. If the context record
+ is being used to modify a thread's context, then only that
+ portion of the threads context will be modified.
+
+ If the context record is used as an IN OUT parameter to capture
+ the context of a thread, then only those portions of the thread's
+ context corresponding to set flags will be returned.
+
+ The context record is never used as an OUT only parameter. */
+
+ ULONG ContextFlags;
+
+ /* This section is specified/returned if the ContextFlags word contains
+ the flag CONTEXT_INTEGER. */
+ ULONG R0;
+ ULONG R1;
+ ULONG R2;
+ ULONG R3;
+ ULONG R4;
+ ULONG R5;
+ ULONG R6;
+ ULONG R7;
+ ULONG R8;
+ ULONG R9;
+ ULONG R10;
+ ULONG R11;
+ ULONG R12;
+
+ ULONG Sp;
+ ULONG Lr;
+ ULONG Pc;
+ ULONG Psr;
+} CONTEXT;
+
+#else
+#error "undefined processor type"
+#endif
+typedef CONTEXT *PCONTEXT,*LPCONTEXT;
+typedef struct _EXCEPTION_RECORD {
+ DWORD ExceptionCode;
+ DWORD ExceptionFlags;
+ struct _EXCEPTION_RECORD *ExceptionRecord;
+ PVOID ExceptionAddress;
+ DWORD NumberParameters;
+ DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
+} EXCEPTION_RECORD,*PEXCEPTION_RECORD;
+typedef struct _EXCEPTION_POINTERS {
+ PEXCEPTION_RECORD ExceptionRecord;
+ PCONTEXT ContextRecord;
+} EXCEPTION_POINTERS,*PEXCEPTION_POINTERS,*LPEXCEPTION_POINTERS;
+typedef union _LARGE_INTEGER {
+ struct {
+ DWORD LowPart;
+ LONG HighPart;
+ } u;
+#if ! defined(NONAMELESSUNION) || defined(__cplusplus)
+ _ANONYMOUS_STRUCT struct {
+ DWORD LowPart;
+ LONG HighPart;
+ };
+#endif /* NONAMELESSUNION */
+ LONGLONG QuadPart;
+} LARGE_INTEGER, *PLARGE_INTEGER;
+typedef union _ULARGE_INTEGER {
+ struct {
+ DWORD LowPart;
+ DWORD HighPart;
+ } u;
+#if ! defined(NONAMELESSUNION) || defined(__cplusplus)
+ _ANONYMOUS_STRUCT struct {
+ DWORD LowPart;
+ DWORD HighPart;
+ };
+#endif /* NONAMELESSUNION */
+ ULONGLONG QuadPart;
+} ULARGE_INTEGER, *PULARGE_INTEGER;
+typedef LARGE_INTEGER LUID,*PLUID;
+#pragma pack(push,4)
+typedef struct _LUID_AND_ATTRIBUTES {
+ LUID Luid;
+ DWORD Attributes;
+} LUID_AND_ATTRIBUTES;
+#pragma pack(pop)
+typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
+typedef struct _PRIVILEGE_SET {
+ DWORD PrivilegeCount;
+ DWORD Control;
+ LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
+} PRIVILEGE_SET,*PPRIVILEGE_SET;
+typedef struct _SECURITY_ATTRIBUTES {
+ DWORD nLength;
+ LPVOID lpSecurityDescriptor;
+ BOOL bInheritHandle;
+} SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
+typedef enum _SECURITY_IMPERSONATION_LEVEL {
+ SecurityAnonymous,
+ SecurityIdentification,
+ SecurityImpersonation,
+ SecurityDelegation
+} SECURITY_IMPERSONATION_LEVEL;
+typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
+typedef struct _SECURITY_QUALITY_OF_SERVICE {
+ DWORD Length;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+ BOOLEAN EffectiveOnly;
+} SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
+typedef PVOID PACCESS_TOKEN;
+typedef struct _SE_IMPERSONATION_STATE {
+ PACCESS_TOKEN Token;
+ BOOLEAN CopyOnOpen;
+ BOOLEAN EffectiveOnly;
+ SECURITY_IMPERSONATION_LEVEL Level;
+} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
+typedef struct _SID_IDENTIFIER_AUTHORITY {
+ BYTE Value[6];
+} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
+typedef PVOID PSID;
+typedef struct _SID {
+ BYTE Revision;
+ BYTE SubAuthorityCount;
+ SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
+ DWORD SubAuthority[ANYSIZE_ARRAY];
+} SID, *PISID;
+typedef struct _SID_AND_ATTRIBUTES {
+ PSID Sid;
+ DWORD Attributes;
+} SID_AND_ATTRIBUTES;
+typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
+typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
+typedef struct _TOKEN_SOURCE {
+ CHAR SourceName[TOKEN_SOURCE_LENGTH];
+ LUID SourceIdentifier;
+} TOKEN_SOURCE,*PTOKEN_SOURCE;
+typedef struct _TOKEN_CONTROL {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LUID ModifiedId;
+ TOKEN_SOURCE TokenSource;
+} TOKEN_CONTROL,*PTOKEN_CONTROL;
+typedef struct _TOKEN_DEFAULT_DACL {
+ PACL DefaultDacl;
+} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
+typedef struct _TOKEN_GROUPS {
+ DWORD GroupCount;
+ SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
+} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS;
+typedef struct _TOKEN_OWNER {
+ PSID Owner;
+} TOKEN_OWNER,*PTOKEN_OWNER;
+typedef struct _TOKEN_PRIMARY_GROUP {
+ PSID PrimaryGroup;
+} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
+typedef struct _TOKEN_PRIVILEGES {
+ DWORD PrivilegeCount;
+ LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
+} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
+typedef enum tagTOKEN_TYPE { TokenPrimary=1,TokenImpersonation }TOKEN_TYPE;
+typedef struct _TOKEN_STATISTICS {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LARGE_INTEGER ExpirationTime;
+ TOKEN_TYPE TokenType;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ DWORD DynamicCharged;
+ DWORD DynamicAvailable;
+ DWORD GroupCount;
+ DWORD PrivilegeCount;
+ LUID ModifiedId;
+} TOKEN_STATISTICS;
+typedef struct _TOKEN_USER {
+ SID_AND_ATTRIBUTES User;
+} TOKEN_USER, *PTOKEN_USER;
+typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
+typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
+typedef struct _SECURITY_DESCRIPTOR {
+ BYTE Revision;
+ BYTE Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PSID Owner;
+ PSID Group;
+ PACL Sacl;
+ PACL Dacl;
+} SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
+typedef enum _TOKEN_INFORMATION_CLASS {
+ TokenUser=1,TokenGroups,TokenPrivileges,TokenOwner,
+ TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType,
+ TokenImpersonationLevel,TokenStatistics,TokenRestrictedSids,
+ TokenSessionId
+} TOKEN_INFORMATION_CLASS;
+typedef enum _SID_NAME_USE {
+ SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,
+ SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown
+} SID_NAME_USE,*PSID_NAME_USE;
+typedef struct _QUOTA_LIMITS {
+ SIZE_T PagedPoolLimit;
+ SIZE_T NonPagedPoolLimit;
+ SIZE_T MinimumWorkingSetSize;
+ SIZE_T MaximumWorkingSetSize;
+ SIZE_T PagefileLimit;
+ LARGE_INTEGER TimeLimit;
+} QUOTA_LIMITS,*PQUOTA_LIMITS;
+typedef struct _IO_COUNTERS {
+ ULONGLONG ReadOperationCount;
+ ULONGLONG WriteOperationCount;
+ ULONGLONG OtherOperationCount;
+ ULONGLONG ReadTransferCount;
+ ULONGLONG WriteTransferCount;
+ ULONGLONG OtherTransferCount;
+} IO_COUNTERS, *PIO_COUNTERS;
+typedef struct _FILE_NOTIFY_INFORMATION {
+ DWORD NextEntryOffset;
+ DWORD Action;
+ DWORD FileNameLength;
+ WCHAR FileName[1];
+} FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
+typedef struct _TAPE_ERASE {
+ DWORD Type;
+ BOOLEAN Immediate;
+} TAPE_ERASE,*PTAPE_ERASE;
+typedef struct _TAPE_GET_DRIVE_PARAMETERS {
+ BOOLEAN ECC;
+ BOOLEAN Compression;
+ BOOLEAN DataPadding;
+ BOOLEAN ReportSetmarks;
+ DWORD DefaultBlockSize;
+ DWORD MaximumBlockSize;
+ DWORD MinimumBlockSize;
+ DWORD MaximumPartitionCount;
+ DWORD FeaturesLow;
+ DWORD FeaturesHigh;
+ DWORD EOTWarningZoneSize;
+} TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS;
+typedef struct _TAPE_GET_MEDIA_PARAMETERS {
+ LARGE_INTEGER Capacity;
+ LARGE_INTEGER Remaining;
+ DWORD BlockSize;
+ DWORD PartitionCount;
+ BOOLEAN WriteProtected;
+} TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS;
+typedef struct _TAPE_GET_POSITION {
+ ULONG Type;
+ ULONG Partition;
+ ULONG OffsetLow;
+ ULONG OffsetHigh;
+} TAPE_GET_POSITION,*PTAPE_GET_POSITION;
+typedef struct _TAPE_PREPARE {
+ DWORD Operation;
+ BOOLEAN Immediate;
+} TAPE_PREPARE,*PTAPE_PREPARE;
+typedef struct _TAPE_SET_DRIVE_PARAMETERS {
+ BOOLEAN ECC;
+ BOOLEAN Compression;
+ BOOLEAN DataPadding;
+ BOOLEAN ReportSetmarks;
+ ULONG EOTWarningZoneSize;
+} TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS;
+typedef struct _TAPE_SET_MEDIA_PARAMETERS {
+ ULONG BlockSize;
+} TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS;
+typedef struct _TAPE_SET_POSITION {
+ DWORD Method;
+ DWORD Partition;
+ LARGE_INTEGER Offset;
+ BOOLEAN Immediate;
+} TAPE_SET_POSITION,*PTAPE_SET_POSITION;
+typedef struct _TAPE_WRITE_MARKS {
+ DWORD Type;
+ DWORD Count;
+ BOOLEAN Immediate;
+} TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS;
+typedef struct _TAPE_CREATE_PARTITION {
+ DWORD Method;
+ DWORD Count;
+ DWORD Size;
+} TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION;
+typedef struct _MEMORY_BASIC_INFORMATION {
+ PVOID BaseAddress;
+ PVOID AllocationBase;
+ DWORD AllocationProtect;
+ DWORD RegionSize;
+ DWORD State;
+ DWORD Protect;
+ DWORD Type;
+} MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
+typedef struct _MESSAGE_RESOURCE_ENTRY {
+ WORD Length;
+ WORD Flags;
+ BYTE Text[1];
+} MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
+typedef struct _MESSAGE_RESOURCE_BLOCK {
+ DWORD LowId;
+ DWORD HighId;
+ DWORD OffsetToEntries;
+} MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
+typedef struct _MESSAGE_RESOURCE_DATA {
+ DWORD NumberOfBlocks;
+ MESSAGE_RESOURCE_BLOCK Blocks[1];
+} MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
+typedef struct _LIST_ENTRY {
+ struct _LIST_ENTRY *Flink;
+ struct _LIST_ENTRY *Blink;
+} LIST_ENTRY,*PLIST_ENTRY;
+typedef struct _RTL_CRITICAL_SECTION_DEBUG {
+ WORD Type;
+ WORD CreatorBackTraceIndex;
+ struct _RTL_CRITICAL_SECTION *CriticalSection;
+ LIST_ENTRY ProcessLocksList;
+ DWORD EntryCount;
+ DWORD ContentionCount;
+ DWORD Spare[2];
+} RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG;
+typedef struct _RTL_CRITICAL_SECTION {
+ PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
+ LONG LockCount;
+ LONG RecursionCount;
+ HANDLE OwningThread;
+ HANDLE LockSemaphore;
+ DWORD Reserved;
+} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
+typedef struct _EVENTLOGRECORD {
+ DWORD Length;
+ DWORD Reserved;
+ DWORD RecordNumber;
+ DWORD TimeGenerated;
+ DWORD TimeWritten;
+ DWORD EventID;
+ WORD EventType;
+ WORD NumStrings;
+ WORD EventCategory;
+ WORD ReservedFlags;
+ DWORD ClosingRecordNumber;
+ DWORD StringOffset;
+ DWORD UserSidLength;
+ DWORD UserSidOffset;
+ DWORD DataLength;
+ DWORD DataOffset;
+} EVENTLOGRECORD,*PEVENTLOGRECORD;
+typedef struct _OSVERSIONINFOA {
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ CHAR szCSDVersion[128];
+} OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA;
+typedef struct _OSVERSIONINFOW {
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ WCHAR szCSDVersion[128];
+} OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW;
+typedef struct _OSVERSIONINFOEXA {
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ CHAR szCSDVersion[128];
+ WORD wServicePackMajor;
+ WORD wServicePackMinor;
+ WORD wSuiteMask;
+ BYTE wProductType;
+ BYTE wReserved;
+} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
+typedef struct _OSVERSIONINFOEXW {
+ DWORD dwOSVersionInfoSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformId;
+ WCHAR szCSDVersion[128];
+ WORD wServicePackMajor;
+ WORD wServicePackMinor;
+ WORD wSuiteMask;
+ BYTE wProductType;
+ BYTE wReserved;
+} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;
+#pragma pack(push,2)
+typedef struct _IMAGE_VXD_HEADER {
+ WORD e32_magic;
+ BYTE e32_border;
+ BYTE e32_worder;
+ DWORD e32_level;
+ WORD e32_cpu;
+ WORD e32_os;
+ DWORD e32_ver;
+ DWORD e32_mflags;
+ DWORD e32_mpages;
+ DWORD e32_startobj;
+ DWORD e32_eip;
+ DWORD e32_stackobj;
+ DWORD e32_esp;
+ DWORD e32_pagesize;
+ DWORD e32_lastpagesize;
+ DWORD e32_fixupsize;
+ DWORD e32_fixupsum;
+ DWORD e32_ldrsize;
+ DWORD e32_ldrsum;
+ DWORD e32_objtab;
+ DWORD e32_objcnt;
+ DWORD e32_objmap;
+ DWORD e32_itermap;
+ DWORD e32_rsrctab;
+ DWORD e32_rsrccnt;
+ DWORD e32_restab;
+ DWORD e32_enttab;
+ DWORD e32_dirtab;
+ DWORD e32_dircnt;
+ DWORD e32_fpagetab;
+ DWORD e32_frectab;
+ DWORD e32_impmod;
+ DWORD e32_impmodcnt;
+ DWORD e32_impproc;
+ DWORD e32_pagesum;
+ DWORD e32_datapage;
+ DWORD e32_preload;
+ DWORD e32_nrestab;
+ DWORD e32_cbnrestab;
+ DWORD e32_nressum;
+ DWORD e32_autodata;
+ DWORD e32_debuginfo;
+ DWORD e32_debuglen;
+ DWORD e32_instpreload;
+ DWORD e32_instdemand;
+ DWORD e32_heapsize;
+ BYTE e32_res3[12];
+ DWORD e32_winresoff;
+ DWORD e32_winreslen;
+ WORD e32_devid;
+ WORD e32_ddkver;
+} IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER;
+#pragma pack(pop)
+#pragma pack(push,4)
+typedef struct _IMAGE_FILE_HEADER {
+ WORD Machine;
+ WORD NumberOfSections;
+ DWORD TimeDateStamp;
+ DWORD PointerToSymbolTable;
+ DWORD NumberOfSymbols;
+ WORD SizeOfOptionalHeader;
+ WORD Characteristics;
+} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
+typedef struct _IMAGE_DATA_DIRECTORY {
+ DWORD VirtualAddress;
+ DWORD Size;
+} IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
+typedef struct _IMAGE_OPTIONAL_HEADER {
+ WORD Magic;
+ BYTE MajorLinkerVersion;
+ BYTE MinorLinkerVersion;
+ DWORD SizeOfCode;
+ DWORD SizeOfInitializedData;
+ DWORD SizeOfUninitializedData;
+ DWORD AddressOfEntryPoint;
+ DWORD BaseOfCode;
+ DWORD BaseOfData;
+ DWORD ImageBase;
+ DWORD SectionAlignment;
+ DWORD FileAlignment;
+ WORD MajorOperatingSystemVersion;
+ WORD MinorOperatingSystemVersion;
+ WORD MajorImageVersion;
+ WORD MinorImageVersion;
+ WORD MajorSubsystemVersion;
+ WORD MinorSubsystemVersion;
+ DWORD Reserved1;
+ DWORD SizeOfImage;
+ DWORD SizeOfHeaders;
+ DWORD CheckSum;
+ WORD Subsystem;
+ WORD DllCharacteristics;
+ DWORD SizeOfStackReserve;
+ DWORD SizeOfStackCommit;
+ DWORD SizeOfHeapReserve;
+ DWORD SizeOfHeapCommit;
+ DWORD LoaderFlags;
+ DWORD NumberOfRvaAndSizes;
+ IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
+} IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;
+typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
+ WORD Magic;
+ BYTE MajorLinkerVersion;
+ BYTE MinorLinkerVersion;
+ DWORD SizeOfCode;
+ DWORD SizeOfInitializedData;
+ DWORD SizeOfUninitializedData;
+ DWORD AddressOfEntryPoint;
+ DWORD BaseOfCode;
+ DWORD BaseOfData;
+ DWORD BaseOfBss;
+ DWORD GprMask;
+ DWORD CprMask[4];
+ DWORD GpValue;
+} IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct _IMAGE_DOS_HEADER {
+ WORD e_magic;
+ WORD e_cblp;
+ WORD e_cp;
+ WORD e_crlc;
+ WORD e_cparhdr;
+ WORD e_minalloc;
+ WORD e_maxalloc;
+ WORD e_ss;
+ WORD e_sp;
+ WORD e_csum;
+ WORD e_ip;
+ WORD e_cs;
+ WORD e_lfarlc;
+ WORD e_ovno;
+ WORD e_res[4];
+ WORD e_oemid;
+ WORD e_oeminfo;
+ WORD e_res2[10];
+ LONG e_lfanew;
+} IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
+typedef struct _IMAGE_OS2_HEADER {
+ WORD ne_magic;
+ CHAR ne_ver;
+ CHAR ne_rev;
+ WORD ne_enttab;
+ WORD ne_cbenttab;
+ LONG ne_crc;
+ WORD ne_flags;
+ WORD ne_autodata;
+ WORD ne_heap;
+ WORD ne_stack;
+ LONG ne_csip;
+ LONG ne_sssp;
+ WORD ne_cseg;
+ WORD ne_cmod;
+ WORD ne_cbnrestab;
+ WORD ne_segtab;
+ WORD ne_rsrctab;
+ WORD ne_restab;
+ WORD ne_modtab;
+ WORD ne_imptab;
+ LONG ne_nrestab;
+ WORD ne_cmovent;
+ WORD ne_align;
+ WORD ne_cres;
+ BYTE ne_exetyp;
+ BYTE ne_flagsothers;
+ WORD ne_pretthunks;
+ WORD ne_psegrefbytes;
+ WORD ne_swaparea;
+ WORD ne_expver;
+} IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER;
+#pragma pack(pop)
+#pragma pack(push,4)
+typedef struct _IMAGE_NT_HEADERS {
+ DWORD Signature;
+ IMAGE_FILE_HEADER FileHeader;
+ IMAGE_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS;
+typedef struct _IMAGE_ROM_HEADERS {
+ IMAGE_FILE_HEADER FileHeader;
+ IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
+} IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS;
+typedef struct _IMAGE_SECTION_HEADER {
+ BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
+ union {
+ DWORD PhysicalAddress;
+ DWORD VirtualSize;
+ } Misc;
+ DWORD VirtualAddress;
+ DWORD SizeOfRawData;
+ DWORD PointerToRawData;
+ DWORD PointerToRelocations;
+ DWORD PointerToLinenumbers;
+ WORD NumberOfRelocations;
+ WORD NumberOfLinenumbers;
+ DWORD Characteristics;
+} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct _IMAGE_SYMBOL {
+ union {
+ BYTE ShortName[8];
+ struct {
+ DWORD Short;
+ DWORD Long;
+ } Name;
+ PBYTE LongName[2];
+ } N;
+ DWORD Value;
+ SHORT SectionNumber;
+ WORD Type;
+ BYTE StorageClass;
+ BYTE NumberOfAuxSymbols;
+} IMAGE_SYMBOL,*PIMAGE_SYMBOL;
+typedef union _IMAGE_AUX_SYMBOL {
+ struct {
+ DWORD TagIndex;
+ union {
+ struct {
+ WORD Linenumber;
+ WORD Size;
+ } LnSz;
+ DWORD TotalSize;
+ } Misc;
+ union {
+ struct {
+ DWORD PointerToLinenumber;
+ DWORD PointerToNextFunction;
+ } Function;
+ struct {
+ WORD Dimension[4];
+ } Array;
+ } FcnAry;
+ WORD TvIndex;
+ } Sym;
+ struct {
+ BYTE Name[IMAGE_SIZEOF_SYMBOL];
+ } File;
+ struct {
+ DWORD Length;
+ WORD NumberOfRelocations;
+ WORD NumberOfLinenumbers;
+ DWORD CheckSum;
+ SHORT Number;
+ BYTE Selection;
+ } Section;
+} IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL;
+typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
+ DWORD NumberOfSymbols;
+ DWORD LvaToFirstSymbol;
+ DWORD NumberOfLinenumbers;
+ DWORD LvaToFirstLinenumber;
+ DWORD RvaToFirstByteOfCode;
+ DWORD RvaToLastByteOfCode;
+ DWORD RvaToFirstByteOfData;
+ DWORD RvaToLastByteOfData;
+} IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
+typedef struct _IMAGE_RELOCATION {
+ _ANONYMOUS_UNION union {
+ DWORD VirtualAddress;
+ DWORD RelocCount;
+ } DUMMYUNIONNAME;
+ DWORD SymbolTableIndex;
+ WORD Type;
+} IMAGE_RELOCATION,*PIMAGE_RELOCATION;
+#pragma pack(pop)
+#pragma pack(push,4)
+typedef struct _IMAGE_BASE_RELOCATION {
+ DWORD VirtualAddress;
+ DWORD SizeOfBlock;
+} IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
+#pragma pack(pop)
+#pragma pack(push,2)
+typedef struct _IMAGE_LINENUMBER {
+ union {
+ DWORD SymbolTableIndex;
+ DWORD VirtualAddress;
+ } Type;
+ WORD Linenumber;
+} IMAGE_LINENUMBER,*PIMAGE_LINENUMBER;
+#pragma pack(pop)
+#pragma pack(push,4)
+typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
+ BYTE Name[16];
+ BYTE Date[12];
+ BYTE UserID[6];
+ BYTE GroupID[6];
+ BYTE Mode[8];
+ BYTE Size[10];
+ BYTE EndHeader[2];
+} IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER;
+typedef struct _IMAGE_EXPORT_DIRECTORY {
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ DWORD Name;
+ DWORD Base;
+ DWORD NumberOfFunctions;
+ DWORD NumberOfNames;
+ PDWORD *AddressOfFunctions;
+ PDWORD *AddressOfNames;
+ PWORD *AddressOfNameOrdinals;
+} IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
+typedef struct _IMAGE_IMPORT_BY_NAME {
+ WORD Hint;
+ BYTE Name[1];
+} IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
+typedef struct _IMAGE_THUNK_DATA {
+ union {
+ PBYTE ForwarderString;
+ PDWORD Function;
+ DWORD Ordinal;
+ PIMAGE_IMPORT_BY_NAME AddressOfData;
+ } u1;
+} IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA;
+typedef struct _IMAGE_IMPORT_DESCRIPTOR {
+ _ANONYMOUS_UNION union {
+ DWORD Characteristics;
+ PIMAGE_THUNK_DATA OriginalFirstThunk;
+ } DUMMYUNIONNAME;
+ DWORD TimeDateStamp;
+ DWORD ForwarderChain;
+ DWORD Name;
+ PIMAGE_THUNK_DATA FirstThunk;
+} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
+typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
+ DWORD TimeDateStamp;
+ WORD OffsetModuleName;
+ WORD NumberOfModuleForwarderRefs;
+} IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR;
+typedef struct _IMAGE_BOUND_FORWARDER_REF {
+ DWORD TimeDateStamp;
+ WORD OffsetModuleName;
+ WORD Reserved;
+} IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF;
+typedef void(NTAPI *PIMAGE_TLS_CALLBACK)(PVOID,DWORD,PVOID);
+typedef struct _IMAGE_TLS_DIRECTORY {
+ DWORD StartAddressOfRawData;
+ DWORD EndAddressOfRawData;
+ PDWORD AddressOfIndex;
+ PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
+ DWORD SizeOfZeroFill;
+ DWORD Characteristics;
+} IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY;
+typedef struct _IMAGE_RESOURCE_DIRECTORY {
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ WORD NumberOfNamedEntries;
+ WORD NumberOfIdEntries;
+} IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
+_ANONYMOUS_STRUCT typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
+ _ANONYMOUS_UNION union {
+ _ANONYMOUS_STRUCT struct {
+ DWORD NameOffset:31;
+ DWORD NameIsString:1;
+ }DUMMYSTRUCTNAME;
+ DWORD Name;
+ WORD Id;
+ } DUMMYUNIONNAME;
+ _ANONYMOUS_UNION union {
+ DWORD OffsetToData;
+ _ANONYMOUS_STRUCT struct {
+ DWORD OffsetToDirectory:31;
+ DWORD DataIsDirectory:1;
+ } DUMMYSTRUCTNAME2;
+ } DUMMYUNIONNAME2;
+} IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
+typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
+ WORD Length;
+ CHAR NameString[1];
+} IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
+typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
+ WORD Length;
+ WCHAR NameString[1];
+} IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
+typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
+ DWORD OffsetToData;
+ DWORD Size;
+ DWORD CodePage;
+ DWORD Reserved;
+} IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
+typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ DWORD GlobalFlagsClear;
+ DWORD GlobalFlagsSet;
+ DWORD CriticalSectionDefaultTimeout;
+ DWORD DeCommitFreeBlockThreshold;
+ DWORD DeCommitTotalFreeThreshold;
+ PVOID LockPrefixTable;
+ DWORD MaximumAllocationSize;
+ DWORD VirtualMemoryThreshold;
+ DWORD ProcessHeapFlags;
+ DWORD Reserved[4];
+} IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY;
+typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
+ DWORD BeginAddress;
+ DWORD EndAddress;
+ PVOID ExceptionHandler;
+ PVOID HandlerData;
+ DWORD PrologEndAddress;
+} IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY;
+typedef struct _IMAGE_DEBUG_DIRECTORY {
+ DWORD Characteristics;
+ DWORD TimeDateStamp;
+ WORD MajorVersion;
+ WORD MinorVersion;
+ DWORD Type;
+ DWORD SizeOfData;
+ DWORD AddressOfRawData;
+ DWORD PointerToRawData;
+} IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY;
+typedef struct _FPO_DATA {
+ DWORD ulOffStart;
+ DWORD cbProcSize;
+ DWORD cdwLocals;
+ WORD cdwParams;
+ WORD cbProlog:8;
+ WORD cbRegs:3;
+ WORD fHasSEH:1;
+ WORD fUseBP:1;
+ WORD reserved:1;
+ WORD cbFrame:2;
+} FPO_DATA,*PFPO_DATA;
+typedef struct _IMAGE_DEBUG_MISC {
+ DWORD DataType;
+ DWORD Length;
+ BOOLEAN Unicode;
+ BYTE Reserved[3];
+ BYTE Data[1];
+} IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC;
+typedef struct _IMAGE_FUNCTION_ENTRY {
+ DWORD StartingAddress;
+ DWORD EndingAddress;
+ DWORD EndOfPrologue;
+} IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY;
+typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
+ WORD Signature;
+ WORD Flags;
+ WORD Machine;
+ WORD Characteristics;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD ImageBase;
+ DWORD SizeOfImage;
+ DWORD NumberOfSections;
+ DWORD ExportedNamesSize;
+ DWORD DebugDirectorySize;
+ DWORD Reserved[3];
+} IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
+#pragma pack(pop)
+typedef enum _CM_SERVICE_NODE_TYPE {
+ DriverType=SERVICE_KERNEL_DRIVER,
+ FileSystemType=SERVICE_FILE_SYSTEM_DRIVER,
+ Win32ServiceOwnProcess=SERVICE_WIN32_OWN_PROCESS,
+ Win32ServiceShareProcess=SERVICE_WIN32_SHARE_PROCESS,
+ AdapterType=SERVICE_ADAPTER,
+ RecognizerType=SERVICE_RECOGNIZER_DRIVER
+} SERVICE_NODE_TYPE;
+typedef enum _CM_SERVICE_LOAD_TYPE {
+ BootLoad=SERVICE_BOOT_START,
+ SystemLoad=SERVICE_SYSTEM_START,
+ AutoLoad=SERVICE_AUTO_START,
+ DemandLoad=SERVICE_DEMAND_START,
+ DisableLoad=SERVICE_DISABLED
+} SERVICE_LOAD_TYPE;
+typedef enum _CM_ERROR_CONTROL_TYPE {
+ IgnoreError=SERVICE_ERROR_IGNORE,
+ NormalError=SERVICE_ERROR_NORMAL,
+ SevereError=SERVICE_ERROR_SEVERE,
+ CriticalError=SERVICE_ERROR_CRITICAL
+} SERVICE_ERROR_TYPE;
+typedef struct _NT_TIB {
+ struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
+ PVOID StackBase;
+ PVOID StackLimit;
+ PVOID SubSystemTib;
+ _ANONYMOUS_UNION union {
+ PVOID FiberData;
+ DWORD Version;
+ } DUMMYUNIONNAME;
+ PVOID ArbitraryUserPointer;
+ struct _NT_TIB *Self;
+} NT_TIB,*PNT_TIB;
+typedef struct _REPARSE_DATA_BUFFER {
+ DWORD ReparseTag;
+ WORD ReparseDataLength;
+ WORD Reserved;
+ _ANONYMOUS_UNION union {
+ struct {
+ WORD SubstituteNameOffset;
+ WORD SubstituteNameLength;
+ WORD PrintNameOffset;
+ WORD PrintNameLength;
+ WCHAR PathBuffer[1];
+ } SymbolicLinkReparseBuffer;
+ struct {
+ WORD SubstituteNameOffset;
+ WORD SubstituteNameLength;
+ WORD PrintNameOffset;
+ WORD PrintNameLength;
+ WCHAR PathBuffer[1];
+ } MountPointReparseBuffer;
+ struct {
+ BYTE DataBuffer[1];
+ } GenericReparseBuffer;
+ } DUMMYUNIONNAME;
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+typedef struct _REPARSE_GUID_DATA_BUFFER {
+ DWORD ReparseTag;
+ WORD ReparseDataLength;
+ WORD Reserved;
+ GUID ReparseGuid;
+ struct {
+ BYTE DataBuffer[1];
+ } GenericReparseBuffer;
+} REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
+typedef struct _REPARSE_POINT_INFORMATION {
+ WORD ReparseDataLength;
+ WORD UnparsedNameLength;
+} REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;
+
+#ifdef UNICODE
+typedef OSVERSIONINFOW OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
+typedef OSVERSIONINFOEXW OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
+#else
+typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
+typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX;
+#endif
+
+#if defined(__GNUC__)
+
+PVOID GetCurrentFiber(void);
+PVOID GetFiberData(void);
+
+PVOID GetCurrentFiber(void);
+extern __inline__ PVOID GetCurrentFiber(void)
+{
+ void* ret;
+ __asm__ volatile (
+ "movl %%fs:0x10,%0"
+ : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */
+ :
+ );
+ return ret;
+}
+
+PVOID GetFiberData(void);
+extern __inline__ PVOID GetFiberData(void)
+{
+ void* ret;
+ __asm__ volatile (
+ "movl %%fs:0x10,%0\n"
+ "movl (%0),%0"
+ : "=r" (ret) /* allow use of reg eax,ebx,ecx,edx,esi,edi */
+ :
+ );
+ return ret;
+}
+
+#else
+
+extern PVOID GetCurrentFiber(void);
+#pragma aux GetCurrentFiber = \
+ "mov eax, dword ptr fs:0x10" \
+ value [eax] \
+ modify [eax];
+
+extern PVOID GetFiberData(void);
+#pragma aux GetFiberData = \
+ "mov eax, dword ptr fs:0x10" \
+ "mov eax, [eax]" \
+ value [eax] \
+ modify [eax];
+
+#endif /* __GNUC__ */
+
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/win32/include/winapi/winreg.h b/win32/include/winapi/winreg.h
new file mode 100644
index 0000000..712d055
--- /dev/null
+++ b/win32/include/winapi/winreg.h
@@ -0,0 +1,159 @@
+#ifndef _WINREG_H
+#define _WINREG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define HKEY_CLASSES_ROOT ((HKEY)0x80000000)
+#define HKEY_CURRENT_USER ((HKEY)0x80000001)
+#define HKEY_LOCAL_MACHINE ((HKEY)0x80000002)
+#define HKEY_USERS ((HKEY)0x80000003)
+#define HKEY_PERFORMANCE_DATA ((HKEY)0x80000004)
+#define HKEY_CURRENT_CONFIG ((HKEY)0x80000005)
+#define HKEY_DYN_DATA ((HKEY)0x80000006)
+#define REG_OPTION_VOLATILE 1
+#define REG_OPTION_NON_VOLATILE 0
+#define REG_CREATED_NEW_KEY 1
+#define REG_OPENED_EXISTING_KEY 2
+#define REG_NONE 0
+#define REG_SZ 1
+#define REG_EXPAND_SZ 2
+#define REG_BINARY 3
+#define REG_DWORD 4
+#define REG_DWORD_BIG_ENDIAN 5
+#define REG_DWORD_LITTLE_ENDIAN 4
+#define REG_LINK 6
+#define REG_MULTI_SZ 7
+#define REG_RESOURCE_LIST 8
+#define REG_FULL_RESOURCE_DESCRIPTOR 9
+#define REG_RESOURCE_REQUIREMENTS_LIST 10
+#define REG_NOTIFY_CHANGE_NAME 1
+#define REG_NOTIFY_CHANGE_ATTRIBUTES 2
+#define REG_NOTIFY_CHANGE_LAST_SET 4
+#define REG_NOTIFY_CHANGE_SECURITY 8
+
+#ifndef RC_INVOKED
+typedef ACCESS_MASK REGSAM;
+typedef struct value_entA {
+ LPSTR ve_valuename;
+ DWORD ve_valuelen;
+ DWORD ve_valueptr;
+ DWORD ve_type;
+} VALENTA,*PVALENTA;
+typedef struct value_entW {
+ LPWSTR ve_valuename;
+ DWORD ve_valuelen;
+ DWORD ve_valueptr;
+ DWORD ve_type;
+} VALENTW,*PVALENTW;
+BOOL WINAPI AbortSystemShutdownA(LPCSTR);
+BOOL WINAPI AbortSystemShutdownW(LPCWSTR);
+BOOL WINAPI InitiateSystemShutdownA(LPSTR,LPSTR,DWORD,BOOL,BOOL);
+BOOL WINAPI InitiateSystemShutdownW(LPWSTR,LPWSTR,DWORD,BOOL,BOOL);
+LONG WINAPI RegCloseKey(HKEY);
+LONG WINAPI RegConnectRegistryA(LPSTR,HKEY,PHKEY);
+LONG WINAPI RegConnectRegistryW(LPWSTR,HKEY,PHKEY);
+LONG WINAPI RegCreateKeyA(HKEY,LPCSTR,PHKEY);
+LONG WINAPI RegCreateKeyExA(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
+LONG WINAPI RegCreateKeyExW(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM,LPSECURITY_ATTRIBUTES,PHKEY,PDWORD);
+LONG WINAPI RegCreateKeyW(HKEY,LPCWSTR,PHKEY);
+LONG WINAPI RegDeleteKeyA(HKEY,LPCSTR);
+LONG WINAPI RegDeleteKeyW(HKEY,LPCWSTR);
+LONG WINAPI RegDeleteValueA (HKEY,LPCSTR);
+LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR);
+LONG WINAPI RegEnumKeyA (HKEY,DWORD,LPSTR,DWORD);
+LONG WINAPI RegEnumKeyW(HKEY,DWORD,LPWSTR,DWORD);
+LONG WINAPI RegEnumKeyExA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,LPSTR,PDWORD,PFILETIME);
+LONG WINAPI RegEnumKeyExW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,LPWSTR,PDWORD,PFILETIME);
+LONG WINAPI RegEnumValueA(HKEY,DWORD,LPSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegEnumValueW(HKEY,DWORD,LPWSTR,PDWORD,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegFlushKey(HKEY);
+LONG WINAPI RegGetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,PDWORD);
+LONG WINAPI RegLoadKeyA(HKEY,LPCSTR,LPCSTR);
+LONG WINAPI RegLoadKeyW(HKEY,LPCWSTR,LPCWSTR);
+LONG WINAPI RegNotifyChangeKeyValue(HKEY,BOOL,DWORD,HANDLE,BOOL);
+LONG WINAPI RegOpenKeyA(HKEY,LPCSTR,PHKEY);
+LONG WINAPI RegOpenKeyExA(HKEY,LPCSTR,DWORD,REGSAM,PHKEY);
+LONG WINAPI RegOpenKeyExW(HKEY,LPCWSTR,DWORD,REGSAM,PHKEY);
+LONG WINAPI RegOpenKeyW(HKEY,LPCWSTR,PHKEY);
+LONG WINAPI RegQueryInfoKeyA(HKEY,LPSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
+LONG WINAPI RegQueryInfoKeyW(HKEY,LPWSTR,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PDWORD,PFILETIME);
+LONG WINAPI RegQueryMultipleValuesA(HKEY,PVALENTA,DWORD,LPSTR,PDWORD);
+LONG WINAPI RegQueryMultipleValuesW(HKEY,PVALENTW,DWORD,LPWSTR,PDWORD);
+LONG WINAPI RegQueryValueA(HKEY,LPCSTR,LPSTR,PLONG);
+LONG WINAPI RegQueryValueExA (HKEY,LPCSTR,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegQueryValueExW(HKEY,LPCWSTR,PDWORD,PDWORD,LPBYTE,PDWORD);
+LONG WINAPI RegQueryValueW(HKEY,LPCWSTR,LPWSTR,PLONG);
+LONG WINAPI RegReplaceKeyA(HKEY,LPCSTR,LPCSTR,LPCSTR);
+LONG WINAPI RegReplaceKeyW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR);
+LONG WINAPI RegRestoreKeyA (HKEY,LPCSTR,DWORD);
+LONG WINAPI RegRestoreKeyW(HKEY,LPCWSTR,DWORD);
+LONG WINAPI RegSaveKeyA(HKEY,LPCSTR,LPSECURITY_ATTRIBUTES);
+LONG WINAPI RegSaveKeyW(HKEY,LPCWSTR,LPSECURITY_ATTRIBUTES);
+LONG WINAPI RegSetKeySecurity(HKEY,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+LONG WINAPI RegSetValueA(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
+LONG WINAPI RegSetValueExA(HKEY,LPCSTR,DWORD,DWORD,const BYTE*,DWORD);
+LONG WINAPI RegSetValueExW(HKEY,LPCWSTR,DWORD,DWORD,const BYTE*,DWORD);
+LONG WINAPI RegSetValueW(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD);
+LONG WINAPI RegUnLoadKeyA(HKEY,LPCSTR);
+LONG WINAPI RegUnLoadKeyW(HKEY,LPCWSTR);
+
+#ifdef UNICODE
+typedef VALENTW VALENT,*PVALENT;
+#define AbortSystemShutdown AbortSystemShutdownW
+#define InitiateSystemShutdown InitiateSystemShutdownW
+#define RegConnectRegistry RegConnectRegistryW
+#define RegCreateKey RegCreateKeyW
+#define RegCreateKeyEx RegCreateKeyExW
+#define RegDeleteKey RegDeleteKeyW
+#define RegDeleteValue RegDeleteValueW
+#define RegEnumKey RegEnumKeyW
+#define RegEnumKeyEx RegEnumKeyExW
+#define RegEnumValue RegEnumValueW
+#define RegLoadKey RegLoadKeyW
+#define RegOpenKey RegOpenKeyW
+#define RegOpenKeyEx RegOpenKeyExW
+#define RegQueryInfoKey RegQueryInfoKeyW
+#define RegQueryMultipleValues RegQueryMultipleValuesW
+#define RegQueryValue RegQueryValueW
+#define RegQueryValueEx RegQueryValueExW
+#define RegReplaceKey RegReplaceKeyW
+#define RegRestoreKey RegRestoreKeyW
+#define RegSaveKey RegSaveKeyW
+#define RegSetValue RegSetValueW
+#define RegSetValueEx RegSetValueExW
+#define RegUnLoadKey RegUnLoadKeyW
+#else
+typedef VALENTA VALENT,*PVALENT;
+#define AbortSystemShutdown AbortSystemShutdownA
+#define InitiateSystemShutdown InitiateSystemShutdownA
+#define RegConnectRegistry RegConnectRegistryA
+#define RegCreateKey RegCreateKeyA
+#define RegCreateKeyEx RegCreateKeyExA
+#define RegDeleteKey RegDeleteKeyA
+#define RegDeleteValue RegDeleteValueA
+#define RegEnumKey RegEnumKeyA
+#define RegEnumKeyEx RegEnumKeyExA
+#define RegEnumValue RegEnumValueA
+#define RegLoadKey RegLoadKeyA
+#define RegOpenKey RegOpenKeyA
+#define RegOpenKeyEx RegOpenKeyExA
+#define RegQueryInfoKey RegQueryInfoKeyA
+#define RegQueryMultipleValues RegQueryMultipleValuesA
+#define RegQueryValue RegQueryValueA
+#define RegQueryValueEx RegQueryValueExA
+#define RegReplaceKey RegReplaceKeyA
+#define RegRestoreKey RegRestoreKeyA
+#define RegSaveKey RegSaveKeyA
+#define RegSetValue RegSetValueA
+#define RegSetValueEx RegSetValueExA
+#define RegUnLoadKey RegUnLoadKeyA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/win32/include/winapi/winsvc.h b/win32/include/winapi/winsvc.h
new file mode 100644
index 0000000..e8802ee
--- /dev/null
+++ b/win32/include/winapi/winsvc.h
@@ -0,0 +1,309 @@
+#ifndef _WINSVC_H
+#define _WINSVC_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SERVICES_ACTIVE_DATABASEA "ServicesActive"
+#define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
+#define SERVICES_FAILED_DATABASEA "ServicesFailed"
+#define SERVICES_FAILED_DATABASEW L"ServicesFailed"
+#define SC_GROUP_IDENTIFIERA '+'
+#define SC_GROUP_IDENTIFIERW L'+'
+#define SC_MANAGER_ALL_ACCESS 0xf003f
+#define SC_MANAGER_CONNECT 1
+#define SC_MANAGER_CREATE_SERVICE 2
+#define SC_MANAGER_ENUMERATE_SERVICE 4
+#define SC_MANAGER_LOCK 8
+#define SC_MANAGER_QUERY_LOCK_STATUS 16
+#define SC_MANAGER_MODIFY_BOOT_CONFIG 32
+#define SERVICE_NO_CHANGE (-1)
+#define SERVICE_STOPPED 1
+#define SERVICE_START_PENDING 2
+#define SERVICE_STOP_PENDING 3
+#define SERVICE_RUNNING 4
+#define SERVICE_CONTINUE_PENDING 5
+#define SERVICE_PAUSE_PENDING 6
+#define SERVICE_PAUSED 7
+#define SERVICE_ACCEPT_STOP 1
+#define SERVICE_ACCEPT_PAUSE_CONTINUE 2
+#define SERVICE_ACCEPT_SHUTDOWN 4
+#define SERVICE_ACCEPT_PARAMCHANGE 8
+#define SERVICE_ACCEPT_NETBINDCHANGE 16
+#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 32
+#define SERVICE_ACCEPT_POWEREVENT 64
+#define SERVICE_ACCEPT_SESSIONCHANGE 128
+#define SERVICE_CONTROL_STOP 1
+#define SERVICE_CONTROL_PAUSE 2
+#define SERVICE_CONTROL_CONTINUE 3
+#define SERVICE_CONTROL_INTERROGATE 4
+#define SERVICE_CONTROL_SHUTDOWN 5
+#define SERVICE_CONTROL_PARAMCHANGE 6
+#define SERVICE_CONTROL_NETBINDADD 7
+#define SERVICE_CONTROL_NETBINDREMOVE 8
+#define SERVICE_CONTROL_NETBINDENABLE 9
+#define SERVICE_CONTROL_NETBINDDISABLE 10
+#define SERVICE_CONTROL_DEVICEEVENT 11
+#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 12
+#define SERVICE_CONTROL_POWEREVENT 13
+#define SERVICE_CONTROL_SESSIONCHANGE 14
+#define SERVICE_ACTIVE 1
+#define SERVICE_INACTIVE 2
+#define SERVICE_STATE_ALL 3
+#define SERVICE_QUERY_CONFIG 1
+#define SERVICE_CHANGE_CONFIG 2
+#define SERVICE_QUERY_STATUS 4
+#define SERVICE_ENUMERATE_DEPENDENTS 8
+#define SERVICE_START 16
+#define SERVICE_STOP 32
+#define SERVICE_PAUSE_CONTINUE 64
+#define SERVICE_INTERROGATE 128
+#define SERVICE_USER_DEFINED_CONTROL 256
+#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVICE_QUERY_CONFIG|SERVICE_CHANGE_CONFIG|SERVICE_QUERY_STATUS|SERVICE_ENUMERATE_DEPENDENTS|SERVICE_START|SERVICE_STOP|SERVICE_PAUSE_CONTINUE|SERVICE_INTERROGATE|SERVICE_USER_DEFINED_CONTROL)
+#define SERVICE_RUNS_IN_SYSTEM_PROCESS 1
+#define SERVICE_CONFIG_DESCRIPTION 1
+#define SERVICE_CONFIG_FAILURE_ACTIONS 2
+
+typedef struct _SERVICE_STATUS {
+ DWORD dwServiceType;
+ DWORD dwCurrentState;
+ DWORD dwControlsAccepted;
+ DWORD dwWin32ExitCode;
+ DWORD dwServiceSpecificExitCode;
+ DWORD dwCheckPoint;
+ DWORD dwWaitHint;
+} SERVICE_STATUS,*LPSERVICE_STATUS;
+typedef struct _SERVICE_STATUS_PROCESS {
+ DWORD dwServiceType;
+ DWORD dwCurrentState;
+ DWORD dwControlsAccepted;
+ DWORD dwWin32ExitCode;
+ DWORD dwServiceSpecificExitCode;
+ DWORD dwCheckPoint;
+ DWORD dwWaitHint;
+ DWORD dwProcessId;
+ DWORD dwServiceFlags;
+} SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS;
+typedef enum _SC_STATUS_TYPE {
+ SC_STATUS_PROCESS_INFO = 0
+} SC_STATUS_TYPE;
+typedef enum _SC_ENUM_TYPE {
+ SC_ENUM_PROCESS_INFO = 0
+} SC_ENUM_TYPE;
+typedef struct _ENUM_SERVICE_STATUSA {
+ LPSTR lpServiceName;
+ LPSTR lpDisplayName;
+ SERVICE_STATUS ServiceStatus;
+} ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA;
+typedef struct _ENUM_SERVICE_STATUSW {
+ LPWSTR lpServiceName;
+ LPWSTR lpDisplayName;
+ SERVICE_STATUS ServiceStatus;
+} ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW;
+typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
+ LPSTR lpServiceName;
+ LPSTR lpDisplayName;
+ SERVICE_STATUS_PROCESS ServiceStatusProcess;
+} ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA;
+typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
+ LPWSTR lpServiceName;
+ LPWSTR lpDisplayName;
+ SERVICE_STATUS_PROCESS ServiceStatusProcess;
+} ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW;
+typedef struct _QUERY_SERVICE_CONFIGA {
+ DWORD dwServiceType;
+ DWORD dwStartType;
+ DWORD dwErrorControl;
+ LPSTR lpBinaryPathName;
+ LPSTR lpLoadOrderGroup;
+ DWORD dwTagId;
+ LPSTR lpDependencies;
+ LPSTR lpServiceStartName;
+ LPSTR lpDisplayName;
+} QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA;
+typedef struct _QUERY_SERVICE_CONFIGW {
+ DWORD dwServiceType;
+ DWORD dwStartType;
+ DWORD dwErrorControl;
+ LPWSTR lpBinaryPathName;
+ LPWSTR lpLoadOrderGroup;
+ DWORD dwTagId;
+ LPWSTR lpDependencies;
+ LPWSTR lpServiceStartName;
+ LPWSTR lpDisplayName;
+} QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW;
+typedef struct _QUERY_SERVICE_LOCK_STATUSA {
+ DWORD fIsLocked;
+ LPSTR lpLockOwner;
+ DWORD dwLockDuration;
+} QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA;
+typedef struct _QUERY_SERVICE_LOCK_STATUSW {
+ DWORD fIsLocked;
+ LPWSTR lpLockOwner;
+ DWORD dwLockDuration;
+} QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW;
+typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONA)(DWORD,LPSTR*);
+typedef void (WINAPI *LPSERVICE_MAIN_FUNCTIONW)(DWORD,LPWSTR*);
+typedef struct _SERVICE_TABLE_ENTRYA {
+ LPSTR lpServiceName;
+ LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
+} SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA;
+typedef struct _SERVICE_TABLE_ENTRYW {
+ LPWSTR lpServiceName;
+ LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
+} SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW;
+DECLARE_HANDLE(SC_HANDLE);
+typedef SC_HANDLE *LPSC_HANDLE;
+typedef PVOID SC_LOCK;
+typedef DWORD SERVICE_STATUS_HANDLE;
+typedef VOID(WINAPI *LPHANDLER_FUNCTION)(DWORD);
+typedef DWORD (WINAPI *LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID);
+typedef struct _SERVICE_DESCRIPTIONA {
+ LPSTR lpDescription;
+} SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
+typedef struct _SERVICE_DESCRIPTIONW {
+ LPWSTR lpDescription;
+} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
+typedef enum _SC_ACTION_TYPE {
+ SC_ACTION_NONE = 0,
+ SC_ACTION_RESTART = 1,
+ SC_ACTION_REBOOT = 2,
+ SC_ACTION_RUN_COMMAND = 3
+} SC_ACTION_TYPE;
+typedef struct _SC_ACTION {
+ SC_ACTION_TYPE Type;
+ DWORD Delay;
+} SC_ACTION,*LPSC_ACTION;
+typedef struct _SERVICE_FAILURE_ACTIONSA {
+ DWORD dwResetPeriod;
+ LPSTR lpRebootMsg;
+ LPSTR lpCommand;
+ DWORD cActions;
+ SC_ACTION * lpsaActions;
+} SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
+typedef struct _SERVICE_FAILURE_ACTIONSW {
+ DWORD dwResetPeriod;
+ LPWSTR lpRebootMsg;
+ LPWSTR lpCommand;
+ DWORD cActions;
+ SC_ACTION * lpsaActions;
+} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
+
+BOOL WINAPI ChangeServiceConfigA(SC_HANDLE,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,LPDWORD,LPCSTR,LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI ChangeServiceConfigW(SC_HANDLE,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,LPDWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI ChangeServiceConfig2A(SC_HANDLE,DWORD,LPVOID);
+BOOL WINAPI ChangeServiceConfig2W(SC_HANDLE,DWORD,LPVOID);
+BOOL WINAPI CloseServiceHandle(SC_HANDLE);
+BOOL WINAPI ControlService(SC_HANDLE,DWORD,LPSERVICE_STATUS);
+SC_HANDLE WINAPI CreateServiceA(SC_HANDLE,LPCSTR,LPCSTR,DWORD,DWORD,DWORD,DWORD,LPCSTR,LPCSTR,PDWORD,LPCSTR,LPCSTR,LPCSTR);
+SC_HANDLE WINAPI CreateServiceW(SC_HANDLE,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD,DWORD,LPCWSTR,LPCWSTR,PDWORD,LPCWSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI DeleteService(SC_HANDLE);
+BOOL WINAPI EnumDependentServicesA(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumDependentServicesW(SC_HANDLE,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumServicesStatusA(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSA,DWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumServicesStatusW(SC_HANDLE,DWORD,DWORD,LPENUM_SERVICE_STATUSW,DWORD,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumServicesStatusExA(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCSTR);
+BOOL WINAPI EnumServicesStatusExW(SC_HANDLE,SC_ENUM_TYPE,DWORD,DWORD,LPBYTE,DWORD,LPDWORD,LPDWORD,LPDWORD,LPCWSTR);
+BOOL WINAPI GetServiceDisplayNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
+BOOL WINAPI GetServiceDisplayNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
+BOOL WINAPI GetServiceKeyNameA(SC_HANDLE,LPCSTR,LPSTR,PDWORD);
+BOOL WINAPI GetServiceKeyNameW(SC_HANDLE,LPCWSTR,LPWSTR,PDWORD);
+SC_LOCK WINAPI LockServiceDatabase(SC_HANDLE);
+BOOL WINAPI NotifyBootConfigStatus(BOOL);
+SC_HANDLE WINAPI OpenSCManagerA(LPCSTR,LPCSTR,DWORD);
+SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR,LPCWSTR,DWORD);
+SC_HANDLE WINAPI OpenServiceA(SC_HANDLE,LPCSTR,DWORD);
+SC_HANDLE WINAPI OpenServiceW(SC_HANDLE,LPCWSTR,DWORD);
+BOOL WINAPI QueryServiceConfigA(SC_HANDLE,LPQUERY_SERVICE_CONFIGA,DWORD,PDWORD);
+BOOL WINAPI QueryServiceConfigW(SC_HANDLE,LPQUERY_SERVICE_CONFIGW,DWORD,PDWORD);
+BOOL WINAPI QueryServiceConfig2A(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+BOOL WINAPI QueryServiceConfig2W(SC_HANDLE,DWORD,LPBYTE,DWORD,LPDWORD);
+BOOL WINAPI QueryServiceLockStatusA(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSA,DWORD,PDWORD);
+BOOL WINAPI QueryServiceLockStatusW(SC_HANDLE,LPQUERY_SERVICE_LOCK_STATUSW,DWORD,PDWORD);
+BOOL WINAPI QueryServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+BOOL WINAPI QueryServiceStatus(SC_HANDLE,LPSERVICE_STATUS);
+BOOL WINAPI QueryServiceStatusEx(SC_HANDLE,SC_STATUS_TYPE,LPBYTE,DWORD,LPDWORD);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExA(LPCSTR,LPHANDLER_FUNCTION_EX,LPVOID);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR,LPHANDLER_FUNCTION_EX,LPVOID);
+BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE,LPSERVICE_STATUS);
+BOOL WINAPI StartServiceA(SC_HANDLE,DWORD,LPCSTR*);
+BOOL WINAPI StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA);
+BOOL WINAPI StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW);
+BOOL WINAPI StartServiceW(SC_HANDLE,DWORD,LPCWSTR);
+BOOL WINAPI UnlockServiceDatabase(SC_LOCK);
+
+#ifdef UNICODE
+typedef ENUM_SERVICE_STATUSW ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
+typedef ENUM_SERVICE_STATUS_PROCESSW ENUM_SERVICE_STATUS_PROCESS;
+typedef LPENUM_SERVICE_STATUS_PROCESSW LPENUM_SERVICE_STATUS_PROCESS;
+typedef QUERY_SERVICE_CONFIGW QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
+typedef QUERY_SERVICE_LOCK_STATUSW QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
+typedef SERVICE_TABLE_ENTRYW SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
+typedef LPSERVICE_MAIN_FUNCTIONW LPSERVICE_MAIN_FUNCTION;
+typedef SERVICE_DESCRIPTIONW SERVICE_DESCRIPTION;
+typedef LPSERVICE_DESCRIPTIONW LPSERVICE_DESCRIPTION;
+typedef SERVICE_FAILURE_ACTIONSW SERVICE_FAILURE_ACTIONS;
+typedef LPSERVICE_FAILURE_ACTIONSW LPSERVICE_FAILURE_ACTIONS;
+#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
+#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
+#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
+#define ChangeServiceConfig ChangeServiceConfigW
+#define ChangeServiceConfig2 ChangeServiceConfig2W
+#define CreateService CreateServiceW
+#define EnumDependentServices EnumDependentServicesW
+#define EnumServicesStatus EnumServicesStatusW
+#define EnumServicesStatusEx EnumServicesStatusExW
+#define GetServiceDisplayName GetServiceDisplayNameW
+#define GetServiceKeyName GetServiceKeyNameW
+#define OpenSCManager OpenSCManagerW
+#define OpenService OpenServiceW
+#define QueryServiceConfig QueryServiceConfigW
+#define QueryServiceConfig2 QueryServiceConfig2W
+#define QueryServiceLockStatus QueryServiceLockStatusW
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
+#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExW
+#define StartService StartServiceW
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
+#else
+typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
+typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
+typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS;
+typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG,*LPQUERY_SERVICE_CONFIG;
+typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS,*LPQUERY_SERVICE_LOCK_STATUS;
+typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY,*LPSERVICE_TABLE_ENTRY;
+typedef LPSERVICE_MAIN_FUNCTIONA LPSERVICE_MAIN_FUNCTION;
+typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
+typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION;
+typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
+typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS;
+#define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
+#define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
+#define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
+#define ChangeServiceConfig ChangeServiceConfigA
+#define ChangeServiceConfig2 ChangeServiceConfig2A
+#define CreateService CreateServiceA
+#define EnumDependentServices EnumDependentServicesA
+#define EnumServicesStatus EnumServicesStatusA
+#define EnumServicesStatusEx EnumServicesStatusExA
+#define GetServiceDisplayName GetServiceDisplayNameA
+#define GetServiceKeyName GetServiceKeyNameA
+#define OpenSCManager OpenSCManagerA
+#define OpenService OpenServiceA
+#define QueryServiceConfig QueryServiceConfigA
+#define QueryServiceConfig2 QueryServiceConfig2A
+#define QueryServiceLockStatus QueryServiceLockStatusA
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
+#define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA
+#define StartService StartServiceA
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINSVC_H */
diff --git a/win32/include/winapi/winuser.h b/win32/include/winapi/winuser.h
new file mode 100644
index 0000000..b85b9b2
--- /dev/null
+++ b/win32/include/winapi/winuser.h
@@ -0,0 +1,3472 @@
+#ifndef _WINUSER_H
+#define _WINUSER_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WC_DIALOG MAKEINTATOM(0x8002)
+#define FALT 16
+#define FCONTROL 8
+#define FNOINVERT 2
+#define FSHIFT 4
+#define FVIRTKEY 1
+#define ATF_TIMEOUTON 1
+#define ATF_ONOFFFEEDBACK 2
+#define ATF_AVAILABLE 4 /* May be obsolete. Not in recent MS docs. */
+#define WH_MIN (-1)
+#define WH_MSGFILTER (-1)
+#define WH_JOURNALRECORD 0
+#define WH_JOURNALPLAYBACK 1
+#define WH_KEYBOARD 2
+#define WH_GETMESSAGE 3
+#define WH_CALLWNDPROC 4
+#define WH_CBT 5
+#define WH_SYSMSGFILTER 6
+#define WH_MOUSE 7
+#define WH_HARDWARE 8
+#define WH_DEBUG 9
+#define WH_SHELL 10
+#define WH_FOREGROUNDIDLE 11
+#define WH_CALLWNDPROCRET 12
+#define WH_KEYBOARD_LL 13
+#define WH_MOUSE_LL 14
+#define WH_MAX 14
+#define WH_MINHOOK WH_MIN
+#define WH_MAXHOOK WH_MAX
+#define HC_ACTION 0
+#define HC_GETNEXT 1
+#define HC_SKIP 2
+#define HC_NOREMOVE 3
+#define HC_NOREM 3
+#define HC_SYSMODALON 4
+#define HC_SYSMODALOFF 5
+#define HCBT_MOVESIZE 0
+#define HCBT_MINMAX 1
+#define HCBT_QS 2
+#define HCBT_CREATEWND 3
+#define HCBT_DESTROYWND 4
+#define HCBT_ACTIVATE 5
+#define HCBT_CLICKSKIPPED 6
+#define HCBT_KEYSKIPPED 7
+#define HCBT_SYSCOMMAND 8
+#define HCBT_SETFOCUS 9
+#define CF_TEXT 1
+#define CF_BITMAP 2
+#define CF_METAFILEPICT 3
+#define CF_SYLK 4
+#define CF_DIF 5
+#define CF_TIFF 6
+#define CF_OEMTEXT 7
+#define CF_DIB 8
+#define CF_PALETTE 9
+#define CF_PENDATA 10
+#define CF_RIFF 11
+#define CF_WAVE 12
+#define CF_UNICODETEXT 13
+#define CF_ENHMETAFILE 14
+#define CF_HDROP 15
+#define CF_LOCALE 16
+#define CF_MAX 17
+#define CF_OWNERDISPLAY 128
+#define CF_DSPTEXT 129
+#define CF_DSPBITMAP 130
+#define CF_DSPMETAFILEPICT 131
+#define CF_DSPENHMETAFILE 142
+#define CF_PRIVATEFIRST 512
+#define CF_PRIVATELAST 767
+#define CF_GDIOBJFIRST 768
+#define CF_GDIOBJLAST 1023
+#define HKL_NEXT 1
+#define HKL_PREV 0
+#define KLF_ACTIVATE 1
+#define KLF_SUBSTITUTE_OK 2
+#define KLF_UNLOADPREVIOUS 4
+#define KLF_REORDER 8
+#define KLF_REPLACELANG 16
+#define KLF_NOTELLSHELL 128
+#define KLF_SETFORPROCESS 256
+#define KL_NAMELENGTH 9
+#define MF_ENABLED 0
+#define MF_GRAYED 1
+#define MF_DISABLED 2
+#define MF_BITMAP 4
+#define MF_CHECKED 8
+#define MF_MENUBARBREAK 32
+#define MF_MENUBREAK 64
+#define MF_OWNERDRAW 256
+#define MF_POPUP 16
+#define MF_SEPARATOR 0x800
+#define MF_STRING 0
+#define MF_UNCHECKED 0
+#define MF_DEFAULT 4096
+#define MF_SYSMENU 0x2000
+#define MF_HELP 0x4000
+#define MF_END 128
+#define MF_RIGHTJUSTIFY 0x4000
+#define MF_MOUSESELECT 0x8000
+#define MF_INSERT 0
+#define MF_CHANGE 128
+#define MF_APPEND 256
+#define MF_DELETE 512
+#define MF_REMOVE 4096
+#define MF_USECHECKBITMAPS 512
+#define MF_UNHILITE 0
+#define MF_HILITE 128
+#define BSF_IGNORECURRENTTASK 2
+#define BSF_QUERY 1
+#define BSF_FLUSHDISK 4
+#define BSF_NOHANG 8
+#define BSF_POSTMESSAGE 16
+#define BSF_FORCEIFHUNG 32
+#define BSF_NOTIMEOUTIFNOTHUNG 64
+#define BSM_ALLCOMPONENTS 0
+#define BSM_APPLICATIONS 8
+#define BSM_ALLDESKTOPS 16
+#define BSM_INSTALLABLEDRIVERS 4
+#define BSM_NETDRIVER 2
+#define BSM_VXDS 1
+#define BROADCAST_QUERY_DENY 1112363332
+#define ENUM_CURRENT_SETTINGS ((DWORD)-1)
+#define ENUM_REGISTRY_SETTINGS ((DWORD)-2)
+#define DM_BITSPERPEL 0x40000
+#define DM_PELSWIDTH 0x80000
+#define DM_PELSHEIGHT 0x100000
+#define DM_DISPLAYFLAGS 0x200000
+#define DM_DISPLAYFREQUENCY 0x400000
+#define CDS_UPDATEREGISTRY 1
+#define CDS_TEST 2
+#define CDS_FULLSCREEN 4
+#define CDS_GLOBAL 8
+#define CDS_SET_PRIMARY 16
+#define CDS_RESET 0x40000000
+#define CDS_SETRECT 0x20000000
+#define CDS_NORESET 0x10000000
+#define DISP_CHANGE_SUCCESSFUL 0
+#define DISP_CHANGE_RESTART 1
+#define DISP_CHANGE_BADFLAGS (-4)
+#define DISP_CHANGE_BADPARAM (-5)
+#define DISP_CHANGE_FAILED (-1)
+#define DISP_CHANGE_BADMODE (-2)
+#define DISP_CHANGE_NOTUPDATED (-3)
+#define BST_CHECKED 1
+#define BST_INDETERMINATE 2
+#define BST_UNCHECKED 0
+#define BST_FOCUS 8
+#define BST_PUSHED 4
+#define MF_BYCOMMAND 0
+#define MF_BYPOSITION 1024
+#define MF_UNCHECKED 0
+#define MF_HILITE 128
+#define MF_UNHILITE 0
+#define CWP_ALL 0
+#define CWP_SKIPINVISIBLE 1
+#define CWP_SKIPDISABLED 2
+#define CWP_SKIPTRANSPARENT 4
+#define IMAGE_BITMAP 0
+#define IMAGE_ICON 1
+#define IMAGE_CURSOR 2
+#define IMAGE_ENHMETAFILE 3
+#define DF_ALLOWOTHERACCOUNTHOOK 1
+#define DESKTOP_CREATEMENU 4
+#define DESKTOP_CREATEWINDOW 2
+#define DESKTOP_ENUMERATE 64
+#define DESKTOP_HOOKCONTROL 8
+#define DESKTOP_JOURNALPLAYBACK 32
+#define DESKTOP_JOURNALRECORD 16
+#define DESKTOP_READOBJECTS 1
+#define DESKTOP_SWITCHDESKTOP 256
+#define DESKTOP_WRITEOBJECTS 128
+#define CW_USEDEFAULT 0x80000000
+#define WS_BORDER 0x800000
+#define WS_CAPTION 0xc00000
+#define WS_CHILD 0x40000000
+#define WS_CHILDWINDOW 0x40000000
+#define WS_CLIPCHILDREN 0x2000000
+#define WS_CLIPSIBLINGS 0x4000000
+#define WS_DISABLED 0x8000000
+#define WS_DLGFRAME 0x400000
+#define WS_GROUP 0x20000
+#define WS_HSCROLL 0x100000
+#define WS_ICONIC 0x20000000
+#define WS_MAXIMIZE 0x1000000
+#define WS_MAXIMIZEBOX 0x10000
+#define WS_MINIMIZE 0x20000000
+#define WS_MINIMIZEBOX 0x20000
+#define WS_OVERLAPPED 0
+#define WS_OVERLAPPEDWINDOW 0xcf0000
+#define WS_POPUP 0x80000000
+#define WS_POPUPWINDOW 0x80880000
+#define WS_SIZEBOX 0x40000
+#define WS_SYSMENU 0x80000
+#define WS_TABSTOP 0x10000
+#define WS_THICKFRAME 0x40000
+#define WS_TILED 0
+#define WS_TILEDWINDOW 0xcf0000
+#define WS_VISIBLE 0x10000000
+#define WS_VSCROLL 0x200000
+#define MDIS_ALLCHILDSTYLES 1
+#define BS_3STATE 5
+#define BS_AUTO3STATE 6
+#define BS_AUTOCHECKBOX 3
+#define BS_AUTORADIOBUTTON 9
+#define BS_BITMAP 128
+#define BS_BOTTOM 0x800
+#define BS_CENTER 0x300
+#define BS_CHECKBOX 2
+#define BS_DEFPUSHBUTTON 1
+#define BS_GROUPBOX 7
+#define BS_ICON 64
+#define BS_LEFT 256
+#define BS_LEFTTEXT 32
+#define BS_MULTILINE 0x2000
+#define BS_NOTIFY 0x4000
+#define BS_OWNERDRAW 0xb
+#define BS_PUSHBUTTON 0
+#define BS_PUSHLIKE 4096
+#define BS_RADIOBUTTON 4
+#define BS_RIGHT 512
+#define BS_RIGHTBUTTON 32
+#define BS_TEXT 0
+#define BS_TOP 0x400
+#define BS_USERBUTTON 8
+#define BS_VCENTER 0xc00
+#define BS_FLAT 0x8000
+#define CBS_AUTOHSCROLL 64
+#define CBS_DISABLENOSCROLL 0x800
+#define CBS_DROPDOWN 2
+#define CBS_DROPDOWNLIST 3
+#define CBS_HASSTRINGS 512
+#define CBS_LOWERCASE 0x4000
+#define CBS_NOINTEGRALHEIGHT 0x400
+#define CBS_OEMCONVERT 128
+#define CBS_OWNERDRAWFIXED 16
+#define CBS_OWNERDRAWVARIABLE 32
+#define CBS_SIMPLE 1
+#define CBS_SORT 256
+#define CBS_UPPERCASE 0x2000
+#define ES_AUTOHSCROLL 128
+#define ES_AUTOVSCROLL 64
+#define ES_CENTER 1
+#define ES_LEFT 0
+#define ES_LOWERCASE 16
+#define ES_MULTILINE 4
+#define ES_NOHIDESEL 256
+#define ES_NUMBER 0x2000
+#define ES_OEMCONVERT 0x400
+#define ES_PASSWORD 32
+#define ES_READONLY 0x800
+#define ES_RIGHT 2
+#define ES_UPPERCASE 8
+#define ES_WANTRETURN 4096
+#define LBS_DISABLENOSCROLL 4096
+#define LBS_EXTENDEDSEL 0x800
+#define LBS_HASSTRINGS 64
+#define LBS_MULTICOLUMN 512
+#define LBS_MULTIPLESEL 8
+#define LBS_NODATA 0x2000
+#define LBS_NOINTEGRALHEIGHT 256
+#define LBS_NOREDRAW 4
+#define LBS_NOSEL 0x4000
+#define LBS_NOTIFY 1
+#define LBS_OWNERDRAWFIXED 16
+#define LBS_OWNERDRAWVARIABLE 32
+#define LBS_SORT 2
+#define LBS_STANDARD 0xa00003
+#define LBS_USETABSTOPS 128
+#define LBS_WANTKEYBOARDINPUT 0x400
+#define SBS_BOTTOMALIGN 4
+#define SBS_HORZ 0
+#define SBS_LEFTALIGN 2
+#define SBS_RIGHTALIGN 4
+#define SBS_SIZEBOX 8
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 4
+#define SBS_SIZEBOXTOPLEFTALIGN 2
+#define SBS_SIZEGRIP 16
+#define SBS_TOPALIGN 2
+#define SBS_VERT 1
+#define SS_BITMAP 14
+#define SS_BLACKFRAME 7
+#define SS_BLACKRECT 4
+#define SS_CENTER 1
+#define SS_CENTERIMAGE 512
+#define SS_ENHMETAFILE 15
+#define SS_ETCHEDFRAME 18
+#define SS_ETCHEDHORZ 16
+#define SS_ETCHEDVERT 17
+#define SS_GRAYFRAME 8
+#define SS_GRAYRECT 5
+#define SS_ICON 3
+#define SS_LEFT 0
+#define SS_LEFTNOWORDWRAP 0xc
+#define SS_NOPREFIX 128
+#define SS_NOTIFY 256
+#define SS_OWNERDRAW 0xd
+#define SS_REALSIZEIMAGE 0x800
+#define SS_RIGHT 2
+#define SS_RIGHTJUST 0x400
+#define SS_SIMPLE 11
+#define SS_SUNKEN 4096
+#define SS_WHITEFRAME 9
+#define SS_WHITERECT 6
+#define SS_USERITEM 10
+#define SS_TYPEMASK 0x0000001FL
+#define SS_ENDELLIPSIS 0x00004000L
+#define SS_PATHELLIPSIS 0x00008000L
+#define SS_WORDELLIPSIS 0x0000C000L
+#define SS_ELLIPSISMASK 0x0000C000L
+#define DS_3DLOOK 4
+#define DS_ABSALIGN 1
+#define DS_CENTER 0x800
+#define DS_CENTERMOUSE 4096
+#define DS_CONTEXTHELP 0x2000
+#define DS_CONTROL 0x400
+#define DS_FIXEDSYS 8
+#define DS_LOCALEDIT 32
+#define DS_MODALFRAME 128
+#define DS_NOFAILCREATE 16
+#define DS_NOIDLEMSG 256
+#define DS_SETFONT 64
+#define DS_SETFOREGROUND 512
+#define DS_SYSMODAL 2
+#define WS_EX_ACCEPTFILES 16
+#define WS_EX_APPWINDOW 0x40000
+#define WS_EX_CLIENTEDGE 512
+#define WS_EX_COMPOSITED 0x2000000 /* XP */
+#define WS_EX_CONTEXTHELP 0x400
+#define WS_EX_CONTROLPARENT 0x10000
+#define WS_EX_DLGMODALFRAME 1
+#define WS_EX_LAYERED 0x80000 /* w2k */
+#define WS_EX_LAYOUTRTL 0x400000 /* w98, w2k */
+#define WS_EX_LEFT 0
+#define WS_EX_LEFTSCROLLBAR 0x4000
+#define WS_EX_LTRREADING 0
+#define WS_EX_MDICHILD 64
+#define WS_EX_NOACTIVATE 0x8000000 /* w2k */
+#define WS_EX_NOINHERITLAYOUT 0x100000 /* w2k */
+#define WS_EX_NOPARENTNOTIFY 4
+#define WS_EX_OVERLAPPEDWINDOW 0x300
+#define WS_EX_PALETTEWINDOW 0x188
+#define WS_EX_RIGHT 0x1000
+#define WS_EX_RIGHTSCROLLBAR 0
+#define WS_EX_RTLREADING 0x2000
+#define WS_EX_STATICEDGE 0x20000
+#define WS_EX_TOOLWINDOW 128
+#define WS_EX_TOPMOST 8
+#define WS_EX_TRANSPARENT 32
+#define WS_EX_WINDOWEDGE 256
+#define WINSTA_ACCESSCLIPBOARD 4
+#define WINSTA_ACCESSGLOBALATOMS 32
+#define WINSTA_CREATEDESKTOP 8
+#define WINSTA_ENUMDESKTOPS 1
+#define WINSTA_ENUMERATE 256
+#define WINSTA_EXITWINDOWS 64
+#define WINSTA_READATTRIBUTES 2
+#define WINSTA_READSCREEN 512
+#define WINSTA_WRITEATTRIBUTES 16
+#define DDL_READWRITE 0
+#define DDL_READONLY 1
+#define DDL_HIDDEN 2
+#define DDL_SYSTEM 4
+#define DDL_DIRECTORY 16
+#define DDL_ARCHIVE 32
+#define DDL_POSTMSGS 8192
+#define DDL_DRIVES 16384
+#define DDL_EXCLUSIVE 32768
+#define DC_ACTIVE 1
+#define DC_SMALLCAP 2
+#define DC_ICON 4
+#define DC_TEXT 8
+#define DC_INBUTTON 16
+#define DC_CAPTION (DC_ICON|DC_TEXT|DC_BUTTONS)
+#define DC_NC (DC_CAPTION|DC_FRAME)
+#define BDR_RAISEDOUTER 1
+#define BDR_SUNKENOUTER 2
+#define BDR_RAISEDINNER 4
+#define BDR_SUNKENINNER 8
+#define BDR_OUTER 3
+#define BDR_INNER 0xc
+#define BDR_RAISED 5
+#define BDR_SUNKEN 10
+#define EDGE_RAISED (BDR_RAISEDOUTER|BDR_RAISEDINNER)
+#define EDGE_SUNKEN (BDR_SUNKENOUTER|BDR_SUNKENINNER)
+#define EDGE_ETCHED (BDR_SUNKENOUTER|BDR_RAISEDINNER)
+#define EDGE_BUMP (BDR_RAISEDOUTER|BDR_SUNKENINNER)
+#define BF_LEFT 1
+#define BF_TOP 2
+#define BF_RIGHT 4
+#define BF_BOTTOM 8
+#define BF_TOPLEFT (BF_TOP|BF_LEFT)
+#define BF_TOPRIGHT (BF_TOP|BF_RIGHT)
+#define BF_BOTTOMLEFT (BF_BOTTOM|BF_LEFT)
+#define BF_BOTTOMRIGHT (BF_BOTTOM|BF_RIGHT)
+#define BF_RECT (BF_LEFT|BF_TOP|BF_RIGHT|BF_BOTTOM)
+#define BF_DIAGONAL 16
+#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL|BF_TOP|BF_RIGHT)
+#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL|BF_TOP|BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL|BF_BOTTOM|BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL|BF_BOTTOM|BF_RIGHT)
+#define BF_MIDDLE 0x800
+#define BF_SOFT 0x1000
+#define BF_ADJUST 0x2000
+#define BF_FLAT 0x4000
+#define BF_MONO 0x8000
+#define DFC_CAPTION 1
+#define DFC_MENU 2
+#define DFC_SCROLL 3
+#define DFC_BUTTON 4
+#define DFCS_CAPTIONCLOSE 0
+#define DFCS_CAPTIONMIN 1
+#define DFCS_CAPTIONMAX 2
+#define DFCS_CAPTIONRESTORE 3
+#define DFCS_CAPTIONHELP 4
+#define DFCS_MENUARROW 0
+#define DFCS_MENUCHECK 1
+#define DFCS_MENUBULLET 2
+#define DFCS_MENUARROWRIGHT 4
+#define DFCS_SCROLLUP 0
+#define DFCS_SCROLLDOWN 1
+#define DFCS_SCROLLLEFT 2
+#define DFCS_SCROLLRIGHT 3
+#define DFCS_SCROLLCOMBOBOX 5
+#define DFCS_SCROLLSIZEGRIP 8
+#define DFCS_SCROLLSIZEGRIPRIGHT 16
+#define DFCS_BUTTONCHECK 0
+#define DFCS_BUTTONRADIOIMAGE 1
+#define DFCS_BUTTONRADIOMASK 2
+#define DFCS_BUTTONRADIO 4
+#define DFCS_BUTTON3STATE 8
+#define DFCS_BUTTONPUSH 16
+#define DFCS_INACTIVE 256
+#define DFCS_PUSHED 512
+#define DFCS_CHECKED 1024
+#define DFCS_ADJUSTRECT 0x2000
+#define DFCS_FLAT 0x4000
+#define DFCS_MONO 0x8000
+#define DST_COMPLEX 0
+#define DST_TEXT 1
+#define DST_PREFIXTEXT 2
+#define DST_ICON 3
+#define DST_BITMAP 4
+#define DSS_NORMAL 0
+#define DSS_UNION 16
+#define DSS_DISABLED 32
+#define DSS_MONO 128
+#define DSS_RIGHT 0x8000
+#define DT_BOTTOM 8
+#define DT_CALCRECT 1024
+#define DT_CENTER 1
+#define DT_EDITCONTROL 8192
+#define DT_END_ELLIPSIS 32768
+#define DT_PATH_ELLIPSIS 16384
+#define DT_WORD_ELLIPSIS 0x40000
+#define DT_EXPANDTABS 64
+#define DT_EXTERNALLEADING 512
+#define DT_LEFT 0
+#define DT_MODIFYSTRING 65536
+#define DT_NOCLIP 256
+#define DT_NOPREFIX 2048
+#define DT_RIGHT 2
+#define DT_RTLREADING 131072
+#define DT_SINGLELINE 32
+#define DT_TABSTOP 128
+#define DT_TOP 0
+#define DT_VCENTER 4
+#define DT_WORDBREAK 16
+#define DT_INTERNAL 4096
+#define WB_ISDELIMITER 2
+#define WB_LEFT 0
+#define WB_RIGHT 1
+#define SB_HORZ 0
+#define SB_VERT 1
+#define SB_CTL 2
+#define SB_BOTH 3
+#define ESB_DISABLE_BOTH 3
+#define ESB_DISABLE_DOWN 2
+#define ESB_DISABLE_LEFT 1
+#define ESB_DISABLE_LTUP 1
+#define ESB_DISABLE_RIGHT 2
+#define ESB_DISABLE_RTDN 2
+#define ESB_DISABLE_UP 1
+#define ESB_ENABLE_BOTH 0
+#define SB_LINEUP 0
+#define SB_LINEDOWN 1
+#define SB_LINELEFT 0
+#define SB_LINERIGHT 1
+#define SB_PAGEUP 2
+#define SB_PAGEDOWN 3
+#define SB_PAGELEFT 2
+#define SB_PAGERIGHT 3
+#define SB_THUMBPOSITION 4
+#define SB_THUMBTRACK 5
+#define SB_ENDSCROLL 8
+#define SB_LEFT 6
+#define SB_RIGHT 7
+#define SB_BOTTOM 7
+#define SB_TOP 6
+#define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i)))
+#ifndef XFree86Server
+# define RT_CURSOR MAKEINTRESOURCE(1)
+# define RT_FONT MAKEINTRESOURCE(8)
+#endif /* ndef XFree86Server */
+#define RT_BITMAP MAKEINTRESOURCE(2)
+#define RT_ICON MAKEINTRESOURCE(3)
+#define RT_MENU MAKEINTRESOURCE(4)
+#define RT_DIALOG MAKEINTRESOURCE(5)
+#define RT_STRING MAKEINTRESOURCE(6)
+#define RT_FONTDIR MAKEINTRESOURCE(7)
+#define RT_ACCELERATOR MAKEINTRESOURCE(9)
+#define RT_RCDATA MAKEINTRESOURCE(10)
+#define RT_MESSAGETABLE MAKEINTRESOURCE(11)
+#define DIFFERENCE 11
+#define RT_GROUP_CURSOR MAKEINTRESOURCE((DWORD)RT_CURSOR+DIFFERENCE)
+#define RT_GROUP_ICON MAKEINTRESOURCE((DWORD)RT_ICON+DIFFERENCE)
+#define RT_VERSION MAKEINTRESOURCE(16)
+#define RT_DLGINCLUDE MAKEINTRESOURCE(17)
+#define RT_PLUGPLAY MAKEINTRESOURCE(19)
+#define RT_VXD MAKEINTRESOURCE(20)
+#define RT_ANICURSOR MAKEINTRESOURCE(21)
+#define RT_ANIICON MAKEINTRESOURCE(22)
+#define RT_HTML MAKEINTRESOURCE(23)
+#define EWX_FORCE 4
+#define EWX_LOGOFF 0
+#define EWX_POWEROFF 8
+#define EWX_REBOOT 2
+#define EWX_SHUTDOWN 1
+#define CS_BYTEALIGNCLIENT 4096
+#define CS_BYTEALIGNWINDOW 8192
+#define CS_KEYCVTWINDOW 4
+#define CS_NOKEYCVT 256
+#define CS_CLASSDC 64
+#define CS_DBLCLKS 8
+#define CS_GLOBALCLASS 16384
+#define CS_HREDRAW 2
+#define CS_NOCLOSE 512
+#define CS_OWNDC 32
+#define CS_PARENTDC 128
+#define CS_SAVEBITS 2048
+#define CS_VREDRAW 1
+#define CS_IME 0x10000
+#define GCW_ATOM (-32)
+#define GCL_CBCLSEXTRA (-20)
+#define GCL_CBWNDEXTRA (-18)
+#define GCL_HBRBACKGROUND (-10)
+#define GCL_HCURSOR (-12)
+#define GCL_HICON (-14)
+#define GCL_HICONSM (-34)
+#define GCL_HMODULE (-16)
+#define GCL_MENUNAME (-8)
+#define GCL_STYLE (-26)
+#define GCL_WNDPROC (-24)
+#if 0
+ /* This is supposed to be defined by the program using it not defined
+ in the win32api headers. I've left it here for documentation purposes.
+ */
+#ifndef IDC_STATIC /* May be predefined by resource compiler. */
+#define IDC_STATIC (-1)
+#endif
+#endif
+#define IDC_ARROW MAKEINTRESOURCE(32512)
+#define IDC_IBEAM MAKEINTRESOURCE(32513)
+#define IDC_WAIT MAKEINTRESOURCE(32514)
+#define IDC_CROSS MAKEINTRESOURCE(32515)
+#define IDC_UPARROW MAKEINTRESOURCE(32516)
+#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
+#define IDC_SIZENESW MAKEINTRESOURCE(32643)
+#define IDC_SIZEWE MAKEINTRESOURCE(32644)
+#define IDC_SIZENS MAKEINTRESOURCE(32645)
+#define IDC_SIZEALL MAKEINTRESOURCE(32646)
+#define IDC_NO MAKEINTRESOURCE(32648)
+#define IDC_HAND MAKEINTRESOURCE(32649)
+#define IDC_APPSTARTING MAKEINTRESOURCE(32650)
+#define IDC_HELP MAKEINTRESOURCE(32651)
+#define IDC_ICON MAKEINTRESOURCE(32641)
+#define IDC_SIZE MAKEINTRESOURCE(32640)
+#ifndef RC_INVOKED
+#define IDI_APPLICATION MAKEINTRESOURCE(32512)
+#define IDI_HAND MAKEINTRESOURCE(32513)
+#define IDI_QUESTION MAKEINTRESOURCE(32514)
+#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
+#define IDI_ASTERISK MAKEINTRESOURCE(32516)
+#define IDI_WINLOGO MAKEINTRESOURCE(32517)
+#else
+#define IDI_APPLICATION 32512
+#define IDI_HAND 32513
+#define IDI_QUESTION 32514
+#define IDI_EXCLAMATION 32515
+#define IDI_ASTERISK 32516
+#define IDI_WINLOGO 32517
+#endif
+#define IDI_WARNING IDI_EXCLAMATION
+#define IDI_ERROR IDI_HAND
+#define IDI_INFORMATION IDI_ASTERISK
+#define MIIM_STATE 1
+#define MIIM_ID 2
+#define MIIM_SUBMENU 4
+#define MIIM_CHECKMARKS 8
+#define MIIM_TYPE 16
+#define MIIM_DATA 32
+#define MIIM_STRING 64
+#define MIIM_BITMAP 128
+#define MIIM_FTYPE 256
+#define MFT_BITMAP 4
+#define MFT_MENUBARBREAK 32
+#define MFT_MENUBREAK 64
+#define MFT_OWNERDRAW 256
+#define MFT_RADIOCHECK 512
+#define MFT_RIGHTJUSTIFY 0x4000
+#define MFT_SEPARATOR 0x800
+#define MFT_RIGHTORDER 0x2000L
+#define MFT_STRING 0
+#define MFS_CHECKED 8
+#define MFS_DEFAULT 4096
+#define MFS_DISABLED 3
+#define MFS_ENABLED 0
+#define MFS_GRAYED 3
+#define MFS_HILITE 128
+#define MFS_UNCHECKED 0
+#define MFS_UNHILITE 0
+#define GW_HWNDNEXT 2
+#define GW_HWNDPREV 3
+#define GW_CHILD 5
+#define GW_HWNDFIRST 0
+#define GW_HWNDLAST 1
+#define GW_OWNER 4
+#define SW_HIDE 0
+#define SW_NORMAL 1
+#define SW_SHOWNORMAL 1
+#define SW_SHOWMINIMIZED 2
+#define SW_MAXIMIZE 3
+#define SW_SHOWMAXIMIZED 3
+#define SW_SHOWNOACTIVATE 4
+#define SW_SHOW 5
+#define SW_MINIMIZE 6
+#define SW_SHOWMINNOACTIVE 7
+#define SW_SHOWNA 8
+#define SW_RESTORE 9
+#define SW_SHOWDEFAULT 10
+#define SW_FORCEMINIMIZE 11
+#define SW_MAX 11
+#define MB_USERICON 128
+#define MB_ICONASTERISK 64
+#define MB_ICONEXCLAMATION 0x30
+#define MB_ICONWARNING 0x30
+#define MB_ICONERROR 16
+#define MB_ICONHAND 16
+#define MB_ICONQUESTION 32
+#define MB_OK 0
+#define MB_ABORTRETRYIGNORE 2
+#define MB_APPLMODAL 0
+#define MB_DEFAULT_DESKTOP_ONLY 0x20000
+#define MB_HELP 0x4000
+#define MB_RIGHT 0x80000
+#define MB_RTLREADING 0x100000
+#define MB_TOPMOST 0x40000
+#define MB_DEFBUTTON1 0
+#define MB_DEFBUTTON2 256
+#define MB_DEFBUTTON3 512
+#define MB_DEFBUTTON4 0x300
+#define MB_ICONINFORMATION 64
+#define MB_ICONSTOP 16
+#define MB_OKCANCEL 1
+#define MB_RETRYCANCEL 5
+#ifdef _WIN32_WINNT
+#if (_WIN32_WINNT >= 0x0400)
+#define MB_SERVICE_NOTIFICATION 0x00200000
+#else
+#define MB_SERVICE_NOTIFICATION 0x00040000
+#endif
+#define MB_SERVICE_NOTIFICATION_NT3X 0x00040000
+#endif
+#define MB_SETFOREGROUND 0x10000
+#define MB_SYSTEMMODAL 4096
+#define MB_TASKMODAL 0x2000
+#define MB_YESNO 4
+#define MB_YESNOCANCEL 3
+#define MB_ICONMASK 240
+#define MB_DEFMASK 3840
+#define MB_MODEMASK 0x00003000
+#define MB_MISCMASK 0x0000C000
+#define MB_NOFOCUS 0x00008000
+#define MB_TYPEMASK 15
+#define MB_TOPMOST 0x40000
+#define IDABORT 3
+#define IDCANCEL 2
+#define IDCLOSE 8
+#define IDHELP 9
+#define IDIGNORE 5
+#define IDNO 7
+#define IDOK 1
+#define IDRETRY 4
+#define IDYES 6
+#define GWL_EXSTYLE (-20)
+#define GWL_STYLE (-16)
+#define GWL_WNDPROC (-4)
+#define GWLP_WNDPROC (-4)
+#define GWL_HINSTANCE (-6)
+#define GWLP_HINSTANCE (-6)
+#define GWL_HWNDPARENT (-8)
+#define GWLP_HWNDPARENT (-8)
+#define GWL_ID (-12)
+#define GWLP_ID (-12)
+#define GWL_USERDATA (-21)
+#define GWLP_USERDATA (-21)
+#define DWL_DLGPROC 4
+#define DWLP_DLGPROC 4
+#define DWL_MSGRESULT 0
+#define DWLP_MSGRESULT 0
+#define DWL_USER 8
+#define DWLP_USER 8
+#define QS_ALLEVENTS 191
+#define QS_ALLINPUT 255
+#define QS_HOTKEY 128
+#define QS_INPUT 7
+#define QS_KEY 1
+#define QS_MOUSE 6
+#define QS_MOUSEBUTTON 4
+#define QS_MOUSEMOVE 2
+#define QS_PAINT 32
+#define QS_POSTMESSAGE 8
+#define QS_SENDMESSAGE 64
+#define QS_TIMER 16
+#define COLOR_3DDKSHADOW 21
+#define COLOR_3DFACE 15
+#define COLOR_3DHILIGHT 20
+#define COLOR_3DHIGHLIGHT 20
+#define COLOR_3DLIGHT 22
+#define COLOR_BTNHILIGHT 20
+#define COLOR_3DSHADOW 16
+#define COLOR_ACTIVEBORDER 10
+#define COLOR_ACTIVECAPTION 2
+#define COLOR_APPWORKSPACE 12
+#define COLOR_BACKGROUND 1
+#define COLOR_DESKTOP 1
+#define COLOR_BTNFACE 15
+#define COLOR_BTNHIGHLIGHT 20
+#define COLOR_BTNSHADOW 16
+#define COLOR_BTNTEXT 18
+#define COLOR_CAPTIONTEXT 9
+#define COLOR_GRAYTEXT 17
+#define COLOR_HIGHLIGHT 13
+#define COLOR_HIGHLIGHTTEXT 14
+#define COLOR_INACTIVEBORDER 11
+#define COLOR_INACTIVECAPTION 3
+#define COLOR_INACTIVECAPTIONTEXT 19
+#define COLOR_INFOBK 24
+#define COLOR_INFOTEXT 23
+#define COLOR_MENU 4
+#define COLOR_MENUTEXT 7
+#define COLOR_SCROLLBAR 0
+#define COLOR_WINDOW 5
+#define COLOR_WINDOWFRAME 6
+#define COLOR_WINDOWTEXT 8
+#define CTLCOLOR_MSGBOX 0
+#define CTLCOLOR_EDIT 1
+#define CTLCOLOR_LISTBOX 2
+#define CTLCOLOR_BTN 3
+#define CTLCOLOR_DLG 4
+#define CTLCOLOR_SCROLLBAR 5
+#define CTLCOLOR_STATIC 6
+#define CTLCOLOR_MAX 7
+#define SM_CXSCREEN 0
+#define SM_CYSCREEN 1
+#define SM_CXVSCROLL 2
+#define SM_CYHSCROLL 3
+#define SM_CYCAPTION 4
+#define SM_CXBORDER 5
+#define SM_CYBORDER 6
+#define SM_CXDLGFRAME 7
+#define SM_CXFIXEDFRAME 7
+#define SM_CYDLGFRAME 8
+#define SM_CYFIXEDFRAME 8
+#define SM_CYVTHUMB 9
+#define SM_CXHTHUMB 10
+#define SM_CXICON 11
+#define SM_CYICON 12
+#define SM_CXCURSOR 13
+#define SM_CYCURSOR 14
+#define SM_CYMENU 15
+#define SM_CXFULLSCREEN 16
+#define SM_CYFULLSCREEN 17
+#define SM_CYKANJIWINDOW 18
+#define SM_MOUSEPRESENT 19
+#define SM_CYVSCROLL 20
+#define SM_CXHSCROLL 21
+#define SM_DEBUG 22
+#define SM_SWAPBUTTON 23
+#define SM_RESERVED1 24
+#define SM_RESERVED2 25
+#define SM_RESERVED3 26
+#define SM_RESERVED4 27
+#define SM_CXMIN 28
+#define SM_CYMIN 29
+#define SM_CXSIZE 30
+#define SM_CYSIZE 31
+#define SM_CXSIZEFRAME 32
+#define SM_CXFRAME 32
+#define SM_CYSIZEFRAME 33
+#define SM_CYFRAME 33
+#define SM_CXMINTRACK 34
+#define SM_CYMINTRACK 35
+#define SM_CXDOUBLECLK 36
+#define SM_CYDOUBLECLK 37
+#define SM_CXICONSPACING 38
+#define SM_CYICONSPACING 39
+#define SM_MENUDROPALIGNMENT 40
+#define SM_PENWINDOWS 41
+#define SM_DBCSENABLED 42
+#define SM_CMOUSEBUTTONS 43
+#define SM_SECURE 44
+#define SM_CXEDGE 45
+#define SM_CYEDGE 46
+#define SM_CXMINSPACING 47
+#define SM_CYMINSPACING 48
+#define SM_CXSMICON 49
+#define SM_CYSMICON 50
+#define SM_CYSMCAPTION 51
+#define SM_CXSMSIZE 52
+#define SM_CYSMSIZE 53
+#define SM_CXMENUSIZE 54
+#define SM_CYMENUSIZE 55
+#define SM_ARRANGE 56
+#define SM_CXMINIMIZED 57
+#define SM_CYMINIMIZED 58
+#define SM_CXMAXTRACK 59
+#define SM_CYMAXTRACK 60
+#define SM_CXMAXIMIZED 61
+#define SM_CYMAXIMIZED 62
+#define SM_NETWORK 63
+#define LR_DEFAULTSIZE 64
+#define SM_CLEANBOOT 67
+#define SM_CXDRAG 68
+#define SM_CYDRAG 69
+#define SM_SHOWSOUNDS 70
+#define SM_CXMENUCHECK 71
+#define SM_CYMENUCHECK 72
+#define SM_SLOWMACHINE 73
+#define SM_MIDEASTENABLED 74
+#define SM_MOUSEWHEELPRESENT 75
+#define SM_XVIRTUALSCREEN 76
+#define SM_YVIRTUALSCREEN 77
+#define SM_CXVIRTUALSCREEN 78
+#define SM_CYVIRTUALSCREEN 79
+#define SM_CMONITORS 80
+#define SM_SAMEDISPLAYFORMAT 81
+#if (_WIN32_WINNT < 0x0400)
+#define SM_CMETRICS 76
+#else
+#define SM_CMETRICS 83
+#endif
+#define ARW_BOTTOMLEFT 0
+#define ARW_BOTTOMRIGHT 1
+#define ARW_HIDE 8
+#define ARW_TOPLEFT 2
+#define ARW_TOPRIGHT 3
+#define ARW_DOWN 4
+#define ARW_LEFT 0
+#define ARW_RIGHT 0
+#define ARW_UP 4
+#define UOI_FLAGS 1
+#define UOI_NAME 2
+#define UOI_TYPE 3
+#define UOI_USER_SID 4
+#define LR_DEFAULTCOLOR 0
+#define LR_MONOCHROME 1
+#define LR_COLOR 2
+#define LR_COPYRETURNORG 4
+#define LR_COPYDELETEORG 8
+#define LR_LOADFROMFILE 16
+#define LR_LOADTRANSPARENT 32
+#define LR_LOADREALSIZE 128
+#define LR_LOADMAP3DCOLORS 4096
+#define LR_CREATEDIBSECTION 8192
+#define LR_COPYFROMRESOURCE 0x4000
+#define LR_SHARED 32768
+#define KEYEVENTF_EXTENDEDKEY 1
+#define KEYEVENTF_KEYUP 2
+#define OBM_BTNCORNERS 32758
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_CLOSE 32754
+#define OBM_COMBO 32738
+#define OBM_DNARROW 32752
+#define OBM_DNARROWD 32742
+#define OBM_DNARROWI 32736
+#define OBM_LFARROW 32750
+#define OBM_LFARROWI 32734
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_OLD_CLOSE 32767
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_LFARROW 32762
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_RESTORE 32755
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_ZOOM 32756
+#define OBM_REDUCE 32749
+#define OBM_REDUCED 32746
+#define OBM_RESTORE 32747
+#define OBM_RESTORED 32744
+#define OBM_RGARROW 32751
+#define OBM_RGARROWD 32741
+#define OBM_RGARROWI 32735
+#define OBM_SIZE 32766
+#define OBM_UPARROW 32753
+#define OBM_UPARROWD 32743
+#define OBM_UPARROWI 32737
+#define OBM_ZOOM 32748
+#define OBM_ZOOMD 32745
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_NO 32648
+#define OCR_APPSTARTING 32650
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+#define OIC_WINLOGO 32517
+#define OIC_WARNING OIC_BANG
+#define OIC_ERROR OIC_HAND
+#define OIC_INFORMATION OIC_NOTE
+#define HELPINFO_MENUITEM 2
+#define HELPINFO_WINDOW 1
+#define MSGF_DIALOGBOX 0
+#define MSGF_MESSAGEBOX 1
+#define MSGF_MENU 2
+#define MSGF_MOVE 3
+#define MSGF_SIZE 4
+#define MSGF_SCROLLBAR 5
+#define MSGF_NEXTWINDOW 6
+#define MSGF_MAINLOOP 8
+#define MSGF_USER 4096
+#define MOUSEEVENTF_MOVE 1
+#define MOUSEEVENTF_LEFTDOWN 2
+#define MOUSEEVENTF_LEFTUP 4
+#define MOUSEEVENTF_RIGHTDOWN 8
+#define MOUSEEVENTF_RIGHTUP 16
+#define MOUSEEVENTF_MIDDLEDOWN 32
+#define MOUSEEVENTF_MIDDLEUP 64
+#define MOUSEEVENTF_WHEEL 0x0800
+#define MOUSEEVENTF_ABSOLUTE 32768
+#define PM_NOREMOVE 0
+#define PM_REMOVE 1
+#define PM_NOYIELD 2
+#define HWND_BROADCAST ((HWND)0xffff)
+#define HWND_BOTTOM ((HWND)1)
+#define HWND_NOTOPMOST ((HWND)(-2))
+#define HWND_TOP ((HWND)0)
+#define HWND_TOPMOST ((HWND)(-1))
+#define HWND_DESKTOP (HWND)0
+#define HWND_MESSAGE ((HWND)(-3)) /* w2k */
+#define RDW_ERASE 4
+#define RDW_FRAME 1024
+#define RDW_INTERNALPAINT 2
+#define RDW_INVALIDATE 1
+#define RDW_NOERASE 32
+#define RDW_NOFRAME 2048
+#define RDW_NOINTERNALPAINT 16
+#define RDW_VALIDATE 8
+#define RDW_ERASENOW 512
+#define RDW_UPDATENOW 256
+#define RDW_ALLCHILDREN 128
+#define RDW_NOCHILDREN 64
+#define SMTO_ABORTIFHUNG 2
+#define SMTO_BLOCK 1
+#define SMTO_NORMAL 0
+#define SIF_ALL 23
+#define SIF_PAGE 2
+#define SIF_POS 4
+#define SIF_RANGE 1
+#define SIF_DISABLENOSCROLL 8
+#define SIF_TRACKPOS 16
+#define SWP_DRAWFRAME 32
+#define SWP_FRAMECHANGED 32
+#define SWP_HIDEWINDOW 128
+#define SWP_NOACTIVATE 16
+#define SWP_NOCOPYBITS 256
+#define SWP_NOMOVE 2
+#define SWP_NOSIZE 1
+#define SWP_NOREDRAW 8
+#define SWP_NOZORDER 4
+#define SWP_SHOWWINDOW 64
+#define SWP_NOOWNERZORDER 512
+#define SWP_NOREPOSITION 512
+#define SWP_NOSENDCHANGING 1024
+#define SWP_DEFERERASE 8192
+#define SWP_ASYNCWINDOWPOS 16384
+#define HSHELL_ACTIVATESHELLWINDOW 3
+#define HSHELL_GETMINRECT 5
+#define HSHELL_LANGUAGE 8
+#define HSHELL_REDRAW 6
+#define HSHELL_TASKMAN 7
+#define HSHELL_WINDOWACTIVATED 4
+#define HSHELL_WINDOWCREATED 1
+#define HSHELL_WINDOWDESTROYED 2
+#define SPI_GETACCESSTIMEOUT 60
+#define SPI_GETANIMATION 72
+#define SPI_GETBEEP 1
+#define SPI_GETBORDER 5
+#define SPI_GETDEFAULTINPUTLANG 89
+#define SPI_GETDRAGFULLWINDOWS 38
+#define SPI_GETFASTTASKSWITCH 35
+#define SPI_GETFILTERKEYS 50
+#define SPI_GETFONTSMOOTHING 74
+#define SPI_GETGRIDGRANULARITY 18
+#define SPI_GETHIGHCONTRAST 66
+#define SPI_GETICONMETRICS 45
+#define SPI_GETICONTITLELOGFONT 31
+#define SPI_GETICONTITLEWRAP 25
+#define SPI_GETKEYBOARDDELAY 22
+#define SPI_GETKEYBOARDPREF 68
+#define SPI_GETKEYBOARDSPEED 10
+#define SPI_GETLOWPOWERACTIVE 83
+#define SPI_GETLOWPOWERTIMEOUT 79
+#define SPI_GETMENUDROPALIGNMENT 27
+#define SPI_GETMINIMIZEDMETRICS 43
+#define SPI_GETMOUSE 3
+#define SPI_GETMOUSEKEYS 54
+#define SPI_GETMOUSETRAILS 94
+#define SPI_GETNONCLIENTMETRICS 41
+#define SPI_GETPOWEROFFACTIVE 84
+#define SPI_GETPOWEROFFTIMEOUT 80
+#define SPI_GETSCREENREADER 70
+#define SPI_GETSCREENSAVEACTIVE 16
+#define SPI_GETSCREENSAVETIMEOUT 14
+#define SPI_GETSERIALKEYS 62
+#define SPI_GETSHOWSOUNDS 56
+#define SPI_GETSOUNDSENTRY 64
+#define SPI_GETSTICKYKEYS 58
+#define SPI_GETTOGGLEKEYS 52
+#define SPI_GETWINDOWSEXTENSION 92
+#define SPI_GETWORKAREA 48
+#define SPI_ICONHORIZONTALSPACING 13
+#define SPI_ICONVERTICALSPACING 24
+#define SPI_LANGDRIVER 12
+#define SPI_SCREENSAVERRUNNING 97
+#define SPI_SETACCESSTIMEOUT 61
+#define SPI_SETANIMATION 73
+#define SPI_SETBEEP 2
+#define SPI_SETBORDER 6
+#define SPI_SETDEFAULTINPUTLANG 90
+#define SPI_SETDESKPATTERN 21
+#define SPI_SETDESKWALLPAPER 20
+#define SPI_SETDOUBLECLICKTIME 32
+#define SPI_SETDOUBLECLKHEIGHT 30
+#define SPI_SETDOUBLECLKWIDTH 29
+#define SPI_SETDRAGFULLWINDOWS 37
+#define SPI_SETDRAGHEIGHT 77
+#define SPI_SETDRAGWIDTH 76
+#define SPI_SETFASTTASKSWITCH 36
+#define SPI_SETFILTERKEYS 51
+#define SPI_SETFONTSMOOTHING 75
+#define SPI_SETGRIDGRANULARITY 19
+#define SPI_SETHANDHELD 78
+#define SPI_SETHIGHCONTRAST 67
+#define SPI_SETICONMETRICS 46
+#define SPI_SETICONTITLELOGFONT 34
+#define SPI_SETICONTITLEWRAP 26
+#define SPI_SETKEYBOARDDELAY 23
+#define SPI_SETKEYBOARDPREF 69
+#define SPI_SETKEYBOARDSPEED 11
+#define SPI_SETLANGTOGGLE 91
+#define SPI_SETLOWPOWERACTIVE 85
+#define SPI_SETLOWPOWERTIMEOUT 81
+#define SPI_SETMENUDROPALIGNMENT 28
+#define SPI_SETMINIMIZEDMETRICS 44
+#define SPI_SETMOUSE 4
+#define SPI_SETMOUSEBUTTONSWAP 33
+#define SPI_SETMOUSEKEYS 55
+#define SPI_SETMOUSETRAILS 93
+#define SPI_SETNONCLIENTMETRICS 42
+#define SPI_SETPENWINDOWS 49
+#define SPI_SETPOWEROFFACTIVE 86
+#define SPI_SETPOWEROFFTIMEOUT 82
+#define SPI_SETSCREENREADER 71
+#define SPI_SETSCREENSAVEACTIVE 17
+#define SPI_SETSCREENSAVERRUNNING 97
+#define SPI_SETSCREENSAVETIMEOUT 15
+#define SPI_SETSERIALKEYS 63
+#define SPI_SETSHOWSOUNDS 57
+#define SPI_SETSOUNDSENTRY 65
+#define SPI_SETSTICKYKEYS 59
+#define SPI_SETTOGGLEKEYS 53
+#define SPI_SETWORKAREA 47
+#define SPIF_UPDATEINIFILE 1
+#define SPIF_SENDWININICHANGE 2
+#define SPIF_SENDCHANGE 2
+#define ATF_ONOFFFEEDBACK 2
+#define ATF_TIMEOUTON 1
+#define WM_APP 32768
+#define WM_ACTIVATE 6
+#define WM_ACTIVATEAPP 28
+/* FIXME/CHECK: Are WM_AFX{FIRST,LAST} valid for WINVER < 0x400? */
+#define WM_AFXFIRST 864
+#define WM_AFXLAST 895
+#define WM_ASKCBFORMATNAME 780
+#define WM_CANCELJOURNAL 75
+#define WM_CANCELMODE 31
+#define WM_CAPTURECHANGED 533
+#define WM_CHANGECBCHAIN 781
+#define WM_CHAR 258
+#define WM_CHARTOITEM 47
+#define WM_CHILDACTIVATE 34
+#define WM_CLEAR 771
+#define WM_CLOSE 16
+#define WM_COMMAND 273
+#define WM_COMMNOTIFY 68 /* obsolete */
+#define WM_COMPACTING 65
+#define WM_COMPAREITEM 57
+#define WM_CONTEXTMENU 123
+#define WM_COPY 769
+#define WM_COPYDATA 74
+#define WM_CREATE 1
+#define WM_CTLCOLORBTN 309
+#define WM_CTLCOLORDLG 310
+#define WM_CTLCOLOREDIT 307
+#define WM_CTLCOLORLISTBOX 308
+#define WM_CTLCOLORMSGBOX 306
+#define WM_CTLCOLORSCROLLBAR 311
+#define WM_CTLCOLORSTATIC 312
+#define WM_CUT 768
+#define WM_DEADCHAR 259
+#define WM_DELETEITEM 45
+#define WM_DESTROY 2
+#define WM_DESTROYCLIPBOARD 775
+#define WM_DEVICECHANGE 537
+#define WM_DEVMODECHANGE 27
+#define WM_DISPLAYCHANGE 126
+#define WM_DRAWCLIPBOARD 776
+#define WM_DRAWITEM 43
+#define WM_DROPFILES 563
+#define WM_ENABLE 10
+#define WM_ENDSESSION 22
+#define WM_ENTERIDLE 289
+#define WM_ENTERMENULOOP 529
+#define WM_ENTERSIZEMOVE 561
+#define WM_ERASEBKGND 20
+#define WM_EXITMENULOOP 530
+#define WM_EXITSIZEMOVE 562
+#define WM_FONTCHANGE 29
+#define WM_GETDLGCODE 135
+#define WM_GETFONT 49
+#define WM_GETHOTKEY 51
+#define WM_GETICON 127
+#define WM_GETMINMAXINFO 36
+#define WM_GETTEXT 13
+#define WM_GETTEXTLENGTH 14
+/* FIXME/CHECK: Are WM_HANDHEL{FIRST,LAST} valid for WINVER < 0x400? */
+#define WM_HANDHELDFIRST 856
+#define WM_HANDHELDLAST 863
+#define WM_HELP 83
+#define WM_HOTKEY 786
+#define WM_HSCROLL 276
+#define WM_HSCROLLCLIPBOARD 782
+#define WM_ICONERASEBKGND 39
+#define WM_INITDIALOG 272
+#define WM_INITMENU 278
+#define WM_INITMENUPOPUP 279
+#define WM_INPUTLANGCHANGE 81
+#define WM_INPUTLANGCHANGEREQUEST 80
+#define WM_KEYDOWN 256
+#define WM_KEYUP 257
+#define WM_KILLFOCUS 8
+#define WM_MDIACTIVATE 546
+#define WM_MDICASCADE 551
+#define WM_MDICREATE 544
+#define WM_MDIDESTROY 545
+#define WM_MDIGETACTIVE 553
+#define WM_MDIICONARRANGE 552
+#define WM_MDIMAXIMIZE 549
+#define WM_MDINEXT 548
+#define WM_MDIREFRESHMENU 564
+#define WM_MDIRESTORE 547
+#define WM_MDISETMENU 560
+#define WM_MDITILE 550
+#define WM_MEASUREITEM 44
+#define WM_MENUCHAR 288
+#define WM_MENUSELECT 287
+#define WM_NEXTMENU 531
+#define WM_MOVE 3
+#define WM_MOVING 534
+#define WM_NCACTIVATE 134
+#define WM_NCCALCSIZE 131
+#define WM_NCCREATE 129
+#define WM_NCDESTROY 130
+#define WM_NCHITTEST 132
+#define WM_NCLBUTTONDBLCLK 163
+#define WM_NCLBUTTONDOWN 161
+#define WM_NCLBUTTONUP 162
+#define WM_NCMBUTTONDBLCLK 169
+#define WM_NCMBUTTONDOWN 167
+#define WM_NCMBUTTONUP 168
+#define WM_NCMOUSEMOVE 160
+#define WM_NCPAINT 133
+#define WM_NCRBUTTONDBLCLK 166
+#define WM_NCRBUTTONDOWN 164
+#define WM_NCRBUTTONUP 165
+#define WM_NEXTDLGCTL 40
+#define WM_NEXTMENU 531
+#define WM_NOTIFY 78
+#define WM_NOTIFYFORMAT 85
+#define WM_NULL 0
+#define WM_PAINT 15
+#define WM_PAINTCLIPBOARD 777
+#define WM_PAINTICON 38
+#define WM_PALETTECHANGED 785
+#define WM_PALETTEISCHANGING 784
+#define WM_PARENTNOTIFY 528
+#define WM_PASTE 770
+#define WM_PENWINFIRST 896
+#define WM_PENWINLAST 911
+#define WM_POWER 72
+#define WM_POWERBROADCAST 536
+#define WM_PRINT 791
+#define WM_PRINTCLIENT 792
+#define WM_QUERYDRAGICON 55
+#define WM_QUERYENDSESSION 17
+#define WM_QUERYNEWPALETTE 783
+#define WM_QUERYOPEN 19
+#define WM_QUEUESYNC 35
+#define WM_QUIT 18
+#define WM_RENDERALLFORMATS 774
+#define WM_RENDERFORMAT 773
+#define WM_SETCURSOR 32
+#define WM_SETFOCUS 7
+#define WM_SETFONT 48
+#define WM_SETHOTKEY 50
+#define WM_SETICON 128
+#define WM_SETREDRAW 11
+#define WM_SETTEXT 12
+#define WM_SETTINGCHANGE 26
+#define WM_SHOWWINDOW 24
+#define WM_SIZE 5
+#define WM_SIZECLIPBOARD 779
+#define WM_SIZING 532
+#define WM_SPOOLERSTATUS 42
+#define WM_STYLECHANGED 125
+#define WM_STYLECHANGING 124
+#define WM_SYSCHAR 262
+#define WM_SYSCOLORCHANGE 21
+#define WM_SYSCOMMAND 274
+#define WM_SYSDEADCHAR 263
+#define WM_SYSKEYDOWN 260
+#define WM_SYSKEYUP 261
+#define WM_TCARD 82
+#define WM_TIMECHANGE 30
+#define WM_TIMER 275
+#define WM_UNDO 772
+#define WM_USER 1024
+#define WM_USERCHANGED 84
+#define WM_VKEYTOITEM 46
+#define WM_VSCROLL 277
+#define WM_VSCROLLCLIPBOARD 778
+#define WM_WINDOWPOSCHANGED 71
+#define WM_WINDOWPOSCHANGING 70
+#define WM_WININICHANGE 26
+#define WM_KEYFIRST 256
+#define WM_KEYLAST 264
+#define WM_SYNCPAINT 136
+#define WM_MOUSEACTIVATE 33
+#define WM_MOUSEMOVE 512
+#define WM_LBUTTONDOWN 513
+#define WM_LBUTTONUP 514
+#define WM_LBUTTONDBLCLK 515
+#define WM_RBUTTONDOWN 516
+#define WM_RBUTTONUP 517
+#define WM_RBUTTONDBLCLK 518
+#define WM_MBUTTONDOWN 519
+#define WM_MBUTTONUP 520
+#define WM_MBUTTONDBLCLK 521
+#define WM_MOUSEWHEEL 522
+#define WM_MOUSEFIRST 512
+#define WM_MOUSELAST 522
+#define WM_MOUSEHOVER 0x2A1
+#define WM_MOUSELEAVE 0x2A3
+#if(_WIN32_WINNT >= 0x0400)
+#define WHEEL_DELTA 120
+#define GET_WHEEL_DELTA_WPARAM(wparam) ((short)HIWORD (wparam))
+#endif
+#define BM_CLICK 245
+#define BM_GETCHECK 240
+#define BM_GETIMAGE 246
+#define BM_GETSTATE 242
+#define BM_SETCHECK 241
+#define BM_SETIMAGE 247
+#define BM_SETSTATE 243
+#define BM_SETSTYLE 244
+#define BN_CLICKED 0
+#define BN_DBLCLK 5
+#define BN_DISABLE 4
+#define BN_DOUBLECLICKED 5
+#define BN_HILITE 2
+#define BN_KILLFOCUS 7
+#define BN_PAINT 1
+#define BN_PUSHED 2
+#define BN_SETFOCUS 6
+#define BN_UNHILITE 3
+#define BN_UNPUSHED 3
+#define CB_ADDSTRING 323
+#define CB_DELETESTRING 324
+#define CB_DIR 325
+#define CB_FINDSTRING 332
+#define CB_FINDSTRINGEXACT 344
+#define CB_GETCOUNT 326
+#define CB_GETCURSEL 327
+#define CB_GETDROPPEDCONTROLRECT 338
+#define CB_GETDROPPEDSTATE 343
+#define CB_GETDROPPEDWIDTH 351
+#define CB_GETEDITSEL 320
+#define CB_GETEXTENDEDUI 342
+#define CB_GETHORIZONTALEXTENT 349
+#define CB_GETITEMDATA 336
+#define CB_GETITEMHEIGHT 340
+#define CB_GETLBTEXT 328
+#define CB_GETLBTEXTLEN 329
+#define CB_GETLOCALE 346
+#define CB_GETTOPINDEX 347
+#define CB_INITSTORAGE 353
+#define CB_INSERTSTRING 330
+#define CB_LIMITTEXT 321
+#define CB_RESETCONTENT 331
+#define CB_SELECTSTRING 333
+#define CB_SETCURSEL 334
+#define CB_SETDROPPEDWIDTH 352
+#define CB_SETEDITSEL 322
+#define CB_SETEXTENDEDUI 341
+#define CB_SETHORIZONTALEXTENT 350
+#define CB_SETITEMDATA 337
+#define CB_SETITEMHEIGHT 339
+#define CB_SETLOCALE 345
+#define CB_SETTOPINDEX 348
+#define CB_SHOWDROPDOWN 335
+#define CBN_CLOSEUP 8
+#define CBN_DBLCLK 2
+#define CBN_DROPDOWN 7
+#define CBN_EDITCHANGE 5
+#define CBN_EDITUPDATE 6
+#define CBN_ERRSPACE (-1)
+#define CBN_KILLFOCUS 4
+#define CBN_SELCHANGE 1
+#define CBN_SELENDCANCEL 10
+#define CBN_SELENDOK 9
+#define CBN_SETFOCUS 3
+#define EM_CANUNDO 198
+#define EM_CHARFROMPOS 215
+#define EM_EMPTYUNDOBUFFER 205
+#define EM_FMTLINES 200
+#define EM_GETFIRSTVISIBLELINE 206
+#define EM_GETHANDLE 189
+#define EM_GETLIMITTEXT 213
+#define EM_GETLINE 196
+#define EM_GETLINECOUNT 186
+#define EM_GETMARGINS 212
+#define EM_GETMODIFY 184
+#define EM_GETPASSWORDCHAR 210
+#define EM_GETRECT 178
+#define EM_GETSEL 176
+#define EM_GETTHUMB 190
+#define EM_GETWORDBREAKPROC 209
+#define EM_LIMITTEXT 197
+#define EM_LINEFROMCHAR 201
+#define EM_LINEINDEX 187
+#define EM_LINELENGTH 193
+#define EM_LINESCROLL 182
+#define EM_POSFROMCHAR 214
+#define EM_REPLACESEL 194
+#define EM_SCROLL 181
+#define EM_SCROLLCARET 183
+#define EM_SETHANDLE 188
+#define EM_SETLIMITTEXT 197
+#define EM_SETMARGINS 211
+#define EM_SETMODIFY 185
+#define EM_SETPASSWORDCHAR 204
+#define EM_SETREADONLY 207
+#define EM_SETRECT 179
+#define EM_SETRECTNP 180
+#define EM_SETSEL 177
+#define EM_SETTABSTOPS 203
+#define EM_SETWORDBREAKPROC 208
+#define EM_UNDO 199
+#define EN_CHANGE 768
+#define EN_ERRSPACE 1280
+#define EN_HSCROLL 1537
+#define EN_KILLFOCUS 512
+#define EN_MAXTEXT 1281
+#define EN_SETFOCUS 256
+#define EN_UPDATE 1024
+#define EN_VSCROLL 1538
+#define LB_ADDFILE 406
+#define LB_ADDSTRING 384
+#define LB_DELETESTRING 386
+#define LB_DIR 397
+#define LB_FINDSTRING 399
+#define LB_FINDSTRINGEXACT 418
+#define LB_GETANCHORINDEX 413
+#define LB_GETCARETINDEX 415
+#define LB_GETCOUNT 395
+#define LB_GETCURSEL 392
+#define LB_GETHORIZONTALEXTENT 403
+#define LB_GETITEMDATA 409
+#define LB_GETITEMHEIGHT 417
+#define LB_GETITEMRECT 408
+#define LB_GETLOCALE 422
+#define LB_GETSEL 391
+#define LB_GETSELCOUNT 400
+#define LB_GETSELITEMS 401
+#define LB_GETTEXT 393
+#define LB_GETTEXTLEN 394
+#define LB_GETTOPINDEX 398
+#define LB_INITSTORAGE 424
+#define LB_INSERTSTRING 385
+#define LB_ITEMFROMPOINT 425
+#define LB_RESETCONTENT 388
+#define LB_SELECTSTRING 396
+#define LB_SELITEMRANGE 411
+#define LB_SELITEMRANGEEX 387
+#define LB_SETANCHORINDEX 412
+#define LB_SETCARETINDEX 414
+#define LB_SETCOLUMNWIDTH 405
+#define LB_SETCOUNT 423
+#define LB_SETCURSEL 390
+#define LB_SETHORIZONTALEXTENT 404
+#define LB_SETITEMDATA 410
+#define LB_SETITEMHEIGHT 416
+#define LB_SETLOCALE 421
+#define LB_SETSEL 389
+#define LB_SETTABSTOPS 402
+#define LB_SETTOPINDEX 407
+#define LBN_DBLCLK 2
+#define LBN_ERRSPACE (-2)
+#define LBN_KILLFOCUS 5
+#define LBN_SELCANCEL 3
+#define LBN_SELCHANGE 1
+#define LBN_SETFOCUS 4
+#define SBM_ENABLE_ARROWS 228
+#define SBM_GETPOS 225
+#define SBM_GETRANGE 227
+#define SBM_GETSCROLLINFO 234
+#define SBM_SETPOS 224
+#define SBM_SETRANGE 226
+#define SBM_SETRANGEREDRAW 230
+#define SBM_SETSCROLLINFO 233
+#define STM_GETICON 369
+#define STM_GETIMAGE 371
+#define STM_SETICON 368
+#define STM_SETIMAGE 370
+#define STN_CLICKED 0
+#define STN_DBLCLK 1
+#define STN_DISABLE 3
+#define STN_ENABLE 2
+#define DM_GETDEFID WM_USER
+#define DM_SETDEFID (WM_USER+1)
+#define DM_REPOSITION (WM_USER+2)
+#define PSM_PAGEINFO (WM_USER+100)
+#define PSM_SHEETINFO (WM_USER+101)
+#define PSI_SETACTIVE 1
+#define PSI_KILLACTIVE 2
+#define PSI_APPLY 3
+#define PSI_RESET 4
+#define PSI_HASHELP 5
+#define PSI_HELP 6
+#define PSI_CHANGED 1
+#define PSI_GUISTART 2
+#define PSI_REBOOT 3
+#define PSI_GETSIBLINGS 4
+#define DCX_WINDOW 1
+#define DCX_CACHE 2
+#define DCX_PARENTCLIP 32
+#define DCX_CLIPSIBLINGS 16
+#define DCX_CLIPCHILDREN 8
+#define DCX_NORESETATTRS 4
+#define DCX_LOCKWINDOWUPDATE 0x400
+#define DCX_EXCLUDERGN 64
+#define DCX_INTERSECTRGN 128
+#define DCX_VALIDATE 0x200000
+#define GMDI_GOINTOPOPUPS 2
+#define GMDI_USEDISABLED 1
+#define FKF_AVAILABLE 2
+#define FKF_CLICKON 64
+#define FKF_FILTERKEYSON 1
+#define FKF_HOTKEYACTIVE 4
+#define FKF_HOTKEYSOUND 16
+#define FKF_CONFIRMHOTKEY 8
+#define FKF_INDICATOR 32
+#define HCF_HIGHCONTRASTON 1
+#define HCF_AVAILABLE 2
+#define HCF_HOTKEYACTIVE 4
+#define HCF_CONFIRMHOTKEY 8
+#define HCF_HOTKEYSOUND 16
+#define HCF_INDICATOR 32
+#define HCF_HOTKEYAVAILABLE 64
+#define MKF_AVAILABLE 2
+#define MKF_CONFIRMHOTKEY 8
+#define MKF_HOTKEYACTIVE 4
+#define MKF_HOTKEYSOUND 16
+#define MKF_INDICATOR 32
+#define MKF_MOUSEKEYSON 1
+#define MKF_MODIFIERS 64
+#define MKF_REPLACENUMBERS 128
+#define SERKF_ACTIVE 8 /* May be obsolete. Not in recent MS docs. */
+#define SERKF_AVAILABLE 2
+#define SERKF_INDICATOR 4
+#define SERKF_SERIALKEYSON 1
+#define SSF_AVAILABLE 2
+#define SSF_SOUNDSENTRYON 1
+#define SSTF_BORDER 2
+#define SSTF_CHARS 1
+#define SSTF_DISPLAY 3
+#define SSTF_NONE 0
+#define SSGF_DISPLAY 3
+#define SSGF_NONE 0
+#define SSWF_CUSTOM 4
+#define SSWF_DISPLAY 3
+#define SSWF_NONE 0
+#define SSWF_TITLE 1
+#define SSWF_WINDOW 2
+#define SKF_AUDIBLEFEEDBACK 64
+#define SKF_AVAILABLE 2
+#define SKF_CONFIRMHOTKEY 8
+#define SKF_HOTKEYACTIVE 4
+#define SKF_HOTKEYSOUND 16
+#define SKF_INDICATOR 32
+#define SKF_STICKYKEYSON 1
+#define SKF_TRISTATE 128
+#define SKF_TWOKEYSOFF 256
+#define TKF_AVAILABLE 2
+#define TKF_CONFIRMHOTKEY 8
+#define TKF_HOTKEYACTIVE 4
+#define TKF_HOTKEYSOUND 16
+#define TKF_TOGGLEKEYSON 1
+#define MDITILE_SKIPDISABLED 2
+#define MDITILE_HORIZONTAL 1
+#define MDITILE_VERTICAL 0
+#define VK_LBUTTON 1
+#define VK_RBUTTON 2
+#define VK_CANCEL 3
+#define VK_MBUTTON 4
+#define VK_BACK 8
+#define VK_TAB 9
+#define VK_CLEAR 12
+#define VK_RETURN 13
+#define VK_KANA 15
+#define VK_SHIFT 16
+#define VK_CONTROL 17
+#define VK_MENU 18
+#define VK_PAUSE 19
+#define VK_CAPITAL 20
+#define VK_ESCAPE 0x1B
+#define VK_SPACE 32
+#define VK_PRIOR 33
+#define VK_NEXT 34
+#define VK_END 35
+#define VK_HOME 36
+#define VK_LEFT 37
+#define VK_UP 38
+#define VK_RIGHT 39
+#define VK_DOWN 40
+#define VK_SELECT 41
+#define VK_PRINT 42
+#define VK_EXECUTE 43
+#define VK_SNAPSHOT 44
+#define VK_INSERT 45
+#define VK_DELETE 46
+#define VK_HELP 47
+#define VK_LWIN 0x5B
+#define VK_RWIN 0x5C
+#define VK_APPS 0x5D
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VK_NUMPAD5 0x65
+#define VK_NUMPAD6 0x66
+#define VK_NUMPAD7 0x67
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define VK_F13 0x7C
+#define VK_F14 0x7D
+#define VK_F15 0x7E
+#define VK_F16 0x7F
+#define VK_F17 0x80
+#define VK_F18 0x81
+#define VK_F19 0x82
+#define VK_F20 0x83
+#define VK_F21 0x84
+#define VK_F22 0x85
+#define VK_F23 0x86
+#define VK_F24 0x87
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+#define VK_LSHIFT 0xA0
+#define VK_RSHIFT 0xA1
+#define VK_LCONTROL 0xA2
+#define VK_RCONTROL 0xA3
+#define VK_LMENU 0xA4
+#define VK_RMENU 0xA5
+#define VK_PROCESSKEY 0xE5
+#define VK_ATTN 0xF6
+#define VK_CRSEL 0xF7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
+#define TME_HOVER 1
+#define TME_LEAVE 2
+#define TME_QUERY 0x40000000
+#define TME_CANCEL 0x80000000
+#define HOVER_DEFAULT 0xFFFFFFFF
+#define MK_LBUTTON 1
+#define MK_RBUTTON 2
+#define MK_SHIFT 4
+#define MK_CONTROL 8
+#define MK_MBUTTON 16
+#define TPM_CENTERALIGN 4
+#define TPM_LEFTALIGN 0
+#define TPM_RIGHTALIGN 8
+#define TPM_LEFTBUTTON 0
+#define TPM_RIGHTBUTTON 2
+#define TPM_HORIZONTAL 0
+#define TPM_VERTICAL 64
+#define TPM_TOPALIGN 0
+#define TPM_VCENTERALIGN 16
+#define TPM_BOTTOMALIGN 32
+#define TPM_NONOTIFY 128
+#define TPM_RETURNCMD 256
+#define HELP_COMMAND 0x102
+#define HELP_CONTENTS 3
+#define HELP_CONTEXT 1
+#define HELP_CONTEXTPOPUP 8
+#define HELP_FORCEFILE 9
+#define HELP_HELPONHELP 4
+#define HELP_INDEX 3
+#define HELP_KEY 0x101
+#define HELP_MULTIKEY 0x201
+#define HELP_PARTIALKEY 0x105
+#define HELP_QUIT 2
+#define HELP_SETCONTENTS 5
+#define HELP_SETINDEX 5
+#define HELP_CONTEXTMENU 0xa
+#define HELP_FINDER 0xb
+#define HELP_WM_HELP 0xc
+#define HELP_TCARD 0x8000
+#define HELP_TCARD_DATA 16
+#define HELP_TCARD_OTHER_CALLER 0x11
+#define IDH_NO_HELP 28440
+#define IDH_MISSING_CONTEXT 28441
+#define IDH_GENERIC_HELP_BUTTON 28442
+#define IDH_OK 28443
+#define IDH_CANCEL 28444
+#define IDH_HELP 28445
+#define LB_CTLCODE 0
+#define LB_OKAY 0
+#define LB_ERR (-1)
+#define LB_ERRSPACE (-2)
+#define CB_OKAY 0
+#define CB_ERR (-1)
+#define CB_ERRSPACE (-2)
+#define HIDE_WINDOW 0
+#define SHOW_OPENWINDOW 1
+#define SHOW_ICONWINDOW 2
+#define SHOW_FULLSCREEN 3
+#define SHOW_OPENNOACTIVATE 4
+#define SW_PARENTCLOSING 1
+#define SW_OTHERZOOM 2
+#define SW_PARENTOPENING 3
+#define SW_OTHERUNZOOM 4
+#define KF_EXTENDED 256
+#define KF_DLGMODE 2048
+#define KF_MENUMODE 4096
+#define KF_ALTDOWN 8192
+#define KF_REPEAT 16384
+#define KF_UP 32768
+#define WSF_VISIBLE 1
+#define PWR_OK 1
+#define PWR_FAIL (-1)
+#define PWR_SUSPENDREQUEST 1
+#define PWR_SUSPENDRESUME 2
+#define PWR_CRITICALRESUME 3
+#define NFR_ANSI 1
+#define NFR_UNICODE 2
+#define NF_QUERY 3
+#define NF_REQUERY 4
+#define MENULOOP_WINDOW 0
+#define MENULOOP_POPUP 1
+#define WMSZ_LEFT 1
+#define WMSZ_RIGHT 2
+#define WMSZ_TOP 3
+#define WMSZ_TOPLEFT 4
+#define WMSZ_TOPRIGHT 5
+#define WMSZ_BOTTOM 6
+#define WMSZ_BOTTOMLEFT 7
+#define WMSZ_BOTTOMRIGHT 8
+#define HTERROR (-2)
+#define HTTRANSPARENT (-1)
+#define HTNOWHERE 0
+#define HTCLIENT 1
+#define HTCAPTION 2
+#define HTSYSMENU 3
+#define HTGROWBOX 4
+#define HTSIZE 4
+#define HTMENU 5
+#define HTHSCROLL 6
+#define HTVSCROLL 7
+#define HTMINBUTTON 8
+#define HTMAXBUTTON 9
+#define HTREDUCE 8
+#define HTZOOM 9
+#define HTLEFT 10
+#define HTSIZEFIRST 10
+#define HTRIGHT 11
+#define HTTOP 12
+#define HTTOPLEFT 13
+#define HTTOPRIGHT 14
+#define HTBOTTOM 15
+#define HTBOTTOMLEFT 16
+#define HTBOTTOMRIGHT 17
+#define HTSIZELAST 17
+#define HTBORDER 18
+#define HTOBJECT 19
+#define HTCLOSE 20
+#define HTHELP 21
+#define MA_ACTIVATE 1
+#define MA_ACTIVATEANDEAT 2
+#define MA_NOACTIVATE 3
+#define MA_NOACTIVATEANDEAT 4
+#define SIZE_RESTORED 0
+#define SIZE_MINIMIZED 1
+#define SIZE_MAXIMIZED 2
+#define SIZE_MAXSHOW 3
+#define SIZE_MAXHIDE 4
+#define SIZENORMAL 0
+#define SIZEICONIC 1
+#define SIZEFULLSCREEN 2
+#define SIZEZOOMSHOW 3
+#define SIZEZOOMHIDE 4
+#define WVR_ALIGNTOP 16
+#define WVR_ALIGNLEFT 32
+#define WVR_ALIGNBOTTOM 64
+#define WVR_ALIGNRIGHT 128
+#define WVR_HREDRAW 256
+#define WVR_VREDRAW 512
+#define WVR_REDRAW (WVR_HREDRAW|WVR_VREDRAW)
+#define WVR_VALIDRECTS 1024
+#define PRF_CHECKVISIBLE 1
+#define PRF_NONCLIENT 2
+#define PRF_CLIENT 4
+#define PRF_ERASEBKGND 8
+#define PRF_CHILDREN 16
+#define PRF_OWNED 32
+#define IDANI_OPEN 1
+#define IDANI_CLOSE 2
+#define IDANI_CAPTION 3
+#define WPF_RESTORETOMAXIMIZED 2
+#define WPF_SETMINPOSITION 1
+#define ODT_MENU 1
+#define ODT_LISTBOX 2
+#define ODT_COMBOBOX 3
+#define ODT_BUTTON 4
+#define ODT_STATIC 5
+#define ODA_DRAWENTIRE 1
+#define ODA_SELECT 2
+#define ODA_FOCUS 4
+#define ODS_SELECTED 1
+#define ODS_GRAYED 2
+#define ODS_DISABLED 4
+#define ODS_CHECKED 8
+#define ODS_FOCUS 16
+#define ODS_DEFAULT 32
+#define ODS_COMBOBOXEDIT 4096
+#define IDHOT_SNAPWINDOW (-1)
+#define IDHOT_SNAPDESKTOP (-2)
+#define DBWF_LPARAMPOINTER 0x8000
+#define DLGWINDOWEXTRA 30
+#define MNC_IGNORE 0
+#define MNC_CLOSE 1
+#define MNC_EXECUTE 2
+#define MNC_SELECT 3
+#define DOF_EXECUTABLE 0x8001
+#define DOF_DOCUMENT 0x8002
+#define DOF_DIRECTORY 0x8003
+#define DOF_MULTIPLE 0x8004
+#define DOF_PROGMAN 1
+#define DOF_SHELLDATA 2
+#define DO_DROPFILE 0x454C4946
+#define DO_PRINTFILE 0x544E5250
+#define SW_SCROLLCHILDREN 1
+#define SW_INVALIDATE 2
+#define SW_ERASE 4
+#define SC_SIZE 0xF000
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_ICON 0xf020
+#define SC_MAXIMIZE 0xF030
+#define SC_ZOOM 0xF030
+#define SC_NEXTWINDOW 0xF040
+#define SC_PREVWINDOW 0xF050
+#define SC_CLOSE 0xF060
+#define SC_VSCROLL 0xF070
+#define SC_HSCROLL 0xF080
+#define SC_MOUSEMENU 0xF090
+#define SC_KEYMENU 0xF100
+#define SC_ARRANGE 0xF110
+#define SC_RESTORE 0xF120
+#define SC_TASKLIST 0xF130
+#define SC_SCREENSAVE 0xF140
+#define SC_HOTKEY 0xF150
+#define SC_DEFAULT 0xF160
+#define SC_MONITORPOWER 0xF170
+#define SC_CONTEXTHELP 0xF180
+#define SC_SEPARATOR 0xF00F
+#define EC_LEFTMARGIN 1
+#define EC_RIGHTMARGIN 2
+#define EC_USEFONTINFO 0xffff
+#define DC_HASDEFID 0x534B
+#define DLGC_WANTARROWS 1
+#define DLGC_WANTTAB 2
+#define DLGC_WANTALLKEYS 4
+#define DLGC_WANTMESSAGE 4
+#define DLGC_HASSETSEL 8
+#define DLGC_DEFPUSHBUTTON 16
+#define DLGC_UNDEFPUSHBUTTON 32
+#define DLGC_RADIOBUTTON 64
+#define DLGC_WANTCHARS 128
+#define DLGC_STATIC 256
+#define DLGC_BUTTON 0x2000
+#define LB_CTLCODE 0
+#define WA_INACTIVE 0
+#define WA_ACTIVE 1
+#define WA_CLICKACTIVE 2
+#define ICON_SMALL 0
+#define ICON_BIG 1
+#define HBMMENU_CALLBACK ((HBITMAP) -1)
+#define HBMMENU_SYSTEM ((HBITMAP)1)
+#define HBMMENU_MBAR_RESTORE ((HBITMAP)2)
+#define HBMMENU_MBAR_MINIMIZE ((HBITMAP)3)
+#define HBMMENU_MBAR_CLOSE ((HBITMAP)5)
+#define HBMMENU_MBAR_CLOSE_D ((HBITMAP)6)
+#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP)7)
+#define HBMMENU_POPUP_CLOSE ((HBITMAP)8)
+#define HBMMENU_POPUP_RESTORE ((HBITMAP)9)
+#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP)10)
+#define HBMMENU_POPUP_MINIMIZE ((HBITMAP)11)
+#define MOD_ALT 1
+#define MOD_CONTROL 2
+#define MOD_SHIFT 4
+#define MOD_WIN 8
+#define MOD_IGNORE_ALL_MODIFIER 1024
+#define MOD_ON_KEYUP 2048
+#define MOD_RIGHT 16384
+#define MOD_LEFT 32768
+#define LLKHF_ALTDOWN 0x00000020
+
+#ifndef RC_INVOKED
+typedef BOOL(CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef VOID(CALLBACK *TIMERPROC)(HWND,UINT,UINT,DWORD);
+typedef BOOL(CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,int);
+typedef LRESULT(CALLBACK *HOOKPROC)(int,WPARAM,LPARAM);
+typedef BOOL(CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
+typedef BOOL(CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
+typedef BOOL(CALLBACK *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,DWORD);
+typedef BOOL(CALLBACK *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,DWORD);
+typedef int(CALLBACK *EDITWORDBREAKPROCA)(LPSTR,int,int,int);
+typedef int(CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,int,int,int);
+typedef LRESULT(CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef BOOL(CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,int,int);
+typedef BOOL(CALLBACK *WNDENUMPROC)(HWND,LPARAM);
+typedef BOOL(CALLBACK *ENUMWINDOWSPROC)(HWND,LPARAM);
+typedef BOOL(CALLBACK* MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
+typedef BOOL(CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM);
+typedef BOOL(CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM);
+typedef NAMEENUMPROCA DESKTOPENUMPROCA;
+typedef NAMEENUMPROCW DESKTOPENUMPROCW;
+typedef NAMEENUMPROCA WINSTAENUMPROCA;
+typedef NAMEENUMPROCW WINSTAENUMPROCW;
+typedef void(CALLBACK *SENDASYNCPROC)(HWND,UINT,DWORD,LRESULT);
+DECLARE_HANDLE(HHOOK);
+DECLARE_HANDLE(HDWP);
+typedef struct tagACCEL {
+ BYTE fVirt;
+ WORD key;
+ WORD cmd;
+} ACCEL,*LPACCEL;
+typedef struct tagACCESSTIMEOUT {
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iTimeOutMSec;
+} ACCESSTIMEOUT, *LPACCESSTIMEOUT;
+typedef struct tagANIMATIONINFO {
+ UINT cbSize;
+ int iMinAnimate;
+} ANIMATIONINFO,*LPANIMATIONINFO;
+typedef struct tagCREATESTRUCTA {
+ LPVOID lpCreateParams;
+ HINSTANCE hInstance;
+ HMENU hMenu;
+ HWND hwndParent;
+ int cy;
+ int cx;
+ int y;
+ int x;
+ LONG style;
+ LPCSTR lpszName;
+ LPCSTR lpszClass;
+ DWORD dwExStyle;
+} CREATESTRUCTA,*LPCREATESTRUCTA;
+typedef struct tagCREATESTRUCTW {
+ LPVOID lpCreateParams;
+ HINSTANCE hInstance;
+ HMENU hMenu;
+ HWND hwndParent;
+ int cy;
+ int cx;
+ int y;
+ int x;
+ LONG style;
+ LPCWSTR lpszName;
+ LPCWSTR lpszClass;
+ DWORD dwExStyle;
+} CREATESTRUCTW,*LPCREATESTRUCTW;
+typedef struct tagCBT_CREATEWNDA {
+ LPCREATESTRUCTA lpcs;
+ HWND hwndInsertAfter;
+} CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
+typedef struct tagCBT_CREATEWNDW {
+ LPCREATESTRUCTW lpcs;
+ HWND hwndInsertAfter;
+} CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
+typedef struct tagCBTACTIVATESTRUCT {
+ BOOL fMouse;
+ HWND hWndActive;
+} CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT;
+typedef struct tagCLIENTCREATESTRUCT {
+ HANDLE hWindowMenu;
+ UINT idFirstChild;
+} CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
+typedef struct tagCOMPAREITEMSTRUCT {
+ UINT CtlType;
+ UINT CtlID;
+ HWND hwndItem;
+ UINT itemID1;
+ DWORD itemData1;
+ UINT itemID2;
+ DWORD itemData2;
+ DWORD dwLocaleId;
+} COMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
+typedef struct tagCOPYDATASTRUCT {
+ DWORD dwData;
+ DWORD cbData;
+ PVOID lpData;
+} COPYDATASTRUCT,*PCOPYDATASTRUCT;
+typedef struct tagCURSORSHAPE {
+ int xHotSpot;
+ int yHotSpot;
+ int cx;
+ int cy;
+ int cbWidth;
+ BYTE Planes;
+ BYTE BitsPixel;
+} CURSORSHAPE,*LPCURSORSHAPE;
+typedef struct tagCWPRETSTRUCT {
+ LRESULT lResult;
+ LPARAM lParam;
+ WPARAM wParam;
+ DWORD message;
+ HWND hwnd;
+} CWPRETSTRUCT;
+typedef struct tagCWPSTRUCT {
+ LPARAM lParam;
+ WPARAM wParam;
+ UINT message;
+ HWND hwnd;
+} CWPSTRUCT,*PCWPSTRUCT;
+typedef struct tagDEBUGHOOKINFO {
+ DWORD idThread;
+ DWORD idThreadInstaller;
+ LPARAM lParam;
+ WPARAM wParam;
+ int code;
+} DEBUGHOOKINFO,*PDEBUGHOOKINFO,*LPDEBUGHOOKINFO;
+typedef struct tagDELETEITEMSTRUCT {
+ UINT CtlType;
+ UINT CtlID;
+ UINT itemID;
+ HWND hwndItem;
+ UINT itemData;
+} DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT;
+#pragma pack(push,2)
+typedef struct {
+ DWORD style;
+ DWORD dwExtendedStyle;
+ short x;
+ short y;
+ short cx;
+ short cy;
+ WORD id;
+} DLGITEMTEMPLATE,*LPDLGITEMTEMPLATE;
+typedef struct {
+ DWORD style;
+ DWORD dwExtendedStyle;
+ WORD cdit;
+ short x;
+ short y;
+ short cx;
+ short cy;
+} DLGTEMPLATE,*LPDLGTEMPLATE;
+typedef const DLGTEMPLATE *LPCDLGTEMPLATE;
+#pragma pack(pop)
+typedef struct tagDRAWITEMSTRUCT {
+ UINT CtlType;
+ UINT CtlID;
+ UINT itemID;
+ UINT itemAction;
+ UINT itemState;
+ HWND hwndItem;
+ HDC hDC;
+ RECT rcItem;
+ DWORD itemData;
+} DRAWITEMSTRUCT,*LPDRAWITEMSTRUCT,*PDRAWITEMSTRUCT;
+typedef struct {
+ UINT cbSize;
+ int iTabLength;
+ int iLeftMargin;
+ int iRightMargin;
+ UINT uiLengthDrawn;
+} DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
+typedef struct tagPAINTSTRUCT {
+ HDC hdc;
+ BOOL fErase;
+ RECT rcPaint;
+ BOOL fRestore;
+ BOOL fIncUpdate;
+ BYTE rgbReserved[32];
+} PAINTSTRUCT,*LPPAINTSTRUCT;
+typedef struct tagMSG {
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+} MSG,*LPMSG,*PMSG;
+typedef struct _ICONINFO {
+ BOOL fIcon;
+ DWORD xHotspot;
+ DWORD yHotspot;
+ HBITMAP hbmMask;
+ HBITMAP hbmColor;
+} ICONINFO,*PICONINFO;
+typedef struct tagNMHDR {
+ HWND hwndFrom;
+ UINT idFrom;
+ UINT code;
+} NMHDR,*LPNMHDR;
+typedef struct _WNDCLASSA {
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HANDLE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCSTR lpszMenuName;
+ LPCSTR lpszClassName;
+} WNDCLASSA,*LPWNDCLASSA,*PWNDCLASSA;
+typedef struct _WNDCLASSW {
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HANDLE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCWSTR lpszMenuName;
+ LPCWSTR lpszClassName;
+} WNDCLASSW,*LPWNDCLASSW,*PWNDCLASSW;
+typedef struct _WNDCLASSEXA {
+ UINT cbSize;
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HANDLE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCSTR lpszMenuName;
+ LPCSTR lpszClassName;
+ HICON hIconSm;
+} WNDCLASSEXA,*LPWNDCLASSEXA,*PWNDCLASSEXA;
+typedef struct _WNDCLASSEXW {
+ UINT cbSize;
+ UINT style;
+ WNDPROC lpfnWndProc;
+ int cbClsExtra;
+ int cbWndExtra;
+ HANDLE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCWSTR lpszMenuName;
+ LPCWSTR lpszClassName;
+ HICON hIconSm;
+} WNDCLASSEXW,*LPWNDCLASSEXW,*PWNDCLASSEXW;
+typedef struct tagMENUITEMINFOA {
+ UINT cbSize;
+ UINT fMask;
+ UINT fType;
+ UINT fState;
+ UINT wID;
+ HMENU hSubMenu;
+ HBITMAP hbmpChecked;
+ HBITMAP hbmpUnchecked;
+ DWORD dwItemData;
+ LPSTR dwTypeData;
+ UINT cch;
+#if (_WIN32_WINNT >= 0x0500)
+ HBITMAP hbmpItem;
+#endif
+} MENUITEMINFOA,*LPMENUITEMINFOA;
+typedef const MENUITEMINFOA *LPCMENUITEMINFOA;
+typedef struct tagMENUITEMINFOW {
+ UINT cbSize;
+ UINT fMask;
+ UINT fType;
+ UINT fState;
+ UINT wID;
+ HMENU hSubMenu;
+ HBITMAP hbmpChecked;
+ HBITMAP hbmpUnchecked;
+ DWORD dwItemData;
+ LPWSTR dwTypeData;
+ UINT cch;
+#if (_WIN32_WINNT >= 0x0500)
+ HBITMAP hbmpItem;
+#endif
+} MENUITEMINFOW,*LPMENUITEMINFOW;
+typedef const MENUITEMINFOW *LPCMENUITEMINFOW;
+typedef struct tagSCROLLINFO {
+ UINT cbSize;
+ UINT fMask;
+ int nMin;
+ int nMax;
+ UINT nPage;
+ int nPos;
+ int nTrackPos;
+} SCROLLINFO,*LPSCROLLINFO;
+typedef const SCROLLINFO *LPCSCROLLINFO;
+typedef struct _WINDOWPLACEMENT {
+ UINT length;
+ UINT flags;
+ UINT showCmd;
+ POINT ptMinPosition;
+ POINT ptMaxPosition;
+ RECT rcNormalPosition;
+} WINDOWPLACEMENT,*LPWINDOWPLACEMENT,*PWINDOWPLACEMENT;
+typedef struct {
+ WORD versionNumber;
+ WORD offset;
+} MENUITEMTEMPLATEHEADER;
+typedef struct {
+ WORD mtOption;
+ WORD mtID;
+ WCHAR mtString[1];
+} MENUITEMTEMPLATE;
+typedef void MENUTEMPLATE,MENUTEMPLATEA,MENUTEMPLATEW,*LPMENUTEMPLATEA,*LPMENUTEMPLATEW,*LPMENUTEMPLATE;
+typedef struct tagHELPINFO {
+ UINT cbSize;
+ int iContextType;
+ int iCtrlId;
+ HANDLE hItemHandle;
+ DWORD dwContextId;
+ POINT MousePos;
+} HELPINFO,*LPHELPINFO;
+typedef void(CALLBACK *MSGBOXCALLBACK)(LPHELPINFO);
+typedef struct {
+ UINT cbSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCSTR lpszText;
+ LPCSTR lpszCaption;
+ DWORD dwStyle;
+ LPCSTR lpszIcon;
+ DWORD dwContextHelpId;
+ MSGBOXCALLBACK lpfnMsgBoxCallback;
+ DWORD dwLanguageId;
+} MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA;
+typedef struct {
+ UINT cbSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCWSTR lpszText;
+ LPCWSTR lpszCaption;
+ DWORD dwStyle;
+ LPCWSTR lpszIcon;
+ DWORD dwContextHelpId;
+ MSGBOXCALLBACK lpfnMsgBoxCallback;
+ DWORD dwLanguageId;
+} MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW;
+typedef struct tagUSEROBJECTFLAGS {
+ BOOL fInherit;
+ BOOL fReserved;
+ DWORD dwFlags;
+} USEROBJECTFLAGS;
+typedef struct tagFILTERKEYS {
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iWaitMSec;
+ DWORD iDelayMSec;
+ DWORD iRepeatMSec;
+ DWORD iBounceMSec;
+} FILTERKEYS;
+typedef struct tagHIGHCONTRASTA {
+ UINT cbSize;
+ DWORD dwFlags;
+ LPSTR lpszDefaultScheme;
+} HIGHCONTRASTA,*LPHIGHCONTRASTA;
+typedef struct tagHIGHCONTRASTW {
+ UINT cbSize;
+ DWORD dwFlags;
+ LPWSTR lpszDefaultScheme;
+} HIGHCONTRASTW,*LPHIGHCONTRASTW;
+typedef struct tagICONMETRICSA {
+ UINT cbSize;
+ int iHorzSpacing;
+ int iVertSpacing;
+ int iTitleWrap;
+ LOGFONTA lfFont;
+} ICONMETRICSA,*LPICONMETRICSA;
+typedef struct tagICONMETRICSW {
+ UINT cbSize;
+ int iHorzSpacing;
+ int iVertSpacing;
+ int iTitleWrap;
+ LOGFONTW lfFont;
+} ICONMETRICSW,*LPICONMETRICSW;
+typedef struct tagMINIMIZEDMETRICS {
+ UINT cbSize;
+ int iWidth;
+ int iHorzGap;
+ int iVertGap;
+ int iArrange;
+} MINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
+typedef struct tagMOUSEKEYS{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iMaxSpeed;
+ DWORD iTimeToMaxSpeed;
+ DWORD iCtrlSpeed;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} MOUSEKEYS, *LPMOUSEKEYS;
+typedef struct tagNONCLIENTMETRICSA {
+ UINT cbSize;
+ int iBorderWidth;
+ int iScrollWidth;
+ int iScrollHeight;
+ int iCaptionWidth;
+ int iCaptionHeight;
+ LOGFONTA lfCaptionFont;
+ int iSmCaptionWidth;
+ int iSmCaptionHeight;
+ LOGFONTA lfSmCaptionFont;
+ int iMenuWidth;
+ int iMenuHeight;
+ LOGFONTA lfMenuFont;
+ LOGFONTA lfStatusFont;
+ LOGFONTA lfMessageFont;
+} NONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
+typedef struct tagNONCLIENTMETRICSW {
+ UINT cbSize;
+ int iBorderWidth;
+ int iScrollWidth;
+ int iScrollHeight;
+ int iCaptionWidth;
+ int iCaptionHeight;
+ LOGFONTW lfCaptionFont;
+ int iSmCaptionWidth;
+ int iSmCaptionHeight;
+ LOGFONTW lfSmCaptionFont;
+ int iMenuWidth;
+ int iMenuHeight;
+ LOGFONTW lfMenuFont;
+ LOGFONTW lfStatusFont;
+ LOGFONTW lfMessageFont;
+} NONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
+typedef struct tagSERIALKEYSA {
+ UINT cbSize;
+ DWORD dwFlags;
+ LPSTR lpszActivePort;
+ LPSTR lpszPort;
+ UINT iBaudRate;
+ UINT iPortState;
+ UINT iActive;
+} SERIALKEYSA,*LPSERIALKEYSA;
+typedef struct tagSERIALKEYSW {
+ UINT cbSize;
+ DWORD dwFlags;
+ LPWSTR lpszActivePort;
+ LPWSTR lpszPort;
+ UINT iBaudRate;
+ UINT iPortState;
+ UINT iActive;
+} SERIALKEYSW,*LPSERIALKEYSW;
+typedef struct tagSOUNDSENTRYA {
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iFSTextEffect;
+ DWORD iFSTextEffectMSec;
+ DWORD iFSTextEffectColorBits;
+ DWORD iFSGrafEffect;
+ DWORD iFSGrafEffectMSec;
+ DWORD iFSGrafEffectColor;
+ DWORD iWindowsEffect;
+ DWORD iWindowsEffectMSec;
+ LPSTR lpszWindowsEffectDLL;
+ DWORD iWindowsEffectOrdinal;
+} SOUNDSENTRYA,*LPSOUNDSENTRYA;
+typedef struct tagSOUNDSENTRYW {
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iFSTextEffect;
+ DWORD iFSTextEffectMSec;
+ DWORD iFSTextEffectColorBits;
+ DWORD iFSGrafEffect;
+ DWORD iFSGrafEffectMSec;
+ DWORD iFSGrafEffectColor;
+ DWORD iWindowsEffect;
+ DWORD iWindowsEffectMSec;
+ LPWSTR lpszWindowsEffectDLL;
+ DWORD iWindowsEffectOrdinal;
+} SOUNDSENTRYW,*LPSOUNDSENTRYW;
+typedef struct tagSTICKYKEYS {
+ DWORD cbSize;
+ DWORD dwFlags;
+} STICKYKEYS,*LPSTICKYKEYS;
+typedef struct tagTOGGLEKEYS {
+ DWORD cbSize;
+ DWORD dwFlags;
+} TOGGLEKEYS;
+typedef struct tagTRACKMOUSEEVENT {
+ DWORD cbSize;
+ DWORD dwFlags;
+ HWND hwndTrack;
+ DWORD dwHoverTime;
+} TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
+typedef struct tagTPMPARAMS {
+ UINT cbSize;
+ RECT rcExclude;
+} TPMPARAMS,*LPTPMPARAMS;
+typedef struct tagEVENTMSG {
+ UINT message;
+ UINT paramL;
+ UINT paramH;
+ DWORD time;
+ HWND hwnd;
+} EVENTMSG,*PEVENTMSGMSG,*LPEVENTMSGMSG, *PEVENTMSG, *LPEVENTMSG;
+typedef struct _WINDOWPOS {
+ HWND hwnd;
+ HWND hwndInsertAfter;
+ int x;
+ int y;
+ int cx;
+ int cy;
+ UINT flags;
+} WINDOWPOS,*PWINDOWPOS,*LPWINDOWPOS;
+typedef struct tagMDICREATESTRUCTA {
+ LPCSTR szClass;
+ LPCSTR szTitle;
+ HANDLE hOwner;
+ int x;
+ int y;
+ int cx;
+ int cy;
+ DWORD style;
+ LPARAM lParam;
+} MDICREATESTRUCTA,*LPMDICREATESTRUCTA;
+typedef struct tagMDICREATESTRUCTW {
+ LPCWSTR szClass;
+ LPCWSTR szTitle;
+ HANDLE hOwner;
+ int x;
+ int y;
+ int cx;
+ int cy;
+ DWORD style;
+ LPARAM lParam;
+} MDICREATESTRUCTW,*LPMDICREATESTRUCTW;
+typedef struct tagMINMAXINFO {
+ POINT ptReserved;
+ POINT ptMaxSize;
+ POINT ptMaxPosition;
+ POINT ptMinTrackSize;
+ POINT ptMaxTrackSize;
+} MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO;
+typedef struct tagMDINEXTMENU {
+ HMENU hmenuIn;
+ HMENU hmenuNext;
+ HWND hwndNext;
+} MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU;
+typedef struct tagMEASUREITEMSTRUCT {
+ UINT CtlType;
+ UINT CtlID;
+ UINT itemID;
+ UINT itemWidth;
+ UINT itemHeight;
+ DWORD itemData;
+} MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT;
+typedef struct tagDROPSTRUCT {
+ HWND hwndSource;
+ HWND hwndSink;
+ DWORD wFmt;
+ DWORD dwData;
+ POINT ptDrop;
+ DWORD dwControlData;
+} DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT;
+typedef DWORD HELPPOLY;
+typedef struct tagMULTIKEYHELPA {
+ DWORD mkSize;
+ CHAR mkKeylist;
+ CHAR szKeyphrase[1];
+} MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA;
+typedef struct tagMULTIKEYHELPW {
+ DWORD mkSize;
+ WCHAR mkKeylist;
+ WCHAR szKeyphrase[1];
+} MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW;
+typedef struct tagHELPWININFOA {
+ int wStructSize;
+ int x;
+ int y;
+ int dx;
+ int dy;
+ int wMax;
+ CHAR rgchMember[2];
+} HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA;
+typedef struct tagHELPWININFOW {
+ int wStructSize;
+ int x;
+ int y;
+ int dx;
+ int dy;
+ int wMax;
+ WCHAR rgchMember[2];
+} HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW;
+typedef struct tagSTYLESTRUCT {
+ DWORD styleOld;
+ DWORD styleNew;
+} STYLESTRUCT,*LPSTYLESTRUCT;
+typedef struct tagALTTABINFO {
+ DWORD cbSize;
+ int cItems;
+ int cColumns;
+ int cRows;
+ int iColFocus;
+ int iRowFocus;
+ int cxItem;
+ int cyItem;
+ POINT ptStart;
+} ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
+typedef struct tagCOMBOBOXINFO {
+ DWORD cbSize;
+ RECT rcItem;
+ RECT rcButton;
+ DWORD stateButton;
+ HWND hwndCombo;
+ HWND hwndItem;
+ HWND hwndList;
+} COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
+typedef struct tagCURSORINFO {
+ DWORD cbSize;
+ DWORD flags;
+ HCURSOR hCursor;
+ POINT ptScreenPos;
+} CURSORINFO,*PCURSORINFO,*LPCURSORINFO;
+typedef struct tagMENUBARINFO {
+ DWORD cbSize;
+ RECT rcBar;
+ HMENU hMenu;
+ HWND hwndMenu;
+ BOOL fBarFocused:1;
+ BOOL fFocused:1;
+} MENUBARINFO, *PMENUBARINFO;
+typedef struct tagMENUINFO {
+ DWORD cbSize;
+ DWORD fMask;
+ DWORD dwStyle;
+ UINT cyMax;
+ HBRUSH hbrBack;
+ DWORD dwContextHelpID;
+ ULONG_PTR dwMenuData;
+} MENUINFO, *LPMENUINFO;
+typedef MENUINFO CONST *LPCMENUINFO;
+#define CCHILDREN_SCROLLBAR 5
+typedef struct tagSCROLLBARINFO {
+ DWORD cbSize;
+ RECT rcScrollBar;
+ int dxyLineButton;
+ int xyThumbTop;
+ int xyThumbBottom;
+ int reserved;
+ DWORD rgstate[CCHILDREN_SCROLLBAR + 1];
+} SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;
+#define CCHILDREN_TITLEBAR 5
+typedef struct tagTITLEBARINFO {
+ DWORD cbSize;
+ RECT rcTitleBar;
+ DWORD rgstate[CCHILDREN_TITLEBAR + 1];
+} TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;
+typedef struct tagWINDOWINFO {
+ DWORD cbSize;
+ RECT rcWindow;
+ RECT rcClient;
+ DWORD dwStyle;
+ DWORD dwExStyle;
+ DWORD dwWindowStatus;
+ UINT cxWindowBorders;
+ UINT cyWindowBorders;
+ ATOM atomWindowType;
+ WORD wCreatorVersion;
+} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
+typedef struct tagLASTINPUTINFO {
+ UINT cbSize;
+ DWORD dwTime;
+} LASTINPUTINFO, * PLASTINPUTINFO;
+typedef struct tagMONITORINFO {
+ DWORD cbSize;
+ RECT rcMonitor;
+ RECT rcWork;
+ DWORD dwFlags;
+} MONITORINFO,*LPMONITORINFO;
+typedef struct tagKBDLLHOOKSTRUCT {
+ DWORD vkCode;
+ DWORD scanCode;
+ DWORD flags;
+ DWORD time;
+ DWORD dwExtraInfo;
+} KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
+
+
+#define AnsiToOem CharToOemA
+#define OemToAnsi OemToCharA
+#define AnsiToOemBuff CharToOemBuffA
+#define OemToAnsiBuff OemToCharBuffA
+#define AnsiUpper CharUpperA
+#define AnsiUpperBuff CharUpperBuffA
+#define AnsiLower CharLowerA
+#define AnsiLowerBuff CharLowerBuffA
+#define AnsiNext CharNextA
+#define AnsiPrev CharPrevA
+#define MAKELPARAM(l,h) ((LPARAM)MAKELONG(l,h))
+#define MAKEWPARAM(l,h) ((WPARAM)MAKELONG(l,h))
+#define MAKELRESULT(l,h) ((LRESULT)MAKELONG(l,h))
+#define POINTSTOPOINT(p,ps) { \
+ (p).x=LOWORD(*(DWORD *)&ps); \
+ (p).y=HIWORD(*(DWORD *)&ps); \
+}
+#define POINTTOPOINTS(p) ((POINTS)MAKELONG((p).x,(p).y))
+
+HKL WINAPI ActivateKeyboardLayout(HKL,UINT);
+BOOL WINAPI AdjustWindowRect(LPRECT,DWORD,BOOL);
+BOOL WINAPI AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD);
+BOOL WINAPI AnyPopup(void);
+BOOL WINAPI AppendMenuA(HMENU,UINT,UINT,LPCSTR);
+BOOL WINAPI AppendMenuW(HMENU,UINT,UINT,LPCWSTR);
+UINT WINAPI ArrangeIconicWindows(HWND);
+BOOL WINAPI AttachThreadInput(DWORD,DWORD,BOOL);
+HDWP WINAPI BeginDeferWindowPos(int);
+HDC WINAPI BeginPaint(HWND,LPPAINTSTRUCT);
+BOOL WINAPI BringWindowToTop(HWND);
+long WINAPI BroadcastSystemMessage(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+BOOL WINAPI CallMsgFilter(PMSG,int);
+LRESULT WINAPI CallNextHookEx(HHOOK,int,WPARAM,LPARAM);
+LRESULT WINAPI CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+WORD WINAPI CascadeWindows(HWND,UINT,LPCRECT,UINT,const HWND*);
+BOOL WINAPI ChangeClipboardChain(HWND,HWND);
+LONG WINAPI ChangeDisplaySettingsA(PDEVMODEA,DWORD);
+LONG WINAPI ChangeDisplaySettingsW(PDEVMODEW,DWORD);
+BOOL WINAPI ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT);
+BOOL WINAPI ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT);
+LPSTR WINAPI CharLowerA(LPSTR);
+LPWSTR WINAPI CharLowerW(LPWSTR);
+DWORD WINAPI CharLowerBuffA(LPSTR,DWORD);
+DWORD WINAPI CharLowerBuffW(LPWSTR,DWORD);
+LPSTR WINAPI CharNextA(LPCSTR);
+LPWSTR WINAPI CharNextW(LPCWSTR);
+LPSTR WINAPI CharNextExA(WORD,LPCSTR,DWORD);
+LPWSTR WINAPI CharNextExW(WORD,LPCWSTR,DWORD);
+LPSTR WINAPI CharPrevA(LPCSTR,LPCSTR);
+LPWSTR WINAPI CharPrevW(LPCWSTR,LPCWSTR);
+LPSTR WINAPI CharPrevExA(WORD,LPCSTR,LPCSTR,DWORD);
+LPWSTR WINAPI CharPrevExW(WORD,LPCWSTR,LPCWSTR,DWORD);
+BOOL WINAPI CharToOemA(LPCSTR,LPSTR);
+BOOL WINAPI CharToOemW(LPCWSTR,LPSTR);
+BOOL WINAPI CharToOemBuffA(LPCSTR,LPSTR,DWORD);
+BOOL WINAPI CharToOemBuffW(LPCWSTR,LPSTR,DWORD);
+LPSTR WINAPI CharUpperA(LPSTR);
+LPWSTR WINAPI CharUpperW(LPWSTR);
+DWORD WINAPI CharUpperBuffA(LPSTR,DWORD);
+DWORD WINAPI CharUpperBuffW(LPWSTR,DWORD);
+BOOL WINAPI CheckDlgButton(HWND,int,UINT);
+DWORD WINAPI CheckMenuItem(HMENU,UINT,UINT);
+BOOL WINAPI CheckMenuRadioItem(HMENU,UINT,UINT,UINT,UINT);
+BOOL WINAPI CheckRadioButton(HWND,int,int,int);
+HWND WINAPI ChildWindowFromPoint(HWND,POINT);
+HWND WINAPI ChildWindowFromPointEx(HWND,POINT,UINT);
+BOOL WINAPI ClientToScreen(HWND,LPPOINT);
+BOOL WINAPI ClipCursor(LPCRECT);
+BOOL WINAPI CloseClipboard(void);
+BOOL WINAPI CloseDesktop(HDESK);
+BOOL WINAPI CloseWindow(HWND);
+BOOL WINAPI CloseWindowStation(HWINSTA);
+int WINAPI CopyAcceleratorTableA(HACCEL,LPACCEL,int);
+int WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,int);
+HCURSOR WINAPI CopyCursor(HCURSOR);
+HICON WINAPI CopyIcon(HICON);
+HANDLE WINAPI CopyImage(HANDLE,UINT,int,int,UINT);
+BOOL WINAPI CopyRect(LPRECT,LPCRECT);
+int WINAPI CountClipboardFormats(void);
+HACCEL WINAPI CreateAcceleratorTableA(LPACCEL,int);
+HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,int);
+BOOL WINAPI CreateCaret(HWND,HBITMAP,int,int);
+HCURSOR WINAPI CreateCursor(HINSTANCE,int,int,int,int,PCVOID,PCVOID);
+HDESK WINAPI CreateDesktopA(LPSTR,LPSTR,LPDEVMODEA,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HDESK WINAPI CreateDesktopW(LPWSTR,LPWSTR,LPDEVMODEW,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+#define CreateDialogA(h,n,w,f) CreateDialogParamA(h,n,w,f,0)
+#define CreateDialogW(h,n,w,f) CreateDialogParamW(h,n,w,f,0)
+#define CreateDialogIndirectA(h,t,w,f) CreateDialogIndirectParamA(h,t,w,f,0)
+#define CreateDialogIndirectW(h,t,w,f) CreateDialogIndirectParamW(h,t,w,f,0)
+HWND WINAPI CreateDialogIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+HWND WINAPI CreateDialogIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+HWND WINAPI CreateDialogParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+HWND WINAPI CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+HICON WINAPI CreateIcon(HINSTANCE,int,int,BYTE,BYTE,const BYTE*,const BYTE*);
+HICON WINAPI CreateIconFromResource(PBYTE,DWORD,BOOL,DWORD);
+HICON WINAPI CreateIconFromResourceEx(PBYTE,DWORD,BOOL,DWORD,int,int,UINT);
+HICON WINAPI CreateIconIndirect(PICONINFO);
+HWND WINAPI CreateMDIWindowA(LPSTR,LPSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
+HWND WINAPI CreateMDIWindowW(LPWSTR,LPWSTR,DWORD,int,int,int,int,HWND,HINSTANCE,LPARAM);
+HMENU WINAPI CreateMenu(void);
+HMENU WINAPI CreatePopupMenu(void);
+#define CreateWindowA(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExA(0,a,b,c,d,e,f,g,h,i,j,k)
+#define CreateWindowW(a,b,c,d,e,f,g,h,i,j,k) CreateWindowExW(0,a,b,c,d,e,f,g,h,i,j,k)
+HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
+HWND WINAPI CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
+HWINSTA WINAPI CreateWindowStationA(LPSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+HWINSTA WINAPI CreateWindowStationW(LPWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES);
+LRESULT WINAPI DefDlgProcA(HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefDlgProcW(HWND,UINT,WPARAM,LPARAM);
+HDWP WINAPI DeferWindowPos(HDWP,HWND,HWND,int,int,int,int,UINT);
+LRESULT WINAPI DefFrameProcA(HWND,HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefFrameProcW(HWND,HWND,UINT,WPARAM,LPARAM);
+#define DefHookProc(c,p,lp,h) CallNextHookEx((HHOOK)*h,c,p,lp)
+LRESULT WINAPI DefMDIChildProcA(HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefMDIChildProcW(HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefWindowProcA(HWND,UINT,WPARAM,LPARAM);
+LRESULT WINAPI DefWindowProcW(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI DeleteMenu(HMENU,UINT,UINT);
+BOOL WINAPI DestroyAcceleratorTable(HACCEL);
+BOOL WINAPI DestroyCaret(void);
+BOOL WINAPI DestroyCursor(HCURSOR);
+BOOL WINAPI DestroyIcon(HICON);
+BOOL WINAPI DestroyMenu(HMENU);
+BOOL WINAPI DestroyWindow(HWND);
+#define DialogBoxA(i,t,p,f) DialogBoxParamA(i,t,p,f,0)
+#define DialogBoxW(i,t,p,f) DialogBoxParamW(i,t,p,f,0)
+#define DialogBoxIndirectA(i,t,p,f) DialogBoxIndirectParamA(i,t,p,f,0)
+#define DialogBoxIndirectW(i,t,p,f) DialogBoxIndirectParamW(i,t,p,f,0)
+int WINAPI DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+int WINAPI DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATE,HWND,DLGPROC,LPARAM);
+int WINAPI DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+int WINAPI DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+LONG WINAPI DispatchMessageA(const MSG*);
+LONG WINAPI DispatchMessageW(const MSG*);
+int WINAPI DlgDirListA(HWND,LPSTR,int,int,UINT);
+int WINAPI DlgDirListW(HWND,LPWSTR,int,int,UINT);
+int WINAPI DlgDirListComboBoxA(HWND,LPSTR,int,int,UINT);
+int WINAPI DlgDirListComboBoxW(HWND,LPWSTR,int,int,UINT);
+BOOL WINAPI DlgDirSelectComboBoxExA(HWND,LPSTR,int,int);
+BOOL WINAPI DlgDirSelectComboBoxExW(HWND,LPWSTR,int,int);
+BOOL WINAPI DlgDirSelectExA(HWND,LPSTR,int,int);
+BOOL WINAPI DlgDirSelectExW(HWND,LPWSTR,int,int);
+BOOL WINAPI DragDetect(HWND,POINT);
+DWORD WINAPI DragObject(HWND,HWND,UINT,DWORD,HCURSOR);
+BOOL WINAPI DrawAnimatedRects(HWND,int,LPCRECT,LPCRECT);
+BOOL WINAPI DrawCaption(HWND,HDC,LPCRECT,UINT);
+BOOL WINAPI DrawEdge(HDC,LPRECT,UINT,UINT);
+BOOL WINAPI DrawFocusRect(HDC,LPCRECT);
+BOOL WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT);
+BOOL WINAPI DrawIcon(HDC,int,int,HICON);
+BOOL WINAPI DrawIconEx(HDC,int,int,HICON,int,int,UINT,HBRUSH,UINT);
+BOOL WINAPI DrawMenuBar(HWND);
+BOOL WINAPI DrawStateA(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
+BOOL WINAPI DrawStateW(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,int,int,int,int,UINT);
+int WINAPI DrawTextA(HDC,LPCSTR,int,LPRECT,UINT);
+int WINAPI DrawTextW(HDC,LPCWSTR,int,LPRECT,UINT);
+int WINAPI DrawTextExA(HDC,LPSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS);
+int WINAPI DrawTextExW(HDC,LPWSTR,int,LPRECT,UINT,LPDRAWTEXTPARAMS);
+BOOL WINAPI EmptyClipboard(void);
+BOOL WINAPI EnableMenuItem(HMENU,UINT,UINT);
+BOOL WINAPI EnableScrollBar(HWND,UINT,UINT);
+BOOL WINAPI EnableWindow(HWND,BOOL);
+BOOL WINAPI EndDeferWindowPos(HDWP);
+BOOL WINAPI EndDialog(HWND,int);
+BOOL WINAPI EndMenu(VOID);
+BOOL WINAPI EndPaint(HWND,const PAINTSTRUCT*);
+BOOL WINAPI EnumChildWindows(HWND,ENUMWINDOWSPROC,LPARAM);
+UINT WINAPI EnumClipboardFormats(UINT);
+BOOL WINAPI EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM);
+BOOL WINAPI EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM);
+BOOL WINAPI EnumDesktopWindows(HDESK,ENUMWINDOWSPROC,LPARAM);
+BOOL WINAPI EnumDisplayMonitors(HDC,LPCRECT,MONITORENUMPROC,LPARAM);
+BOOL WINAPI EnumDisplaySettingsA(LPCSTR,DWORD,PDEVMODEA);
+BOOL WINAPI EnumDisplaySettingsW(LPCWSTR,DWORD,PDEVMODEW);
+int WINAPI EnumPropsA(HWND,PROPENUMPROCA);
+int WINAPI EnumPropsW(HWND,PROPENUMPROCW);
+int WINAPI EnumPropsExA(HWND,PROPENUMPROCEXA,LPARAM);
+int WINAPI EnumPropsExW(HWND,PROPENUMPROCEXW,LPARAM);
+#define EnumTaskWindows(h,f,p) EnumThreadWindows((DWORD)h,f,p)
+BOOL WINAPI EnumThreadWindows(DWORD,WNDENUMPROC,LPARAM);
+BOOL WINAPI EnumWindows(WNDENUMPROC,LPARAM);
+BOOL WINAPI EnumWindowStationsA(WINSTAENUMPROCA,LPARAM);
+BOOL WINAPI EnumWindowStationsW(WINSTAENUMPROCW,LPARAM);
+BOOL WINAPI EqualRect(LPCRECT,LPCRECT);
+#define ExitWindows(r,c) ExitWindowsEx(EWX_LOGOFF,0)
+BOOL WINAPI ExitWindowsEx(UINT,DWORD);
+HWND WINAPI FindWindowA(LPCSTR,LPCSTR);
+HWND WINAPI FindWindowExA(HWND,HWND,LPCSTR,LPCSTR);
+HWND WINAPI FindWindowExW(HWND,HWND,LPCWSTR,LPCWSTR);
+HWND WINAPI FindWindowW(LPCWSTR,LPCWSTR);
+BOOL WINAPI FlashWindow(HWND,BOOL);
+int WINAPI FrameRect(HDC,LPCRECT,HBRUSH);
+BOOL WINAPI FrameRgn(HDC,HRGN,HBRUSH,int,int);
+HWND WINAPI GetActiveWindow(void);
+SHORT WINAPI GetAsyncKeyState(int);
+HWND WINAPI GetCapture(void);
+UINT WINAPI GetCaretBlinkTime(void);
+BOOL WINAPI GetCaretPos(LPPOINT);
+BOOL WINAPI GetClassInfoA(HINSTANCE,LPCSTR,PWNDCLASSA);
+BOOL WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,PWNDCLASSEXA);
+BOOL WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,PWNDCLASSW);
+BOOL WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,PWNDCLASSEXW);
+DWORD WINAPI GetClassLongA(HWND,int);
+DWORD WINAPI GetClassLongW(HWND,int);
+int WINAPI GetClassNameA(HWND,LPSTR,int);
+int WINAPI GetClassNameW(HWND,LPWSTR,int);
+WORD WINAPI GetClassWord(HWND,int);
+BOOL WINAPI GetClientRect(HWND,LPRECT);
+HANDLE WINAPI GetClipboardData(UINT);
+int WINAPI GetClipboardFormatNameA(UINT,LPSTR,int);
+int WINAPI GetClipboardFormatNameW(UINT,LPWSTR,int);
+HWND WINAPI GetClipboardOwner(void);
+HWND WINAPI GetClipboardViewer(void);
+BOOL WINAPI GetClipCursor(LPRECT);
+BOOL WINAPI GetCursorPos(LPPOINT);
+HDC WINAPI GetDC(HWND);
+HDC WINAPI GetDCEx(HWND,HRGN,DWORD);
+HWND WINAPI GetDesktopWindow(void);
+long WINAPI GetDialogBaseUnits(void);
+int WINAPI GetDlgCtrlID(HWND);
+HWND WINAPI GetDlgItem(HWND,int);
+UINT WINAPI GetDlgItemInt(HWND,int,PBOOL,BOOL);
+UINT WINAPI GetDlgItemTextA(HWND,int,LPSTR,int);
+UINT WINAPI GetDlgItemTextW(HWND,int,LPWSTR,int);
+UINT WINAPI GetDoubleClickTime(void);
+HWND WINAPI GetFocus(void);
+HWND WINAPI GetForegroundWindow(void);
+BOOL WINAPI GetIconInfo(HICON,PICONINFO);
+BOOL WINAPI GetInputState(void);
+UINT WINAPI GetKBCodePage(void);
+HKL WINAPI GetKeyboardLayout(DWORD);
+int WINAPI GetKeyboardLayoutList(int,HKL*);
+BOOL WINAPI GetKeyboardLayoutNameA(LPSTR);
+BOOL WINAPI GetKeyboardLayoutNameW(LPWSTR);
+BOOL WINAPI GetKeyboardState(PBYTE);
+int WINAPI GetKeyboardType(int);
+int WINAPI GetKeyNameTextA(LONG,LPSTR,int);
+int WINAPI GetKeyNameTextW(LONG,LPWSTR,int);
+SHORT WINAPI GetKeyState(int);
+HWND WINAPI GetLastActivePopup(HWND);
+DWORD WINAPI GetLastError(void);
+HMENU WINAPI GetMenu(HWND);
+LONG WINAPI GetMenuCheckMarkDimensions(void);
+DWORD WINAPI GetMenuContextHelpId(HMENU);
+UINT WINAPI GetMenuDefaultItem(HMENU,UINT,UINT);
+int WINAPI GetMenuItemCount(HMENU);
+UINT WINAPI GetMenuItemID(HMENU,int);
+BOOL WINAPI GetMenuItemInfoA(HMENU,UINT,BOOL,LPMENUITEMINFOA);
+BOOL WINAPI GetMenuItemInfoW(HMENU,UINT,BOOL,LPMENUITEMINFOW);
+BOOL WINAPI GetMenuItemRect(HWND,HMENU,UINT,LPRECT);
+UINT WINAPI GetMenuState(HMENU,UINT,UINT);
+int WINAPI GetMenuStringA(HMENU,UINT,LPSTR,int,UINT);
+int WINAPI GetMenuStringW(HMENU,UINT,LPWSTR,int,UINT);
+BOOL WINAPI GetMessageA(LPMSG,HWND,UINT,UINT);
+BOOL WINAPI GetMessageW(LPMSG,HWND,UINT,UINT);
+LONG WINAPI GetMessageExtraInfo(void);
+DWORD WINAPI GetMessagePos(void);
+LONG WINAPI GetMessageTime(void);
+HWND WINAPI GetNextDlgGroupItem(HWND,HWND,BOOL);
+HWND WINAPI GetNextDlgTabItem(HWND,HWND,BOOL);
+#define GetNextWindow(h,c) GetWindow(h,c)
+HWND WINAPI GetOpenClipboardWindow(void);
+HWND WINAPI GetParent(HWND);
+int WINAPI GetPriorityClipboardFormat(UINT*,int);
+HANDLE WINAPI GetPropA(HWND,LPCSTR);
+HANDLE WINAPI GetPropW(HWND,LPCWSTR);
+DWORD WINAPI GetQueueStatus(UINT);
+BOOL WINAPI GetScrollInfo(HWND,int,LPSCROLLINFO);
+int WINAPI GetScrollPos(HWND,int);
+BOOL WINAPI GetScrollRange(HWND,int,LPINT,LPINT);
+HMENU WINAPI GetSubMenu(HMENU,int);
+DWORD WINAPI GetSysColor(int);
+HBRUSH WINAPI GetSysColorBrush(int);
+#define GetSysModalWindow() (NULL)
+HMENU WINAPI GetSystemMenu(HWND,BOOL);
+int WINAPI GetSystemMetrics(int);
+DWORD WINAPI GetTabbedTextExtentA(HDC,LPCSTR,int,int,LPINT);
+DWORD WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,int,int,LPINT);
+LONG WINAPI GetWindowLongA(HWND,int);
+LONG WINAPI GetWindowLongW(HWND,int);
+#ifdef _WIN64
+LONG_PTR WINAPI GetWindowLongPtrA(HWND,int);
+LONG_PTR WINAPI GetWindowLongPtrW(HWND,int);
+#else
+#define GetWindowLongPtrA GetWindowLongA
+#define GetWindowLongPtrW GetWindowLongW
+#endif
+HDESK WINAPI GetThreadDesktop(DWORD);
+HWND WINAPI GetTopWindow(HWND);
+BOOL WINAPI GetUpdateRect(HWND,LPRECT,BOOL);
+int WINAPI GetUpdateRgn(HWND,HRGN,BOOL);
+BOOL WINAPI GetUserObjectInformationA(HANDLE,int,PVOID,DWORD,PDWORD);
+BOOL WINAPI GetUserObjectInformationW(HANDLE,int,PVOID,DWORD,PDWORD);
+BOOL WINAPI GetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+HWND WINAPI GetWindow(HWND,UINT);
+DWORD WINAPI GetWindowContextHelpId(HWND);
+HDC WINAPI GetWindowDC(HWND);
+BOOL WINAPI GetWindowExtEx(HDC,LPSIZE);
+BOOL WINAPI GetWindowPlacement(HWND,WINDOWPLACEMENT*);
+BOOL WINAPI GetWindowRect(HWND,LPRECT);
+int WINAPI GetWindowRgn(HWND,HRGN);
+#define GetWindowTask(hWnd) ((HANDLE)GetWindowThreadProcessId(hWnd, NULL))
+int WINAPI GetWindowTextA(HWND,LPSTR,int);
+int WINAPI GetWindowTextLengthA(HWND);
+int WINAPI GetWindowTextLengthW(HWND);
+int WINAPI GetWindowTextW(HWND,LPWSTR,int);
+WORD WINAPI GetWindowWord(HWND,int);
+BOOL WINAPI GetAltTabInfoA(HWND,int,PALTTABINFO,LPSTR,UINT);
+BOOL WINAPI GetAltTabInfoW(HWND,int,PALTTABINFO,LPWSTR,UINT);
+BOOL WINAPI GetComboBoxInfo(HWND,PCOMBOBOXINFO);
+BOOL WINAPI GetCursorInfo(PCURSORINFO);
+BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO);
+DWORD WINAPI GetListBoxInfo(HWND);
+BOOL WINAPI GetMenuBarInfo(HWND,LONG,LONG,PMENUBARINFO);
+BOOL WINAPI GetMenuInfo(HMENU,LPMENUINFO);
+BOOL WINAPI GetScrollBarInfo(HWND,LONG,PSCROLLBARINFO);
+BOOL WINAPI GetTitleBarInfo(HWND,PTITLEBARINFO);
+BOOL WINAPI GetWindowInfo(HWND,PWINDOWINFO);
+BOOL WINAPI GetMonitorInfoA(HMONITOR,LPMONITORINFO);
+BOOL WINAPI GetMonitorInfoW(HMONITOR,LPMONITORINFO);
+UINT WINAPI GetWindowModuleFileNameA(HWND,LPSTR,UINT);
+UINT WINAPI GetWindowModuleFileNameW(HWND,LPWSTR,UINT);
+BOOL WINAPI GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int);
+BOOL WINAPI GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,int,int,int,int,int);
+BOOL WINAPI HideCaret(HWND);
+BOOL WINAPI HiliteMenuItem(HWND,HMENU,UINT,UINT);
+BOOL WINAPI InflateRect(LPRECT,int,int);
+BOOL WINAPI InSendMessage(VOID);
+BOOL WINAPI InsertMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
+BOOL WINAPI InsertMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+BOOL WINAPI InsertMenuItemA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
+BOOL WINAPI InsertMenuItemW(HMENU,UINT,BOOL,LPCMENUITEMINFOW);
+BOOL WINAPI IntersectRect(LPRECT,LPCRECT,LPCRECT);
+BOOL WINAPI InvalidateRect(HWND,LPCRECT,BOOL);
+BOOL WINAPI InvalidateRgn(HWND,HRGN,BOOL);
+BOOL WINAPI InvertRect(HDC,LPCRECT);
+BOOL WINAPI IsCharAlphaA(CHAR ch);
+BOOL WINAPI IsCharAlphaNumericA(CHAR);
+BOOL WINAPI IsCharAlphaNumericW(WCHAR);
+BOOL WINAPI IsCharAlphaW(WCHAR);
+BOOL WINAPI IsCharLowerA(CHAR);
+BOOL WINAPI IsCharLowerW(WCHAR);
+BOOL WINAPI IsCharUpperA(CHAR);
+BOOL WINAPI IsCharUpperW(WCHAR);
+BOOL WINAPI IsChild(HWND,HWND);
+BOOL WINAPI IsClipboardFormatAvailable(UINT);
+BOOL WINAPI IsDialogMessageA(HWND,LPMSG);
+BOOL WINAPI IsDialogMessageW(HWND,LPMSG);
+UINT WINAPI IsDlgButtonChecked(HWND,int);
+BOOL WINAPI IsIconic(HWND);
+BOOL WINAPI IsMenu(HMENU);
+BOOL WINAPI IsRectEmpty(LPCRECT);
+BOOL WINAPI IsWindow(HWND);
+BOOL WINAPI IsWindowEnabled(HWND);
+BOOL WINAPI IsWindowUnicode(HWND);
+BOOL WINAPI IsWindowVisible(HWND);
+BOOL WINAPI IsZoomed(HWND);
+VOID WINAPI keybd_event(BYTE,BYTE,DWORD,DWORD);
+BOOL WINAPI KillTimer(HWND,UINT);
+HACCEL WINAPI LoadAcceleratorsA(HINSTANCE,LPCSTR);
+HACCEL WINAPI LoadAcceleratorsW(HINSTANCE,LPCWSTR);
+HBITMAP WINAPI LoadBitmapA(HINSTANCE,LPCSTR);
+HBITMAP WINAPI LoadBitmapW(HINSTANCE,LPCWSTR);
+HCURSOR WINAPI LoadCursorA(HINSTANCE,LPCSTR);
+HCURSOR WINAPI LoadCursorFromFileA(LPCSTR);
+HCURSOR WINAPI LoadCursorFromFileW(LPCWSTR);
+HCURSOR WINAPI LoadCursorW(HINSTANCE,LPCWSTR);
+HICON WINAPI LoadIconA(HINSTANCE,LPCSTR);
+HICON WINAPI LoadIconW(HINSTANCE,LPCWSTR);
+HANDLE WINAPI LoadImageA(HINSTANCE,LPCSTR,UINT,int,int,UINT);
+HANDLE WINAPI LoadImageW(HINSTANCE,LPCWSTR,UINT,int,int,UINT);
+HKL WINAPI LoadKeyboardLayoutA(LPCSTR,UINT);
+HKL WINAPI LoadKeyboardLayoutW(LPCWSTR,UINT);
+HMENU WINAPI LoadMenuA(HINSTANCE,LPCSTR);
+HMENU WINAPI LoadMenuIndirectA(const MENUTEMPLATE*);
+HMENU WINAPI LoadMenuIndirectW(const MENUTEMPLATE*);
+HMENU WINAPI LoadMenuW(HINSTANCE,LPCWSTR);
+int WINAPI LoadStringA(HINSTANCE,UINT,LPSTR,int);
+int WINAPI LoadStringW(HINSTANCE,UINT,LPWSTR,int);
+BOOL WINAPI LockWindowUpdate(HWND);
+int WINAPI LookupIconIdFromDirectory(PBYTE,BOOL);
+int WINAPI LookupIconIdFromDirectoryEx(PBYTE,BOOL,int,int,UINT);
+BOOL WINAPI MapDialogRect(HWND,LPRECT);
+UINT WINAPI MapVirtualKeyA(UINT,UINT);
+UINT WINAPI MapVirtualKeyExA(UINT,UINT,HKL);
+UINT WINAPI MapVirtualKeyExW(UINT,UINT,HKL);
+UINT WINAPI MapVirtualKeyW(UINT,UINT);
+int WINAPI MapWindowPoints(HWND,HWND,LPPOINT,UINT);
+int WINAPI MenuItemFromPoint(HWND,HMENU,POINT);
+BOOL WINAPI MessageBeep(UINT);
+int WINAPI MessageBoxA(HWND,LPCSTR,LPCSTR,UINT);
+int WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
+int WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
+int WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
+int WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);
+int WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);
+BOOL WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT,LPCSTR);
+BOOL WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT,LPCWSTR);
+void WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,DWORD);
+BOOL WINAPI MoveWindow(HWND,int,int,int,int,BOOL);
+DWORD WINAPI MsgWaitForMultipleObjects(DWORD,LPHANDLE,BOOL,DWORD,DWORD);
+DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD,LPHANDLE,DWORD,DWORD,DWORD);
+DWORD WINAPI OemKeyScan(WORD);
+BOOL WINAPI OemToCharA(LPCSTR,LPSTR);
+BOOL WINAPI OemToCharBuffA(LPCSTR,LPSTR,DWORD);
+BOOL WINAPI OemToCharBuffW(LPCSTR,LPWSTR,DWORD);
+BOOL WINAPI OemToCharW(LPCSTR,LPWSTR);
+BOOL WINAPI OffsetRect(LPRECT,int,int);
+BOOL WINAPI OpenClipboard(HWND);
+HDESK WINAPI OpenDesktopA(LPSTR,DWORD,BOOL,DWORD);
+HDESK WINAPI OpenDesktopW(LPWSTR,DWORD,BOOL,DWORD);
+BOOL WINAPI OpenIcon(HWND);
+HDESK WINAPI OpenInputDesktop(DWORD,BOOL,DWORD);
+HWINSTA WINAPI OpenWindowStationA(LPSTR,BOOL,DWORD);
+HWINSTA WINAPI OpenWindowStationW(LPWSTR,BOOL,DWORD);
+BOOL WINAPI PaintDesktop(HDC);
+BOOL WINAPI PeekMessageA(LPMSG,HWND,UINT,UINT,UINT);
+BOOL WINAPI PeekMessageW(LPMSG,HWND,UINT,UINT,UINT);
+#define PostAppMessageA(t,m,w,l) PostThreadMessageA((DWORD)t,m,w,l)
+#define PostAppMessageW(t,m,w,l) PostThreadMessageW((DWORD)t,m,w,l)
+BOOL WINAPI PostMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI PostMessageW(HWND,UINT,WPARAM,LPARAM);
+void WINAPI PostQuitMessage(int);
+BOOL WINAPI PostThreadMessageA(DWORD,UINT,WPARAM,LPARAM);
+BOOL WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
+BOOL WINAPI PtInRect(LPCRECT,POINT);
+BOOL WINAPI RedrawWindow(HWND,LPCRECT,HRGN,UINT);
+ATOM WINAPI RegisterClassA(const WNDCLASSA*);
+ATOM WINAPI RegisterClassW(const WNDCLASSW*);
+ATOM WINAPI RegisterClassExA(const WNDCLASSEXA*);
+ATOM WINAPI RegisterClassExW(const WNDCLASSEXW*);
+UINT WINAPI RegisterClipboardFormatA(LPCSTR);
+UINT WINAPI RegisterClipboardFormatW(LPCWSTR);
+BOOL WINAPI RegisterHotKey(HWND,int,UINT,UINT);
+UINT WINAPI RegisterWindowMessageA(LPCSTR);
+UINT WINAPI RegisterWindowMessageW(LPCWSTR);
+BOOL WINAPI ReleaseCapture(void);
+int WINAPI ReleaseDC(HWND,HDC);
+BOOL WINAPI RemoveMenu(HMENU,UINT,UINT);
+HANDLE WINAPI RemovePropA(HWND,LPCSTR);
+HANDLE WINAPI RemovePropW(HWND,LPCWSTR);
+BOOL WINAPI ReplyMessage(LRESULT);
+BOOL WINAPI ScreenToClient(HWND,LPPOINT);
+BOOL WINAPI ScrollDC(HDC,int,int,LPCRECT,LPCRECT,HRGN,LPRECT);
+BOOL WINAPI ScrollWindow(HWND,int,int,LPCRECT,LPCRECT);
+int WINAPI ScrollWindowEx(HWND,int,int,LPCRECT,LPCRECT,HRGN,LPRECT,UINT);
+LONG WINAPI SendDlgItemMessageA(HWND,int,UINT,WPARAM,LPARAM);
+LONG WINAPI SendDlgItemMessageW(HWND,int,UINT,WPARAM,LPARAM);
+LRESULT WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
+BOOL WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,DWORD);
+LRESULT WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD);
+LRESULT WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD);
+LRESULT WINAPI SendMessageW(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
+HWND WINAPI SetActiveWindow(HWND);
+HWND WINAPI SetCapture(HWND hWnd);
+BOOL WINAPI SetCaretBlinkTime(UINT);
+BOOL WINAPI SetCaretPos(int,int);
+DWORD WINAPI SetClassLongA(HWND,int,LONG);
+DWORD WINAPI SetClassLongW(HWND,int,LONG);
+WORD WINAPI SetClassWord(HWND,int,WORD);
+HANDLE WINAPI SetClipboardData(UINT,HANDLE);
+HWND WINAPI SetClipboardViewer(HWND);
+HCURSOR WINAPI SetCursor(HCURSOR);
+BOOL WINAPI SetCursorPos(int,int);
+VOID WINAPI SetDebugErrorLevel(DWORD);
+BOOL WINAPI SetDlgItemInt(HWND,int,UINT,BOOL);
+BOOL WINAPI SetDlgItemTextA(HWND,int,LPCSTR);
+BOOL WINAPI SetDlgItemTextW(HWND,int,LPCWSTR);
+BOOL WINAPI SetDoubleClickTime(UINT);
+HWND WINAPI SetFocus(HWND);
+BOOL WINAPI SetForegroundWindow(HWND);
+BOOL WINAPI SetKeyboardState(PBYTE);
+BOOL WINAPI SetMenu(HWND,HMENU);
+BOOL WINAPI SetMenuContextHelpId(HMENU,DWORD);
+BOOL WINAPI SetMenuDefaultItem(HMENU,UINT,UINT);
+BOOL WINAPI SetMenuInfo(HMENU,LPCMENUINFO);
+BOOL WINAPI SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP);
+BOOL WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,LPCMENUITEMINFOA);
+BOOL WINAPI SetMenuItemInfoW( HMENU,UINT,BOOL,LPCMENUITEMINFOW);
+LPARAM WINAPI SetMessageExtraInfo(LPARAM);
+BOOL WINAPI SetMessageQueue(int);
+HWND WINAPI SetParent(HWND,HWND);
+BOOL WINAPI SetProcessWindowStation(HWINSTA);
+BOOL WINAPI SetPropA(HWND,LPCSTR,HANDLE);
+BOOL WINAPI SetPropW(HWND,LPCWSTR,HANDLE);
+BOOL WINAPI SetRect(LPRECT,int,int,int,int);
+BOOL WINAPI SetRectEmpty(LPRECT);
+int WINAPI SetScrollInfo(HWND,int,LPCSCROLLINFO,BOOL);
+int WINAPI SetScrollPos(HWND,int,int,BOOL);
+BOOL WINAPI SetScrollRange(HWND,int,int,int,BOOL);
+BOOL WINAPI SetSysColors(int,const INT *,const COLORREF *);
+#define SetSysModalWindow(h) (NULL)
+BOOL WINAPI SetSystemCursor(HCURSOR,DWORD);
+BOOL WINAPI SetThreadDesktop(HDESK);
+UINT WINAPI SetTimer(HWND,UINT,UINT,TIMERPROC);
+BOOL WINAPI SetUserObjectInformationA(HANDLE,int,PVOID,DWORD);
+BOOL WINAPI SetUserObjectInformationW(HANDLE,int,PVOID,DWORD);
+BOOL WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+BOOL WINAPI SetWindowContextHelpId(HWND,DWORD);
+LONG WINAPI SetWindowLongA(HWND,int,LONG);
+LONG WINAPI SetWindowLongW(HWND,int,LONG);
+#ifdef _WIN64
+LONG_PTR WINAPI SetWindowLongPtrA(HWND,int,LONG_PTR);
+LONG_PTR WINAPI SetWindowLongPtrW(HWND,int,LONG_PTR);
+#else
+#define SetWindowLongPtrA SetWindowLongA
+#define SetWindowLongPtrW SetWindowLongW
+#endif
+BOOL WINAPI SetWindowPlacement(HWND hWnd,const WINDOWPLACEMENT*);
+BOOL WINAPI SetWindowPos(HWND,HWND,int,int,int,int,UINT);
+int WINAPI SetWindowRgn(HWND,HRGN,BOOL);
+HOOKPROC WINAPI SetWindowsHookA(int,HOOKPROC);
+HHOOK WINAPI SetWindowsHookExA(int,HOOKPROC,HINSTANCE,DWORD);
+HHOOK WINAPI SetWindowsHookExW(int,HOOKPROC,HINSTANCE,DWORD);
+BOOL WINAPI SetWindowTextA(HWND,LPCSTR);
+BOOL WINAPI SetWindowTextW(HWND,LPCWSTR);
+WORD WINAPI SetWindowWord(HWND,int,WORD);
+BOOL WINAPI ShowCaret(HWND);
+int WINAPI ShowCursor(BOOL);
+BOOL WINAPI ShowOwnedPopups(HWND,BOOL);
+BOOL WINAPI ShowScrollBar(HWND,int,BOOL);
+BOOL WINAPI ShowWindow(HWND,int);
+BOOL WINAPI ShowWindowAsync(HWND,int);
+BOOL WINAPI SubtractRect(LPRECT,LPCRECT,LPCRECT);
+BOOL WINAPI SwapMouseButton(BOOL);
+BOOL WINAPI SwitchDesktop(HDESK);
+BOOL WINAPI SystemParametersInfoA(UINT,UINT,PVOID,UINT);
+BOOL WINAPI SystemParametersInfoW(UINT,UINT,PVOID,UINT);
+LONG WINAPI TabbedTextOutA(HDC,int,int,LPCSTR,int,int,LPINT,int);
+LONG WINAPI TabbedTextOutW(HDC,int,int,LPCWSTR,int,int,LPINT,int);
+WORD WINAPI TileWindows(HWND,UINT,LPCRECT,UINT,const HWND *);
+int WINAPI ToAscii(UINT,UINT,PBYTE,LPWORD,UINT);
+int WINAPI ToAsciiEx(UINT,UINT,PBYTE,LPWORD,UINT,HKL);
+int WINAPI ToUnicode(UINT,UINT,PBYTE,LPWSTR,int,UINT);
+int WINAPI ToUnicodeEx(UINT,UINT,PBYTE,LPWSTR,int,UINT,HKL);
+BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT);
+BOOL WINAPI TrackPopupMenu(HMENU,UINT,int,int,int,HWND,LPCRECT);
+BOOL WINAPI TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS);
+int WINAPI TranslateAcceleratorA(HWND,HACCEL,LPMSG);
+int WINAPI TranslateAcceleratorW(HWND,HACCEL,LPMSG);
+BOOL WINAPI TranslateMDISysAccel(HWND,LPMSG);
+BOOL WINAPI TranslateMessage(const MSG*);
+BOOL WINAPI UnhookWindowsHook(int,HOOKPROC);
+BOOL WINAPI UnhookWindowsHookEx(HHOOK);
+BOOL WINAPI UnionRect(LPRECT,LPCRECT,LPCRECT);
+BOOL WINAPI UnloadKeyboardLayout(HKL);
+BOOL WINAPI UnregisterClassA(LPCSTR,HINSTANCE);
+BOOL WINAPI UnregisterClassW(LPCWSTR,HINSTANCE);
+BOOL WINAPI UnregisterHotKey(HWND,int);
+BOOL WINAPI UpdateWindow(HWND);
+BOOL WINAPI ValidateRect(HWND,LPCRECT);
+BOOL WINAPI ValidateRgn(HWND,HRGN);
+SHORT WINAPI VkKeyScanA(CHAR);
+SHORT WINAPI VkKeyScanExA(CHAR,HKL);
+SHORT WINAPI VkKeyScanExW(WCHAR,HKL);
+SHORT WINAPI VkKeyScanW(WCHAR);
+DWORD WINAPI WaitForInputIdle(HANDLE,DWORD);
+BOOL WINAPI WaitMessage(void);
+HWND WINAPI WindowFromDC(HDC hDC);
+HWND WINAPI WindowFromPoint(POINT);
+UINT WINAPI WinExec(LPCSTR,UINT);
+BOOL WINAPI WinHelpA(HWND,LPCSTR,UINT,DWORD);
+BOOL WINAPI WinHelpW(HWND,LPCWSTR,UINT,DWORD);
+int WINAPIV wsprintfA(LPSTR,LPCSTR,...);
+int WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
+int WINAPI wvsprintfA(LPSTR,LPCSTR,va_list arglist);
+int WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list arglist);
+
+#ifdef UNICODE
+#define EDITWORDBREAKPROC EDITWORDBREAKPROCW
+#define PROPENUMPROC PROPENUMPROCW
+#define PROPENUMPROCEX PROPENUMPROCEXW
+#define DEKSTOPENUMPROC DEKSTOPENUMPROCW
+#define WINSTAENUMPROC WINSTAENUMPROCW
+#define PROPENUMPROC PROPENUMPROCW
+#define PROPENUMPROCEX PROPENUMPROCEXW
+#define MAKEINTRESOURCE MAKEINTRESOURCEW
+typedef WNDCLASSW WNDCLASS,*LPWNDCLASS,*PWNDCLASS;
+typedef WNDCLASSEXW WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
+typedef MENUITEMINFOW MENUITEMINFO,*LPMENUITEMINFO;
+typedef LPCMENUITEMINFOW LPCMENUITEMINFO;
+typedef MSGBOXPARAMSW MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS;
+typedef HIGHCONTRASTW HIGHCONTRAST,*LPHIGHCONTRAST;
+typedef ICONMETRICSW ICONMETRICS,*LPICONMETRICS;
+typedef NONCLIENTMETRICSW NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
+typedef SERIALKEYSW SERIALKEYS,*LPSERIALKEYS;
+typedef SOUNDSENTRYW SOUNDSENTRY,*LPSOUNDSENTRY;
+typedef CREATESTRUCTW CREATESTRUCT, *LPCREATESTRUCT;
+typedef CBT_CREATEWNDW CBT_CREATEWND, *LPCBT_CREATEWND;
+typedef MDICREATESTRUCTW MDICREATESTRUCT,*LPMDICREATESTRUCT;
+typedef MULTIKEYHELPW MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP;
+#define AppendMenu AppendMenuW
+#define CallWindowProc CallWindowProcW
+#define ChangeDisplaySettings ChangeDisplaySettingsW
+#define ChangeMenu ChangeMenuW
+#define CharLower CharLowerW
+#define CharLowerBuff CharLowerBuffW
+#define CharNext CharNextW
+#define CharNextEx CharNextExW
+#define CharPrev CharPrevW
+#define CharPrevEx CharPrevExW
+#define CharToOem CharToOemW
+#define CharToOemBuff CharToOemBuffW
+#define CharUpper CharUpperW
+#define CharUpperBuff CharUpperBuffW
+#define CopyAcceleratorTable CopyAcceleratorTableW
+#define CreateAcceleratorTable CreateAcceleratorTableW
+#define CreateDesktop CreateDesktopW
+#define CreateDialog CreateDialogW
+#define CreateDialogIndirect CreateDialogIndirectW
+#define CreateDialogIndirectParam CreateDialogIndirectParamW
+#define CreateDialogParam CreateDialogParamW
+#define CreateMDIWindow CreateMDIWindowW
+#define CreateWindow CreateWindowW
+#define CreateWindowEx CreateWindowExW
+#define CreateWindowStation CreateWindowStationW
+#define DefDlgProc DefDlgProcW
+#define DefFrameProc DefFrameProcW
+#define DefMDIChildProc DefMDIChildProcW
+#define DefWindowProc DefWindowProcW
+#define DialogBox DialogBoxW
+#define DialogBoxIndirect DialogBoxIndirectW
+#define DialogBoxIndirectParam DialogBoxIndirectParamW
+#define DialogBoxParam DialogBoxParamW
+#define DispatchMessage DispatchMessageW
+#define DlgDirList DlgDirListW
+#define DlgDirListComboBox DlgDirListComboBoxW
+#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExW
+#define DlgDirSelectEx DlgDirSelectExW
+#define DrawState DrawStateW
+#define DrawText DrawTextW
+#define DrawTextEx DrawTextExW
+#define EnumDesktops EnumDesktopsW
+#define EnumDisplaySettings EnumDisplaySettingsW
+#define EnumProps EnumPropsW
+#define EnumPropsEx EnumPropsExW
+#define EnumWindowStations EnumWindowStationsW
+#define FindWindow FindWindowW
+#define FindWindowEx FindWindowExW
+#define GetClassInfo GetClassInfoW
+#define GetClassInfoEx GetClassInfoExW
+#define GetClassLong GetClassLongW
+#define GetClassName GetClassNameW
+#define GetClipboardFormatName GetClipboardFormatNameW
+#define GetDlgItemText GetDlgItemTextW
+#define GetKeyboardLayoutName GetKeyboardLayoutNameW
+#define GetKeyNameText GetKeyNameTextW
+#define GetMenuItemInfo GetMenuItemInfoW
+#define GetMenuString GetMenuStringW
+#define GetMessage GetMessageW
+#define GetMonitorInfo GetMonitorInfoW
+#define GetProp GetPropW
+#define GetTabbedTextExtent GetTabbedTextExtentW
+#define GetUserObjectInformation GetUserObjectInformationW
+#define GetWindowLong GetWindowLongW
+#define GetWindowLongPtr GetWindowLongPtrW
+#define GetWindowText GetWindowTextW
+#define GetWindowTextLength GetWindowTextLengthW
+#define GetAltTabInfo GetAltTabInfoW
+#define GetWindowModuleFileName GetWindowModuleFileNameW
+#define GrayString GrayStringW
+#define InsertMenu InsertMenuW
+#define InsertMenuItem InsertMenuItemW
+#define IsCharAlpha IsCharAlphaW
+#define IsCharAlphaNumeric IsCharAlphaNumericW
+#define IsCharLower IsCharLowerW
+#define IsCharUpper IsCharUpperW
+#define IsDialogMessage IsDialogMessageW
+#define LoadAccelerators LoadAcceleratorsW
+#define LoadBitmap LoadBitmapW
+#define LoadCursor LoadCursorW
+#define LoadCursorFromFile LoadCursorFromFileW
+#define LoadIcon LoadIconW
+#define LoadImage LoadImageW
+#define LoadKeyboardLayout LoadKeyboardLayoutW
+#define LoadMenu LoadMenuW
+#define LoadMenuIndirect LoadMenuIndirectW
+#define LoadString LoadStringW
+#define MapVirtualKey MapVirtualKeyW
+#define MapVirtualKeyEx MapVirtualKeyExW
+#define MessageBox MessageBoxW
+#define MessageBoxEx MessageBoxExW
+#define MessageBoxIndirect MessageBoxIndirectW
+#define ModifyMenu ModifyMenuW
+#define OemToChar OemToCharW
+#define OemToCharBuff OemToCharBuffW
+#define OpenDesktop OpenDesktopW
+#define OpenWindowStation OpenWindowStationW
+#define PeekMessage PeekMessageW
+#define PostAppMessage PostAppMessageW
+#define PostMessage PostMessageW
+#define PostThreadMessage PostThreadMessageW
+#define RegisterClass RegisterClassW
+#define RegisterClassEx RegisterClassExW
+#define RegisterClipboardFormat RegisterClipboardFormatW
+#define RegisterWindowMessage RegisterWindowMessageW
+#define RemoveProp RemovePropW
+#define SendDlgItemMessage SendDlgItemMessageW
+#define SendMessage SendMessageW
+#define SendMessageCallback SendMessageCallbackW
+#define SendMessageTimeout SendMessageTimeoutW
+#define SendNotifyMessage SendNotifyMessageW
+#define SetClassLong SetClassLongW
+#define SetDlgItemText SetDlgItemTextW
+#define SetMenuItemInfo SetMenuItemInfoW
+#define SetProp SetPropW
+#define SetUserObjectInformation SetUserObjectInformationW
+#define SetWindowLong SetWindowLongW
+#define SetWindowLongPtr SetWindowLongPtrW
+#define SetWindowsHook SetWindowsHookW
+#define SetWindowsHookEx SetWindowsHookExW
+#define SetWindowText SetWindowTextW
+#define SystemParametersInfo SystemParametersInfoW
+#define TabbedTextOut TabbedTextOutW
+#define TranslateAccelerator TranslateAcceleratorW
+#define UnregisterClass UnregisterClassW
+#define VkKeyScan VkKeyScanW
+#define VkKeyScanEx VkKeyScanExW
+#define WinHelp WinHelpW
+#define wsprintf wsprintfW
+#define wvsprintf wvsprintfW
+#else
+#define EDITWORDBREAKPROC EDITWORDBREAKPROCA
+#define PROPENUMPROC PROPENUMPROCA
+#define PROPENUMPROCEX PROPENUMPROCEXA
+#define DEKSTOPENUMPROC DEKSTOPENUMPROCA
+#define WINSTAENUMPROC WINSTAENUMPROCA
+#define PROPENUMPROC PROPENUMPROCA
+#define PROPENUMPROCEX PROPENUMPROCEXA
+#define MAKEINTRESOURCE MAKEINTRESOURCEA
+typedef WNDCLASSA WNDCLASS,*LPWNDCLASS,*PWNDCLASS;
+typedef WNDCLASSEXA WNDCLASSEX,*LPWNDCLASSEX,*PWNDCLASSEX;
+typedef MENUITEMINFOA MENUITEMINFO,*LPMENUITEMINFO;
+typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
+typedef MSGBOXPARAMSA MSGBOXPARAMS,*PMSGBOXPARAMS,*LPMSGBOXPARAMS;
+typedef HIGHCONTRASTA HIGHCONTRAST,*LPHIGHCONTRAST;
+typedef ICONMETRICSA ICONMETRICS,*LPICONMETRICS;
+typedef NONCLIENTMETRICSA NONCLIENTMETRICS,*LPNONCLIENTMETRICS;
+typedef SERIALKEYSA SERIALKEYS,*LPSERIALKEYS;
+typedef SOUNDSENTRYA SOUNDSENTRY,*LPSOUNDSENTRY;
+typedef CREATESTRUCTA CREATESTRUCT, *LPCREATESTRUCT;
+typedef CBT_CREATEWNDA CBT_CREATEWND, *LPCBT_CREATEWND;
+typedef MDICREATESTRUCTA MDICREATESTRUCT,*LPMDICREATESTRUCT;
+typedef MULTIKEYHELPA MULTIKEYHELP,*PMULTIKEYHELP,*LPMULTIKEYHELP;
+#define AppendMenu AppendMenuA
+#define CallWindowProc CallWindowProcA
+#define ChangeDisplaySettings ChangeDisplaySettingsA
+#define ChangeMenu ChangeMenuA
+#define CharLower CharLowerA
+#define CharLowerBuff CharLowerBuffA
+#define CharNext CharNextA
+#define CharNextEx CharNextExA
+#define CharPrev CharPrevA
+#define CharPrevEx CharPrevExA
+#define CharToOem CharToOemA
+#define CharToOemBuff CharToOemBuffA
+#define CharUpper CharUpperA
+#define CharUpperBuff CharUpperBuffA
+#define CopyAcceleratorTable CopyAcceleratorTableA
+#define CreateAcceleratorTable CreateAcceleratorTableA
+#define CreateDesktop CreateDesktopA
+#define CreateDialog CreateDialogA
+#define CreateDialogIndirect CreateDialogIndirectA
+#define CreateDialogIndirectParam CreateDialogIndirectParamA
+#define CreateDialogParam CreateDialogParamA
+#define CreateMDIWindow CreateMDIWindowA
+#define CreateWindow CreateWindowA
+#define CreateWindowEx CreateWindowExA
+#define CreateWindowStation CreateWindowStationA
+#define DefDlgProc DefDlgProcA
+#define DefFrameProc DefFrameProcA
+#define DefMDIChildProc DefMDIChildProcA
+#define DefWindowProc DefWindowProcA
+#define DialogBox DialogBoxA
+#define DialogBoxIndirect DialogBoxIndirectA
+#define DialogBoxIndirectParam DialogBoxIndirectParamA
+#define DialogBoxParam DialogBoxParamA
+#define DispatchMessage DispatchMessageA
+#define DlgDirList DlgDirListA
+#define DlgDirListComboBox DlgDirListComboBoxA
+#define DlgDirSelectComboBoxEx DlgDirSelectComboBoxExA
+#define DlgDirSelectEx DlgDirSelectExA
+#define DrawState DrawStateA
+#define DrawText DrawTextA
+#define DrawTextEx DrawTextExA
+#define EnumDesktops EnumDesktopsA
+#define EnumDisplaySettings EnumDisplaySettingsA
+#define EnumProps EnumPropsA
+#define EnumPropsEx EnumPropsExA
+#define EnumWindowStations EnumWindowStationsA
+#define FindWindow FindWindowA
+#define FindWindowEx FindWindowExA
+#define GetClassInfo GetClassInfoA
+#define GetClassInfoEx GetClassInfoExA
+#define GetClassLong GetClassLongA
+#define GetClassName GetClassNameA
+#define GetClipboardFormatName GetClipboardFormatNameA
+#define GetDlgItemText GetDlgItemTextA
+#define GetKeyboardLayoutName GetKeyboardLayoutNameA
+#define GetKeyNameText GetKeyNameTextA
+#define GetMenuItemInfo GetMenuItemInfoA
+#define GetMenuString GetMenuStringA
+#define GetMessage GetMessageA
+#define GetMonitorInfo GetMonitorInfoA
+#define GetProp GetPropA
+#define GetTabbedTextExtent GetTabbedTextExtentA
+#define GetUserObjectInformation GetUserObjectInformationA
+#define GetWindowLong GetWindowLongA
+#define GetWindowLongPtr GetWindowLongPtrA
+#define GetWindowText GetWindowTextA
+#define GetWindowTextLength GetWindowTextLengthA
+#define GetAltTabInfo GetAltTabInfoA
+#define GetWindowModuleFileName GetWindowModuleFileNameA
+#define GrayString GrayStringA
+#define InsertMenu InsertMenuA
+#define InsertMenuItem InsertMenuItemA
+#define IsCharAlpha IsCharAlphaA
+#define IsCharAlphaNumeric IsCharAlphaNumericA
+#define IsCharLower IsCharLowerA
+#define IsCharUpper IsCharUpperA
+#define IsDialogMessage IsDialogMessageA
+#define LoadAccelerators LoadAcceleratorsA
+#define LoadBitmap LoadBitmapA
+#define LoadCursor LoadCursorA
+#define LoadIcon LoadIconA
+#define LoadCursorFromFile LoadCursorFromFileA
+#define LoadImage LoadImageA
+#define LoadKeyboardLayout LoadKeyboardLayoutA
+#define LoadMenu LoadMenuA
+#define LoadMenuIndirect LoadMenuIndirectA
+#define LoadString LoadStringA
+#define MapVirtualKey MapVirtualKeyA
+#define MapVirtualKeyEx MapVirtualKeyExA
+#define MessageBox MessageBoxA
+#define MessageBoxEx MessageBoxExA
+#define MessageBoxIndirect MessageBoxIndirectA
+#define ModifyMenu ModifyMenuA
+#define OemToChar OemToCharA
+#define OemToCharBuff OemToCharBuffA
+#define OpenDesktop OpenDesktopA
+#define OpenWindowStation OpenWindowStationA
+#define PeekMessage PeekMessageA
+#define PostAppMessage PostAppMessageA
+#define PostMessage PostMessageA
+#define PostThreadMessage PostThreadMessageA
+#define RegisterClass RegisterClassA
+#define RegisterClassEx RegisterClassExA
+#define RegisterClipboardFormat RegisterClipboardFormatA
+#define RegisterWindowMessage RegisterWindowMessageA
+#define RemoveProp RemovePropA
+#define SendDlgItemMessage SendDlgItemMessageA
+#define SendMessage SendMessageA
+#define SendMessageCallback SendMessageCallbackA
+#define SendMessageTimeout SendMessageTimeoutA
+#define SendNotifyMessage SendNotifyMessageA
+#define SetClassLong SetClassLongA
+#define SetDlgItemText SetDlgItemTextA
+#define SetMenuItemInfo SetMenuItemInfoA
+#define SetProp SetPropA
+#define SetUserObjectInformation SetUserObjectInformationA
+#define SetWindowLong SetWindowLongA
+#define SetWindowLongPtr SetWindowLongPtrA
+#define SetWindowsHook SetWindowsHookA
+#define SetWindowsHookEx SetWindowsHookExA
+#define SetWindowText SetWindowTextA
+#define SystemParametersInfo SystemParametersInfoA
+#define TabbedTextOut TabbedTextOutA
+#define TranslateAccelerator TranslateAcceleratorA
+#define UnregisterClass UnregisterClassA
+#define VkKeyScan VkKeyScanA
+#define VkKeyScanEx VkKeyScanExA
+#define WinHelp WinHelpA
+#define wsprintf wsprintfA
+#define wvsprintf wvsprintfA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINUSER_H */
diff --git a/win32/include/winapi/winver.h b/win32/include/winapi/winver.h
new file mode 100644
index 0000000..9e26302
--- /dev/null
+++ b/win32/include/winapi/winver.h
@@ -0,0 +1,133 @@
+#ifndef _WINVER_H
+#define _WINVER_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define VS_FILE_INFO RT_VERSION
+#define VS_VERSION_INFO 1
+#define VS_USER_DEFINED 100
+#define VS_FFI_SIGNATURE 0xFEEF04BD
+#define VS_FFI_STRUCVERSION 0x10000
+#define VS_FFI_FILEFLAGSMASK 0x3F
+#define VS_FF_DEBUG 1
+#define VS_FF_PRERELEASE 2
+#define VS_FF_PATCHED 4
+#define VS_FF_PRIVATEBUILD 8
+#define VS_FF_INFOINFERRED 16
+#define VS_FF_SPECIALBUILD 32
+#define VOS_UNKNOWN 0
+#define VOS_DOS 0x10000
+#define VOS_OS216 0x20000
+#define VOS_OS232 0x30000
+#define VOS_NT 0x40000
+#define VOS__BASE 0
+#define VOS__WINDOWS16 1
+#define VOS__PM16 2
+#define VOS__PM32 3
+#define VOS__WINDOWS32 4
+#define VOS_DOS_WINDOWS16 0x10001
+#define VOS_DOS_WINDOWS32 0x10004
+#define VOS_OS216_PM16 0x20002
+#define VOS_OS232_PM32 0x30003
+#define VOS_NT_WINDOWS32 0x40004
+#define VFT_UNKNOWN 0
+#define VFT_APP 1
+#define VFT_DLL 2
+#define VFT_DRV 3
+#define VFT_FONT 4
+#define VFT_VXD 5
+#define VFT_STATIC_LIB 7
+#define VFT2_UNKNOWN 0
+#define VFT2_DRV_PRINTER 1
+#define VFT2_DRV_KEYBOARD 2
+#define VFT2_DRV_LANGUAGE 3
+#define VFT2_DRV_DISPLAY 4
+#define VFT2_DRV_MOUSE 5
+#define VFT2_DRV_NETWORK 6
+#define VFT2_DRV_SYSTEM 7
+#define VFT2_DRV_INSTALLABLE 8
+#define VFT2_DRV_SOUND 9
+#define VFT2_DRV_COMM 10
+#define VFT2_DRV_INPUTMETHOD 11
+#define VFT2_FONT_RASTER 1
+#define VFT2_FONT_VECTOR 2
+#define VFT2_FONT_TRUETYPE 3
+#define VFFF_ISSHAREDFILE 1
+#define VFF_CURNEDEST 1
+#define VFF_FILEINUSE 2
+#define VFF_BUFFTOOSMALL 4
+#define VIFF_FORCEINSTALL 1
+#define VIFF_DONTDELETEOLD 2
+#define VIF_TEMPFILE 1
+#define VIF_MISMATCH 2
+#define VIF_SRCOLD 4
+#define VIF_DIFFLANG 8
+#define VIF_DIFFCODEPG 16
+#define VIF_DIFFTYPE 32
+#define VIF_WRITEPROT 64
+#define VIF_FILEINUSE 128
+#define VIF_OUTOFSPACE 256
+#define VIF_ACCESSVIOLATION 512
+#define VIF_SHARINGVIOLATION 1024
+#define VIF_CANNOTCREATE 2048
+#define VIF_CANNOTDELETE 4096
+#define VIF_CANNOTRENAME 8192
+#define VIF_CANNOTDELETECUR 16384
+#define VIF_OUTOFMEMORY 32768
+#define VIF_CANNOTREADSRC 65536
+#define VIF_CANNOTREADDST 0x20000
+#define VIF_BUFFTOOSMALL 0x40000
+#ifndef RC_INVOKED
+typedef struct tagVS_FIXEDFILEINFO {
+ DWORD dwSignature;
+ DWORD dwStrucVersion;
+ DWORD dwFileVersionMS;
+ DWORD dwFileVersionLS;
+ DWORD dwProductVersionMS;
+ DWORD dwProductVersionLS;
+ DWORD dwFileFlagsMask;
+ DWORD dwFileFlags;
+ DWORD dwFileOS;
+ DWORD dwFileType;
+ DWORD dwFileSubtype;
+ DWORD dwFileDateMS;
+ DWORD dwFileDateLS;
+} VS_FIXEDFILEINFO;
+DWORD WINAPI VerFindFileA(DWORD,LPSTR,LPSTR,LPSTR,LPSTR,PUINT,LPSTR,PUINT);
+DWORD WINAPI VerFindFileW(DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT,LPWSTR,PUINT);
+DWORD WINAPI VerInstallFileA(DWORD,LPSTR,LPSTR,LPSTR,LPSTR,LPSTR,LPSTR,PUINT);
+DWORD WINAPI VerInstallFileW(DWORD,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,LPWSTR,PUINT);
+DWORD WINAPI GetFileVersionInfoSizeA(LPSTR,PDWORD);
+DWORD WINAPI GetFileVersionInfoSizeW(LPWSTR,PDWORD);
+BOOL WINAPI GetFileVersionInfoA(LPSTR,DWORD,DWORD,PVOID);
+BOOL WINAPI GetFileVersionInfoW(LPWSTR,DWORD,DWORD,PVOID);
+DWORD WINAPI VerLanguageNameA(DWORD,LPSTR,DWORD);
+DWORD WINAPI VerLanguageNameW(DWORD,LPWSTR,DWORD);
+BOOL WINAPI VerQueryValueA(PCVOID,LPSTR,PVOID*,PUINT);
+BOOL WINAPI VerQueryValueW(PCVOID,LPWSTR,PVOID*,PUINT);
+#ifdef UNICODE
+#define VerFindFile VerFindFileW
+#define VerQueryValue VerQueryValueW
+#define VerInstallFile VerInstallFileW
+#define GetFileVersionInfoSize GetFileVersionInfoSizeW
+#define GetFileVersionInfo GetFileVersionInfoW
+#define VerLanguageName VerLanguageNameW
+#define VerQueryValue VerQueryValueW
+#else
+#define VerQueryValue VerQueryValueA
+#define VerFindFile VerFindFileA
+#define VerInstallFile VerInstallFileA
+#define GetFileVersionInfoSize GetFileVersionInfoSizeA
+#define GetFileVersionInfo GetFileVersionInfoA
+#define VerLanguageName VerLanguageNameA
+#define VerQueryValue VerQueryValueA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif