Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/w32api/include')
-rw-r--r--winsup/w32api/include/basetyps.h137
-rw-r--r--winsup/w32api/include/cderr.h40
-rw-r--r--winsup/w32api/include/cguid.h78
-rw-r--r--winsup/w32api/include/commctrl.h2059
-rw-r--r--winsup/w32api/include/commdlg.h503
-rw-r--r--winsup/w32api/include/cpl.h54
-rw-r--r--winsup/w32api/include/cplext.h6
-rw-r--r--winsup/w32api/include/custcntl.h98
-rw-r--r--winsup/w32api/include/dbt.h86
-rw-r--r--winsup/w32api/include/dde.h60
-rw-r--r--winsup/w32api/include/ddeml.h241
-rw-r--r--winsup/w32api/include/dlgs.h182
-rw-r--r--winsup/w32api/include/httpext.h87
-rw-r--r--winsup/w32api/include/imagehlp.h326
-rw-r--r--winsup/w32api/include/imm.h420
-rw-r--r--winsup/w32api/include/initguid.h8
-rw-r--r--winsup/w32api/include/intshcut.h78
-rw-r--r--winsup/w32api/include/isguids.h11
-rw-r--r--winsup/w32api/include/largeint.h109
-rw-r--r--winsup/w32api/include/lm.h22
-rw-r--r--winsup/w32api/include/lmaccess.h605
-rw-r--r--winsup/w32api/include/lmalert.h56
-rw-r--r--winsup/w32api/include/lmapibuf.h14
-rw-r--r--winsup/w32api/include/lmat.h35
-rw-r--r--winsup/w32api/include/lmaudit.h246
-rw-r--r--winsup/w32api/include/lmbrowsr.h70
-rw-r--r--winsup/w32api/include/lmchdev.h57
-rw-r--r--winsup/w32api/include/lmconfig.h17
-rw-r--r--winsup/w32api/include/lmcons.h60
-rw-r--r--winsup/w32api/include/lmerr.h277
-rw-r--r--winsup/w32api/include/lmerrlog.h207
-rw-r--r--winsup/w32api/include/lmmsg.h23
-rw-r--r--winsup/w32api/include/lmremutl.h41
-rw-r--r--winsup/w32api/include/lmrepl.h90
-rw-r--r--winsup/w32api/include/lmserver.h602
-rw-r--r--winsup/w32api/include/lmshare.h142
-rw-r--r--winsup/w32api/include/lmsname.h54
-rw-r--r--winsup/w32api/include/lmstats.h110
-rw-r--r--winsup/w32api/include/lmsvc.h130
-rw-r--r--winsup/w32api/include/lmuse.h56
-rw-r--r--winsup/w32api/include/lmuseflg.h6
-rw-r--r--winsup/w32api/include/lmwksta.h229
-rw-r--r--winsup/w32api/include/lzexpand.h36
-rw-r--r--winsup/w32api/include/mciavi.h21
-rw-r--r--winsup/w32api/include/mcx.h73
-rw-r--r--winsup/w32api/include/mmsystem.h1933
-rw-r--r--winsup/w32api/include/nb30.h182
-rw-r--r--winsup/w32api/include/nddeapi.h127
-rw-r--r--winsup/w32api/include/nspapi.h19
-rw-r--r--winsup/w32api/include/oaidl.h513
-rw-r--r--winsup/w32api/include/objbase.h151
-rw-r--r--winsup/w32api/include/objfwd.h51
-rw-r--r--winsup/w32api/include/objidl.h1660
-rw-r--r--winsup/w32api/include/ocidl.h7
-rw-r--r--winsup/w32api/include/ole.h304
-rw-r--r--winsup/w32api/include/ole2.h106
-rw-r--r--winsup/w32api/include/ole2ver.h5
-rw-r--r--winsup/w32api/include/oleauto.h252
-rw-r--r--winsup/w32api/include/olectl.h721
-rw-r--r--winsup/w32api/include/olectlid.h109
-rw-r--r--winsup/w32api/include/oledlg.h931
-rw-r--r--winsup/w32api/include/oleidl.h320
-rw-r--r--winsup/w32api/include/pbt.h16
-rw-r--r--winsup/w32api/include/poppack.h3
-rw-r--r--winsup/w32api/include/prsht.h244
-rw-r--r--winsup/w32api/include/psapi.h92
-rw-r--r--winsup/w32api/include/pshpack1.h3
-rw-r--r--winsup/w32api/include/pshpack2.h3
-rw-r--r--winsup/w32api/include/pshpack4.h3
-rw-r--r--winsup/w32api/include/pshpack8.h3
-rw-r--r--winsup/w32api/include/rapi.h64
-rw-r--r--winsup/w32api/include/regstr.h763
-rw-r--r--winsup/w32api/include/richedit.h349
-rw-r--r--winsup/w32api/include/richole.h103
-rw-r--r--winsup/w32api/include/rpc.h54
-rw-r--r--winsup/w32api/include/rpcdce.h381
-rw-r--r--winsup/w32api/include/rpcdce2.h52
-rw-r--r--winsup/w32api/include/rpcdcep.h124
-rw-r--r--winsup/w32api/include/rpcndr.h466
-rw-r--r--winsup/w32api/include/rpcnsi.h118
-rw-r--r--winsup/w32api/include/rpcnsip.h21
-rw-r--r--winsup/w32api/include/rpcnterr.h18
-rw-r--r--winsup/w32api/include/rpcproxy.h185
-rw-r--r--winsup/w32api/include/scrnsave.h78
-rw-r--r--winsup/w32api/include/shellapi.h251
-rw-r--r--winsup/w32api/include/shlguid.h73
-rw-r--r--winsup/w32api/include/shlobj.h695
-rw-r--r--winsup/w32api/include/sql.h705
-rw-r--r--winsup/w32api/include/sqlext.h79
-rw-r--r--winsup/w32api/include/sqltypes.h61
-rw-r--r--winsup/w32api/include/unknwn.h67
-rw-r--r--winsup/w32api/include/winbase.h1841
-rw-r--r--winsup/w32api/include/wincon.h203
-rw-r--r--winsup/w32api/include/wincrypt.h184
-rw-r--r--winsup/w32api/include/windef.h223
-rw-r--r--winsup/w32api/include/windows.h137
-rw-r--r--winsup/w32api/include/windowsx.h505
-rw-r--r--winsup/w32api/include/winerror.h1011
-rw-r--r--winsup/w32api/include/wingdi.h2808
-rw-r--r--winsup/w32api/include/wininet.h881
-rw-r--r--winsup/w32api/include/winioctl.h255
-rw-r--r--winsup/w32api/include/winnetwk.h312
-rw-r--r--winsup/w32api/include/winnls.h454
-rw-r--r--winsup/w32api/include/winnt.h2231
-rw-r--r--winsup/w32api/include/winperf.h135
-rw-r--r--winsup/w32api/include/winreg.h155
-rw-r--r--winsup/w32api/include/winresrc.h10
-rw-r--r--winsup/w32api/include/winsock.h510
-rw-r--r--winsup/w32api/include/winsock2.h129
-rw-r--r--winsup/w32api/include/winspool.h776
-rw-r--r--winsup/w32api/include/winsvc.h202
-rw-r--r--winsup/w32api/include/winuser.h3236
-rw-r--r--winsup/w32api/include/winver.h129
-rw-r--r--winsup/w32api/include/wtypes.h152
-rw-r--r--winsup/w32api/include/zmouse.h24
115 files changed, 36830 insertions, 0 deletions
diff --git a/winsup/w32api/include/basetyps.h b/winsup/w32api/include/basetyps.h
new file mode 100644
index 000000000..0f2744c83
--- /dev/null
+++ b/winsup/w32api/include/basetyps.h
@@ -0,0 +1,137 @@
+#ifndef _BASETYPS_H
+#define _BASETYPS_H
+
+#ifndef __OBJC__
+#ifdef __cplusplus
+#define EXTERN_C extern "C"
+#else
+#define EXTERN_C extern
+#endif
+#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
+#if defined(__GNUC__) && !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
+#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
+#ifdef __cplusplus
+#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/winsup/w32api/include/cderr.h b/winsup/w32api/include/cderr.h
new file mode 100644
index 000000000..f148fc4d3
--- /dev/null
+++ b/winsup/w32api/include/cderr.h
@@ -0,0 +1,40 @@
+#ifndef _CDERR_H
+#define _CDERR_H
+#define CDERR_DIALOGFAILURE 0xFFFF
+#define CDERR_GENERALCODES 0x0000
+#define CDERR_STRUCTSIZE 0x0001
+#define CDERR_INITIALIZATION 0x0002
+#define CDERR_NOTEMPLATE 0x0003
+#define CDERR_NOHINSTANCE 0x0004
+#define CDERR_LOADSTRFAILURE 0x0005
+#define CDERR_FINDRESFAILURE 0x0006
+#define CDERR_LOADRESFAILURE 0x0007
+#define CDERR_LOCKRESFAILURE 0x0008
+#define CDERR_MEMALLOCFAILURE 0x0009
+#define CDERR_MEMLOCKFAILURE 0x000A
+#define CDERR_NOHOOK 0x000B
+#define CDERR_REGISTERMSGFAIL 0x000C
+#define PDERR_PRINTERCODES 0x1000
+#define PDERR_SETUPFAILURE 0x1001
+#define PDERR_PARSEFAILURE 0x1002
+#define PDERR_RETDEFFAILURE 0x1003
+#define PDERR_LOADDRVFAILURE 0x1004
+#define PDERR_GETDEVMODEFAIL 0x1005
+#define PDERR_INITFAILURE 0x1006
+#define PDERR_NODEVICES 0x1007
+#define PDERR_NODEFAULTPRN 0x1008
+#define PDERR_DNDMMISMATCH 0x1009
+#define PDERR_CREATEICFAILURE 0x100A
+#define PDERR_PRINTERNOTFOUND 0x100B
+#define PDERR_DEFAULTDIFFERENT 0x100C
+#define CFERR_CHOOSEFONTCODES 0x2000
+#define CFERR_NOFONTS 0x2001
+#define CFERR_MAXLESSTHANMIN 0x2002
+#define FNERR_FILENAMECODES 0x3000
+#define FNERR_SUBCLASSFAILURE 0x3001
+#define FNERR_INVALIDFILENAME 0x3002
+#define FNERR_BUFFERTOOSMALL 0x3003
+#define FRERR_FINDREPLACECODES 0x4000
+#define FRERR_BUFFERLENGTHZERO 0x4001
+#define CCERR_CHOOSECOLORCODES 0x5000
+#endif
diff --git a/winsup/w32api/include/cguid.h b/winsup/w32api/include/cguid.h
new file mode 100644
index 000000000..9f08f5a62
--- /dev/null
+++ b/winsup/w32api/include/cguid.h
@@ -0,0 +1,78 @@
+#ifndef _CGUID_H
+#define _CGUID_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const IID GUID_NULL;
+extern const IID IID_IRpcChannel;
+extern const IID IID_IRpcStub;
+extern const IID IID_IStubManager;
+extern const IID IID_IRpcProxy;
+extern const IID IID_IProxyManager;
+extern const IID IID_IPSFactory;
+extern const IID IID_IInternalMoniker;
+extern const IID IID_IDfReserved1;
+extern const IID IID_IDfReserved2;
+extern const IID IID_IDfReserved3;
+extern const CLSID CLSID_StdMarshal;
+extern const IID IID_IStub;
+extern const IID IID_IProxy;
+extern const IID IID_IEnumGeneric;
+extern const IID IID_IEnumHolder;
+extern const IID IID_IEnumCallback;
+extern const IID IID_IOleManager;
+extern const IID IID_IOlePresObj;
+extern const IID IID_IDebug;
+extern const IID IID_IDebugStream;
+extern const CLSID CLSID_PSGenObject;
+extern const CLSID CLSID_PSClientSite;
+extern const CLSID CLSID_PSClassObject;
+extern const CLSID CLSID_PSInPlaceActive;
+extern const CLSID CLSID_PSInPlaceFrame;
+extern const CLSID CLSID_PSDragDrop;
+extern const CLSID CLSID_PSBindCtx;
+extern const CLSID CLSID_PSEnumerators;
+extern const CLSID CLSID_StaticMetafile;
+extern const CLSID CLSID_StaticDib;
+extern const CLSID CID_CDfsVolume;
+extern const CLSID CLSID_CCDFormKrnl;
+extern const CLSID CLSID_CCDPropertyPage;
+extern const CLSID CLSID_CCDFormDialog;
+extern const CLSID CLSID_CCDCommandButton;
+extern const CLSID CLSID_CCDComboBox;
+extern const CLSID CLSID_CCDTextBox;
+extern const CLSID CLSID_CCDCheckBox;
+extern const CLSID CLSID_CCDLabel;
+extern const CLSID CLSID_CCDOptionButton;
+extern const CLSID CLSID_CCDListBox;
+extern const CLSID CLSID_CCDScrollBar;
+extern const CLSID CLSID_CCDGroupBox;
+extern const CLSID CLSID_CCDGeneralPropertyPage;
+extern const CLSID CLSID_CCDGenericPropertyPage;
+extern const CLSID CLSID_CCDFontPropertyPage;
+extern const CLSID CLSID_CCDColorPropertyPage;
+extern const CLSID CLSID_CCDLabelPropertyPage;
+extern const CLSID CLSID_CCDCheckBoxPropertyPage;
+extern const CLSID CLSID_CCDTextBoxPropertyPage;
+extern const CLSID CLSID_CCDOptionButtonPropertyPage;
+extern const CLSID CLSID_CCDListBoxPropertyPage;
+extern const CLSID CLSID_CCDCommandButtonPropertyPage;
+extern const CLSID CLSID_CCDComboBoxPropertyPage;
+extern const CLSID CLSID_CCDScrollBarPropertyPage;
+extern const CLSID CLSID_CCDGroupBoxPropertyPage;
+extern const CLSID CLSID_CCDXObjectPropertyPage;
+extern const CLSID CLSID_CStdPropertyFrame;
+extern const CLSID CLSID_CFormPropertyPage;
+extern const CLSID CLSID_CGridPropertyPage;
+extern const CLSID CLSID_CWSJArticlePage;
+extern const CLSID CLSID_CSystemPage;
+extern const CLSID CLSID_IdentityUnmarshal;
+extern const CLSID CLSID_InProcFreeMarshaler;
+extern const CLSID CLSID_Picture_Metafile;
+extern const CLSID CLSID_Picture_EnhMetafile;
+extern const CLSID CLSID_Picture_Dib;
+extern const GUID GUID_TRISTATE;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/commctrl.h b/winsup/w32api/include/commctrl.h
new file mode 100644
index 000000000..359761f83
--- /dev/null
+++ b/winsup/w32api/include/commctrl.h
@@ -0,0 +1,2059 @@
+#ifndef _COMMCTRL_H
+#define _COMMCTRL_H
+#include <prsht.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef _WIN32_IE
+/* define _WIN32_IE if you really want it */
+#if 0
+#define _WIN32_IE 0x0300
+#endif
+#endif
+
+#define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
+#define ANIMATE_CLASSW L"SysAnimate32"
+#define ANIMATE_CLASSA "SysAnimate32"
+#define HOTKEY_CLASSA "msctls_hotkey32"
+#define HOTKEY_CLASSW L"msctls_hotkey32"
+#define PROGRESS_CLASSA "msctls_progress32"
+#define PROGRESS_CLASSW L"msctls_progress32"
+#define STATUSCLASSNAMEA "msctls_statusbar32"
+#define STATUSCLASSNAMEW L"msctls_statusbar32"
+#define TOOLBARCLASSNAMEW L"ToolbarWindow32"
+#define TOOLBARCLASSNAMEA "ToolbarWindow32"
+#define TOOLTIPS_CLASSW L"tooltips_class32"
+#define TOOLTIPS_CLASSA "tooltips_class32"
+#define TRACKBAR_CLASSA "msctls_trackbar32"
+#define TRACKBAR_CLASSW L"msctls_trackbar32"
+#define UPDOWN_CLASSA "msctls_updown32"
+#define UPDOWN_CLASSW L"msctls_updown32"
+#define WC_LISTVIEWA "SysListView32"
+#define WC_LISTVIEWW L"SysListView32"
+#define WC_TABCONTROLA "SysTabControl32"
+#define WC_TABCONTROLW L"SysTabControl32"
+#define WC_TREEVIEWA "SysTreeView32"
+#define WC_TREEVIEWW L"SysTreeView32"
+#define WC_HEADERA "SysHeader32"
+#define WC_HEADERW L"SysHeader32"
+#define DATETIMEPICK_CLASSW L"SysDateTimePick32"
+#define DATETIMEPICK_CLASSA "SysDateTimePick32"
+#define MONTHCAL_CLASSW L"SysMonthCal32"
+#define MONTHCAL_CLASSA "SysMonthCal32"
+#define REBARCLASSNAMEW L"ReBarWindow32"
+#define REBARCLASSNAMEA "ReBarWindow32"
+#define LVM_FIRST 0x1000
+#define TV_FIRST 0x1100
+#define HDM_FIRST 0x1200
+#define ACM_OPENA (WM_USER+100)
+#define ACM_PLAY (WM_USER+101)
+#define ACM_STOP (WM_USER+102)
+#define ACM_OPENW (WM_USER+103)
+#define ACN_START 1
+#define ACN_STOP 2
+#define DL_BEGINDRAG 1157
+#define DL_CANCELDRAG 1160
+#define DL_DRAGGING 1158
+#define DL_DROPPED 1159
+#define DL_CURSORSET 0
+#define DL_STOPCURSOR 1
+#define DL_COPYCURSOR 2
+#define DL_MOVECURSOR 3
+#define CCS_TOP 1
+#define CCS_NOMOVEY 2
+#define CCS_BOTTOM 3
+#define CCS_NORESIZE 4
+#define CCS_NOPARENTALIGN 8
+#define CCS_ADJUSTABLE 32
+#define CCS_NODIVIDER 64
+#if (_WIN32_IE >= 0x0300)
+#define CCS_VERT 128
+#define CCS_LEFT 129
+#define CCS_NOMOVEX 130
+#define CCS_RIGHT 131
+#endif
+#define CMB_MASKED 2
+#define MINSYSCOMMAND SC_SIZE
+#define SBT_OWNERDRAW 0x1000
+#define SBT_NOBORDERS 256
+#define SBT_POPOUT 512
+#define SBT_RTLREADING 1024
+#define SB_SETTEXTA (WM_USER+1)
+#define SB_SETTEXTW (WM_USER+11)
+#define SB_GETTEXTA (WM_USER+2)
+#define SB_GETTEXTW (WM_USER+13)
+#define SB_GETTEXTLENGTHA (WM_USER+3)
+#define SB_GETTEXTLENGTHW (WM_USER+12)
+#define SB_SETPARTS (WM_USER+4)
+#define SB_GETPARTS (WM_USER+6)
+#define SB_GETBORDERS (WM_USER+7)
+#define SB_SETMINHEIGHT (WM_USER+8)
+#define SB_SIMPLE (WM_USER+9)
+#define SB_GETRECT (WM_USER+10)
+#define MSGF_COMMCTRL_BEGINDRAG 0x4200
+#define MSGF_COMMCTRL_SIZEHEADER 0x4201
+#define MSGF_COMMCTRL_DRAGSELECT 0x4202
+#define MSGF_COMMCTRL_TOOLBARCUST 0x4203
+#define ILC_COLOR 0
+#define ILC_COLOR4 4
+#define ILC_COLOR8 8
+#define ILC_COLOR16 16
+#define ILC_COLOR24 24
+#define ILC_COLOR32 32
+#define ILC_COLORDDB 254
+#define ILC_MASK 1
+#define ILC_PALETTE 2048
+#define ILD_BLEND25 2
+#define ILD_BLEND50 4
+#define ILD_SELECTED 4
+#define ILD_BLEND 4
+#define ILD_FOCUS 2
+#define ILD_MASK 16
+#define ILD_NORMAL 0
+#define ILD_TRANSPARENT 1
+#define HDS_HORZ 0
+#define HDS_BUTTONS 2
+#define HDS_HIDDEN 8
+#define NM_FIRST 0
+#define NM_LAST (-99)
+#define LVN_FIRST (-100)
+#define LVN_LAST (-199)
+#define HDN_FIRST (-300)
+#define HDN_LAST (-399)
+#define TVN_FIRST (-400)
+#define TVN_LAST (-499)
+#define TTN_FIRST (-520)
+#define TTN_LAST (-549)
+#define TCN_FIRST (-550)
+#define TCN_LAST (-580)
+#define CDN_FIRST (-601)
+#define CDN_LAST (-699)
+#define TBN_FIRST (-700)
+#define TBN_LAST (-720)
+#define UDN_FIRST (-721)
+#define UDN_LAST (-740)
+#if (_WIN32_IE >= 0x0300)
+#define RBN_FIRST (-831)
+#define RBN_LAST (-859)
+#define MCN_FIRST (-750)
+#define MCN_LAST (-759)
+#define DTN_FIRST (-760)
+#define DTN_LAST (-799)
+#define CBEN_FIRST (-800)
+#define CBEN_LAST (-830)
+#endif /* _WIN32_IE */
+#define HDI_WIDTH 1
+#define HDI_HEIGHT 1
+#define HDI_TEXT 2
+#define HDI_FORMAT 4
+#define HDI_LPARAM 8
+#define HDI_BITMAP 16
+#define HDF_LEFT 0
+#define HDF_RIGHT 1
+#define HDF_CENTER 2
+#define HDF_JUSTIFYMASK3
+#define HDF_RTLREADING 4
+#define HDF_OWNERDRAW 0x8000
+#define HDF_STRING 0x4000
+#define HDF_BITMAP 0x2000
+#define HDM_GETITEMCOUNT HDM_FIRST
+#define HDM_INSERTITEMA (HDM_FIRST+1)
+#define HDM_INSERTITEMW (HDM_FIRST+10)
+#define HDM_DELETEITEM (HDM_FIRST+2)
+#define HDM_GETITEMA (HDM_FIRST+3)
+#define HDM_GETITEMW (HDM_FIRST+11)
+#define HDM_SETITEMA (HDM_FIRST+4)
+#define HDM_SETITEMW (HDM_FIRST+12)
+#define HDM_LAYOUT (HDM_FIRST+5)
+#define HHT_NOWHERE 1
+#define HHT_ONHEADER 2
+#define HHT_ONDIVIDER 4
+#define HHT_ONDIVOPEN 8
+#define HHT_ABOVE 256
+#define HHT_BELOW 512
+#define HHT_TORIGHT 1024
+#define HHT_TOLEFT 2048
+#define HDM_HITTEST (HDM_FIRST+6)
+#define HDN_ITEMCHANGINGA (HDN_FIRST-0)
+#define HDN_ITEMCHANGINGW (HDN_FIRST-20)
+#define HDN_ITEMCHANGEDA (HDN_FIRST-1)
+#define HDN_ITEMCHANGEDW (HDN_FIRST-21)
+#define HDN_ITEMCLICKA (HDN_FIRST-2)
+#define HDN_ITEMCLICKW (HDN_FIRST-22)
+#define HDN_ITEMDBLCLICKA (HDN_FIRST-3)
+#define HDN_ITEMDBLCLICKW (HDN_FIRST-23)
+#define HDN_DIVIDERDBLCLICKA (HDN_FIRST-5)
+#define HDN_DIVIDERDBLCLICKW (HDN_FIRST-25)
+#define HDN_BEGINTRACKA (HDN_FIRST-6)
+#define HDN_BEGINTRACKW (HDN_FIRST-26)
+#define HDN_ENDTRACKA (HDN_FIRST-7)
+#define HDN_ENDTRACKW (HDN_FIRST-27)
+#define HDN_TRACKA (HDN_FIRST-8)
+#define HDN_TRACKW (HDN_FIRST-28)
+#define CMB_MASKED 2
+#define TBSTATE_CHECKED 1
+#define TBSTATE_PRESSED 2
+#define TBSTATE_ENABLED 4
+#define TBSTATE_HIDDEN 8
+#define TBSTATE_INDETERMINATE 16
+#define TBSTATE_WRAP 32
+#define TBSTYLE_BUTTON 0
+#define TBSTYLE_SEP 1
+#define TBSTYLE_CHECK 2
+#define TBSTYLE_GROUP 4
+#define TBSTYLE_CHECKGROUP (TBSTYLE_GROUP|TBSTYLE_CHECK)
+#define TBSTYLE_TOOLTIPS 256
+#define TBSTYLE_WRAPABLE 512
+#define TBSTYLE_ALTDRAG 1024
+#define TB_ENABLEBUTTON (WM_USER+1)
+#define TB_CHECKBUTTON (WM_USER+2)
+#define TB_PRESSBUTTON (WM_USER+3)
+#define TB_HIDEBUTTON (WM_USER+4)
+#define TB_INDETERMINATE (WM_USER+5)
+#define TB_ISBUTTONENABLED (WM_USER+9)
+#define TB_ISBUTTONCHECKED (WM_USER+10)
+#define TB_ISBUTTONPRESSED (WM_USER+11)
+#define TB_ISBUTTONHIDDEN (WM_USER+12)
+#define TB_ISBUTTONINDETERMINATE (WM_USER+13)
+#define TB_SETSTATE (WM_USER+17)
+#define TB_GETSTATE (WM_USER+18)
+#define TB_ADDBITMAP (WM_USER+19)
+#define HINST_COMMCTRL ((HINSTANCE)-1)
+#define IDB_STD_SMALL_COLOR 0
+#define IDB_STD_LARGE_COLOR 1
+#define IDB_VIEW_SMALL_COLOR 4
+#define IDB_VIEW_LARGE_COLOR 5
+#define STD_CUT 0
+#define STD_COPY 1
+#define STD_PASTE 2
+#define STD_UNDO 3
+#define STD_REDOW 4
+#define STD_DELETE 5
+#define STD_FILENEW 6
+#define STD_FILEOPEN 7
+#define STD_FILESAVE 8
+#define STD_PRINTPRE 9
+#define STD_PROPERTIES 10
+#define STD_HELP 11
+#define STD_FIND 12
+#define STD_REPLACE 13
+#define STD_PRINT 14
+#define VIEW_LARGEICONS 0
+#define VIEW_SMALLICONS 1
+#define VIEW_LIST 2
+#define VIEW_DETAILS 3
+#define VIEW_SORTNAME 4
+#define VIEW_SORTSIZE 5
+#define VIEW_SORTDATE 6
+#define VIEW_SORTTYPE 7
+#define VIEW_PARENTFOLDER 8
+#define VIEW_NETCONNECT 9
+#define VIEW_NETDISCONNECT 10
+#define VIEW_NEWFOLDER 11
+#define TB_ADDBUTTONS (WM_USER+20)
+#define TB_INSERTBUTTON (WM_USER+21)
+#define TB_DELETEBUTTON (WM_USER+22)
+#define TB_GETBUTTON (WM_USER+23)
+#define TB_BUTTONCOUNT (WM_USER+24)
+#define TB_COMMANDTOINDEX (WM_USER+25)
+#define TB_SAVERESTOREA (WM_USER+26)
+#define TB_SAVERESTOREW (WM_USER+76)
+#define TB_CUSTOMIZE (WM_USER+27)
+#define TB_ADDSTRINGA (WM_USER+28)
+#define TB_ADDSTRINGW (WM_USER+77)
+#define TB_GETITEMRECT (WM_USER+29)
+#define TB_BUTTONSTRUCTSIZE (WM_USER+30)
+#define TB_SETBUTTONSIZE (WM_USER+31)
+#define TB_SETBITMAPSIZE (WM_USER+32)
+#define TB_AUTOSIZE (WM_USER+33)
+#define TB_GETTOOLTIPS (WM_USER+35)
+#define TB_SETTOOLTIPS (WM_USER+36)
+#define TB_SETPARENT (WM_USER+37)
+#define TB_SETROWS (WM_USER+39)
+#define TB_GETROWS (WM_USER+40)
+#define TB_SETCMDID (WM_USER+42)
+#define TB_CHANGEBITMAP (WM_USER+43)
+#define TB_GETBITMAP (WM_USER+44)
+#define TB_GETBUTTONTEXTA (WM_USER+45)
+#define TB_GETBUTTONTEXTW (WM_USER+75)
+#define TB_REPLACEBITMAP (WM_USER+46)
+#define TBBF_LARGE 1
+#define TB_GETBITMAPFLAGS (WM_USER+41)
+#define TBN_GETBUTTONINFOA (TBN_FIRST-0)
+#define TBN_GETBUTTONINFOW (TBN_FIRST-20)
+#define TBN_BEGINDRAG (TBN_FIRST-1)
+#define TBN_ENDDRAG (TBN_FIRST-2)
+#define TBN_BEGINADJUST (TBN_FIRST-3)
+#define TBN_ENDADJUST (TBN_FIRST-4)
+#define TBN_RESET (TBN_FIRST-5)
+#define TBN_QUERYINSERT (TBN_FIRST-6)
+#define TBN_QUERYDELETE (TBN_FIRST-7)
+#define TBN_TOOLBARCHANGE (TBN_FIRST-8)
+#define TBN_CUSTHELP (TBN_FIRST-9)
+#define TTS_ALWAYSTIP 1
+#define TTS_NOPREFIX 2
+#define TTF_IDISHWND 1
+#define TTF_CENTERTIP 2
+#define TTF_RTLREADING 4
+#define TTF_SUBCLASS 16
+#define TTDT_AUTOMATIC 0
+#define TTDT_RESHOW 1
+#define TTDT_AUTOPOP 2
+#define TTDT_INITIAL 3
+#define TTM_ACTIVATE (WM_USER+1)
+#define TTM_SETDELAYTIME (WM_USER+3)
+#define TTM_ADDTOOLA (WM_USER+4)
+#define TTM_ADDTOOLW (WM_USER+50)
+#define TTM_DELTOOLA (WM_USER+5)
+#define TTM_DELTOOLW (WM_USER+51)
+#define TTM_NEWTOOLRECTA (WM_USER+6)
+#define TTM_NEWTOOLRECTW (WM_USER+52)
+#define TTM_RELAYEVENT (WM_USER+7)
+#define TTM_GETTOOLINFOA (WM_USER+8)
+#define TTM_GETTOOLINFOW (WM_USER+53)
+#define TTM_SETTOOLINFOA (WM_USER+9)
+#define TTM_SETTOOLINFOW (WM_USER+54)
+#define TTM_HITTESTA (WM_USER+10)
+#define TTM_HITTESTW (WM_USER+55)
+#define TTM_GETTEXTA (WM_USER+11)
+#define TTM_GETTEXTW (WM_USER+56)
+#define TTM_UPDATETIPTEXTA (WM_USER+12)
+#define TTM_UPDATETIPTEXTW (WM_USER+57)
+#define TTM_GETTOOLCOUNT (WM_USER +13)
+#define TTM_ENUMTOOLSA (WM_USER+14)
+#define TTM_ENUMTOOLSW (WM_USER+58)
+#define TTM_GETCURRENTTOOLA (WM_USER+15)
+#define TTM_GETCURRENTTOOLW (WM_USER+59)
+#define TTM_WINDOWFROMPOINT (WM_USER+16)
+#if (_WIN32_IE >= 0x0300)
+#define TTM_TRACKACTIVATE (WM_USER+17)
+#define TTM_TRACKPOSITION (WM_USER+18)
+#define TTM_SETTIPBKCOLOR (WM_USER+19)
+#define TTM_SETTIPTEXTCOLOR (WM_USER+20)
+#define TTM_GETDELAYTIME (WM_USER+21)
+#define TTM_GETTIPBKCOLOR (WM_USER+22)
+#define TTM_GETTIPTEXTCOLOR (WM_USER+23)
+#define TTM_SETMAXTIPWIDTH (WM_USER+24)
+#define TTM_GETMAXTIPWIDTH (WM_USER+25)
+#define TTM_SETMARGIN (WM_USER+26)
+#define TTM_GETMARGIN (WM_USER+27)
+#define TTM_POP (WM_USER+28)
+#endif /* _WIN32_IE */
+#if (_WIN32_IE >= 0x0400) /* IE4.0 ??? */
+#define TTM_UPDATE (WM_USER+29)
+#endif
+#define TTN_NEEDTEXTA (TTN_FIRST-0)
+#define TTN_NEEDTEXTW (TTN_FIRST-10)
+#define TTN_SHOW (TTN_FIRST-1)
+#define TTN_POP (TTN_FIRST-2)
+#define UD_MAXVAL 0x7fff
+#define UD_MINVAL (-UD_MAXVAL)
+#define UDN_DELTAPOS (UDN_FIRST-1)
+#define UDS_WRAP 1
+#define UDS_SETBUDDYINT 2
+#define UDS_ALIGNRIGHT 4
+#define UDS_ALIGNLEFT 8
+#define UDS_AUTOBUDDY 16
+#define UDS_ARROWKEYS 32
+#define UDS_HORZ 64
+#define UDS_NOTHOUSANDS 128
+#define UDM_SETRANGE (WM_USER+101)
+#define UDM_GETRANGE (WM_USER+102)
+#define UDM_SETPOS (WM_USER+103)
+#define UDM_GETPOS (WM_USER+104)
+#define UDM_SETBUDDY (WM_USER+105)
+#define UDM_GETBUDDY (WM_USER+106)
+#define UDM_SETACCEL (WM_USER+107)
+#define UDM_GETACCEL (WM_USER+108)
+#define UDM_SETBASE (WM_USER+109)
+#define UDM_GETBASE (WM_USER+110)
+#define SB_SETTEXTA (WM_USER+1)
+#define SB_SETTEXTW (WM_USER+11)
+#define SB_GETTEXTA (WM_USER+2)
+#define SB_GETTEXTW (WM_USER+13)
+#define SB_GETTEXTLENGTHA (WM_USER+3)
+#define SB_GETTEXTLENGTHW (WM_USER+12)
+#define SB_SETPARTS (WM_USER+4)
+#define SB_GETPARTS (WM_USER+6)
+#define SB_GETBORDERS (WM_USER+7)
+#define SB_SETMINHEIGHT (WM_USER+8)
+#define SB_SIMPLE (WM_USER+9)
+#define SB_GETRECT (WM_USER+10)
+#define SBT_OWNERDRAW 0x1000
+#define SBT_NOBORDERS 256
+#define SBT_POPOUT 512
+#define SBT_RTLREADING 1024
+#define TBS_AUTOTICKS 1
+#define TBS_VERT 2
+#define TBS_HORZ 0
+#define TBS_TOP 4
+#define TBS_BOTTOM 0
+#define TBS_LEFT 4
+#define TBS_RIGHT 0
+#define TBS_BOTH 8
+#define TBS_NOTICKS 16
+#define TBS_ENABLESELRANGE 32
+#define TBS_FIXEDLENGTH 64
+#define TBS_NOTHUMB 128
+#define TBM_GETPOS (WM_USER)
+#define TBM_GETRANGEMIN (WM_USER+1)
+#define TBM_GETRANGEMAX (WM_USER+2)
+#define TBM_GETTIC (WM_USER+3)
+#define TBM_SETTIC (WM_USER+4)
+#define TBM_SETPOS (WM_USER+5)
+#define TBM_SETRANGE (WM_USER+6)
+#define TBM_SETRANGEMIN (WM_USER+7)
+#define TBM_SETRANGEMAX (WM_USER+8)
+#define TBM_CLEARTICS (WM_USER+9)
+#define TBM_SETSEL (WM_USER+10)
+#define TBM_SETSELSTART (WM_USER+11)
+#define TBM_SETSELEND (WM_USER+12)
+#define TBM_GETPTICS (WM_USER+14)
+#define TBM_GETTICPOS (WM_USER+15)
+#define TBM_GETNUMTICS (WM_USER+16)
+#define TBM_GETSELSTART (WM_USER+17)
+#define TBM_GETSELEND (WM_USER+18)
+#define TBM_CLEARSEL (WM_USER+19)
+#define TBM_SETTICFREQ (WM_USER+20)
+#define TBM_SETPAGESIZE (WM_USER+21)
+#define TBM_GETPAGESIZE (WM_USER+22)
+#define TBM_SETLINESIZE (WM_USER+23)
+#define TBM_GETLINESIZE (WM_USER+24)
+#define TBM_GETTHUMBRECT (WM_USER+25)
+#define TBM_GETCHANNELRECT (WM_USER+26)
+#define TBM_SETTHUMBLENGTH (WM_USER+27)
+#define TBM_GETTHUMBLENGTH (WM_USER+28)
+#define TB_LINEUP 0
+#define TB_LINEDOWN 1
+#define TB_PAGEUP 2
+#define TB_PAGEDOWN 3
+#define TB_THUMBPOSITION 4
+#define TB_THUMBTRACK 5
+#define TB_TOP 6
+#define TB_BOTTOM 7
+#define TB_ENDTRACK 8
+#define HOTKEYF_SHIFT 1
+#define HOTKEYF_CONTROL 2
+#define HOTKEYF_ALT 4
+#define HOTKEYF_EXT 8
+#define HKCOMB_NONE 1
+#define HKCOMB_S 2
+#define HKCOMB_C 4
+#define HKCOMB_A 8
+#define HKCOMB_SC 16
+#define HKCOMB_SA 32
+#define HKCOMB_CA 64
+#define HKCOMB_SCA 128
+#define HKM_SETHOTKEY (WM_USER+1)
+#define HKM_GETHOTKEY (WM_USER+2)
+#define HKM_SETRULES (WM_USER+3)
+#define PBM_SETRANGE (WM_USER+1)
+#define PBM_SETPOS (WM_USER+2)
+#define PBM_DELTAPOS (WM_USER+3)
+#define PBM_SETSTEP (WM_USER+4)
+#define PBM_STEPIT (WM_USER+5)
+#define PBM_SETRANGE32 1030
+#define PBM_GETRANGE 1031
+#define PBM_GETPOS 1032
+#define PBM_SETBARCOLOR 1033
+#define PBM_SETBKCOLOR CCM_SETBKCOLOR
+#define PBS_SMOOTH 1
+#define PBS_VERTICAL 4
+#define LVS_ICON 0
+#define LVS_REPORT 1
+#define LVS_SMALLICON 2
+#define LVS_LIST 3
+#define LVS_TYPEMASK 3
+#define LVS_SINGLESEL 4
+#define LVS_SHOWSELALWAYS 8
+#define LVS_SORTASCENDING 16
+#define LVS_SORTDESCENDING 32
+#define LVS_SHAREIMAGELISTS 64
+#define LVS_NOLABELWRAP 128
+#define LVS_AUTOARRANGE 256
+#define LVS_EDITLABELS 512
+#define LVS_NOSCROLL 0x2000
+#define LVS_TYPESTYLEMASK 0xfc00
+#define LVS_ALIGNTOP 0
+#define LVS_ALIGNLEFT 0x800
+#define LVS_ALIGNMASK 0xc00
+#define LVS_OWNERDRAWFIXED 0x400
+#define LVS_NOCOLUMNHEADER 0x4000
+#define LVS_NOSORTHEADER 0x8000
+#define LVSIL_NORMAL 0
+#define LVSIL_SMALL 1
+#define LVSIL_STATE 2
+#define LVS_OWNERDATA 4096
+#define LVM_GETBKCOLOR LVM_FIRST
+#define LVM_SETBKCOLOR (LVM_FIRST+1)
+#define LVM_GETIMAGELIST (LVM_FIRST+2)
+#define LVM_SETIMAGELIST (LVM_FIRST+3)
+#define LVM_GETITEMCOUNT (LVM_FIRST+4)
+#define LVIF_TEXT 1
+#define LVIF_IMAGE 2
+#define LVIF_PARAM 4
+#define LVIF_STATE 8
+#define LVIS_FOCUSED 1
+#define LVIS_SELECTED 2
+#define LVIS_CUT 4
+#define LVIS_DROPHILITED 8
+#define LVIS_OVERLAYMASK 0xF00
+#define LVIS_STATEIMAGEMASK 0xF000
+#define LPSTR_TEXTCALLBACKW ((LPWSTR)-1)
+#define LPSTR_TEXTCALLBACKA ((LPSTR)-1)
+#define I_IMAGECALLBACK (-1)
+#define LVM_GETITEMA (LVM_FIRST+5)
+#define LVM_GETITEMW (LVM_FIRST+75)
+#define LVM_SETITEMA (LVM_FIRST+6)
+#define LVM_SETITEMW (LVM_FIRST+76)
+#define LVM_INSERTITEMA (LVM_FIRST+7)
+#define LVM_INSERTITEMW (LVM_FIRST+77)
+#define LVM_DELETEITEM (LVM_FIRST+8)
+#define LVM_DELETEALLITEMS (LVM_FIRST+9)
+#define LVM_GETCALLBACKMASK (LVM_FIRST+10)
+#define LVM_SETCALLBACKMASK (LVM_FIRST+11)
+#define LVNI_ALL 0
+#define LVNI_FOCUSED 1
+#define LVNI_SELECTED 2
+#define LVNI_CUT 4
+#define LVNI_DROPHILITED 8
+#define LVNI_ABOVE 256
+#define LVNI_BELOW 512
+#define LVNI_TOLEFT 1024
+#define LVNI_TORIGHT 2048
+#define LVM_GETNEXTITEM (LVM_FIRST+12)
+#define LVFI_PARAM 1
+#define LVFI_STRING 2
+#define LVFI_PARTIAL 8
+#define LVFI_WRAP 32
+#define LVFI_NEARESTXY 64
+#define LVIF_DI_SETITEM 0x1000
+#define LVM_FINDITEMA (LVM_FIRST+13)
+#define LVM_FINDITEMW (LVM_FIRST+83)
+#define LVIR_BOUNDS 0
+#define LVIR_ICON 1
+#define LVIR_LABEL 2
+#define LVIR_SELECTBOUNDS 3
+#define LVM_GETITEMRECT (LVM_FIRST+14)
+#define LVM_SETITEMPOSITION (LVM_FIRST+15)
+#define LVM_GETITEMPOSITION (LVM_FIRST+16)
+#define LVM_GETSTRINGWIDTHA (LVM_FIRST+17)
+#define LVM_GETSTRINGWIDTHW (LVM_FIRST+87)
+#define LVHT_NOWHERE 1
+#define LVHT_ONITEMICON 2
+#define LVHT_ONITEMLABEL 4
+#define LVHT_ONITEMSTATEICON 8
+#define LVHT_ONITEM (LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON)
+#define LVHT_ABOVE 8
+#define LVHT_BELOW 16
+#define LVHT_TORIGHT 32
+#define LVHT_TOLEFT 64
+#define LVM_HITTEST (LVM_FIRST+18)
+#define LVM_ENSUREVISIBLE (LVM_FIRST+19)
+#define LVM_SCROLL (LVM_FIRST+20)
+#define LVM_REDRAWITEMS (LVM_FIRST+21)
+#define LVA_DEFAULT 0
+#define LVA_ALIGNLEFT 1
+#define LVA_ALIGNTOP 2
+#define LVA_SNAPTOGRID 5
+#define LVM_ARRANGE (LVM_FIRST+22)
+#define LVM_EDITLABELA (LVM_FIRST+23)
+#define LVM_EDITLABELW (LVM_FIRST+118)
+#define LVM_GETEDITCONTROL (LVM_FIRST+24)
+#define LVCF_FMT 1
+#define LVCF_WIDTH 2
+#define LVCF_TEXT 4
+#define LVCF_SUBITEM 8
+#define LVCFMT_LEFT 0
+#define LVCFMT_RIGHT 1
+#define LVCFMT_CENTER 2
+#define LVCFMT_JUSTIFYMASK 3
+#define LVM_GETCOLUMNA (LVM_FIRST+25)
+#define LVM_GETCOLUMNW (LVM_FIRST+95)
+#define LVM_SETCOLUMNA (LVM_FIRST+26)
+#define LVM_SETCOLUMNW (LVM_FIRST+96)
+#define LVM_INSERTCOLUMNA (LVM_FIRST+27)
+#define LVM_INSERTCOLUMNW (LVM_FIRST+97)
+#define LVM_DELETECOLUMN (LVM_FIRST+28)
+#define LVM_GETCOLUMNWIDTH (LVM_FIRST+29)
+#define LVSCW_AUTOSIZE (-1)
+#define LVSCW_AUTOSIZE_USEHEADER (-2)
+#define LVM_SETCOLUMNWIDTH (LVM_FIRST+30)
+#define LVM_CREATEDRAGIMAGE (LVM_FIRST+33)
+#define LVM_GETVIEWRECT (LVM_FIRST+34)
+#define LVM_GETTEXTCOLOR (LVM_FIRST+35)
+#define LVM_SETTEXTCOLOR (LVM_FIRST+36)
+#define LVM_GETTEXTBKCOLOR (LVM_FIRST+37)
+#define LVM_SETTEXTBKCOLOR (LVM_FIRST+38)
+#define LVM_GETTOPINDEX (LVM_FIRST+39)
+#define LVM_GETCOUNTPERPAGE (LVM_FIRST+40)
+#define LVM_GETORIGIN (LVM_FIRST+41)
+#define LVM_GETORIGIN (LVM_FIRST+41)
+#define LVM_UPDATE (LVM_FIRST+42)
+#define LVM_SETITEMSTATE (LVM_FIRST+43)
+#define LVM_GETITEMSTATE (LVM_FIRST+44)
+#define LVM_GETITEMTEXTA (LVM_FIRST+45)
+#define LVM_GETITEMTEXTW (LVM_FIRST+115)
+#define LVM_SETITEMTEXTA (LVM_FIRST+46)
+#define LVM_SETITEMTEXTW (LVM_FIRST+116)
+#define LVM_SETITEMCOUNT (LVM_FIRST+47)
+#define LVM_SORTITEMS (LVM_FIRST+48)
+#define LVM_SETITEMPOSITION32 (LVM_FIRST+49)
+#define LVM_GETSELECTEDCOUNT (LVM_FIRST+50)
+#define LVM_GETITEMSPACING (LVM_FIRST+51)
+#define LVM_GETISEARCHSTRINGA (LVM_FIRST+52)
+#define LVM_GETISEARCHSTRINGW (LVM_FIRST+117)
+#define LVN_ITEMCHANGING LVN_FIRST
+#define LVN_ITEMCHANGED (LVN_FIRST-1)
+#define LVN_INSERTITEM (LVN_FIRST-2)
+#define LVN_DELETEITEM (LVN_FIRST-3)
+#define LVN_DELETEALLITEMS (LVN_FIRST-4)
+#define LVN_BEGINLABELEDITA (LVN_FIRST-5)
+#define LVN_BEGINLABELEDITW (LVN_FIRST-75)
+#define LVN_ENDLABELEDITA (LVN_FIRST-6)
+#define LVN_ENDLABELEDITW (LVN_FIRST-76)
+#define LVN_COLUMNCLICK (LVN_FIRST-8)
+#define LVN_BEGINDRAG (LVN_FIRST-9)
+#define LVN_BEGINRDRAG (LVN_FIRST-11)
+#define LVN_GETDISPINFOA (LVN_FIRST-50)
+#define LVN_GETDISPINFOW (LVN_FIRST-77)
+#define LVN_SETDISPINFOA (LVN_FIRST-51)
+#define LVN_SETDISPINFOW (LVN_FIRST-78)
+#define LVN_KEYDOWN (LVN_FIRST-55)
+#define TVS_HASBUTTONS 1
+#define TVS_HASLINES 2
+#define TVS_LINESATROOT 4
+#define TVS_EDITLABELS 8
+#define TVS_DISABLEDRAGDROP 16
+#define TVS_SHOWSELALWAYS 32
+#define TVIF_TEXT 1
+#define TVIF_IMAGE 2
+#define TVIF_PARAM 4
+#define TVIF_STATE 8
+#define TVIF_HANDLE 16
+#define TVIF_SELECTEDIMAGE 32
+#define TVIF_CHILDREN 64
+#define TVIS_FOCUSED 1
+#define TVIS_SELECTED 2
+#define TVIS_CUT 4
+#define TVIS_DROPHILITED 8
+#define TVIS_BOLD 16
+#define TVIS_EXPANDED 32
+#define TVIS_EXPANDEDONCE 64
+#define TVIS_OVERLAYMASK 0xF00
+#define TVIS_STATEIMAGEMASK 0xF000
+#define TVIS_USERMASK 0xF000
+#define I_CHILDRENCALLBACK (-1)
+#define TVI_ROOT ((HTREEITEM)0xFFFF0000)
+#define TVI_FIRST ((HTREEITEM)0xFFFF0001)
+#define TVI_LAST ((HTREEITEM)0xFFFF0002)
+#define TVI_SORT ((HTREEITEM)0xFFFF0003)
+#define TVSIL_NORMAL 0
+#define TVSIL_STATE 2
+#define TVM_INSERTITEMA TV_FIRST
+#define TVM_INSERTITEMW (TV_FIRST+50)
+#define TVM_DELETEITEM (TV_FIRST+1)
+#define TVM_EXPAND (TV_FIRST+2)
+#define TVM_GETITEMRECT (TV_FIRST+4)
+#define TVM_GETCOUNT (TV_FIRST+5)
+#define TVM_GETINDENT (TV_FIRST+6)
+#define TVM_SETINDENT (TV_FIRST+7)
+#define TVM_GETIMAGELIST (TV_FIRST+8)
+#define TVM_SETIMAGELIST (TV_FIRST+9)
+#define TVM_GETNEXTITEM (TV_FIRST+10)
+#define TVM_SELECTITEM (TV_FIRST+11)
+#define TVM_GETITEMA (TV_FIRST+12)
+#define TVM_GETITEMW (TV_FIRST+62)
+#define TVM_SETITEMA (TV_FIRST+13)
+#define TVM_SETITEMW (TV_FIRST+63)
+#define TVM_EDITLABELA (TV_FIRST+14)
+#define TVM_EDITLABELW (TV_FIRST+65)
+#define TVM_GETEDITCONTROL (TV_FIRST+15)
+#define TVM_GETVISIBLECOUNT (TV_FIRST+16)
+#define TVM_HITTEST (TV_FIRST+17)
+#define TVM_CREATEDRAGIMAGE (TV_FIRST+18)
+#define TVM_SORTCHILDREN (TV_FIRST+19)
+#define TVM_ENSUREVISIBLE (TV_FIRST+20)
+#define TVM_SORTCHILDRENCB (TV_FIRST+21)
+#define TVM_ENDEDITLABELNOW (TV_FIRST+22)
+#define TVM_GETISEARCHSTRINGA (TV_FIRST+23)
+#define TVM_GETISEARCHSTRINGW (TV_FIRST+64)
+#define TVE_COLLAPSE 1
+#define TVE_EXPAND 2
+#define TVE_TOGGLE 3
+#define TVE_COLLAPSERESET 0x8000
+#define TVC_UNKNOWN 0
+#define TVC_BYMOUSE 1
+#define TVC_BYKEYBOARD 2
+#define TVGN_ROOT 0
+#define TVGN_NEXT 1
+#define TVGN_PREVIOUS 2
+#define TVGN_PARENT 3
+#define TVGN_CHILD 4
+#define TVGN_FIRSTVISIBLE 5
+#define TVGN_NEXTVISIBLE 6
+#define TVGN_PREVIOUSVISIBLE 7
+#define TVGN_DROPHILITE 8
+#define TVGN_CARET 9
+#define TVN_SELCHANGINGA (TVN_FIRST-1)
+#define TVN_SELCHANGINGW (TVN_FIRST-50)
+#define TVN_SELCHANGEDA (TVN_FIRST-2)
+#define TVN_SELCHANGEDW (TVN_FIRST-51)
+#define TVN_GETDISPINFOA (TVN_FIRST-3)
+#define TVN_GETDISPINFOW (TVN_FIRST-52)
+#define TVN_SETDISPINFOA (TVN_FIRST-4)
+#define TVN_SETDISPINFOW (TVN_FIRST-53)
+#define TVN_ITEMEXPANDINGA (TVN_FIRST-5)
+#define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
+#define TVN_ITEMEXPANDEDA (TVN_FIRST-6)
+#define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
+#define TVN_BEGINDRAGA (TVN_FIRST-7)
+#define TVN_BEGINDRAGW (TVN_FIRST-56)
+#define TVN_BEGINRDRAGA (TVN_FIRST-8)
+#define TVN_BEGINRDRAGW (TVN_FIRST-57)
+#define TVN_DELETEITEMA (TVN_FIRST-9)
+#define TVN_DELETEITEMW (TVN_FIRST-58)
+#define TVN_BEGINLABELEDITA (TVN_FIRST-10)
+#define TVN_BEGINLABELEDITW (TVN_FIRST-59)
+#define TVN_ENDLABELEDITA (TVN_FIRST-11)
+#define TVN_ENDLABELEDITW (TVN_FIRST-60)
+#define TVN_KEYDOWN (TVN_FIRST-12)
+#define TVIF_DI_SETITEM 0x1000
+#define TVHT_NOWHERE 1
+#define TVHT_ONITEMICON 2
+#define TVHT_ONITEMLABEL 4
+#define TVHT_ONITEM (TVHT_ONITEMICON|TVHT_ONITEMLABEL|TVHT_ONITEMSTATEICON)
+#define TVHT_ONITEMINDENT 8
+#define TVHT_ONITEMBUTTON 16
+#define TVHT_ONITEMRIGHT 32
+#define TVHT_ONITEMSTATEICON 64
+#define TVHT_ABOVE 256
+#define TVHT_BELOW 512
+#define TVHT_TORIGHT 1024
+#define TVHT_TOLEFT 2048
+#define TCHT_NOWHERE 1
+#define TCHT_ONITEMICON 2
+#define TCHT_ONITEMLABEL 4
+#define TCHT_ONITEM (TCHT_ONITEMICON|TCHT_ONITEMLABEL)
+#define TCS_FORCEICONLEFT 16
+#define TCS_FORCELABELLEFT 32
+#define TCS_TABS 0
+#define TCS_BUTTONS 256
+#define TCS_SINGLELINE 0
+#define TCS_MULTILINE 512
+#define TCS_RIGHTJUSTIFY 0
+#define TCS_FIXEDWIDTH 1024
+#define TCS_RAGGEDRIGHT 2048
+#define TCS_FOCUSONBUTTONDOWN 0x1000
+#define TCS_OWNERDRAWFIXED 0x2000
+#define TCS_TOOLTIPS 0x4000
+#define TCS_FOCUSNEVER 0x8000
+#if (_WIN32_IE >= 0x0300)
+#define TCS_BOTTOM 2
+#define TCS_RIGHT 2
+#define TCS_VERTICAL 128
+#endif
+#define TCIF_TEXT 1
+#define TCIF_IMAGE 2
+#define TCIF_RTLREADING 4
+#define TCIF_PARAM 8
+#define TCM_FIRST 0x1300
+#define TCM_GETIMAGELIST (TCM_FIRST+2)
+#define TCM_SETIMAGELIST (TCM_FIRST+3)
+#define TCM_GETITEMCOUNT (TCM_FIRST+4)
+#define TCM_GETITEMA (TCM_FIRST+5)
+#define TCM_GETITEMW (TCM_FIRST+60)
+#define TCM_SETITEMA (TCM_FIRST+6)
+#define TCM_SETITEMW (TCM_FIRST+61)
+#define TCM_INSERTITEMA (TCM_FIRST+7)
+#define TCM_INSERTITEMW (TCM_FIRST+62)
+#define TCM_DELETEITEM (TCM_FIRST+8)
+#define TCM_DELETEALLITEMS (TCM_FIRST+9)
+#define TCM_GETITEMRECT (TCM_FIRST+10)
+#define TCM_GETCURSEL (TCM_FIRST+11)
+#define TCM_SETCURSEL (TCM_FIRST+12)
+#define TCM_HITTEST (TCM_FIRST+13)
+#define TCM_SETITEMEXTRA (TCM_FIRST+14)
+#define TCM_ADJUSTRECT (TCM_FIRST+40)
+#define TCM_SETITEMSIZE (TCM_FIRST+41)
+#define TCM_REMOVEIMAGE (TCM_FIRST+42)
+#define TCM_SETPADDING (TCM_FIRST+43)
+#define TCM_GETROWCOUNT (TCM_FIRST+44)
+#define TCM_GETTOOLTIPS (TCM_FIRST+45)
+#define TCM_SETTOOLTIPS (TCM_FIRST+46)
+#define TCM_GETCURFOCUS (TCM_FIRST+47)
+#define TCM_SETCURFOCUS (TCM_FIRST+48)
+#define TCN_KEYDOWN TCN_FIRST
+#define TCN_SELCHANGE (TCN_FIRST-1)
+#define TCN_SELCHANGING (TCN_FIRST-2)
+#define NM_OUTOFMEMORY (NM_FIRST-1)
+#define NM_CLICK (NM_FIRST-2)
+#define NM_DBLCLK (NM_FIRST-3)
+#define NM_RETURN (NM_FIRST-4)
+#define NM_RCLICK (NM_FIRST-5)
+#define NM_RDBLCLK (NM_FIRST-6)
+#define NM_SETFOCUS (NM_FIRST-7)
+#define NM_KILLFOCUS (NM_FIRST-8)
+#define NM_CUSTOMDRAW (NM_FIRST-12)
+#define NM_HOVER (NM_FIRST-13)
+#define NM_NCHITTEST (NM_FIRST-14)
+#define NM_KEYDOWN (NM_FIRST-15)
+#define NM_RELEASEDCAPTURE (NM_FIRST-16)
+#define NM_SETCURSOR (NM_FIRST-17)
+#define NM_CHAR (NM_FIRST-18)
+#define SBARS_SIZEGRIP 256
+#define CCM_SETBKCOLOR 8193
+#define CCM_SETCOLORSCHEME 8194
+#define CCM_GETCOLORSCHEME 8195
+#define CCM_GETDROPTARGET 8196
+#define CCM_SETUNICODEFORMAT 8197
+#define CCM_GETUNICODEFORMAT 8198
+#define ICC_LISTVIEW_CLASSES 1
+#define ICC_TREEVIEW_CLASSES 2
+#define ICC_TAB_CLASSES 8
+#define ICC_UPDOWN_CLASS 16
+#define ICC_PROGRESS_CLASS 32
+#define ICC_HOTKEY_CLASS 64
+#define ICC_ANIMATE_CLASS 128
+#define ICC_WIN95_CLASSES 255
+#define ICC_DATE_CLASSES 256
+#define ICC_USEREX_CLASSES 512
+#define ICC_COOL_CLASSES 1024
+#if (_WIN32_IE >= 0x0400)
+#define ICC_INTERNET_CLASSES 2048
+#define ICC_PAGESCROLLER_CLASS 4096
+#define ICC_NATIVEFNTCTL_CLASS 8192
+#define INFOTIPSIZE
+#endif /* _WIN32_IE */
+#define GDTR_MIN 1
+#define GDTR_MAX 2
+#define GMR_VISIBLE 0
+#define GMR_DAYSTATE 1
+#define GDT_ERROR -1
+#define GDT_VALID 0
+#define GDT_NONE 1
+#define DTS_UPDOWN 1
+#define DTS_SHOWNONE 2
+#define DTS_SHORTDATEFORMAT 0
+#define DTS_LONGDATEFORMAT 4
+#define DTS_TIMEFORMAT 9
+#define DTS_APPCANPARSE 16
+#define DTS_RIGHTALIGN 32
+#define MCS_DAYSTATE 1
+#define MCS_MULTISELECT 2
+#define MCS_WEEKNUMBERS 4
+#define MCS_NOTODAY 8
+#define DTM_GETSYSTEMTIME 0x1001
+#define DTM_SETSYSTEMTIME 0x1002
+#define DTM_GETRANGE 0x1003
+#define DTM_SETRANGE 0x1004
+#define DTM_SETFORMATA 0x1005
+#define DTM_SETFORMATW 0x1050
+#define DTM_SETMCCOLOR 0x1006
+#define DTM_GETMCCOLOR 0x1007
+#define DTM_GETMONTHCAL 0x1008
+#define DTM_SETMCFONT 0x1009
+#define DTM_GETMCFONT 0x100a
+#define DTN_USERSTRINGA (-758)
+#define DTN_USERSTRINGW (-745)
+#define DTN_WMKEYDOWNA (-757)
+#define DTN_WMKEYDOWNW (-744)
+#define DTN_FORMATA (-756)
+#define DTN_FORMATW (-743)
+#define DTN_FORMATQUERYA (-755)
+#define DTN_FORMATQUERYW (-742)
+#define DTN_DROPDOWN (-754)
+#define DTN_CLOSEUP (-753)
+#define DTN_DATETIMECHANGE (-759)
+#define MCM_GETCURSEL 0x1001
+#define MCM_SETCURSEL 0x1002
+#define MCM_GETMAXSELCOUNT 0x1003
+#define MCM_SETMAXSELCOUNT 0x1004
+#define MCM_GETSELRANGE 0x1005
+#define MCM_SETSELRANGE 0x1006
+#define MCM_GETMONTHRANGE 0x1007
+#define MCM_SETDAYSTATE 0x1008
+#define MCM_GETMINREQRECT 0x1009
+#define MCM_SETCOLOR 0x100a
+#define MCM_GETCOLOR 0x100b
+#define MCM_SETTODAY 0x100c
+#define MCM_GETTODAY 0x100d
+#define MCM_HITTEST 0x100e
+#define MCM_SETFIRSTDAYOFWEEK 0x100f
+#define MCM_GETFIRSTDAYOFWEEK 0x1010
+#define MCM_GETRANGE 0x1011
+#define MCM_SETRANGE 0x1012
+#define MCM_GETMONTHDELTA 0x1013
+#define MCM_SETMONTHDELTA 0x1014
+#define MCN_SELCHANGE (-749)
+#define MCN_GETDAYSTATE (-747)
+#define MCN_SELECT (-746)
+#define ODT_HEADER 100
+#define ODT_TAB 101
+#define ODT_LISTVIEW
+#define SB_SETBKCOLOR 0x2001
+#if (_WIN32_IE >= 0x0300)
+#define SB_ISSIMPLE 1038
+#endif
+#define RBS_TOOLTIPS 256
+#define RBS_VARHEIGHT 512
+#define RBS_BANDBORDERS 1024
+#define RBS_FIXEDORDER 2048
+#define RBIM_IMAGELIST 1
+#define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME
+#define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME
+#define RBBS_BREAK 1
+#define RBBS_FIXEDSIZE 2
+#define RBBS_CHILDEDGE 4
+#define RBBS_HIDDEN 8
+#define RBBS_NOVERT 16
+#define RBBS_FIXEDBMP 32
+#define RBBIM_STYLE 1
+#define RBBIM_COLORS 2
+#define RBBIM_TEXT 4
+#define RBBIM_IMAGE 8
+#define RBBIM_CHILD 16
+#define RBBIM_CHILDSIZE 32
+#define RBBIM_SIZE 64
+#define RBBIM_BACKGROUND 128
+#define RBBIM_ID 256
+#define RB_INSERTBANDA (WM_USER+1)
+#define RB_INSERTBANDW (WM_USER+10)
+#define RB_DELETEBAND (WM_USER+2)
+#define RB_GETBARINFO (WM_USER+3)
+#define RB_SETBARINFO (WM_USER+4)
+#define RB_GETBANDCOUNT (WM_USER+12)
+#define RB_GETROWCOUNT (WM_USER+13)
+#define RB_GETROWHEIGHT (WM_USER+14)
+#define RB_SETBANDINFOA (WM_USER+6)
+#define RB_SETBANDINFOW (WM_USER+11)
+#define RB_SETPARENT (WM_USER+7)
+#define RBN_HEIGHTCHANGE RBN_FIRST
+#if (_WIN32_IE >= 0x0300)
+#define LVN_ODCACHEHINT (LVN_FIRST-13)
+#define LVN_ODFINDITEMA (LVN_FIRST-52)
+#define LVN_ODFINDITEMW (LVN_FIRST-79)
+#define LVN_ITEMACTIVATE (LVN_FIRST-14)
+#define LVN_ODSTATECHANGED (LVN_FIRST-15)
+#ifdef UNICODE
+#define LVN_ODFINDITEM LVN_ODFINDITEMW
+#else
+#define LVN_ODFINDITEM LVN_ODFINDITEMA
+#endif
+#endif /* _WIN32_IE */
+#if (_WIN32_IE >= 0x0400)
+#define UDM_SETRANGE32 1135
+#define UDM_GETRANGE32 1136
+#define SB_SETICON 1039
+#define SB_SETTIPTEXTA 1040
+#define SB_SETTIPTEXTW 1041
+#define SB_GETTIPTEXTA 1042
+#define SB_GETTIPTEXTW 1043
+#define SB_GETICON 1044
+#define SB_SETUNICODEFORMAT 0x2005
+#define SB_GETUNICODEFORMAT 0x2006
+#define RBS_REGISTERDROP 4096
+#define RBS_AUTOSIZE 8192
+#define RBS_VERTICALGRIPPER 16384
+#define RBS_DBLCLKTOGGLE 32768
+#define RBBS_VARIABLEHEIGHT 64
+#define RBBS_GRIPPERALWAYS 128
+#define RBBS_NOGRIPPER 256
+#define RBBIM_IDEALSIZE 512
+#define RBBIM_LPARAM 1024
+#define RBBIM_HEADERSIZE 2048
+#define RB_HITTEST (WM_USER+8)
+#define RB_GETRECT (WM_USER+9)
+#define RB_IDTOINDEX (WM_USER+16)
+#define RB_GETTOOLTIPS (WM_USER+17)
+#define RB_SETTOOLTIPS (WM_USER+18)
+#define RB_SETBKCOLOR (WM_USER+19)
+#define RB_GETBKCOLOR (WM_USER+20)
+#define RB_SETTEXTCOLOR (WM_USER+21)
+#define RB_GETTEXTCOLOR (WM_USER+22)
+#define RB_SIZETORECT (WM_USER+23)
+#define RB_BEGINDRAG (WM_USER+24)
+#define RB_ENDDRAG (WM_USER+25)
+#define RB_DRAGMOVE (WM_USER+26)
+#define RB_GETBARHEIGHT (WM_USER+27)
+#define RB_GETBANDINFOW (WM_USER+28)
+#define RB_GETBANDINFOA (WM_USER+29)
+#define RB_MINIMIZEBAND (WM_USER+30)
+#define RB_MAXIMIZEBAND (WM_USER+31)
+#define RB_GETDROPTARGET CCM_GETDROPTARGET
+#define RB_GETBANDBORDERS (WM_USER+34)
+#define RB_SHOWBAND (WM_USER+35)
+#define RB_SETPALETTE (WM_USER+37)
+#define RB_GETPALETTE (WM_USER+38)
+#define RB_MOVEBAND (WM_USER+39)
+#define RB_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+#define RB_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+#define RBN_GETOBJECT (RBN_FIRST-1)
+#define RBN_LAYOUTCHANGED (RBN_FIRST-2)
+#define RBN_AUTOSIZE (RBN_FIRST-3)
+#define RBN_BEGINDRAG (RBN_FIRST-4)
+#define RBN_ENDDRAG (RBN_FIRST-5)
+#define RBN_DELETINGBAND (RBN_FIRST-6)
+#define RBN_DELETEDBAND (RBN_FIRST-7)
+#define RBN_CHILDSIZE (RBN_FIRST-8)
+#define RBNM_ID 1
+#define RBNM_STYLE 2
+#define RBNM_LPARAM 4
+#define RBHT_NOWHERE 1
+#define RBHT_CAPTION 2
+#define RBHT_CLIENT 3
+#define RBHT_GRABBER 4
+#ifdef UNICODE
+#define SB_SETTIPTEXT SB_SETTIPTEXTW
+#define SB_GETTIPTEXT SB_GETTIPTEXTW
+#define RB_GETBANDINFO RB_GETBANDINFOW
+#else
+#define SB_SETTIPTEXT SB_SETTIPTEXTA
+#define SB_GETTIPTEXT SB_GETTIPTEXTA
+#define RB_GETBANDINFO RB_GETBANDINFOA
+#endif
+#else
+#define RB_GETBANDINFO (WM_USER+5)
+#endif /* _WIN32_IE >= 0x0400 */
+
+#ifndef RC_INVOKED
+typedef struct _COLORMAP {
+ COLORREF from;
+ COLORREF to;
+} COLORMAP,*LPCOLORMAP;
+typedef struct {
+ UINT uNotification;
+ HWND hWnd;
+ POINT ptCursor;
+} DRAGLISTINFO,*LPDRAGLISTINFO;
+typedef struct _TBBUTTON {
+ int iBitmap;
+ int idCommand;
+ BYTE fsState;
+ BYTE fsStyle;
+ BYTE bReserved[2];
+ DWORD dwData;
+ int iString;
+} TBBUTTON,*PTBBUTTON,*LPTBBUTTON;
+typedef const TBBUTTON *LPCTBBUTTON;
+typedef struct {
+ NMHDR hdr;
+ int iItem;
+ TBBUTTON tbButton;
+ int cchText;
+ LPTSTR pszText;
+} TBNOTIFY,*LPTBNOTIFY;
+typedef struct {
+ HKEY hkr;
+ LPCTSTR pszSubKey;
+ LPCTSTR pszValueName;
+} TBSAVEPARAMS;
+typedef struct _IMAGEINFO {
+ HBITMAP hbmImage;
+ HBITMAP hbmMask;
+ int Unused1;
+ int Unused2;
+ RECT rcImage;
+} IMAGEINFO;
+DECLARE_HANDLE(HIMAGELIST);
+typedef struct _HD_ITEMA {
+ UINT mask;
+ int cxy;
+ LPSTR pszText;
+ HBITMAP hbm;
+ int cchTextMax;
+ int fmt;
+ LPARAM lParam;
+} HD_ITEMA;
+typedef struct _HD_ITEMW {
+ UINT mask;
+ int cxy;
+ LPWSTR pszText;
+ HBITMAP hbm;
+ int cchTextMax;
+ int fmt;
+ LPARAM lParam;
+} HD_ITEMW;
+typedef struct _HD_LAYOUT {
+ RECT *prc;
+ WINDOWPOS *pwpos;
+} HD_LAYOUT;
+typedef struct _HD_HITTESTINFO {
+ POINT pt;
+ UINT flags;
+ int iItem;
+} HD_HITTESTINFO;
+typedef struct _HD_NOTIFYA {
+ NMHDR hdr;
+ int iItem;
+ int iButton;
+ HD_ITEMA *pitem;
+} HD_NOTIFYA;
+typedef struct _HD_NOTIFYW {
+ NMHDR hdr;
+ int iItem;
+ int iButton;
+ HD_ITEMW *pitem;
+} HD_NOTIFYW;
+/* FIXME: NMHEADER structure (base for all events of the comctl controls)
+ is the same as HD_NOTIFY depending on the value of _WIN32_IE macro.
+ I'm defining both for now. */
+typedef struct _NMHEADERA {
+ NMHDR hdr;
+ int iItem;
+ int iButton;
+ HD_ITEMA* pitem;
+} NMHEADERA, *LPNMHEADERA;
+
+typedef struct _NMHEADERW {
+ NMHDR hdr;
+ int iItem;
+ int iButton;
+ HD_ITEMW* pitem;
+} NMHEADERW, *LPNMHEADERW;
+#ifdef UNICODE
+#define NMHEADER NMHEADERW
+#define LPNMHEADER LPNMHEADERW
+#else
+#define NMHEADER NMHEADERA
+#define LPNMHEADER LPNMHEADERA
+#endif
+/* End FIXME. */
+typedef struct tagTBADDBITMAP {
+ HINSTANCE hInst;
+ UINT nID;
+} TBADDBITMAP,*LPTBADDBITMAP;
+typedef struct tagTBSAVEPARAMSA {
+ HKEY hkr;
+ LPCSTR pszSubKey;
+ LPCSTR pszValueName;
+} TBSAVEPARAMSA;
+typedef struct tagTBSAVEPARAMSW {
+ HKEY hkr;
+ LPCWSTR pszSubKey;
+ LPCWSTR pszValueName;
+} TBSAVEPARAMSW;
+typedef struct {
+ HINSTANCE hInstOld;
+ UINT nIDOld;
+ HINSTANCE hInstNew;
+ UINT nIDNew;
+ int nButtons;
+} TBREPLACEBITMAP,*LPTBREPLACEBITMAP;
+typedef struct tagTBNOTIFYA {
+ NMHDR hdr;
+ int iItem;
+ TBBUTTON tbButton;
+ int cchText;
+ LPSTR pszText;
+} TBNOTIFYA,*LPTBNOTIFYA;
+typedef struct tagTBNOTIFYW {
+ NMHDR hdr;
+ int iItem;
+ TBBUTTON tbButton;
+ int cchText;
+ LPWSTR pszText;
+} TBNOTIFYW,*LPTBNOTIFYW;
+typedef struct tagTOOLINFOA {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+ UINT uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPSTR lpszText;
+} TOOLINFOA,*PTOOLINFOA,*LPTOOLINFOA;
+typedef struct tagTOOLINFOW {
+ UINT cbSize;
+ UINT uFlags;
+ HWND hwnd;
+ UINT uId;
+ RECT rect;
+ HINSTANCE hinst;
+ LPWSTR lpszText;
+} TOOLINFOW,*PTOOLINFOW,*LPTOOLINFOW;
+typedef struct _TT_HITTESTINFOA {
+ HWND hwnd;
+ POINT pt;
+ TOOLINFOA ti;
+} TTHITTESTINFOA,*LPHITTESTINFOA;
+typedef struct _TT_HITTESTINFOW {
+ HWND hwnd;
+ POINT pt;
+ TOOLINFOW ti;
+} TTHITTESTINFOW,*LPHITTESTINFOW;
+typedef struct tagTOOLTIPTEXTA {
+ NMHDR hdr;
+ LPSTR lpszText;
+ char szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+} TOOLTIPTEXTA,*LPTOOLTIPTEXTA;
+typedef struct tagTOOLTIPTEXTW {
+ NMHDR hdr;
+ LPWSTR lpszText;
+ WCHAR szText[80];
+ HINSTANCE hinst;
+ UINT uFlags;
+} TOOLTIPTEXTW,*LPTOOLTIPTEXTW;
+typedef struct _UDACCEL {
+ UINT nSec;
+ UINT nInc;
+} UDACCEL,*LPUDACCEL;
+typedef struct _NM_UPDOWN {
+ NMHDR hdr;
+ int iPos;
+ int iDelta;
+} NM_UPDOWN,*LPNM_UPDOWN;
+typedef struct _LV_ITEMA {
+ UINT mask;
+ int iItem;
+ int iSubItem;
+ UINT state;
+ UINT stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} LV_ITEMA;
+typedef struct _LV_ITEMW {
+ UINT mask;
+ int iItem;
+ int iSubItem;
+ UINT state;
+ UINT stateMask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} LV_ITEMW;
+typedef struct _LV_FINDINFOA {
+ UINT flags;
+ LPCSTR psz;
+ LPARAM lParam;
+ POINT pt;
+ UINT vkDirection;
+} LV_FINDINFOA;
+typedef struct _LV_FINDINFOW {
+ UINT flags;
+ LPCWSTR psz;
+ LPARAM lParam;
+ POINT pt;
+ UINT vkDirection;
+} LV_FINDINFOW;
+typedef struct _LV_HITTESTINFO {
+ POINT pt;
+ UINT flags;
+ int iItem;
+} LV_HITTESTINFO;
+typedef struct _LV_COLUMNA {
+ UINT mask;
+ int fmt;
+ int cx;
+ LPSTR pszText;
+ int cchTextMax;
+ int iSubItem;
+} LV_COLUMNA;
+typedef struct _LV_COLUMNW {
+ UINT mask;
+ int fmt;
+ int cx;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iSubItem;
+} LV_COLUMNW;
+typedef int(CALLBACK *PFNLVCOMPARE)(LPARAM,LPARAM,LPARAM);
+typedef struct _NM_LISTVIEW {
+ NMHDR hdr;
+ int iItem;
+ int iSubItem;
+ UINT uNewState;
+ UINT uOldState;
+ UINT uChanged;
+ POINT ptAction;
+ LPARAM lParam;
+} NM_LISTVIEW,*LPNM_LISTVIEW;
+typedef struct _LV_DISPINFOA {
+ NMHDR hdr;
+ LV_ITEMA item;
+} LV_DISPINFOA;
+typedef struct _LV_DISPINFOW {
+ NMHDR hdr;
+ LV_ITEMW item;
+} LV_DISPINFOW;
+typedef struct _LV_KEYDOWN {
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} LV_KEYDOWN;
+DECLARE_HANDLE(HTREEITEM);
+typedef struct _TV_ITEMA {
+ UINT mask;
+ HTREEITEM hItem;
+ UINT state;
+ UINT stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+} TV_ITEMA,*LPTV_ITEMA;
+typedef struct _TV_ITEMW {
+ UINT mask;
+ HTREEITEM hItem;
+ UINT state;
+ UINT stateMask;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+} TV_ITEMW,*LPTV_ITEMW;
+typedef struct _TV_INSERTSTRUCTA {
+ HTREEITEM hParent;
+ HTREEITEM hInsertAfter;
+ TV_ITEMA item;
+} TV_INSERTSTRUCTA,*LPTV_INSERTSTRUCTA;
+typedef struct _TV_INSERTSTRUCTW {
+ HTREEITEM hParent;
+ HTREEITEM hInsertAfter;
+ TV_ITEMW item;
+} TV_INSERTSTRUCTW,*LPTV_INSERTSTRUCTW;
+typedef struct _TV_HITTESTINFO {
+ POINT pt;
+ UINT flags;
+ HTREEITEM hItem;
+} TV_HITTESTINFO,*LPTV_HITTESTINFO;
+typedef int(CALLBACK *PFNTVCOMPARE)(LPARAM,LPARAM,LPARAM);
+typedef struct _TV_SORTCB {
+ HTREEITEM hParent;
+ PFNTVCOMPARE lpfnCompare;
+ LPARAM lParam;
+} TV_SORTCB,*LPTV_SORTCB;
+typedef struct _NM_TREEVIEWA {
+ NMHDR hdr;
+ UINT action;
+ TV_ITEMA itemOld;
+ TV_ITEMA itemNew;
+ POINT ptDrag;
+} NM_TREEVIEWA,*LPNM_TREEVIEWA;
+typedef struct _NM_TREEVIEWW {
+ NMHDR hdr;
+ UINT action;
+ TV_ITEMW itemOld;
+ TV_ITEMW itemNew;
+ POINT ptDrag;
+} NM_TREEVIEWW,*LPNM_TREEVIEWW;
+typedef struct _TV_DISPINFOA {
+ NMHDR hdr;
+ TV_ITEMA item;
+} TV_DISPINFOA;
+typedef struct _TV_DISPINFOW {
+ NMHDR hdr;
+ TV_ITEMW item;
+} TV_DISPINFOW;
+typedef struct _TV_KEYDOWN {
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} TV_KEYDOWN;
+typedef struct _TC_ITEMHEADERA {
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+} TC_ITEMHEADERA;
+typedef struct _TC_ITEMHEADERW {
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+} TC_ITEMHEADERW;
+typedef struct _TC_ITEMA {
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} TC_ITEMA;
+typedef struct _TC_ITEMW {
+ UINT mask;
+ UINT lpReserved1;
+ UINT lpReserved2;
+ LPWSTR pszText;
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} TC_ITEMW;
+typedef struct _TC_HITTESTINFO {
+ POINT pt;
+ UINT flags;
+} TC_HITTESTINFO,*LPTC_HITTESTINFO;
+typedef struct _TC_KEYDOWN {
+ NMHDR hdr;
+ WORD wVKey;
+ UINT flags;
+} TC_KEYDOWN;
+typedef struct tagINITCOMMONCONTROLSEX {
+ DWORD dwSize;
+ DWORD dwICC;
+} INITCOMMONCONTROLSEX,*LPINITCOMMONCONTROLSEX;
+typedef struct tagPBRANGE {
+ int iLow;
+ int iHigh;
+} PBRANGE,*PPBRANGE;
+typedef struct tagCOLORSCHEME {
+ DWORD dwSize;
+ COLORREF clrBtnHighlight;
+ COLORREF clrBtnShadow;
+} COLORSCHEME,*LPCOLORSCHEME;
+typedef struct tagTCITEM {
+ UINT mask;
+#if (_WIN32_IE >= 0x0300)
+ DWORD dwState;
+ DWORD dwStateMask;
+#else
+ UINT lpReserved1;
+ UINT lpReserved2;
+#endif
+#ifdef UNICODE
+ LPWSTR pszText;
+#else
+ LPSTR pszText;
+#endif
+ int cchTextMax;
+ int iImage;
+ LPARAM lParam;
+} TCITEM,*LPTCITEM;
+typedef struct tagMCHITTESTINFO {
+ UINT cbSize;
+ POINT pt;
+ UINT uHit;
+ SYSTEMTIME st;
+}MCHITTESTINFO, *PMCHITTESTINFO;
+typedef DWORD MONTHDAYSTATE;
+typedef MONTHDAYSTATE *LPMONTHDAYSTATE;
+typedef struct tagNMDAYSTATE {
+ NMHDR nmhdr;
+ SYSTEMTIME stStart;
+ int cDayState;
+ LPMONTHDAYSTATE prgDayState;
+}NMDAYSTATE,*LPNMDAYSTATE;
+typedef struct tagREBARINFO {
+ UINT cbSize;
+ UINT fMask;
+ HIMAGELIST himl;
+} REBARINFO,*LPREBARINFO;
+typedef struct tagREBARBANDINFOA {
+ UINT cbSize;
+ UINT fMask;
+ UINT fStyle;
+ COLORREF clrFore;
+ COLORREF clrBack;
+ LPSTR lpText;
+ UINT cch;
+ int iImage;
+ HWND hwndChild;
+ UINT cxMinChild;
+ UINT cyMinChild;
+ UINT cx;
+ HBITMAP hbmBack;
+ UINT wID;
+#if (_WIN32_IE >= 0x0400)
+ UINT cyChild;
+ UINT cyMaxChild;
+ UINT cyIntegral;
+ UINT cxIdeal;
+ LPARAM lParam;
+ UINT cxHeader;
+#endif
+} REBARBANDINFOA,*LPREBARBANDINFOA;
+typedef struct tagREBARBANDINFOW {
+ UINT cbSize;
+ UINT fMask;
+ UINT fStyle;
+ COLORREF clrFore;
+ COLORREF clrBack;
+ LPWSTR lpText;
+ UINT cch;
+ int iImage;
+ HWND hwndChild;
+ UINT cxMinChild;
+ UINT cyMinChild;
+ UINT cx;
+ HBITMAP hbmBack;
+ UINT wID;
+#if (_WIN32_IE >= 0x0400)
+ UINT cyChild;
+ UINT cyMaxChild;
+ UINT cyIntegral;
+ UINT cxIdeal;
+ LPARAM lParam;
+ UINT cxHeader;
+#endif
+} REBARBANDINFOW,*LPREBARBANDINFOW;
+typedef REBARBANDINFOA const *LPCREBARBANDINFOA;
+typedef REBARBANDINFOW const *LPCREBARBANDINFOW;
+#define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA,wID)
+#define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID)
+
+#if (_WIN32_IE >= 0x0300)
+typedef struct tagTCHITTESTINFO {
+ POINT pt;
+ UINT flags;
+} TCHITTESTINFO,*LPTCHITTESTINFO;
+typedef struct tagIMAGELISTDRAWPARAMS {
+ DWORD cbSize;
+ HIMAGELIST himl;
+ int i;
+ HDC hdcDst;
+ int x;
+ int y;
+ int cx;
+ int cy;
+ int xBitmap;
+ int yBitmap;
+ COLORREF rgbBk;
+ COLORREF rgbFg;
+ UINT fStyle;
+ DWORD dwRop;
+} IMAGELISTDRAWPARAMS,*LPIMAGELISTDRAWPARAMS;
+#elif (_WIN32_IE >= 0x0400)
+typedef struct tagNMREBARCHILDSIZE {
+ NMHDR hdr;
+ UINT uBand;
+ UINT wID;
+ RECT rcChild;
+ RECT rcBand;
+} NMREBARCHILDSIZE,*LPNMREBARCHILDSIZE;
+typedef struct tagNMREBAR {
+ NMHDR hdr;
+ DWORD dwMask;
+ UINT uBand;
+ UINT fStyle;
+ UINT wID;
+ LPARAM lParam;
+} NMREBAR,*LPNMREBAR;
+typedef struct tagNMRBAUTOSIZE {
+ NMHDR hdr;
+ BOOL fChanged;
+ RECT rcTarget;
+ RECT rcActual;
+} NMRBAUTOSIZE,*LPNMRBAUTOSIZE;
+typedef struct _RB_HITTESTINFO {
+ POINT pt;
+ UINT flags;
+ int iBand;
+} RBHITTESTINFO,*LPRBHITTESTINFO;
+#endif
+
+#define INDEXTOOVERLAYMASK(i) ((i)<<8)
+#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12)
+#define HANDLE_WM_NOTIFY(h,w,l,f) (f)((h),(int)(w),(NMHDR*)(l))
+#define FORWARD_WM_NOTIFY(h,i,p,f) (LRESULT)(f)((h),WM_NOTIFY,(WPARAM)(int)(i),(LPARAM)(NMHDR*)(p))
+#define CCSIZEOF_STRUCT(n,m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m))
+#define Animate_Create(w,i,s,hI) CreateWindow(ANIMATE_CLASS,NULL,s,0,0,0,0,w,(HMENU)(i),hI,NULL)
+#define Animate_Open(w,f) (BOOL)SendMessage(w,ACM_OPEN,0,(LPARAM)f)
+#define Animate_Play(w,f,t,r) (BOOL)SendMessage(w,ACM_PLAY,(r),(LPARAM)MAKELONG(f,t))
+#define Animate_Stop(w) (BOOL)SendMessage(w,ACM_STOP,0,0)
+#define Animate_Close(w) Animate_Open(w,NULL)
+#define Animate_Seek(w,f) Animate_Play(w,f,f,1)
+HBITMAP WINAPI CreateMappedBitmap(HINSTANCE,int,UINT,LPCOLORMAP,int);
+HWND WINAPI CreateStatusWindowA(LONG,LPCSTR,HWND,UINT);
+HWND WINAPI CreateStatusWindowW(LONG,LPCWSTR,HWND,UINT);
+HWND WINAPI CreateToolbarEx(HWND,DWORD,UINT,int,HINSTANCE,UINT,LPCTBBUTTON,int,int,int,int,int,UINT);
+HWND WINAPI CreateUpDownControl(DWORD,int,int,int,int,HWND,int,HINSTANCE,HWND,int,int,int);
+#define DateTime_GetMonthCal(hwnd) SendMessage(hwnd, DTM_GETMONTHCAL, 0, 0)
+#define DateTime_GetMonthCalColor(hwnd, icolor) SendMessage(hwnd, DTM_GETMONTHCAL, (WPARAM)icolor,0)
+#define DateTime_GetMonthCalFont(hwnd) SendMessage(hwnd,DTM_GETMCFONT,0,0)
+#define DateTime_GetRange(hwnd,lpsystimearray) SendMessage(hwnd,DTM_GETRANGE,0,(LPARAM)lpsystimearray)
+#define DateTime_GetSystemTime(hwnd,lpsystime) SendMessage(hwnd,DTM_GETSYSTEMTIME,0,(LPARAM)lpsystime)
+#define DateTime_SetFormat(hwnd,lpszformat) SendMessage(hwnd,DTM_SETFORMAT,0,(LPARAM)lpszformat)
+#define DateTime_SetMonthCalColor(hwnd,icolor,clr) SendMessage(hwnd,DTM_SETMCCOLOR,(WPARAM)icolor,(LPARAM)clr)
+#define DateTime_SetMonthCalFont(hwnd,hfont,lparam) SendMessage(hwnd,DTM_SETMCFONT,(WPARAM)hfont,(LPARAM)lparam)
+#define DateTime_SetRange(hwnd,flags,lpsystimearray) SendMessage(hwnd,DTM_SETRANGE,(WPARAM)flags,(LPARAM)lpsystimearray)
+#define DateTime_SetSystemTime(hwnd,flag,lpsystime) SendMessage(hwnd,DTM_SETSYSTEMTIME,(WPARAM)flag,(LPARAM)lpsystime)
+void WINAPI DrawInsert(HWND,HWND,int);
+void WINAPI DrawStatusTextA(HDC,LPRECT,LPCSTR,UINT);
+void WINAPI DrawStatusTextW(HDC,LPRECT,LPCWSTR,UINT);
+void WINAPI GetEffectiveClientRect(HWND,LPRECT,LPINT);
+#define Header_GetItemCount(w) (int)SendMessage((w),HDM_GETITEMCOUNT,0,0)
+#define Header_InsertItem(w,i,phdi) (int)SendMessage((w),HDM_INSERTITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi))
+#define Header_DeleteItem(w,i) (BOOL)SendMessage((w),HDM_DELETEITEM,(WPARAM)(int)(i),0)
+#define Header_GetItem(w,i,phdi) (BOOL)SendMessage((w),HDM_GETITEM,(WPARAM)(int)(i),(LPARAM)(HD_ITEM*)(phdi))
+#define Header_SetItem(w,i,phdi) (BOOL)SendMessage((w),HDM_SETITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi))
+#define Header_Layout(w,l) (BOOL)SendMessage((w),HDM_LAYOUT,0,(LPARAM)(HD_LAYOUT*)(l))
+int WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP);
+#define ImageList_AddIcon(l,i) ImageList_ReplaceIcon(l,-1,i)
+int WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF);
+BOOL WINAPI ImageList_BeginDrag(HIMAGELIST,int,int,int);
+HIMAGELIST WINAPI ImageList_Create(int,int,UINT,int,int);
+BOOL WINAPI ImageList_Destroy(HIMAGELIST);
+BOOL WINAPI ImageList_DragEnter(HWND,int,int);
+BOOL WINAPI ImageList_DragLeave(HWND);
+BOOL WINAPI ImageList_DragMove(int,int);
+BOOL WINAPI ImageList_DragShowNolock(BOOL);
+BOOL WINAPI ImageList_Draw(HIMAGELIST,int,HDC,int,int,UINT);
+BOOL WINAPI ImageList_DrawEx(HIMAGELIST,int,HDC,int,int,int,int,COLORREF,COLORREF,UINT);
+void WINAPI ImageList_EndDrag(VOID);
+#define ImageList_ExtractIcon(h,l,i) ImageList_GetIcon(l,i,0)
+COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST);
+HIMAGELIST WINAPI ImageList_GetDragImage(LPPOINT,LPPOINT);
+HICON WINAPI ImageList_GetIcon(HIMAGELIST,int,UINT);
+BOOL WINAPI ImageList_GetIconSize(HIMAGELIST,int*,int*);
+int WINAPI ImageList_GetImageCount(HIMAGELIST);
+BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST,int,IMAGEINFO*);
+#define ImageList_LoadBitmap(h,l,x,G,M) ImageList_LoadImage(h,l,x,G,M,IMAGE_BITMAP,0)
+HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,int,int,COLORREF,UINT,UINT);
+HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,int,int,COLORREF,UINT,UINT);
+HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,int,HIMAGELIST,int,int,int);
+BOOL WINAPI ImageList_Remove(HIMAGELIST,int);
+#define ImageList_RemoveAll(l) ImageList_Remove(l,-1)
+BOOL WINAPI ImageList_Replace(HIMAGELIST,int,HBITMAP,HBITMAP);
+int WINAPI ImageList_ReplaceIcon(HIMAGELIST,int,HICON);
+COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF);
+BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST,int,int,int);
+BOOL WINAPI ImageList_SetIconSize(HIMAGELIST,int,int);
+BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST,int,int);
+#ifdef _OBJIDL_H
+HIMAGELIST WINAPI ImageList_Read(LPSTREAM);
+BOOL WINAPI ImageList_Write(HIMAGELIST,LPSTREAM);
+#endif
+void WINAPI InitCommonControls(void);
+BOOL WINAPI InitCommonControlsEx(LPINITCOMMONCONTROLSEX);
+WINBOOL WINAPI ImageList_DragShowNolock(BOOL);
+int WINAPI LBItemFromPt(HWND,POINT,BOOL);
+#define ListView_GetBkColor(w) (COLORREF)SendMessage((w),LVM_GETBKCOLOR,0,0)
+#define ListView_GetImageList(w,i) (HIMAGELIST)SendMessage((w),LVM_GETIMAGELIST,(i),0)
+#define ListView_GetItemCount(w) (int)SendMessage((w),LVM_GETITEMCOUNT,0,0)
+#define ListView_GetItem(w,i) (BOOL)SendMessage((w),LVM_GETITEM,0,(LPARAM)(i))
+#define ListView_SetBkColor(w,c) (BOOL)SendMessage((w),LVM_SETBKCOLOR,0,(LPARAM)c)
+#define ListView_SetImageList(w,h,i) (HIMAGELIST)(UINT)SendMessage((w),LVM_SETIMAGELIST,(i),(LPARAM)(h))
+#define ListView_SetItem(w,i) (BOOL)SendMessage((w),LVM_SETITEM,0,(LPARAM)(const LV_ITEM*)(i))
+#define ListView_InsertItem(w,i) (int)SendMessage((w),LVM_INSERTITEM,0,(LPARAM)(const LV_ITEM*)(i))
+#define ListView_DeleteItem(w,i) (BOOL)SendMessage((w),LVM_DELETEITEM,i,0)
+#define ListView_DeleteAllItems(w) (BOOL)SendMessage((w),LVM_DELETEALLITEMS,0,0)
+#define ListView_GetCallbackMask(w) (BOOL)SendMessage((w),LVM_GETCALLBACKMASK,0,0)
+#define ListView_SetCallbackMask(w,m) (BOOL)SendMessage((w),LVM_SETCALLBACKMASK,m,0)
+#define ListView_GetNextItem(w,i,f) (int)SendMessage((w),LVM_GETNEXTITEM,i,MAKELPARAM((f),0))
+#define ListView_FindItem(w,i,p) (int)SendMessage((w), LVM_FINDITEM,i,(LPARAM)(const LV_FINDINFO*)(p))
+#define ListView_GetItemRect(w,i,p,c) (BOOL)SendMessage((w),LVM_GETITEMRECT,i,((p)?(((LPRECT)(p))->left=(c),(LPARAM)(LPRECT)(p)):0))
+#define ListView_SetItemPosition(w,i,x,y) (BOOL)SendMessage((w),LVM_SETITEMPOSITION,i,MAKELPARAM(x,y))
+#define ListView_GetItemPosition(w,i,p) (BOOL)SendMessage((w),LVM_GETITEMPOSITION,i,(LPARAM)p)
+#define ListView_GetItemSpacing(w,f) (DWORD)SendMessage((w),LVM_GETITEMSPACING,f,0)
+#define ListView_GetStringWidth(w,s) (int)SendMessage((w),LVM_GETSTRINGWIDTH,0,(LPARAM)s)
+#define ListView_HitTest(w,p) (int)SendMessage((w),LVM_HITTEST,0,(LPARAM)(LV_HITTESTINFO*)(p))
+#define ListView_EnsureVisible(w,i,f) (BOOL)SendMessage((w),LVM_ENSUREVISIBLE,i,MAKELPARAM((f),0))
+#define ListView_Scroll(w,dx,dy) (BOOL)SendMessage((w),LVM_SCROLL,dx,dy)
+#define ListView_RedrawItems(w,f,l) (BOOL)SendMessage((w),LVM_REDRAWITEMS,f,l)
+#define ListView_Arrange(w,c) (BOOL)SendMessage((w),LVM_ARRANGE,c,0)
+#define ListView_EditLabel(w,i) (HWND)SendMessage((w),LVM_EDITLABEL,i,0)
+#define ListView_GetEditControl(w) (HWND)SendMessage((w),LVM_GETEDITCONTROL,0,0)
+#define ListView_GetColumn(w,i,p) (BOOL)SendMessage((w),LVM_GETCOLUMN,i,(LPARAM)(LV_COLUMN*)(p))
+#define ListView_SetColumn(w,i,p) (BOOL)SendMessage((w),LVM_SETCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p))
+#define ListView_InsertColumn(w,i,p) (int)SendMessage((w),LVM_INSERTCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p))
+#define ListView_DeleteColumn(w,i) (BOOL)SendMessage((w),LVM_DELETECOLUMN,i,0)
+#define ListView_GetColumnWidth(w,i) (int)SendMessage((w),LVM_GETCOLUMNWIDTH,i,0)
+#define ListView_SetColumnWidth(w,i,x) (BOOL)SendMessage((w),LVM_SETCOLUMNWIDTH,i,MAKELPARAM((x),0))
+#define ListView_CreateDragImage(w,i,p) (HIMAGELIST)SendMessage((w),LVM_CREATEDRAGIMAGE,i,(LPARAM)(LPPOINT)(p))
+#define ListView_GetViewRect(w,p) (BOOL)SendMessage((w),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(p))
+#define ListView_GetTextColor(w) (COLORREF)SendMessage((w),LVM_GETTEXTCOLOR,0,0)
+#define ListView_SetTextColor(w,c) (BOOL)SendMessage((w),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(c))
+#define ListView_GetTextBkColor(w) (COLORREF)SendMessage((w),LVM_GETTEXTBKCOLOR,0,0)
+#define ListView_SetTextBkColor(w,c) (BOOL)SendMessage((w),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(c))
+#define ListView_GetTopIndex(w) (int)SendMessage((w),LVM_GETTOPINDEX,0,0)
+#define ListView_GetCountPerPage(w) (int)SendMessage((w),LVM_GETCOUNTPERPAGE,0,0)
+#define ListView_GetOrigin(w,p) (BOOL)SendMessage((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p))
+#define ListView_GetOrigin(w,p) (BOOL)SendMessage((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p))
+#define ListView_Update(w,i) (BOOL)SendMessage((w),LVM_UPDATE,i,0)
+#define ListView_SetItemState(w,i,d,m) \
+{ \
+ LV_ITEM _lvi;\
+ _lvi.stateMask=m;\
+ _lvi.state=d;\
+ SendMessage((w),LVM_SETITEMSTATE,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_GetItemState(w,i,m) (UINT)SendMessage((w),LVM_GETITEMSTATE,i,m)
+#define ListView_GetItemText(w,i,iS,s,n) \
+{ \
+ LV_ITEM _lvi;\
+ _lvi.iSubItem=iS;\
+ _lvi.cchTextMax=n;\
+ _lvi.pszText=s;\
+ SendMessage((w),LVM_GETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_SetItemText(w,i,iS,s) \
+{ \
+ LV_ITEM _lvi;\
+ _lvi.iSubItem=iS;\
+ _lvi.pszText=s;\
+ SendMessage((w),LVM_SETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_SetItemCount(w,n) SendMessage((w),LVM_SETITEMCOUNT,n,0)
+#define ListView_SortItems(w,f,l) (BOOL)SendMessage((w),LVM_SORTITEMS,l,(LPARAM)f)
+#define ListView_SetItemPosition32(w,i,x,y) \
+{ \
+ POINT p={x,y}; \
+ SendMessage((w),LVM_SETITEMPOSITION32,i,(LPARAM)&p);\
+}
+#define ListView_GetSelectedCount(w) (UINT)SendMessage((w),LVM_GETSELECTEDCOUNT,0,0)
+
+BOOL WINAPI MakeDragList(HWND);
+void WINAPI MenuHelp(UINT,WPARAM,LPARAM,HMENU,HINSTANCE,HWND,PUINT);
+#define MonthCal_GetColor(hwnd,icolor) SendMessage(hwnd,MCM_GETCOLOR,(WPARAM)icolor,(LPARAM)0)
+#define MonthCal_GetCurSel(hwnd,lpsystime) SendMessage(hwnd,MCM_GETCURSEL,0,(LPARAM)lpsystime)
+#define MonthCal_GetFirstDayOfWeek(hwnd) SendMessage(hwnd,MCM_GETFIRSTDAYOFWEEK,0,0)
+#define MonthCal_GetMaxSelCount(hwnd) SendMessage(hwnd,MCM_GETMAXSELCOUNT,0,0)
+#define MonthCal_GetMaxTodayWidth(hwnd) SendMessage(hwnd,MCM_GETMAXTODAYWIDTH,0,0)
+#define MonthCal_GetMinReqRect(hwnd,lpRectInfo) SendMessage(hwnd,MCM_GETMINREQRECT,0,(LPARAM)lpRectInfo)
+#define MonthCal_GetMonthDelta(hwnd) SendMessage(hwnd,MCM_GETMONTHDELTA,0,0)
+#define MonthCal_GetMonthRange(hwnd,flag,systimearray) SendMessage(hwnd,MCM_GETMONTHRANGE,(WPARAM)flag,(LPARAM)systimearray)
+#define MonthCal_GetRange(hwnd,systimearray) SendMessage(hwnd,MCM_GETRANGE,0,(LPARAM)systimearray)
+#define MonthCal_GetSelRange(hwnd,systimearray) SendMessage(hwnd,MCM_GETSELRANGE,0,(LPARAM)systimearray)
+#define MonthCal_GetToday(hwnd,systime) SendMessage(hwnd,MCM_GETTODAY,0,(LPARAM)systime)
+#define MonthCal_GetUnicodeFormat(hwnd) SendMessage(hwnd,MCM_GETUNICODEFORMAT,0,0)
+#define MonthCal_HitTest(hwnd,pmchittest) SendMessage(hwnd,MCM_HITTEST,0,(LPARAM)pmchittest)
+#define MonthCal_SetColor(hwnd,icolor,clr) SendMessage(hwnd,MCM_SETCOLOR,(WPARAM)icolor,(LPARAM)clr)
+#define MonthCal_SetCurSel(hwnd,lpsystime) SendMessage(hwnd,MCM_SETCURSEL,0,(LPARAM)lpsystime)
+#define MonthCal_SetDayState(hwnd,imonths,lpdatestatearray) SendMessage(hwnd,MCM_SETDAYSTATE,(WPARAM)imonths,(LPARAM)lpdatestatearray)
+#define MonthCal_SetFirstDayOfWeek(hwnd,iday) SendMessage(hwnd,MCM_SETFIRSTDAYOFWEEK,0,(LPARAM)iday)
+#define MonthCal_SetMaxSelCount(hwnd,imax) SendMessage(hwnd,MCM_SETMAXSELCOUNT,(WPARAM)imax,0)
+#define MonthCal_SetMonthDelta(hwnd,idelta) SendMessage(hwnd,MCM_SETMONTHDELTA,(WPARAM)idelta,0)
+#define MonthCal_SetRange(hwnd,whichlimit,systimearray) SendMessage(hwnd,MCM_SETRANGE,whichlimit,systimearray)
+#define MonthCal_SetSelRange(hwnd,systimearray) SendMessage(hwnd,MCM_SETSELRANGE,0,(LPARAM)systimearray)
+#define MonthCal_SetToday(hwnd,systime) SendMessage(hwnd,MCM_SETTODAY,0,(LPARAM)systime)
+#define MonthCal_SetUnicodeFormat(hwnd,unicode) SendMessage(hwnd,MCM_SETUNICODEFORMAT,(WPARAM)unicode,0)
+BOOL WINAPI ShowHideMenuCtl(HWND,UINT,PINT);
+#define TabCtrl_GetItem(w,i,p) (BOOL)SendMessage((w),TCM_GETITEM,i,(LPARAM)(TC_ITEM*)(p))
+#define TabCtrl_SetItem(w,i,p) (BOOL)SendMessage((w),TCM_SETITEM,i,(LPARAM)(TC_ITEM*)(p))
+#define TabCtrl_InsertItem(w,i,p) (int)SendMessage((w),TCM_INSERTITEM,i,(LPARAM)(const TC_ITEM*)(p))
+#define TabCtrl_DeleteItem(w,i) (BOOL)SendMessage((w),TCM_DELETEITEM,i,0)
+#define TabCtrl_DeleteAllItems(w) (BOOL)SendMessage((w),TCM_DELETEALLITEMS,0,0)
+#define TabCtrl_GetItemRect(w,i,p) (BOOL)SendMessage((w),TCM_GETITEMRECT,i,(LPARAM)(LPRECT)(p))
+#define TabCtrl_GetCurSel(w) (int)SendMessage((w),TCM_GETCURSEL,0,0)
+#define TabCtrl_SetCurSel(w,i) (int)SendMessage((w),TCM_SETCURSEL,i,0)
+#define TabCtrl_HitTest(w,p) (int)SendMessage((w),TCM_HITTEST,0,(LPARAM)(TC_HITTESTINFO*)(p))
+#define TabCtrl_SetItemExtra(w,c) (BOOL)SendMessage((w),TCM_SETITEMEXTRA,c,0)
+#define TabCtrl_AdjustRect(w,b,p) (int)SendMessage((w),TCM_ADJUSTRECT,b,(LPARAM)(LPRECT)p)
+#define TabCtrl_SetItemSize(w,x,y) (DWORD)SendMessage((w),TCM_SETITEMSIZE,0,MAKELPARAM(x,y))
+#define TabCtrl_RemoveImage(w,i) (void)SendMessage((w),TCM_REMOVEIMAGE,i,0)
+#define TabCtrl_SetPadding(w,x,y) (void)SendMessage((w),TCM_SETPADDING,0,MAKELPARAM(x,y))
+#define TabCtrl_GetRowCount(w) (int)SendMessage((w),TCM_GETROWCOUNT,0,0)
+#define TabCtrl_GetToolTips(w) (HWND)SendMessage((w),TCM_GETTOOLTIPS,0,0)
+#define TabCtrl_SetToolTips(w,t) (void)SendMessage((w),TCM_SETTOOLTIPS,(WPARAM)t,0)
+#define TabCtrl_GetCurFocus(w) (int)SendMessage((w),TCM_GETCURFOCUS,0,0)
+#define TabCtrl_SetCurFocus(w,i) (void)SendMessage((w),TCM_SETCURFOCUS,i,0)
+#define TabCtrl_SetImageList(w,h) (HIMAGELIST)SendMessage((w),TCM_SETIMAGELIST,0,(LPARAM)(UINT)(h))
+#define TabCtrl_GetItemCount(w) (int)SendMessage((w),TCM_GETITEMCOUNT,0,0)
+BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT);
+#define TreeView_InsertItem(w,i) (HTREEITEM)SendMessage((w),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(i))
+#define TreeView_DeleteItem(w,i) (BOOL)SendMessage((w),TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_DeleteAllItems(w) (BOOL)SendMessage((w),TVM_DELETEITEM,0,(LPARAM)TVI_ROOT)
+#define TreeView_Expand(w,i,c) (BOOL)SendMessage((w),TVM_EXPAND,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetItemRect(w,i,p,c) (*(HTREEITEM*)p=(i),(BOOL)SendMessage((w),TVM_GETITEMRECT,c,(LPARAM)(LPRECT)(p)))
+#define TreeView_GetCount(w) (UINT)SendMessage((w),TVM_GETCOUNT,0,0)
+#define TreeView_GetIndent(w) (UINT)SendMessage((w),TVM_GETINDENT,0,0)
+#define TreeView_SetIndent(w,i) (BOOL)SendMessage((w),TVM_SETINDENT,indent,0)
+#define TreeView_GetImageList(w,i) (HIMAGELIST)SendMessage((w),TVM_GETIMAGELIST,i,0)
+#define TreeView_SetImageList(w,h,i) (HIMAGELIST)SendMessage((w),TVM_SETIMAGELIST,i,(LPARAM)(HIMAGELIST)(h))
+#define TreeView_GetNextItem(w,i,c) (HTREEITEM)SendMessage((w),TVM_GETNEXTITEM,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetChild(w,i) TreeView_GetNextItem(w,i,TVGN_CHILD)
+#define TreeView_GetNextSibling(w,i) TreeView_GetNextItem(w,i,TVGN_NEXT)
+#define TreeView_GetPrevSibling(w,i) TreeView_GetNextItem(w,i,TVGN_PREVIOUS)
+#define TreeView_GetParent(w,i) TreeView_GetNextItem(w,i,TVGN_PARENT)
+#define TreeView_GetFirstVisible(w) TreeView_GetNextItem(w,NULL,TVGN_FIRSTVISIBLE)
+#define TreeView_GetNextVisible(w,i) TreeView_GetNextItem(w,i,TVGN_NEXTVISIBLE)
+#define TreeView_GetPrevVisible(w,i) TreeView_GetNextItem(w,i,TVGN_PREVIOUSVISIBLE)
+#define TreeView_GetSelection(w) TreeView_GetNextItem(w,NULL,TVGN_CARET)
+#define TreeView_GetDropHilight(w) TreeView_GetNextItem(w,NULL,TVGN_DROPHILITE)
+#define TreeView_GetRoot(w) TreeView_GetNextItem(w,NULL,TVGN_ROOT)
+#define TreeView_Select(w,i,c) (HTREEITEM)SendMessage((w),TVM_SELECTITEM,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SelectItem(w,i) TreeView_Select(w,i,TVGN_CARET)
+#define TreeView_SelectDropTarget(w,i) TreeView_Select(w,i,TVGN_DROPHILITE)
+#define TreeView_SelectSetFirstVisible(w,i) TreeView_Select(w,i,TVGN_FIRSTVISIBLE)
+#define TreeView_GetItem(w,i) (BOOL)SendMessage((w),TVM_GETITEM,0,(LPARAM)(TV_ITEM*)(i))
+#define TreeView_SetItem(w,i) (BOOL)SendMessage((w),TVM_SETITEM,0,(LPARAM)(const TV_ITEM*)(i))
+#define TreeView_EditLabel(w,i) (HWND)SendMessage((w),TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetEditControl(w) (HWND)SendMessage((w),TVM_GETEDITCONTROL,0,0)
+#define TreeView_GetVisibleCount(w) (UINT)SendMessage((w),TVM_GETVISIBLECOUNT,0,0)
+#define TreeView_HitTest(w,p) (HTREEITEM)SendMessage((w),TVM_HITTEST,0,(LPARAM)(LPTV_HITTESTINFO)(p))
+#define TreeView_CreateDragImage(w,i) (HIMAGELIST)SendMessage((w),TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SortChildren(w,i,r) (BOOL)SendMessage((w),TVM_SORTCHILDREN,r,(LPARAM)(HTREEITEM)(i))
+#define TreeView_EnsureVisible(w,i) (BOOL)SendMessage((w),TVM_ENSUREVISIBLE,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SortChildrenCB(w,s,r) (BOOL)SendMessage((w),TVM_SORTCHILDRENCB,r,(LPARAM)(LPTV_SORTCB)(s))
+#define TreeView_EndEditLabelNow(w,f) (BOOL)SendMessage((w),TVM_ENDEDITLABELNOW,f,0)
+#define TreeView_GetISearchString(w,s) (BOOL)SendMessage((w),TVM_GETISEARCHSTRING,0,(LPARAM)s)
+
+#if (_WIN32_IE >= 0x0300)
+WINBOOL WINAPI ImageList_SetImageCount(HIMAGELIST,UINT);
+WINBOOL WINAPI ImageList_Copy(HIMAGELIST,int,HIMAGELIST,int,UINT);
+WINBOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*);
+#define TabCtrl_SetMinTabWidth(hwnd, x) SendMessage((hwnd), TCM_SETMINTABWIDTH, 0, x)
+#define TabCtrl_DeselectAll(hwnd, fExcludeFocus) SendMessage((hwnd), TCM_DESELECTALL, fExcludeFocus, 0)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TabCtrl_HighlightItem(hwnd, i, fHighlight) SendMessage((hwnd), TCM_HIGHLIGHTITEM, (WPARAM)i, (LPARAM)MAKELONG (fHighlight, 0))
+#define TabCtrl_SetExtendedStyle(hwnd, dw) SendMessage((hwnd), TCM_SETEXTENDEDSTYLE, 0, dw)
+#define TabCtrl_GetExtendedStyle(hwnd) SendMessage((hwnd), TCM_GETEXTENDEDSTYLE, 0, 0)
+#define TabCtrl_SetUnicodeFormat(hwnd, fUnicode) SendMessage((hwnd), TCM_SETUNICODEFORMAT, (WPARAM)(fUnicode), 0)
+#define TabCtrl_GetUnicodeFormat(hwnd) SendMessage((hwnd), TCM_GETUNICODEFORMAT, 0, 0)
+#endif
+
+#ifdef UNICODE
+#define ANIMATE_CLASS ANIMATE_CLASSW
+#define HOTKEY_CLASS HOTKEY_CLASSW
+#define PROGRESS_CLASS PROGRESS_CLASSW
+#define STATUSCLASSNAME STATUSCLASSNAMEW
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSW
+#define TRACKBAR_CLASS TRACKBAR_CLASSW
+#define UPDOWN_CLASS UPDOWN_CLASSW
+#define WC_HEADER WC_HEADERW
+#define WC_LISTVIEW WC_LISTVIEWW
+#define WC_TABCONTROL WC_TABCONTROLW
+#define WC_TREEVIEW WC_TREEVIEWW
+typedef HD_ITEMW HD_ITEM;
+typedef TOOLINFOW TOOLINFO,*PTOOLINFO,*LPTOOLINFO;
+typedef TTHITTESTINFOW TTHITTESTINFO,*LPHITTESTINFO;
+typedef TOOLTIPTEXTW TOOLTIPTEXT,*LPTOOLTIPTEXT;
+typedef TV_ITEMW TV_ITEM,*LPTV_ITEM;
+typedef TV_INSERTSTRUCTW TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT;
+typedef NM_TREEVIEWW NM_TREEVIEW,*LPNM_TREEVIEW;
+#define ACM_OPEN ACM_OPENW
+#define SB_GETTEXT SB_GETTEXTW
+#define SB_SETTEXT SB_SETTEXTW
+#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW
+#define STATUSCLASSNAME STATUSCLASSNAMEW
+#define WC_HEADER WC_HEADERW
+#define HDM_INSERTITEM HDM_INSERTITEMW
+#define HDM_GETITEM HDM_GETITEMW
+#define HDM_SETITEM HDM_SETITEMW
+#define HDN_ITEMCHANGING HDN_ITEMCHANGINGW
+#define HDN_ITEMCHANGED HDN_ITEMCHANGEDW
+#define HDN_ITEMCLICK HDN_ITEMCLICKW
+#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKW
+#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKW
+#define HDN_BEGINTRACK HDN_BEGINTRACKW
+#define HDN_ENDTRACK HDN_ENDTRACKW
+#define HDN_TRACK HDN_TRACKW
+#define HD_NOTIFY HD_NOTIFYW
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
+#define TBSAVEPARAMS TBSAVEPARAMSW
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW
+#define TB_SAVERESTORE TB_SAVERESTOREW
+#define TB_ADDSTRING TB_ADDSTRINGW
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW
+#define TBNOTIFY TBNOTIFYW
+#define LPTBNOTIFY LPTBNOTIFYW
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSW
+#define TTM_ADDTOOL TTM_ADDTOOLW
+#define TTM_DELTOOL TTM_DELTOOLW
+#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTW
+#define TTM_GETTOOLINFO TTM_GETTOOLINFOW
+#define TTM_SETTOOLINFO TTM_SETTOOLINFOW
+#define TTM_HITTEST TTM_HITTESTW
+#define TTM_GETTEXT TTM_GETTEXTW
+#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTW
+#define TTM_ENUMTOOLS TTM_ENUMTOOLSW
+#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLW
+#define TTN_NEEDTEXT TTN_NEEDTEXTW
+#define SB_GETTEXT SB_GETTEXTW
+#define SB_SETTEXT SB_SETTEXTW
+#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHW
+#define TRACKBAR_CLASS TRACKBAR_CLASSW
+#define UPDOWN_CLASS UPDOWN_CLASSW
+#define PROGRESS_CLASS PROGRESS_CLASSW
+#define HOTKEY_CLASS HOTKEY_CLASSW
+#define WC_LISTVIEW WC_LISTVIEWW
+#define LV_ITEM LV_ITEMW
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW
+#define LVM_GETITEM LVM_GETITEMW
+#define LVM_SETITEM LVM_SETITEMW
+#define LVM_INSERTITEM LVM_INSERTITEMW
+#define LV_FINDINFO LV_FINDINFOW
+#define LVM_FINDITEM LVM_FINDITEMW
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW
+#define LVM_EDITLABEL LVM_EDITLABELW
+#define LV_COLUMN LV_COLUMNW
+#define LVM_GETCOLUMN LVM_GETCOLUMNW
+#define LVM_SETCOLUMN LVM_SETCOLUMNW
+#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTW
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTW
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITW
+#define LVN_GETDISPINFO LVN_GETDISPINFOW
+#define LVN_SETDISPINFO LVN_SETDISPINFOW
+#define LV_DISPINFO LV_DISPINFOW
+#define WC_TREEVIEW WC_TREEVIEWW
+#define TVM_INSERTITEM TVM_INSERTITEMW
+#define TVM_GETITEM TVM_GETITEMW
+#define TVM_SETITEM TVM_SETITEMW
+#define TVM_EDITLABEL TVM_EDITLABELW
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW
+#define TV_DISPINFO TV_DISPINFOW
+#define TVN_SELCHANGING TVN_SELCHANGINGW
+#define TVN_SELCHANGED TVN_SELCHANGEDW
+#define TVN_GETDISPINFO TVN_GETDISPINFOW
+#define TVN_SETDISPINFO TVN_SETDISPINFOW
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
+#define TVN_BEGINDRAG TVN_BEGINDRAGW
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGW
+#define TVN_DELETEITEM TVN_DELETEITEMW
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
+#define WC_TABCONTROL WC_TABCONTROLW
+#define TC_ITEMHEADER TC_ITEMHEADERW
+#define TC_ITEM TC_ITEMW
+#define TCM_GETITEM TCM_GETITEMW
+#define TCM_SETITEM TCM_SETITEMW
+#define TCM_INSERTITEM TCM_INSERTITEMW
+#define CreateStatusWindow CreateStatusWindowW
+#define DrawStatusText DrawStatusTextW
+#define ImageList_LoadImage ImageList_LoadImageW
+#define DTM_SETFORMAT DTM_SETFORMATW
+#define DTN_USERSTRING DTN_USERSTRINGW
+#define DTN_WMKEYDOWN DTN_WMKEYDOWNW
+#define DTN_FORMAT DTN_FORMATW
+#define DTN_FORMATQUERY DTN_FORMATQUERYW
+#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW
+#define MONTHCAL_CLASS MONTHCAL_CLASSW
+#define REBARCLASSNAME REBARCLASSNAMEW
+typedef REBARBANDINFOW REBARBANDINFO,*LPREBARBANDINFO;
+#define LPCREBARBANDINFO LPCREBARBANDINFOW
+#define REBARBANDINFO_V3_SIZE REBARBANDINFOW_V3_SIZE
+#define RB_INSERTBAND RB_INSERTBANDW
+#define RB_SETBANDINFO RB_SETBANDINFOW
+#else
+#define ANIMATE_CLASS ANIMATE_CLASSA
+#define HOTKEY_CLASS HOTKEY_CLASSA
+#define PROGRESS_CLASS PROGRESS_CLASSA
+#define STATUSCLASSNAME STATUSCLASSNAMEA
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEA
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSA
+#define TRACKBAR_CLASS TRACKBAR_CLASSA
+#define UPDOWN_CLASS UPDOWN_CLASSA
+#define WC_HEADER WC_HEADERA
+#define WC_LISTVIEW WC_LISTVIEWA
+#define WC_TABCONTROL WC_TABCONTROLA
+#define WC_TREEVIEW WC_TREEVIEWA
+typedef HD_ITEMA HD_ITEM;
+typedef TOOLINFOA TOOLINFO,*PTOOLINFO,*LPTOOLINFO;
+typedef TTHITTESTINFOA TTHITTESTINFO,*LPHITTESTINFO;
+typedef TOOLTIPTEXTA TOOLTIPTEXT,*LPTOOLTIPTEXT;
+typedef TV_ITEMA TV_ITEM,*LPTV_ITEM;
+typedef TV_INSERTSTRUCTA TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT;
+typedef NM_TREEVIEWA NM_TREEVIEW,*LPNM_TREEVIEW;
+#define ACM_OPEN ACM_OPENA
+#define SB_GETTEXT SB_GETTEXTA
+#define SB_SETTEXT SB_SETTEXTA
+#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA
+#define HDM_INSERTITEM HDM_INSERTITEMA
+#define HDM_GETITEM HDM_GETITEMA
+#define HDM_SETITEM HDM_SETITEMA
+#define HDN_ITEMCHANGING HDN_ITEMCHANGINGA
+#define HDN_ITEMCHANGED HDN_ITEMCHANGEDA
+#define HDN_ITEMCLICK HDN_ITEMCLICKA
+#define HDN_ITEMDBLCLICK HDN_ITEMDBLCLICKA
+#define HDN_DIVIDERDBLCLICK HDN_DIVIDERDBLCLICKA
+#define HDN_BEGINTRACK HDN_BEGINTRACKA
+#define HDN_ENDTRACK HDN_ENDTRACKA
+#define HDN_TRACK HDN_TRACKA
+#define HD_NOTIFY HD_NOTIFYA
+#define TBSAVEPARAMS TBSAVEPARAMSA
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA
+#define TB_SAVERESTORE TB_SAVERESTOREA
+#define TB_ADDSTRING TB_ADDSTRINGA
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA
+#define TBNOTIFY TBNOTIFYA
+#define LPTBNOTIFY LPTBNOTIFYA
+#define TTM_ADDTOOL TTM_ADDTOOLA
+#define TTM_DELTOOL TTM_DELTOOLA
+#define TTM_NEWTOOLRECT TTM_NEWTOOLRECTA
+#define TTM_GETTOOLINFO TTM_GETTOOLINFOA
+#define TTM_SETTOOLINFO TTM_SETTOOLINFOA
+#define TTM_HITTEST TTM_HITTESTA
+#define TTM_GETTEXT TTM_GETTEXTA
+#define TTM_UPDATETIPTEXT TTM_UPDATETIPTEXTA
+#define TTM_ENUMTOOLS TTM_ENUMTOOLSA
+#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA
+#define TTN_NEEDTEXT TTN_NEEDTEXTA
+#define SB_GETTEXT SB_GETTEXTA
+#define SB_SETTEXT SB_SETTEXTA
+#define SB_GETTEXTLENGTH SB_GETTEXTLENGTHA
+#define LV_ITEM LV_ITEMA
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA
+#define LVM_GETITEM LVM_GETITEMA
+#define LVM_SETITEM LVM_SETITEMA
+#define LVM_INSERTITEM LVM_INSERTITEMA
+#define LV_FINDINFO LV_FINDINFOA
+#define LVM_FINDITEM LVM_FINDITEMA
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA
+#define LVM_EDITLABEL LVM_EDITLABELA
+#define LV_COLUMN LV_COLUMNA
+#define LVM_GETCOLUMN LVM_GETCOLUMNA
+#define LVM_SETCOLUMN LVM_SETCOLUMNA
+#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTA
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTA
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITA
+#define LVN_GETDISPINFO LVN_GETDISPINFOA
+#define LVN_SETDISPINFO LVN_SETDISPINFOA
+#define LV_DISPINFO LV_DISPINFOA
+#define TVM_INSERTITEM TVM_INSERTITEMA
+#define TVM_GETITEM TVM_GETITEMA
+#define TVM_SETITEM TVM_SETITEMA
+#define TVM_EDITLABEL TVM_EDITLABELA
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA
+#define TV_DISPINFO TV_DISPINFOA
+#define TVN_SELCHANGING TVN_SELCHANGINGA
+#define TVN_SELCHANGED TVN_SELCHANGEDA
+#define TVN_GETDISPINFO TVN_GETDISPINFOA
+#define TVN_SETDISPINFO TVN_SETDISPINFOA
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
+#define TVN_BEGINDRAG TVN_BEGINDRAGA
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGA
+#define TVN_DELETEITEM TVN_DELETEITEMA
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
+#define TC_ITEMHEADER TC_ITEMHEADERA
+#define TC_ITEM TC_ITEMA
+#define TCM_GETITEM TCM_GETITEMA
+#define TCM_SETITEM TCM_SETITEMA
+#define TCM_INSERTITEM TCM_INSERTITEMA
+#define CreateStatusWindow CreateStatusWindowA
+#define DrawStatusText DrawStatusTextA
+#define ImageList_LoadImage ImageList_LoadImageA
+#define DTM_SETFORMAT DTM_SETFORMATA
+#define DTN_USERSTRING DTN_USERSTRINGA
+#define DTN_WMKEYDOWN DTN_WMKEYDOWNA
+#define DTN_FORMAT DTN_FORMATA
+#define DTN_FORMATQUERY DTN_FORMATQUERYA
+#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA
+#define MONTHCAL_CLASS MONTHCAL_CLASSA
+#define REBARCLASSNAME REBARCLASSNAMEA
+typedef REBARBANDINFOA REBARBANDINFO,*LPREBARBANDINFO;
+#define LPCREBARBANDINFO LPCREBARBANDINFOA
+#define REBARBANDINFO_V3_SIZE REBARBANDINFOA_V3_SIZE
+#define RB_INSERTBAND RB_INSERTBANDA
+#define RB_SETBANDINFO RB_SETBANDINFOA
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/commdlg.h b/winsup/w32api/include/commdlg.h
new file mode 100644
index 000000000..4d56ec225
--- /dev/null
+++ b/winsup/w32api/include/commdlg.h
@@ -0,0 +1,503 @@
+#ifndef _COMMDLG_H
+#define _COMMDLG_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,1)
+
+#define LBSELCHSTRINGA "commdlg_LBSelChangedNotify"
+#define SHAREVISTRINGA "commdlg_ShareViolation"
+#define FILEOKSTRINGA "commdlg_FileNameOK"
+#define COLOROKSTRINGA "commdlg_ColorOK"
+#define SETRGBSTRINGA "commdlg_SetRGBColor"
+#define HELPMSGSTRINGA "commdlg_help"
+#define FINDMSGSTRINGA "commdlg_FindReplace"
+#define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify"
+#define SHAREVISTRINGW L"commdlg_ShareViolation"
+#define FILEOKSTRINGW L"commdlg_FileNameOK"
+#define COLOROKSTRINGW L"commdlg_ColorOK"
+#define SETRGBSTRINGW L"commdlg_SetRGBColor"
+#define HELPMSGSTRINGW L"commdlg_help"
+#define FINDMSGSTRINGW L"commdlg_FindReplace"
+#define CDN_FIRST (-601)
+#define CDN_LAST (-699)
+#define CDN_INITDONE CDN_FIRST
+#define CDN_SELCHANGE (CDN_FIRST-1)
+#define CDN_FOLDERCHANGE (CDN_FIRST-2)
+#define CDN_SHAREVIOLATION (CDN_FIRST-3)
+#define CDN_HELP (CDN_FIRST-4)
+#define CDN_FILEOK (CDN_FIRST-5)
+#define CDN_TYPECHANGE (CDN_FIRST-6)
+#define CDM_FIRST (WM_USER+100)
+#define CDM_LAST (WM_USER+200)
+#define CDM_GETSPEC CDM_FIRST
+#define CDM_GETFILEPATH (CDM_FIRST+1)
+#define CDM_GETFOLDERPATH (CDM_FIRST+2)
+#define CDM_GETFOLDERIDLIST (CDM_FIRST+3)
+#define CDM_SETCONTROLTEXT (CDM_FIRST+4)
+#define CDM_HIDECONTROL (CDM_FIRST+5)
+#define CDM_SETDEFEXT (CDM_FIRST+6)
+#define CC_RGBINIT 1
+#define CC_FULLOPEN 2
+#define CC_PREVENTFULLOPEN 4
+#define CC_SHOWHELP 8
+#define CC_ENABLEHOOK 16
+#define CC_ENABLETEMPLATE 32
+#define CC_ENABLETEMPLATEHANDLE 64
+#define CC_SOLIDCOLOR 128
+#define CC_ANYCOLOR 256
+#define CF_SCREENFONTS 1
+#define CF_PRINTERFONTS 2
+#define CF_BOTH 3
+#define CF_SHOWHELP 4
+#define CF_ENABLEHOOK 8
+#define CF_ENABLETEMPLATE 16
+#define CF_ENABLETEMPLATEHANDLE 32
+#define CF_INITTOLOGFONTSTRUCT 64
+#define CF_USESTYLE 128
+#define CF_EFFECTS 256
+#define CF_APPLY 512
+#define CF_ANSIONLY 1024
+#define CF_SCRIPTSONLY CF_ANSIONLY
+#define CF_NOVECTORFONTS 2048
+#define CF_NOOEMFONTS 2048
+#define CF_NOSIMULATIONS 4096
+#define CF_LIMITSIZE 8192
+#define CF_FIXEDPITCHONLY 16384
+#define CF_WYSIWYG 32768
+#define CF_FORCEFONTEXIST 65536
+#define CF_SCALABLEONLY 131072
+#define CF_TTONLY 262144
+#define CF_NOFACESEL 524288
+#define CF_NOSTYLESEL 1048576
+#define CF_NOSIZESEL 2097152
+#define CF_SELECTSCRIPT 4194304
+#define CF_NOSCRIPTSEL 8388608
+#define CF_NOVERTFONTS 0x1000000
+#define SIMULATED_FONTTYPE 0x8000
+#define PRINTER_FONTTYPE 0x4000
+#define SCREEN_FONTTYPE 0x2000
+#define BOLD_FONTTYPE 0x100
+#define ITALIC_FONTTYPE 0x0200
+#define REGULAR_FONTTYPE 0x0400
+#define WM_CHOOSEFONT_GETLOGFONT (WM_USER+1)
+#define WM_CHOOSEFONT_SETLOGFONT (WM_USER+101)
+#define WM_CHOOSEFONT_SETFLAGS (WM_USER+102)
+#define OFN_ALLOWMULTISELECT 512
+#define OFN_CREATEPROMPT 0x2000
+#define OFN_ENABLEHOOK 32
+#define OFN_ENABLETEMPLATE 64
+#define OFN_ENABLETEMPLATEHANDLE 128
+#define OFN_EXPLORER 0x80000
+#define OFN_EXTENSIONDIFFERENT 0x400
+#define OFN_FILEMUSTEXIST 0x1000
+#define OFN_HIDEREADONLY 4
+#define OFN_LONGNAMES 0x200000
+#define OFN_NOCHANGEDIR 8
+#define OFN_NODEREFERENCELINKS 0x100000
+#define OFN_NOLONGNAMES 0x40000
+#define OFN_NONETWORKBUTTON 0x20000
+#define OFN_NOREADONLYRETURN 0x8000
+#define OFN_NOTESTFILECREATE 0x10000
+#define OFN_NOVALIDATE 256
+#define OFN_OVERWRITEPROMPT 2
+#define OFN_PATHMUSTEXIST 0x800
+#define OFN_READONLY 1
+#define OFN_SHAREAWARE 0x4000
+#define OFN_SHOWHELP 16
+#define OFN_SHAREFALLTHROUGH 2
+#define OFN_SHARENOWARN 1
+#define OFN_SHAREWARN 0
+#define OFN_NODEREFERENCELINKS 0x100000
+#define FR_DIALOGTERM 64
+#define FR_DOWN 1
+#define FR_ENABLEHOOK 256
+#define FR_ENABLETEMPLATE 512
+#define FR_ENABLETEMPLATEHANDLE 0x2000
+#define FR_FINDNEXT 8
+#define FR_HIDEUPDOWN 0x4000
+#define FR_HIDEMATCHCASE 0x8000
+#define FR_HIDEWHOLEWORD 0x10000
+#define FR_MATCHCASE 4
+#define FR_NOMATCHCASE 0x800
+#define FR_NOUPDOWN 0x400
+#define FR_NOWHOLEWORD 4096
+#define FR_REPLACE 16
+#define FR_REPLACEALL 32
+#define FR_SHOWHELP 128
+#define FR_WHOLEWORD 2
+#define PD_ALLPAGES 0
+#define PD_SELECTION 1
+#define PD_PAGENUMS 2
+#define PD_NOSELECTION 4
+#define PD_NOPAGENUMS 8
+#define PD_COLLATE 16
+#define PD_PRINTTOFILE 32
+#define PD_PRINTSETUP 64
+#define PD_NOWARNING 128
+#define PD_RETURNDC 256
+#define PD_RETURNIC 512
+#define PD_RETURNDEFAULT 1024
+#define PD_SHOWHELP 2048
+#define PD_ENABLEPRINTHOOK 4096
+#define PD_ENABLESETUPHOOK 8192
+#define PD_ENABLEPRINTTEMPLATE 16384
+#define PD_ENABLESETUPTEMPLATE 32768
+#define PD_ENABLEPRINTTEMPLATEHANDLE 65536
+#define PD_ENABLESETUPTEMPLATEHANDLE 0x20000
+#define PD_USEDEVMODECOPIES 0x40000
+#define PD_USEDEVMODECOPIESANDCOLLATE 0x40000
+#define PD_DISABLEPRINTTOFILE 0x80000
+#define PD_HIDEPRINTTOFILE 0x100000
+#define PD_NONETWORKBUTTON 0x200000
+#define PSD_DEFAULTMINMARGINS 0
+#define PSD_INWININIINTLMEASURE 0
+#define PSD_MINMARGINS 1
+#define PSD_MARGINS 2
+#define PSD_INTHOUSANDTHSOFINCHES 4
+#define PSD_INHUNDREDTHSOFMILLIMETERS 8
+#define PSD_DISABLEMARGINS 16
+#define PSD_DISABLEPRINTER 32
+#define PSD_NOWARNING 128
+#define PSD_DISABLEORIENTATION 256
+#define PSD_DISABLEPAPER 512
+#define PSD_RETURNDEFAULT 1024
+#define PSD_SHOWHELP 2048
+#define PSD_ENABLEPAGESETUPHOOK 8192
+#define PSD_ENABLEPAGESETUPTEMPLATE 0x8000
+#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE 0x20000
+#define PSD_ENABLEPAGEPAINTHOOK 0x40000
+#define PSD_DISABLEPAGEPAINTING 0x80000
+#define WM_PSD_PAGESETUPDLG WM_USER
+#define WM_PSD_FULLPAGERECT (WM_USER+1)
+#define WM_PSD_MINMARGINRECT (WM_USER+2)
+#define WM_PSD_MARGINRECT (WM_USER+3)
+#define WM_PSD_GREEKTEXTRECT (WM_USER+4)
+#define WM_PSD_ENVSTAMPRECT (WM_USER+5)
+#define WM_PSD_YAFULLPAGERECT (WM_USER+6)
+#define CD_LBSELNOITEMS (-1)
+#define CD_LBSELCHANGE 0
+#define CD_LBSELSUB 1
+#define CD_LBSELADD 2
+#define DN_DEFAULTPRN 1
+
+#ifndef SNDMSG
+#define SNDMSG SendMessage
+#endif
+
+#define CommDlg_OpenSave_GetSpec(d,s,m) (int)SNDMSG(d,CDM_GETSPEC,m,(LPARAM)s)
+#define CommDlg_OpenSave_GetSpecA CommDlg_OpenSave_GetSpec
+#define CommDlg_OpenSave_GetSpecW CommDlg_OpenSave_GetSpec
+#define CommDlg_OpenSave_GetFilePath(d,s,m) (int)SNDMSG(d,CDM_GETFILEPATH,m,(LPARAM)s)
+#define CommDlg_OpenSave_GetFilePathA CommDlg_OpenSave_GetFilePath
+#define CommDlg_OpenSave_GetFilePathW CommDlg_OpenSave_GetFilePath
+#define CommDlg_OpenSave_GetFolderPath(d,s,m) (int)SendMessage(d,CDM_GETFOLDERPATH,m,(LPARAM)(LPSTR)s)
+#define CommDlg_OpenSave_GetFolderPathA CommDlg_OpenSave_GetFolderPath
+#define CommDlg_OpenSave_GetFolderPathW CommDlg_OpenSave_GetFolderPath
+#define CommDlg_OpenSave_GetFolderIDList(d,i,m) (int)SendMessage(d,CDM_GETFOLDERIDLIST,m,(LPARAM)i)
+#define CommDlg_OpenSave_SetControlText(d,i,t) (void)SendMessage(d,CDM_SETCONTROLTEXT,i,(LPARAM)t)
+#define CommDlg_OpenSave_HideControl(d,i) (void)SendMessage(d,CDM_HIDECONTROL,i,0)
+#define CommDlg_OpenSave_SetDefExt(d,e) (void)SendMessage(d,CDM_SETDEFEXT,0,(LPARAM)e)
+
+typedef UINT (APIENTRY *__CDHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef __CDHOOKPROC LPCCHOOKPROC;
+typedef __CDHOOKPROC LPCFHOOKPROC;
+typedef __CDHOOKPROC LPFRHOOKPROC;
+typedef __CDHOOKPROC LPOFNHOOKPROC;
+typedef __CDHOOKPROC LPPAGEPAINTHOOK;
+typedef __CDHOOKPROC LPPAGESETUPHOOK;
+typedef __CDHOOKPROC LPSETUPHOOKPROC;
+typedef __CDHOOKPROC LPPRINTHOOKPROC;
+typedef struct tagCHOOSECOLORA {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HWND hInstance;
+ COLORREF rgbResult;
+ COLORREF* lpCustColors;
+ DWORD Flags;
+ LPARAM lCustData;
+ LPCCHOOKPROC lpfnHook;
+ LPCSTR lpTemplateName;
+} CHOOSECOLORA,*LPCHOOSECOLORA;
+typedef struct tagCHOOSECOLORW {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HWND hInstance;
+ COLORREF rgbResult;
+ COLORREF* lpCustColors;
+ DWORD Flags;
+ LPARAM lCustData;
+ LPCCHOOKPROC lpfnHook;
+ LPCWSTR lpTemplateName;
+} CHOOSECOLORW,*LPCHOOSECOLORW;
+typedef struct tagCHOOSEFONTA {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HDC hDC;
+ LPLOGFONTA lpLogFont;
+ INT iPointSize;
+ DWORD Flags;
+ DWORD rgbColors;
+ LPARAM lCustData;
+ LPCFHOOKPROC lpfnHook;
+ LPCSTR lpTemplateName;
+ HINSTANCE hInstance;
+ LPSTR lpszStyle;
+ WORD nFontType;
+ WORD ___MISSING_ALIGNMENT__;
+ INT nSizeMin;
+ INT nSizeMax;
+} CHOOSEFONTA,*LPCHOOSEFONTA;
+typedef struct tagCHOOSEFONTW {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HDC hDC;
+ LPLOGFONTW lpLogFont;
+ INT iPointSize;
+ DWORD Flags;
+ DWORD rgbColors;
+ LPARAM lCustData;
+ LPCFHOOKPROC lpfnHook;
+ LPCWSTR lpTemplateName;
+ HINSTANCE hInstance;
+ LPWSTR lpszStyle;
+ WORD nFontType;
+ WORD ___MISSING_ALIGNMENT__;
+ INT nSizeMin;
+ INT nSizeMax;
+} CHOOSEFONTW,*LPCHOOSEFONTW;
+typedef struct tagDEVNAMES {
+ WORD wDriverOffset;
+ WORD wDeviceOffset;
+ WORD wOutputOffset;
+ WORD wDefault;
+} DEVNAMES,*LPDEVNAMES;
+typedef struct {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ DWORD Flags;
+ LPSTR lpstrFindWhat;
+ LPSTR lpstrReplaceWith;
+ WORD wFindWhatLen;
+ WORD wReplaceWithLen;
+ LPARAM lCustData;
+ LPFRHOOKPROC lpfnHook;
+ LPCSTR lpTemplateName;
+} FINDREPLACEA,*LPFINDREPLACEA;
+typedef struct {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ DWORD Flags;
+ LPWSTR lpstrFindWhat;
+ LPWSTR lpstrReplaceWith;
+ WORD wFindWhatLen;
+ WORD wReplaceWithLen;
+ LPARAM lCustData;
+ LPFRHOOKPROC lpfnHook;
+ LPCWSTR lpTemplateName;
+} FINDREPLACEW,*LPFINDREPLACEW;
+typedef struct tagOFNA {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCSTR lpstrFilter;
+ LPSTR lpstrCustomFilter;
+ DWORD nMaxCustFilter;
+ DWORD nFilterIndex;
+ LPSTR lpstrFile;
+ DWORD nMaxFile;
+ LPSTR lpstrFileTitle;
+ DWORD nMaxFileTitle;
+ LPCSTR lpstrInitialDir;
+ LPCSTR lpstrTitle;
+ DWORD Flags;
+ WORD nFileOffset;
+ WORD nFileExtension;
+ LPCSTR lpstrDefExt;
+ DWORD lCustData;
+ LPOFNHOOKPROC lpfnHook;
+ LPCSTR lpTemplateName;
+} OPENFILENAMEA,*LPOPENFILENAMEA;
+typedef struct tagOFNW {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCWSTR lpstrFilter;
+ LPWSTR lpstrCustomFilter;
+ DWORD nMaxCustFilter;
+ DWORD nFilterIndex;
+ LPWSTR lpstrFile;
+ DWORD nMaxFile;
+ LPWSTR lpstrFileTitle;
+ DWORD nMaxFileTitle;
+ LPCWSTR lpstrInitialDir;
+ LPCWSTR lpstrTitle;
+ DWORD Flags;
+ WORD nFileOffset;
+ WORD nFileExtension;
+ LPCWSTR lpstrDefExt;
+ DWORD lCustData;
+ LPOFNHOOKPROC lpfnHook;
+ LPCWSTR lpTemplateName;
+} OPENFILENAMEW,*LPOPENFILENAMEW;
+typedef struct _OFNOTIFYA {
+ NMHDR hdr;
+ LPOPENFILENAMEA lpOFN;
+ LPSTR pszFile;
+} OFNOTIFYA,*LPOFNOTIFYA;
+typedef struct _OFNOTIFYW {
+ NMHDR hdr;
+ LPOPENFILENAMEW lpOFN;
+ LPWSTR pszFile;
+} OFNOTIFYW,*LPOFNOTIFYW;
+typedef struct tagPSDA {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HGLOBAL hDevMode;
+ HGLOBAL hDevNames;
+ DWORD Flags;
+ POINT ptPaperSize;
+ RECT rtMinMargin;
+ RECT rtMargin;
+ HINSTANCE hInstance;
+ LPARAM lCustData;
+ LPPAGESETUPHOOK lpfnPageSetupHook;
+ LPPAGEPAINTHOOK lpfnPagePaintHook;
+ LPCSTR lpPageSetupTemplateName;
+ HGLOBAL hPageSetupTemplate;
+} PAGESETUPDLGA,*LPPAGESETUPDLGA;
+typedef struct tagPSDW {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HGLOBAL hDevMode;
+ HGLOBAL hDevNames;
+ DWORD Flags;
+ POINT ptPaperSize;
+ RECT rtMinMargin;
+ RECT rtMargin;
+ HINSTANCE hInstance;
+ LPARAM lCustData;
+ LPPAGESETUPHOOK lpfnPageSetupHook;
+ LPPAGEPAINTHOOK lpfnPagePaintHook;
+ LPCWSTR lpPageSetupTemplateName;
+ HGLOBAL hPageSetupTemplate;
+} PAGESETUPDLGW,*LPPAGESETUPDLGW;
+typedef struct tagPDA {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HANDLE hDevMode;
+ HANDLE hDevNames;
+ HDC hDC;
+ DWORD Flags;
+ WORD nFromPage;
+ WORD nToPage;
+ WORD nMinPage;
+ WORD nMaxPage;
+ WORD nCopies;
+ HINSTANCE hInstance;
+ DWORD lCustData;
+ LPPRINTHOOKPROC lpfnPrintHook;
+ LPSETUPHOOKPROC lpfnSetupHook;
+ LPCSTR lpPrintTemplateName;
+ LPCSTR lpSetupTemplateName;
+ HANDLE hPrintTemplate;
+ HANDLE hSetupTemplate;
+} PRINTDLGA,*LPPRINTDLGA;
+typedef struct tagPDW {
+ DWORD lStructSize;
+ HWND hwndOwner;
+ HANDLE hDevMode;
+ HANDLE hDevNames;
+ HDC hDC;
+ DWORD Flags;
+ WORD nFromPage;
+ WORD nToPage;
+ WORD nMinPage;
+ WORD nMaxPage;
+ WORD nCopies;
+ HINSTANCE hInstance;
+ DWORD lCustData;
+ LPPRINTHOOKPROC lpfnPrintHook;
+ LPSETUPHOOKPROC lpfnSetupHook;
+ LPCWSTR lpPrintTemplateName;
+ LPCWSTR lpSetupTemplateName;
+ HANDLE hPrintTemplate;
+ HANDLE hSetupTemplate;
+} PRINTDLGW,*LPPRINTDLGW;
+
+BOOL WINAPI ChooseColorA(LPCHOOSECOLORA);
+BOOL WINAPI ChooseColorW(LPCHOOSECOLORW);
+BOOL WINAPI ChooseFontA(LPCHOOSEFONTA);
+BOOL WINAPI ChooseFontW(LPCHOOSEFONTW);
+DWORD WINAPI CommDlgExtendedError(void);
+HWND WINAPI FindTextA(LPFINDREPLACEA);
+HWND WINAPI FindTextW(LPFINDREPLACEW);
+short WINAPI GetFileTitleA(LPCSTR,LPSTR,WORD);
+short WINAPI GetFileTitleW(LPCWSTR,LPWSTR,WORD);
+BOOL WINAPI GetOpenFileNameA(LPOPENFILENAMEA);
+BOOL WINAPI GetOpenFileNameW(LPOPENFILENAMEW);
+BOOL WINAPI GetSaveFileNameA(LPOPENFILENAMEA);
+BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW);
+BOOL WINAPI PageSetupDlgA(LPPAGESETUPDLGA);
+BOOL WINAPI PageSetupDlgW(LPPAGESETUPDLGW);
+BOOL WINAPI PrintDlgA(LPPRINTDLGA);
+BOOL WINAPI PrintDlgW(LPPRINTDLGW);
+HWND WINAPI ReplaceTextA(LPFINDREPLACEA);
+HWND WINAPI ReplaceTextW(LPFINDREPLACEW);
+
+#ifdef UNICODE
+#define LBSELCHSTRING LBSELCHSTRINGW
+#define SHAREVISTRING SHAREVISTRINGW
+#define FILEOKSTRING FILEOKSTRINGW
+#define COLOROKSTRING COLOROKSTRINGW
+#define SETRGBSTRING SETRGBSTRINGW
+#define HELPMSGSTRING HELPMSGSTRINGW
+#define FINDMSGSTRING FINDMSGSTRINGW
+typedef CHOOSECOLORW CHOOSECOLOR,*LPCHOOSECOLOR;
+typedef CHOOSEFONTW CHOOSEFONT,*LPCHOOSEFONT;
+typedef FINDREPLACEW FINDREPLACE,*LPFINDREPLACE;
+typedef OPENFILENAMEW OPENFILENAME,*LPOPENFILENAME;
+typedef OFNOTIFYW OFNOTIFY,*LPOFNOTIFY;
+typedef PAGESETUPDLGW PAGESETUPDLG,*LPPAGESETUPDLG;
+typedef PRINTDLGW PRINTDLG,*LPPRINTDLG;
+#define ChooseColor ChooseColorW
+#define ChooseFont ChooseFontW
+#define FindText FindTextW
+#define GetFileTitle GetFileTitleW
+#define GetOpenFileName GetOpenFileNameW
+#define GetSaveFileName GetSaveFileNameW
+#define PageSetupDlg PageSetupDlgW
+#define PrintDlg PrintDlgW
+#define ReplaceText ReplaceTextW
+#else
+#define LBSELCHSTRING LBSELCHSTRINGA
+#define SHAREVISTRING SHAREVISTRINGA
+#define FILEOKSTRING FILEOKSTRINGA
+#define COLOROKSTRING COLOROKSTRINGA
+#define SETRGBSTRING SETRGBSTRINGA
+#define HELPMSGSTRING HELPMSGSTRINGA
+#define FINDMSGSTRING FINDMSGSTRINGA
+typedef CHOOSECOLORA CHOOSECOLOR,*LPCHOOSECOLOR;
+typedef CHOOSEFONTA CHOOSEFONT,*LPCHOOSEFONT;
+typedef FINDREPLACEA FINDREPLACE,*LPFINDREPLACE;
+typedef OPENFILENAMEA OPENFILENAME,*LPOPENFILENAME;
+typedef OFNOTIFYA OFNOTIFY,*LPOFNOTIFY;
+typedef PAGESETUPDLGA PAGESETUPDLG,*LPPAGESETUPDLG;
+typedef PRINTDLGA PRINTDLG,*LPPRINTDLG;
+#define ChooseColor ChooseColorA
+#define ChooseFont ChooseFontA
+#define FindText FindTextA
+#define GetFileTitle GetFileTitleA
+#define GetOpenFileName GetOpenFileNameA
+#define GetSaveFileName GetSaveFileNameA
+#define PageSetupDlg PageSetupDlgA
+#define PrintDlg PrintDlgA
+#define ReplaceText ReplaceTextA
+#endif
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/cpl.h b/winsup/w32api/include/cpl.h
new file mode 100644
index 000000000..f5ce29d00
--- /dev/null
+++ b/winsup/w32api/include/cpl.h
@@ -0,0 +1,54 @@
+#ifndef _CPL_H
+#define _CPL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WM_CPL_LAUNCH (WM_USER+1000)
+#define WM_CPL_LAUNCHED (WM_USER+1001)
+#define CPL_DYNAMIC_RES 0
+#define CPL_INIT 1
+#define CPL_GETCOUNT 2
+#define CPL_INQUIRE 3
+#define CPL_SELECT 4
+#define CPL_DBLCLK 5
+#define CPL_STOP 6
+#define CPL_EXIT 7
+#define CPL_NEWINQUIRE 8
+#define CPL_STARTWPARMS 9
+#define CPL_SETUP 200
+typedef LONG(APIENTRY *APPLET_PROC)(HWND,UINT,LONG,LONG);
+typedef struct tagCPLINFO {
+ int idIcon;
+ int idName;
+ int idInfo;
+ LONG lData;
+} CPLINFO,*LPCPLINFO;
+typedef struct tagNEWCPLINFOA {
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwHelpContext;
+ LONG lData;
+ HICON hIcon;
+ CHAR szName[32];
+ CHAR szInfo[64];
+ CHAR szHelpFile[128];
+} NEWCPLINFOA,*LPNEWCPLINFOA;
+typedef struct tagNEWCPLINFOW {
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwHelpContext;
+ LONG lData;
+ HICON hIcon;
+ WCHAR szName[32];
+ WCHAR szInfo[64];
+ WCHAR szHelpFile[128];
+} NEWCPLINFOW,*LPNEWCPLINFOW;
+#ifdef UNICODE
+typedef NEWCPLINFOW NEWCPLINFO,*LPNEWCPLINFO;
+#else
+typedef NEWCPLINFOA NEWCPLINFO,*LPNEWCPLINFO;
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/cplext.h b/winsup/w32api/include/cplext.h
new file mode 100644
index 000000000..8c2207d16
--- /dev/null
+++ b/winsup/w32api/include/cplext.h
@@ -0,0 +1,6 @@
+#ifndef _CPLEXT_H
+#define _CPLEXT_H
+#define CPLPAGE_MOUSE_BUTTONS 1
+#define CPLPAGE_MOUSE_PTRMOTION 2
+#define CPLPAGE_KEYBOARD_SPEED 1
+#endif
diff --git a/winsup/w32api/include/custcntl.h b/winsup/w32api/include/custcntl.h
new file mode 100644
index 000000000..8c3d463ab
--- /dev/null
+++ b/winsup/w32api/include/custcntl.h
@@ -0,0 +1,98 @@
+#ifndef _CUSTCNTL_H
+#define _CUSTCNTL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CCF_NOTEXT 1
+#define CCHCCCLASS 32
+#define CCHCCDESC 32
+#define CCHCCTEXT 256
+
+typedef struct tagCCSTYLEA {
+ DWORD flStyle;
+ DWORD flExtStyle;
+ CHAR szText[CCHCCTEXT];
+ LANGID lgid;
+ WORD wReserved1;
+} CCSTYLEA,*LPCCSTYLEA;
+typedef struct tagCCSTYLEW {
+ DWORD flStyle;
+ DWORD flExtStyle;
+ WCHAR szText[CCHCCTEXT];
+ LANGID lgid;
+ WORD wReserved1;
+} CCSTYLEW,*LPCCSTYLEW;
+typedef struct tagCCSTYLEFLAGA {
+ DWORD flStyle;
+ DWORD flStyleMask;
+ LPSTR pszStyle;
+} CCSTYLEFLAGA,*LPCCSTYLEFLAGA;
+typedef struct tagCCSTYLEFLAGW {
+ DWORD flStyle;
+ DWORD flStyleMask;
+ LPWSTR pszStyle;
+} CCSTYLEFLAGW,*LPCCSTYLEFLAGW;
+typedef BOOL(CALLBACK* LPFNCCSTYLEA)(HWND,LPCCSTYLEA);
+typedef INT(CALLBACK* LPFNCCSIZETOTEXTA)(DWORD,DWORD,HFONT,LPSTR);
+typedef struct tagCCINFOA {
+ CHAR szClass[CCHCCCLASS];
+ DWORD flOptions;
+ CHAR szDesc[CCHCCDESC];
+ UINT cxDefault;
+ UINT cyDefault;
+ DWORD flStyleDefault;
+ DWORD flExtStyleDefault;
+ DWORD flCtrlTypeMask;
+ CHAR szTextDefault[CCHCCTEXT];
+ INT cStyleFlags;
+ LPCCSTYLEFLAGA aStyleFlags;
+ LPFNCCSTYLEA lpfnStyle;
+ LPFNCCSIZETOTEXTA lpfnSizeToText;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} CCINFOA,*LPCCINFOA;
+typedef UINT(CALLBACK* LPFNCCINFOA)(LPCCINFOA);
+typedef BOOL(CALLBACK* LPFNCCSTYLEW)(HWND,LPCCSTYLEW);
+typedef INT (CALLBACK* LPFNCCSIZETOTEXTW)(DWORD,DWORD,HFONT,LPWSTR);
+typedef struct tagCCINFOW {
+ WCHAR szClass[CCHCCCLASS];
+ DWORD flOptions;
+ WCHAR szDesc[CCHCCDESC];
+ UINT cxDefault;
+ UINT cyDefault;
+ DWORD flStyleDefault;
+ DWORD flExtStyleDefault;
+ DWORD flCtrlTypeMask;
+ WCHAR szTextDefault[CCHCCTEXT];
+ INT cStyleFlags;
+ LPCCSTYLEFLAGW aStyleFlags;
+ LPFNCCSTYLEW lpfnStyle;
+ LPFNCCSIZETOTEXTW lpfnSizeToText;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} CCINFOW,*LPCCINFOW;
+typedef UINT(CALLBACK* LPFNCCINFOW)(LPCCINFOW);
+
+UINT CALLBACK CustomControlInfoA(LPCCINFOA acci);
+UINT CALLBACK CustomControlInfoW(LPCCINFOW acci);
+
+#ifdef UNICODE
+typedef CCSTYLEW CCSTYLE,*LPCCSTYLE;
+typedef CCSTYLEFLAGW CCSTYLEFLAG,*LPCCSTYLEFLAG;
+typedef CCINFOW CCINFO,*LPCCINFO;
+#define LPFNCCSTYLE LPFNCCSTYLEW
+#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTW
+#define LPFNCCINFO LPFNCCINFOW
+#else
+typedef CCSTYLEA CCSTYLE,*LPCCSTYLE;
+typedef CCSTYLEFLAGA CCSTYLEFLAG,*LPCCSTYLEFLAG;
+typedef CCINFOA CCINFO,*LPCCINFO;
+#define LPFNCCSTYLE LPFNCCSTYLEA
+#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTA
+#define LPFNCCINFO LPFNCCINFOA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/dbt.h b/winsup/w32api/include/dbt.h
new file mode 100644
index 000000000..071b0077b
--- /dev/null
+++ b/winsup/w32api/include/dbt.h
@@ -0,0 +1,86 @@
+#ifndef _DBT_H
+#define _DBT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DBT_NO_DISK_SPACE 0x47
+#define DBT_CONFIGMGPRIVATE 0x7FFF
+#define DBT_DEVICEARRIVAL 0x8000
+#define DBT_DEVICEQUERYREMOVE 0x8001
+#define DBT_DEVICEQUERYREMOVEFAILED 0x8002
+#define DBT_DEVICEREMOVEPENDING 0x8003
+#define DBT_DEVICEREMOVECOMPLETE 0x8004
+#define DBT_DEVICETYPESPECIFIC 0x8005
+#define DBT_DEVTYP_OEM 0
+#define DBT_DEVTYP_DEVNODE 1
+#define DBT_DEVTYP_VOLUME 2
+#define DBT_DEVTYP_PORT 3
+#define DBT_DEVTYP_NET 4
+#define DBT_APPYBEGIN 0
+#define DBT_APPYEND 1
+#define DBT_DEVNODES_CHANGED 7
+#define DBT_QUERYCHANGECONFIG 0x17
+#define DBT_CONFIGCHANGED 0x18
+#define DBT_CONFIGCHANGECANCELED 0x19
+#define DBT_MONITORCHANGE 0x1B
+#define DBT_SHELLLOGGEDON 32
+#define DBT_CONFIGMGAPI32 34
+#define DBT_VXDINITCOMPLETE 35
+#define DBT_VOLLOCKQUERYLOCK 0x8041
+#define DBT_VOLLOCKLOCKTAKEN 0x8042
+#define DBT_VOLLOCKLOCKFAILED 0x8043
+#define DBT_VOLLOCKQUERYUNLOCK 0x8044
+#define DBT_VOLLOCKLOCKRELEASED 0x8045
+#define DBT_VOLLOCKUNLOCKFAILED 0x8046
+#define DBT_USERDEFINED 0xFFFF
+#define DBTF_MEDIA 1
+#define DBTF_NET 2
+#define BSM_ALLCOMPONENTS 0
+#define BSM_VXDS 1
+#define BSM_NETDRIVER 2
+#define BSM_INSTALLABLEDRIVERS 4
+#define BSM_APPLICATIONS 8
+#define BSF_QUERY 1
+#define BSF_IGNORECURRENTTASK 2
+#define BSF_FLUSHDISK 4
+#define BSF_NOHANG 8
+#define BSF_POSTMESSAGE 16
+#define BSF_FORCEIFHUNG 32
+#define BSF_NOTIMEOUTIFNOTHUNG 64
+#define BSF_MSGSRV32ISOK_BIT 31
+#define BSF_MSGSRV32ISOK 0x80000000
+
+typedef struct _DEV_BROADCAST_HDR {
+ DWORD dbch_size;
+ DWORD dbch_devicetype;
+ DWORD dbch_reserved;
+} DEV_BROADCAST_HDR,*PDEV_BROADCAST_HDR;
+typedef struct _DEV_BROADCAST_OEM {
+ DWORD dbco_size;
+ DWORD dbco_devicetype;
+ DWORD dbco_reserved;
+ DWORD dbco_identifier;
+ DWORD dbco_suppfunc;
+} DEV_BROADCAST_OEM,*PDEV_BROADCAST_OEM;
+typedef struct _DEV_BROADCAST_PORT {
+ DWORD dbcp_size;
+ DWORD dbcp_devicetype;
+ DWORD dbcp_reserved;
+ char dbcp_name[1];
+} DEV_BROADCAST_PORT,*PDEV_BROADCAST_PORT;
+typedef struct _DEV_BROADCAST_USERDEFINED {
+ struct _DEV_BROADCAST_HDR dbud_dbh;
+ char dbud_szName[1];
+} DEV_BROADCAST_USERDEFINED;
+typedef struct _DEV_BROADCAST_VOLUME {
+ DWORD dbcv_size;
+ DWORD dbcv_devicetype;
+ DWORD dbcv_reserved;
+ DWORD dbcv_unitmask;
+ WORD dbcv_flags;
+} DEV_BROADCAST_VOLUME,*PDEV_BROADCAST_VOLUME;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/dde.h b/winsup/w32api/include/dde.h
new file mode 100644
index 000000000..474f12691
--- /dev/null
+++ b/winsup/w32api/include/dde.h
@@ -0,0 +1,60 @@
+#ifndef _DDE_H
+#define _DDE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WM_DDE_FIRST 0x03E0
+#define WM_DDE_INITIATE (WM_DDE_FIRST)
+#define WM_DDE_TERMINATE (WM_DDE_FIRST+1)
+#define WM_DDE_ADVISE (WM_DDE_FIRST+2)
+#define WM_DDE_UNADVISE (WM_DDE_FIRST+3)
+#define WM_DDE_ACK (WM_DDE_FIRST+4)
+#define WM_DDE_DATA (WM_DDE_FIRST+5)
+#define WM_DDE_REQUEST (WM_DDE_FIRST+6)
+#define WM_DDE_POKE (WM_DDE_FIRST+7)
+#define WM_DDE_EXECUTE (WM_DDE_FIRST+8)
+#define WM_DDE_LAST (WM_DDE_FIRST+8)
+
+#ifndef RC_INVOKED
+typedef struct {
+ unsigned short bAppReturnCode:8,reserved:6,fBusy:1,fAck:1;
+} DDEACK;
+typedef struct {
+ unsigned short reserved:14,fDeferUpd:1,fAckReq:1;
+ short cfFormat;
+} DDEADVISE;
+typedef struct {
+ unsigned short unused:12,fResponse:1,fRelease:1,reserved:1,fAckReq:1;
+ short cfFormat;
+ BYTE Value[1];
+} DDEDATA;
+typedef struct {
+ unsigned short unused:13,fRelease:1,fReserved:2;
+ short cfFormat;
+ BYTE Value[1];
+} DDEPOKE;
+typedef struct {
+ unsigned short unused:13,
+ fRelease:1,
+ fDeferUpd:1,
+ fAckReq:1;
+ short cfFormat;
+} DDELN;
+
+typedef struct {
+ unsigned short unused:12,fAck:1,fRelease:1,fReserved:1,fAckReq:1;
+ short cfFormat;
+ BYTE rgb[1];
+} DDEUP;
+BOOL WINAPI DdeSetQualityOfService(HWND,const SECURITY_QUALITY_OF_SERVICE*,PSECURITY_QUALITY_OF_SERVICE);
+BOOL WINAPI ImpersonateDdeClientWindow(HWND,HWND);
+LONG WINAPI PackDDElParam(UINT,UINT,UINT);
+BOOL WINAPI UnpackDDElParam(UINT,LONG,PUINT,PUINT);
+BOOL WINAPI FreeDDElParam(UINT,LONG);
+LONG WINAPI ReuseDDElParam(LONG,UINT,UINT,UINT,UINT);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/ddeml.h b/winsup/w32api/include/ddeml.h
new file mode 100644
index 000000000..352783e34
--- /dev/null
+++ b/winsup/w32api/include/ddeml.h
@@ -0,0 +1,241 @@
+#ifndef _DDEML_H
+#define _DDEML_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define EXPENTRY CALLBACK
+#define CP_WINANSI 1004
+#define CP_WINUNICODE 1200
+#define XTYPF_NOBLOCK 2
+#define XTYPF_NODATA 4
+#define XTYPF_ACKREQ 8
+#define XCLASS_MASK 0xFC00
+#define XCLASS_BOOL 0x1000
+#define XCLASS_DATA 0x2000
+#define XCLASS_FLAGS 0x4000
+#define XCLASS_NOTIFICATION 0x8000
+#define XST_NULL 0
+#define XST_INCOMPLETE 1
+#define XST_CONNECTED 2
+#define XST_INIT1 3
+#define XST_INIT2 4
+#define XST_REQSENT 5
+#define XST_DATARCVD 6
+#define XST_POKESENT 7
+#define XST_POKEACKRCVD 8
+#define XST_EXECSENT 9
+#define XST_EXECACKRCVD 10
+#define XST_ADVSENT 11
+#define XST_UNADVSENT 12
+#define XST_ADVACKRCVD 13
+#define XST_UNADVACKRCVD 14
+#define XST_ADVDATASENT 15
+#define XST_ADVDATAACKRCVD 16
+#define XTYP_ERROR (XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_ADVDATA (16|XCLASS_FLAGS)
+#define XTYP_ADVREQ (32|XCLASS_DATA|XTYPF_NOBLOCK)
+#define XTYP_ADVSTART (0x30|XCLASS_BOOL)
+#define XTYP_ADVSTOP (0x0040|XCLASS_NOTIFICATION)
+#define XTYP_EXECUTE (0x0050|XCLASS_FLAGS)
+#define XTYP_CONNECT (0x0060|XCLASS_BOOL|XTYPF_NOBLOCK)
+#define XTYP_CONNECT_CONFIRM (0x0070|XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_XACT_COMPLETE (0x0080|XCLASS_NOTIFICATION)
+#define XTYP_POKE (0x0090|XCLASS_FLAGS)
+#define XTYP_REGISTER (0x00A0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_REQUEST (0x00B0|XCLASS_DATA)
+#define XTYP_DISCONNECT (0x00C0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_UNREGISTER (0x00D0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_WILDCONNECT (0x00E0|XCLASS_DATA|XTYPF_NOBLOCK)
+#define XTYP_MASK 0xF0
+#define XTYP_SHIFT 4
+#define TIMEOUT_ASYNC 0xFFFFFFFF
+#define QID_SYNC 0xFFFFFFFF
+#define ST_CONNECTED 1
+#define ST_ADVISE 2
+#define ST_ISLOCAL 4
+#define ST_BLOCKED 8
+#define ST_CLIENT 16
+#define ST_TERMINATED 32
+#define ST_INLIST 64
+#define ST_BLOCKNEXT 128
+#define ST_ISSELF 256
+#define CADV_LATEACK 0xFFFF
+#define DMLERR_NO_ERROR 0
+#define DMLERR_FIRST 0x4000
+#define DMLERR_ADVACKTIMEOUT 0x4000
+#define DMLERR_BUSY 0x4001
+#define DMLERR_DATAACKTIMEOUT 0x4002
+#define DMLERR_DLL_NOT_INITIALIZED 0x4003
+#define DMLERR_DLL_USAGE 0x4004
+#define DMLERR_EXECACKTIMEOUT 0x4005
+#define DMLERR_INVALIDPARAMETER 0x4006
+#define DMLERR_LOW_MEMORY 0x4007
+#define DMLERR_MEMORY_ERROR 0x4008
+#define DMLERR_NOTPROCESSED 0x4009
+#define DMLERR_NO_CONV_ESTABLISHED 0x400a
+#define DMLERR_POKEACKTIMEOUT 0x400b
+#define DMLERR_POSTMSG_FAILED 0x400c
+#define DMLERR_REENTRANCY 0x400d
+#define DMLERR_SERVER_DIED 0x400e
+#define DMLERR_SYS_ERROR 0x400f
+#define DMLERR_UNADVACKTIMEOUT 0x4010
+#define DMLERR_UNFOUND_QUEUE_ID 0x4011
+#define DMLERR_LAST 0x4011
+#define DDE_FACK 0x8000
+#define DDE_FBUSY 0x4000
+#define DDE_FDEFERUPD 0x4000
+#define DDE_FACKREQ 0x8000
+#define DDE_FRELEASE 0x2000
+#define DDE_FREQUESTED 0x1000
+#define DDE_FAPPSTATUS 0x00ff
+#define DDE_FNOTPROCESSED 0
+#define DDE_FACKRESERVED (~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS))
+#define DDE_FADVRESERVED (~(DDE_FACKREQ|DDE_FDEFERUPD))
+#define DDE_FDATRESERVED (~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED))
+#define DDE_FPOKRESERVED (~DDE_FRELEASE)
+#define MSGF_DDEMGR 0x8001
+#define CBR_BLOCK ((HDDEDATA)0xffffffff)
+#define CBF_FAIL_SELFCONNECTIONS 0x1000
+#define CBF_FAIL_CONNECTIONS 0x2000
+#define CBF_FAIL_ADVISES 0x4000
+#define CBF_FAIL_EXECUTES 0x8000
+#define CBF_FAIL_POKES 0x10000
+#define CBF_FAIL_REQUESTS 0x20000
+#define CBF_FAIL_ALLSVRXACTIONS 0x3f000
+#define CBF_SKIP_CONNECT_CONFIRMS 0x40000
+#define CBF_SKIP_REGISTRATIONS 0x80000
+#define CBF_SKIP_UNREGISTRATIONS 0x100000
+#define CBF_SKIP_DISCONNECTS 0x200000
+#define CBF_SKIP_ALLNOTIFICATIONS 0x3c0000
+#define APPCMD_CLIENTONLY 0x10L
+#define APPCMD_FILTERINITS 0x20L
+#define APPCMD_MASK 0xFF0L
+#define APPCLASS_STANDARD 0
+#define APPCLASS_MASK 0xFL
+#define EC_ENABLEALL 0
+#define EC_ENABLEONE ST_BLOCKNEXT
+#define EC_DISABLE ST_BLOCKED
+#define EC_QUERYWAITING 2
+#define DNS_REGISTER 1
+#define DNS_UNREGISTER 2
+#define DNS_FILTERON 4
+#define DNS_FILTEROFF 8
+#define HDATA_APPOWNED 1
+#define MAX_MONITORS 4
+#define APPCLASS_MONITOR 1L
+#define XTYP_MONITOR (XCLASS_NOTIFICATION|XTYPF_NOBLOCK|0xF0)
+#define MF_HSZ_INFO 0x1000000
+#define MF_SENDMSGS 0x2000000
+#define MF_POSTMSGS 0x4000000
+#define MF_CALLBACKS 0x8000000
+#define MF_ERRORS 0x10000000
+#define MF_LINKS 0x20000000
+#define MF_CONV 0x40000000
+#define MF_MASK 0xFF000000
+
+DECLARE_HANDLE(HCONVLIST);
+DECLARE_HANDLE(HCONV);
+DECLARE_HANDLE(HSZ);
+DECLARE_HANDLE(HDDEDATA);
+typedef HDDEDATA CALLBACK FNCALLBACK(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
+typedef HDDEDATA(CALLBACK *PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
+typedef struct tagHSZPAIR {
+ HSZ hszSvc;
+ HSZ hszTopic;
+} HSZPAIR, *PHSZPAIR;
+typedef struct tagCONVCONTEXT {
+ UINT cb;
+ UINT wFlags;
+ UINT wCountryID;
+ int iCodePage;
+ DWORD dwLangID;
+ DWORD dwSecurity;
+ SECURITY_QUALITY_OF_SERVICE qos;
+} CONVCONTEXT,*PCONVCONTEXT;
+typedef struct tagCONVINFO {
+ DWORD cb;
+ DWORD hUser;
+ HCONV hConvPartner;
+ HSZ hszSvcPartner;
+ HSZ hszServiceReq;
+ HSZ hszTopic;
+ HSZ hszItem;
+ UINT wFmt;
+ UINT wType;
+ UINT wStatus;
+ UINT wConvst;
+ UINT wLastError;
+ HCONVLIST hConvList;
+ CONVCONTEXT ConvCtxt;
+ HWND hwnd;
+ HWND hwndPartner;
+} CONVINFO,*PCONVINFO;
+typedef struct tagDDEML_MSG_HOOK_DATA {
+ UINT uiLo;
+ UINT uiHi;
+ DWORD cbData;
+ DWORD Data[8];
+} DDEML_MSG_HOOK_DATA;
+
+BOOL WINAPI DdeAbandonTransaction(DWORD,HCONV,DWORD);
+PBYTE WINAPI DdeAccessData(HDDEDATA,PDWORD);
+HDDEDATA WINAPI DdeAddData(HDDEDATA,PBYTE,DWORD,DWORD);
+HDDEDATA WINAPI DdeClientTransaction(PBYTE,DWORD,HCONV,HSZ,UINT,UINT,DWORD,PDWORD);
+int WINAPI DdeCmpStringHandles(HSZ,HSZ);
+HCONV WINAPI DdeConnect(DWORD,HSZ,HSZ,PCONVCONTEXT);
+HCONVLIST WINAPI DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,PCONVCONTEXT);
+HDDEDATA WINAPI DdeCreateDataHandle(DWORD,PBYTE,DWORD,DWORD,HSZ,UINT,UINT);
+HSZ WINAPI DdeCreateStringHandleA(DWORD,LPSTR,int);
+HSZ WINAPI DdeCreateStringHandleW(DWORD,LPWSTR,int);
+BOOL WINAPI DdeDisconnect(HCONV);
+BOOL WINAPI DdeDisconnectList(HCONVLIST);
+BOOL WINAPI DdeEnableCallback(DWORD,HCONV,UINT);
+BOOL WINAPI DdeFreeDataHandle(HDDEDATA);
+BOOL WINAPI DdeFreeStringHandle(DWORD,HSZ);
+DWORD WINAPI DdeGetData(HDDEDATA,PBYTE,DWORD,DWORD);
+UINT WINAPI DdeGetLastError(DWORD);
+BOOL WINAPI DdeImpersonateClient(HCONV);
+UINT WINAPI DdeInitializeA(PDWORD,PFNCALLBACK,DWORD,DWORD);
+UINT WINAPI DdeInitializeW(PDWORD,PFNCALLBACK,DWORD,DWORD);
+BOOL WINAPI DdeKeepStringHandle(DWORD,HSZ);
+HDDEDATA WINAPI DdeNameService(DWORD,HSZ,HSZ,UINT);
+BOOL WINAPI DdePostAdvise(DWORD,HSZ,HSZ);
+UINT WINAPI DdeQueryConvInfo(HCONV,DWORD,PCONVINFO);
+HCONV WINAPI DdeQueryNextServer(HCONVLIST,HCONV);
+DWORD WINAPI DdeQueryStringA(DWORD,HSZ,LPSTR,DWORD,int);
+DWORD WINAPI DdeQueryStringW(DWORD,HSZ,LPWSTR,DWORD,int);
+HCONV WINAPI DdeReconnect(HCONV);
+BOOL WINAPI DdeSetUserHandle(HCONV,DWORD,DWORD);
+BOOL WINAPI DdeUnaccessData(HDDEDATA);
+BOOL WINAPI DdeUninitialize(DWORD);
+
+#ifdef UNICODE
+#define SZDDESYS_TOPIC L"System"
+#define SZDDESYS_ITEM_TOPICS L"Topics"
+#define SZDDESYS_ITEM_SYSITEMS L"SysItems"
+#define SZDDESYS_ITEM_RTNMSG L"ReturnMessage"
+#define SZDDESYS_ITEM_STATUS L"Status"
+#define SZDDESYS_ITEM_FORMATS L"Formats"
+#define SZDDESYS_ITEM_HELP L"Help"
+#define SZDDE_ITEM_ITEMLIST L"TopicItemList"
+#define DdeCreateStringHandle DdeCreateStringHandleW
+#define DdeInitialize DdeInitializeW
+#define DdeQueryString DdeQueryStringW
+#else
+#define SZDDESYS_TOPIC "System"
+#define SZDDESYS_ITEM_TOPICS "Topics"
+#define SZDDESYS_ITEM_SYSITEMS "SysItems"
+#define SZDDESYS_ITEM_RTNMSG "ReturnMessage"
+#define SZDDESYS_ITEM_STATUS "Status"
+#define SZDDESYS_ITEM_FORMATS "Formats"
+#define SZDDESYS_ITEM_HELP "Help"
+#define SZDDE_ITEM_ITEMLIST "TopicItemList"
+#define DdeCreateStringHandle DdeCreateStringHandleA
+#define DdeInitialize DdeInitializeA
+#define DdeQueryString DdeQueryStringA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _DDEML_H */
diff --git a/winsup/w32api/include/dlgs.h b/winsup/w32api/include/dlgs.h
new file mode 100644
index 000000000..d26e19156
--- /dev/null
+++ b/winsup/w32api/include/dlgs.h
@@ -0,0 +1,182 @@
+#ifndef _DLGS_H
+#define _DLGS_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define FILEOPENORD 1536
+#define MULTIFILEOPENORD 1537
+#define PRINTDLGORD 1538
+#define PRNSETUPDLGORD 1539
+#define FINDDLGORD 1540
+#define REPLACEDLGORD 1541
+#define FONTDLGORD 1542
+#define FORMATDLGORD31 1543
+#define FORMATDLGORD30 1544
+#define PAGESETUPDLGORD 1546
+#define ctlFirst 0x400
+#define ctlLast 0x4ff
+#define chx1 0x410
+#define chx2 0x411
+#define chx3 0x412
+#define chx4 0x413
+#define chx5 0x414
+#define chx6 0x415
+#define chx7 0x416
+#define chx8 0x417
+#define chx9 0x418
+#define chx10 0x419
+#define chx11 0x41a
+#define chx12 0x41b
+#define chx13 0x41c
+#define chx14 0x41d
+#define chx15 0x41e
+#define chx16 0x41f
+#define cmb1 0x470
+#define cmb2 0x471
+#define cmb3 0x472
+#define cmb4 0x473
+#define cmb5 0x474
+#define cmb6 0x475
+#define cmb7 0x476
+#define cmb8 0x477
+#define cmb9 0x478
+#define cmb10 0x479
+#define cmb11 0x47a
+#define cmb12 0x47b
+#define cmb13 0x47c
+#define cmb14 0x47d
+#define cmb15 0x47e
+#define cmb16 0x47f
+#define edt1 0x480
+#define edt2 0x481
+#define edt3 0x482
+#define edt4 0x483
+#define edt5 0x484
+#define edt6 0x485
+#define edt7 0x486
+#define edt8 0x487
+#define edt9 0x488
+#define edt10 0x489
+#define edt11 0x48a
+#define edt12 0x48b
+#define edt13 0x48c
+#define edt14 0x48d
+#define edt15 0x48e
+#define edt16 0x48f
+#define frm1 0x434
+#define frm2 0x435
+#define frm3 0x436
+#define frm4 0x437
+#define grp1 0x430
+#define grp2 0x431
+#define grp3 0x432
+#define grp4 0x433
+#define ico1 0x43c
+#define ico2 0x43d
+#define ico3 0x43e
+#define ico4 0x43f
+#define lst1 0x460
+#define lst2 0x461
+#define lst3 0x462
+#define lst4 0x463
+#define lst5 0x464
+#define lst6 0x465
+#define lst7 0x466
+#define lst8 0x467
+#define lst9 0x468
+#define lst10 0x469
+#define lst11 0x46a
+#define lst12 0x46b
+#define lst13 0x46c
+#define lst14 0x46d
+#define lst15 0x46e
+#define lst16 0x46f
+#define psh1 0x400
+#define psh2 0x401
+#define psh3 0x402
+#define psh4 0x403
+#define psh5 0x404
+#define psh6 0x405
+#define psh7 0x406
+#define psh8 0x407
+#define psh9 0x408
+#define psh10 0x409
+#define psh11 0x40a
+#define psh12 0x40b
+#define psh13 0x40c
+#define psh14 0x40d
+#define psh15 0x40e
+#define pshHelp 0x40e
+#define psh16 0x40f
+#define rad1 0x420
+#define rad2 0x421
+#define rad3 0x422
+#define rad4 0x423
+#define rad5 0x424
+#define rad6 0x425
+#define rad7 0x426
+#define rad8 0x427
+#define rad9 0x428
+#define rad10 0x429
+#define rad11 0x42a
+#define rad12 0x42b
+#define rad13 0x42c
+#define rad14 0x42d
+#define rad15 0x42e
+#define rad16 0x42f
+#define rct1 0x438
+#define rct2 0x439
+#define rct3 0x43a
+#define rct4 0x43b
+#define scr1 0x490
+#define scr2 0x491
+#define scr3 0x492
+#define scr4 0x493
+#define scr5 0x494
+#define scr6 0x495
+#define scr7 0x496
+#define scr8 0x497
+#define stc1 0x440
+#define stc2 0x441
+#define stc3 0x442
+#define stc4 0x443
+#define stc5 0x444
+#define stc6 0x445
+#define stc7 0x446
+#define stc8 0x447
+#define stc9 0x448
+#define stc10 0x449
+#define stc11 0x44a
+#define stc12 0x44b
+#define stc13 0x44c
+#define stc14 0x44d
+#define stc15 0x44e
+#define stc16 0x44f
+#define stc17 0x450
+#define stc18 0x451
+#define stc19 0x452
+#define stc20 0x453
+#define stc21 0x454
+#define stc22 0x455
+#define stc23 0x456
+#define stc24 0x457
+#define stc25 0x458
+#define stc26 0x459
+#define stc27 0x45a
+#define stc28 0x45b
+#define stc29 0x45c
+#define stc30 0x45d
+#define stc31 0x45e
+#define stc32 0x45f
+#ifndef RC_INVOKED
+typedef struct tagCRGB {
+ BYTE bRed;
+ BYTE bGreen;
+ BYTE bBlue;
+ BYTE bExtra;
+} CRGB;
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/httpext.h b/winsup/w32api/include/httpext.h
new file mode 100644
index 000000000..4b6f9e282
--- /dev/null
+++ b/winsup/w32api/include/httpext.h
@@ -0,0 +1,87 @@
+/*
+ httpext.h - Header for ISAPI extensions.
+
+ 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 _HTTPEXT_H
+#define _HTTPEXT_H
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define HSE_VERSION_MAJOR 2
+#define HSE_VERSION_MINOR 0
+#define HSE_LOG_BUFFER_LEN 80
+#define HSE_MAX_EXT_DLL_NAME_LEN 256
+#define HSE_STATUS_SUCCESS 1
+#define HSE_STATUS_SUCCESS_AND_KEEP_CONN 2
+#define HSE_STATUS_PENDING 3
+#define HSE_STATUS_ERROR 4
+#define HSE_REQ_BASE 0
+#define HSE_REQ_SEND_URL_REDIRECT_RESP 1
+#define HSE_REQ_SEND_URL 2
+#define HSE_REQ_SEND_RESPONSE_HEADER 3
+#define HSE_REQ_DONE_WITH_SESSION 4
+#define HSE_REQ_END_RESERVED 1000
+#define HSE_TERM_ADVISORY_UNLOAD 0x00000001
+#define HSE_TERM_MUST_UNLOAD 0x00000002
+#define HSE_IO_SYNC 0x00000001
+#define HSE_IO_ASYNC 0x00000002
+#define HSE_IO_DISCONNECT_AFTER_SEND 0x00000004
+#define HSE_IO_SEND_HEADERS 0x00000008
+typedef LPVOID HCONN;
+typedef struct _HSE_VERSION_INFO {
+ DWORD dwExtensionVersion;
+ CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];
+} HSE_VERSION_INFO, *LPHSE_VERSION_INFO;
+typedef struct _EXTENSION_CONTROL_BLOCK {
+ DWORD cbSize;
+ DWORD dwVersion;
+ HCONN ConnID;
+ DWORD dwHttpStatusCode;
+ CHAR lpszLogData[HSE_LOG_BUFFER_LEN];
+ LPSTR lpszMethod;
+ LPSTR lpszQueryString;
+ LPSTR lpszPathInfo;
+ LPSTR lpszPathTranslated;
+ DWORD cbTotalBytes;
+ DWORD cbAvailable;
+ LPBYTE lpbData;
+ LPSTR lpszContentType;
+ BOOL (PASCAL *GetServerVariable)(HCONN,LPSTR,LPVOID,LPDWORD);
+ BOOL (PASCAL *WriteClient)(HCONN,LPVOID,LPDWORD,DWORD);
+ BOOL (PASCAL *ReadClient)(HCONN,LPVOID,LPDWORD);
+ BOOL (PASCAL *ServerSupportFunction)(HCONN,DWORD,LPVOID,LPDWORD,LPDWORD);
+} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;
+typedef BOOL (PASCAL *PFN_GETEXTENSIONVERSION)(HSE_VERSION_INFO*);
+typedef DWORD (PASCAL *PFN_HTTPEXTENSIONPROC)(EXTENSION_CONTROL_BLOCK*);
+typedef BOOL (PASCAL *PFN_TERMINATEEXTENSION)(DWORD);
+typedef VOID (PASCAL *PFN_HSE_IO_COMPLETION)(EXTENSION_CONTROL_BLOCK*,PVOID,DWORD,DWORD);
+typedef struct _HSE_TF_INFO {
+ PFN_HSE_IO_COMPLETION pfnHseIO;
+ PVOID pContext;
+ HANDLE hFile;
+ LPCSTR pszStatusCode;
+ DWORD BytesToWrite;
+ DWORD Offset;
+ PVOID pHead;
+ DWORD HeadLength;
+ PVOID pTail;
+ DWORD TailLength;
+ DWORD dwFlags;
+} HSE_TF_INFO, *LPHSE_TF_INFO;
+BOOL PASCAL GetExtensionVersion(HSE_VERSION_INFO*);
+DWORD PASCAL HttpExtensionProc(EXTENSION_CONTROL_BLOCK*);
+BOOL PASCAL TerminateExtension(DWORD);
+#ifdef __cplusplus
+}
+#endif
+#endif /* _HTTPEXT_H */
diff --git a/winsup/w32api/include/imagehlp.h b/winsup/w32api/include/imagehlp.h
new file mode 100644
index 000000000..2a3eb6f08
--- /dev/null
+++ b/winsup/w32api/include/imagehlp.h
@@ -0,0 +1,326 @@
+/*
+ imagehlp.h - Include file for IMAGEHLP.DLL APIs
+
+ Written by Mumit Khan <khan@nanotech.wisc.edu>
+
+ This file is part of a free library for the Win32 API.
+
+ NOTE: This strictly does not belong in the Win32 API since it's
+ really part of Platform SDK. However,GDB needs it and we might
+ as well provide it here.
+
+ 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 _IMAGEHLP_H
+#define _IMAGEHLP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define API_VERSION_NUMBER 7
+#define BIND_NO_BOUND_IMPORTS 0x00000001
+#define BIND_NO_UPDATE 0x00000002
+#define BIND_ALL_IMAGES 0x00000004
+#define BIND_CACHE_IMPORT_DLLS 0x00000008
+#define CBA_DEFERRED_SYMBOL_LOAD_START 1
+#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 2
+#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 3
+#define CBA_SYMBOLS_UNLOADED 4
+#define CBA_DUPLICATE_SYMBOL 5
+#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 1
+#define CERT_PE_IMAGE_DIGEST_RESOURCES 2
+#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 4
+#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 8
+#define CERT_SECTION_TYPE_ANY 255
+#define CHECKSUM_SUCCESS 0
+#define CHECKSUM_OPEN_FAILURE 1
+#define CHECKSUM_MAP_FAILURE 2
+#define CHECKSUM_MAPVIEW_FAILURE 3
+#define CHECKSUM_UNICODE_FAILURE 4
+#define IMAGE_SEPARATION 65536
+#define SPLITSYM_REMOVE_PRIVATE 1
+#define SPLITSYM_EXTRACT_ALL 2
+#define SPLITSYM_SYMBOLPATH_IS_SRC 4
+#define SYMF_OMAP_GENERATED 1
+#define SYMF_OMAP_MODIFIED 2
+#define SYMOPT_CASE_INSENSITIVE 1
+#define SYMOPT_UNDNAME 2
+#define SYMOPT_DEFERRED_LOADS 4
+#define SYMOPT_NO_CPP 8
+#define SYMOPT_LOAD_LINES 16
+#define SYMOPT_OMAP_FIND_NEAREST 32
+#define UNDNAME_COMPLETE 0
+#define UNDNAME_NO_LEADING_UNDERSCORES 1
+#define UNDNAME_NO_MS_KEYWORDS 2
+#define UNDNAME_NO_FUNCTION_RETURNS 4
+#define UNDNAME_NO_ALLOCATION_MODEL 8
+#define UNDNAME_NO_ALLOCATION_LANGUAGE 16
+#define UNDNAME_NO_MS_THISTYPE 32
+#define UNDNAME_NO_CV_THISTYPE 64
+#define UNDNAME_NO_THISTYPE 96
+#define UNDNAME_NO_ACCESS_SPECIFIERS 128
+#define UNDNAME_NO_THROW_SIGNATURES 256
+#define UNDNAME_NO_MEMBER_TYPE 512
+#define UNDNAME_NO_RETURN_UDT_MODEL 1024
+#define UNDNAME_32_BIT_DECODE 2048
+#define UNDNAME_NAME_ONLY 4096
+#define UNDNAME_NO_ARGUMENTS 8192
+#define UNDNAME_NO_SPECIAL_SYMS 16384
+
+#define _IMAGEHLPAPI DECLSPEC_IMPORT WINAPI
+
+#ifndef RC_INVOKED
+
+typedef enum _IMAGEHLP_STATUS_REASON {
+ BindOutOfMemory,
+ BindRvaToVaFailed,
+ BindNoRoomInImage,
+ BindImportModuleFailed,
+ BindImportProcedureFailed,
+ BindImportModule,
+ BindImportProcedure,
+ BindForwarder,
+ BindForwarderNOT,
+ BindImageModified,
+ BindExpandFileHeaders,
+ BindImageComplete,
+ BindMismatchedSymbols,
+ BindSymbolsNotUpdated
+} IMAGEHLP_STATUS_REASON;
+typedef BOOL(STDCALL*PIMAGEHLP_STATUS_ROUTINE)(IMAGEHLP_STATUS_REASON,LPSTR,LPSTR,ULONG,ULONG);
+typedef struct _LOADED_IMAGE {
+ LPSTR ModuleName;
+ HANDLE hFile;
+ PUCHAR MappedAddress;
+ PIMAGE_NT_HEADERS FileHeader;
+ PIMAGE_SECTION_HEADER LastRvaSection;
+ ULONG NumberOfSections;
+ PIMAGE_SECTION_HEADER Sections;
+ ULONG Characteristics;
+ BOOLEAN fSystemImage;
+ BOOLEAN fDOSImage;
+ LIST_ENTRY Links;
+ ULONG SizeOfImage;
+} LOADED_IMAGE,*PLOADED_IMAGE;
+typedef struct _IMAGE_DEBUG_INFORMATION {
+ LIST_ENTRY List;
+ DWORD Size;
+ PVOID MappedBase;
+ USHORT Machine;
+ USHORT Characteristics;
+ DWORD CheckSum;
+ DWORD ImageBase;
+ DWORD SizeOfImage;
+ DWORD NumberOfSections;
+ PIMAGE_SECTION_HEADER Sections;
+ DWORD ExportedNamesSize;
+ LPSTR ExportedNames;
+ DWORD NumberOfFunctionTableEntries;
+ PIMAGE_FUNCTION_ENTRY FunctionTableEntries;
+ DWORD LowestFunctionStartingAddress;
+ DWORD HighestFunctionEndingAddress;
+ DWORD NumberOfFpoTableEntries;
+ PFPO_DATA FpoTableEntries;
+ DWORD SizeOfCoffSymbols;
+ PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
+ DWORD SizeOfCodeViewSymbols;
+ PVOID CodeViewSymbols;
+ LPSTR ImageFilePath;
+ LPSTR ImageFileName;
+ LPSTR DebugFilePath;
+ DWORD TimeDateStamp;
+ BOOL RomImage;
+ PIMAGE_DEBUG_DIRECTORY DebugDirectory;
+ DWORD NumberOfDebugDirectories;
+ DWORD Reserved[3];
+} IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION;
+typedef enum {
+ AddrMode1616,
+ AddrMode1632,
+ AddrModeReal,
+ AddrModeFlat
+} ADDRESS_MODE;
+typedef struct _tagADDRESS {
+ DWORD Offset;
+ WORD Segment;
+ ADDRESS_MODE Mode;
+} ADDRESS,*LPADDRESS;
+typedef struct _KDHELP {
+ DWORD Thread;
+ DWORD ThCallbackStack;
+ DWORD NextCallback;
+ DWORD FramePointer;
+ DWORD KiCallUserMode;
+ DWORD KeUserCallbackDispatcher;
+ DWORD SystemRangeStart;
+} KDHELP,*PKDHELP;
+typedef struct _tagSTACKFRAME {
+ ADDRESS AddrPC;
+ ADDRESS AddrReturn;
+ ADDRESS AddrFrame;
+ ADDRESS AddrStack;
+ LPVOID FuncTableEntry;
+ DWORD Params[4];
+ BOOL Far;
+ BOOL Virtual;
+ DWORD Reserved[3];
+ KDHELP KdHelp;
+} STACKFRAME,*LPSTACKFRAME;
+typedef BOOL(STDCALL*PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE ,LPCVOID,LPVOID,DWORD,LPDWORD);
+typedef LPVOID(STDCALL*PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE,DWORD);
+typedef DWORD(STDCALL*PGET_MODULE_BASE_ROUTINE)(HANDLE,DWORD);
+typedef DWORD(STDCALL*PTRANSLATE_ADDRESS_ROUTINE)(HANDLE,HANDLE,LPADDRESS);
+typedef struct API_VERSION {
+ USHORT MajorVersion;
+ USHORT MinorVersion;
+ USHORT Revision;
+ USHORT Reserved;
+} API_VERSION,*LPAPI_VERSION;
+typedef BOOL(CALLBACK*PSYM_ENUMMODULES_CALLBACK)(LPSTR,ULONG,PVOID);
+typedef BOOL(CALLBACK*PSYM_ENUMSYMBOLS_CALLBACK)(LPSTR,ULONG,ULONG,PVOID);
+typedef BOOL(CALLBACK*PENUMLOADED_MODULES_CALLBACK)(LPSTR,ULONG,ULONG,PVOID);
+typedef BOOL(CALLBACK*PSYMBOL_REGISTERED_CALLBACK)(HANDLE,ULONG,PVOID,PVOID);
+typedef enum {
+ SymNone,
+ SymCoff,
+ SymCv,
+ SymPdb,
+ SymExport,
+ SymDeferred,
+ SymSym
+} SYM_TYPE;
+typedef struct _IMAGEHLP_SYMBOL {
+ DWORD SizeOfStruct;
+ DWORD Address;
+ DWORD Size;
+ DWORD Flags;
+ DWORD MaxNameLength;
+ CHAR Name[1];
+} IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL;
+typedef struct _IMAGEHLP_MODULE {
+ DWORD SizeOfStruct;
+ DWORD BaseOfImage;
+ DWORD ImageSize;
+ DWORD TimeDateStamp;
+ DWORD CheckSum;
+ DWORD NumSyms;
+ SYM_TYPE SymType;
+ CHAR ModuleName[32];
+ CHAR ImageName[256];
+ CHAR LoadedImageName[256];
+} IMAGEHLP_MODULE,*PIMAGEHLP_MODULE;
+typedef struct _IMAGEHLP_LINE {
+ DWORD SizeOfStruct;
+ DWORD Key;
+ DWORD LineNumber;
+ PCHAR FileName;
+ DWORD Address;
+} IMAGEHLP_LINE,*PIMAGEHLP_LINE;
+typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
+ DWORD SizeOfStruct;
+ DWORD BaseOfImage;
+ DWORD CheckSum;
+ DWORD TimeDateStamp;
+ CHAR FileName[MAX_PATH];
+ BOOLEAN Reparse;
+} IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
+typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
+ DWORD SizeOfStruct;
+ DWORD NumberOfDups;
+ PIMAGEHLP_SYMBOL Symbol;
+ ULONG SelectedSymbol;
+} IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL;
+typedef PVOID DIGEST_HANDLE;
+typedef BOOL(WINAPI*DIGEST_FUNCTION)(DIGEST_HANDLE refdata,PBYTE pData,DWORD dwLength);
+
+PIMAGE_NT_HEADERS _IMAGEHLPAPI CheckSumMappedFile(LPVOID,DWORD,LPDWORD,LPDWORD);
+DWORD _IMAGEHLPAPI MapFileAndCheckSumA(LPSTR,LPDWORD,LPDWORD);
+DWORD _IMAGEHLPAPI MapFileAndCheckSumW(PWSTR,LPDWORD,LPDWORD);
+BOOL _IMAGEHLPAPI TouchFileTimes(HANDLE,LPSYSTEMTIME);
+BOOL _IMAGEHLPAPI SplitSymbols(LPSTR,LPSTR,LPSTR,DWORD);
+HANDLE _IMAGEHLPAPI FindDebugInfoFile(LPSTR,LPSTR,LPSTR);
+HANDLE _IMAGEHLPAPI FindExecutableImage(LPSTR,LPSTR,LPSTR);
+BOOL _IMAGEHLPAPI UpdateDebugInfoFile(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS);
+BOOL _IMAGEHLPAPI UpdateDebugInfoFileEx(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS,DWORD);
+BOOL _IMAGEHLPAPI BindImage(IN LPSTR,IN LPSTR,IN LPSTR);
+BOOL _IMAGEHLPAPI BindImageEx(IN DWORD,IN LPSTR,IN LPSTR,IN LPSTR,IN PIMAGEHLP_STATUS_ROUTINE);
+BOOL _IMAGEHLPAPI ReBaseImage(IN LPSTR,IN LPSTR,IN BOOL, IN BOOL,IN BOOL, IN ULONG, OUT ULONG*, OUT ULONG*, OUT ULONG*, IN OUT ULONG*, IN ULONG);
+
+PLOADED_IMAGE _IMAGEHLPAPI ImageLoad(LPSTR,LPSTR);
+BOOL _IMAGEHLPAPI ImageUnload(PLOADED_IMAGE);
+PIMAGE_NT_HEADERS _IMAGEHLPAPI ImageNtHeader(IN PVOID);
+PVOID _IMAGEHLPAPI ImageDirectoryEntryToData(IN PVOID,IN BOOLEAN,IN USHORT,OUT PULONG);
+PIMAGE_SECTION_HEADER _IMAGEHLPAPI ImageRvaToSection(IN PIMAGE_NT_HEADERS,IN PVOID,IN ULONG);
+PVOID _IMAGEHLPAPI ImageRvaToVa(IN PIMAGE_NT_HEADERS,IN PVOID,IN ULONG,IN OUT PIMAGE_SECTION_HEADER*);
+BOOL _IMAGEHLPAPI MapAndLoad(LPSTR,LPSTR,PLOADED_IMAGE,BOOL,BOOL);
+BOOL _IMAGEHLPAPI GetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY);
+DWORD _IMAGEHLPAPI GetImageUnusedHeaderBytes(PLOADED_IMAGE,LPDWORD);
+BOOL _IMAGEHLPAPI SetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY);
+BOOL _IMAGEHLPAPI UnMapAndLoad(PLOADED_IMAGE);
+PIMAGE_DEBUG_INFORMATION _IMAGEHLPAPI MapDebugInformation(HANDLE,LPSTR,LPSTR,DWORD);
+BOOL _IMAGEHLPAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION);
+HANDLE _IMAGEHLPAPI FindExecutableImage(LPSTR,LPSTR,LPSTR);
+BOOL _IMAGEHLPAPI SearchTreeForFile(LPSTR,LPSTR,LPSTR);
+BOOL _IMAGEHLPAPI MakeSureDirectoryPathExists(LPCSTR);
+DWORD _IMAGEHLPAPI WINAPI UnDecorateSymbolName(LPCSTR,LPSTR,DWORD, DWORD);
+BOOL
+_IMAGEHLPAPI
+StackWalk(DWORD,HANDLE,HANDLE,LPSTACKFRAME,LPVOID,PREAD_PROCESS_MEMORY_ROUTINE,PFUNCTION_TABLE_ACCESS_ROUTINE,PGET_MODULE_BASE_ROUTINE,PTRANSLATE_ADDRESS_ROUTINE);
+LPAPI_VERSION _IMAGEHLPAPI ImagehlpApiVersion(VOID);
+LPAPI_VERSION _IMAGEHLPAPI ImagehlpApiVersionEx(LPAPI_VERSION);
+DWORD _IMAGEHLPAPI GetTimestampForLoadedLibrary(HMODULE);
+BOOL _IMAGEHLPAPI RemovePrivateCvSymbolic(PCHAR,PCHAR*,ULONG*);
+VOID _IMAGEHLPAPI RemoveRelocations(PCHAR);
+DWORD _IMAGEHLPAPI SymSetOptions(IN DWORD);
+DWORD _IMAGEHLPAPI SymGetOptions(VOID);
+BOOL _IMAGEHLPAPI SymCleanup(IN HANDLE);
+BOOL _IMAGEHLPAPI SymEnumerateModules(IN HANDLE,IN PSYM_ENUMMODULES_CALLBACK,IN PVOID);
+BOOL _IMAGEHLPAPI SymEnumerateSymbols(IN HANDLE,IN DWORD,IN PSYM_ENUMSYMBOLS_CALLBACK,IN PVOID);
+BOOL _IMAGEHLPAPI EnumerateLoadedModules(IN HANDLE,IN PENUMLOADED_MODULES_CALLBACK,IN PVOID);
+LPVOID _IMAGEHLPAPI SymFunctionTableAccess(HANDLE,DWORD);
+BOOL _IMAGEHLPAPI SymGetModuleInfo(IN HANDLE,IN DWORD,OUT PIMAGEHLP_MODULE);
+DWORD _IMAGEHLPAPI SymGetModuleBase(IN HANDLE,IN DWORD);
+BOOL _IMAGEHLPAPI SymGetSymFromAddr(IN HANDLE,IN DWORD,OUT PDWORD,OUT PIMAGEHLP_SYMBOL);
+BOOL _IMAGEHLPAPI SymGetSymFromName(IN HANDLE,IN LPSTR,OUT PIMAGEHLP_SYMBOL);
+BOOL _IMAGEHLPAPI SymGetSymNext(IN HANDLE,IN OUT PIMAGEHLP_SYMBOL);
+BOOL _IMAGEHLPAPI SymGetSymPrev(IN HANDLE,IN OUT PIMAGEHLP_SYMBOL);
+BOOL _IMAGEHLPAPI SymGetLineFromAddr(IN HANDLE,IN DWORD,OUT PDWORD,OUT PIMAGEHLP_LINE);
+BOOL _IMAGEHLPAPI SymGetLineFromName(IN HANDLE,IN LPSTR,IN LPSTR,IN DWORD,OUT PLONG,IN OUT PIMAGEHLP_LINE);
+BOOL _IMAGEHLPAPI SymGetLineNext(IN HANDLE,IN OUT PIMAGEHLP_LINE);
+BOOL _IMAGEHLPAPI SymGetLinePrev(IN HANDLE,IN OUT PIMAGEHLP_LINE);
+BOOL _IMAGEHLPAPI SymMatchFileName(IN LPSTR,IN LPSTR,OUT LPSTR*,OUT LPSTR*);
+BOOL _IMAGEHLPAPI SymInitialize(IN HANDLE,IN LPSTR,IN BOOL);
+BOOL _IMAGEHLPAPI SymGetSearchPath(IN HANDLE,OUT LPSTR,IN DWORD);
+BOOL _IMAGEHLPAPI SymSetSearchPath(IN HANDLE,IN LPSTR);
+BOOL _IMAGEHLPAPI SymLoadModule(IN HANDLE,IN HANDLE,IN PSTR,IN PSTR,IN DWORD,IN DWORD);
+BOOL _IMAGEHLPAPI SymUnloadModule(IN HANDLE,IN DWORD);
+BOOL _IMAGEHLPAPI SymUnDName(IN PIMAGEHLP_SYMBOL,OUT LPSTR,IN DWORD);
+BOOL _IMAGEHLPAPI SymRegisterCallback(IN HANDLE,IN PSYMBOL_REGISTERED_CALLBACK,IN PVOID);
+BOOL _IMAGEHLPAPI ImageGetDigestStream(IN HANDLE,IN DWORD,IN DIGEST_FUNCTION,IN DIGEST_HANDLE);
+BOOL _IMAGEHLPAPI ImageAddCertificate(IN HANDLE,IN LPWIN_CERTIFICATE,OUT PDWORD);
+BOOL _IMAGEHLPAPI ImageRemoveCertificate(IN HANDLE,IN DWORD);
+BOOL _IMAGEHLPAPI ImageEnumerateCertificates(IN HANDLE,IN WORD,OUT PDWORD,IN OUT PDWORD OPTIONAL,IN OUT DWORD OPTIONAL);
+BOOL _IMAGEHLPAPI ImageGetCertificateData(IN HANDLE,IN DWORD,OUT LPWIN_CERTIFICATE,IN OUT PDWORD);
+BOOL _IMAGEHLPAPI ImageGetCertificateHeader(IN HANDLE,IN DWORD,IN OUT LPWIN_CERTIFICATE);
+BOOL _IMAGEHLPAPI CopyPdb(CHAR const*,CHAR const*,BOOL);
+BOOL _IMAGEHLPAPI RemovePrivateCvSymbolicEx(PCHAR,ULONG,PCHAR*,ULONG*);
+
+#endif /* RC_INVOKED */
+
+#ifdef UNICODE
+#define MapFileAndCheckSum MapFileAndCheckSumW
+#else
+#define MapFileAndCheckSum MapFileAndCheckSumA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IMAGEHLP_H */
+
diff --git a/winsup/w32api/include/imm.h b/winsup/w32api/include/imm.h
new file mode 100644
index 000000000..30d97013c
--- /dev/null
+++ b/winsup/w32api/include/imm.h
@@ -0,0 +1,420 @@
+#ifndef _IMM_H
+#define _IMM_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WM_CONVERTREQUESTEX 0x108
+#define WM_IME_STARTCOMPOSITION 0x10D
+#define WM_IME_ENDCOMPOSITION 0x10E
+#define WM_IME_COMPOSITION 0x10F
+#define WM_IME_KEYLAST 0x10F
+#define WM_IME_SETCONTEXT 0x281
+#define WM_IME_NOTIFY 0x282
+#define WM_IME_CONTROL 0x283
+#define WM_IME_COMPOSITIONFULL 0x284
+#define WM_IME_SELECT 0x285
+#define WM_IME_CHAR 0x286
+#define WM_IME_KEYDOWN 0x290
+#define WM_IME_KEYUP 0x291
+#define IMC_GETCANDIDATEPOS 7
+#define IMC_SETCANDIDATEPOS 8
+#define IMC_GETCOMPOSITIONFONT 9
+#define IMC_SETCOMPOSITIONFONT 10
+#define IMC_GETCOMPOSITIONWINDOW 11
+#define IMC_SETCOMPOSITIONWINDOW 12
+#define IMC_GETSTATUSWINDOWPOS 15
+#define IMC_SETSTATUSWINDOWPOS 16
+#define IMC_CLOSESTATUSWINDOW 0x21
+#define IMC_OPENSTATUSWINDOW 0x22
+#define IMN_CLOSESTATUSWINDOW 1
+#define IMN_OPENSTATUSWINDOW 2
+#define IMN_CHANGECANDIDATE 3
+#define IMN_CLOSECANDIDATE 4
+#define IMN_OPENCANDIDATE 5
+#define IMN_SETCONVERSIONMODE 6
+#define IMN_SETSENTENCEMODE 7
+#define IMN_SETOPENSTATUS 8
+#define IMN_SETCANDIDATEPOS 9
+#define IMN_SETCOMPOSITIONFONT 10
+#define IMN_SETCOMPOSITIONWINDOW 11
+#define IMN_SETSTATUSWINDOWPOS 12
+#define IMN_GUIDELINE 13
+#define IMN_PRIVATE 14
+#define NI_OPENCANDIDATE 16
+#define NI_CLOSECANDIDATE 17
+#define NI_SELECTCANDIDATESTR 18
+#define NI_CHANGECANDIDATELIST 19
+#define NI_FINALIZECONVERSIONRESULT 20
+#define NI_COMPOSITIONSTR 21
+#define NI_SETCANDIDATE_PAGESTART 22
+#define NI_SETCANDIDATE_PAGESIZE 23
+#define NI_IMEMENUSELECTED 24
+#define ISC_SHOWUICANDIDATEWINDOW 1
+#define ISC_SHOWUICOMPOSITIONWINDOW 0x80000000
+#define ISC_SHOWUIGUIDELINE 0x40000000
+#define ISC_SHOWUIALLCANDIDATEWINDOW 15
+#define ISC_SHOWUIALL 0xC000000F
+#define CPS_COMPLETE 1
+#define CPS_CONVERT 2
+#define CPS_REVERT 3
+#define CPS_CANCEL 4
+#define IME_CHOTKEY_IME_NONIME_TOGGLE 16
+#define IME_CHOTKEY_SHAPE_TOGGLE 17
+#define IME_CHOTKEY_SYMBOL_TOGGLE 18
+#define IME_JHOTKEY_CLOSE_OPEN 0x30
+#define IME_KHOTKEY_SHAPE_TOGGLE 0x50
+#define IME_KHOTKEY_HANJACONVERT 0x51
+#define IME_KHOTKEY_ENGLISH 0x52
+#define IME_THOTKEY_IME_NONIME_TOGGLE 0x70
+#define IME_THOTKEY_SHAPE_TOGGLE 0x71
+#define IME_THOTKEY_SYMBOL_TOGGLE 0x72
+#define IME_HOTKEY_DSWITCH_FIRST 256
+#define IME_HOTKEY_DSWITCH_LAST 0x11F
+#define IME_ITHOTKEY_RESEND_RESULTSTR 512
+#define IME_ITHOTKEY_PREVIOUS_COMPOSITION 513
+#define IME_ITHOTKEY_UISTYLE_TOGGLE 514
+#define GCS_COMPREADSTR 1
+#define GCS_COMPREADATTR 2
+#define GCS_COMPREADCLAUSE 4
+#define GCS_COMPSTR 8
+#define GCS_COMPATTR 16
+#define GCS_COMPCLAUSE 32
+#define GCS_CURSORPOS 128
+#define GCS_DELTASTART 256
+#define GCS_RESULTREADSTR 512
+#define GCS_RESULTREADCLAUSE 1024
+#define GCS_RESULTSTR 2048
+#define GCS_RESULTCLAUSE 4096
+#define CS_INSERTCHAR 0x2000
+#define CS_NOMOVECARET 0x4000
+#define IMEVER_0310 0x3000A
+#define IMEVER_0400 0x40000
+#define IME_PROP_AT_CARET 0x10000
+#define IME_PROP_SPECIAL_UI 0x20000
+#define IME_PROP_CANDLIST_START_FROM_1 0x40000
+#define IME_PROP_UNICODE 0x80000
+#define UI_CAP_2700 1
+#define UI_CAP_ROT90 2
+#define UI_CAP_ROTANY 4
+#define SCS_CAP_COMPSTR 1
+#define SCS_CAP_MAKEREAD 2
+#define SELECT_CAP_CONVERSION 1
+#define SELECT_CAP_SENTENCE 2
+#define GGL_LEVEL 1
+#define GGL_INDEX 2
+#define GGL_STRING 3
+#define GGL_PRIVATE 4
+#define GL_LEVEL_NOGUIDELINE 0
+#define GL_LEVEL_FATAL 1
+#define GL_LEVEL_ERROR 2
+#define GL_LEVEL_WARNING 3
+#define GL_LEVEL_INFORMATION 4
+#define GL_ID_UNKNOWN 0
+#define GL_ID_NOMODULE 1
+#define GL_ID_NODICTIONARY 16
+#define GL_ID_CANNOTSAVE 17
+#define GL_ID_NOCONVERT 32
+#define GL_ID_TYPINGERROR 33
+#define GL_ID_TOOMANYSTROKE 34
+#define GL_ID_READINGCONFLICT 35
+#define GL_ID_INPUTREADING 36
+#define GL_ID_INPUTRADICAL 37
+#define GL_ID_INPUTCODE 38
+#define GL_ID_INPUTSYMBOL 39
+#define GL_ID_CHOOSECANDIDATE 40
+#define GL_ID_REVERSECONVERSION 41
+#define GL_ID_PRIVATE_FIRST 0x8000
+#define GL_ID_PRIVATE_LAST 0xFFFF
+#define IGP_GETIMEVERSION (DWORD)(-4)
+#define IGP_PROPERTY 4
+#define IGP_CONVERSION 8
+#define IGP_SENTENCE 12
+#define IGP_UI 16
+#define IGP_SETCOMPSTR 0x14
+#define IGP_SELECT 0x18
+#define SCS_SETSTR (GCS_COMPREADSTR|GCS_COMPSTR)
+#define SCS_CHANGEATTR (GCS_COMPREADATTR|GCS_COMPATTR)
+#define SCS_CHANGECLAUSE (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
+#define ATTR_INPUT 0
+#define ATTR_TARGET_CONVERTED 1
+#define ATTR_CONVERTED 2
+#define ATTR_TARGET_NOTCONVERTED 3
+#define ATTR_INPUT_ERROR 4
+#define ATTR_FIXEDCONVERTED 5
+#define CFS_DEFAULT 0
+#define CFS_RECT 1
+#define CFS_POINT 2
+#define CFS_SCREEN 4
+#define CFS_FORCE_POSITION 32
+#define CFS_CANDIDATEPOS 64
+#define CFS_EXCLUDE 128
+#define GCL_CONVERSION 1
+#define GCL_REVERSECONVERSION 2
+#define GCL_REVERSE_LENGTH 3
+#define IME_CMODE_ALPHANUMERIC 0
+#define IME_CMODE_NATIVE 1
+#define IME_CMODE_CHINESE IME_CMODE_NATIVE
+#define IME_CMODE_HANGEUL IME_CMODE_NATIVE
+#define IME_CMODE_HANGUL IME_CMODE_NATIVE
+#define IME_CMODE_JAPANESE IME_CMODE_NATIVE
+#define IME_CMODE_KATAKANA 2
+#define IME_CMODE_LANGUAGE 3
+#define IME_CMODE_FULLSHAPE 8
+#define IME_CMODE_ROMAN 16
+#define IME_CMODE_CHARCODE 32
+#define IME_CMODE_HANJACONVERT 64
+#define IME_CMODE_SOFTKBD 128
+#define IME_CMODE_NOCONVERSION 256
+#define IME_CMODE_EUDC 512
+#define IME_CMODE_SYMBOL 1024
+#define IME_CMODE_FIXED 2048
+#define IME_SMODE_NONE 0
+#define IME_SMODE_PLAURALCLAUSE 1
+#define IME_SMODE_SINGLECONVERT 2
+#define IME_SMODE_AUTOMATIC 4
+#define IME_SMODE_PHRASEPREDICT 8
+#define IME_CAND_UNKNOWN 0
+#define IME_CAND_READ 1
+#define IME_CAND_CODE 2
+#define IME_CAND_MEANING 3
+#define IME_CAND_RADICAL 4
+#define IME_CAND_STROKE 5
+#define IMM_ERROR_NODATA (-1)
+#define IMM_ERROR_GENERAL (-2)
+#define IME_CONFIG_GENERAL 1
+#define IME_CONFIG_REGISTERWORD 2
+#define IME_CONFIG_SELECTDICTIONARY 3
+#define IME_ESC_QUERY_SUPPORT 3
+#define IME_ESC_RESERVED_FIRST 4
+#define IME_ESC_RESERVED_LAST 0x7FF
+#define IME_ESC_PRIVATE_FIRST 0x800
+#define IME_ESC_PRIVATE_LAST 0xFFF
+#define IME_ESC_SEQUENCE_TO_INTERNAL 0x1001
+#define IME_ESC_GET_EUDC_DICTIONARY 0x1003
+#define IME_ESC_SET_EUDC_DICTIONARY 0x1004
+#define IME_ESC_MAX_KEY 0x1005
+#define IME_ESC_IME_NAME 0x1006
+#define IME_ESC_SYNC_HOTKEY 0x1007
+#define IME_ESC_HANJA_MODE 0x1008
+#define IME_ESC_AUTOMATA 0x1009
+#define IME_REGWORD_STYLE_EUDC 1
+#define IME_REGWORD_STYLE_USER_FIRST 0x80000000
+#define IME_REGWORD_STYLE_USER_LAST 0xFFFFFFFF
+#define SOFTKEYBOARD_TYPE_T1 1
+#define SOFTKEYBOARD_TYPE_C1 2
+#define IMEMENUITEM_STRING_SIZE 80
+#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 IACE_CHILDREN 1
+#define IACE_DEFAULT 16
+#define IACE_IGNORENOCONTEXT 32
+#define IGIMIF_RIGHTMENU 1
+#define IGIMII_CMODE 1
+#define IGIMII_SMODE 2
+#define IGIMII_CONFIGURE 4
+#define IGIMII_TOOLS 8
+#define IGIMII_HELP 16
+#define IGIMII_OTHER 32
+#define IGIMII_INPUTTOOLS 64
+#define IMFT_RADIOCHECK 1
+#define IMFT_SEPARATOR 2
+#define IMFT_SUBMENU 4
+#define IMFS_GRAYED MFS_GRAYED
+#define IMFS_DISABLED MFS_DISABLED
+#define IMFS_CHECKED MFS_CHECKED
+#define IMFS_HILITE MFS_HILITE
+#define IMFS_ENABLED MFS_ENABLED
+#define IMFS_UNCHECKED MFS_UNCHECKED
+#define IMFS_UNHILITE MFS_UNHILITE
+#define IMFS_DEFAULT MFS_DEFAULT
+#ifndef VK_PROCESSKEY
+#define VK_PROCESSKEY 0x0E5
+#endif
+#define STYLE_DESCRIPTION_SIZE 32
+typedef DWORD HIMC;
+typedef DWORD HIMCC;
+typedef HKL *LPHKL;
+typedef struct tagCOMPOSITIONFORM {
+ DWORD dwStyle;
+ POINT ptCurrentPos;
+ RECT rcArea;
+} COMPOSITIONFORM,*PCOMPOSITIONFORM,*LPCOMPOSITIONFORM;
+typedef struct tagCANDIDATEFORM {
+ DWORD dwIndex;
+ DWORD dwStyle;
+ POINT ptCurrentPos;
+ RECT rcArea;
+} CANDIDATEFORM,*PCANDIDATEFORM,*LPCANDIDATEFORM;
+typedef struct tagCANDIDATELIST {
+ DWORD dwSize;
+ DWORD dwStyle;
+ DWORD dwCount;
+ DWORD dwSelection;
+ DWORD dwPageStart;
+ DWORD dwPageSize;
+ DWORD dwOffset[1];
+} CANDIDATELIST,*PCANDIDATELIST,*LPCANDIDATELIST;
+typedef struct tagREGISTERWORDA {
+ LPSTR lpReading;
+ LPSTR lpWord;
+} REGISTERWORDA,*PREGISTERWORDA,*LPREGISTERWORDA;
+typedef struct tagREGISTERWORDW {
+ LPWSTR lpReading;
+ LPWSTR lpWord;
+} REGISTERWORDW,*PREGISTERWORDW,*LPREGISTERWORDW;
+typedef struct tagSTYLEBUFA {
+ DWORD dwStyle;
+ CHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFA,*PSTYLEBUFA,*LPSTYLEBUFA;
+typedef struct tagSTYLEBUFW {
+ DWORD dwStyle;
+ WCHAR szDescription[STYLE_DESCRIPTION_SIZE];
+} STYLEBUFW,*PSTYLEBUFW,*LPSTYLEBUFW;
+typedef struct tagIMEMENUITEMINFOA {
+ UINT cbSize;
+ UINT fType;
+ UINT fState;
+ UINT wID;
+ HBITMAP hbmpChecked;
+ HBITMAP hbmpUnchecked;
+ DWORD dwItemData;
+ CHAR szString[IMEMENUITEM_STRING_SIZE];
+ HBITMAP hbmpItem;
+} IMEMENUITEMINFOA,*PIMEMENUITEMINFOA,*LPIMEMENUITEMINFOA;
+typedef struct tagIMEMENUITEMINFOW {
+ UINT cbSize;
+ UINT fType;
+ UINT fState;
+ UINT wID;
+ HBITMAP hbmpChecked;
+ HBITMAP hbmpUnchecked;
+ DWORD dwItemData;
+ WCHAR szString[IMEMENUITEM_STRING_SIZE];
+ HBITMAP hbmpItem;
+} IMEMENUITEMINFOW,*PIMEMENUITEMINFOW,*LPIMEMENUITEMINFOW;
+typedef int (CALLBACK *REGISTERWORDENUMPROCA)(LPCSTR, DWORD, LPCSTR, LPVOID);
+typedef int (CALLBACK *REGISTERWORDENUMPROCW)(LPCWSTR, DWORD, LPCWSTR, LPVOID);
+#ifdef UNICODE
+#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCW
+typedef REGISTERWORDW REGISTERWORD,*PREGISTERWORD,*LPREGISTERWORD;
+typedef STYLEBUFW STYLEBUF,*PSTYLEBUF,*LPSTYLEBUF;
+typedef IMEMENUITEMINFOW IMEMENUITEMINFO,*PIMEMENUITEMINFO,*LPIMEMENUITEMINFO;
+#else
+#define REGISTERWORDENUMPROC REGISTERWORDENUMPROCA
+typedef REGISTERWORDA REGISTERWORD,*PREGISTERWORD,*LPREGISTERWORD;
+typedef STYLEBUFA STYLEBUF,*PSTYLEBUF,*LPSTYLEBUF;
+typedef IMEMENUITEMINFOA IMEMENUITEMINFO,*PIMEMENUITEMINFO,*LPIMEMENUITEMINFO;
+#endif
+HKL WINAPI ImmInstallIMEA(LPCSTR,LPCSTR);
+HKL WINAPI ImmInstallIMEW(LPCWSTR,LPCWSTR);
+HWND WINAPI ImmGetDefaultIMEWnd(HWND);
+UINT WINAPI ImmGetDescriptionA(HKL,LPSTR,UINT);
+UINT WINAPI ImmGetDescriptionW(HKL,LPWSTR,UINT);
+UINT WINAPI ImmGetIMEFileNameA(HKL,LPSTR,UINT);
+UINT WINAPI ImmGetIMEFileNameW(HKL,LPWSTR,UINT);
+DWORD WINAPI ImmGetProperty(HKL,DWORD);
+BOOL WINAPI ImmIsIME(HKL);
+BOOL WINAPI ImmSimulateHotKey(HWND,DWORD);
+HIMC WINAPI ImmCreateContext(void);
+BOOL WINAPI ImmDestroyContext(HIMC);
+HIMC WINAPI ImmGetContext(HWND);
+BOOL WINAPI ImmReleaseContext(HWND,HIMC);
+HIMC WINAPI ImmAssociateContext(HWND,HIMC);
+LONG WINAPI ImmGetCompositionStringA(HIMC,DWORD,PVOID,DWORD);
+LONG WINAPI ImmGetCompositionStringW(HIMC,DWORD,PVOID,DWORD);
+BOOL WINAPI ImmSetCompositionStringA(HIMC,DWORD,PCVOID,DWORD,PCVOID,DWORD);
+BOOL WINAPI ImmSetCompositionStringW(HIMC,DWORD,PCVOID,DWORD,PCVOID,DWORD);
+DWORD WINAPI ImmGetCandidateListCountA(HIMC,PDWORD);
+DWORD WINAPI ImmGetCandidateListCountW(HIMC,PDWORD);
+DWORD WINAPI ImmGetCandidateListA(HIMC,DWORD,PCANDIDATELIST,DWORD);
+DWORD WINAPI ImmGetCandidateListW(HIMC,DWORD,PCANDIDATELIST,DWORD);
+DWORD WINAPI ImmGetGuideLineA(HIMC,DWORD,LPSTR,DWORD);
+DWORD WINAPI ImmGetGuideLineW(HIMC,DWORD,LPWSTR,DWORD);
+BOOL WINAPI ImmGetConversionStatus(HIMC,LPDWORD,PDWORD);
+BOOL WINAPI ImmSetConversionStatus(HIMC,DWORD,DWORD);
+BOOL WINAPI ImmGetOpenStatus(HIMC);
+BOOL WINAPI ImmSetOpenStatus(HIMC,BOOL);
+BOOL WINAPI ImmGetCompositionFontA(HIMC,LPLOGFONTA);
+BOOL WINAPI ImmGetCompositionFontW(HIMC,LPLOGFONTW);
+BOOL WINAPI ImmSetCompositionFontA(HIMC,LPLOGFONTA);
+BOOL WINAPI ImmSetCompositionFontW(HIMC,LPLOGFONTW);
+BOOL WINAPI ImmConfigureIMEA(HKL,HWND,DWORD,PVOID);
+BOOL WINAPI ImmConfigureIMEW(HKL,HWND,DWORD,PVOID);
+LRESULT WINAPI ImmEscapeA(HKL,HIMC,UINT,PVOID);
+LRESULT WINAPI ImmEscapeW(HKL,HIMC,UINT,PVOID);
+DWORD WINAPI ImmGetConversionListA(HKL,HIMC,LPCSTR,PCANDIDATELIST,DWORD,UINT);
+DWORD WINAPI ImmGetConversionListW(HKL,HIMC,LPCWSTR,PCANDIDATELIST,DWORD,UINT);
+BOOL WINAPI ImmNotifyIME(HIMC,DWORD,DWORD,DWORD);
+BOOL WINAPI ImmGetStatusWindowPos(HIMC,LPPOINT);
+BOOL WINAPI ImmSetStatusWindowPos(HIMC,LPPOINT);
+BOOL WINAPI ImmGetCompositionWindow(HIMC,PCOMPOSITIONFORM);
+BOOL WINAPI ImmSetCompositionWindow(HIMC,PCOMPOSITIONFORM);
+BOOL WINAPI ImmGetCandidateWindow(HIMC,DWORD,PCANDIDATEFORM);
+BOOL WINAPI ImmSetCandidateWindow(HIMC,PCANDIDATEFORM);
+BOOL WINAPI ImmIsUIMessageA(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI ImmIsUIMessageW(HWND,UINT,WPARAM,LPARAM);
+UINT WINAPI ImmGetVirtualKey(HWND);
+BOOL WINAPI ImmRegisterWordA(HKL,LPCSTR,DWORD,LPCSTR);
+BOOL WINAPI ImmRegisterWordW(HKL,LPCWSTR,DWORD,LPCWSTR);
+BOOL WINAPI ImmUnregisterWordA(HKL,LPCSTR,DWORD,LPCSTR);
+BOOL WINAPI ImmUnregisterWordW(HKL,LPCWSTR,DWORD,LPCWSTR);
+UINT WINAPI ImmGetRegisterWordStyleA(HKL,UINT,PSTYLEBUFA);
+UINT WINAPI ImmGetRegisterWordStyleW(HKL,UINT,PSTYLEBUFW);
+UINT WINAPI ImmEnumRegisterWordA(HKL,REGISTERWORDENUMPROCA,LPCSTR,DWORD,LPCSTR,PVOID);
+UINT WINAPI ImmEnumRegisterWordW(HKL,REGISTERWORDENUMPROCW,LPCWSTR,DWORD,LPCWSTR,PVOID);
+BOOL WINAPI EnableEUDC(BOOL);
+BOOL WINAPI ImmDisableIME(DWORD);
+DWORD WINAPI ImmGetImeMenuItemsA(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOA,LPIMEMENUITEMINFOA,DWORD);
+DWORD WINAPI ImmGetImeMenuItemsW(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOW,LPIMEMENUITEMINFOW,DWORD);
+
+#ifdef UNICODE
+#define ImmEnumRegisterWord ImmEnumRegisterWordW
+#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleW
+#define ImmUnregisterWord ImmUnregisterWordW
+#define ImmRegisterWord ImmRegisterWordW
+#define ImmInstallIME ImmInstallIMEW
+#define ImmIsUIMessage ImmIsUIMessageW
+#define ImmGetConversionList ImmGetConversionListW
+#define ImmEscape ImmEscapeW
+#define ImmConfigureIME ImmConfigureIMEW
+#define ImmSetCompositionFont ImmSetCompositionFontW
+#define ImmGetCompositionFont ImmGetCompositionFontW
+#define ImmGetGuideLine ImmGetGuideLineW
+#define ImmGetCandidateList ImmGetCandidateListW
+#define ImmGetCandidateListCount ImmGetCandidateListCountW
+#define ImmSetCompositionString ImmSetCompositionStringW
+#define ImmGetCompositionString ImmGetCompositionStringW
+#define ImmGetDescription ImmGetDescriptionW
+#define ImmGetIMEFileName ImmGetIMEFileNameW
+#define ImmGetImeMenuItems ImmGetImeMenuItemsW
+#else
+#define ImmEnumRegisterWord ImmEnumRegisterWordA
+#define ImmGetRegisterWordStyle ImmGetRegisterWordStyleA
+#define ImmUnregisterWord ImmUnregisterWordA
+#define ImmRegisterWord ImmRegisterWordA
+#define ImmInstallIME ImmInstallIMEA
+#define ImmIsUIMessage ImmIsUIMessageA
+#define ImmGetConversionList ImmGetConversionListA
+#define ImmEscape ImmEscapeA
+#define ImmConfigureIME ImmConfigureIMEA
+#define ImmSetCompositionFont ImmSetCompositionFontA
+#define ImmGetCompositionFont ImmGetCompositionFontA
+#define ImmGetGuideLine ImmGetGuideLineA
+#define ImmGetCandidateList ImmGetCandidateListA
+#define ImmGetCandidateListCount ImmGetCandidateListCountA
+#define ImmSetCompositionString ImmSetCompositionStringA
+#define ImmGetCompositionString ImmGetCompositionStringA
+#define ImmGetDescription ImmGetDescriptionA
+#define ImmGetIMEFileName ImmGetIMEFileNameA
+#define ImmGetImeMenuItems ImmGetImeMenuItemsW
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/initguid.h b/winsup/w32api/include/initguid.h
new file mode 100644
index 000000000..08092a299
--- /dev/null
+++ b/winsup/w32api/include/initguid.h
@@ -0,0 +1,8 @@
+#ifndef _INITGUID_H
+#define _INITGUID_H
+#ifndef DEFINE_GUID
+#include <basetyps.h>
+#endif
+#undef DEFINE_GUID
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+#endif
diff --git a/winsup/w32api/include/intshcut.h b/winsup/w32api/include/intshcut.h
new file mode 100644
index 000000000..a9d7ee008
--- /dev/null
+++ b/winsup/w32api/include/intshcut.h
@@ -0,0 +1,78 @@
+#ifndef _INTSHCUT_H
+#define _INTSHCUT_H
+#include <isguids.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define INTSHCUTAPI DECLSPEC_IMPORT
+#define E_FLAGS MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1000)
+#define IS_E_EXEC_FAILED MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x2002)
+#define URL_E_INVALID_SYNTAX MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1001)
+#define URL_E_UNREGISTERED_PROTOCOL MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x1002)
+typedef enum iurl_seturl_flags {
+ IURL_SETURL_FL_GUESS_PROTOCOL=1,
+ IURL_SETURL_FL_USE_DEFAULT_PROTOCOL,
+ ALL_IURL_SETURL_FLAGS=(IURL_SETURL_FL_GUESS_PROTOCOL|IURL_SETURL_FL_USE_DEFAULT_PROTOCOL)
+} IURL_SETURL_FLAGS;
+typedef enum iurl_invokecommand_flags {
+ IURL_INVOKECOMMAND_FL_ALLOW_UI=1,
+ IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB,
+ ALL_IURL_INVOKECOMMAND_FLAGS=(IURL_INVOKECOMMAND_FL_ALLOW_UI|IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB)
+} IURL_INVOKECOMMAND_FLAGS;
+typedef enum translateurl_in_flags {
+ TRANSLATEURL_FL_GUESS_PROTOCOL=1,
+ TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL,
+ ALL_TRANSLATEURL_FLAGS=(TRANSLATEURL_FL_GUESS_PROTOCOL|TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL)
+} TRANSLATEURL_IN_FLAGS;
+typedef enum urlassociationdialog_in_flags {
+ URLASSOCDLG_FL_USE_DEFAULT_NAME=1,
+ URLASSOCDLG_FL_REGISTER_ASSOC,
+ ALL_URLASSOCDLG_FLAGS=(URLASSOCDLG_FL_USE_DEFAULT_NAME|URLASSOCDLG_FL_REGISTER_ASSOC)
+} URLASSOCIATIONDIALOG_IN_FLAGS;
+typedef enum mimeassociationdialog_in_flags {
+ MIMEASSOCDLG_FL_REGISTER_ASSOC=1,
+ ALL_MIMEASSOCDLG_FLAGS=MIMEASSOCDLG_FL_REGISTER_ASSOC
+} MIMEASSOCIATIONDIALOG_IN_FLAGS;
+typedef struct urlinvokecommandinfo {
+ DWORD dwcbSize;
+ DWORD dwFlags;
+ HWND hwndParent;
+ PCSTR pcszVerb;
+} URLINVOKECOMMANDINFO,*PURLINVOKECOMMANDINFO;
+typedef const URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO;
+typedef const URLINVOKECOMMANDINFO *PCURLINVOKECOMMANDINFO;
+#undef INTERFACE
+#define INTERFACE IUniformResourceLocator
+DECLARE_INTERFACE_(IUniformResourceLocator,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(SetURL)(THIS_ PCSTR,DWORD) PURE;
+ STDMETHOD(GetURL)(THIS_ PSTR*) PURE;
+ STDMETHOD(InvokeCommand)(THIS_ PURLINVOKECOMMANDINFO) PURE;
+};
+typedef IUniformResourceLocator *PIUniformResourceLocator;
+typedef const IUniformResourceLocator CIUniformResourceLocator;
+typedef const IUniformResourceLocator *PCIUniformResourceLocator;
+
+BOOL WINAPI InetIsOffline(DWORD);
+HRESULT WINAPI MIMEAssociationDialogA(HWND,DWORD,PCSTR,PCSTR,PSTR,UINT);
+HRESULT WINAPI MIMEAssociationDialogW(HWND,DWORD,PCWSTR,PCWSTR,PWSTR,UINT);
+HRESULT WINAPI TranslateURLA(PCSTR,DWORD,PSTR*);
+HRESULT WINAPI TranslateURLW(PCWSTR,DWORD,PWSTR*);
+HRESULT WINAPI URLAssociationDialogA(HWND,DWORD,PCSTR,PCSTR,PSTR,UINT);
+HRESULT WINAPI URLAssociationDialogW(HWND,DWORD,PCWSTR,PCWSTR,PWSTR,UINT);
+#ifdef UNICODE
+#define TranslateURL TranslateURLW
+#define MIMEAssociationDialog MIMEAssociationDialogW
+#define URLAssociationDialog URLAssociationDialogW
+#else
+#define TranslateURL TranslateURLA
+#define MIMEAssociationDialog MIMEAssociationDialogA
+#define URLAssociationDialog URLAssociationDialogA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/isguids.h b/winsup/w32api/include/isguids.h
new file mode 100644
index 000000000..6518e66a6
--- /dev/null
+++ b/winsup/w32api/include/isguids.h
@@ -0,0 +1,11 @@
+#ifndef _ISGUID_H
+#define _ISGUID_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const GUID CLSID_InternetShortcut;
+extern const GUID IID_IUniformResourceLocator;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/largeint.h b/winsup/w32api/include/largeint.h
new file mode 100644
index 000000000..1e90de07d
--- /dev/null
+++ b/winsup/w32api/include/largeint.h
@@ -0,0 +1,109 @@
+/*
+ largeint.h
+
+ Header for 64 bit integer arithmetics library
+
+ */
+#ifndef _LARGEINT_H
+#define _LARGEINT_H
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef HAVE_INT64
+#define _toi (__int64)
+#define _toui (unsigned __int64)
+#else
+#error "64 bit integers not supported"
+#endif
+
+/*
+ We don't let the compiler see the prototypes if we are compiling the
+ library because if it does it will choke on conflicting types in the
+ prototypes.
+*/
+
+#if defined(LARGEINT_PROTOS) || defined(__COMPILING_LARGEINT)
+
+#ifndef __COMPILING_LARGEINT
+/* addition/subtraction */
+LARGE_INTEGER WINAPI LargeIntegerAdd (LARGE_INTEGER, LARGE_INTEGER);
+LARGE_INTEGER WINAPI LargeIntegerSubtract (LARGE_INTEGER, LARGE_INTEGER);
+
+/* bit operations */
+LARGE_INTEGER WINAPI LargeIntegerArithmeticShift (LARGE_INTEGER, int);
+LARGE_INTEGER WINAPI LargeIntegerShiftLeft (LARGE_INTEGER, int);
+LARGE_INTEGER WINAPI LargeIntegerShiftRight (LARGE_INTEGER, int);
+LARGE_INTEGER WINAPI LargeIntegerNegate (LARGE_INTEGER);
+
+/* conversion */
+LARGE_INTEGER WINAPI ConvertLongToLargeInteger (LONG);
+LARGE_INTEGER WINAPI ConvertUlongToLargeInteger (ULONG);
+
+/* multiplication */
+LARGE_INTEGER WINAPI EnlargedIntegerMultiply (LONG, LONG);
+LARGE_INTEGER WINAPI EnlargedUnsignedMultiply (ULONG, ULONG);
+LARGE_INTEGER WINAPI ExtendedIntegerMultiply (LARGE_INTEGER, LONG);
+/* FIXME: is this not part of largeint? */
+LARGE_INTEGER WINAPI LargeIntegerMultiply (LARGE_INTEGER, LARGE_INTEGER);
+#endif /* __COMPILING_LARGEINT */
+
+#else
+
+#define LargeIntegerAdd(a,b) (LARGE_INTEGER)(_toi(a) + _toi(b))
+#define LargeIntegerSubtract(a,b) (LARGE_INTEGER)(_toi(a) - _toi(b))
+#define LargeIntegerRightShift(i,n) (LARGE_INTEGER)(_toi(i) >> (n))
+#define LargeIntegerArithmeticShift LargeIntegerRightShift
+#define LargeIntegerLeftShift(i,n) (LARGE_INTEGER)(_toi(i) << (n))
+#define LargeIntegerNegate(i) (LARGE_INTEGER)(- _toi(i))
+#define EnlargedIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b))
+#define EnlargedUnsignedMultiply(a,b) (LARGE_INTEGER)(_toui(a) * _toui(b))
+#define ExtendedIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b))
+/* FIXME: should this exist */
+#define LargeIntegerMultiply(a,b) (LARGE_INTEGER)(_toi(a) * _toi(b))
+#define ConvertLongToLargeInteger(l) (LARGE_INTEGER)(_toi(l))
+#define ConvertUlongToLargeInteger(ul) (LARGE_INTEGER)(_toui(ul))
+
+#endif /* LARGEINT_PROTOS || __COMPILING_LARGEINT */
+
+#ifndef __COMPILING_LARGEINT
+/* division; no macros of these because of multiple expansion */
+LARGE_INTEGER WINAPI LargeIntegerDivide (LARGE_INTEGER, LARGE_INTEGER, PLARGE_INTEGER);
+ULONG WINAPI EnlargedUnsignedDivide (ULARGE_INTEGER, ULONG, PULONG);
+LARGE_INTEGER WINAPI ExtendedLargeIntegerDivide (LARGE_INTEGER, ULONG, PULONG);
+LARGE_INTEGER WINAPI ExtendedMagicDivide (LARGE_INTEGER, LARGE_INTEGER, int);
+#endif /* __COMPILING_LARGEINT */
+
+#define LargeIntegerAnd(dest, src, m) \
+{ \
+ dest._STRUCT_NAME(u.)LowPart = s._STRUCT_NAME(u.)LowPart & m._STRUCT_NAME(u.)LowPart; \
+ dest._STRUCT_NAME(u.)HighPart = s._STRUCT_NAME(u.)HighPart & m._STRUCT_NAME(u.)HighPart; \
+}
+
+/* comparision */
+#define LargeIntegerGreaterThan(a,b) (_toi(a) > _toi(b))
+#define LargeIntegerGreaterThanOrEqual(a,b) (_toi(a) >= _toi(b))
+#define LargeIntegerEqualTo(a,b) (_toi(a) == _toi(b))
+#define LargeIntegerNotEqualTo(a,b) (_toi(a) != _toi(b))
+#define LargeIntegerLessThan(a,b) (_toi(a) < _toi(b))
+#define LargeIntegerLessThanOrEqualTo(a,b) (_toi(a) <= _toi(b))
+#define LargeIntegerGreaterThanZero(a) (_toi(a) > 0)
+#define LargeIntegerGreaterOrEqualToZero(a) ((a)._STRUCT_NAME(u.)HighPart > 0)
+#define LargeIntegerEqualToZero(a) !((a)._STRUCT_NAME(u.)LowPart | (a)._STRUCT_NAME(u.)HighPart)
+#define LargeIntegerNotEqualToZero(a) ((a)._STRUCT_NAME(u.)LowPart | (a)._STRUCT_NAME(u.)HighPart)
+#define LargeIntegerLessThanZero(a) ((a)._STRUCT_NAME(u.)HighPart < 0)
+#define LargeIntegerLessOrEqualToZero(a) (_toi(a) <= 0)
+
+#ifndef __COMPILING_LARGEINT
+#undef _toi
+#undef _toui
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LARGEINT_H */
diff --git a/winsup/w32api/include/lm.h b/winsup/w32api/include/lm.h
new file mode 100644
index 000000000..d7a83558b
--- /dev/null
+++ b/winsup/w32api/include/lm.h
@@ -0,0 +1,22 @@
+#ifndef _LM_H
+#define _LM_H
+
+#include <lmcons.h>
+#include <lmaccess.h>
+#include <lmalert.h>
+#include <lmat.h>
+#include <lmaudit.h>
+#include <lmchdev.h>
+#include <lmconfig.h>
+#include <lmmsg.h>
+#include <lmshare.h>
+#include <lmapibuf.h>
+#include <lmremutl.h>
+#include <lmrepl.h>
+#include <lmuse.h>
+#include <lmerrlog.h>
+#include <lmsvc.h>
+#include <lmwksta.h>
+#include <lmstats.h>
+
+#endif
diff --git a/winsup/w32api/include/lmaccess.h b/winsup/w32api/include/lmaccess.h
new file mode 100644
index 000000000..8a7b9ba88
--- /dev/null
+++ b/winsup/w32api/include/lmaccess.h
@@ -0,0 +1,605 @@
+#ifndef _LMACCESS_H
+#define _LMACCESS_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmcons.h>
+#define GROUP_SPECIALGRP_USERS L"USERS"
+#define GROUP_SPECIALGRP_ADMINS L"ADMINS"
+#define GROUP_SPECIALGRP_GUESTS L"GUESTS"
+#define GROUP_SPECIALGRP_LOCAL L"LOCAL"
+#define ACCESS_LETTERS "RWCXDAP "
+#define NETLOGON_CONTROL_QUERY 1
+#define NETLOGON_CONTROL_REPLICATE 2
+#define NETLOGON_CONTROL_SYNCHRONIZE 3
+#define NETLOGON_CONTROL_PDC_REPLICATE 4
+#define NETLOGON_CONTROL_REDISCOVER 5
+#define NETLOGON_CONTROL_TC_QUERY 6
+#define NETLOGON_CONTROL_BACKUP_CHANGE_LOG 65532
+#define NETLOGON_CONTROL_TRUNCATE_LOG 65533
+#define NETLOGON_CONTROL_SET_DBFLAG 65534
+#define NETLOGON_CONTROL_BREAKPOINT 65535
+#define UF_SCRIPT 1
+#define UF_ACCOUNTDISABLE 2
+#define UF_HOMEDIR_REQUIRED 8
+#define UF_LOCK 16
+#define UF_PASSWD_NOTREQD 32
+#define UF_PASSWD_CANT_CHANGE 64
+#define UF_TEMP_DUPLICATE_ACCOUNT 256
+#define UF_NORMAL_ACCOUNT 512
+#define UF_INTERDOMAIN_TRUST_ACCOUNT 2048
+#define UF_WORKSTATION_TRUST_ACCOUNT 4096
+#define UF_SERVER_TRUST_ACCOUNT 8192
+#define UF_MACHINE_ACCOUNT_MASK (UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT)
+#define UF_ACCOUNT_TYPE_MASK (UF_TEMP_DUPLICATE_ACCOUNT|UF_NORMAL_ACCOUNT|UF_INTERDOMAIN_TRUST_ACCOUNT|UF_WORKSTATION_TRUST_ACCOUNT|UF_SERVER_TRUST_ACCOUNT)
+#define UF_DONT_EXPIRE_PASSWD 65536
+#define UF_SETTABLE_BITS (UF_SCRIPT|UF_ACCOUNTDISABLE|UF_LOCK|UF_HOMEDIR_REQUIRED|UF_PASSWD_NOTREQD|UF_PASSWD_CANT_CHANGE|UF_ACCOUNT_TYPE_MASK|UF_DONT_EXPIRE_PASSWD)
+#define FILTER_TEMP_DUPLICATE_ACCOUNT 1
+#define FILTER_NORMAL_ACCOUNT 2
+#define FILTER_INTERDOMAIN_TRUST_ACCOUNT 8
+#define FILTER_WORKSTATION_TRUST_ACCOUNT 16
+#define FILTER_SERVER_TRUST_ACCOUNT 32
+#define LG_INCLUDE_INDIRECT 1
+#define AF_OP_PRINT 1
+#define AF_OP_COMM 2
+#define AF_OP_SERVER 4
+#define AF_OP_ACCOUNTS 8
+#define AF_SETTABLE_BITS (AF_OP_PRINT|AF_OP_COMM|AF_OP_SERVER|AF_OP_ACCOUNTS)
+#define UAS_ROLE_STANDALONE 0
+#define UAS_ROLE_MEMBER 1
+#define UAS_ROLE_BACKUP 2
+#define UAS_ROLE_PRIMARY 3
+#define USER_NAME_PARMNUM 1
+#define USER_PASSWORD_PARMNUM 3
+#define USER_PASSWORD_AGE_PARMNUM 4
+#define USER_PRIV_PARMNUM 5
+#define USER_HOME_DIR_PARMNUM 6
+#define USER_COMMENT_PARMNUM 7
+#define USER_FLAGS_PARMNUM 8
+#define USER_SCRIPT_PATH_PARMNUM 9
+#define USER_AUTH_FLAGS_PARMNUM 10
+#define USER_FULL_NAME_PARMNUM 11
+#define USER_USR_COMMENT_PARMNUM 12
+#define USER_PARMS_PARMNUM 13
+#define USER_WORKSTATIONS_PARMNUM 14
+#define USER_LAST_LOGON_PARMNUM 15
+#define USER_LAST_LOGOFF_PARMNUM 16
+#define USER_ACCT_EXPIRES_PARMNUM 17
+#define USER_MAX_STORAGE_PARMNUM 18
+#define USER_UNITS_PER_WEEK_PARMNUM 19
+#define USER_LOGON_HOURS_PARMNUM 20
+#define USER_PAD_PW_COUNT_PARMNUM 21
+#define USER_NUM_LOGONS_PARMNUM 22
+#define USER_LOGON_SERVER_PARMNUM 23
+#define USER_COUNTRY_CODE_PARMNUM 24
+#define USER_CODE_PAGE_PARMNUM 25
+#define USER_PRIMARY_GROUP_PARMNUM 51
+#define USER_PROFILE 52
+#define USER_PROFILE_PARMNUM 52
+#define USER_HOME_DIR_DRIVE_PARMNUM 53
+#define USER_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_NAME_PARMNUM)
+#define USER_PASSWORD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_PARMNUM)
+#define USER_PASSWORD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PASSWORD_AGE_PARMNUM)
+#define USER_PRIV_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PRIV_PARMNUM)
+#define USER_HOME_DIR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_PARMNUM)
+#define USER_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_COMMENT_PARMNUM)
+#define USER_FLAGS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_FLAGS_PARMNUM)
+#define USER_SCRIPT_PATH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_SCRIPT_PATH_PARMNUM)
+#define USER_AUTH_FLAGS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_AUTH_FLAGS_PARMNUM)
+#define USER_FULL_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_FULL_NAME_PARMNUM)
+#define USER_USR_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_USR_COMMENT_PARMNUM)
+#define USER_PARMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PARMS_PARMNUM)
+#define USER_WORKSTATIONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_WORKSTATIONS_PARMNUM)
+#define USER_LAST_LOGON_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGON_PARMNUM)
+#define USER_LAST_LOGOFF_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LAST_LOGOFF_PARMNUM)
+#define USER_ACCT_EXPIRES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_ACCT_EXPIRES_PARMNUM)
+#define USER_MAX_STORAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_MAX_STORAGE_PARMNUM)
+#define USER_UNITS_PER_WEEK_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_UNITS_PER_WEEK_PARMNUM)
+#define USER_LOGON_HOURS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LOGON_HOURS_PARMNUM)
+#define USER_PAD_PW_COUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PAD_PW_COUNT_PARMNUM)
+#define USER_NUM_LOGONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_NUM_LOGONS_PARMNUM)
+#define USER_LOGON_SERVER_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_LOGON_SERVER_PARMNUM)
+#define USER_COUNTRY_CODE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_COUNTRY_CODE_PARMNUM)
+#define USER_CODE_PAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_CODE_PAGE_PARMNUM)
+#define USER_PRIMARY_GROUP_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_PRIMARY_GROUP_PARMNUM)
+#define USER_POSIX_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_POSIX_ID_PARMNUM)
+#define USER_HOME_DIR_DRIVE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+USER_HOME_DIR_DRIVE_PARMNUM)
+#define NULL_USERSETINFO_PASSWD " "
+#define TIMEQ_FOREVER ((ULONG)-1)
+#define USER_MAXSTORAGE_UNLIMITED ((ULONG)-1)
+#define USER_NO_LOGOFF ((ULONG)-1L)
+#define UNITS_PER_DAY 24
+#define UNITS_PER_WEEK 168
+#define USER_PRIV_MASK 3
+#define USER_PRIV_GUEST 0
+#define USER_PRIV_USER 1
+#define USER_PRIV_ADMIN 2
+#define MAX_PASSWD_LEN PWLEN
+#define DEF_MIN_PWLEN 6
+#define DEF_PWUNIQUENESS 5
+#define DEF_MAX_PWHIST 8
+#define DEF_MAX_PWAGE TIMEQ_FOREVER
+#define DEF_MIN_PWAGE 0
+#define DEF_FORCE_LOGOFF (ULONG)0xffffffff
+#define DEF_MAX_BADPW 0
+#define ONE_DAY 86400
+#define VALIDATED_LOGON 0
+#define PASSWORD_EXPIRED 2
+#define NON_VALIDATED_LOGON 3
+#define VALID_LOGOFF 1
+#define MODALS_MIN_PASSWD_LEN_PARMNUM 1
+#define MODALS_MAX_PASSWD_AGE_PARMNUM 2
+#define MODALS_MIN_PASSWD_AGE_PARMNUM 3
+#define MODALS_FORCE_LOGOFF_PARMNUM 4
+#define MODALS_PASSWD_HIST_LEN_PARMNUM 5
+#define MODALS_ROLE_PARMNUM 6
+#define MODALS_PRIMARY_PARMNUM 7
+#define MODALS_DOMAIN_NAME_PARMNUM 8
+#define MODALS_DOMAIN_ID_PARMNUM 9
+#define MODALS_LOCKOUT_DURATION_PARMNUM 10
+#define MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM 11
+#define MODALS_LOCKOUT_THRESHOLD_PARMNUM 12
+#define MODALS_MIN_PASSWD_LEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_LEN_PARMNUM)
+#define MODALS_MAX_PASSWD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MAX_PASSWD_AGE_PARMNUM)
+#define MODALS_MIN_PASSWD_AGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_MIN_PASSWD_AGE_PARMNUM)
+#define MODALS_FORCE_LOGOFF_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_FORCE_LOGOFF_PARMNUM)
+#define MODALS_PASSWD_HIST_LEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_PASSWD_HIST_LEN_PARMNUM)
+#define MODALS_ROLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_ROLE_PARMNUM)
+#define MODALS_PRIMARY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_PRIMARY_PARMNUM)
+#define MODALS_DOMAIN_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_NAME_PARMNUM)
+#define MODALS_DOMAIN_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+MODALS_DOMAIN_ID_PARMNUM)
+#define GROUPIDMASK 0x8000
+#define GROUP_ALL_PARMNUM 0
+#define GROUP_NAME_PARMNUM 1
+#define GROUP_COMMENT_PARMNUM 2
+#define GROUP_ATTRIBUTES_PARMNUM 3
+#define GROUP_ALL_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_ALL_PARMNUM)
+#define GROUP_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_NAME_PARMNUM)
+#define GROUP_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_COMMENT_PARMNUM)
+#define GROUP_ATTRIBUTES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_ATTRIBUTES_PARMNUM)
+#define GROUP_POSIX_ID_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+GROUP_POSIX_ID_PARMNUM)
+#define LOCALGROUP_NAME_PARMNUM 1
+#define LOCALGROUP_COMMENT_PARMNUM 2
+#define MAXPERMENTRIES 64
+#define ACCESS_NONE 0
+#define ACCESS_ALL (ACCESS_READ|ACCESS_WRITE|ACCESS_CREATE|ACCESS_EXEC|ACCESS_DELETE|ACCESS_ATRIB|ACCESS_PERM)
+#define ACCESS_READ 1
+#define ACCESS_WRITE 2
+#define ACCESS_CREATE 4
+#define ACCESS_EXEC 8
+#define ACCESS_DELETE 16
+#define ACCESS_ATRIB 32
+#define ACCESS_PERM 64
+#define ACCESS_GROUP 0x8000
+#define ACCESS_AUDIT 1
+#define ACCESS_SUCCESS_OPEN 16
+#define ACCESS_SUCCESS_WRITE 32
+#define ACCESS_SUCCESS_DELETE 64
+#define ACCESS_SUCCESS_ACL 128
+#define ACCESS_SUCCESS_MASK 240
+#define ACCESS_FAIL_OPEN 256
+#define ACCESS_FAIL_WRITE 512
+#define ACCESS_FAIL_DELETE 1024
+#define ACCESS_FAIL_ACL 2048
+#define ACCESS_FAIL_MASK 3840
+#define ACCESS_FAIL_SHIFT 4
+#define ACCESS_RESOURCE_NAME_PARMNUM 1
+#define ACCESS_ATTR_PARMNUM 2
+#define ACCESS_COUNT_PARMNUM 3
+#define ACCESS_ACCESS_LIST_PARMNUM 4
+#define ACCESS_RESOURCE_NAME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_RESOURCE_NAME_PARMNUM)
+#define ACCESS_ATTR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_ATTR_PARMNUM)
+#define ACCESS_COUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_COUNT_PARMNUM)
+#define ACCESS_ACCESS_LIST_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+ACCESS_ACCESS_LIST_PARMNUM)
+#define NETLOGON_REPLICATION_NEEDED 1
+#define NETLOGON_REPLICATION_IN_PROGRESS 2
+#define NETLOGON_FULL_SYNC_REPLICATION 4
+#define NETLOGON_REDO_NEEDED 8
+
+typedef struct _USER_INFO_0 { LPWSTR usri0_name; }USER_INFO_0,*PUSER_INFO_0,*LPUSER_INFO_0;
+typedef struct _USER_INFO_1 {
+ LPWSTR usri1_name;
+ LPWSTR usri1_password;
+ DWORD usri1_password_age;
+ DWORD usri1_priv;
+ LPWSTR usri1_home_dir;
+ LPWSTR usri1_comment;
+ DWORD usri1_flags;
+ LPWSTR usri1_script_path;
+}USER_INFO_1,*PUSER_INFO_1,*LPUSER_INFO_1;
+typedef struct _USER_INFO_2 {
+ LPWSTR usri2_name;
+ LPWSTR usri2_password;
+ DWORD usri2_password_age;
+ DWORD usri2_priv;
+ LPWSTR usri2_home_dir;
+ LPWSTR usri2_comment;
+ DWORD usri2_flags;
+ LPWSTR usri2_script_path;
+ DWORD usri2_auth_flags;
+ LPWSTR usri2_full_name;
+ LPWSTR usri2_usr_comment;
+ LPWSTR usri2_parms;
+ LPWSTR usri2_workstations;
+ DWORD usri2_last_logon;
+ DWORD usri2_last_logoff;
+ DWORD usri2_acct_expires;
+ DWORD usri2_max_storage;
+ DWORD usri2_units_per_week;
+ PBYTE usri2_logon_hours;
+ DWORD usri2_bad_pw_count;
+ DWORD usri2_num_logons;
+ LPWSTR usri2_logon_server;
+ DWORD usri2_country_code;
+ DWORD usri2_code_page;
+}USER_INFO_2,*PUSER_INFO_2,*LPUSER_INFO_2;
+typedef struct _USER_INFO_3 {
+ LPWSTR usri3_name;
+ LPWSTR usri3_password;
+ DWORD usri3_password_age;
+ DWORD usri3_priv;
+ LPWSTR usri3_home_dir;
+ LPWSTR usri3_comment;
+ DWORD usri3_flags;
+ LPWSTR usri3_script_path;
+ DWORD usri3_auth_flags;
+ LPWSTR usri3_full_name;
+ LPWSTR usri3_usr_comment;
+ LPWSTR usri3_parms;
+ LPWSTR usri3_workstations;
+ DWORD usri3_last_logon;
+ DWORD usri3_last_logoff;
+ DWORD usri3_acct_expires;
+ DWORD usri3_max_storage;
+ DWORD usri3_units_per_week;
+ PBYTE usri3_logon_hours;
+ DWORD usri3_bad_pw_count;
+ DWORD usri3_num_logons;
+ LPWSTR usri3_logon_server;
+ DWORD usri3_country_code;
+ DWORD usri3_code_page;
+ DWORD usri3_user_id;
+ DWORD usri3_primary_group_id;
+ LPWSTR usri3_profile;
+ LPWSTR usri3_home_dir_drive;
+ DWORD usri3_password_expired;
+}USER_INFO_3,*PUSER_INFO_3,*LPUSER_INFO_3;
+typedef struct _USER_INFO_10 {
+ LPWSTR usri10_name;
+ LPWSTR usri10_comment;
+ LPWSTR usri10_usr_comment;
+ LPWSTR usri10_full_name;
+}USER_INFO_10,*PUSER_INFO_10,*LPUSER_INFO_10;
+typedef struct _USER_INFO_11 {
+ LPWSTR usri11_name;
+ LPWSTR usri11_comment;
+ LPWSTR usri11_usr_comment;
+ LPWSTR usri11_full_name;
+ DWORD usri11_priv;
+ DWORD usri11_auth_flags;
+ DWORD usri11_password_age;
+ LPWSTR usri11_home_dir;
+ LPWSTR usri11_parms;
+ DWORD usri11_last_logon;
+ DWORD usri11_last_logoff;
+ DWORD usri11_bad_pw_count;
+ DWORD usri11_num_logons;
+ LPWSTR usri11_logon_server;
+ DWORD usri11_country_code;
+ LPWSTR usri11_workstations;
+ DWORD usri11_max_storage;
+ DWORD usri11_units_per_week;
+ PBYTE usri11_logon_hours;
+ DWORD usri11_code_page;
+}USER_INFO_11,*PUSER_INFO_11,*LPUSER_INFO_11;
+typedef struct _USER_INFO_20 {
+ LPWSTR usri20_name;
+ LPWSTR usri20_full_name;
+ LPWSTR usri20_comment;
+ DWORD usri20_flags;
+ DWORD usri20_user_id;
+}USER_INFO_20,*PUSER_INFO_20,*LPUSER_INFO_20;
+typedef struct _USER_INFO_21 {
+ BYTE usri21_password[ENCRYPTED_PWLEN];
+}USER_INFO_21,*PUSER_INFO_21,*LPUSER_INFO_21;
+typedef struct _USER_INFO_22 {
+ LPWSTR usri22_name;
+ BYTE usri22_password[ENCRYPTED_PWLEN];
+ DWORD usri22_password_age;
+ DWORD usri22_priv;
+ LPWSTR usri22_home_dir;
+ LPWSTR usri22_comment;
+ DWORD usri22_flags;
+ LPWSTR usri22_script_path;
+ DWORD usri22_auth_flags;
+ LPWSTR usri22_full_name;
+ LPWSTR usri22_usr_comment;
+ LPWSTR usri22_parms;
+ LPWSTR usri22_workstations;
+ DWORD usri22_last_logon;
+ DWORD usri22_last_logoff;
+ DWORD usri22_acct_expires;
+ DWORD usri22_max_storage;
+ DWORD usri22_units_per_week;
+ PBYTE usri22_logon_hours;
+ DWORD usri22_bad_pw_count;
+ DWORD usri22_num_logons;
+ LPWSTR usri22_logon_server;
+ DWORD usri22_country_code;
+ DWORD usri22_code_page;
+ }USER_INFO_22,*PUSER_INFO_22,*LPUSER_INFO_22;
+typedef struct _USER_INFO_1003 {
+ LPWSTR usri1003_password;
+} USER_INFO_1003,*PUSER_INFO_1003,*LPUSER_INFO_1003;
+typedef struct _USER_INFO_1005 {
+ DWORD usri1005_priv;
+} USER_INFO_1005,*PUSER_INFO_1005,*LPUSER_INFO_1005;
+typedef struct _USER_INFO_1006 {
+ LPWSTR usri1006_home_dir;
+} USER_INFO_1006,*PUSER_INFO_1006,*LPUSER_INFO_1006;
+typedef struct _USER_INFO_1007 {
+ LPWSTR usri1007_comment;
+} USER_INFO_1007,*PUSER_INFO_1007,*LPUSER_INFO_1007;
+typedef struct _USER_INFO_1008 {
+ DWORD usri1008_flags;
+} USER_INFO_1008,*PUSER_INFO_1008,*LPUSER_INFO_1008;
+typedef struct _USER_INFO_1009 {
+ LPWSTR usri1009_script_path;
+} USER_INFO_1009,*PUSER_INFO_1009,*LPUSER_INFO_1009;
+typedef struct _USER_INFO_1010 {
+ DWORD usri1010_auth_flags;
+} USER_INFO_1010,*PUSER_INFO_1010,*LPUSER_INFO_1010;
+typedef struct _USER_INFO_1011 {
+ LPWSTR usri1011_full_name;
+} USER_INFO_1011,*PUSER_INFO_1011,*LPUSER_INFO_1011;
+typedef struct _USER_INFO_1012 {
+ LPWSTR usri1012_usr_comment;
+} USER_INFO_1012,*PUSER_INFO_1012,*LPUSER_INFO_1012;
+typedef struct _USER_INFO_1013 {
+ LPWSTR usri1013_parms;
+} USER_INFO_1013,*PUSER_INFO_1013,*LPUSER_INFO_1013;
+typedef struct _USER_INFO_1014 {
+ LPWSTR usri1014_workstations;
+} USER_INFO_1014,*PUSER_INFO_1014,*LPUSER_INFO_1014;
+typedef struct _USER_INFO_1017 {
+ DWORD usri1017_acct_expires;
+} USER_INFO_1017,*PUSER_INFO_1017,*LPUSER_INFO_1017;
+typedef struct _USER_INFO_1018 {
+ DWORD usri1018_max_storage;
+} USER_INFO_1018,*PUSER_INFO_1018,*LPUSER_INFO_1018;
+typedef struct _USER_INFO_1020 {
+ DWORD usri1020_units_per_week;
+ PBYTE usri1020_logon_hours;
+} USER_INFO_1020,*PUSER_INFO_1020,*LPUSER_INFO_1020;
+typedef struct _USER_INFO_1023 {
+ LPWSTR usri1023_logon_server;
+} USER_INFO_1023,*PUSER_INFO_1023,*LPUSER_INFO_1023;
+typedef struct _USER_INFO_1024 {
+ DWORD usri1024_country_code;
+} USER_INFO_1024,*PUSER_INFO_1024,*LPUSER_INFO_1024;
+typedef struct _USER_INFO_1025 {
+ DWORD usri1025_code_page;
+} USER_INFO_1025,*PUSER_INFO_1025,*LPUSER_INFO_1025;
+typedef struct _USER_INFO_1051 {
+ DWORD usri1051_primary_group_id;
+} USER_INFO_1051,*PUSER_INFO_1051,*LPUSER_INFO_1051;
+typedef struct _USER_INFO_1052 {
+ LPWSTR usri1052_profile;
+} USER_INFO_1052,*PUSER_INFO_1052,*LPUSER_INFO_1052;
+typedef struct _USER_INFO_1053 {
+ LPWSTR usri1053_home_dir_drive;
+} USER_INFO_1053,*PUSER_INFO_1053,*LPUSER_INFO_1053;
+typedef struct _USER_MODALS_INFO_0 {
+ DWORD usrmod0_min_passwd_len;
+ DWORD usrmod0_max_passwd_age;
+ DWORD usrmod0_min_passwd_age;
+ DWORD usrmod0_force_logoff;
+ DWORD usrmod0_password_hist_len;
+}USER_MODALS_INFO_0,*PUSER_MODALS_INFO_0,*LPUSER_MODALS_INFO_0;
+typedef struct _USER_MODALS_INFO_1 {
+ DWORD usrmod1_role;
+ LPWSTR usrmod1_primary;
+}USER_MODALS_INFO_1,*PUSER_MODALS_INFO_1,*LPUSER_MODALS_INFO_1;
+typedef struct _USER_MODALS_INFO_2 {
+ LPWSTR usrmod2_domain_name;
+ PSID usrmod2_domain_id;
+}USER_MODALS_INFO_2,*PUSER_MODALS_INFO_2,*LPUSER_MODALS_INFO_2;
+typedef struct _USER_MODALS_INFO_3 {
+ DWORD usrmod3_lockout_duration;
+ DWORD usrmod3_lockout_observation_window;
+ DWORD usrmod3_lockout_threshold;
+}USER_MODALS_INFO_3,*PUSER_MODALS_INFO_3,*LPUSER_MODALS_INFO_3;
+typedef struct _USER_MODALS_INFO_1001 {
+ DWORD usrmod1001_min_passwd_len;
+} USER_MODALS_INFO_1001,*PUSER_MODALS_INFO_1001,*LPUSER_MODALS_INFO_1001;
+typedef struct _USER_MODALS_INFO_1002 {
+ DWORD usrmod1002_max_passwd_age;
+} USER_MODALS_INFO_1002,*PUSER_MODALS_INFO_1002,*LPUSER_MODALS_INFO_1002;
+typedef struct _USER_MODALS_INFO_1003 {
+ DWORD usrmod1003_min_passwd_age;
+} USER_MODALS_INFO_1003,*PUSER_MODALS_INFO_1003,*LPUSER_MODALS_INFO_1003;
+typedef struct _USER_MODALS_INFO_1004 {
+ DWORD usrmod1004_force_logoff;
+} USER_MODALS_INFO_1004,*PUSER_MODALS_INFO_1004,*LPUSER_MODALS_INFO_1004;
+typedef struct _USER_MODALS_INFO_1005 {
+ DWORD usrmod1005_password_hist_len;
+} USER_MODALS_INFO_1005,*PUSER_MODALS_INFO_1005,*LPUSER_MODALS_INFO_1005;
+typedef struct _USER_MODALS_INFO_1006 {
+ DWORD usrmod1006_role;
+} USER_MODALS_INFO_1006,*PUSER_MODALS_INFO_1006,*LPUSER_MODALS_INFO_1006;
+typedef struct _USER_MODALS_INFO_1007 {
+ LPWSTR usrmod1007_primary;
+} USER_MODALS_INFO_1007,*PUSER_MODALS_INFO_1007,*LPUSER_MODALS_INFO_1007;
+typedef struct _GROUP_INFO_0 {
+ LPWSTR grpi0_name;
+}GROUP_INFO_0,*PGROUP_INFO_0,*LPGROUP_INFO_0;
+typedef struct _GROUP_INFO_1 {
+ LPWSTR grpi1_name;
+ LPWSTR grpi1_comment;
+}GROUP_INFO_1,*PGROUP_INFO_1,*LPGROUP_INFO_1;
+typedef struct _GROUP_INFO_2 {
+ LPWSTR grpi2_name;
+ LPWSTR grpi2_comment;
+ DWORD grpi2_group_id;
+ DWORD grpi2_attributes;
+}GROUP_INFO_2,*PGROUP_INFO_2;
+typedef struct _GROUP_INFO_1002 {
+ LPWSTR grpi1002_comment;
+} GROUP_INFO_1002,*PGROUP_INFO_1002,*LPGROUP_INFO_1002;
+typedef struct _GROUP_INFO_1005 {
+ DWORD grpi1005_attributes;
+} GROUP_INFO_1005,*PGROUP_INFO_1005,*LPGROUP_INFO_1005;
+typedef struct _GROUP_USERS_INFO_0 {
+ LPWSTR grui0_name;
+} GROUP_USERS_INFO_0,*PGROUP_USERS_INFO_0,*LPGROUP_USERS_INFO_0;
+typedef struct _GROUP_USERS_INFO_1 {
+ LPWSTR grui1_name;
+ DWORD grui1_attributes;
+} GROUP_USERS_INFO_1,*PGROUP_USERS_INFO_1,*LPGROUP_USERS_INFO_1;
+typedef struct _LOCALGROUP_INFO_0 {
+ LPWSTR lgrpi0_name;
+}LOCALGROUP_INFO_0,*PLOCALGROUP_INFO_0,*LPLOCALGROUP_INFO_0;
+typedef struct _LOCALGROUP_INFO_1 {
+ LPWSTR lgrpi1_name;
+ LPWSTR lgrpi1_comment;
+}LOCALGROUP_INFO_1,*PLOCALGROUP_INFO_1,*LPLOCALGROUP_INFO_1;
+typedef struct _LOCALGROUP_INFO_1002 {
+ LPWSTR lgrpi1002_comment;
+}LOCALGROUP_INFO_1002,*PLOCALGROUP_INFO_1002,*LPLOCALGROUP_INFO_1002;
+typedef struct _LOCALGROUP_MEMBERS_INFO_0 {
+ PSID lgrmi0_sid;
+} LOCALGROUP_MEMBERS_INFO_0,*PLOCALGROUP_MEMBERS_INFO_0,*LPLOCALGROUP_MEMBERS_INFO_0;
+typedef struct _LOCALGROUP_MEMBERS_INFO_1 {
+ PSID lgrmi1_sid;
+ SID_NAME_USE lgrmi1_sidusage;
+ LPWSTR lgrmi1_name;
+} LOCALGROUP_MEMBERS_INFO_1,*PLOCALGROUP_MEMBERS_INFO_1,*LPLOCALGROUP_MEMBERS_INFO_1;
+typedef struct _LOCALGROUP_MEMBERS_INFO_2 {
+ PSID lgrmi2_sid;
+ SID_NAME_USE lgrmi2_sidusage;
+ LPWSTR lgrmi2_domainandname;
+} LOCALGROUP_MEMBERS_INFO_2,*PLOCALGROUP_MEMBERS_INFO_2,*LPLOCALGROUP_MEMBERS_INFO_2;
+typedef struct _LOCALGROUP_MEMBERS_INFO_3 {
+ LPWSTR lgrmi3_domainandname;
+} LOCALGROUP_MEMBERS_INFO_3,*PLOCALGROUP_MEMBERS_INFO_3,
+*LPLOCALGROUP_MEMBERS_INFO_3;
+typedef struct _LOCALGROUP_USERS_INFO_0 {
+ LPWSTR lgrui0_name;
+} LOCALGROUP_USERS_INFO_0,*PLOCALGROUP_USERS_INFO_0,*LPLOCALGROUP_USERS_INFO_0;
+typedef struct _NET_DISPLAY_USER {
+ LPWSTR usri1_name;
+ LPWSTR usri1_comment;
+ DWORD usri1_flags;
+ LPWSTR usri1_full_name;
+ DWORD usri1_user_id;
+ DWORD usri1_next_index;
+} NET_DISPLAY_USER,*PNET_DISPLAY_USER;
+typedef struct _NET_DISPLAY_MACHINE {
+ LPWSTR usri2_name;
+ LPWSTR usri2_comment;
+ DWORD usri2_flags;
+ DWORD usri2_user_id;
+ DWORD usri2_next_index;
+} NET_DISPLAY_MACHINE,*PNET_DISPLAY_MACHINE;
+typedef struct _NET_DISPLAY_GROUP {
+ LPWSTR grpi3_name;
+ LPWSTR grpi3_comment;
+ DWORD grpi3_group_id;
+ DWORD grpi3_attributes;
+ DWORD grpi3_next_index;
+} NET_DISPLAY_GROUP,*PNET_DISPLAY_GROUP;
+typedef struct _ACCESS_INFO_0 {
+ LPTSTR acc0_resource_name;
+}ACCESS_INFO_0,*PACCESS_INFO_0,*LPACCESS_INFO_0;
+typedef struct _ACCESS_INFO_1 {
+ LPTSTR acc1_resource_name;
+ DWORD acc1_attr;
+ DWORD acc1_count;
+}ACCESS_INFO_1,*PACCESS_INFO_1,*LPACCESS_INFO_1;
+typedef struct _ACCESS_INFO_1002 {
+ DWORD acc1002_attr;
+} ACCESS_INFO_1002,*PACCESS_INFO_1002,*LPACCESS_INFO_1002;
+typedef struct _ACCESS_LIST {
+ LPTSTR acl_ugname;
+ DWORD acl_access;
+}ACCESS_LIST,*PACCESS_LIST,*LPACCESS_LIST;
+typedef struct _NETLOGON_INFO_1 {
+ DWORD netlog1_flags;
+ NET_API_STATUS netlog1_pdc_connection_status;
+} NETLOGON_INFO_1,*PNETLOGON_INFO_1;
+typedef struct _NETLOGON_INFO_2 {
+ DWORD netlog2_flags;
+ NET_API_STATUS netlog2_pdc_connection_status;
+ LPWSTR netlog2_trusted_dc_name;
+ NET_API_STATUS netlog2_tc_connection_status;
+} NETLOGON_INFO_2,*PNETLOGON_INFO_2;
+typedef struct _NETLOGON_INFO_3 {
+ DWORD netlog3_flags;
+ DWORD netlog3_logon_attempts;
+ DWORD netlog3_reserved1;
+ DWORD netlog3_reserved2;
+ DWORD netlog3_reserved3;
+ DWORD netlog3_reserved4;
+ DWORD netlog3_reserved5;
+} NETLOGON_INFO_3,*PNETLOGON_INFO_3;
+
+#if 0
+/* MS has these defined, but the RxNetAccessXX functions aren't documented nor do
+ they exist in any headers */
+#define NetAccessAdd RxNetAccessAdd
+#define NetAccessEnum RxNetAccessEnum
+#define NetAccessGetInfo RxNetAccessGetInfo
+#define NetAccessSetInfo RxNetAccessSetInfo
+#define NetAccessDel RxNetAccessDel
+#define NetAccessGetUserPerms RxNetAccessGetUserPerms
+/* These are obsolete */
+NET_API_STATUS WINAPI NetAccessAdd(LPTSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetAccessEnum(LPTSTR,LPTSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetAccessGetInfo(LPTSTR,LPTSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetAccessSetInfo(LPTSTR,LPTSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetAccessDel(LPTSTR,LPTSTR);
+NET_API_STATUS WINAPI NetAccessGetUserPerms(LPTSTR,LPTSTR,LPTSTR,PDWORD);
+#endif
+
+NET_API_STATUS WINAPI NetUserAdd(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetUserEnum(LPWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetUserGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetUserSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetUserDel(LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetUserGetGroups(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetUserSetGroups(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetUserGetLocalGroups(LPWSTR,LPWSTR,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetUserModalsGet(LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetUserModalsSet(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetUserChangePassword(LPWSTR,LPWSTR,LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetGroupAdd(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetGroupAddUser(LPWSTR,LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetGroupEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetGroupGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetGroupSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetGroupDel(LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetGroupDelUser(LPWSTR,LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetGroupGetUsers(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetGroupSetUsers(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetLocalGroupAdd(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetLocalGroupAddMember(LPWSTR,LPWSTR,PSID);
+NET_API_STATUS WINAPI NetLocalGroupEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetLocalGroupGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetLocalGroupSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetLocalGroupDel(LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetLocalGroupDelMember(LPWSTR,LPWSTR,PSID);
+NET_API_STATUS WINAPI NetLocalGroupGetMembers(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,
+PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetLocalGroupSetMembers(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetLocalGroupAddMembers(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetLocalGroupDelMembers(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetQueryDisplayInformation(LPWSTR,DWORD,DWORD,DWORD,DWORD,PDWORD,PVOID*);
+NET_API_STATUS WINAPI NetGetDisplayInformationIndex(LPWSTR,DWORD,LPWSTR,PDWORD);
+NET_API_STATUS WINAPI NetGetDCName(LPWSTR,LPWSTR,PBYTE*);
+NET_API_STATUS WINAPI NetGetAnyDCName(LPWSTR,LPWSTR,PBYTE*);
+NET_API_STATUS WINAPI I_NetLogonControl(LPWSTR,DWORD,DWORD,PBYTE*);
+NET_API_STATUS WINAPI I_NetLogonControl2(LPWSTR,DWORD,DWORD,PBYTE,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmalert.h b/winsup/w32api/include/lmalert.h
new file mode 100644
index 000000000..d4899bc30
--- /dev/null
+++ b/winsup/w32api/include/lmalert.h
@@ -0,0 +1,56 @@
+#ifndef _LMALERT_H
+#define _LMALERT_H
+#define ALERTER_MAILSLOT TEXT("\\\\.\\MAILSLOT\\Alerter")
+#define ALERT_PRINT_EVENT TEXT("PRINTING")
+#define ALERT_MESSAGE_EVENT TEXT("MESSAGE")
+#define ALERT_ERRORLOG_EVENT TEXT("ERRORLOG")
+#define ALERT_ADMIN_EVENT TEXT("ADMIN")
+#define ALERT_USER_EVENT TEXT("USER")
+#define ALERT_OTHER_INFO(x) ((PBYTE)(x)+sizeof(STD_ALERT))
+#define ALERT_VAR_DATA(p) ((PBYTE)(p)+sizeof(*p))
+#define PRJOB_QSTATUS 3
+#define PRJOB_DEVSTATUS 508
+#define PRJOB_COMPLETE 4
+#define PRJOB_INTERV 8
+#define PRJOB_ 16
+#define PRJOB_DESTOFFLINE 32
+#define PRJOB_DESTPAUSED 64
+#define PRJOB_NOTIFY 128
+#define PRJOB_DESTNOPAPER 256
+#define PRJOB_DELETED 32768
+#define PRJOB_QS_QUEUED 0
+#define PRJOB_QS_PAUSED 1
+#define PRJOB_QS_SPOOLING 2
+#define PRJOB_QS_PRINTING 3
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef struct _ADMIN_OTHER_INFO {
+ DWORD alrtad_errcode;
+ DWORD alrtad_numstrings;
+}ADMIN_OTHER_INFO,*PADMIN_OTHER_INFO,*LPADMIN_OTHER_INFO;
+typedef struct _STD_ALERT {
+ DWORD alrt_timestamp;
+ TCHAR alrt_eventname[EVLEN+1];
+ TCHAR alrt_servicename[SNLEN+1];
+}STD_ALERT,*PSTD_ALERT,*LPSTD_ALERT;
+typedef struct _ERRLOG_OTHER_INFO {
+ DWORD alrter_errcode;
+ DWORD alrter_offset;
+}ERRLOG_OTHER_INFO,*PERRLOG_OTHER_INFO,*LPERRLOG_OTHER_INFO;
+typedef struct _PRINT_OTHER_INFO {
+ DWORD alrtpr_jobid;
+ DWORD alrtpr_status;
+ DWORD alrtpr_submitted;
+ DWORD alrtpr_size;
+}PRINT_OTHER_INFO,*PPRINT_OTHER_INFO,*LPPRINT_OTHER_INFO;
+typedef struct _USER_OTHER_INFO {
+ DWORD alrtus_errcode;
+ DWORD alrtus_numstrings;
+}USER_OTHER_INFO,*PUSER_OTHER_INFO,*LPUSER_OTHER_INFO;
+NET_API_STATUS WINAPI NetAlertRaise(LPCWSTR,PVOID,DWORD);
+NET_API_STATUS WINAPI NetAlertRaiseEx(LPCWSTR,PVOID,DWORD,LPCWSTR);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmapibuf.h b/winsup/w32api/include/lmapibuf.h
new file mode 100644
index 000000000..2340d6d10
--- /dev/null
+++ b/winsup/w32api/include/lmapibuf.h
@@ -0,0 +1,14 @@
+#ifndef _LMAPIBUF_H
+#define _LMAPIBUF_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+NET_API_STATUS WINAPI NetApiBufferAllocate(DWORD,PVOID*);
+NET_API_STATUS WINAPI NetApiBufferFree(PVOID);
+NET_API_STATUS WINAPI NetApiBufferReallocate(PVOID,DWORD,PVOID*);
+NET_API_STATUS WINAPI NetApiBufferSize(PVOID,PDWORD);
+NET_API_STATUS WINAPI NetapipBufferAllocate(DWORD,PVOID*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmat.h b/winsup/w32api/include/lmat.h
new file mode 100644
index 000000000..4d2cf8c11
--- /dev/null
+++ b/winsup/w32api/include/lmat.h
@@ -0,0 +1,35 @@
+#ifndef _LMAT_H
+#define _LMAT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define JOB_RUN_PERIODICALLY 1
+#define JOB_EXEC_ERROR 2
+#define JOB_RUNS_TODAY 4
+#define JOB_ADD_CURRENT_DATE 8
+#define JOB_NONINTERACTIVE 16
+#define JOB_INPUT_FLAGS (JOB_RUN_PERIODICALLY|JOB_ADD_CURRENT_DATE|JOB_NONINTERACTIVE)
+#define JOB_OUTPUT_FLAGS (JOB_RUN_PERIODICALLY|JOB_EXEC_ERROR|JOB_RUNS_TODAY|JOB_NONINTERACTIVE)
+typedef struct _AT_ENUM {
+ DWORD JobId;
+ DWORD JobTime;
+ DWORD DaysOfMonth;
+ UCHAR DaysOfWeek;
+ UCHAR Flags;
+ LPWSTR Command;
+} AT_ENUM,*PAT_ENUM,*LPAT_ENUM;
+typedef struct _AT_INFO {
+ DWORD JobTime;
+ DWORD DaysOfMonth;
+ UCHAR DaysOfWeek;
+ UCHAR Flags;
+ LPWSTR Command;
+} AT_INFO,*PAT_INFO,*LPAT_INFO;
+NET_API_STATUS WINAPI NetScheduleJobAdd(LPWSTR,PBYTE,LPDWORD);
+NET_API_STATUS WINAPI NetScheduleJobDel(LPWSTR,DWORD,DWORD);
+NET_API_STATUS WINAPI NetScheduleJobEnum(LPWSTR,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetScheduleJobGetInfo(LPWSTR,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmaudit.h b/winsup/w32api/include/lmaudit.h
new file mode 100644
index 000000000..1d944b2cb
--- /dev/null
+++ b/winsup/w32api/include/lmaudit.h
@@ -0,0 +1,246 @@
+#ifndef _LMAUDIT_H
+#define _LMAUDIT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define REVISED_AUDIT_ENTRY_STRUCT
+#define LOGFLAGS_FORWARD 0
+#define LOGFLAGS_BACKWARD 1
+#define LOGFLAGS_SEEK 2
+#define ACTION_LOCKOUT 0
+#define ACTION_ADMINUNLOCK 1
+#define AE_GUEST 0
+#define AE_USER 1
+#define AE_ADMIN 2
+#define AE_NORMAL 0
+#define AE_USERLIMIT 0
+#define AE_GENERAL 0
+#define AE_ERROR 1
+#define AE_SESSDIS 1
+#define AE_BADPW 1
+#define AE_AUTODIS 2
+#define AE_UNSHARE 2
+#define AE_ADMINPRIVREQD 2
+#define AE_ADMINDIS 3
+#define AE_NOACCESSPERM 3
+#define AE_ACCRESTRICT 4
+#define AE_NORMAL_CLOSE 0
+#define AE_SES_CLOSE 1
+#define AE_ADMIN_CLOSE 2
+#define AE_LIM_UNKNOWN 0
+#define AE_LIM_LOGONHOURS 1
+#define AE_LIM_EXPIRED 2
+#define AE_LIM_INVAL_WKSTA 3
+#define AE_LIM_DISABLED 4
+#define AE_LIM_DELETED 5
+#define AE_MOD 0
+#define AE_DELETE 1
+#define AE_ADD 2
+#define AE_UAS_USER 0
+#define AE_UAS_GROUP 1
+#define AE_UAS_MODALS 2
+#define SVAUD_SERVICE 1
+#define SVAUD_GOODSESSLOGON 6
+#define SVAUD_BADSESSLOGON 24
+#define SVAUD_SESSLOGON (SVAUD_GOODSESSLOGON|SVAUD_BADSESSLOGON)
+#define SVAUD_GOODNETLOGON 96
+#define SVAUD_BADNETLOGON 384
+#define SVAUD_NETLOGON (SVAUD_GOODNETLOGON|SVAUD_BADNETLOGON)
+#define SVAUD_LOGON (SVAUD_NETLOGON|SVAUD_SESSLOGON)
+#define SVAUD_GOODUSE 0x600
+#define SVAUD_BADUSE 0x1800
+#define SVAUD_USE (SVAUD_GOODUSE|SVAUD_BADUSE)
+#define SVAUD_USERLIST 8192
+#define SVAUD_PERMISSIONS 16384
+#define SVAUD_RESOURCE 32768
+#define SVAUD_LOGONLIM 65536
+#define AA_AUDIT_ALL 1
+#define AA_A_OWNER 4
+#define AA_CLOSE 8
+#define AA_S_OPEN 16
+#define AA_S_WRITE 32
+#define AA_S_CREATE 32
+#define AA_S_DELETE 64
+#define AA_S_ACL 128
+#define AA_S_ALL 253
+#define AA_F_OPEN 256
+#define AA_F_WRITE 512
+#define AA_F_CREATE 512
+#define AA_F_DELETE 1024
+#define AA_F_ACL 2048
+#define AA_F_ALL (AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL)
+#define AA_A_OPEN 2048
+#define AA_A_WRITE 4096
+#define AA_A_CREATE 8192
+#define AA_A_DELETE 16384
+#define AA_A_ACL 32768
+#define AA_A_ALL (AA_F_OPEN|AA_F_WRITE|AA_F_DELETE|AA_F_ACL)
+typedef struct _AUDIT_ENTRY {
+ DWORD ae_len;
+ DWORD ae_reserved;
+ DWORD ae_time;
+ DWORD ae_type;
+ DWORD ae_data_offset;
+ DWORD ae_data_size;
+} AUDIT_ENTRY,*PAUDIT_ENTRY,*LPAUDIT_ENTRY;
+typedef struct _HLOG {
+ DWORD time;
+ DWORD last_flags;
+ DWORD offset;
+ DWORD rec_offset;
+} HLOG,*PHLOG,*LPHLOG;
+typedef struct _AE_SRVSTATUS {
+ DWORD ae_sv_status;
+} AE_SRVSTATUS,*PAE_SRVSTATUS,*LPAE_SRVSTATUS;
+typedef struct _AE_SESSLOGON {
+ DWORD ae_so_compname;
+ DWORD ae_so_username;
+ DWORD ae_so_privilege;
+} AE_SESSLOGON,*PAE_SESSLOGON,*LPAE_SESSLOGON;
+typedef struct _AE_SESSLOGOFF {
+ DWORD ae_sf_compname;
+ DWORD ae_sf_username;
+ DWORD ae_sf_reason;
+} AE_SESSLOGOFF,*PAE_SESSLOGOFF,*LPAE_SESSLOGOFF;
+typedef struct _AE_SESSPWERR {
+ DWORD ae_sp_compname;
+ DWORD ae_sp_username;
+} AE_SESSPWERR,*PAE_SESSPWERR,*LPAE_SESSPWERR;
+typedef struct _AE_CONNSTART {
+ DWORD ae_ct_compname;
+ DWORD ae_ct_username;
+ DWORD ae_ct_netname;
+ DWORD ae_ct_connid;
+} AE_CONNSTART,*PAE_CONNSTART,*LPAE_CONNSTART;
+typedef struct _AE_CONNSTOP {
+ DWORD ae_cp_compname;
+ DWORD ae_cp_username;
+ DWORD ae_cp_netname;
+ DWORD ae_cp_connid;
+ DWORD ae_cp_reason;
+} AE_CONNSTOP,*PAE_CONNSTOP,*LPAE_CONNSTOP;
+typedef struct _AE_CONNREJ {
+ DWORD ae_cr_compname;
+ DWORD ae_cr_username;
+ DWORD ae_cr_netname;
+ DWORD ae_cr_reason;
+} AE_CONNREJ,*PAE_CONNREJ,*LPAE_CONNREJ;
+typedef struct _AE_RESACCESS {
+ DWORD ae_ra_compname;
+ DWORD ae_ra_username;
+ DWORD ae_ra_resname;
+ DWORD ae_ra_operation;
+ DWORD ae_ra_returncode;
+ DWORD ae_ra_restype;
+ DWORD ae_ra_fileid;
+} AE_RESACCESS,*PAE_RESACCESS,*LPAE_RESACCESS;
+typedef struct _AE_RESACCESSREJ {
+ DWORD ae_rr_compname;
+ DWORD ae_rr_username;
+ DWORD ae_rr_resname;
+ DWORD ae_rr_operation;
+} AE_RESACCESSREJ,*PAE_RESACCESSREJ,*LPAE_RESACCESSREJ;
+typedef struct _AE_CLOSEFILE {
+ DWORD ae_cf_compname;
+ DWORD ae_cf_username;
+ DWORD ae_cf_resname;
+ DWORD ae_cf_fileid;
+ DWORD ae_cf_duration;
+ DWORD ae_cf_reason;
+} AE_CLOSEFILE,*PAE_CLOSEFILE,*LPAE_CLOSEFILE;
+typedef struct _AE_SERVICESTAT {
+ DWORD ae_ss_compname;
+ DWORD ae_ss_username;
+ DWORD ae_ss_svcname;
+ DWORD ae_ss_status;
+ DWORD ae_ss_code;
+ DWORD ae_ss_text;
+ DWORD ae_ss_returnval;
+} AE_SERVICESTAT,*PAE_SERVICESTAT,*LPAE_SERVICESTAT;
+typedef struct _AE_ACLMOD {
+ DWORD ae_am_compname;
+ DWORD ae_am_username;
+ DWORD ae_am_resname;
+ DWORD ae_am_action;
+ DWORD ae_am_datalen;
+} AE_ACLMOD,*PAE_ACLMOD,*LPAE_ACLMOD;
+typedef struct _AE_UASMOD {
+ DWORD ae_um_compname;
+ DWORD ae_um_username;
+ DWORD ae_um_resname;
+ DWORD ae_um_rectype;
+ DWORD ae_um_action;
+ DWORD ae_um_datalen;
+} AE_UASMOD,*PAE_UASMOD,*LPAE_UASMOD;
+typedef struct _AE_NETLOGON {
+ DWORD ae_no_compname;
+ DWORD ae_no_username;
+ DWORD ae_no_privilege;
+ DWORD ae_no_authflags;
+} AE_NETLOGON,*PAE_NETLOGON,*LPAE_NETLOGON;
+typedef struct _AE_NETLOGOFF {
+ DWORD ae_nf_compname;
+ DWORD ae_nf_username;
+ DWORD ae_nf_reserved1;
+ DWORD ae_nf_reserved2;
+} AE_NETLOGOFF,*PAE_NETLOGOFF,*LPAE_NETLOGOFF;
+typedef struct _AE_ACCLIM {
+ DWORD ae_al_compname;
+ DWORD ae_al_username;
+ DWORD ae_al_resname;
+ DWORD ae_al_limit;
+} AE_ACCLIM,*PAE_ACCLIM,*LPAE_ACCLIM;
+typedef struct _AE_LOCKOUT {
+ DWORD ae_lk_compname;
+ DWORD ae_lk_username;
+ DWORD ae_lk_action;
+ DWORD ae_lk_bad_pw_count;
+} AE_LOCKOUT,*PAE_LOCKOUT,*LPAE_LOCKOUT;
+typedef struct _AE_GENERIC {
+ DWORD ae_ge_msgfile;
+ DWORD ae_ge_msgnum;
+ DWORD ae_ge_params;
+ DWORD ae_ge_param1;
+ DWORD ae_ge_param2;
+ DWORD ae_ge_param3;
+ DWORD ae_ge_param4;
+ DWORD ae_ge_param5;
+ DWORD ae_ge_param6;
+ DWORD ae_ge_param7;
+ DWORD ae_ge_param8;
+ DWORD ae_ge_param9;
+} AE_GENERIC,*PAE_GENERIC,*LPAE_GENERIC;
+NET_API_STATUS WINAPI NetAuditClear(LPCWSTR,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetAuditRead(LPTSTR,LPTSTR,LPHLOG,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetAuditWrite(DWORD,PBYTE,DWORD,LPTSTR,PBYTE);
+
+/* These conflict with struct typedefs, why? */
+#define AE_SRVSTATUS 0
+#define AE_SESSLOGON 1
+#define AE_SESSLOGOFF 2
+#define AE_SESSPWERR 3
+#define AE_CONNSTART 4
+#define AE_CONNSTOP 5
+#define AE_CONNREJ 6
+#define AE_RESACCESS 7
+#define AE_RESACCESSREJ 8
+#define AE_CLOSEFILE 9
+#define AE_SERVICESTAT 11
+#define AE_ACLMOD 12
+#define AE_UASMOD 13
+#define AE_NETLOGON 14
+#define AE_NETLOGOFF 15
+#define AE_NETLOGDENIED 16
+#define AE_ACCLIMITEXCD 17
+#define AE_RESACCESS2 18
+#define AE_ACLMODFAIL 19
+#define AE_LOCKOUT 20
+#define AE_GENERIC_TYPE 21
+#define AE_SRVSTART 0
+#define AE_SRVPAUSED 1
+#define AE_SRVCONT 2
+#define AE_SRVSTOP 3
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmbrowsr.h b/winsup/w32api/include/lmbrowsr.h
new file mode 100644
index 000000000..85e40bbdb
--- /dev/null
+++ b/winsup/w32api/include/lmbrowsr.h
@@ -0,0 +1,70 @@
+#ifndef _LMBROWSR_H
+#define _LMBROWSR_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define BROWSER_ROLE_PDC 1
+#define BROWSER_ROLE_BDC 2
+typedef struct _BROWSER_STATISTICS {
+ LARGE_INTEGER StatisticsStartTime;
+ LARGE_INTEGER NumberOfServerAnnouncements;
+ LARGE_INTEGER NumberOfDomainAnnouncements;
+ ULONG NumberOfElectionPackets;
+ ULONG NumberOfMailslotWrites;
+ ULONG NumberOfGetBrowserServerListRequests;
+ ULONG NumberOfServerEnumerations;
+ ULONG NumberOfDomainEnumerations;
+ ULONG NumberOfOtherEnumerations;
+ ULONG NumberOfMissedServerAnnouncements;
+ ULONG NumberOfMissedMailslotDatagrams;
+ ULONG NumberOfMissedGetBrowserServerListRequests;
+ ULONG NumberOfFailedServerAnnounceAllocations;
+ ULONG NumberOfFailedMailslotAllocations;
+ ULONG NumberOfFailedMailslotReceives;
+ ULONG NumberOfFailedMailslotWrites;
+ ULONG NumberOfFailedMailslotOpens;
+ ULONG NumberOfDuplicateMasterAnnouncements;
+LARGE_INTEGER NumberOfIllegalDatagrams;
+} BROWSER_STATISTICS,*PBROWSER_STATISTICS,*LPBROWSER_STATISTICS;
+typedef struct _BROWSER_STATISTICS_100 {
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER NumberOfServerAnnouncements;
+ LARGE_INTEGER NumberOfDomainAnnouncements;
+ ULONG NumberOfElectionPackets;
+ ULONG NumberOfMailslotWrites;
+ ULONG NumberOfGetBrowserServerListRequests;
+ LARGE_INTEGER NumberOfIllegalDatagrams;
+} BROWSER_STATISTICS_100,*PBROWSER_STATISTICS_100;
+typedef struct _BROWSER_STATISTICS_101 {
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER NumberOfServerAnnouncements;
+ LARGE_INTEGER NumberOfDomainAnnouncements;
+ ULONG NumberOfElectionPackets;
+ ULONG NumberOfMailslotWrites;
+ ULONG NumberOfGetBrowserServerListRequests;
+ LARGE_INTEGER NumberOfIllegalDatagrams;
+ ULONG NumberOfMissedServerAnnouncements;
+ ULONG NumberOfMissedMailslotDatagrams;
+ ULONG NumberOfMissedGetBrowserServerListRequests;
+ ULONG NumberOfFailedServerAnnounceAllocations;
+ ULONG NumberOfFailedMailslotAllocations;
+ ULONG NumberOfFailedMailslotReceives;
+ ULONG NumberOfFailedMailslotWrites;
+ ULONG NumberOfFailedMailslotOpens;
+ ULONG NumberOfDuplicateMasterAnnouncements;
+} BROWSER_STATISTICS_101,*PBROWSER_STATISTICS_101;
+
+NET_API_STATUS WINAPI I_BrowserServerEnum(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD);
+NET_API_STATUS WINAPI I_BrowserServerEnumEx(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR);
+NET_API_STATUS I_BrowserQueryEmulatedDomains(LPWSTR,PBYTE*,PDWORD);
+NET_API_STATUS I_BrowserQueryOtherDomains(LPCWSTR,PBYTE*,PDWORD,PDWORD);
+NET_API_STATUS I_BrowserResetNetlogonState(LPCWSTR);
+NET_API_STATUS I_BrowserSetNetlogonState(LPWSTR,LPWSTR,LPWSTR,DWORD);
+NET_API_STATUS I_BrowserQueryStatistics(LPCWSTR,LPBROWSER_STATISTICS*);
+NET_API_STATUS I_BrowserResetStatistics(LPCWSTR);
+WORD I_BrowserServerEnumForXactsrv(LPCWSTR,LPCWSTR,ULONG,USHORT,PVOID,WORD,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR,PWORD);
+NET_API_STATUS I_BrowserDebugTrace(PWCHAR,PCHAR);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmchdev.h b/winsup/w32api/include/lmchdev.h
new file mode 100644
index 000000000..c7a6814f7
--- /dev/null
+++ b/winsup/w32api/include/lmchdev.h
@@ -0,0 +1,57 @@
+#ifndef _LMCHDEV_H
+#define _LMCHDEV_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define CHARDEVQ_NO_REQUESTS (-1)
+#define CHARDEV_CLOSE 0
+#define CHARDEVQ_MAX_PRIORITY 1
+#define CHARDEVQ_DEV_PARMNUM 1
+#define HANDLE_INFO_LEVEL_1 1
+#define HANDLE_CHARTIME_PARMNUM 1
+#define HANDLE_CHARCOUNT_PARMNUM 2
+#define CHARDEV_STAT_OPENED 2
+#define CHARDEVQ_PRIORITY_PARMNUM 2
+#define CHARDEVQ_DEVS_PARMNUM 3
+#define CHARDEV_STAT_ERROR 4
+#define CHARDEVQ_NUMUSERS_PARMNUM 4
+#define CHARDEVQ_NUMAHEAD_PARMNUM 5
+#define CHARDEVQ_DEF_PRIORITY 5
+#define CHARDEVQ_PRIORITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+CHARDEVQ_PRIORITY_PARMNUM)
+#define CHARDEVQ_DEVS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+CHARDEVQ_DEVS_PARMNUM)
+#define CHARDEVQ_MIN_PRIORITY 9
+typedef struct _CHARDEV_INFO_0 { LPWSTR ch0_dev; } CHARDEV_INFO_0,*PCHARDEV_INFO_0,*LPCHARDEV_INFO_0;
+typedef struct _CHARDEV_INFO_1 {
+ LPWSTR ch1_dev;
+ DWORD ch1_status;
+ LPWSTR ch1_username;
+ DWORD ch1_time;
+} CHARDEV_INFO_1,*PCHARDEV_INFO_1,*LPCHARDEV_INFO_1;
+typedef struct _CHARDEVQ_INFO_0 { LPWSTR cq0_dev; } CHARDEVQ_INFO_0,*PCHARDEVQ_INFO_0,*LPCHARDEVQ_INFO_0;
+typedef struct _CHARDEVQ_INFO_1 {
+ LPWSTR cq1_dev;
+ DWORD cq1_priority;
+ LPWSTR cq1_devs;
+ DWORD cq1_numusers;
+ DWORD cq1_numahead;
+} CHARDEVQ_INFO_1,*PCHARDEVQ_INFO_1,*LPCHARDEVQ_INFO_1;
+typedef struct _CHARDEVQ_INFO_1002 { DWORD cq1002_priority; } CHARDEVQ_INFO_1002,*PCHARDEVQ_INFO_1002,*LPCHARDEVQ_INFO_1002;
+typedef struct _CHARDEVQ_INFO_1003 { LPWSTR cq1003_devs; } CHARDEVQ_INFO_1003,*PCHARDEVQ_INFO_1003,*LPCHARDEVQ_INFO_1003;
+typedef struct _HANDLE_INFO_1 {
+ DWORD hdli1_chartime;
+ DWORD hdli1_charcount;
+}HANDLE_INFO_1,*PHANDLE_INFO_1,*LPHANDLE_INFO_1;
+NET_API_STATUS WINAPI NetCharDevEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetCharDevGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetCharDevControl(LPCWSTR,LPCWSTR,DWORD);
+NET_API_STATUS WINAPI NetCharDevQEnum(LPCWSTR,LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetCharDevQGetInfo(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetCharDevQSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetCharDevQPurge(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetCharDevQPurgeSelf(LPCWSTR,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetHandleGetInfo(HANDLE,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetHandleSetInfo(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmconfig.h b/winsup/w32api/include/lmconfig.h
new file mode 100644
index 000000000..746a5ddc8
--- /dev/null
+++ b/winsup/w32api/include/lmconfig.h
@@ -0,0 +1,17 @@
+#ifndef _LMCONFIG_H
+#define _LMCONFIG_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define REVISED_CONFIG_APIS
+typedef struct _CONFIG_INFO_0 {
+ LPWSTR cfgi0_key;
+ LPWSTR cfgi0_data;
+} CONFIG_INFO_0,*PCONFIG_INFO_0,*LPCONFIG_INFO_0;
+NET_API_STATUS WINAPI NetConfigGet(LPCWSTR,LPCWSTR,LPCWSTR,PBYTE*);
+NET_API_STATUS WINAPI NetConfigGetAll(LPCWSTR,LPCWSTR,PBYTE*);
+NET_API_STATUS WINAPI NetConfigSet(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE,DWORD);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmcons.h b/winsup/w32api/include/lmcons.h
new file mode 100644
index 000000000..6a0d1575a
--- /dev/null
+++ b/winsup/w32api/include/lmcons.h
@@ -0,0 +1,60 @@
+#ifndef _LMCONS_H
+#define _LMCONS_H
+#define MESSAGE_FILENAME TEXT("NETMSG")
+#define OS2MSG_FILENAME TEXT("BASE")
+#define HELP_MSG_FILENAME TEXT("NETH")
+#define NET_API_FUNCTION __stdcall
+#define NET_API_STATUS DWORD
+#define API_RET_TYPE NET_API_STATUS
+#define MIN_LANMAN_MESSAGE_ID NERR_BASE
+#define MAX_LANMAN_MESSAGE_ID 5799
+#define CNLEN 15
+#define DNLEN 15
+#define LM20_CNLEN 15
+#define LM20_DNLEN 15
+#define LM20_SNLEN 15
+#define LM20_STXTLEN 63
+#define LM20_UNCLEN (LM20_CNLEN+2)
+#define LM20_NNLEN 12
+#define LM20_RMLEN (LM20_UNCLEN+1+LM20_NNLEN)
+#define UNCLEN (CNLEN+2)
+#define NNLEN 80
+#define RMLEN (UNCLEN+1+NNLEN)
+#define SNLEN 80
+#define STXTLEN 256
+#define PATHLEN 256
+#define LM20_PATHLEN 256
+#define DEVLEN 80
+#define LM20_DEVLEN 8
+#define EVLEN 16
+#define UNLEN 256
+#define LM20_UNLEN 20
+#define GNLEN UNLEN
+#define LM20_GNLEN LM20_UNLEN
+#define PWLEN 256
+#define LM20_PWLEN 14
+#define SHPWLEN 8
+#define CLTYPE_LEN 12
+#define MAXCOMMENTSZ 256
+#define LM20_MAXCOMMENTSZ 48
+#define QNLEN NNLEN
+#define LM20_QNLEN LM20_NNLEN
+#define ALERTSZ 128
+#define MAXDEVENTRIES (sizeof(int)*8)
+#define NETBIOS_NAME_LEN 16
+#define MAX_PREFERRED_LENGTH ((DWORD)-1)
+#define CRYPT_KEY_LEN 7
+#define CRYPT_TXT_LEN 8
+#define ENCRYPTED_PWLEN 16
+#define SESSION_PWLEN 24
+#define SESSION_CRYPT_KLEN 21
+#define PARMNUM_ALL 0
+#define PARM_ERROR_UNKNOWN ((DWORD)-1)
+#define PARM_ERROR_NONE 0
+#define PARMNUM_BASE_INFOLEVEL 1000
+#define PLATFORM_ID_DOS 300
+#define PLATFORM_ID_OS2 400
+#define PLATFORM_ID_NT 500
+#define PLATFORM_ID_OSF 600
+#define PLATFORM_ID_VMS 700
+#endif
diff --git a/winsup/w32api/include/lmerr.h b/winsup/w32api/include/lmerr.h
new file mode 100644
index 000000000..8400f983b
--- /dev/null
+++ b/winsup/w32api/include/lmerr.h
@@ -0,0 +1,277 @@
+#ifndef _LMERR_H
+#define _LMERR_H
+#include <winerror.h>
+#define NERR_Success 0
+#define NERR_BASE 2100
+#define NERR_NetNotStarted (NERR_BASE+2)
+#define NERR_UnknownServer (NERR_BASE+3)
+#define NERR_ShareMem (NERR_BASE+4)
+#define NERR_NoNetworkResource (NERR_BASE+5)
+#define NERR_RemoteOnly (NERR_BASE+6)
+#define NERR_DevNotRedirected (NERR_BASE+7)
+#define NERR_ServerNotStarted (NERR_BASE+14)
+#define NERR_ItemNotFound (NERR_BASE+15)
+#define NERR_UnknownDevDir (NERR_BASE+16)
+#define NERR_RedirectedPath (NERR_BASE+17)
+#define NERR_DuplicateShare (NERR_BASE+18)
+#define NERR_NoRoom (NERR_BASE+19)
+#define NERR_TooManyItems (NERR_BASE+21)
+#define NERR_InvalidMaxUsers (NERR_BASE+22)
+#define NERR_BufTooSmall (NERR_BASE+23)
+#define NERR_RemoteErr (NERR_BASE+27)
+#define NERR_LanmanIniError (NERR_BASE+31)
+#define NERR_NetworkError (NERR_BASE+36)
+#define NERR_WkstaInconsistentState (NERR_BASE+37)
+#define NERR_WkstaNotStarted (NERR_BASE+38)
+#define NERR_BrowserNotStarted (NERR_BASE+39)
+#define NERR_InternalError (NERR_BASE+40)
+#define NERR_BadTransactConfig (NERR_BASE+41)
+#define NERR_InvalidAPI (NERR_BASE+42)
+#define NERR_BadEventName (NERR_BASE+43)
+#define NERR_DupNameReboot (NERR_BASE+44)
+#define NERR_CfgCompNotFound (NERR_BASE+46)
+#define NERR_CfgParamNotFound (NERR_BASE+47)
+#define NERR_LineTooLong (NERR_BASE+49)
+#define NERR_QNotFound (NERR_BASE+50)
+#define NERR_JobNotFound (NERR_BASE+51)
+#define NERR_DestNotFound (NERR_BASE+52)
+#define NERR_DestExists (NERR_BASE+53)
+#define NERR_QExists (NERR_BASE+54)
+#define NERR_QNoRoom (NERR_BASE+55)
+#define NERR_JobNoRoom (NERR_BASE+56)
+#define NERR_DestNoRoom (NERR_BASE+57)
+#define NERR_DestIdle (NERR_BASE+58)
+#define NERR_DestInvalidOp (NERR_BASE+59)
+#define NERR_ProcNoRespond (NERR_BASE+60)
+#define NERR_SpoolerNotLoaded (NERR_BASE+61)
+#define NERR_DestInvalidState (NERR_BASE+62)
+#define NERR_QInvalidState (NERR_BASE+63)
+#define NERR_JobInvalidState (NERR_BASE+64)
+#define NERR_SpoolNoMemory (NERR_BASE+65)
+#define NERR_DriverNotFound (NERR_BASE+66)
+#define NERR_DataTypeInvalid (NERR_BASE+67)
+#define NERR_ProcNotFound (NERR_BASE+68)
+#define NERR_ServiceTableLocked (NERR_BASE+80)
+#define NERR_ServiceTableFull (NERR_BASE+81)
+#define NERR_ServiceInstalled (NERR_BASE+82)
+#define NERR_ServiceEntryLocked (NERR_BASE+83)
+#define NERR_ServiceNotInstalled (NERR_BASE+84)
+#define NERR_BadServiceName (NERR_BASE+85)
+#define NERR_ServiceCtlTimeout (NERR_BASE+86)
+#define NERR_ServiceCtlBusy (NERR_BASE+87)
+#define NERR_BadServiceProgName (NERR_BASE+88)
+#define NERR_ServiceNotCtrl (NERR_BASE+89)
+#define NERR_ServiceKillProc (NERR_BASE+90)
+#define NERR_ServiceCtlNotValid (NERR_BASE+91)
+#define NERR_NotInDispatchTbl (NERR_BASE+92)
+#define NERR_BadControlRecv (NERR_BASE+93)
+#define NERR_ServiceNotStarting (NERR_BASE+94)
+#define NERR_AlreadyLoggedOn (NERR_BASE+100)
+#define NERR_NotLoggedOn (NERR_BASE+101)
+#define NERR_BadUsername (NERR_BASE+102)
+#define NERR_BadPassword (NERR_BASE+103)
+#define NERR_UnableToAddName_W (NERR_BASE+104)
+#define NERR_UnableToAddName_F (NERR_BASE+105)
+#define NERR_UnableToDelName_W (NERR_BASE+106)
+#define NERR_UnableToDelName_F (NERR_BASE+107)
+#define NERR_LogonsPaused (NERR_BASE+109)
+#define NERR_LogonServerConflict (NERR_BASE+110)
+#define NERR_LogonNoUserPath (NERR_BASE+111)
+#define NERR_LogonScriptError (NERR_BASE+112)
+#define NERR_StandaloneLogon (NERR_BASE+114)
+#define NERR_LogonServerNotFound (NERR_BASE+115)
+#define NERR_LogonDomainExists (NERR_BASE+116)
+#define NERR_NonValidatedLogon (NERR_BASE+117)
+#define NERR_ACFNotFound (NERR_BASE+119)
+#define NERR_GroupNotFound (NERR_BASE+120)
+#define NERR_UserNotFound (NERR_BASE+121)
+#define NERR_ResourceNotFound (NERR_BASE+122)
+#define NERR_GroupExists (NERR_BASE+123)
+#define NERR_UserExists (NERR_BASE+124)
+#define NERR_ResourceExists (NERR_BASE+125)
+#define NERR_NotPrimary (NERR_BASE+126)
+#define NERR_ACFNotLoaded (NERR_BASE+127)
+#define NERR_ACFNoRoom (NERR_BASE+128)
+#define NERR_ACFFileIOFail (NERR_BASE+129)
+#define NERR_ACFTooManyLists (NERR_BASE+130)
+#define NERR_UserLogon (NERR_BASE+131)
+#define NERR_ACFNoParent (NERR_BASE+132)
+#define NERR_CanNotGrowSegment (NERR_BASE+133)
+#define NERR_SpeGroupOp (NERR_BASE+134)
+#define NERR_NotInCache (NERR_BASE+135)
+#define NERR_UserInGroup (NERR_BASE+136)
+#define NERR_UserNotInGroup (NERR_BASE+137)
+#define NERR_AccountUndefined (NERR_BASE+138)
+#define NERR_AccountExpired (NERR_BASE+139)
+#define NERR_InvalidWorkstation (NERR_BASE+140)
+#define NERR_InvalidLogonHours (NERR_BASE+141)
+#define NERR_PasswordExpired (NERR_BASE+142)
+#define NERR_PasswordCantChange (NERR_BASE+143)
+#define NERR_PasswordHistConflict (NERR_BASE+144)
+#define NERR_PasswordTooShort (NERR_BASE+145)
+#define NERR_PasswordTooRecent (NERR_BASE+146)
+#define NERR_InvalidDatabase (NERR_BASE+147)
+#define NERR_DatabaseUpToDate (NERR_BASE+148)
+#define NERR_SyncRequired (NERR_BASE+149)
+#define NERR_UseNotFound (NERR_BASE+150)
+#define NERR_BadAsgType (NERR_BASE+151)
+#define NERR_DeviceIsShared (NERR_BASE+152)
+#define NERR_NoComputerName (NERR_BASE+170)
+#define NERR_MsgAlreadyStarted (NERR_BASE+171)
+#define NERR_MsgInitFailed (NERR_BASE+172)
+#define NERR_NameNotFound (NERR_BASE+173)
+#define NERR_AlreadyForwarded (NERR_BASE+174)
+#define NERR_AddForwarded (NERR_BASE+175)
+#define NERR_AlreadyExists (NERR_BASE+176)
+#define NERR_TooManyNames (NERR_BASE+177)
+#define NERR_DelComputerName (NERR_BASE+178)
+#define NERR_LocalForward (NERR_BASE+179)
+#define NERR_GrpMsgProcessor (NERR_BASE+180)
+#define NERR_PausedRemote (NERR_BASE+181)
+#define NERR_BadReceive (NERR_BASE+182)
+#define NERR_NameInUse (NERR_BASE+183)
+#define NERR_MsgNotStarted (NERR_BASE+184)
+#define NERR_NotLocalName (NERR_BASE+185)
+#define NERR_NoForwardName (NERR_BASE+186)
+#define NERR_RemoteFull (NERR_BASE+187)
+#define NERR_NameNotForwarded (NERR_BASE+188)
+#define NERR_TruncatedBroadcast (NERR_BASE+189)
+#define NERR_InvalidDevice (NERR_BASE+194)
+#define NERR_WriteFault (NERR_BASE+195)
+#define NERR_DuplicateName (NERR_BASE+197)
+#define NERR_DeleteLater (NERR_BASE+198)
+#define NERR_IncompleteDel (NERR_BASE+199)
+#define NERR_MultipleNets (NERR_BASE+200)
+#define NERR_NetNameNotFound (NERR_BASE+210)
+#define NERR_DeviceNotShared (NERR_BASE+211)
+#define NERR_ClientNameNotFound (NERR_BASE+212)
+#define NERR_FileIdNotFound (NERR_BASE+214)
+#define NERR_ExecFailure (NERR_BASE+215)
+#define NERR_TmpFile (NERR_BASE+216)
+#define NERR_TooMuchData (NERR_BASE+217)
+#define NERR_DeviceShareConflict (NERR_BASE+218)
+#define NERR_BrowserTableIncomplete (NERR_BASE+219)
+#define NERR_NotLocalDomain (NERR_BASE+220)
+#define NERR_DevInvalidOpCode (NERR_BASE+231)
+#define NERR_DevNotFound (NERR_BASE+232)
+#define NERR_DevNotOpen (NERR_BASE+233)
+#define NERR_BadQueueDevString (NERR_BASE+234)
+#define NERR_BadQueuePriority (NERR_BASE+235)
+#define NERR_NoCommDevs (NERR_BASE+237)
+#define NERR_QueueNotFound (NERR_BASE+238)
+#define NERR_BadDevString (NERR_BASE+240)
+#define NERR_BadDev (NERR_BASE+241)
+#define NERR_InUseBySpooler (NERR_BASE+242)
+#define NERR_CommDevInUse (NERR_BASE+243)
+#define NERR_InvalidComputer (NERR_BASE+251)
+#define NERR_MaxLenExceeded (NERR_BASE+254)
+#define NERR_BadComponent (NERR_BASE+256)
+#define NERR_CantType (NERR_BASE+257)
+#define NERR_TooManyEntries (NERR_BASE+262)
+#define NERR_ProfileFileTooBig (NERR_BASE+270)
+#define NERR_ProfileOffset (NERR_BASE+271)
+#define NERR_ProfileCleanup (NERR_BASE+272)
+#define NERR_ProfileUnknownCmd (NERR_BASE+273)
+#define NERR_ProfileLoadErr (NERR_BASE+274)
+#define NERR_ProfileSaveErr (NERR_BASE+275)
+#define NERR_LogOverflow (NERR_BASE+277)
+#define NERR_LogFileChanged (NERR_BASE+278)
+#define NERR_LogFileCorrupt (NERR_BASE+279)
+#define NERR_SourceIsDir (NERR_BASE+280)
+#define NERR_BadSource (NERR_BASE+281)
+#define NERR_BadDest (NERR_BASE+282)
+#define NERR_DifferentServers (NERR_BASE+283)
+#define NERR_RunSrvPaused (NERR_BASE+285)
+#define NERR_ErrCommRunSrv (NERR_BASE+289)
+#define NERR_ErrorExecingGhost (NERR_BASE+291)
+#define NERR_ShareNotFound (NERR_BASE+292)
+#define NERR_InvalidLana (NERR_BASE+300)
+#define NERR_OpenFiles (NERR_BASE+301)
+#define NERR_ActiveConns (NERR_BASE+302)
+#define NERR_BadPasswordCore (NERR_BASE+303)
+#define NERR_DevInUse (NERR_BASE+304)
+#define NERR_LocalDrive (NERR_BASE+305)
+#define NERR_AlertExists (NERR_BASE+330)
+#define NERR_TooManyAlerts (NERR_BASE+331)
+#define NERR_NoSuchAlert (NERR_BASE+332)
+#define NERR_BadRecipient (NERR_BASE+333)
+#define NERR_AcctLimitExceeded (NERR_BASE+334)
+#define NERR_InvalidLogSeek (NERR_BASE+340)
+#define NERR_BadUasConfig (NERR_BASE+350)
+#define NERR_InvalidUASOp (NERR_BASE+351)
+#define NERR_LastAdmin (NERR_BASE+352)
+#define NERR_DCNotFound (NERR_BASE+353)
+#define NERR_LogonTrackingError (NERR_BASE+354)
+#define NERR_NetlogonNotStarted (NERR_BASE+355)
+#define NERR_CanNotGrowUASFile (NERR_BASE+356)
+#define NERR_TimeDiffAtDC (NERR_BASE+357)
+#define NERR_PasswordMismatch (NERR_BASE+358)
+#define NERR_NoSuchServer (NERR_BASE+360)
+#define NERR_NoSuchSession (NERR_BASE+361)
+#define NERR_NoSuchConnection (NERR_BASE+362)
+#define NERR_TooManyServers (NERR_BASE+363)
+#define NERR_TooManySessions (NERR_BASE+364)
+#define NERR_TooManyConnections (NERR_BASE+365)
+#define NERR_TooManyFiles (NERR_BASE+366)
+#define NERR_NoAlternateServers (NERR_BASE+367)
+#define NERR_TryDownLevel (NERR_BASE+370)
+#define NERR_UPSDriverNotStarted (NERR_BASE+380)
+#define NERR_UPSInvalidConfig (NERR_BASE+381)
+#define NERR_UPSInvalidCommPort (NERR_BASE+382)
+#define NERR_UPSSignalAsserted (NERR_BASE+383)
+#define NERR_UPSShutdownFailed (NERR_BASE+384)
+#define NERR_BadDosRetCode (NERR_BASE+400)
+#define NERR_ProgNeedsExtraMem (NERR_BASE+401)
+#define NERR_BadDosFunction (NERR_BASE+402)
+#define NERR_RemoteBootFailed (NERR_BASE+403)
+#define NERR_BadFileCheckSum (NERR_BASE+404)
+#define NERR_NoRplBootSystem (NERR_BASE+405)
+#define NERR_RplLoadrNetBiosErr (NERR_BASE+406)
+#define NERR_RplLoadrDiskErr (NERR_BASE+407)
+#define NERR_ImageParamErr (NERR_BASE+408)
+#define NERR_TooManyImageParams (NERR_BASE+409)
+#define NERR_NonDosFloppyUsed (NERR_BASE+410)
+#define NERR_RplBootRestart (NERR_BASE+411)
+#define NERR_RplSrvrCallFailed (NERR_BASE+412)
+#define NERR_CantConnectRplSrvr (NERR_BASE+413)
+#define NERR_CantOpenImageFile (NERR_BASE+414)
+#define NERR_CallingRplSrvr (NERR_BASE+415)
+#define NERR_StartingRplBoot (NERR_BASE+416)
+#define NERR_RplBootServiceTerm (NERR_BASE+417)
+#define NERR_RplBootStartFailed (NERR_BASE+418)
+#define NERR_RPL_CONNECTED (NERR_BASE+419)
+#define NERR_BrowserConfiguredToNotRun (NERR_BASE+450)
+#define NERR_RplNoAdaptersStarted (NERR_BASE+510)
+#define NERR_RplBadRegistry (NERR_BASE+511)
+#define NERR_RplBadDatabase (NERR_BASE+512)
+#define NERR_RplRplfilesShare (NERR_BASE+513)
+#define NERR_RplNotRplServer (NERR_BASE+514)
+#define NERR_RplCannotEnum (NERR_BASE+515)
+#define NERR_RplWkstaInfoCorrupted (NERR_BASE+516)
+#define NERR_RplWkstaNotFound (NERR_BASE+517)
+#define NERR_RplWkstaNameUnavailable (NERR_BASE+518)
+#define NERR_RplProfileInfoCorrupted (NERR_BASE+519)
+#define NERR_RplProfileNotFound (NERR_BASE+520)
+#define NERR_RplProfileNameUnavailable (NERR_BASE+521)
+#define NERR_RplProfileNotEmpty (NERR_BASE+522)
+#define NERR_RplConfigInfoCorrupted (NERR_BASE+523)
+#define NERR_RplConfigNotFound (NERR_BASE+524)
+#define NERR_RplAdapterInfoCorrupted (NERR_BASE+525)
+#define NERR_RplInternal (NERR_BASE+526)
+#define NERR_RplVendorInfoCorrupted (NERR_BASE+527)
+#define NERR_RplBootInfoCorrupted (NERR_BASE+528)
+#define NERR_RplWkstaNeedsUserAcct (NERR_BASE+529)
+#define NERR_RplNeedsRPLUSERAcct (NERR_BASE+530)
+#define NERR_RplBootNotFound (NERR_BASE+531)
+#define NERR_RplIncompatibleProfile (NERR_BASE+532)
+#define NERR_RplAdapterNameUnavailable (NERR_BASE+533)
+#define NERR_RplConfigNotEmpty (NERR_BASE+534)
+#define NERR_RplBootInUse (NERR_BASE+535)
+#define NERR_RplBackupDatabase (NERR_BASE+536)
+#define NERR_RplAdapterNotFound (NERR_BASE+537)
+#define NERR_RplVendorNotFound (NERR_BASE+538)
+#define NERR_RplVendorNameUnavailable (NERR_BASE+539)
+#define NERR_RplBootNameUnavailable (NERR_BASE+540)
+#define NERR_RplConfigNameUnavailable (NERR_BASE+541)
+#define MAX_NERR (NERR_BASE+899)
+#endif
diff --git a/winsup/w32api/include/lmerrlog.h b/winsup/w32api/include/lmerrlog.h
new file mode 100644
index 000000000..7948af28f
--- /dev/null
+++ b/winsup/w32api/include/lmerrlog.h
@@ -0,0 +1,207 @@
+#ifndef _LMERRLOG_H
+#define _LMERRLOG_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define ERRLOG_BASE 3100
+#define ERRLOG2_BASE 5700
+#define LOGFLAGS_FORWARD 0
+#define LOGFLAGS_BACKWARD 1
+#define LOGFLAGS_SEEK 2
+#define NELOG_Internal_Error ERRLOG_BASE
+#define NELOG_Resource_Shortage (ERRLOG_BASE+1)
+#define NELOG_Unable_To_Lock_Segment (ERRLOG_BASE+2)
+#define NELOG_Unable_To_Unlock_Segment (ERRLOG_BASE+3)
+#define NELOG_Uninstall_Service (ERRLOG_BASE+4)
+#define NELOG_Init_Exec_Fail (ERRLOG_BASE+5)
+#define NELOG_Ncb_Error (ERRLOG_BASE+6)
+#define NELOG_Net_Not_Started (ERRLOG_BASE+7)
+#define NELOG_Ioctl_Error (ERRLOG_BASE+8)
+#define NELOG_System_Semaphore (ERRLOG_BASE+9)
+#define NELOG_Init_OpenCreate_Err (ERRLOG_BASE+10)
+#define NELOG_NetBios (ERRLOG_BASE+11)
+#define NELOG_SMB_Illegal (ERRLOG_BASE+12)
+#define NELOG_Service_Fail (ERRLOG_BASE+13)
+#define NELOG_Entries_Lost (ERRLOG_BASE+14)
+#define NELOG_Init_Seg_Overflow (ERRLOG_BASE+20)
+#define NELOG_Srv_No_Mem_Grow (ERRLOG_BASE+21)
+#define NELOG_Access_File_Bad (ERRLOG_BASE+22)
+#define NELOG_Srvnet_Not_Started (ERRLOG_BASE+23)
+#define NELOG_Init_Chardev_Err (ERRLOG_BASE+24)
+#define NELOG_Remote_API (ERRLOG_BASE+25)
+#define NELOG_Ncb_TooManyErr (ERRLOG_BASE+26)
+#define NELOG_Mailslot_err (ERRLOG_BASE+27)
+#define NELOG_ReleaseMem_Alert (ERRLOG_BASE+28)
+#define NELOG_AT_cannot_write (ERRLOG_BASE+29)
+#define NELOG_Cant_Make_Msg_File (ERRLOG_BASE+30)
+#define NELOG_Exec_Netservr_NoMem (ERRLOG_BASE+31)
+#define NELOG_Server_Lock_Failure (ERRLOG_BASE+32)
+#define NELOG_Msg_Shutdown (ERRLOG_BASE+40)
+#define NELOG_Msg_Sem_Shutdown (ERRLOG_BASE+41)
+#define NELOG_Msg_Log_Err (ERRLOG_BASE+50)
+#define NELOG_VIO_POPUP_ERR (ERRLOG_BASE+51)
+#define NELOG_Msg_Unexpected_SMB_Type (ERRLOG_BASE+52)
+#define NELOG_Wksta_Infoseg (ERRLOG_BASE+60)
+#define NELOG_Wksta_Compname (ERRLOG_BASE+61)
+#define NELOG_Wksta_BiosThreadFailure (ERRLOG_BASE+62)
+#define NELOG_Wksta_IniSeg (ERRLOG_BASE+63)
+#define NELOG_Wksta_HostTab_Full (ERRLOG_BASE+64)
+#define NELOG_Wksta_Bad_Mailslot_SMB (ERRLOG_BASE+65)
+#define NELOG_Wksta_UASInit (ERRLOG_BASE+66)
+#define NELOG_Wksta_SSIRelogon (ERRLOG_BASE+67)
+#define NELOG_Build_Name (ERRLOG_BASE+70)
+#define NELOG_Name_Expansion (ERRLOG_BASE+71)
+#define NELOG_Message_Send (ERRLOG_BASE+72)
+#define NELOG_Mail_Slt_Err (ERRLOG_BASE+73)
+#define NELOG_AT_cannot_read (ERRLOG_BASE+74)
+#define NELOG_AT_sched_err (ERRLOG_BASE+75)
+#define NELOG_AT_schedule_file_created (ERRLOG_BASE+76)
+#define NELOG_Srvnet_NB_Open (ERRLOG_BASE+77)
+#define NELOG_AT_Exec_Err (ERRLOG_BASE+78)
+#define NELOG_Lazy_Write_Err (ERRLOG_BASE+80)
+#define NELOG_HotFix (ERRLOG_BASE+81)
+#define NELOG_HardErr_From_Server (ERRLOG_BASE+82)
+#define NELOG_LocalSecFail1 (ERRLOG_BASE+83)
+#define NELOG_LocalSecFail2 (ERRLOG_BASE+84)
+#define NELOG_LocalSecFail3 (ERRLOG_BASE+85)
+#define NELOG_LocalSecGeneralFail (ERRLOG_BASE+86)
+#define NELOG_NetWkSta_Internal_Error (ERRLOG_BASE+90)
+#define NELOG_NetWkSta_No_Resource (ERRLOG_BASE+91)
+#define NELOG_NetWkSta_SMB_Err (ERRLOG_BASE+92)
+#define NELOG_NetWkSta_VC_Err (ERRLOG_BASE+93)
+#define NELOG_NetWkSta_Stuck_VC_Err (ERRLOG_BASE+94)
+#define NELOG_NetWkSta_NCB_Err (ERRLOG_BASE+95)
+#define NELOG_NetWkSta_Write_Behind_Err (ERRLOG_BASE+96)
+#define NELOG_NetWkSta_Reset_Err (ERRLOG_BASE+97)
+#define NELOG_NetWkSta_Too_Many (ERRLOG_BASE+98)
+#define NELOG_Srv_Thread_Failure (ERRLOG_BASE+104)
+#define NELOG_Srv_Close_Failure (ERRLOG_BASE+105)
+#define NELOG_ReplUserCurDir (ERRLOG_BASE+106)
+#define NELOG_ReplCannotMasterDir (ERRLOG_BASE+107)
+#define NELOG_ReplUpdateError (ERRLOG_BASE+108)
+#define NELOG_ReplLostMaster (ERRLOG_BASE+109)
+#define NELOG_NetlogonAuthDCFail (ERRLOG_BASE+110)
+#define NELOG_ReplLogonFailed (ERRLOG_BASE+111)
+#define NELOG_ReplNetErr (ERRLOG_BASE+112)
+#define NELOG_ReplMaxFiles (ERRLOG_BASE+113)
+#define NELOG_ReplMaxTreeDepth (ERRLOG_BASE+114)
+#define NELOG_ReplBadMsg (ERRLOG_BASE+115)
+#define NELOG_ReplSysErr (ERRLOG_BASE+116)
+#define NELOG_ReplUserLoged (ERRLOG_BASE+117)
+#define NELOG_ReplBadImport (ERRLOG_BASE+118)
+#define NELOG_ReplBadExport (ERRLOG_BASE+119)
+#define NELOG_ReplSignalFileErr (ERRLOG_BASE+120)
+#define NELOG_DiskFT (ERRLOG_BASE+121)
+#define NELOG_ReplAccessDenied (ERRLOG_BASE+122)
+#define NELOG_NetlogonFailedPrimary (ERRLOG_BASE+123)
+#define NELOG_NetlogonPasswdSetFailed (ERRLOG_BASE+124)
+#define NELOG_NetlogonTrackingError (ERRLOG_BASE+125)
+#define NELOG_NetlogonSyncError (ERRLOG_BASE+126)
+#define NELOG_UPS_PowerOut (ERRLOG_BASE+130)
+#define NELOG_UPS_Shutdown (ERRLOG_BASE+131)
+#define NELOG_UPS_CmdFileError (ERRLOG_BASE+132)
+#define NELOG_UPS_CannotOpenDriver (ERRLOG_BASE+133)
+#define NELOG_UPS_PowerBack (ERRLOG_BASE+134)
+#define NELOG_UPS_CmdFileConfig (ERRLOG_BASE+135)
+#define NELOG_UPS_CmdFileExec (ERRLOG_BASE+136)
+#define NELOG_Missing_Parameter (ERRLOG_BASE+150)
+#define NELOG_Invalid_Config_Line (ERRLOG_BASE+151)
+#define NELOG_Invalid_Config_File (ERRLOG_BASE+152)
+#define NELOG_File_Changed (ERRLOG_BASE+153)
+#define NELOG_Files_Dont_Fit (ERRLOG_BASE+154)
+#define NELOG_Wrong_DLL_Version (ERRLOG_BASE+155)
+#define NELOG_Error_in_DLL (ERRLOG_BASE+156)
+#define NELOG_System_Error (ERRLOG_BASE+157)
+#define NELOG_FT_ErrLog_Too_Large (ERRLOG_BASE+158)
+#define NELOG_FT_Update_In_Progress (ERRLOG_BASE+159)
+#define NELOG_OEM_Code (ERRLOG_BASE+199)
+#define NELOG_NetlogonSSIInitError ERRLOG2_BASE
+#define NELOG_NetlogonFailedToUpdateTrustList (ERRLOG2_BASE+1)
+#define NELOG_NetlogonFailedToAddRpcInterface (ERRLOG2_BASE+2)
+#define NELOG_NetlogonFailedToReadMailslot (ERRLOG2_BASE+3)
+#define NELOG_NetlogonFailedToRegisterSC (ERRLOG2_BASE+4)
+#define NELOG_NetlogonChangeLogCorrupt (ERRLOG2_BASE+5)
+#define NELOG_NetlogonFailedToCreateShare (ERRLOG2_BASE+6)
+#define NELOG_NetlogonDownLevelLogonFailed (ERRLOG2_BASE+7)
+#define NELOG_NetlogonDownLevelLogoffFailed (ERRLOG2_BASE+8)
+#define NELOG_NetlogonNTLogonFailed (ERRLOG2_BASE+9)
+#define NELOG_NetlogonNTLogoffFailed (ERRLOG2_BASE+10)
+#define NELOG_NetlogonPartialSyncCallSuccess (ERRLOG2_BASE+11)
+#define NELOG_NetlogonPartialSyncCallFailed (ERRLOG2_BASE+12)
+#define NELOG_NetlogonFullSyncCallSuccess (ERRLOG2_BASE+13)
+#define NELOG_NetlogonFullSyncCallFailed (ERRLOG2_BASE+14)
+#define NELOG_NetlogonPartialSyncSuccess (ERRLOG2_BASE+15)
+#define NELOG_NetlogonPartialSyncFailed (ERRLOG2_BASE+16)
+#define NELOG_NetlogonFullSyncSuccess (ERRLOG2_BASE+17)
+#define NELOG_NetlogonFullSyncFailed (ERRLOG2_BASE+18)
+#define NELOG_NetlogonAuthNoDomainController (ERRLOG2_BASE+19)
+#define NELOG_NetlogonAuthNoTrustLsaSecret (ERRLOG2_BASE+20)
+#define NELOG_NetlogonAuthNoTrustSamAccount (ERRLOG2_BASE+21)
+#define NELOG_NetlogonServerAuthFailed (ERRLOG2_BASE+22)
+#define NELOG_NetlogonServerAuthNoTrustSamAccount (ERRLOG2_BASE+23)
+#define NELOG_FailedToRegisterSC (ERRLOG2_BASE+24)
+#define NELOG_FailedToSetServiceStatus (ERRLOG2_BASE+25)
+#define NELOG_FailedToGetComputerName (ERRLOG2_BASE+26)
+#define NELOG_DriverNotLoaded (ERRLOG2_BASE+27)
+#define NELOG_NoTranportLoaded (ERRLOG2_BASE+28)
+#define NELOG_NetlogonFailedDomainDelta (ERRLOG2_BASE+29)
+#define NELOG_NetlogonFailedGlobalGroupDelta (ERRLOG2_BASE+30)
+#define NELOG_NetlogonFailedLocalGroupDelta (ERRLOG2_BASE+31)
+#define NELOG_NetlogonFailedUserDelta (ERRLOG2_BASE+32)
+#define NELOG_NetlogonFailedPolicyDelta (ERRLOG2_BASE+33)
+#define NELOG_NetlogonFailedTrustedDomainDelta (ERRLOG2_BASE+34)
+#define NELOG_NetlogonFailedAccountDelta (ERRLOG2_BASE+35)
+#define NELOG_NetlogonFailedSecretDelta (ERRLOG2_BASE+36)
+#define NELOG_NetlogonSystemError (ERRLOG2_BASE+37)
+#define NELOG_NetlogonDuplicateMachineAccounts (ERRLOG2_BASE+38)
+#define NELOG_NetlogonTooManyGlobalGroups (ERRLOG2_BASE+39)
+#define NELOG_NetlogonBrowserDriver (ERRLOG2_BASE+40)
+#define NELOG_NetlogonAddNameFailure (ERRLOG2_BASE+41)
+#define NELOG_RplMessages (ERRLOG2_BASE+42)
+#define NELOG_RplXnsBoot (ERRLOG2_BASE+43)
+#define NELOG_RplSystem (ERRLOG2_BASE+44)
+#define NELOG_RplWkstaTimeout (ERRLOG2_BASE+45)
+#define NELOG_RplWkstaFileOpen (ERRLOG2_BASE+46)
+#define NELOG_RplWkstaFileRead (ERRLOG2_BASE+47)
+#define NELOG_RplWkstaMemory (ERRLOG2_BASE+48)
+#define NELOG_RplWkstaFileChecksum (ERRLOG2_BASE+49)
+#define NELOG_RplWkstaFileLineCount (ERRLOG2_BASE+50)
+#define NELOG_RplWkstaBbcFile (ERRLOG2_BASE+51)
+#define NELOG_RplWkstaFileSize (ERRLOG2_BASE+52)
+#define NELOG_RplWkstaInternal (ERRLOG2_BASE+53)
+#define NELOG_RplWkstaWrongVersion (ERRLOG2_BASE+54)
+#define NELOG_RplWkstaNetwork (ERRLOG2_BASE+55)
+#define NELOG_RplAdapterResource (ERRLOG2_BASE+56)
+#define NELOG_RplFileCopy (ERRLOG2_BASE+57)
+#define NELOG_RplFileDelete (ERRLOG2_BASE+58)
+#define NELOG_RplFilePerms (ERRLOG2_BASE+59)
+#define NELOG_RplCheckConfigs (ERRLOG2_BASE+60)
+#define NELOG_RplCreateProfiles (ERRLOG2_BASE+61)
+#define NELOG_RplRegistry (ERRLOG2_BASE+62)
+#define NELOG_RplReplaceRPLDISK (ERRLOG2_BASE+63)
+#define NELOG_RplCheckSecurity (ERRLOG2_BASE+64)
+#define NELOG_RplBackupDatabase (ERRLOG2_BASE+65)
+#define NELOG_RplInitDatabase (ERRLOG2_BASE+66)
+#define NELOG_RplRestoreDatabaseFailure (ERRLOG2_BASE+67)
+#define NELOG_RplRestoreDatabaseSuccess (ERRLOG2_BASE+68)
+#define NELOG_RplInitRestoredDatabase (ERRLOG2_BASE+69)
+#define NELOG_NetlogonSessionTypeWrong (ERRLOG2_BASE+70)
+#define REVISED_ERROR_LOG_STRUCT
+typedef struct _ERROR_LOG {
+ DWORD el_len;
+ DWORD el_reserved;
+ DWORD el_time;
+ DWORD el_error;
+ LPWSTR el_name;
+ LPWSTR el_text;
+ LPBYTE el_data;
+ DWORD el_data_size;
+ DWORD el_nstrings;
+} ERROR_LOG,*PERROR_LOG,*LPERROR_LOG;
+NET_API_STATUS WINAPI NetErrorLogClear(LPCWSTR,LPCWSTR,LPBYTE);
+NET_API_STATUS WINAPI NetErrorLogRead(LPCWSTR,LPWSTR,LPHLOG,DWORD,LPDWORD,DWORD,DWORD,LPBYTE*,DWORD,LPDWORD,LPDWORD);
+NET_API_STATUS WINAPI NetErrorLogWrite(LPBYTE,DWORD,LPCWSTR,LPBYTE,DWORD,LPBYTE,DWORD,LPBYTE);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmmsg.h b/winsup/w32api/include/lmmsg.h
new file mode 100644
index 000000000..01689812e
--- /dev/null
+++ b/winsup/w32api/include/lmmsg.h
@@ -0,0 +1,23 @@
+#ifndef _LMMSG_H
+#define _LMMSG_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define MSGNAME_NOT_FORWARDED 0
+#define MSGNAME_FORWARDED_TO 4
+#define MSGNAME_FORWARDED_FROM 16
+typedef struct _MSG_INFO_0 { LPWSTR msgi0_name; }MSG_INFO_0,*PMSG_INFO_0,*LPMSG_INFO_0;
+typedef struct _MSG_INFO_1 {
+ LPWSTR msgi1_name;
+ DWORD msgi1_forward_flag;
+ LPWSTR msgi1_forward;
+}MSG_INFO_1,*PMSG_INFO_1,*LPMSG_INFO_1;
+NET_API_STATUS WINAPI NetMessageBufferSend(LPCWSTR,LPCWSTR,LPCWSTR,PBYTE,DWORD);
+NET_API_STATUS WINAPI NetMessageNameAdd(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetMessageNameDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetMessageNameEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetMessageNameGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmremutl.h b/winsup/w32api/include/lmremutl.h
new file mode 100644
index 000000000..553bdbd5b
--- /dev/null
+++ b/winsup/w32api/include/lmremutl.h
@@ -0,0 +1,41 @@
+#ifndef _LMREMUTL_H
+#define _LMREMUTL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SUPPORTS_REMOTE_ADMIN_PROTOCOL 2
+#define SUPPORTS_RPC 4
+#define SUPPORTS_SAM_PROTOCOL 8
+#define SUPPORTS_UNICODE 16
+#define SUPPORTS_LOCAL 32
+#define SUPPORTS_ANY 0xFFFFFFFF
+#define NO_PERMISSION_REQUIRED 1
+#define ALLOCATE_RESPONSE 2
+#define USE_SPECIFIC_TRANSPORT 0x80000000
+#ifndef DESC_CHAR_UNICODE
+typedef CHAR DESC_CHAR;
+#else
+typedef WCHAR DESC_CHAR;
+#endif
+typedef DESC_CHAR *LPDESC;
+typedef struct _TIME_OF_DAY_INFO {
+ DWORD tod_elapsedt;
+ DWORD tod_msecs;
+ DWORD tod_hours;
+ DWORD tod_mins;
+ DWORD tod_secs;
+ DWORD tod_hunds;
+ LONG tod_timezone;
+ DWORD tod_tinterval;
+ DWORD tod_day;
+ DWORD tod_month;
+ DWORD tod_year;
+ DWORD tod_weekday;
+} TIME_OF_DAY_INFO,*PTIME_OF_DAY_INFO,*LPTIME_OF_DAY_INFO;
+NET_API_STATUS WINAPI NetRemoteTOD(LPCWSTR,PBYTE*);
+NET_API_STATUS WINAPI NetRemoteComputerSupports(LPCWSTR,DWORD,PDWORD);
+NET_API_STATUS RxRemoteApi(DWORD,LPCWSTR,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,LPDESC,DWORD,... );
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmrepl.h b/winsup/w32api/include/lmrepl.h
new file mode 100644
index 000000000..f0ca544a7
--- /dev/null
+++ b/winsup/w32api/include/lmrepl.h
@@ -0,0 +1,90 @@
+#ifndef _LMREPL_H
+#define _LMREPL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define REPL_ROLE_EXPORT 1
+#define REPL_ROLE_IMPORT 2
+#define REPL_ROLE_BOTH 3
+#define REPL_INTERVAL_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+0)
+#define REPL_PULSE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+1)
+#define REPL_GUARDTIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+2)
+#define REPL_RANDOM_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+3)
+#define REPL_UNLOCK_NOFORCE 0
+#define REPL_UNLOCK_FORCE 1
+#define REPL_STATE_OK 0
+#define REPL_STATE_NO_MASTER 1
+#define REPL_STATE_NO_SYNC 2
+#define REPL_STATE_NEVER_REPLICATED 3
+#define REPL_INTEGRITY_FILE 1
+#define REPL_INTEGRITY_TREE 2
+#define REPL_EXTENT_FILE 1
+#define REPL_EXTENT_TREE 2
+#define REPL_EXPORT_INTEGRITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+0)
+#define REPL_EXPORT_EXTENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+1)
+typedef struct _REPL_INFO_0 {
+ DWORD rp0_role;
+ LPWSTR rp0_exportpath;
+ LPWSTR rp0_exportlist;
+ LPWSTR rp0_importpath;
+ LPWSTR rp0_importlist;
+ LPWSTR rp0_logonusername;
+ DWORD rp0_interval;
+ DWORD rp0_pulse;
+ DWORD rp0_guardtime;
+ DWORD rp0_random;
+} REPL_INFO_0,*PREPL_INFO_0,*LPREPL_INFO_0;
+typedef struct _REPL_INFO_1000 { DWORD rp1000_interval; } REPL_INFO_1000,*PREPL_INFO_1000,*LPREPL_INFO_1000;
+typedef struct _REPL_INFO_1001 { DWORD rp1001_pulse; } REPL_INFO_1001,*PREPL_INFO_1001,*LPREPL_INFO_1001;
+typedef struct _REPL_INFO_1002 { DWORD rp1002_guardtime; } REPL_INFO_1002,*PREPL_INFO_1002,*LPREPL_INFO_1002;
+typedef struct _REPL_INFO_1003 { DWORD rp1003_random; } REPL_INFO_1003,*PREPL_INFO_1003,*LPREPL_INFO_1003;
+
+NET_API_STATUS WINAPI NetReplGetInfo(LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetReplSetInfo(LPCWSTR,DWORD,PBYTE,PDWORD);
+typedef struct _REPL_EDIR_INFO_0 {
+ LPWSTR rped0_dirname;
+} REPL_EDIR_INFO_0,*PREPL_EDIR_INFO_0,*LPREPL_EDIR_INFO_0;
+typedef struct _REPL_EDIR_INFO_1 {
+ LPWSTR rped1_dirname;
+ DWORD rped1_integrity;
+ DWORD rped1_extent;
+} REPL_EDIR_INFO_1,*PREPL_EDIR_INFO_1,*LPREPL_EDIR_INFO_1;
+typedef struct _REPL_EDIR_INFO_2 {
+ LPWSTR rped2_dirname;
+ DWORD rped2_integrity;
+ DWORD rped2_extent;
+ DWORD rped2_lockcount;
+ DWORD rped2_locktime;
+} REPL_EDIR_INFO_2,*PREPL_EDIR_INFO_2,*LPREPL_EDIR_INFO_2;
+typedef struct _REPL_EDIR_INFO_1000 {
+ DWORD rped1000_integrity;
+} REPL_EDIR_INFO_1000,*PREPL_EDIR_INFO_1000,*LPREPL_EDIR_INFO_1000;
+typedef struct _REPL_EDIR_INFO_1001 {
+ DWORD rped1001_extent;
+} REPL_EDIR_INFO_1001,*PREPL_EDIR_INFO_1001,*LPREPL_EDIR_INFO_1001;
+typedef struct _REPL_IDIR_INFO_0 { LPWSTR rpid0_dirname; } REPL_IDIR_INFO_0,*PREPL_IDIR_INFO_0,*LPREPL_IDIR_INFO_0;
+typedef struct _REPL_IDIR_INFO_1 {
+ LPWSTR rpid1_dirname;
+ DWORD rpid1_state;
+ LPWSTR rpid1_mastername;
+ DWORD rpid1_last_update_time;
+ DWORD rpid1_lockcount;
+ DWORD rpid1_locktime;
+} REPL_IDIR_INFO_1,*PREPL_IDIR_INFO_1,*LPREPL_IDIR_INFO_1;
+NET_API_STATUS WINAPI NetReplExportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetReplExportDirDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetReplExportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetReplExportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetReplExportDirSetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetReplExportDirLock(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetReplExportDirUnlock(LPCWSTR,LPCWSTR,DWORD);
+NET_API_STATUS WINAPI NetReplImportDirAdd(LPCWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetReplImportDirDel(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetReplImportDirEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetReplImportDirGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetReplImportDirLock(LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetReplImportDirUnlock(LPCWSTR,LPCWSTR,DWORD);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmserver.h b/winsup/w32api/include/lmserver.h
new file mode 100644
index 000000000..0064d0baf
--- /dev/null
+++ b/winsup/w32api/include/lmserver.h
@@ -0,0 +1,602 @@
+#ifndef _LMSERVER_H
+#define _LMSERVER_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <winsvc.h>
+
+typedef struct _SERVER_INFO_100 {
+DWORD sv100_platform_id;
+LPTSTR sv100_name;
+} SERVER_INFO_100,*PSERVER_INFO_100,*LPSERVER_INFO_100;
+typedef struct _SERVER_INFO_101 {
+DWORD sv101_platform_id;
+LPTSTR sv101_name;
+DWORD sv101_version_major;
+DWORD sv101_version_minor;
+DWORD sv101_type;
+LPTSTR sv101_comment;
+} SERVER_INFO_101,*PSERVER_INFO_101,*LPSERVER_INFO_101;
+typedef struct _SERVER_INFO_102 {
+DWORD sv102_platform_id;
+LPTSTR sv102_name;
+DWORD sv102_version_major;
+DWORD sv102_version_minor;
+DWORD sv102_type;
+LPTSTR sv102_comment;
+DWORD sv102_users;
+LONG sv102_disc;
+BOOL sv102_hidden;
+DWORD sv102_announce;
+DWORD sv102_anndelta;
+DWORD sv102_licenses;
+LPTSTR sv102_userpath;
+} SERVER_INFO_102,*PSERVER_INFO_102,*LPSERVER_INFO_102;
+typedef struct _SERVER_INFO_402 {
+DWORD sv402_ulist_mtime;
+DWORD sv402_glist_mtime;
+DWORD sv402_alist_mtime;
+LPTSTR sv402_alerts;
+DWORD sv402_security;
+DWORD sv402_numadmin;
+DWORD sv402_lanmask;
+LPTSTR sv402_guestacct;
+DWORD sv402_chdevs;
+DWORD sv402_chdevq;
+DWORD sv402_chdevjobs;
+DWORD sv402_connections;
+DWORD sv402_shares;
+DWORD sv402_openfiles;
+DWORD sv402_sessopens;
+DWORD sv402_sessvcs;
+DWORD sv402_sessreqs;
+DWORD sv402_opensearch;
+DWORD sv402_activelocks;
+DWORD sv402_numreqbuf;
+DWORD sv402_sizreqbuf;
+DWORD sv402_numbigbuf;
+DWORD sv402_numfiletasks;
+DWORD sv402_alertsched;
+DWORD sv402_erroralert;
+DWORD sv402_logonalert;
+DWORD sv402_accessalert;
+DWORD sv402_diskalert;
+DWORD sv402_netioalert;
+DWORD sv402_maxauditsz;
+LPTSTR sv402_srvheuristics;
+} SERVER_INFO_402,*PSERVER_INFO_402,*LPSERVER_INFO_402;
+typedef struct _SERVER_INFO_403 {
+DWORD sv403_ulist_mtime;
+DWORD sv403_glist_mtime;
+DWORD sv403_alist_mtime;
+LPTSTR sv403_alerts;
+DWORD sv403_security;
+DWORD sv403_numadmin;
+DWORD sv403_lanmask;
+LPTSTR sv403_guestacct;
+DWORD sv403_chdevs;
+DWORD sv403_chdevq;
+DWORD sv403_chdevjobs;
+DWORD sv403_connections;
+DWORD sv403_shares;
+DWORD sv403_openfiles;
+DWORD sv403_sessopens;
+DWORD sv403_sessvcs;
+DWORD sv403_sessreqs;
+DWORD sv403_opensearch;
+DWORD sv403_activelocks;
+DWORD sv403_numreqbuf;
+DWORD sv403_sizreqbuf;
+DWORD sv403_numbigbuf;
+DWORD sv403_numfiletasks;
+DWORD sv403_alertsched;
+DWORD sv403_erroralert;
+DWORD sv403_logonalert;
+DWORD sv403_accessalert;
+DWORD sv403_diskalert;
+DWORD sv403_netioalert;
+DWORD sv403_maxauditsz;
+LPTSTR sv403_srvheuristics;
+DWORD sv403_auditedevents;
+DWORD sv403_autoprofile;
+LPTSTR sv403_autopath;
+} SERVER_INFO_403,*PSERVER_INFO_403,*LPSERVER_INFO_403;
+typedef struct _SERVER_INFO_502 {
+DWORD sv502_sessopens;
+DWORD sv502_sessvcs;
+DWORD sv502_opensearch;
+DWORD sv502_sizreqbuf;
+DWORD sv502_initworkitems;
+DWORD sv502_maxworkitems;
+DWORD sv502_rawworkitems;
+DWORD sv502_irpstacksize;
+DWORD sv502_maxrawbuflen;
+DWORD sv502_sessusers;
+DWORD sv502_sessconns;
+DWORD sv502_maxpagedmemoryusage;
+DWORD sv502_maxnonpagedmemoryusage;
+BOOL sv502_enablesoftcompat;
+BOOL sv502_enableforcedlogoff;
+BOOL sv502_timesource;
+BOOL sv502_acceptdownlevelapis;
+BOOL sv502_lmannounce;
+} SERVER_INFO_502,*PSERVER_INFO_502,*LPSERVER_INFO_502;
+typedef struct _SERVER_INFO_503 {
+DWORD sv503_sessopens;
+DWORD sv503_sessvcs;
+DWORD sv503_opensearch;
+DWORD sv503_sizreqbuf;
+DWORD sv503_initworkitems;
+DWORD sv503_maxworkitems;
+DWORD sv503_rawworkitems;
+DWORD sv503_irpstacksize;
+DWORD sv503_maxrawbuflen;
+DWORD sv503_sessusers;
+DWORD sv503_sessconns;
+DWORD sv503_maxpagedmemoryusage;
+DWORD sv503_maxnonpagedmemoryusage;
+BOOL sv503_enablesoftcompat;
+BOOL sv503_enableforcedlogoff;
+BOOL sv503_timesource;
+BOOL sv503_acceptdownlevelapis;
+BOOL sv503_lmannounce;
+LPTSTR sv503_domain;
+DWORD sv503_maxcopyreadlen;
+DWORD sv503_maxcopywritelen;
+DWORD sv503_minkeepsearch;
+DWORD sv503_maxkeepsearch;
+DWORD sv503_minkeepcomplsearch;
+DWORD sv503_maxkeepcomplsearch;
+DWORD sv503_threadcountadd;
+DWORD sv503_numblockthreads;
+DWORD sv503_scavtimeout;
+DWORD sv503_minrcvqueue;
+DWORD sv503_minfreeworkitems;
+DWORD sv503_xactmemsize;
+DWORD sv503_threadpriority;
+DWORD sv503_maxmpxct;
+DWORD sv503_oplockbreakwait;
+DWORD sv503_oplockbreakresponsewait;
+BOOL sv503_enableoplocks;
+BOOL sv503_enableoplockforceclose;
+BOOL sv503_enablefcbopens;
+BOOL sv503_enableraw;
+BOOL sv503_enablesharednetdrives;
+DWORD sv503_minfreeconnections;
+DWORD sv503_maxfreeconnections;
+} SERVER_INFO_503,*PSERVER_INFO_503,*LPSERVER_INFO_503;
+typedef struct _SERVER_INFO_599 {
+DWORD sv599_sessopens;
+DWORD sv599_sessvcs;
+DWORD sv599_opensearch;
+DWORD sv599_sizreqbuf;
+DWORD sv599_initworkitems;
+DWORD sv599_maxworkitems;
+DWORD sv599_rawworkitems;
+DWORD sv599_irpstacksize;
+DWORD sv599_maxrawbuflen;
+DWORD sv599_sessusers;
+DWORD sv599_sessconns;
+DWORD sv599_maxpagedmemoryusage;
+DWORD sv599_maxnonpagedmemoryusage;
+BOOL sv599_enablesoftcompat;
+BOOL sv599_enableforcedlogoff;
+BOOL sv599_timesource;
+BOOL sv599_acceptdownlevelapis;
+BOOL sv599_lmannounce;
+LPTSTR sv599_domain;
+DWORD sv599_maxcopyreadlen;
+DWORD sv599_maxcopywritelen;
+DWORD sv599_minkeepsearch;
+DWORD sv599_maxkeepsearch;
+DWORD sv599_minkeepcomplsearch;
+DWORD sv599_maxkeepcomplsearch;
+DWORD sv599_threadcountadd;
+DWORD sv599_numblockthreads;
+DWORD sv599_scavtimeout;
+DWORD sv599_minrcvqueue;
+DWORD sv599_minfreeworkitems;
+DWORD sv599_xactmemsize;
+DWORD sv599_threadpriority;
+DWORD sv599_maxmpxct;
+DWORD sv599_oplockbreakwait;
+DWORD sv599_oplockbreakresponsewait;
+BOOL sv599_enableoplocks;
+BOOL sv599_enableoplockforceclose;
+BOOL sv599_enablefcbopens;
+BOOL sv599_enableraw;
+BOOL sv599_enablesharednetdrives;
+DWORD sv599_minfreeconnections;
+DWORD sv599_maxfreeconnections;
+DWORD sv599_initsesstable;
+DWORD sv599_initconntable;
+DWORD sv599_initfiletable;
+DWORD sv599_initsearchtable;
+DWORD sv599_alertschedule;
+DWORD sv599_errorthreshold;
+DWORD sv599_networkerrorthreshold;
+DWORD sv599_diskspacethreshold;
+DWORD sv599_reserved;
+DWORD sv599_maxlinkdelay;
+DWORD sv599_minlinkthroughput;
+DWORD sv599_linkinfovalidtime;
+DWORD sv599_scavqosinfoupdatetime;
+DWORD sv599_maxworkitemidletime;
+} SERVER_INFO_599,*PSERVER_INFO_599,*LPSERVER_INFO_599;
+typedef struct _SERVER_INFO_598 {
+DWORD sv598_maxrawworkitems;
+DWORD sv598_maxthreadsperqueue;
+DWORD sv598_producttype;
+DWORD sv598_serversize;
+DWORD sv598_connectionlessautodisc;
+DWORD sv598_sharingviolationretries;
+DWORD sv598_sharingviolationdelay;
+DWORD sv598_maxglobalopensearch;
+DWORD sv598_removeduplicatesearches;
+DWORD sv598_lockviolationoffset;
+DWORD sv598_lockviolationdelay;
+DWORD sv598_mdlreadswitchover;
+DWORD sv598_cachedopenlimit;
+DWORD sv598_otherqueueaffinity;
+BOOL sv598_restrictnullsessaccess;
+BOOL sv598_enablewfw311directipx;
+DWORD sv598_queuesamplesecs;
+DWORD sv598_balancecount;
+DWORD sv598_preferredaffinity;
+DWORD sv598_maxfreerfcbs;
+DWORD sv598_maxfreemfcbs;
+DWORD sv598_maxfreelfcbs;
+DWORD sv598_maxfreepagedpoolchunks;
+DWORD sv598_minpagedpoolchunksize;
+DWORD sv598_maxpagedpoolchunksize;
+BOOL sv598_sendsfrompreferredprocessor;
+} SERVER_INFO_598,*PSERVER_INFO_598,*LPSERVER_INFO_598;
+typedef struct _SERVER_INFO_1005 {LPTSTR sv1005_comment; } SERVER_INFO_1005,*PSERVER_INFO_1005,*LPSERVER_INFO_1005;
+typedef struct _SERVER_INFO_1107 { DWORD sv1107_users; } SERVER_INFO_1107,*PSERVER_INFO_1107,*LPSERVER_INFO_1107;
+typedef struct _SERVER_INFO_1010 { LONG sv1010_disc; } SERVER_INFO_1010,*PSERVER_INFO_1010,*LPSERVER_INFO_1010;
+typedef struct _SERVER_INFO_1016 { BOOL sv1016_hidden; } SERVER_INFO_1016,*PSERVER_INFO_1016,*LPSERVER_INFO_1016;
+typedef struct _SERVER_INFO_1017 { DWORD sv1017_announce; } SERVER_INFO_1017,*PSERVER_INFO_1017,*LPSERVER_INFO_1017;
+typedef struct _SERVER_INFO_1018 { DWORD sv1018_anndelta; } SERVER_INFO_1018,*PSERVER_INFO_1018,*LPSERVER_INFO_1018;
+typedef struct _SERVER_INFO_1501 { DWORD sv1501_sessopens; } SERVER_INFO_1501,*PSERVER_INFO_1501,*LPSERVER_INFO_1501;
+typedef struct _SERVER_INFO_1502 { DWORD sv1502_sessvcs; } SERVER_INFO_1502,*PSERVER_INFO_1502,*LPSERVER_INFO_1502;
+typedef struct _SERVER_INFO_1503 { DWORD sv1503_opensearch; } SERVER_INFO_1503,*PSERVER_INFO_1503,*LPSERVER_INFO_1503;
+typedef struct _SERVER_INFO_1506 { DWORD sv1506_maxworkitems; } SERVER_INFO_1506,*PSERVER_INFO_1506,*LPSERVER_INFO_1506;
+typedef struct _SERVER_INFO_1509 { DWORD sv1509_maxrawbuflen; } SERVER_INFO_1509,*PSERVER_INFO_1509,*LPSERVER_INFO_1509;
+typedef struct _SERVER_INFO_1510 { DWORD sv1510_sessusers; } SERVER_INFO_1510,*PSERVER_INFO_1510,*LPSERVER_INFO_1510;
+typedef struct _SERVER_INFO_1511 { DWORD sv1511_sessconns; } SERVER_INFO_1511,*PSERVER_INFO_1511,*LPSERVER_INFO_1511;
+typedef struct _SERVER_INFO_1512 { DWORD sv1512_maxnonpagedmemoryusage; } SERVER_INFO_1512,*PSERVER_INFO_1512,*LPSERVER_INFO_1512;
+typedef struct _SERVER_INFO_1513 { DWORD sv1513_maxpagedmemoryusage; } SERVER_INFO_1513,*PSERVER_INFO_1513,*LPSERVER_INFO_1513;
+typedef struct _SERVER_INFO_1514 { BOOL sv1514_enablesoftcompat; } SERVER_INFO_1514,*PSERVER_INFO_1514,*LPSERVER_INFO_1514;
+typedef struct _SERVER_INFO_1515 { BOOL sv1515_enableforcedlogoff; } SERVER_INFO_1515,*PSERVER_INFO_1515,*LPSERVER_INFO_1515;
+typedef struct _SERVER_INFO_1516 { BOOL sv1516_timesource; } SERVER_INFO_1516,*PSERVER_INFO_1516,*LPSERVER_INFO_1516;
+typedef struct _SERVER_INFO_1518 { BOOL sv1518_lmannounce; } SERVER_INFO_1518,*PSERVER_INFO_1518,*LPSERVER_INFO_1518;
+typedef struct _SERVER_INFO_1520 { DWORD sv1520_maxcopyreadlen; } SERVER_INFO_1520,*PSERVER_INFO_1520,*LPSERVER_INFO_1520;
+typedef struct _SERVER_INFO_1521 { DWORD sv1521_maxcopywritelen; } SERVER_INFO_1521,*PSERVER_INFO_1521,*LPSERVER_INFO_1521;
+typedef struct _SERVER_INFO_1522 { DWORD sv1522_minkeepsearch; } SERVER_INFO_1522,*PSERVER_INFO_1522,*LPSERVER_INFO_1522;
+typedef struct _SERVER_INFO_1523 { DWORD sv1523_maxkeepsearch; } SERVER_INFO_1523,*PSERVER_INFO_1523,*LPSERVER_INFO_1523;
+typedef struct _SERVER_INFO_1524 { DWORD sv1524_minkeepcomplsearch; } SERVER_INFO_1524,*PSERVER_INFO_1524,*LPSERVER_INFO_1524;
+typedef struct _SERVER_INFO_1525 { DWORD sv1525_maxkeepcomplsearch; } SERVER_INFO_1525,*PSERVER_INFO_1525,*LPSERVER_INFO_1525;
+typedef struct _SERVER_INFO_1528 { DWORD sv1528_scavtimeout; } SERVER_INFO_1528,*PSERVER_INFO_1528,*LPSERVER_INFO_1528;
+typedef struct _SERVER_INFO_1529 { DWORD sv1529_minrcvqueue; } SERVER_INFO_1529,*PSERVER_INFO_1529,*LPSERVER_INFO_1529;
+typedef struct _SERVER_INFO_1530 { DWORD sv1530_minfreeworkitems; } SERVER_INFO_1530,*PSERVER_INFO_1530,*LPSERVER_INFO_1530;
+typedef struct _SERVER_INFO_1533 { DWORD sv1533_maxmpxct; } SERVER_INFO_1533,*PSERVER_INFO_1533,*LPSERVER_INFO_1533;
+typedef struct _SERVER_INFO_1534 { DWORD sv1534_oplockbreakwait; } SERVER_INFO_1534,*PSERVER_INFO_1534,*LPSERVER_INFO_1534;
+typedef struct _SERVER_INFO_1535 { DWORD sv1535_oplockbreakresponsewait; } SERVER_INFO_1535,*PSERVER_INFO_1535,*LPSERVER_INFO_1535;
+typedef struct _SERVER_INFO_1536 { BOOL sv1536_enableoplocks; } SERVER_INFO_1536,*PSERVER_INFO_1536,*LPSERVER_INFO_1536;
+typedef struct _SERVER_INFO_1537 { BOOL sv1537_enableoplockforceclose; } SERVER_INFO_1537,*PSERVER_INFO_1537,*LPSERVER_INFO_1537;
+typedef struct _SERVER_INFO_1538 { BOOL sv1538_enablefcbopens; } SERVER_INFO_1538,*PSERVER_INFO_1538,*LPSERVER_INFO_1538;
+typedef struct _SERVER_INFO_1539 { BOOL sv1539_enableraw; } SERVER_INFO_1539,*PSERVER_INFO_1539,*LPSERVER_INFO_1539;
+typedef struct _SERVER_INFO_1540 { BOOL sv1540_enablesharednetdrives; } SERVER_INFO_1540,*PSERVER_INFO_1540,*LPSERVER_INFO_1540;
+typedef struct _SERVER_INFO_1541 { BOOL sv1541_minfreeconnections; } SERVER_INFO_1541,*PSERVER_INFO_1541,*LPSERVER_INFO_1541;
+typedef struct _SERVER_INFO_1542 { BOOL sv1542_maxfreeconnections; } SERVER_INFO_1542,*PSERVER_INFO_1542,*LPSERVER_INFO_1542;
+typedef struct _SERVER_INFO_1543 { DWORD sv1543_initsesstable; } SERVER_INFO_1543,*PSERVER_INFO_1543,*LPSERVER_INFO_1543;
+typedef struct _SERVER_INFO_1544 { DWORD sv1544_initconntable; } SERVER_INFO_1544,*PSERVER_INFO_1544,*LPSERVER_INFO_1544;
+typedef struct _SERVER_INFO_1545 { DWORD sv1545_initfiletable; } SERVER_INFO_1545,*PSERVER_INFO_1545,*LPSERVER_INFO_1545;
+typedef struct _SERVER_INFO_1546 { DWORD sv1546_initsearchtable; } SERVER_INFO_1546,*PSERVER_INFO_1546,*LPSERVER_INFO_1546;
+typedef struct _SERVER_INFO_1547 { DWORD sv1547_alertschedule; } SERVER_INFO_1547,*PSERVER_INFO_1547,*LPSERVER_INFO_1547;
+typedef struct _SERVER_INFO_1548 { DWORD sv1548_errorthreshold; } SERVER_INFO_1548,*PSERVER_INFO_1548,*LPSERVER_INFO_1548;
+typedef struct _SERVER_INFO_1549 { DWORD sv1549_networkerrorthreshold; } SERVER_INFO_1549,*PSERVER_INFO_1549,*LPSERVER_INFO_1549;
+typedef struct _SERVER_INFO_1550 { DWORD sv1550_diskspacethreshold; } SERVER_INFO_1550,*PSERVER_INFO_1550,*LPSERVER_INFO_1550;
+typedef struct _SERVER_INFO_1552 { DWORD sv1552_maxlinkdelay; } SERVER_INFO_1552,*PSERVER_INFO_1552,*LPSERVER_INFO_1552;
+typedef struct _SERVER_INFO_1553 { DWORD sv1553_minlinkthroughput; } SERVER_INFO_1553,*PSERVER_INFO_1553,*LPSERVER_INFO_1553;
+typedef struct _SERVER_INFO_1554 { DWORD sv1554_linkinfovalidtime; } SERVER_INFO_1554,*PSERVER_INFO_1554,*LPSERVER_INFO_1554;
+typedef struct _SERVER_INFO_1555 { DWORD sv1555_scavqosinfoupdatetime; } SERVER_INFO_1555,*PSERVER_INFO_1555,*LPSERVER_INFO_1555;
+typedef struct _SERVER_INFO_1556 { DWORD sv1556_maxworkitemidletime; } SERVER_INFO_1556,*PSERVER_INFO_1556,*LPSERVER_INFO_1556;
+typedef struct _SERVER_INFO_1557 { DWORD sv1557_maxrawworkitems; } SERVER_INFO_1557,*PSERVER_INFO_1557,*LPSERVER_INFO_1557;
+typedef struct _SERVER_INFO_1560 { DWORD sv1560_producttype; } SERVER_INFO_1560,*PSERVER_INFO_1560,*LPSERVER_INFO_1560;
+typedef struct _SERVER_INFO_1561 { DWORD sv1561_serversize; } SERVER_INFO_1561,*PSERVER_INFO_1561,*LPSERVER_INFO_1561;
+typedef struct _SERVER_INFO_1562 { DWORD sv1562_connectionlessautodisc; } SERVER_INFO_1562,*PSERVER_INFO_1562,*LPSERVER_INFO_1562;
+typedef struct _SERVER_INFO_1563 { DWORD sv1563_sharingviolationretries; } SERVER_INFO_1563,*PSERVER_INFO_1563,*LPSERVER_INFO_1563;
+typedef struct _SERVER_INFO_1564 { DWORD sv1564_sharingviolationdelay; } SERVER_INFO_1564,*PSERVER_INFO_1564,*LPSERVER_INFO_1564;
+typedef struct _SERVER_INFO_1565 { DWORD sv1565_maxglobalopensearch; } SERVER_INFO_1565,*PSERVER_INFO_1565,*LPSERVER_INFO_1565;
+typedef struct _SERVER_INFO_1566 { BOOL sv1566_removeduplicatesearches; } SERVER_INFO_1566,*PSERVER_INFO_1566,*LPSERVER_INFO_1566;
+typedef struct _SERVER_INFO_1567 { DWORD sv1567_lockviolationretries; } SERVER_INFO_1567,*PSERVER_INFO_1567,*LPSERVER_INFO_1567;
+typedef struct _SERVER_INFO_1568 { DWORD sv1568_lockviolationoffset; } SERVER_INFO_1568,*PSERVER_INFO_1568,*LPSERVER_INFO_1568;
+typedef struct _SERVER_INFO_1569 { DWORD sv1569_lockviolationdelay; } SERVER_INFO_1569,*PSERVER_INFO_1569,*LPSERVER_INFO_1569;
+typedef struct _SERVER_INFO_1570 { DWORD sv1570_mdlreadswitchover; } SERVER_INFO_1570,*PSERVER_INFO_1570,*LPSERVER_INFO_1570;
+typedef struct _SERVER_INFO_1571 { DWORD sv1571_cachedopenlimit; } SERVER_INFO_1571,*PSERVER_INFO_1571,*LPSERVER_INFO_1571;
+typedef struct _SERVER_INFO_1572 { DWORD sv1572_criticalthreads; } SERVER_INFO_1572,*PSERVER_INFO_1572,*LPSERVER_INFO_1572;
+typedef struct _SERVER_INFO_1573 { DWORD sv1573_restrictnullsessaccess; } SERVER_INFO_1573,*PSERVER_INFO_1573,*LPSERVER_INFO_1573;
+typedef struct _SERVER_INFO_1574 { DWORD sv1574_enablewfw311directipx;} SERVER_INFO_1574,*PSERVER_INFO_1574,*LPSERVER_INFO_1574;
+typedef struct _SERVER_INFO_1575 { DWORD sv1575_otherqueueaffinity; } SERVER_INFO_1575,*PSERVER_INFO_1575,*LPSERVER_INFO_1575;
+typedef struct _SERVER_INFO_1576 { DWORD sv1576_queuesamplesecs; } SERVER_INFO_1576,*PSERVER_INFO_1576,*LPSERVER_INFO_1576;
+typedef struct _SERVER_INFO_1577 { DWORD sv1577_balancecount; } SERVER_INFO_1577,*PSERVER_INFO_1577,*LPSERVER_INFO_1577;
+typedef struct _SERVER_INFO_1578 { DWORD sv1578_preferredaffinity; } SERVER_INFO_1578,*PSERVER_INFO_1578,*LPSERVER_INFO_1578;
+typedef struct _SERVER_INFO_1579 { DWORD sv1579_maxfreerfcbs; } SERVER_INFO_1579,*PSERVER_INFO_1579,*LPSERVER_INFO_1579;
+typedef struct _SERVER_INFO_1580 { DWORD sv1580_maxfreemfcbs; } SERVER_INFO_1580,*PSERVER_INFO_1580,*LPSERVER_INFO_1580;
+typedef struct _SERVER_INFO_1581 { DWORD sv1581_maxfreemlcbs; } SERVER_INFO_1581,*PSERVER_INFO_1581,*LPSERVER_INFO_1581;
+typedef struct _SERVER_INFO_1582 { DWORD sv1582_maxfreepagedpoolchunks; } SERVER_INFO_1582,*PSERVER_INFO_1582,*LPSERVER_INFO_1582;
+typedef struct _SERVER_INFO_1583 { DWORD sv1583_minpagedpoolchunksize; } SERVER_INFO_1583,*PSERVER_INFO_1583,*LPSERVER_INFO_1583;
+typedef struct _SERVER_INFO_1584 { DWORD sv1584_maxpagedpoolchunksize; } SERVER_INFO_1584,*PSERVER_INFO_1584,*LPSERVER_INFO_1584;
+typedef struct _SERVER_INFO_1585 { BOOL sv1585_sendsfrompreferredprocessor; } SERVER_INFO_1585,*PSERVER_INFO_1585,*LPSERVER_INFO_1585;
+typedef struct _SERVER_INFO_1586 { BOOL sv1586_maxthreadsperqueue; } SERVER_INFO_1586,*PSERVER_INFO_1586,*LPSERVER_INFO_1586;
+typedef struct _SERVER_TRANSPORT_INFO_0 {
+DWORD svti0_numberofvcs;
+LPTSTR svti0_transportname;
+PBYTE svti0_transportaddress;
+DWORD svti0_transportaddresslength;
+LPTSTR svti0_networkaddress;
+} SERVER_TRANSPORT_INFO_0,*PSERVER_TRANSPORT_INFO_0,*LPSERVER_TRANSPORT_INFO_0;
+
+NET_API_STATUS WINAPI NetServerEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,PDWORD);
+NET_API_STATUS WINAPI NetServerEnumEx(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,DWORD,LPCWSTR,LPCWSTR);
+NET_API_STATUS WINAPI NetServerGetInfo(LPTSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetServerSetInfo(LPTSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS NetServerSetInfoCommandLine(WORD,LPTSTR*);
+NET_API_STATUS WINAPI NetServerDiskEnum(LPTSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetServerComputerNameAdd(LPWSTR,LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetServerComputerNameDel(LPWSTR,LPWSTR);
+NET_API_STATUS WINAPI NetServerTransportAdd(LPTSTR,DWORD,PBYTE);
+NET_API_STATUS WINAPI NetServerTransportAddEx(LPTSTR,DWORD,PBYTE);
+NET_API_STATUS WINAPI NetServerTransportDel(LPTSTR,DWORD,PBYTE);
+NET_API_STATUS WINAPI NetServerTransportEnum(LPTSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+BOOL SetServiceBits(SERVICE_STATUS_HANDLE,DWORD,BOOL,BOOL);
+
+#define SVI1_NUM_ELEMENTS 5
+#define SVI2_NUM_ELEMENTS 40
+#define SVI3_NUM_ELEMENTS 44
+#define SV_MAX_CMD_LEN PATHLEN
+#define SW_AUTOPROF_LOAD_MASK 1
+#define SW_AUTOPROF_SAVE_MASK 2
+#define SV_MAX_SRV_HEUR_LEN 32
+#define SV_USERS_PER_LICENSE 5
+#define SV_PLATFORM_ID_OS2 400
+#define SV_PLATFORM_ID_NT 500
+#define MAJOR_VERSION_MASK 15
+#define SV_TYPE_WORKSTATION 1
+#define SV_TYPE_SERVER 2
+#define SV_TYPE_SQLSERVER 4
+#define SV_TYPE_DOMAIN_CTRL 8
+#define SV_TYPE_DOMAIN_BAKCTRL 16
+#define SV_TYPE_TIME_SOURCE 32
+#define SV_TYPE_AFP 64
+#define SV_TYPE_NOVELL 128
+#define SV_TYPE_DOMAIN_MEMBER 256
+#define SV_TYPE_PRINTQ_SERVER 512
+#define SV_TYPE_DIALIN_SERVER 1024
+#define SV_TYPE_XENIX_SERVER 2048
+#define SV_TYPE_SERVER_UNIX SV_TYPE_XENIX_SERVER
+#define SV_TYPE_NT 4096
+#define SV_TYPE_WFW 8192
+#define SV_TYPE_SERVER_MFPN 16384
+#define SV_TYPE_SERVER_NT 32768
+#define SV_TYPE_POTENTIAL_BROWSER 65536
+#define SV_TYPE_BACKUP_BROWSER 0x20000
+#define SV_TYPE_MASTER_BROWSER 0x40000
+#define SV_TYPE_DOMAIN_MASTER 0x80000
+#define SV_TYPE_SERVER_OSF 0x100000
+#define SV_TYPE_SERVER_VMS 0x200000
+#define SV_TYPE_WINDOWS 0x400000
+#define SV_TYPE_ALTERNATE_XPORT 0x20000000
+#define SV_TYPE_LOCAL_LIST_ONLY 0x40000000
+#define SV_TYPE_DOMAIN_ENUM 0x80000000
+#define SV_TYPE_ALL 0xFFFFFFFF
+#define SV_NODISC (-1)
+#define SV_USERSECURITY 1
+#define SV_SHARESECURITY 0
+#define SV_HIDDEN 1
+#define SV_VISIBLE 0
+#define SV_PLATFORM_ID_PARMNUM 101
+#define SV_NAME_PARMNUM 102
+#define SV_VERSION_MAJOR_PARMNUM 103
+#define SV_VERSION_MINOR_PARMNUM 104
+#define SV_TYPE_PARMNUM 105
+#define SV_COMMENT_PARMNUM 5
+#define SV_USERS_PARMNUM 107
+#define SV_DISC_PARMNUM 10
+#define SV_HIDDEN_PARMNUM 16
+#define SV_ANNOUNCE_PARMNUM 17
+#define SV_ANNDELTA_PARMNUM 18
+#define SV_USERPATH_PARMNUM 112
+#define SV_ULIST_MTIME_PARMNUM 401
+#define SV_GLIST_MTIME_PARMNUM 402
+#define SV_ALIST_MTIME_PARMNUM 403
+#define SV_ALERTS_PARMNUM 11
+#define SV_SECURITY_PARMNUM 405
+#define SV_NUMADMIN_PARMNUM 406
+#define SV_LANMASK_PARMNUM 407
+#define SV_GUESTACC_PARMNUM 408
+#define SV_CHDEVQ_PARMNUM 410
+#define SV_CHDEVJOBS_PARMNUM 411
+#define SV_CONNECTIONS_PARMNUM 412
+#define SV_SHARES_PARMNUM 413
+#define SV_OPENFILES_PARMNUM 414
+#define SV_SESSREQS_PARMNUM 417
+#define SV_ACTIVELOCKS_PARMNUM 419
+#define SV_NUMREQBUF_PARMNUM 420
+#define SV_NUMBIGBUF_PARMNUM 422
+#define SV_NUMFILETASKS_PARMNUM 423
+#define SV_ALERTSCHED_PARMNUM 37
+#define SV_ERRORALERT_PARMNUM 38
+#define SV_LOGONALERT_PARMNUM 39
+#define SV_ACCESSALERT_PARMNUM 40
+#define SV_DISKALERT_PARMNUM 41
+#define SV_NETIOALERT_PARMNUM 42
+#define SV_MAXAUDITSZ_PARMNUM 43
+#define SV_SRVHEURISTICS_PARMNUM 431
+#define SV_SESSOPENS_PARMNUM 501
+#define SV_SESSVCS_PARMNUM 502
+#define SV_OPENSEARCH_PARMNUM 503
+#define SV_SIZREQBUF_PARMNUM 504
+#define SV_INITWORKITEMS_PARMNUM 505
+#define SV_MAXWORKITEMS_PARMNUM 506
+#define SV_RAWWORKITEMS_PARMNUM 507
+#define SV_IRPSTACKSIZE_PARMNUM 508
+#define SV_MAXRAWBUFLEN_PARMNUM 509
+#define SV_SESSUSERS_PARMNUM 510
+#define SV_SESSCONNS_PARMNUM 511
+#define SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM 512
+#define SV_MAXPAGEDMEMORYUSAGE_PARMNUM 513
+#define SV_ENABLESOFTCOMPAT_PARMNUM 514
+#define SV_ENABLEFORCEDLOGOFF_PARMNUM 515
+#define SV_TIMESOURCE_PARMNUM 516
+#define SV_ACCEPTDOWNLEVELAPIS_PARMNUM 517
+#define SV_LMANNOUNCE_PARMNUM 518
+#define SV_DOMAIN_PARMNUM 519
+#define SV_MAXCOPYREADLEN_PARMNUM 520
+#define SV_MAXCOPYWRITELEN_PARMNUM 521
+#define SV_MINKEEPSEARCH_PARMNUM 522
+#define SV_MAXKEEPSEARCH_PARMNUM 523
+#define SV_MINKEEPCOMPLSEARCH_PARMNUM 524
+#define SV_MAXKEEPCOMPLSEARCH_PARMNUM 525
+#define SV_THREADCOUNTADD_PARMNUM 526
+#define SV_NUMBLOCKTHREADS_PARMNUM 527
+#define SV_SCAVTIMEOUT_PARMNUM 528
+#define SV_MINRCVQUEUE_PARMNUM 529
+#define SV_MINFREEWORKITEMS_PARMNUM 530
+#define SV_XACTMEMSIZE_PARMNUM 531
+#define SV_THREADPRIORITY_PARMNUM 532
+#define SV_MAXMPXCT_PARMNUM 533
+#define SV_OPLOCKBREAKWAIT_PARMNUM 534
+#define SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM 535
+#define SV_ENABLEOPLOCKS_PARMNUM 536
+#define SV_ENABLEOPLOCKFORCECLOSE_PARMNUM 537
+#define SV_ENABLEFCBOPENS_PARMNUM 538
+#define SV_ENABLERAW_PARMNUM 539
+#define SV_ENABLESHAREDNETDRIVES_PARMNUM 540
+#define SV_MINFREECONNECTIONS_PARMNUM 541
+#define SV_MAXFREECONNECTIONS_PARMNUM 542
+#define SV_INITSESSTABLE_PARMNUM 543
+#define SV_INITCONNTABLE_PARMNUM 544
+#define SV_INITFILETABLE_PARMNUM 545
+#define SV_INITSEARCHTABLE_PARMNUM 546
+#define SV_ALERTSCHEDULE_PARMNUM 547
+#define SV_ERRORTHRESHOLD_PARMNUM 548
+#define SV_NETWORKERRORTHRESHOLD_PARMNUM 549
+#define SV_DISKSPACETHRESHOLD_PARMNUM 550
+#define SV_MAXLINKDELAY_PARMNUM 552
+#define SV_MINLINKTHROUGHPUT_PARMNUM 553
+#define SV_LINKINFOVALIDTIME_PARMNUM 554
+#define SV_SCAVQOSINFOUPDATETIME_PARMNUM 555
+#define SV_MAXWORKITEMIDLETIME_PARMNUM 556
+#define SV_MAXRAWWORKITEMS_PARMNUM 557
+#define SV_PRODUCTTYPE_PARMNUM 560
+#define SV_SERVERSIZE_PARMNUM 561
+#define SV_CONNECTIONLESSAUTODISC_PARMNUM 562
+#define SV_SHARINGVIOLATIONRETRIES_PARMNUM 563
+#define SV_SHARINGVIOLATIONDELAY_PARMNUM 564
+#define SV_MAXGLOBALOPENSEARCH_PARMNUM 565
+#define SV_REMOVEDUPLICATESEARCHES_PARMNUM 566
+#define SV_LOCKVIOLATIONRETRIES_PARMNUM 567
+#define SV_LOCKVIOLATIONOFFSET_PARMNUM 568
+#define SV_LOCKVIOLATIONDELAY_PARMNUM 569
+#define SV_MDLREADSWITCHOVER_PARMNUM 570
+#define SV_CACHEDOPENLIMIT_PARMNUM 571
+#define SV_CRITICALTHREADS_PARMNUM 572
+#define SV_RESTRICTNULLSESSACCESS_PARMNUM 573
+#define SV_ENABLEWFW311DIRECTIPX_PARMNUM 574
+#define SV_OTHERQUEUEAFFINITY_PARMNUM 575
+#define SV_QUEUESAMPLESECS_PARMNUM 576
+#define SV_BALANCECOUNT_PARMNUM 577
+#define SV_PREFERREDAFFINITY_PARMNUM 578
+#define SV_MAXFREERFCBS_PARMNUM 579
+#define SV_MAXFREEMFCBS_PARMNUM 580
+#define SV_MAXFREELFCBS_PARMNUM 581
+#define SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM 582
+#define SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM 583
+#define SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM 584
+#define SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM 585
+#define SV_MAXTHREADSPERQUEUE_PARMNUM 586
+#define SV_COMMENT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_COMMENT_PARMNUM)
+#define SV_USERS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_USERS_PARMNUM)
+#define SV_DISC_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_DISC_PARMNUM)
+#define SV_HIDDEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_HIDDEN_PARMNUM)
+#define SV_ANNOUNCE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ANNOUNCE_PARMNUM)
+#define SV_ANNDELTA_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ANNDELTA_PARMNUM)
+#define SV_SESSOPENS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSOPENS_PARMNUM)
+#define SV_SESSVCS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSVCS_PARMNUM)
+#define SV_OPENSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OPENSEARCH_PARMNUM)
+#define SV_MAXWORKITEMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMS_PARMNUM)
+#define SV_MAXRAWBUFLEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXRAWBUFLEN_PARMNUM)
+#define SV_SESSUSERS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSUSERS_PARMNUM)
+#define SV_SESSCONNS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SESSCONNS_PARMNUM)
+#define SV_MAXNONPAGEDMEMORYUSAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXNONPAGEDMEMORYUSAGE_PARMNUM)
+#define SV_MAXPAGEDMEMORYUSAGE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDMEMORYUSAGE_PARMNUM)
+#define SV_ENABLESOFTCOMPAT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLESOFTCOMPAT_PARMNUM)
+#define SV_ENABLEFORCEDLOGOFF_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEFORCEDLOGOFF_PARMNUM)
+#define SV_TIMESOURCE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_TIMESOURCE_PARMNUM)
+#define SV_LMANNOUNCE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_LMANNOUNCE_PARMNUM)
+#define SV_MAXCOPYREADLEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYREADLEN_PARMNUM)
+#define SV_MAXCOPYWRITELEN_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXCOPYWRITELEN_PARMNUM)
+#define SV_MINKEEPSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINKEEPSEARCH_PARMNUM)
+#define SV_MAXKEEPSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPSEARCH_PARMNUM)
+#define SV_MINKEEPCOMPLSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINKEEPCOMPLSEARCH_PARMNUM)
+#define SV_MAXKEEPCOMPLSEARCH_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXKEEPCOMPLSEARCH_PARMNUM)
+#define SV_SCAVTIMEOUT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SCAVTIMEOUT_PARMNUM)
+#define SV_MINRCVQUEUE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINRCVQUEUE_PARMNUM)
+#define SV_MINFREEWORKITEMS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINFREEWORKITEMS_PARMNUM)
+#define SV_MAXMPXCT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXMPXCT_PARMNUM)
+#define SV_OPLOCKBREAKWAIT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKWAIT_PARMNUM)
+#define SV_OPLOCKBREAKRESPONSEWAIT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OPLOCKBREAKRESPONSEWAIT_PARMNUM)
+#define SV_ENABLEOPLOCKS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKS_PARMNUM)
+#define SV_ENABLEOPLOCKFORCECLOSE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEOPLOCKFORCECLOSE_PARMNUM)
+#define SV_ENABLEFCBOPENS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEFCBOPENS_PARMNUM)
+#define SV_ENABLERAW_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLERAW_PARMNUM)
+#define SV_ENABLESHAREDNETDRIVES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLESHAREDNETDRIVES_PARMNUM)
+#define SV_MINFREECONNECTIONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINFREECONNECTIONS_PARMNUM)
+#define SV_MAXFREECONNECTIONS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREECONNECTIONS_PARMNUM)
+#define SV_INITSESSTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITSESSTABLE_PARMNUM)
+#define SV_INITCONNTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITCONNTABLE_PARMNUM)
+#define SV_INITFILETABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITFILETABLE_PARMNUM)
+#define SV_INITSEARCHTABLE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_INITSEARCHTABLE_PARMNUM)
+#define SV_ALERTSCHEDULE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ALERTSCHEDULE_PARMNUM)
+#define SV_ERRORTHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_ERRORTHRESHOLD_PARMNUM)
+#define SV_NETWORKERRORTHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_NETWORKERRORTHRESHOLD_PARMNUM)
+#define SV_DISKSPACETHRESHOLD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_DISKSPACETHRESHOLD_PARMNUM)
+#define SV_MAXLINKDELAY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXLINKDELAY_PARMNUM)
+#define SV_MINLINKTHROUGHPUT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINLINKTHROUGHPUT_PARMNUM)
+#define SV_LINKINFOVALIDTIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_LINKINFOVALIDTIME_PARMNUM)
+#define SV_SCAVQOSINFOUPDATETIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SCAVQOSINFOUPDATETIME_PARMNUM)
+#define SV_MAXWORKITEMIDLETIME_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXWORKITEMIDLETIME_PARMNUM)
+#define SV_MAXRAWWORKITEMS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXRAWWORKITEMS_PARMNUM)
+#define SV_PRODUCTTYPE_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_PRODUCTTYPE_PARMNUM)
+#define SV_SERVERSIZE_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SERVERSIZE_PARMNUM)
+#define SV_CONNECTIONLESSAUTODISC_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CONNECTIONLESSAUTODISC_PARMNUM)
+#define SV_SHARINGVIOLATIONRETRIES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONRETRIES_PARMNUM)
+#define SV_SHARINGVIOLATIONDELAY_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_SHARINGVIOLATIONDELAY_PARMNUM)
+#define SV_MAXGLOBALOPENSEARCH_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXGLOBALOPENSEARCH_PARMNUM)
+#define SV_REMOVEDUPLICATESEARCHES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_REMOVEDUPLICATESEARCHES_PARMNUM)
+#define SV_LOCKVIOLATIONRETRIES_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONRETRIES_PARMNUM)
+#define SV_LOCKVIOLATIONOFFSET_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONOFFSET_PARMNUM)
+#define SV_LOCKVIOLATIONDELAY_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_LOCKVIOLATIONDELAY_PARMNUM)
+#define SV_MDLREADSWITCHOVER_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_MDLREADSWITCHOVER_PARMNUM)
+#define SV_CACHEDOPENLIMIT_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CACHEDOPENLIMIT_PARMNUM)
+#define SV_CRITICALTHREADS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_CRITICALTHREADS_PARMNUM)
+#define SV_RESTRICTNULLSESSACCESS_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_RESTRICTNULLSESSACCESS_PARMNUM)
+#define SV_ENABLEWFW311DIRECTIPX_INFOLOEVEL (PARMNUM_BASE_INFOLEVEL+SV_ENABLEWFW311DIRECTIPX_PARMNUM)
+#define SV_OTHERQUEUEAFFINITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_OTHERQUEUEAFFINITY_PARMNUM)
+#define SV_QUEUESAMPLESECS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_QUEUESAMPLESECS_PARMNUM)
+#define SV_BALANCECOUNT_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_BALANCECOUNT_PARMNUM)
+#define SV_PREFERREDAFFINITY_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_PREFERREDAFFINITY_PARMNUM)
+#define SV_MAXFREERFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREERFCBS_PARMNUM)
+#define SV_MAXFREEMFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREEMFCBS_PARMNUM)
+#define SV_MAXFREELFCBS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREELFCBS_PARMNUM)
+#define SV_MAXFREEPAGEDPOOLCHUNKS_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXFREEPAGEDPOOLCHUNKS_PARMNUM)
+#define SV_MINPAGEDPOOLCHUNKSIZE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MINPAGEDPOOLCHUNKSIZE_PARMNUM)
+#define SV_MAXPAGEDPOOLCHUNKSIZE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXPAGEDPOOLCHUNKSIZE_PARMNUM)
+#define SV_SENDSFROMPREFERREDPROCESSOR_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_SENDSFROMPREFERREDPROCESSOR_PARMNUM)
+#define SV_MAXTHREADSPERQUEUE_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SV_MAXTHREADSPERQUEUE_PARMNUM)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmshare.h b/winsup/w32api/include/lmshare.h
new file mode 100644
index 000000000..fa8f3b9aa
--- /dev/null
+++ b/winsup/w32api/include/lmshare.h
@@ -0,0 +1,142 @@
+#ifndef _LMSHARE_H
+#define _LMSHARE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SHARE_NETNAME_PARMNUM 1
+#define SHARE_TYPE_PARMNUM 3
+#define SHARE_REMARK_PARMNUM 4
+#define SHARE_PERMISSIONS_PARMNUM 5
+#define SHARE_MAX_USES_PARMNUM 6
+#define SHARE_CURRENT_USES_PARMNUM 7
+#define SHARE_PATH_PARMNUM 8
+#define SHARE_PASSWD_PARMNUM 9
+#define SHARE_FILE_SD_PARMNUM 501
+#define SHARE_REMARK_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_REMARK_PARMNUM)
+#define SHARE_MAX_USES_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_MAX_USES_PARMNUM)
+#define SHARE_FILE_SD_INFOLEVEL (PARMNUM_BASE_INFOLEVEL+SHARE_FILE_SD_PARMNUM)
+#define SHI1_NUM_ELEMENTS 4
+#define SHI2_NUM_ELEMENTS 10
+#define STYPE_DISKTREE 0
+#define STYPE_PRINTQ 1
+#define STYPE_DEVICE 2
+#define STYPE_IPC 3
+#define STYPE_DFS 100
+#define STYPE_SPECIAL 0x80000000
+#define SHI_USES_UNLIMITED (DWORD)(-1)
+#define SESS_GUEST 1
+#define SESS_NOENCRYPTION 2
+#define SESI1_NUM_ELEMENTS 8
+#define SESI2_NUM_ELEMENTS 9
+#define PERM_FILE_READ 1
+#define PERM_FILE_WRITE 2
+#define PERM_FILE_CREATE 4
+typedef struct _FILE_INFO_2 { DWORD fi2_id;} FILE_INFO_2,*PFILE_INFO_2,*LPFILE_INFO_2;
+typedef struct _FILE_INFO_3 {
+ DWORD fi3_id;
+ DWORD fi3_permissions;
+ DWORD fi3_num_locks;
+ LPTSTR fi3_pathname;
+ LPTSTR fi3_username;
+} FILE_INFO_3,*PFILE_INFO_3,*LPFILE_INFO_3;
+typedef struct _SHARE_INFO_0 { LPTSTR shi0_netname; } SHARE_INFO_0,*PSHARE_INFO_0,*LPSHARE_INFO_0;
+typedef struct _SHARE_INFO_1 {
+ LPTSTR shi1_netname;
+ DWORD shi1_type;
+ LPTSTR shi1_remark;
+} SHARE_INFO_1,*PSHARE_INFO_1,*LPSHARE_INFO_1;
+typedef struct _SHARE_INFO_2 {
+ LPTSTR shi2_netname;
+ DWORD shi2_type;
+ LPTSTR shi2_remark;
+ DWORD shi2_permissions;
+ DWORD shi2_max_uses;
+ DWORD shi2_current_uses;
+ LPTSTR shi2_path;
+ LPTSTR shi2_passwd;
+} SHARE_INFO_2,*PSHARE_INFO_2,*LPSHARE_INFO_2;
+typedef struct _SHARE_INFO_502 {
+ LPTSTR shi502_netname;
+ DWORD shi502_type;
+ LPTSTR shi502_remark;
+ DWORD shi502_permissions;
+ DWORD shi502_max_uses;
+ DWORD shi502_current_uses;
+ LPTSTR shi502_path;
+ LPTSTR shi502_passwd;
+ DWORD shi502_reserved;
+ PSECURITY_DESCRIPTOR shi502_security_descriptor;
+} SHARE_INFO_502,*PSHARE_INFO_502,*LPSHARE_INFO_502;
+typedef struct _SHARE_INFO_1004 {
+ LPTSTR shi1004_remark;
+} SHARE_INFO_1004,*PSHARE_INFO_1004,*LPSHARE_INFO_1004;
+typedef struct _SHARE_INFO_1006 {
+ DWORD shi1006_max_uses;
+} SHARE_INFO_1006,*PSHARE_INFO_1006,*LPSHARE_INFO_1006;
+typedef struct _SHARE_INFO_1501 {
+ DWORD shi1501_reserved;
+ PSECURITY_DESCRIPTOR shi1501_security_descriptor;
+} SHARE_INFO_1501,*PSHARE_INFO_1501,*LPSHARE_INFO_1501;
+typedef struct _SESSION_INFO_0 { LPTSTR sesi0_cname; } SESSION_INFO_0,*PSESSION_INFO_0,*LPSESSION_INFO_0;
+typedef struct _SESSION_INFO_1 {
+ LPTSTR sesi1_cname;
+ LPTSTR sesi1_username;
+ DWORD sesi1_num_opens;
+ DWORD sesi1_time;
+ DWORD sesi1_idle_time;
+ DWORD sesi1_user_flags;
+} SESSION_INFO_1,*PSESSION_INFO_1,*LPSESSION_INFO_1;
+typedef struct _SESSION_INFO_2 {
+ LPTSTR sesi2_cname;
+ LPTSTR sesi2_username;
+ DWORD sesi2_num_opens;
+ DWORD sesi2_time;
+ DWORD sesi2_idle_time;
+ DWORD sesi2_user_flags;
+ LPTSTR sesi2_cltype_name;
+} SESSION_INFO_2,*PSESSION_INFO_2,*LPSESSION_INFO_2;
+typedef struct _SESSION_INFO_10 {
+ LPTSTR sesi10_cname;
+ LPTSTR sesi10_username;
+ DWORD sesi10_time;
+ DWORD sesi10_idle_time;
+} SESSION_INFO_10,*PSESSION_INFO_10,*LPSESSION_INFO_10;
+typedef struct _SESSION_INFO_502 {
+ LPTSTR sesi502_cname;
+ LPTSTR sesi502_username;
+ DWORD sesi502_num_opens;
+ DWORD sesi502_time;
+ DWORD sesi502_idle_time;
+ DWORD sesi502_user_flags;
+ LPTSTR sesi502_cltype_name;
+ LPTSTR sesi502_transport;
+} SESSION_INFO_502,*PSESSION_INFO_502,*LPSESSION_INFO_502;
+typedef struct _CONNECTION_INFO_0 { DWORD coni0_id; } CONNECTION_INFO_0,*PCONNECTION_INFO_0,*LPCONNECTION_INFO_0;
+typedef struct _CONNECTION_INFO_1 {
+ DWORD coni1_id;
+ DWORD coni1_type;
+ DWORD coni1_num_opens;
+ DWORD coni1_num_users;
+ DWORD coni1_time;
+ LPTSTR coni1_username;
+ LPTSTR coni1_netname;
+} CONNECTION_INFO_1,*PCONNECTION_INFO_1,*LPCONNECTION_INFO_1;
+NET_API_STATUS WINAPI NetShareAdd(LPTSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetShareEnum(LPTSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetShareEnumSticky(LPTSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle);
+NET_API_STATUS WINAPI NetShareGetInfo(LPTSTR,LPTSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetShareSetInfo(LPTSTR,LPTSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetShareDel(LPTSTR,LPTSTR,DWORD);
+NET_API_STATUS WINAPI NetShareDelSticky(LPTSTR,LPTSTR,DWORD);
+NET_API_STATUS WINAPI NetShareCheck(LPTSTR,LPTSTR,PDWORD);
+NET_API_STATUS WINAPI NetSessionEnum(LPTSTR,LPTSTR,LPTSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetSessionDel(LPTSTR,LPTSTR,LPTSTR);
+NET_API_STATUS WINAPI NetSessionGetInfo(LPTSTR,LPTSTR,LPTSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetConnectionEnum(LPTSTR,LPTSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetFileClose(LPTSTR,DWORD);
+NET_API_STATUS WINAPI NetFileEnum(LPTSTR,LPTSTR,LPTSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetFileGetInfo(LPTSTR,DWORD,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmsname.h b/winsup/w32api/include/lmsname.h
new file mode 100644
index 000000000..2a0f42bcd
--- /dev/null
+++ b/winsup/w32api/include/lmsname.h
@@ -0,0 +1,54 @@
+#ifndef _LMSNAME_H
+#define _LMSNAME_H
+#define SERVICE_WORKSTATION TEXT("LanmanWorkstation")
+#define SERVICE_LM20_WORKSTATION TEXT("WORKSTATION")
+#define WORKSTATION_DISPLAY_NAME TEXT("Workstation")
+#define SERVICE_SERVER TEXT("LanmanServer")
+#define SERVICE_LM20_SERVER TEXT("SERVER")
+#define SERVER_DISPLAY_NAME TEXT("Server")
+#define SERVICE_BROWSER TEXT("BROWSER")
+#define SERVICE_LM20_BROWSER SERVICE_BROWSER
+#define SERVICE_MESSENGER TEXT("MESSENGER")
+#define SERVICE_LM20_MESSENGER SERVICE_MESSENGER
+#define SERVICE_NETRUN TEXT("NETRUN")
+#define SERVICE_LM20_NETRUN SERVICE_NETRUN
+#define SERVICE_SPOOLER TEXT("SPOOLER")
+#define SERVICE_LM20_SPOOLER SERVICE_SPOOLER
+#define SERVICE_ALERTER TEXT("ALERTER")
+#define SERVICE_LM20_ALERTER SERVICE_ALERTER
+#define SERVICE_NETLOGON TEXT("NETLOGON")
+#define SERVICE_LM20_NETLOGON SERVICE_NETLOGON
+#define SERVICE_NETPOPUP TEXT("NETPOPUP")
+#define SERVICE_LM20_NETPOPUP SERVICE_NETPOPUP
+#define SERVICE_SQLSERVER TEXT("SQLSERVER")
+#define SERVICE_LM20_SQLSERVER SERVICE_SQLSERVER
+#define SERVICE_REPL TEXT("REPLICATOR")
+#define SERVICE_LM20_REPL SERVICE_REPL
+#define SERVICE_RIPL TEXT("REMOTEBOOT")
+#define SERVICE_LM20_RIPL SERVICE_RIPL
+#define SERVICE_TIMESOURCE TEXT("TIMESOURCE")
+#define SERVICE_LM20_TIMESOURCE SERVICE_TIMESOURCE
+#define SERVICE_AFP TEXT("AFP")
+#define SERVICE_LM20_AFP SERVICE_AFP
+#define SERVICE_UPS TEXT("UPS")
+#define SERVICE_LM20_UPS SERVICE_UPS
+#define SERVICE_XACTSRV TEXT("XACTSRV")
+#define SERVICE_LM20_XACTSRV SERVICE_XACTSRV
+#define SERVICE_TCPIP TEXT("TCPIP")
+#define SERVICE_LM20_TCPIP SERVICE_TCPIP
+#define SERVICE_NBT TEXT("NBT")
+#define SERVICE_LM20_NBT SERVICE_NBT
+#define SERVICE_LMHOSTS TEXT("LMHOSTS")
+#define SERVICE_LM20_LMHOSTS SERVICE_LMHOSTS
+#define SERVICE_TELNET TEXT("Telnet")
+#define SERVICE_LM20_TELNET SERVICE_TELNET
+#define SERVICE_SCHEDULE TEXT("Schedule")
+#define SERVICE_LM20_SCHEDULE SERVICE_SCHEDULE
+#define SERVICE_NTLMSSP TEXT("NtLmSsp")
+#define SERVICE_DHCP TEXT("DHCP")
+#define SERVICE_LM20_DHCP SERVICE_DHCP
+#define SERVICE_NWSAP TEXT("NwSapAgent")
+#define SERVICE_LM20_NWSAP SERVICE_NWSAP
+#define NWSAP_DISPLAY_NAME TEXT("NW Sap Agent")
+#define SERVICE_NWCS TEXT("NWCWorkstation")
+#endif
diff --git a/winsup/w32api/include/lmstats.h b/winsup/w32api/include/lmstats.h
new file mode 100644
index 000000000..96bcedc3e
--- /dev/null
+++ b/winsup/w32api/include/lmstats.h
@@ -0,0 +1,110 @@
+#ifndef _LMSTATS_H
+#define _LMSTATS_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define STATSOPT_CLR 1
+#define STATS_NO_VALUE ((ULONG)-1)
+#define STATS_OVERFLOW ((ULONG)-2)
+typedef struct _STAT_SERVER_0 {
+ DWORD sts0_start;
+ DWORD sts0_fopens;
+ DWORD sts0_devopens;
+ DWORD sts0_jobsqueued;
+ DWORD sts0_sopens;
+ DWORD sts0_stimedout;
+ DWORD sts0_serrorout;
+ DWORD sts0_pwerrors;
+ DWORD sts0_permerrors;
+ DWORD sts0_syserrors;
+ DWORD sts0_bytessent_low;
+ DWORD sts0_bytessent_high;
+ DWORD sts0_bytesrcvd_low;
+ DWORD sts0_bytesrcvd_high;
+ DWORD sts0_avresponse;
+ DWORD sts0_reqbufneed;
+ DWORD sts0_bigbufneed;
+} STAT_SERVER_0,*PSTAT_SERVER_0,*LPSTAT_SERVER_0;
+#ifdef LM20_WORKSTATION_STATISTICS
+typedef struct _STAT_WORKSTATION_0 {
+ DWORD stw0_start;
+ DWORD stw0_numNCB_r;
+ DWORD stw0_numNCB_s;
+ DWORD stw0_numNCB_a;
+ DWORD stw0_fiNCB_r;
+ DWORD stw0_fiNCB_s;
+ DWORD stw0_fiNCB_a;
+ DWORD stw0_fcNCB_r;
+ DWORD stw0_fcNCB_s;
+ DWORD stw0_fcNCB_a;
+ DWORD stw0_sesstart;
+ DWORD stw0_sessfailcon;
+ DWORD stw0_sessbroke;
+ DWORD stw0_uses;
+ DWORD stw0_usefail;
+ DWORD stw0_autorec;
+ DWORD stw0_bytessent_r_lo;
+ DWORD stw0_bytessent_r_hi;
+ DWORD stw0_bytesrcvd_r_lo;
+ DWORD stw0_bytesrcvd_r_hi;
+ DWORD stw0_bytessent_s_lo;
+ DWORD stw0_bytessent_s_hi;
+ DWORD stw0_bytesrcvd_s_lo;
+ DWORD stw0_bytesrcvd_s_hi;
+ DWORD stw0_bytessent_a_lo;
+ DWORD stw0_bytessent_a_hi;
+ DWORD stw0_bytesrcvd_a_lo;
+ DWORD stw0_bytesrcvd_a_hi;
+ DWORD stw0_reqbufneed;
+ DWORD stw0_bigbufneed;
+} STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0;
+#else
+typedef struct _STAT_WORKSTATION_0 {
+ LARGE_INTEGER StatisticsStartTime;
+ LARGE_INTEGER BytesReceived;
+ LARGE_INTEGER SmbsReceived;
+ LARGE_INTEGER PagingReadBytesRequested;
+ LARGE_INTEGER NonPagingReadBytesRequested;
+ LARGE_INTEGER CacheReadBytesRequested;
+ LARGE_INTEGER NetworkReadBytesRequested;
+ LARGE_INTEGER BytesTransmitted;
+ LARGE_INTEGER SmbsTransmitted;
+ LARGE_INTEGER PagingWriteBytesRequested;
+ LARGE_INTEGER NonPagingWriteBytesRequested;
+ LARGE_INTEGER CacheWriteBytesRequested;
+ LARGE_INTEGER NetworkWriteBytesRequested;
+ DWORD InitiallyFailedOperations;
+ DWORD FailedCompletionOperations;
+ DWORD ReadOperations;
+ DWORD RandomReadOperations;
+ DWORD ReadSmbs;
+ DWORD LargeReadSmbs;
+ DWORD SmallReadSmbs;
+ DWORD WriteOperations;
+ DWORD RandomWriteOperations;
+ DWORD WriteSmbs;
+ DWORD LargeWriteSmbs;
+ DWORD SmallWriteSmbs;
+ DWORD RawReadsDenied;
+ DWORD RawWritesDenied;
+ DWORD NetworkErrors;
+ DWORD Sessions;
+ DWORD FailedSessions;
+ DWORD Reconnects;
+ DWORD CoreConnects;
+ DWORD Lanman20Connects;
+ DWORD Lanman21Connects;
+ DWORD LanmanNtConnects;
+ DWORD ServerDisconnects;
+ DWORD HungSessions;
+ DWORD UseCount;
+ DWORD FailedUseCount;
+ DWORD CurrentCommands;
+} STAT_WORKSTATION_0,*PSTAT_WORKSTATION_0,*LPSTAT_WORKSTATION_0;
+#endif
+
+NET_API_STATUS WINAPI NetStatisticsGet(LPTSTR,LPTSTR,DWORD,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmsvc.h b/winsup/w32api/include/lmsvc.h
new file mode 100644
index 000000000..a129bb0b4
--- /dev/null
+++ b/winsup/w32api/include/lmsvc.h
@@ -0,0 +1,130 @@
+#ifndef _LMSVC_H
+#define _LMSVC_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmsname.h>
+#define SERVICE_DOS_ENCRYPTION TEXT("ENCRYPT")
+#define SERVICE_UNINSTALLED 0
+#define SERVICE_INSTALL_PENDING 1
+#define SERVICE_UNINSTALL_PENDING 2
+#define SERVICE_INSTALLED 3
+#define SERVICE_INSTALL_STATE 3
+#define SERVICE_PAUSE_STATE 18
+#define LM20_SERVICE_ACTIVE 0
+#define LM20_SERVICE_CONTINUE_PENDING 4
+#define LM20_SERVICE_PAUSE_PENDING 8
+#define LM20_SERVICE_PAUSED 18
+#define SERVICE_NOT_UNINSTALLABLE 0
+#define SERVICE_UNINSTALLABLE 16
+#define SERVICE_NOT_PAUSABLE 0
+#define SERVICE_PAUSABLE 32
+#define SERVICE_REDIR_PAUSED 0x700
+#define SERVICE_REDIR_DISK_PAUSED 256
+#define SERVICE_REDIR_PRINT_PAUSED 512
+#define SERVICE_REDIR_COMM_PAUSED 1024
+#define SERVICE_CTRL_INTERROGATE 0
+#define SERVICE_CTRL_PAUSE 1
+#define SERVICE_CTRL_CONTINUE 2
+#define SERVICE_CTRL_UNINSTALL 3
+#define SERVICE_CTRL_REDIR_DISK 1
+#define SERVICE_CTRL_REDIR_PRINT 2
+#define SERVICE_CTRL_REDIR_COMM 4
+#define SERVICE_IP_NO_HINT 0
+#define SERVICE_CCP_NO_HINT 0
+#define SERVICE_IP_QUERY_HINT 0x10000
+#define SERVICE_CCP_QUERY_HINT 0x10000
+#define SERVICE_IP_CHKPT_NUM 255
+#define SERVICE_CCP_CHKPT_NUM 255
+#define SERVICE_IP_WAIT_TIME 0xFF00
+#define SERVICE_CCP_WAIT_TIME 0xFF00
+#define SERVICE_IP_WAITTIME_SHIFT 8
+#define SERVICE_NTIP_WAITTIME_SHIFT 12
+#define UPPER_HINT_MASK 0xFF00
+#define LOWER_HINT_MASK 255
+#define UPPER_GET_HINT_MASK 0xFF00000
+#define LOWER_GET_HINT_MASK 0xFF00
+#define SERVICE_NT_MAXTIME 0xFFFF
+#define SERVICE_RESRV_MASK 0x1FFFF
+#define SERVICE_MAXTIME 255
+#define SERVICE_BASE 3050
+#define SERVICE_UIC_NORMAL 0
+#define SERVICE_UIC_BADPARMVAL (SERVICE_BASE+1)
+#define SERVICE_UIC_MISSPARM (SERVICE_BASE+2)
+#define SERVICE_UIC_UNKPARM (SERVICE_BASE+3)
+#define SERVICE_UIC_RESOURCE (SERVICE_BASE+4)
+#define SERVICE_UIC_CONFIG (SERVICE_BASE+5)
+#define SERVICE_UIC_SYSTEM (SERVICE_BASE+6)
+#define SERVICE_UIC_INTERNAL (SERVICE_BASE+7)
+#define SERVICE_UIC_AMBIGPARM (SERVICE_BASE+8)
+#define SERVICE_UIC_DUPPARM (SERVICE_BASE+9)
+#define SERVICE_UIC_KILL (SERVICE_BASE+10)
+#define SERVICE_UIC_EXEC (SERVICE_BASE+11)
+#define SERVICE_UIC_SUBSERV (SERVICE_BASE+12)
+#define SERVICE_UIC_CONFLPARM (SERVICE_BASE+13)
+#define SERVICE_UIC_FILE (SERVICE_BASE+14)
+#define SERVICE_UIC_M_NULL 0
+#define SERVICE_UIC_M_MEMORY (SERVICE_BASE+20)
+#define SERVICE_UIC_M_DISK (SERVICE_BASE+21)
+#define SERVICE_UIC_M_THREADS (SERVICE_BASE+22)
+#define SERVICE_UIC_M_PROCESSES (SERVICE_BASE+23)
+#define SERVICE_UIC_M_SECURITY (SERVICE_BASE+24)
+#define SERVICE_UIC_M_LANROOT (SERVICE_BASE+25)
+#define SERVICE_UIC_M_REDIR (SERVICE_BASE+26)
+#define SERVICE_UIC_M_SERVER (SERVICE_BASE+27)
+#define SERVICE_UIC_M_SEC_FILE_ERR (SERVICE_BASE+28)
+#define SERVICE_UIC_M_FILES (SERVICE_BASE+29)
+#define SERVICE_UIC_M_LOGS (SERVICE_BASE+30)
+#define SERVICE_UIC_M_LANGROUP (SERVICE_BASE+31)
+#define SERVICE_UIC_M_MSGNAME (SERVICE_BASE+32)
+#define SERVICE_UIC_M_ANNOUNCE (SERVICE_BASE+33)
+#define SERVICE_UIC_M_UAS (SERVICE_BASE+34)
+#define SERVICE_UIC_M_SERVER_SEC_ERR (SERVICE_BASE+35)
+#define SERVICE_UIC_M_WKSTA (SERVICE_BASE+37)
+#define SERVICE_UIC_M_ERRLOG (SERVICE_BASE+38)
+#define SERVICE_UIC_M_FILE_UW (SERVICE_BASE+39)
+#define SERVICE_UIC_M_ADDPAK (SERVICE_BASE+40)
+#define SERVICE_UIC_M_LAZY (SERVICE_BASE+41)
+#define SERVICE_UIC_M_UAS_MACHINE_ACCT (SERVICE_BASE+42)
+#define SERVICE_UIC_M_UAS_SERVERS_NMEMB (SERVICE_BASE+43)
+#define SERVICE_UIC_M_UAS_SERVERS_NOGRP (SERVICE_BASE+44)
+#define SERVICE_UIC_M_UAS_INVALID_ROLE (SERVICE_BASE+45)
+#define SERVICE_UIC_M_NETLOGON_NO_DC (SERVICE_BASE+46)
+#define SERVICE_UIC_M_NETLOGON_DC_CFLCT (SERVICE_BASE+47)
+#define SERVICE_UIC_M_NETLOGON_AUTH (SERVICE_BASE+48)
+#define SERVICE_UIC_M_UAS_PROLOG (SERVICE_BASE+49)
+#define SERVICE2_BASE 5600
+#define SERVICE_UIC_M_NETLOGON_MPATH (SERVICE2_BASE+0)
+#define SERVICE_UIC_M_LSA_MACHINE_ACCT (SERVICE2_BASE+1)
+#define SERVICE_UIC_M_DATABASE_ERROR (SERVICE2_BASE+2)
+
+typedef struct _SERVICE_INFO_0 { LPWSTR svci0_name;} SERVICE_INFO_0,*PSERVICE_INFO_0,* LPSERVICE_INFO_0;
+typedef struct _SERVICE_INFO_1 {
+ LPWSTR svci1_name;
+ DWORD svci1_status;
+ DWORD svci1_code;
+ DWORD svci1_pid;
+} SERVICE_INFO_1,*PSERVICE_INFO_1,* LPSERVICE_INFO_1;
+typedef struct _SERVICE_INFO_2 {
+ LPWSTR svci2_name;
+ DWORD svci2_status;
+ DWORD svci2_code;
+ DWORD svci2_pid;
+ LPWSTR svci2_text;
+ DWORD svci2_specific_error;
+ LPWSTR svci2_display_name;
+} SERVICE_INFO_2,*PSERVICE_INFO_2,* LPSERVICE_INFO_2;
+
+NET_API_STATUS WINAPI NetServiceControl(LPCWSTR,LPCWSTR,DWORD,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetServiceEnum(LPCWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetServiceGetInfo(LPCWSTR,LPCWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetServiceInstall(LPCWSTR,LPCWSTR,DWORD,LPCWSTR*,PBYTE*);
+#define SERVICE_IP_CODE(t,n) ((long)SERVICE_IP_QUERY_HINT|(long)(n|(t<<SERVICE_IP_WAITTIME_SHIFT)))
+#define SERVICE_CCP_CODE(t,n) ((long)SERVICE_CCP_QUERY_HINT|(long)(n|(t<<SERVICE_IP_WAITTIME_SHIFT)))
+#define SERVICE_UIC_CODE(c,m) ((long)(((long)c<<16)|(long)(USHORT)m))
+#define SERVICE_NT_CCP_CODE(t,n) (((long)SERVICE_CCP_QUERY_HINT)|((long)(n))|(((t)&LOWER_HINT_MASK)<<SERVICE_IP_WAITTIME_SHIFT)|(((t)&UPPER_HINT_MASK)<<SERVICE_NTIP_WAITTIME_SHIFT))
+#define SERVICE_NT_WAIT_GET(c) ((((c)&UPPER_GET_HINT_MASK)>>SERVICE_NTIP_WAITTIME_SHIFT)|(((c)&LOWER_GET_HINT_MASK)>>SERVICE_IP_WAITTIME_SHIFT))
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmuse.h b/winsup/w32api/include/lmuse.h
new file mode 100644
index 000000000..a10696813
--- /dev/null
+++ b/winsup/w32api/include/lmuse.h
@@ -0,0 +1,56 @@
+#ifndef _LMUSE_H
+#define _LMUSE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmuseflg.h>
+#define USE_LOCAL_PARMNUM 1
+#define USE_REMOTE_PARMNUM 2
+#define USE_PASSWORD_PARMNUM 3
+#define USE_ASGTYPE_PARMNUM 4
+#define USE_USERNAME_PARMNUM 5
+#define USE_DOMAINNAME_PARMNUM 6
+#define USE_OK 0
+#define USE_PAUSED 1
+#define USE_SESSLOST 2
+#define USE_DISCONN 2
+#define USE_NETERR 3
+#define USE_CONN 4
+#define USE_RECONN 5
+#define USE_WILDCARD ((DWORD)-1)
+#define USE_DISKDEV 0
+#define USE_SPOOLDEV 1
+#define USE_CHARDEV 2
+#define USE_IPC 3
+typedef struct _USE_INFO_0 {
+ LPTSTR ui0_local;
+ LPTSTR ui0_remote;
+}USE_INFO_0,*PUSE_INFO_0,*LPUSE_INFO_0;
+typedef struct _USE_INFO_1 {
+ LPTSTR ui1_local;
+ LPTSTR ui1_remote;
+ LPTSTR ui1_password;
+ DWORD ui1_status;
+ DWORD ui1_asg_type;
+ DWORD ui1_refcount;
+ DWORD ui1_usecount;
+}USE_INFO_1,*PUSE_INFO_1,*LPUSE_INFO_1;
+typedef struct _USE_INFO_2 {
+ LPTSTR ui2_local;
+ LPTSTR ui2_remote;
+ LPTSTR ui2_password;
+ DWORD ui2_status;
+ DWORD ui2_asg_type;
+ DWORD ui2_refcount;
+ DWORD ui2_usecount;
+ LPTSTR ui2_username;
+ LPTSTR ui2_domainname;
+}USE_INFO_2,*PUSE_INFO_2,*LPUSE_INFO_2;
+NET_API_STATUS WINAPI NetUseAdd(LPTSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetUseDel(LPTSTR,LPTSTR,DWORD);
+NET_API_STATUS WINAPI NetUseEnum(LPTSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetUseGetInfo(LPTSTR,LPTSTR,DWORD,PBYTE*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lmuseflg.h b/winsup/w32api/include/lmuseflg.h
new file mode 100644
index 000000000..7984b1969
--- /dev/null
+++ b/winsup/w32api/include/lmuseflg.h
@@ -0,0 +1,6 @@
+#ifndef _LMUSEFLG_H
+#define _LMUSEFLG_H
+#define USE_NOFORCE 0
+#define USE_FORCE 1
+#define USE_LOTS_OF_FORCE 2
+#endif
diff --git a/winsup/w32api/include/lmwksta.h b/winsup/w32api/include/lmwksta.h
new file mode 100644
index 000000000..6538fc9d1
--- /dev/null
+++ b/winsup/w32api/include/lmwksta.h
@@ -0,0 +1,229 @@
+#ifndef _LMWKSTA_H
+#define _LMWKSTA_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <lmuseflg.h>
+#define WKSTA_PLATFORM_ID_PARMNUM 100
+#define WKSTA_COMPUTERNAME_PARMNUM 1
+#define WKSTA_LANGROUP_PARMNUM 2
+#define WKSTA_VER_MAJOR_PARMNUM 4
+#define WKSTA_VER_MINOR_PARMNUM 5
+#define WKSTA_LOGGED_ON_USERS_PARMNUM 6
+#define WKSTA_LANROOT_PARMNUM 7
+#define WKSTA_LOGON_DOMAIN_PARMNUM 8
+#define WKSTA_LOGON_SERVER_PARMNUM 9
+#define WKSTA_CHARWAIT_PARMNUM 10
+#define WKSTA_CHARTIME_PARMNUM 11
+#define WKSTA_CHARCOUNT_PARMNUM 12
+#define WKSTA_KEEPCONN_PARMNUM 13
+#define WKSTA_KEEPSEARCH_PARMNUM 14
+#define WKSTA_MAXCMDS_PARMNUM 15
+#define WKSTA_NUMWORKBUF_PARMNUM 16
+#define WKSTA_MAXWRKCACHE_PARMNUM 17
+#define WKSTA_SESSTIMEOUT_PARMNUM 18
+#define WKSTA_SIZERROR_PARMNUM 19
+#define WKSTA_NUMALERTS_PARMNUM 20
+#define WKSTA_NUMSERVICES_PARMNUM 21
+#define WKSTA_NUMCHARBUF_PARMNUM 22
+#define WKSTA_SIZCHARBUF_PARMNUM 23
+#define WKSTA_ERRLOGSZ_PARMNUM 27
+#define WKSTA_PRINTBUFTIME_PARMNUM 28
+#define WKSTA_SIZWORKBUF_PARMNUM 29
+#define WKSTA_MAILSLOTS_PARMNUM 30
+#define WKSTA_NUMDGRAMBUF_PARMNUM 31
+#define WKSTA_WRKHEURISTICS_PARMNUM 32
+#define WKSTA_MAXTHREADS_PARMNUM 33
+#define WKSTA_LOCKQUOTA_PARMNUM 41
+#define WKSTA_LOCKINCREMENT_PARMNUM 42
+#define WKSTA_LOCKMAXIMUM_PARMNUM 43
+#define WKSTA_PIPEINCREMENT_PARMNUM 44
+#define WKSTA_PIPEMAXIMUM_PARMNUM 45
+#define WKSTA_DORMANTFILELIMIT_PARMNUM 46
+#define WKSTA_CACHEFILETIMEOUT_PARMNUM 47
+#define WKSTA_USEOPPORTUNISTICLOCKING_PARMNUM 48
+#define WKSTA_USEUNLOCKBEHIND_PARMNUM 49
+#define WKSTA_USECLOSEBEHIND_PARMNUM 50
+#define WKSTA_BUFFERNAMEDPIPES_PARMNUM 51
+#define WKSTA_USELOCKANDREADANDUNLOCK_PARMNUM 52
+#define WKSTA_UTILIZENTCACHING_PARMNUM 53
+#define WKSTA_USERAWREAD_PARMNUM 54
+#define WKSTA_USERAWWRITE_PARMNUM 55
+#define WKSTA_USEWRITERAWWITHDATA_PARMNUM 56
+#define WKSTA_USEENCRYPTION_PARMNUM 57
+#define WKSTA_BUFFILESWITHDENYWRITE_PARMNUM 58
+#define WKSTA_BUFFERREADONLYFILES_PARMNUM 59
+#define WKSTA_FORCECORECREATEMODE_PARMNUM 60
+#define WKSTA_USE512BYTESMAXTRANSFER_PARMNUM 61
+#define WKSTA_READAHEADTHRUPUT_PARMNUM 62
+#define WKSTA_OTH_DOMAINS_PARMNUM 101
+#define TRANSPORT_QUALITYOFSERVICE_PARMNUM 201
+#define TRANSPORT_NAME_PARMNUM 202
+
+typedef struct _WKSTA_INFO_100 {
+ DWORD wki100_platform_id;
+ LPWSTR wki100_computername;
+ LPWSTR wki100_langroup;
+ DWORD wki100_ver_major;
+ DWORD wki100_ver_minor;
+}WKSTA_INFO_100,*PWKSTA_INFO_100,*LPWKSTA_INFO_100;
+typedef struct _WKSTA_INFO_101 {
+ DWORD wki101_platform_id;
+ LPWSTR wki101_computername;
+ LPWSTR wki101_langroup;
+ DWORD wki101_ver_major;
+ DWORD wki101_ver_minor;
+ LPWSTR wki101_lanroot;
+}WKSTA_INFO_101,*PWKSTA_INFO_101,*LPWKSTA_INFO_101;
+typedef struct _WKSTA_INFO_102 {
+ DWORD wki102_platform_id;
+ LPWSTR wki102_computername;
+ LPWSTR wki102_langroup;
+ DWORD wki102_ver_major;
+ DWORD wki102_ver_minor;
+ LPWSTR wki102_lanroot;
+ DWORD wki102_logged_on_users;
+}WKSTA_INFO_102,*PWKSTA_INFO_102,*LPWKSTA_INFO_102;
+typedef struct _WKSTA_INFO_302{
+ DWORD wki302_char_wait;
+ DWORD wki302_collection_time;
+ DWORD wki302_maximum_collection_count;
+ DWORD wki302_keep_conn;
+ DWORD wki302_keep_search;
+ DWORD wki302_max_cmds;
+ DWORD wki302_num_work_buf;
+ DWORD wki302_siz_work_buf;
+ DWORD wki302_max_wrk_cache;
+ DWORD wki302_sess_timeout;
+ DWORD wki302_siz_error;
+ DWORD wki302_num_alerts;
+ DWORD wki302_num_services;
+ DWORD wki302_errlog_sz;
+ DWORD wki302_print_buf_time;
+ DWORD wki302_num_char_buf;
+ DWORD wki302_siz_char_buf;
+ LPWSTR wki302_wrk_heuristics;
+ DWORD wki302_mailslots;
+ DWORD wki302_num_dgram_buf;
+}WKSTA_INFO_302,*PWKSTA_INFO_302,*LPWKSTA_INFO_302;
+typedef struct _WKSTA_INFO_402{
+ DWORD wki402_char_wait;
+ DWORD wki402_collection_time;
+ DWORD wki402_maximum_collection_count;
+ DWORD wki402_keep_conn;
+ DWORD wki402_keep_search;
+ DWORD wki402_max_cmds;
+ DWORD wki402_num_work_buf;
+ DWORD wki402_siz_work_buf;
+ DWORD wki402_max_wrk_cache;
+ DWORD wki402_sess_timeout;
+ DWORD wki402_siz_error;
+ DWORD wki402_num_alerts;
+ DWORD wki402_num_services;
+ DWORD wki402_errlog_sz;
+ DWORD wki402_print_buf_time;
+ DWORD wki402_num_char_buf;
+ DWORD wki402_siz_char_buf;
+ LPWSTR wki402_wrk_heuristics;
+ DWORD wki402_mailslots;
+ DWORD wki402_num_dgram_buf;
+ DWORD wki402_max_threads;
+}WKSTA_INFO_402,*PWKSTA_INFO_402,*LPWKSTA_INFO_402;
+typedef struct _WKSTA_INFO_502{
+ DWORD wki502_char_wait;
+ DWORD wki502_collection_time;
+ DWORD wki502_maximum_collection_count;
+ DWORD wki502_keep_conn;
+ DWORD wki502_max_cmds;
+ DWORD wki502_sess_timeout;
+ DWORD wki502_siz_char_buf;
+ DWORD wki502_max_threads;
+ DWORD wki502_lock_quota;
+ DWORD wki502_lock_increment;
+ DWORD wki502_lock_maximum;
+ DWORD wki502_pipe_increment;
+ DWORD wki502_pipe_maximum;
+ DWORD wki502_cache_file_timeout;
+ DWORD wki502_dormant_file_limit;
+ DWORD wki502_read_ahead_throughput;
+ DWORD wki502_num_mailslot_buffers;
+ DWORD wki502_num_srv_announce_buffers;
+ DWORD wki502_max_illegal_datagram_events;
+ DWORD wki502_illegal_datagram_event_reset_frequency;
+ BOOL wki502_log_election_packets;
+ BOOL wki502_use_opportunistic_locking;
+ BOOL wki502_use_unlock_behind;
+ BOOL wki502_use_close_behind;
+ BOOL wki502_buf_named_pipes;
+ BOOL wki502_use_lock_read_unlock;
+ BOOL wki502_utilize_nt_caching;
+ BOOL wki502_use_raw_read;
+ BOOL wki502_use_raw_write;
+ BOOL wki502_use_write_raw_data;
+ BOOL wki502_use_encryption;
+ BOOL wki502_buf_files_deny_write;
+ BOOL wki502_buf_read_only_files;
+ BOOL wki502_force_core_create_mode;
+ BOOL wki502_use_512_byte_max_transfer;
+}WKSTA_INFO_502,*PWKSTA_INFO_502,*LPWKSTA_INFO_502;
+typedef struct _WKSTA_INFO_1010 { DWORD wki1010_char_wait;} WKSTA_INFO_1010,*PWKSTA_INFO_1010,*LPWKSTA_INFO_1010;
+typedef struct _WKSTA_INFO_1011 { DWORD wki1011_collection_time;} WKSTA_INFO_1011,*PWKSTA_INFO_1011,*LPWKSTA_INFO_1011;
+typedef struct _WKSTA_INFO_1012 { DWORD wki1012_maximum_collection_count;} WKSTA_INFO_1012,*PWKSTA_INFO_1012,*LPWKSTA_INFO_1012;
+typedef struct _WKSTA_INFO_1027 { DWORD wki1027_errlog_sz;} WKSTA_INFO_1027,*PWKSTA_INFO_1027,*LPWKSTA_INFO_1027;
+typedef struct _WKSTA_INFO_1028 { DWORD wki1028_print_buf_time;} WKSTA_INFO_1028,*PWKSTA_INFO_1028,*LPWKSTA_INFO_1028;
+typedef struct _WKSTA_INFO_1032 { DWORD wki1032_wrk_heuristics;} WKSTA_INFO_1032,*PWKSTA_INFO_1032,*LPWKSTA_INFO_1032;
+typedef struct _WKSTA_INFO_1013 { DWORD wki1013_keep_conn;} WKSTA_INFO_1013,*PWKSTA_INFO_1013,*LPWKSTA_INFO_1013;
+typedef struct _WKSTA_INFO_1018 { DWORD wki1018_sess_timeout;} WKSTA_INFO_1018,*PWKSTA_INFO_1018,*LPWKSTA_INFO_1018;
+typedef struct _WKSTA_INFO_1023 { DWORD wki1023_siz_char_buf;} WKSTA_INFO_1023,*PWKSTA_INFO_1023,*LPWKSTA_INFO_1023;
+typedef struct _WKSTA_INFO_1033 { DWORD wki1033_max_threads;} WKSTA_INFO_1033,*PWKSTA_INFO_1033,*LPWKSTA_INFO_1033;
+typedef struct _WKSTA_INFO_1041 { DWORD wki1041_lock_quota;} WKSTA_INFO_1041,*PWKSTA_INFO_1041,*LPWKSTA_INFO_1041;
+typedef struct _WKSTA_INFO_1042 { DWORD wki1042_lock_increment;} WKSTA_INFO_1042,*PWKSTA_INFO_1042,*LPWKSTA_INFO_1042;
+typedef struct _WKSTA_INFO_1043 { DWORD wki1043_lock_maximum;} WKSTA_INFO_1043,*PWKSTA_INFO_1043,*LPWKSTA_INFO_1043;
+typedef struct _WKSTA_INFO_1044 { DWORD wki1044_pipe_increment;} WKSTA_INFO_1044,*PWKSTA_INFO_1044,*LPWKSTA_INFO_1044;
+typedef struct _WKSTA_INFO_1045 { DWORD wki1045_pipe_maximum;} WKSTA_INFO_1045,*PWKSTA_INFO_1045,*LPWKSTA_INFO_1045;
+typedef struct _WKSTA_INFO_1046 { DWORD wki1046_dormant_file_limit;} WKSTA_INFO_1046,*PWKSTA_INFO_1046,*LPWKSTA_INFO_1046;
+typedef struct _WKSTA_INFO_1047 { DWORD wki1047_cache_file_timeout;} WKSTA_INFO_1047,*PWKSTA_INFO_1047,*LPWKSTA_INFO_1047;
+typedef struct _WKSTA_INFO_1048 { BOOL wki1048_use_opportunistic_locking;} WKSTA_INFO_1048,*PWKSTA_INFO_1048,*LPWKSTA_INFO_1048;
+typedef struct _WKSTA_INFO_1049 { BOOL wki1049_use_unlock_behind;} WKSTA_INFO_1049,*PWKSTA_INFO_1049,*LPWKSTA_INFO_1049;
+typedef struct _WKSTA_INFO_1050 { BOOL wki1050_use_close_behind;} WKSTA_INFO_1050,*PWKSTA_INFO_1050,*LPWKSTA_INFO_1050;
+typedef struct _WKSTA_INFO_1051 { BOOL wki1051_buf_named_pipes;} WKSTA_INFO_1051,*PWKSTA_INFO_1051,*LPWKSTA_INFO_1051;
+typedef struct _WKSTA_INFO_1052 { BOOL wki1052_use_lock_read_unlock;} WKSTA_INFO_1052,*PWKSTA_INFO_1052,*LPWKSTA_INFO_1052;
+typedef struct _WKSTA_INFO_1053 { BOOL wki1053_utilize_nt_caching;} WKSTA_INFO_1053,*PWKSTA_INFO_1053,*LPWKSTA_INFO_1053;
+typedef struct _WKSTA_INFO_1054 { BOOL wki1054_use_raw_read;} WKSTA_INFO_1054,*PWKSTA_INFO_1054,*LPWKSTA_INFO_1054;
+typedef struct _WKSTA_INFO_1055 { BOOL wki1055_use_raw_write;} WKSTA_INFO_1055,*PWKSTA_INFO_1055,*LPWKSTA_INFO_1055;
+typedef struct _WKSTA_INFO_1056 { BOOL wki1056_use_write_raw_data;} WKSTA_INFO_1056,*PWKSTA_INFO_1056,*LPWKSTA_INFO_1056;
+typedef struct _WKSTA_INFO_1057 { BOOL wki1057_use_encryption;} WKSTA_INFO_1057,*PWKSTA_INFO_1057,*LPWKSTA_INFO_1057;
+typedef struct _WKSTA_INFO_1058 { BOOL wki1058_buf_files_deny_write;} WKSTA_INFO_1058,*PWKSTA_INFO_1058,*LPWKSTA_INFO_1058;
+typedef struct _WKSTA_INFO_1059 { BOOL wki1059_buf_read_only_files;} WKSTA_INFO_1059,*PWKSTA_INFO_1059,*LPWKSTA_INFO_1059;
+typedef struct _WKSTA_INFO_1060 { BOOL wki1060_force_core_create_mode;} WKSTA_INFO_1060,*PWKSTA_INFO_1060,*LPWKSTA_INFO_1060;
+typedef struct _WKSTA_INFO_1061 { BOOL wki1061_use_512_byte_max_transfer;} WKSTA_INFO_1061,*PWKSTA_INFO_1061,*LPWKSTA_INFO_1061;
+typedef struct _WKSTA_INFO_1062 { DWORD wki1062_read_ahead_throughput;} WKSTA_INFO_1062,*PWKSTA_INFO_1062,*LPWKSTA_INFO_1062;
+typedef struct _WKSTA_USER_INFO_0 { LPWSTR wkui0_username;}WKSTA_USER_INFO_0,*PWKSTA_USER_INFO_0,*LPWKSTA_USER_INFO_0;
+typedef struct _WKSTA_USER_INFO_1 {
+ LPWSTR wkui1_username;
+ LPWSTR wkui1_logon_domain;
+ LPWSTR wkui1_oth_domains;
+ LPWSTR wkui1_logon_server;
+}WKSTA_USER_INFO_1,*PWKSTA_USER_INFO_1,*LPWKSTA_USER_INFO_1;
+typedef struct _WKSTA_USER_INFO_1101 { LPWSTR wkui1101_oth_domains;} WKSTA_USER_INFO_1101,*PWKSTA_USER_INFO_1101,*LPWKSTA_USER_INFO_1101;
+typedef struct _WKSTA_TRANSPORT_INFO_0 {
+ DWORD wkti0_quality_of_service;
+ DWORD wkti0_number_of_vcs;
+ LPWSTR wkti0_transport_name;
+ LPWSTR wkti0_transport_address;
+ BOOL wkti0_wan_ish;
+}WKSTA_TRANSPORT_INFO_0,*PWKSTA_TRANSPORT_INFO_0,*LPWKSTA_TRANSPORT_INFO_0;
+
+NET_API_STATUS WINAPI NetWkstaGetInfo(LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetWkstaSetInfo(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetWkstaUserGetInfo(LPWSTR,DWORD,PBYTE*);
+NET_API_STATUS WINAPI NetWkstaUserSetInfo(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetWkstaUserEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+NET_API_STATUS WINAPI NetWkstaTransportAdd(LPWSTR,DWORD,PBYTE,PDWORD);
+NET_API_STATUS WINAPI NetWkstaTransportDel(LPWSTR,LPWSTR,DWORD);
+NET_API_STATUS WINAPI NetWkstaTransportEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/lzexpand.h b/winsup/w32api/include/lzexpand.h
new file mode 100644
index 000000000..5c06d14e4
--- /dev/null
+++ b/winsup/w32api/include/lzexpand.h
@@ -0,0 +1,36 @@
+#ifndef _LZEXPAND_H
+#define _LZEXPAND_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define LZERROR_BADINHANDLE (-1)
+#define LZERROR_BADOUTHANDLE (-2)
+#define LZERROR_READ (-3)
+#define LZERROR_WRITE (-4)
+#define LZERROR_GLOBALLOC (-5)
+#define LZERROR_GLOBLOCK (-6)
+#define LZERROR_BADVALUE (-7)
+#define LZERROR_UNKNOWNALG (-8)
+LONG WINAPI CopyLZFile(INT,INT);
+INT WINAPI GetExpandedNameA(LPSTR,LPSTR);
+INT WINAPI GetExpandedNameW(LPWSTR,LPWSTR);
+VOID APIENTRY LZClose(INT);
+LONG APIENTRY LZCopy(INT,INT);
+VOID WINAPI LZDone(VOID);
+INT WINAPI LZInit(INT);
+INT WINAPI LZOpenFileA(LPSTR,LPOFSTRUCT,WORD);
+INT WINAPI LZOpenFileW(LPWSTR,LPOFSTRUCT,WORD);
+INT WINAPI LZRead(INT,LPSTR,INT);
+LONG WINAPI LZSeek(INT,LONG,INT);
+INT WINAPI LZStart(VOID);
+#ifdef UNICODE
+#define GetExpandedName GetExpandedNameW
+#define LZOpenFile LZOpenFileW
+#else
+#define GetExpandedName GetExpandedNameA
+#define LZOpenFile LZOpenFileA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/mciavi.h b/winsup/w32api/include/mciavi.h
new file mode 100644
index 000000000..b56bb8f1c
--- /dev/null
+++ b/winsup/w32api/include/mciavi.h
@@ -0,0 +1,21 @@
+#ifndef _MCIAVI_H
+#define _MCIAVI_H
+#define MCI_MCIAVI_PLAY_WINDOW 0x1000000
+#define MCI_MCIAVI_PLAY_FULLSCREEN 0x2000000
+#define MCI_MCIAVI_PLAY_FULLBY2 0x4000000
+#define MCI_AVI_STATUS_FRAMES_SKIPPED 0x8001
+#define MCI_AVI_STATUS_LAST_PLAY_SPEED 0x8002
+#define MCI_AVI_STATUS_AUDIO_BREAKS 0x8003
+#define MCI_AVI_SETVIDEO_DRAW_PROCEDURE 0x8000
+#define MCI_AVI_SETVIDEO_PALETTE_COLOR 0x8100
+#define MCI_AVI_SETVIDEO_PALETTE_HALFTONE 0x0000FFFF
+#define MCIERR_AVI_OLDAVIFORMAT (MCIERR_CUSTOM_DRIVER_BASE+100)
+#define MCIERR_AVI_NOTINTERLEAVED (MCIERR_CUSTOM_DRIVER_BASE+101)
+#define MCIERR_AVI_NODISPDIB (MCIERR_CUSTOM_DRIVER_BASE+102)
+#define MCIERR_AVI_CANTPLAYFULLSCREEN (MCIERR_CUSTOM_DRIVER_BASE+103)
+#define MCIERR_AVI_TOOBIGFORVGA (MCIERR_CUSTOM_DRIVER_BASE+104)
+#define MCIERR_AVI_NOCOMPRESSOR (MCIERR_CUSTOM_DRIVER_BASE+105)
+#define MCIERR_AVI_DISPLAYERROR (MCIERR_CUSTOM_DRIVER_BASE+106)
+#define MCIERR_AVI_AUDIOERROR (MCIERR_CUSTOM_DRIVER_BASE+107)
+#define MCIERR_AVI_BADPALETTE (MCIERR_CUSTOM_DRIVER_BASE+108)
+#endif
diff --git a/winsup/w32api/include/mcx.h b/winsup/w32api/include/mcx.h
new file mode 100644
index 000000000..facc6d595
--- /dev/null
+++ b/winsup/w32api/include/mcx.h
@@ -0,0 +1,73 @@
+#ifndef _MCX_H
+#define _MCX_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DIALOPTION_BILLING 64
+#define DIALOPTION_QUIET 128
+#define DIALOPTION_DIALTONE 256
+#define MDMVOLFLAG_LOW 1
+#define MDMVOLFLAG_MEDIUM 2
+#define MDMVOLFLAG_HIGH 4
+#define MDMVOL_LOW 0
+#define MDMVOL_MEDIUM 1
+#define MDMVOL_HIGH 2
+#define MDMSPKRFLAG_OFF 1
+#define MDMSPKRFLAG_DIAL 2
+#define MDMSPKRFLAG_ON 4
+#define MDMSPKRFLAG_CALLSETUP 8
+#define MDMSPKR_OFF 0
+#define MDMSPKR_DIAL 1
+#define MDMSPKR_ON 2
+#define MDMSPKR_CALLSETUP 3
+#define MDM_COMPRESSION 1
+#define MDM_ERROR_CONTROL 2
+#define MDM_FORCED_EC 4
+#define MDM_CELLULAR 8
+#define MDM_FLOWCONTROL_HARD 16
+#define MDM_FLOWCONTROL_SOFT 32
+#define MDM_CCITT_OVERRIDE 64
+#define MDM_SPEED_ADJUST 128
+#define MDM_TONE_DIAL 256
+#define MDM_BLIND_DIAL 512
+#define MDM_V23_OVERRIDE 1024
+typedef struct _MODEMDEVCAPS {
+ DWORD dwActualSize;
+ DWORD dwRequiredSize;
+ DWORD dwDevSpecificOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwModemProviderVersion;
+ DWORD dwModemManufacturerOffset;
+ DWORD dwModemManufacturerSize;
+ DWORD dwModemModelOffset;
+ DWORD dwModemModelSize;
+ DWORD dwModemVersionOffset;
+ DWORD dwModemVersionSize;
+ DWORD dwDialOptions;
+ DWORD dwCallSetupFailTimer;
+ DWORD dwInactivityTimeout;
+ DWORD dwSpeakerVolume;
+ DWORD dwSpeakerMode;
+ DWORD dwModemOptions;
+ DWORD dwMaxDTERate;
+ DWORD dwMaxDCERate;
+ BYTE abVariablePortion[1];
+} MODEMDEVCAPS,*PMODEMDEVCAPS,*LPMODEMDEVCAPS;
+typedef struct _MODEMSETTINGS {
+ DWORD dwActualSize;
+ DWORD dwRequiredSize;
+ DWORD dwDevSpecificOffset;
+ DWORD dwDevSpecificSize;
+ DWORD dwCallSetupFailTimer;
+ DWORD dwInactivityTimeout;
+ DWORD dwSpeakerVolume;
+ DWORD dwSpeakerMode;
+ DWORD dwPreferredModemOptions;
+ DWORD dwNegotiatedModemOptions;
+ DWORD dwNegotiatedDCERate;
+ BYTE abVariablePortion[1];
+} MODEMSETTINGS,*PMODEMSETTINGS,*LPMODEMSETTINGS;
+#ifdef __cplusplus
+}
+#endif
+#endif /* _MCX_H */
diff --git a/winsup/w32api/include/mmsystem.h b/winsup/w32api/include/mmsystem.h
new file mode 100644
index 000000000..a35a78929
--- /dev/null
+++ b/winsup/w32api/include/mmsystem.h
@@ -0,0 +1,1933 @@
+
+#ifndef _MMSYSTEM_H
+#define _MMSYSTEM_H
+#pragma pack(push,1)
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WINMMAPI DECLSPEC_IMPORT
+#define _loadds
+#define _huge
+#define MAXPNAMELEN 32
+#define MAXERRORLENGTH 256
+#define MAX_JOYSTICKOEMVXDNAME 260
+#define _MMRESULT_
+#define TIME_MS 1
+#define TIME_SAMPLES 2
+#define TIME_BYTES 4
+#define TIME_SMPTE 8
+#define TIME_MIDI 16
+#define TIME_TICKS 32
+#define MAKEFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24))
+#define MM_JOY1MOVE 0x3A0
+#define MM_JOY2MOVE 0x3A1
+#define MM_JOY1ZMOVE 0x3A2
+#define MM_JOY2ZMOVE 0x3A3
+#define MM_JOY1BUTTONDOWN 0x3B5
+#define MM_JOY2BUTTONDOWN 0x3B6
+#define MM_JOY1BUTTONUP 0x3B7
+#define MM_JOY2BUTTONUP 0x3B8
+#define MM_MCINOTIFY 0x3B9
+#define MM_WOM_OPEN 0x3BB
+#define MM_WOM_CLOSE 0x3BC
+#define MM_WOM_DONE 0x3BD
+#define MM_WIM_OPEN 0x3BE
+#define MM_WIM_CLOSE 0x3BF
+#define MM_WIM_DATA 0x3C0
+#define MM_MIM_OPEN 0x3C1
+#define MM_MIM_CLOSE 0x3C2
+#define MM_MIM_DATA 0x3C3
+#define MM_MIM_LONGDATA 0x3C4
+#define MM_MIM_ERROR 0x3C5
+#define MM_MIM_LONGERROR 0x3C6
+#define MM_MOM_OPEN 0x3C7
+#define MM_MOM_CLOSE 0x3C8
+#define MM_MOM_DONE 0x3C9
+#define MM_DRVM_OPEN 0x3D0
+#define MM_DRVM_CLOSE 0x3D1
+#define MM_DRVM_DATA 0x3D2
+#define MM_DRVM_ERROR 0x3D3
+#define MM_STREAM_OPEN 0x3D4
+#define MM_STREAM_CLOSE 0x3D5
+#define MM_STREAM_DONE 0x3D6
+#define MM_STREAM_ERROR 0x3D7
+#define MM_MOM_POSITIONCB 0x3CA
+#define MM_MCISIGNAL 0x3CB
+#define MM_MIM_MOREDATA 0x3CC
+#define MM_MIXM_LINE_CHANGE 0x3D0
+#define MM_MIXM_CONTROL_CHANGE 0x3D1
+#define MMSYSERR_BASE 0
+#define WAVERR_BASE 32
+#define MIDIERR_BASE 64
+#define TIMERR_BASE 96
+#define JOYERR_BASE 160
+#define MCIERR_BASE 256
+#define MIXERR_BASE 1024
+#define MCI_STRING_OFFSET 512
+#define MCI_VD_OFFSET 1024
+#define MCI_CD_OFFSET 1088
+#define MCI_WAVE_OFFSET 1152
+#define MCI_SEQ_OFFSET 1216
+#define MMSYSERR_NOERROR 0
+#define MMSYSERR_ERROR (MMSYSERR_BASE+1)
+#define MMSYSERR_BADDEVICEID (MMSYSERR_BASE+2)
+#define MMSYSERR_NOTENABLED (MMSYSERR_BASE+3)
+#define MMSYSERR_ALLOCATED (MMSYSERR_BASE+4)
+#define MMSYSERR_INVALHANDLE (MMSYSERR_BASE+5)
+#define MMSYSERR_NODRIVER (MMSYSERR_BASE+6)
+#define MMSYSERR_NOMEM (MMSYSERR_BASE+7)
+#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE+8)
+#define MMSYSERR_BADERRNUM (MMSYSERR_BASE+9)
+#define MMSYSERR_INVALFLAG (MMSYSERR_BASE+10)
+#define MMSYSERR_INVALPARAM (MMSYSERR_BASE+11)
+#define MMSYSERR_HANDLEBUSY (MMSYSERR_BASE+12)
+#define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE+13)
+#define MMSYSERR_BADDB (MMSYSERR_BASE+14)
+#define MMSYSERR_KEYNOTFOUND (MMSYSERR_BASE+15)
+#define MMSYSERR_READERROR (MMSYSERR_BASE+16)
+#define MMSYSERR_WRITEERROR (MMSYSERR_BASE+17)
+#define MMSYSERR_DELETEERROR (MMSYSERR_BASE+18)
+#define MMSYSERR_VALNOTFOUND (MMSYSERR_BASE+19)
+#define MMSYSERR_NODRIVERCB (MMSYSERR_BASE+20)
+#define MMSYSERR_LASTERROR (MMSYSERR_BASE+20)
+#define DRV_LOAD 1
+#define DRV_ENABLE 2
+#define DRV_OPEN 3
+#define DRV_CLOSE 4
+#define DRV_DISABLE 5
+#define DRV_FREE 6
+#define DRV_CONFIGURE 7
+#define DRV_QUERYCONFIGURE 8
+#define DRV_INSTALL 9
+#define DRV_REMOVE 10
+#define DRV_EXITSESSION 11
+#define DRV_POWER 15
+#define DRV_RESERVED 0x800
+#define DRV_USER 0x4000
+#define DRVCNF_CANCEL 0
+#define DRVCNF_OK 1
+#define DRVCNF_RESTART 2
+#define DRV_CANCEL DRVCNF_CANCEL
+#define DRV_OK DRVCNF_OK
+#define DRV_RESTART DRVCNF_RESTART
+#define DRV_MCI_FIRST DRV_RESERVED
+#define DRV_MCI_LAST (DRV_RESERVED+0xFFF)
+#define CALLBACK_TYPEMASK 0x70000
+#define CALLBACK_NULL 0
+#define CALLBACK_WINDOW 0x10000
+#define CALLBACK_TASK 0x20000
+#define CALLBACK_FUNCTION 0x30000
+#define CALLBACK_THREAD CALLBACK_TASK
+#define CALLBACK_EVENT 0x50000
+#define SND_SYNC 0
+#define SND_ASYNC 1
+#define SND_NODEFAULT 2
+#define SND_MEMORY 4
+#define SND_LOOP 8
+#define SND_NOSTOP 16
+#define SND_NOWAIT 0x2000
+#define SND_ALIAS 0x10000
+#define SND_ALIAS_ID 0x110000
+#define SND_FILENAME 0x20000
+#define SND_RESOURCE 0x40004
+#define SND_PURGE 0x40
+#define SND_APPLICATION 0x80
+#define SND_ALIAS_START 0
+#define sndAlias(c0,c1) (SND_ALIAS_START+(DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8))
+#define SND_ALIAS_SYSTEMASTERISK sndAlias('S','*')
+#define SND_ALIAS_SYSTEMQUESTION sndAlias('S','?')
+#define SND_ALIAS_SYSTEMHAND sndAlias('S','H')
+#define SND_ALIAS_SYSTEMEXIT sndAlias('S','E')
+#define SND_ALIAS_SYSTEMSTART sndAlias('S','S')
+#define SND_ALIAS_SYSTEMWELCOME sndAlias('S','W')
+#define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S','!')
+#define SND_ALIAS_SYSTEMDEFAULT sndAlias('S','D')
+#define WAVERR_BADFORMAT (WAVERR_BASE + 0)
+#define WAVERR_STILLPLAYING (WAVERR_BASE + 1)
+#define WAVERR_UNPREPARED (WAVERR_BASE + 2)
+#define WAVERR_SYNC (WAVERR_BASE + 3)
+#define WAVERR_LASTERROR (WAVERR_BASE + 3)
+#define WOM_OPEN MM_WOM_OPEN
+#define WOM_CLOSE MM_WOM_CLOSE
+#define WOM_DONE MM_WOM_DONE
+#define WIM_OPEN MM_WIM_OPEN
+#define WIM_CLOSE MM_WIM_CLOSE
+#define WIM_DATA MM_WIM_DATA
+#define WAVE_MAPPER ((UINT)-1)
+#define WAVE_FORMAT_QUERY 1
+#define WAVE_ALLOWSYNC 2
+#define WAVE_MAPPED 4
+#define WAVE_FORMAT_DIRECT 8
+#define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY|WAVE_FORMAT_DIRECT)
+#define WHDR_DONE 1
+#define WHDR_PREPARED 2
+#define WHDR_BEGINLOOP 4
+#define WHDR_ENDLOOP 8
+#define WHDR_INQUEUE 16
+#define WAVECAPS_PITCH 1
+#define WAVECAPS_PLAYBACKRATE 2
+#define WAVECAPS_VOLUME 4
+#define WAVECAPS_LRVOLUME 8
+#define WAVECAPS_SYNC 16
+#define WAVECAPS_SAMPLEACCURATE 32
+#define WAVECAPS_DIRECTSOUND 64
+#define WAVE_INVALIDFORMAT 0
+#define WAVE_FORMAT_1M08 1
+#define WAVE_FORMAT_1S08 2
+#define WAVE_FORMAT_1M16 4
+#define WAVE_FORMAT_1S16 8
+#define WAVE_FORMAT_2M08 16
+#define WAVE_FORMAT_2S08 32
+#define WAVE_FORMAT_2M16 64
+#define WAVE_FORMAT_2S16 128
+#define WAVE_FORMAT_4M08 256
+#define WAVE_FORMAT_4S08 512
+#define WAVE_FORMAT_4M16 1024
+#define WAVE_FORMAT_4S16 2048
+#define WAVE_FORMAT_PCM 1
+#define MIDIERR_UNPREPARED MIDIERR_BASE
+#define MIDIERR_STILLPLAYING (MIDIERR_BASE+1)
+#define MIDIERR_NOMAP (MIDIERR_BASE+2)
+#define MIDIERR_NOTREADY (MIDIERR_BASE+3)
+#define MIDIERR_NODEVICE (MIDIERR_BASE+4)
+#define MIDIERR_INVALIDSETUP (MIDIERR_BASE+5)
+#define MIDIERR_BADOPENMODE (MIDIERR_BASE+6)
+#define MIDIERR_DONT_CONTINUE (MIDIERR_BASE+7)
+#define MIDIERR_LASTERROR (MIDIERR_BASE+7)
+#define MIDIPATCHSIZE 128
+#define MIM_OPEN MM_MIM_OPEN
+#define MIM_CLOSE MM_MIM_CLOSE
+#define MIM_DATA MM_MIM_DATA
+#define MIM_LONGDATA MM_MIM_LONGDATA
+#define MIM_ERROR MM_MIM_ERROR
+#define MIM_LONGERROR MM_MIM_LONGERROR
+#define MOM_OPEN MM_MOM_OPEN
+#define MOM_CLOSE MM_MOM_CLOSE
+#define MOM_DONE MM_MOM_DONE
+#define MIM_MOREDATA MM_MIM_MOREDATA
+#define MOM_POSITIONCB MM_MOM_POSITIONCB
+#define MIDIMAPPER ((UINT)-1)
+#define MIDI_MAPPER ((UINT)-1)
+#define MIDI_IO_STATUS 32
+#define MIDI_CACHE_ALL 1
+#define MIDI_CACHE_BESTFIT 2
+#define MIDI_CACHE_QUERY 3
+#define MIDI_UNCACHE 4
+#define MOD_MIDIPORT 1
+#define MOD_SYNTH 2
+#define MOD_SQSYNTH 3
+#define MOD_FMSYNTH 4
+#define MOD_MAPPER 5
+#define MIDICAPS_VOLUME 1
+#define MIDICAPS_LRVOLUME 2
+#define MIDICAPS_CACHE 4
+#define MIDICAPS_STREAM 8
+#define MHDR_DONE 1
+#define MHDR_PREPARED 2
+#define MHDR_INQUEUE 4
+#define MHDR_ISSTRM 8
+#define MEVT_F_SHORT 0
+#define MEVT_F_LONG 0x80000000
+#define MEVT_F_CALLBACK 0x40000000
+#define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF))
+#define MEVT_EVENTPARM(x) ((DWORD)((x)&0xFFFFFFL))
+#define MEVT_SHORTMSG 0
+#define MEVT_TEMPO 1
+#define MEVT_NOP 2
+#define MEVT_LONGMSG ((BYTE)0x80)
+#define MEVT_COMMENT ((BYTE)0x82)
+#define MEVT_VERSION ((BYTE)0x84)
+#define MIDISTRM_ERROR (-2)
+#define MIDIPROP_SET 0x80000000
+#define MIDIPROP_GET 0x40000000
+#define MIDIPROP_TIMEDIV 1
+#define MIDIPROP_TEMPO 2
+#define AUX_MAPPER ((UINT)-1)
+#define AUXCAPS_CDAUDIO 1
+#define AUXCAPS_AUXIN 2
+#define AUXCAPS_VOLUME 1
+#define AUXCAPS_LRVOLUME 2
+#define MIXER_SHORT_NAME_CHARS 16
+#define MIXER_LONG_NAME_CHARS 64
+#define MIXERR_INVALLINE MIXERR_BASE
+#define MIXERR_INVALCONTROL (MIXERR_BASE+1)
+#define MIXERR_INVALVALUE (MIXERR_BASE+2)
+#define MIXERR_LASTERROR (MIXERR_BASE+2)
+#define MIXER_OBJECTF_HANDLE 0x80000000
+#define MIXER_OBJECTF_MIXER 0
+#define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
+#define MIXER_OBJECTF_WAVEOUT 0x10000000
+#define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
+#define MIXER_OBJECTF_WAVEIN 0x20000000
+#define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
+#define MIXER_OBJECTF_MIDIOUT 0x30000000
+#define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
+#define MIXER_OBJECTF_MIDIIN 0x40000000
+#define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
+#define MIXER_OBJECTF_AUX 0x50000000
+#define MIXERLINE_LINEF_ACTIVE 1
+#define MIXERLINE_LINEF_DISCONNECTED 0x8000
+#define MIXERLINE_LINEF_SOURCE 0x80000000
+#define MIXERLINE_COMPONENTTYPE_DST_FIRST 0
+#define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED MIXERLINE_COMPONENTTYPE_DST_FIRST
+#define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST+1)
+#define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST+2)
+#define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST+3)
+#define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST+4)
+#define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST+5)
+#define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST+6)
+#define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST+7)
+#define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST+8)
+#define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST+8)
+#define MIXERLINE_COMPONENTTYPE_SRC_FIRST 0x1000
+#define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED MIXERLINE_COMPONENTTYPE_SRC_FIRST
+#define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST+1)
+#define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST+2)
+#define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST+3)
+#define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST+4)
+#define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST+5)
+#define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST+6)
+#define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST+7)
+#define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST+8)
+#define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST+9)
+#define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST+10)
+#define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST+10)
+#define MIXERLINE_TARGETTYPE_UNDEFINED 0
+#define MIXERLINE_TARGETTYPE_WAVEOUT 1
+#define MIXERLINE_TARGETTYPE_WAVEIN 2
+#define MIXERLINE_TARGETTYPE_MIDIOUT 3
+#define MIXERLINE_TARGETTYPE_MIDIIN 4
+#define MIXERLINE_TARGETTYPE_AUX 5
+#define MIXER_GETLINEINFOF_DESTINATION 0
+#define MIXER_GETLINEINFOF_SOURCE 1
+#define MIXER_GETLINEINFOF_LINEID 2
+#define MIXER_GETLINEINFOF_COMPONENTTYPE 3
+#define MIXER_GETLINEINFOF_TARGETTYPE 4
+#define MIXER_GETLINEINFOF_QUERYMASK 15
+#define MIXERCONTROL_CONTROLF_UNIFORM 1
+#define MIXERCONTROL_CONTROLF_MULTIPLE 1
+#define MIXERCONTROL_CONTROLF_DISABLED 0x80000000
+#define MIXERCONTROL_CT_CLASS_MASK 0xF0000000
+#define MIXERCONTROL_CT_CLASS_CUSTOM 0
+#define MIXERCONTROL_CT_CLASS_METER 0x10000000
+#define MIXERCONTROL_CT_CLASS_SWITCH 0x20000000
+#define MIXERCONTROL_CT_CLASS_NUMBER 0x30000000
+#define MIXERCONTROL_CT_CLASS_SLIDER 0x40000000
+#define MIXERCONTROL_CT_CLASS_FADER 0x50000000
+#define MIXERCONTROL_CT_CLASS_TIME 0x60000000
+#define MIXERCONTROL_CT_CLASS_LIST 0x70000000
+#define MIXERCONTROL_CT_SUBCLASS_MASK 0xF000000
+#define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN 0
+#define MIXERCONTROL_CT_SC_SWITCH_BUTTON 0x1000000
+#define MIXERCONTROL_CT_SC_METER_POLLED 0
+#define MIXERCONTROL_CT_SC_TIME_MICROSECS 0
+#define MIXERCONTROL_CT_SC_TIME_MILLISECS 0x1000000
+#define MIXERCONTROL_CT_SC_LIST_SINGLE 0
+#define MIXERCONTROL_CT_SC_LIST_MULTIPLE 0x1000000
+#define MIXERCONTROL_CT_UNITS_MASK 0xFF0000
+#define MIXERCONTROL_CT_UNITS_CUSTOM 0
+#define MIXERCONTROL_CT_UNITS_BOOLEAN 0x10000
+#define MIXERCONTROL_CT_UNITS_SIGNED 0x20000
+#define MIXERCONTROL_CT_UNITS_UNSIGNED 0x30000
+#define MIXERCONTROL_CT_UNITS_DECIBELS 0x40000
+#define MIXERCONTROL_CT_UNITS_PERCENT 0x50000
+#define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM|MIXERCONTROL_CT_UNITS_CUSTOM)
+#define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER+1)
+#define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER|MIXERCONTROL_CT_SC_METER_POLLED|MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BOOLEAN|MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN+1)
+#define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN+2)
+#define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN+3)
+#define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN+4)
+#define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN+5)
+#define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH|MIXERCONTROL_CT_SC_SWITCH_BUTTON|MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_DECIBELS)
+#define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER|MIXERCONTROL_CT_UNITS_PERCENT)
+#define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER|MIXERCONTROL_CT_UNITS_SIGNED)
+#define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER+1)
+#define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER+2)
+#define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER|MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER+1)
+#define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER+2)
+#define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER+3)
+#define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER+4)
+#define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_SINGLE|MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT+1)
+#define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST|MIXERCONTROL_CT_SC_LIST_MULTIPLE|MIXERCONTROL_CT_UNITS_BOOLEAN)
+#define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT+1)
+#define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MICROSECS|MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME|MIXERCONTROL_CT_SC_TIME_MILLISECS|MIXERCONTROL_CT_UNITS_UNSIGNED)
+#define MIXER_GETLINECONTROLSF_ALL 0
+#define MIXER_GETLINECONTROLSF_ONEBYID 1
+#define MIXER_GETLINECONTROLSF_ONEBYTYPE 2
+#define MIXER_GETLINECONTROLSF_QUERYMASK 15
+#define MIXER_GETCONTROLDETAILSF_VALUE 0
+#define MIXER_GETCONTROLDETAILSF_LISTTEXT 1
+#define MIXER_GETCONTROLDETAILSF_QUERYMASK 15
+#define MIXER_SETCONTROLDETAILSF_VALUE 0
+#define MIXER_SETCONTROLDETAILSF_CUSTOM 1
+#define MIXER_SETCONTROLDETAILSF_QUERYMASK 15
+#define TIMERR_NOERROR 0
+#define TIMERR_NOCANDO (TIMERR_BASE+1)
+#define TIMERR_STRUCT (TIMERR_BASE+33)
+#define TIME_ONESHOT 0
+#define TIME_PERIODIC 1
+#define TIME_CALLBACK_FUNCTION 0
+#define TIME_CALLBACK_EVENT_SET 16
+#define TIME_CALLBACK_EVENT_PULSE 32
+#define JOYERR_NOERROR (0)
+#define JOYERR_PARMS (JOYERR_BASE+5)
+#define JOYERR_NOCANDO (JOYERR_BASE+6)
+#define JOYERR_UNPLUGGED (JOYERR_BASE+7)
+#define JOY_BUTTON1 1
+#define JOY_BUTTON2 2
+#define JOY_BUTTON3 4
+#define JOY_BUTTON4 8
+#define JOY_BUTTON1CHG 256
+#define JOY_BUTTON2CHG 512
+#define JOY_BUTTON3CHG 1024
+#define JOY_BUTTON4CHG 2048
+#define JOY_BUTTON5 257
+#define JOY_BUTTON6 513
+#define JOY_BUTTON7 1025
+#define JOY_BUTTON8 2049
+#define JOY_BUTTON9 256
+#define JOY_BUTTON10 512
+#define JOY_BUTTON11 1024
+#define JOY_BUTTON12 2048
+#define JOY_BUTTON13 4096
+#define JOY_BUTTON14 8192
+#define JOY_BUTTON15 16384
+#define JOY_BUTTON16 32768
+#define JOY_BUTTON17 65536
+#define JOY_BUTTON18 0x20000
+#define JOY_BUTTON19 0x40000
+#define JOY_BUTTON20 0x80000
+#define JOY_BUTTON21 0x100000
+#define JOY_BUTTON22 0x200000
+#define JOY_BUTTON23 0x400000
+#define JOY_BUTTON24 0x800000
+#define JOY_BUTTON25 0x1000000
+#define JOY_BUTTON26 0x2000000
+#define JOY_BUTTON27 0x4000000
+#define JOY_BUTTON28 0x8000000
+#define JOY_BUTTON29 0x10000000
+#define JOY_BUTTON30 0x20000000
+#define JOY_BUTTON31 0x40000000
+#define JOY_BUTTON32 0x80000000
+#define JOY_POVCENTERED ((WORD)-1)
+#define JOY_POVFORWARD 0
+#define JOY_POVRIGHT 9000
+#define JOY_POVBACKWARD 18000
+#define JOY_POVLEFT 27000
+#define JOY_RETURNX 1
+#define JOY_RETURNY 2
+#define JOY_RETURNZ 4l
+#define JOY_RETURNR 8
+#define JOY_RETURNU 16
+#define JOY_RETURNV 32
+#define JOY_RETURNPOV 64
+#define JOY_RETURNBUTTONS 128
+#define JOY_RETURNRAWDATA 256
+#define JOY_RETURNPOVCTS 512
+#define JOY_RETURNCENTERED 1024
+#define JOY_USEDEADZONE 2048
+#define JOY_RETURNALL (JOY_RETURNX|JOY_RETURNY|JOY_RETURNZ|JOY_RETURNR|JOY_RETURNU|JOY_RETURNV|JOY_RETURNPOV|JOY_RETURNBUTTONS)
+#define JOY_CAL_READALWAYS 0x10000
+#define JOY_CAL_READXYONLY 0x20000
+#define JOY_CAL_READ3 0x40000
+#define JOY_CAL_READ4 0x80000
+#define JOY_CAL_READXONLY 0x100000
+#define JOY_CAL_READYONLY 0x200000
+#define JOY_CAL_READ5 0x400000
+#define JOY_CAL_READ6 0x800000
+#define JOY_CAL_READZONLY 0x1000000
+#define JOY_CAL_READRONLY 0x2000000
+#define JOY_CAL_READUONLY 0x4000000
+#define JOY_CAL_READVONLY 0x8000000
+#define JOYSTICKID1 0
+#define JOYSTICKID2 1
+#define JOYCAPS_HASZ 1
+#define JOYCAPS_HASR 2
+#define JOYCAPS_HASU 4
+#define JOYCAPS_HASV 8
+#define JOYCAPS_HASPOV 16
+#define JOYCAPS_POV4DIR 32
+#define JOYCAPS_POVCTS 64
+#define MMIOERR_BASE 256
+#define MMIOERR_FILENOTFOUND (MMIOERR_BASE+1)
+#define MMIOERR_OUTOFMEMORY (MMIOERR_BASE+2)
+#define MMIOERR_CANNOTOPEN (MMIOERR_BASE+3)
+#define MMIOERR_CANNOTCLOSE (MMIOERR_BASE+4)
+#define MMIOERR_CANNOTREAD (MMIOERR_BASE+5)
+#define MMIOERR_CANNOTWRITE (MMIOERR_BASE+6)
+#define MMIOERR_CANNOTSEEK (MMIOERR_BASE+7)
+#define MMIOERR_CANNOTEXPAND (MMIOERR_BASE+8)
+#define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE+9)
+#define MMIOERR_UNBUFFERED (MMIOERR_BASE+10)
+#define MMIOERR_PATHNOTFOUND (MMIOERR_BASE+11)
+#define MMIOERR_ACCESSDENIED (MMIOERR_BASE+12)
+#define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE+13)
+#define MMIOERR_NETWORKERROR (MMIOERR_BASE+14)
+#define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE+15)
+#define MMIOERR_INVALIDFILE (MMIOERR_BASE+16)
+#define CFSEPCHAR '+'
+#define MMIO_RWMODE 3
+#define MMIO_SHAREMODE 0x70
+#define MMIO_CREATE 0x1000
+#define MMIO_PARSE 256
+#define MMIO_DELETE 512
+#define MMIO_EXIST 0x4000
+#define MMIO_ALLOCBUF 0x10000
+#define MMIO_GETTEMP 0x20000
+#define MMIO_DIRTY 0x10000000
+#define MMIO_READ 0
+#define MMIO_WRITE 1
+#define MMIO_READWRITE 2
+#define MMIO_COMPAT 0
+#define MMIO_EXCLUSIVE 16
+#define MMIO_DENYWRITE 32
+#define MMIO_DENYREAD 0x30
+#define MMIO_DENYNONE 64
+#define MMIO_FHOPEN 16
+#define MMIO_EMPTYBUF 16
+#define MMIO_TOUPPER 16
+#define MMIO_INSTALLPROC 0x10000
+#define MMIO_GLOBALPROC 0x10000000
+#define MMIO_REMOVEPROC 0x20000
+#define MMIO_UNICODEPROC 0x1000000
+#define MMIO_FINDPROC 0x40000
+#define MMIO_FINDCHUNK 16
+#define MMIO_FINDRIFF 32
+#define MMIO_FINDLIST 64
+#define MMIO_CREATERIFF 32
+#define MMIO_CREATELIST 64
+#define MMIOM_READ MMIO_READ
+#define MMIOM_WRITE MMIO_WRITE
+#define MMIOM_SEEK 2
+#define MMIOM_OPEN 3
+#define MMIOM_CLOSE 4
+#define MMIOM_WRITEFLUSH 5
+#define MMIOM_RENAME 6
+#define MMIOM_USER 0x8000
+#define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
+#define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
+#define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ')
+#define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ')
+#define MMIO_DEFAULTBUFFER 8192
+#define mmioFOURCC(c0,c1,c2,c3) MAKEFOURCC(c0,c1,c2,c3)
+#define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE+1)
+#define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE+3)
+#define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE+5)
+#define MCIERR_HARDWARE (MCIERR_BASE+6)
+#define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE+7)
+#define MCIERR_OUT_OF_MEMORY (MCIERR_BASE+8)
+#define MCIERR_DEVICE_OPEN (MCIERR_BASE+9)
+#define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE+10)
+#define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE+11)
+#define MCIERR_PARAM_OVERFLOW (MCIERR_BASE+12)
+#define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE+13)
+#define MCIERR_BAD_INTEGER (MCIERR_BASE+14)
+#define MCIERR_PARSER_INTERNAL (MCIERR_BASE+15)
+#define MCIERR_DRIVER_INTERNAL (MCIERR_BASE+16)
+#define MCIERR_MISSING_PARAMETER (MCIERR_BASE+17)
+#define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE+18)
+#define MCIERR_FILE_NOT_FOUND (MCIERR_BASE+19)
+#define MCIERR_DEVICE_NOT_READY (MCIERR_BASE+20)
+#define MCIERR_INTERNAL (MCIERR_BASE+21)
+#define MCIERR_DRIVER (MCIERR_BASE+22)
+#define MCIERR_CANNOT_USE_ALL (MCIERR_BASE+23)
+#define MCIERR_MULTIPLE (MCIERR_BASE+24)
+#define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE+25)
+#define MCIERR_OUTOFRANGE (MCIERR_BASE+26)
+#define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE+28)
+#define MCIERR_FILE_NOT_SAVED (MCIERR_BASE+30)
+#define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE+31)
+#define MCIERR_DEVICE_LOCKED (MCIERR_BASE+32)
+#define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE+33)
+#define MCIERR_BAD_CONSTANT (MCIERR_BASE+34)
+#define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE+35)
+#define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE+36)
+#define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE+37)
+#define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE+38)
+#define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE+39)
+#define MCIERR_INVALID_FILE (MCIERR_BASE+40)
+#define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE+41)
+#define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE+42)
+#define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE+43)
+#define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE+44)
+#define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE+45)
+#define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE+46)
+#define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE+47)
+#define MCIERR_FILENAME_REQUIRED (MCIERR_BASE+48)
+#define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE+49)
+#define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE+50)
+#define MCIERR_GET_CD (MCIERR_BASE+51)
+#define MCIERR_SET_CD (MCIERR_BASE+52)
+#define MCIERR_SET_DRIVE (MCIERR_BASE+53)
+#define MCIERR_DEVICE_LENGTH (MCIERR_BASE+54)
+#define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE+55)
+#define MCIERR_NO_INTEGER (MCIERR_BASE+56)
+#define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE+64)
+#define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE+65)
+#define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE+66)
+#define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE+67)
+#define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE+68)
+#define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE+69)
+#define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE+70)
+#define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE+71)
+#define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE+72)
+#define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE+73)
+#define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE+80)
+#define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE+81)
+#define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE+82)
+#define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE+83)
+#define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE+84)
+#define MCIERR_SEQ_TIMER (MCIERR_BASE+85)
+#define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE+86)
+#define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE+87)
+#define MCIERR_NO_WINDOW (MCIERR_BASE+90)
+#define MCIERR_CREATEWINDOW (MCIERR_BASE+91)
+#define MCIERR_FILE_READ (MCIERR_BASE+92)
+#define MCIERR_FILE_WRITE (MCIERR_BASE+93)
+#define MCIERR_NO_IDENTITY (MCIERR_BASE+94)
+#define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE+256)
+#define MCI_FIRST DRV_MCI_FIRST
+#define MCI_OPEN 0x803
+#define MCI_CLOSE 0x804
+#define MCI_ESCAPE 0x805
+#define MCI_PLAY 0x806
+#define MCI_SEEK 0x807
+#define MCI_STOP 0x808
+#define MCI_PAUSE 0x809
+#define MCI_INFO 0x80A
+#define MCI_GETDEVCAPS 0x80B
+#define MCI_SPIN 0x80C
+#define MCI_SET 0x80D
+#define MCI_STEP 0x80E
+#define MCI_RECORD 0x80F
+#define MCI_SYSINFO 0x810
+#define MCI_BREAK 0x811
+#define MCI_SAVE 0x813
+#define MCI_STATUS 0x814
+#define MCI_CUE 0x830
+#define MCI_REALIZE 0x840
+#define MCI_WINDOW 0x841
+#define MCI_PUT 0x842
+#define MCI_WHERE 0x843
+#define MCI_FREEZE 0x844
+#define MCI_UNFREEZE 0x845
+#define MCI_LOAD 0x850
+#define MCI_CUT 0x851
+#define MCI_COPY 0x852
+#define MCI_PASTE 0x853
+#define MCI_UPDATE 0x854
+#define MCI_RESUME 0x855
+#define MCI_DELETE 0x856
+#define MCI_USER_MESSAGES (DRV_MCI_FIRST+0x400)
+#define MCI_LAST 0xFFF
+#define MCI_ALL_DEVICE_ID ((MCIDEVICEID)-1)
+#define MCI_DEVTYPE_VCR 513
+#define MCI_DEVTYPE_VIDEODISC 514
+#define MCI_DEVTYPE_OVERLAY 515
+#define MCI_DEVTYPE_CD_AUDIO 516
+#define MCI_DEVTYPE_DAT 517
+#define MCI_DEVTYPE_SCANNER 518
+#define MCI_DEVTYPE_ANIMATION 519
+#define MCI_DEVTYPE_DIGITAL_VIDEO 520
+#define MCI_DEVTYPE_OTHER 521
+#define MCI_DEVTYPE_WAVEFORM_AUDIO 522
+#define MCI_DEVTYPE_SEQUENCER 523
+#define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR
+#define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER
+#define MCI_DEVTYPE_FIRST_USER 0x1000
+#define MCI_MODE_NOT_READY (MCI_STRING_OFFSET+12)
+#define MCI_MODE_STOP (MCI_STRING_OFFSET+13)
+#define MCI_MODE_PLAY (MCI_STRING_OFFSET+14)
+#define MCI_MODE_RECORD (MCI_STRING_OFFSET+15)
+#define MCI_MODE_SEEK (MCI_STRING_OFFSET+16)
+#define MCI_MODE_PAUSE (MCI_STRING_OFFSET+17)
+#define MCI_MODE_OPEN (MCI_STRING_OFFSET+18)
+#define MCI_FORMAT_MILLISECONDS 0
+#define MCI_FORMAT_HMS 1
+#define MCI_FORMAT_MSF 2
+#define MCI_FORMAT_FRAMES 3
+#define MCI_FORMAT_SMPTE_24 4
+#define MCI_FORMAT_SMPTE_25 5
+#define MCI_FORMAT_SMPTE_30 6
+#define MCI_FORMAT_SMPTE_30DROP 7
+#define MCI_FORMAT_BYTES 8
+#define MCI_FORMAT_SAMPLES 9
+#define MCI_FORMAT_TMSF 10
+#define MCI_MSF_MINUTE(t) ((BYTE)(t))
+#define MCI_MSF_SECOND(t) ((BYTE)(((WORD)(t))>>8))
+#define MCI_MSF_FRAME(t) ((BYTE)((t)>>16))
+#define MCI_MAKE_MSF(m,s,f) ((DWORD)(((BYTE)(m)|((WORD)(s)<<8))|(((DWORD)(BYTE)(f))<<16)))
+#define MCI_TMSF_TRACK(t) ((BYTE)(t))
+#define MCI_TMSF_MINUTE(t) ((BYTE)(((WORD)(t))>>8))
+#define MCI_TMSF_SECOND(t) ((BYTE)((t)>>16))
+#define MCI_TMSF_FRAME(t) ((BYTE)((t)>>24))
+#define MCI_MAKE_TMSF(t,m,s,f) ((DWORD)(((BYTE)(t)|((WORD)(m)<<8))|(((DWORD)(BYTE)(s)|((WORD)(f)<<8))<<16)))
+#define MCI_HMS_HOUR(t) ((BYTE)(t))
+#define MCI_HMS_MINUTE(t) ((BYTE)(((WORD)(t))>>8))
+#define MCI_HMS_SECOND(t) ((BYTE)((t)>>16))
+#define MCI_MAKE_HMS(h,m,s) ((DWORD)(((BYTE)(h)|((WORD)(m)<<8))|(((DWORD)(BYTE)(s))<<16)))
+#define MCI_NOTIFY_SUCCESSFUL 1
+#define MCI_NOTIFY_SUPERSEDED 2
+#define MCI_NOTIFY_ABORTED 4
+#define MCI_NOTIFY_FAILURE 8
+#define MCI_NOTIFY 1
+#define MCI_WAIT 2
+#define MCI_FROM 4
+#define MCI_TO 8
+#define MCI_TRACK 16
+#define MCI_OPEN_SHAREABLE 256
+#define MCI_OPEN_ELEMENT 512
+#define MCI_OPEN_ALIAS 1024
+#define MCI_OPEN_ELEMENT_ID 2048
+#define MCI_OPEN_TYPE_ID 0x1000
+#define MCI_OPEN_TYPE 0x2000
+#define MCI_SEEK_TO_START 256
+#define MCI_SEEK_TO_END 512
+#define MCI_STATUS_ITEM 256
+#define MCI_STATUS_START 512
+#define MCI_STATUS_LENGTH 1
+#define MCI_STATUS_POSITION 2
+#define MCI_STATUS_NUMBER_OF_TRACKS 3
+#define MCI_STATUS_MODE 4
+#define MCI_STATUS_MEDIA_PRESENT 5
+#define MCI_STATUS_TIME_FORMAT 6
+#define MCI_STATUS_READY 7
+#define MCI_STATUS_CURRENT_TRACK 8
+#define MCI_INFO_PRODUCT 256
+#define MCI_INFO_FILE 512
+#define MCI_INFO_MEDIA_UPC 1024
+#define MCI_INFO_MEDIA_IDENTITY 2048
+#define MCI_INFO_NAME 0x1000
+#define MCI_INFO_COPYRIGHT 0x2000
+#define MCI_GETDEVCAPS_ITEM 256
+#define MCI_GETDEVCAPS_CAN_RECORD 1
+#define MCI_GETDEVCAPS_HAS_AUDIO 2
+#define MCI_GETDEVCAPS_HAS_VIDEO 3
+#define MCI_GETDEVCAPS_DEVICE_TYPE 4
+#define MCI_GETDEVCAPS_USES_FILES 5
+#define MCI_GETDEVCAPS_COMPOUND_DEVICE 6
+#define MCI_GETDEVCAPS_CAN_EJECT 7
+#define MCI_GETDEVCAPS_CAN_PLAY 8
+#define MCI_GETDEVCAPS_CAN_SAVE 9
+#define MCI_SYSINFO_QUANTITY 256
+#define MCI_SYSINFO_OPEN 512
+#define MCI_SYSINFO_NAME 1024
+#define MCI_SYSINFO_INSTALLNAME 2048
+#define MCI_SET_DOOR_OPEN 256
+#define MCI_SET_DOOR_CLOSED 512
+#define MCI_SET_TIME_FORMAT 1024
+#define MCI_SET_AUDIO 2048
+#define MCI_SET_VIDEO 0x1000
+#define MCI_SET_ON 0x2000
+#define MCI_SET_OFF 0x4000
+#define MCI_SET_AUDIO_ALL 0
+#define MCI_SET_AUDIO_LEFT 1
+#define MCI_SET_AUDIO_RIGHT 2
+#define MCI_BREAK_KEY 256
+#define MCI_BREAK_HWND 512
+#define MCI_BREAK_OFF 1024
+#define MCI_RECORD_INSERT 256
+#define MCI_RECORD_OVERWRITE 512
+#define MCI_SAVE_FILE 256
+#define MCI_LOAD_FILE 256
+#define MCI_VD_MODE_PARK (MCI_VD_OFFSET+1)
+#define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET+2)
+#define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET+3)
+#define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET+4)
+#define MCI_VD_FORMAT_TRACK 0x4001
+#define MCI_VD_PLAY_REVERSE 0x10000
+#define MCI_VD_PLAY_FAST 0x20000
+#define MCI_VD_PLAY_SPEED 0x40000
+#define MCI_VD_PLAY_SCAN 0x80000
+#define MCI_VD_PLAY_SLOW 0x100000
+#define MCI_VD_SEEK_REVERSE 0x10000
+#define MCI_VD_STATUS_SPEED 0x4002
+#define MCI_VD_STATUS_FORWARD 0x4003
+#define MCI_VD_STATUS_MEDIA_TYPE 0x4004
+#define MCI_VD_STATUS_SIDE 0x4005
+#define MCI_VD_STATUS_DISC_SIZE 0x4006
+#define MCI_VD_GETDEVCAPS_CLV 0x10000
+#define MCI_VD_GETDEVCAPS_CAV 0x20000
+#define MCI_VD_SPIN_UP 0x10000
+#define MCI_VD_SPIN_DOWN 0x20000
+#define MCI_VD_GETDEVCAPS_CAN_REVERSE 0x4002
+#define MCI_VD_GETDEVCAPS_FAST_RATE 0x4003
+#define MCI_VD_GETDEVCAPS_SLOW_RATE 0x4004
+#define MCI_VD_GETDEVCAPS_NORMAL_RATE 0x4005
+#define MCI_VD_STEP_FRAMES 0x10000
+#define MCI_VD_STEP_REVERSE 0x20000
+#define MCI_VD_ESCAPE_STRING 256
+#define MCI_CDA_STATUS_TYPE_TRACK 0x4001
+#define MCI_CDA_TRACK_AUDIO MCI_CD_OFFSET
+#define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET+1)
+#define MCI_WAVE_PCM MCI_WAVE_OFFSET
+#define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET+1)
+#define MCI_WAVE_OPEN_BUFFER 0x10000
+#define MCI_WAVE_SET_FORMATTAG 0x10000
+#define MCI_WAVE_SET_CHANNELS 0x20000
+#define MCI_WAVE_SET_SAMPLESPERSEC 0x40000
+#define MCI_WAVE_SET_AVGBYTESPERSEC 0x80000
+#define MCI_WAVE_SET_BLOCKALIGN 0x100000
+#define MCI_WAVE_SET_BITSPERSAMPLE 0x200000
+#define MCI_WAVE_INPUT 0x400000
+#define MCI_WAVE_OUTPUT 0x800000
+#define MCI_WAVE_STATUS_FORMATTAG 0x4001
+#define MCI_WAVE_STATUS_CHANNELS 0x4002
+#define MCI_WAVE_STATUS_SAMPLESPERSEC 0x4003
+#define MCI_WAVE_STATUS_AVGBYTESPERSEC 0x4004
+#define MCI_WAVE_STATUS_BLOCKALIGN 0x4005
+#define MCI_WAVE_STATUS_BITSPERSAMPLE 0x4006
+#define MCI_WAVE_STATUS_LEVEL 0x4007
+#define MCI_WAVE_SET_ANYINPUT 0x4000000
+#define MCI_WAVE_SET_ANYOUTPUT 0x8000000
+#define MCI_WAVE_GETDEVCAPS_INPUTS 0x4001
+#define MCI_WAVE_GETDEVCAPS_OUTPUTS 0x4002
+#define MCI_SEQ_DIV_PPQN MCI_SEQ_OFFSET
+#define MCI_SEQ_DIV_SMPTE_24 (MCI_SEQ_OFFSET+1)
+#define MCI_SEQ_DIV_SMPTE_25 (MCI_SEQ_OFFSET+2)
+#define MCI_SEQ_DIV_SMPTE_30DROP (MCI_SEQ_OFFSET+3)
+#define MCI_SEQ_DIV_SMPTE_30 (MCI_SEQ_OFFSET+4)
+#define MCI_SEQ_FORMAT_SONGPTR 0x4001
+#define MCI_SEQ_FILE 0x4002
+#define MCI_SEQ_MIDI 0x4003
+#define MCI_SEQ_SMPTE 0x4004
+#define MCI_SEQ_NONE 65533
+#define MCI_SEQ_MAPPER 65535
+#define MCI_SEQ_STATUS_TEMPO 0x4002
+#define MCI_SEQ_STATUS_PORT 0x4003
+#define MCI_SEQ_STATUS_SLAVE 0x4007
+#define MCI_SEQ_STATUS_MASTER 0x4008
+#define MCI_SEQ_STATUS_OFFSET 0x4009
+#define MCI_SEQ_STATUS_DIVTYPE 0x400A
+#define MCI_SEQ_STATUS_NAME 0x400B
+#define MCI_SEQ_STATUS_COPYRIGHT 0x400C
+#define MCI_SEQ_SET_TEMPO 0x10000
+#define MCI_SEQ_SET_PORT 0x20000
+#define MCI_SEQ_SET_SLAVE 0x40000
+#define MCI_SEQ_SET_MASTER 0x80000
+#define MCI_SEQ_SET_OFFSET 0x1000000
+#define MCI_ANIM_OPEN_WS 0x10000
+#define MCI_ANIM_OPEN_PARENT 0x20000
+#define MCI_ANIM_OPEN_NOSTATIC 0x40000
+#define MCI_ANIM_PLAY_SPEED 0x10000
+#define MCI_ANIM_PLAY_REVERSE 0x20000
+#define MCI_ANIM_PLAY_FAST 0x40000
+#define MCI_ANIM_PLAY_SLOW 0x80000
+#define MCI_ANIM_PLAY_SCAN 0x100000
+#define MCI_ANIM_STEP_REVERSE 0x10000
+#define MCI_ANIM_STEP_FRAMES 0x20000
+#define MCI_ANIM_STATUS_SPEED 0x4001
+#define MCI_ANIM_STATUS_FORWARD 0x4002
+#define MCI_ANIM_STATUS_HWND 0x4003
+#define MCI_ANIM_STATUS_HPAL 0x4004
+#define MCI_ANIM_STATUS_STRETCH 0x4005
+#define MCI_ANIM_INFO_TEXT 0x10000
+#define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x4001
+#define MCI_ANIM_GETDEVCAPS_FAST_RATE 0x4002
+#define MCI_ANIM_GETDEVCAPS_SLOW_RATE 0x4003
+#define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x4004
+#define MCI_ANIM_GETDEVCAPS_PALETTES 0x4006
+#define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x4007
+#define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x4008
+#define MCI_ANIM_REALIZE_NORM 0x10000
+#define MCI_ANIM_REALIZE_BKGD 0x20000
+#define MCI_ANIM_WINDOW_HWND 0x10000
+#define MCI_ANIM_WINDOW_STATE 0x40000
+#define MCI_ANIM_WINDOW_TEXT 0x80000
+#define MCI_ANIM_WINDOW_ENABLE_STRETCH 0x100000
+#define MCI_ANIM_WINDOW_DISABLE_STRETCH 0x200000
+#define MCI_ANIM_WINDOW_DEFAULT 0xL
+#define MCI_ANIM_RECT 0x10000
+#define MCI_ANIM_PUT_SOURCE 0x20000
+#define MCI_ANIM_PUT_DESTINATION 0x40000
+#define MCI_ANIM_WHERE_SOURCE 0x20000
+#define MCI_ANIM_WHERE_DESTINATION 0x40000
+#define MCI_ANIM_UPDATE_HDC 0x20000
+#define MCI_OVLY_OPEN_WS 0x10000
+#define MCI_OVLY_OPEN_PARENT 0x20000
+#define MCI_OVLY_STATUS_HWND 0x4001
+#define MCI_OVLY_STATUS_STRETCH 0x4002
+#define MCI_OVLY_INFO_TEXT 0x10000
+#define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x4001
+#define MCI_OVLY_GETDEVCAPS_CAN_FREEZE 0x4002
+#define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x4003
+#define MCI_OVLY_WINDOW_HWND 0x10000
+#define MCI_OVLY_WINDOW_STATE 0x40000
+#define MCI_OVLY_WINDOW_TEXT 0x80000
+#define MCI_OVLY_WINDOW_ENABLE_STRETCH 0x100000
+#define MCI_OVLY_WINDOW_DISABLE_STRETCH 0x200000
+#define MCI_OVLY_WINDOW_DEFAULT 0xL
+#define MCI_OVLY_RECT 0x10000
+#define MCI_OVLY_PUT_SOURCE 0x20000
+#define MCI_OVLY_PUT_DESTINATION 0x40000
+#define MCI_OVLY_PUT_FRAME 0x80000
+#define MCI_OVLY_PUT_VIDEO 0x100000
+#define MCI_OVLY_WHERE_SOURCE 0x20000
+#define MCI_OVLY_WHERE_DESTINATION 0x40000
+#define MCI_OVLY_WHERE_FRAME 0x80000
+#define MCI_OVLY_WHERE_VIDEO 0x100000
+#define NEWTRANSPARENT 3
+#define QUERYROPSUPPORT 40
+#define SELECTDIB 41
+#define DIBINDEX(n) MAKELONG((n),0x10FF)
+#define SC_SCREENSAVE 0xF140
+#define CAPS1 94
+#define C1_TRANSPARENT 1
+#ifndef SEEK_SET
+#define SEEK_SET 0
+#endif
+#ifndef SEEK_CUR
+#define SEEK_CUR 1
+#endif
+#ifndef SEEK_END
+#define SEEK_END 2
+#endif
+
+typedef DWORD MCIERROR;
+typedef UINT MCIDEVICEID;
+typedef UINT(CALLBACK *YIELDPROC)(MCIDEVICEID,DWORD);
+typedef UINT MMVERSION;
+typedef UINT MMRESULT;
+typedef struct mmtime_tag {
+ UINT wType;
+ union {
+ DWORD ms;
+ DWORD sample;
+ DWORD cb;
+ DWORD ticks;
+ struct {
+ BYTE hour;
+ BYTE min;
+ BYTE sec;
+ BYTE frame;
+ BYTE fps;
+ BYTE dummy;
+ BYTE pad[2];
+ } smpte;
+ struct {
+ DWORD songptrpos;
+ } midi;
+ } u;
+} MMTIME,*PMMTIME,*LPMMTIME;
+DECLARE_HANDLE(HDRVR);
+typedef struct tagDRVCONFIGINFO {
+ DWORD dwDCISize;
+ LPCWSTR lpszDCISectionName;
+ LPCWSTR lpszDCIAliasName;
+} DRVCONFIGINFO,*PDRVCONFIGINFO,*LPDRVCONFIGINFO;
+typedef struct DRVCONFIGINFOEX {
+ DWORD dwDCISize;
+ LPCWSTR lpszDCISectionName;
+ LPCWSTR lpszDCIAliasName;
+ DWORD dnDevNode;
+} DRVCONFIGINFOEX,*PDRVCONFIGINFOEX,*LPDRVCONFIGINFOEX;
+typedef LRESULT(CALLBACK* DRIVERPROC)(DWORD,HDRVR,UINT,LPARAM,LPARAM);
+typedef void (CALLBACK DRVCALLBACK)(HDRVR,UINT,DWORD,DWORD,DWORD);
+typedef DRVCALLBACK *LPDRVCALLBACK;
+typedef DRVCALLBACK *PDRVCALLBACK;
+DECLARE_HANDLE(HWAVE);
+DECLARE_HANDLE(HWAVEIN);
+DECLARE_HANDLE(HWAVEOUT);
+typedef HWAVEIN *LPHWAVEIN;
+typedef HWAVEOUT *LPHWAVEOUT;
+typedef DRVCALLBACK WAVECALLBACK;
+typedef WAVECALLBACK *LPWAVECALLBACK;
+typedef struct wavehdr_tag {
+ LPSTR lpData;
+ DWORD dwBufferLength;
+ DWORD dwBytesRecorded;
+ DWORD dwUser;
+ DWORD dwFlags;
+ DWORD dwLoops;
+ struct wavehdr_tag *lpNext;
+ DWORD reserved;
+} WAVEHDR,*PWAVEHDR,*LPWAVEHDR;
+typedef struct tagWAVEOUTCAPSA {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ CHAR szPname[MAXPNAMELEN];
+ DWORD dwFormats;
+ WORD wChannels;
+ WORD wReserved1;
+ DWORD dwSupport;
+} WAVEOUTCAPSA,*PWAVEOUTCAPSA,*LPWAVEOUTCAPSA;
+typedef struct tagWAVEOUTCAPSW {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ WCHAR szPname[MAXPNAMELEN];
+ DWORD dwFormats;
+ WORD wChannels;
+ WORD wReserved1;
+ DWORD dwSupport;
+} WAVEOUTCAPSW,*PWAVEOUTCAPSW,*LPWAVEOUTCAPSW;
+typedef struct tagWAVEINCAPSA {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ CHAR szPname[MAXPNAMELEN];
+ DWORD dwFormats;
+ WORD wChannels;
+ WORD wReserved1;
+} WAVEINCAPSA,*PWAVEINCAPSA,*LPWAVEINCAPSA;
+typedef struct tagWAVEINCAPSW {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ WCHAR szPname[MAXPNAMELEN];
+ DWORD dwFormats;
+ WORD wChannels;
+ WORD wReserved1;
+} WAVEINCAPSW,*PWAVEINCAPSW,*LPWAVEINCAPSW;
+typedef struct waveformat_tag {
+ WORD wFormatTag;
+ WORD nChannels;
+ DWORD nSamplesPerSec;
+ DWORD nAvgBytesPerSec;
+ WORD nBlockAlign;
+} WAVEFORMAT,*PWAVEFORMAT,*LPWAVEFORMAT;
+typedef struct pcmwaveformat_tag {
+ WAVEFORMAT wf;
+ WORD wBitsPerSample;
+} PCMWAVEFORMAT, *PPCMWAVEFORMAT,*LPPCMWAVEFORMAT;
+#ifndef _WAVEFORMATEX_
+#define _WAVEFORMATEX_
+typedef struct tWAVEFORMATEX {
+ WORD wFormatTag;
+ WORD nChannels;
+ DWORD nSamplesPerSec;
+ DWORD nAvgBytesPerSec;
+ WORD nBlockAlign;
+ WORD wBitsPerSample;
+ WORD cbSize;
+} WAVEFORMATEX,*PWAVEFORMATEX,*LPWAVEFORMATEX;
+typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
+#endif
+DECLARE_HANDLE(HMIDI);
+DECLARE_HANDLE(HMIDIIN);
+DECLARE_HANDLE(HMIDIOUT);
+DECLARE_HANDLE(HMIDISTRM);
+typedef HMIDI *LPHMIDI;
+typedef HMIDIIN *LPHMIDIIN;
+typedef HMIDIOUT *LPHMIDIOUT;
+typedef HMIDISTRM *LPHMIDISTRM;
+typedef DRVCALLBACK MIDICALLBACK;
+typedef MIDICALLBACK *LPMIDICALLBACK;
+typedef WORD PATCHARRAY[MIDIPATCHSIZE];
+typedef WORD *LPPATCHARRAY;
+typedef WORD KEYARRAY[MIDIPATCHSIZE];
+typedef WORD *LPKEYARRAY;
+typedef struct tagMIDIOUTCAPSA {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ CHAR szPname[MAXPNAMELEN];
+ WORD wTechnology;
+ WORD wVoices;
+ WORD wNotes;
+ WORD wChannelMask;
+ DWORD dwSupport;
+} MIDIOUTCAPSA,*PMIDIOUTCAPSA,*LPMIDIOUTCAPSA;
+typedef struct tagMIDIOUTCAPSW {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ WCHAR szPname[MAXPNAMELEN];
+ WORD wTechnology;
+ WORD wVoices;
+ WORD wNotes;
+ WORD wChannelMask;
+ DWORD dwSupport;
+} MIDIOUTCAPSW,*PMIDIOUTCAPSW,*LPMIDIOUTCAPSW;
+typedef struct tagMIDIINCAPSA {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ CHAR szPname[MAXPNAMELEN];
+ DWORD dwSupport;
+} MIDIINCAPSA,*PMIDIINCAPSA,*LPMIDIINCAPSA;
+typedef struct tagMIDIINCAPSW {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ WCHAR szPname[MAXPNAMELEN];
+ DWORD dwSupport;
+} MIDIINCAPSW,*PMIDIINCAPSW,*NPMIDIINCAPSW,*LPMIDIINCAPSW;
+typedef struct midihdr_tag {
+ LPSTR lpData;
+ DWORD dwBufferLength;
+ DWORD dwBytesRecorded;
+ DWORD dwUser;
+ DWORD dwFlags;
+ struct midihdr_tag *lpNext;
+ DWORD reserved;
+ DWORD dwOffset;
+ DWORD dwReserved[8];
+} MIDIHDR,*PMIDIHDR,*LPMIDIHDR;
+typedef struct midievent_tag {
+ DWORD dwDeltaTime;
+ DWORD dwStreamID;
+ DWORD dwEvent;
+ DWORD dwParms[1];
+} MIDIEVENT;
+typedef struct midistrmbuffver_tag {
+ DWORD dwVersion;
+ DWORD dwMid;
+ DWORD dwOEMVersion;
+} MIDISTRMBUFFVER;
+typedef struct midiproptimediv_tag {
+ DWORD cbStruct;
+ DWORD dwTimeDiv;
+} MIDIPROPTIMEDIV,*LPMIDIPROPTIMEDIV;
+typedef struct midiproptempo_tag {
+ DWORD cbStruct;
+ DWORD dwTempo;
+} MIDIPROPTEMPO,*LPMIDIPROPTEMPO;
+typedef struct tagAUXCAPSA {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ CHAR szPname[MAXPNAMELEN];
+ WORD wTechnology;
+ WORD wReserved1;
+ DWORD dwSupport;
+} AUXCAPSA,*PAUXCAPSA,*LPAUXCAPSA;
+typedef struct tagAUXCAPSW {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ WCHAR szPname[MAXPNAMELEN];
+ WORD wTechnology;
+ WORD wReserved1;
+ DWORD dwSupport;
+} AUXCAPSW,*PAUXCAPSW,*LPAUXCAPSW;
+DECLARE_HANDLE(HMIXEROBJ);
+typedef HMIXEROBJ *LPHMIXEROBJ;
+DECLARE_HANDLE(HMIXER);
+typedef HMIXER *LPHMIXER;
+typedef struct tagMIXERCAPSA {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ CHAR szPname[MAXPNAMELEN];
+ DWORD fdwSupport;
+ DWORD cDestinations;
+} MIXERCAPSA,*PMIXERCAPSA,*LPMIXERCAPSA;
+typedef struct tagMIXERCAPSW {
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ WCHAR szPname[MAXPNAMELEN];
+ DWORD fdwSupport;
+ DWORD cDestinations;
+} MIXERCAPSW,*PMIXERCAPSW,*LPMIXERCAPSW;
+typedef struct tagMIXERLINEA {
+ DWORD cbStruct;
+ DWORD dwDestination;
+ DWORD dwSource;
+ DWORD dwLineID;
+ DWORD fdwLine;
+ DWORD dwUser;
+ DWORD dwComponentType;
+ DWORD cChannels;
+ DWORD cConnections;
+ DWORD cControls;
+ CHAR szShortName[MIXER_SHORT_NAME_CHARS];
+ CHAR szName[MIXER_LONG_NAME_CHARS];
+ struct {
+ DWORD dwType;
+ DWORD dwDeviceID;
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ CHAR szPname[MAXPNAMELEN];
+ } Target;
+} MIXERLINEA,*PMIXERLINEA,*LPMIXERLINEA;
+typedef struct tagMIXERLINEW {
+ DWORD cbStruct;
+ DWORD dwDestination;
+ DWORD dwSource;
+ DWORD dwLineID;
+ DWORD fdwLine;
+ DWORD dwUser;
+ DWORD dwComponentType;
+ DWORD cChannels;
+ DWORD cConnections;
+ DWORD cControls;
+ WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
+ WCHAR szName[MIXER_LONG_NAME_CHARS];
+ struct {
+ DWORD dwType;
+ DWORD dwDeviceID;
+ WORD wMid;
+ WORD wPid;
+ MMVERSION vDriverVersion;
+ WCHAR szPname[MAXPNAMELEN];
+ } Target;
+} MIXERLINEW,*PMIXERLINEW,*LPMIXERLINEW;
+typedef struct tagMIXERCONTROLA {
+ DWORD cbStruct;
+ DWORD dwControlID;
+ DWORD dwControlType;
+ DWORD fdwControl;
+ DWORD cMultipleItems;
+ CHAR szShortName[MIXER_SHORT_NAME_CHARS];
+ CHAR szName[MIXER_LONG_NAME_CHARS];
+ union {
+ struct {
+ LONG lMinimum;
+ LONG lMaximum;
+ }_STRUCT_NAME(s);
+ struct {
+ DWORD dwMinimum;
+ DWORD dwMaximum;
+ }_STRUCT_NAME(s1);
+ DWORD dwReserved[6];
+ } Bounds;
+ union {
+ DWORD cSteps;
+ DWORD cbCustomData;
+ DWORD dwReserved[6];
+ } Metrics;
+} MIXERCONTROLA,*PMIXERCONTROLA,*LPMIXERCONTROLA;
+typedef struct tagMIXERCONTROLW {
+ DWORD cbStruct;
+ DWORD dwControlID;
+ DWORD dwControlType;
+ DWORD fdwControl;
+ DWORD cMultipleItems;
+ WCHAR szShortName[MIXER_SHORT_NAME_CHARS];
+ WCHAR szName[MIXER_LONG_NAME_CHARS];
+ union {
+ struct {
+ LONG lMinimum;
+ LONG lMaximum;
+ }_STRUCT_NAME(s);
+ struct {
+ DWORD dwMinimum;
+ DWORD dwMaximum;
+ }_STRUCT_NAME(s1);
+ DWORD dwReserved[6];
+ } Bounds;
+ union {
+ DWORD cSteps;
+ DWORD cbCustomData;
+ DWORD dwReserved[6];
+ } Metrics;
+} MIXERCONTROLW,*PMIXERCONTROLW,*LPMIXERCONTROLW;
+typedef struct tagMIXERLINECONTROLSA {
+ DWORD cbStruct;
+ DWORD dwLineID;
+ union {
+ DWORD dwControlID;
+ DWORD dwControlType;
+ } DUMMYUNIONNAME;
+ DWORD cControls;
+ DWORD cbmxctrl;
+ LPMIXERCONTROLA pamxctrl;
+} MIXERLINECONTROLSA,*PMIXERLINECONTROLSA,*LPMIXERLINECONTROLSA;
+typedef struct tagMIXERLINECONTROLSW {
+ DWORD cbStruct;
+ DWORD dwLineID;
+ union {
+ DWORD dwControlID;
+ DWORD dwControlType;
+ } DUMMYUNIONNAME;
+ DWORD cControls;
+ DWORD cbmxctrl;
+ LPMIXERCONTROLW pamxctrl;
+} MIXERLINECONTROLSW,*PMIXERLINECONTROLSW,*LPMIXERLINECONTROLSW;
+typedef struct tMIXERCONTROLDETAILS {
+ DWORD cbStruct;
+ DWORD dwControlID;
+ DWORD cChannels;
+ union {
+ HWND hwndOwner;
+ DWORD cMultipleItems;
+ } DUMMYUNIONNAME;
+ DWORD cbDetails;
+ PVOID paDetails;
+} MIXERCONTROLDETAILS,*PMIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
+typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
+ DWORD dwParam1;
+ DWORD dwParam2;
+ CHAR szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXTA,*PMIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
+typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW {
+ DWORD dwParam1;
+ DWORD dwParam2;
+ WCHAR szName[MIXER_LONG_NAME_CHARS];
+} MIXERCONTROLDETAILS_LISTTEXTW,*PMIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
+typedef struct tMIXERCONTROLDETAILS_BOOLEAN {
+ LONG fValue;
+} MIXERCONTROLDETAILS_BOOLEAN,*PMIXERCONTROLDETAILS_BOOLEAN,*LPMIXERCONTROLDETAILS_BOOLEAN;
+typedef struct tMIXERCONTROLDETAILS_SIGNED {
+ LONG lValue;
+} MIXERCONTROLDETAILS_SIGNED,*PMIXERCONTROLDETAILS_SIGNED,*LPMIXERCONTROLDETAILS_SIGNED;
+typedef struct tMIXERCONTROLDETAILS_UNSIGNED {
+ DWORD dwValue;
+} MIXERCONTROLDETAILS_UNSIGNED,*PMIXERCONTROLDETAILS_UNSIGNED,*LPMIXERCONTROLDETAILS_UNSIGNED;
+typedef void(CALLBACK TIMECALLBACK)(UINT,UINT,DWORD,DWORD,DWORD);
+typedef TIMECALLBACK *LPTIMECALLBACK;
+typedef struct timecaps_tag {
+ UINT wPeriodMin;
+ UINT wPeriodMax;
+} TIMECAPS,*PTIMECAPS,*LPTIMECAPS;
+typedef struct tagJOYCAPSA {
+ WORD wMid;
+ WORD wPid;
+ CHAR szPname[MAXPNAMELEN];
+ UINT wXmin;
+ UINT wXmax;
+ UINT wYmin;
+ UINT wYmax;
+ UINT wZmin;
+ UINT wZmax;
+ UINT wNumButtons;
+ UINT wPeriodMin;
+ UINT wPeriodMax;
+ UINT wRmin;
+ UINT wRmax;
+ UINT wUmin;
+ UINT wUmax;
+ UINT wVmin;
+ UINT wVmax;
+ UINT wCaps;
+ UINT wMaxAxes;
+ UINT wNumAxes;
+ UINT wMaxButtons;
+ CHAR szRegKey[MAXPNAMELEN];
+ CHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+} JOYCAPSA,*PJOYCAPSA,*LPJOYCAPSA;
+typedef struct tagJOYCAPSW {
+ WORD wMid;
+ WORD wPid;
+ WCHAR szPname[MAXPNAMELEN];
+ UINT wXmin;
+ UINT wXmax;
+ UINT wYmin;
+ UINT wYmax;
+ UINT wZmin;
+ UINT wZmax;
+ UINT wNumButtons;
+ UINT wPeriodMin;
+ UINT wPeriodMax;
+ UINT wRmin;
+ UINT wRmax;
+ UINT wUmin;
+ UINT wUmax;
+ UINT wVmin;
+ UINT wVmax;
+ UINT wCaps;
+ UINT wMaxAxes;
+ UINT wNumAxes;
+ UINT wMaxButtons;
+ WCHAR szRegKey[MAXPNAMELEN];
+ WCHAR szOEMVxD[MAX_JOYSTICKOEMVXDNAME];
+} JOYCAPSW,*PJOYCAPSW,*LPJOYCAPSW;
+typedef struct joyinfo_tag {
+ UINT wXpos;
+ UINT wYpos;
+ UINT wZpos;
+ UINT wButtons;
+} JOYINFO,*PJOYINFO,*LPJOYINFO;
+typedef struct joyinfoex_tag {
+ DWORD dwSize;
+ DWORD dwFlags;
+ DWORD dwXpos;
+ DWORD dwYpos;
+ DWORD dwZpos;
+ DWORD dwRpos;
+ DWORD dwUpos;
+ DWORD dwVpos;
+ DWORD dwButtons;
+ DWORD dwButtonNumber;
+ DWORD dwPOV;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} JOYINFOEX,*PJOYINFOEX,*LPJOYINFOEX;
+typedef DWORD FOURCC;
+typedef char *HPSTR;
+DECLARE_HANDLE(HMMIO);
+typedef LRESULT (CALLBACK MMIOPROC)(LPSTR,UINT,LPARAM,LPARAM);
+typedef MMIOPROC *LPMMIOPROC;
+typedef struct _MMIOINFO {
+ DWORD dwFlags;
+ FOURCC fccIOProc;
+ LPMMIOPROC pIOProc;
+ UINT wErrorRet;
+ HTASK htask;
+ LONG cchBuffer;
+ HPSTR pchBuffer;
+ HPSTR pchNext;
+ HPSTR pchEndRead;
+ HPSTR pchEndWrite;
+ LONG lBufOffset;
+ LONG lDiskOffset;
+ DWORD adwInfo[3];
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+ HMMIO hmmio;
+} MMIOINFO,*PMMIOINFO,*LPMMIOINFO;
+typedef const MMIOINFO *LPCMMIOINFO;
+typedef struct _MMCKINFO {
+ FOURCC ckid;
+ DWORD cksize;
+ FOURCC fccType;
+ DWORD dwDataOffset;
+ DWORD dwFlags;
+} MMCKINFO,*PMMCKINFO,*LPMMCKINFO;
+typedef const MMCKINFO *LPCMMCKINFO;
+typedef struct tagMCI_GENERIC_PARMS {
+ DWORD dwCallback;
+} MCI_GENERIC_PARMS,*PMCI_GENERIC_PARMS,*LPMCI_GENERIC_PARMS;
+typedef struct tagMCI_OPEN_PARMSA {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+} MCI_OPEN_PARMSA,*PMCI_OPEN_PARMSA,*LPMCI_OPEN_PARMSA;
+typedef struct tagMCI_OPEN_PARMSW {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCWSTR lpstrDeviceType;
+ LPCWSTR lpstrElementName;
+ LPCWSTR lpstrAlias;
+} MCI_OPEN_PARMSW,*PMCI_OPEN_PARMSW,*LPMCI_OPEN_PARMSW;
+typedef struct tagMCI_PLAY_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+} MCI_PLAY_PARMS,*PMCI_PLAY_PARMS,*LPMCI_PLAY_PARMS;
+typedef struct tagMCI_SEEK_PARMS {
+ DWORD dwCallback;
+ DWORD dwTo;
+} MCI_SEEK_PARMS, *PMCI_SEEK_PARMS,*LPMCI_SEEK_PARMS;
+typedef struct tagMCI_STATUS_PARMS {
+ DWORD dwCallback;
+ DWORD dwReturn;
+ DWORD dwItem;
+ DWORD dwTrack;
+} MCI_STATUS_PARMS,*PMCI_STATUS_PARMS,*LPMCI_STATUS_PARMS;
+typedef struct tagMCI_INFO_PARMSA {
+ DWORD dwCallback;
+ LPSTR lpstrReturn;
+ DWORD dwRetSize;
+} MCI_INFO_PARMSA,*LPMCI_INFO_PARMSA;
+typedef struct tagMCI_INFO_PARMSW {
+ DWORD dwCallback;
+ LPWSTR lpstrReturn;
+ DWORD dwRetSize;
+} MCI_INFO_PARMSW,*LPMCI_INFO_PARMSW;
+typedef struct tagMCI_GETDEVCAPS_PARMS {
+ DWORD dwCallback;
+ DWORD dwReturn;
+ DWORD dwItem;
+} MCI_GETDEVCAPS_PARMS,*PMCI_GETDEVCAPS_PARMS,*LPMCI_GETDEVCAPS_PARMS;
+typedef struct tagMCI_SYSINFO_PARMSA {
+ DWORD dwCallback;
+ LPSTR lpstrReturn;
+ DWORD dwRetSize;
+ DWORD dwNumber;
+ UINT wDeviceType;
+} MCI_SYSINFO_PARMSA,*PMCI_SYSINFO_PARMSA,*LPMCI_SYSINFO_PARMSA;
+typedef struct tagMCI_SYSINFO_PARMSW {
+ DWORD dwCallback;
+ LPWSTR lpstrReturn;
+ DWORD dwRetSize;
+ DWORD dwNumber;
+ UINT wDeviceType;
+} MCI_SYSINFO_PARMSW,*PMCI_SYSINFO_PARMSW,*LPMCI_SYSINFO_PARMSW;
+typedef struct tagMCI_SET_PARMS {
+ DWORD dwCallback;
+ DWORD dwTimeFormat;
+ DWORD dwAudio;
+} MCI_SET_PARMS,*PMCI_SET_PARMS,*LPMCI_SET_PARMS;
+typedef struct tagMCI_BREAK_PARMS {
+ DWORD dwCallback;
+ int nVirtKey;
+ HWND hwndBreak;
+} MCI_BREAK_PARMS,*PMCI_BREAK_PARMS,*LPMCI_BREAK_PARMS;
+typedef struct tagMCI_SAVE_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+} MCI_SAVE_PARMSA,*PMCI_SAVE_PARMSA,*LPMCI_SAVE_PARMSA;
+typedef struct tagMCI_SAVE_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpfilename;
+} MCI_SAVE_PARMSW,*PMCI_SAVE_PARMSW,*LPMCI_SAVE_PARMSW;
+typedef struct tagMCI_LOAD_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+} MCI_LOAD_PARMSA,*PMCI_LOAD_PARMSA,*LPMCI_LOAD_PARMSA;
+typedef struct tagMCI_LOAD_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpfilename;
+} MCI_LOAD_PARMSW,*PMCI_LOAD_PARMSW,*LPMCI_LOAD_PARMSW;
+typedef struct tagMCI_RECORD_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+} MCI_RECORD_PARMS,*LPMCI_RECORD_PARMS;
+typedef struct tagMCI_VD_PLAY_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+ DWORD dwSpeed;
+} MCI_VD_PLAY_PARMS,*PMCI_VD_PLAY_PARMS,*LPMCI_VD_PLAY_PARMS;
+typedef struct tagMCI_VD_STEP_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrames;
+} MCI_VD_STEP_PARMS,*PMCI_VD_STEP_PARMS,*LPMCI_VD_STEP_PARMS;
+typedef struct tagMCI_VD_ESCAPE_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpstrCommand;
+} MCI_VD_ESCAPE_PARMSA,*PMCI_VD_ESCAPE_PARMSA,*LPMCI_VD_ESCAPE_PARMSA;
+typedef struct tagMCI_VD_ESCAPE_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpstrCommand;
+} MCI_VD_ESCAPE_PARMSW,*PMCI_VD_ESCAPE_PARMSW,*LPMCI_VD_ESCAPE_PARMSW;
+typedef struct tagMCI_WAVE_OPEN_PARMSA {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMSA,*PMCI_WAVE_OPEN_PARMSA,*LPMCI_WAVE_OPEN_PARMSA;
+typedef struct tagMCI_WAVE_OPEN_PARMSW {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCWSTR lpstrDeviceType;
+ LPCWSTR lpstrElementName;
+ LPCWSTR lpstrAlias;
+ DWORD dwBufferSeconds;
+} MCI_WAVE_OPEN_PARMSW,*PMCI_WAVE_OPEN_PARMSW,*LPMCI_WAVE_OPEN_PARMSW;
+typedef struct tagMCI_WAVE_DELETE_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+} MCI_WAVE_DELETE_PARMS, *PMCI_WAVE_DELETE_PARMS,*LPMCI_WAVE_DELETE_PARMS;
+typedef struct tagMCI_WAVE_SET_PARMS {
+ DWORD dwCallback;
+ DWORD dwTimeFormat;
+ DWORD dwAudio;
+ UINT wInput;
+ UINT wOutput;
+ WORD wFormatTag;
+ WORD wReserved2;
+ WORD nChannels;
+ WORD wReserved3;
+ DWORD nSamplesPerSec;
+ DWORD nAvgBytesPerSec;
+ WORD nBlockAlign;
+ WORD wReserved4;
+ WORD wBitsPerSample;
+ WORD wReserved5;
+} MCI_WAVE_SET_PARMS,*PMCI_WAVE_SET_PARMS,*LPMCI_WAVE_SET_PARMS;
+
+LRESULT WINAPI CloseDriver(HDRVR,LONG,LONG);
+HDRVR WINAPI OpenDriver(LPCWSTR,LPCWSTR,LONG);
+LRESULT WINAPI SendDriverMessage(HDRVR,UINT,LONG,LONG);
+HMODULE WINAPI DrvGetModuleHandle(HDRVR);
+HMODULE WINAPI GetDriverModuleHandle(HDRVR);
+LRESULT WINAPI DefDriverProc(DWORD,HDRVR,UINT,LPARAM,LPARAM);
+UINT WINAPI mmsystemGetVersion(void);
+#define OutputDebugStr OutputDebugString
+BOOL WINAPI sndPlaySoundA(LPCSTR,UINT);
+BOOL WINAPI sndPlaySoundW(LPCWSTR,UINT);
+BOOL WINAPI PlaySoundA(LPCSTR,HMODULE,DWORD);
+BOOL WINAPI PlaySoundW(LPCWSTR,HMODULE,DWORD);
+UINT WINAPI waveOutGetNumDevs(void);
+MMRESULT WINAPI waveOutGetDevCapsA(UINT,LPWAVEOUTCAPSA,UINT);
+MMRESULT WINAPI waveOutGetDevCapsW(UINT,LPWAVEOUTCAPSW,UINT);
+MMRESULT WINAPI waveOutGetVolume(HWAVEOUT,PDWORD);
+MMRESULT WINAPI waveOutSetVolume(HWAVEOUT,DWORD);
+MMRESULT WINAPI waveOutGetErrorTextA(MMRESULT,LPSTR,UINT);
+MMRESULT WINAPI waveOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
+MMRESULT WINAPI waveOutOpen(LPHWAVEOUT,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
+MMRESULT WINAPI waveOutClose(HWAVEOUT);
+MMRESULT WINAPI waveOutPrepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveOutUnprepareHeader(HWAVEOUT,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveOutWrite(HWAVEOUT,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveOutPause(HWAVEOUT);
+MMRESULT WINAPI waveOutRestart(HWAVEOUT);
+MMRESULT WINAPI waveOutReset(HWAVEOUT);
+MMRESULT WINAPI waveOutBreakLoop(HWAVEOUT);
+MMRESULT WINAPI waveOutGetPosition(HWAVEOUT,LPMMTIME,UINT);
+MMRESULT WINAPI waveOutGetPitch(HWAVEOUT,PDWORD);
+MMRESULT WINAPI waveOutSetPitch(HWAVEOUT,DWORD);
+MMRESULT WINAPI waveOutGetPlaybackRate(HWAVEOUT,PDWORD);
+MMRESULT WINAPI waveOutSetPlaybackRate(HWAVEOUT,DWORD);
+MMRESULT WINAPI waveOutGetID(HWAVEOUT,LPUINT);
+MMRESULT WINAPI waveOutMessage(HWAVEOUT,UINT,DWORD,DWORD);
+UINT WINAPI waveInGetNumDevs(void);
+MMRESULT WINAPI waveInGetDevCapsA(UINT,LPWAVEINCAPSA,UINT);
+MMRESULT WINAPI waveInGetDevCapsW(UINT,LPWAVEINCAPSW,UINT);
+MMRESULT WINAPI waveInGetErrorTextA(MMRESULT,LPSTR,UINT);
+MMRESULT WINAPI waveInGetErrorTextW(MMRESULT,LPWSTR,UINT);
+MMRESULT WINAPI waveInOpen(LPHWAVEIN,UINT,LPCWAVEFORMATEX,DWORD,DWORD,DWORD);
+MMRESULT WINAPI waveInClose(HWAVEIN);
+MMRESULT WINAPI waveInPrepareHeader(HWAVEIN,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveInUnprepareHeader(HWAVEIN,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveInAddBuffer(HWAVEIN,LPWAVEHDR,UINT);
+MMRESULT WINAPI waveInStart(HWAVEIN);
+MMRESULT WINAPI waveInStop(HWAVEIN);
+MMRESULT WINAPI waveInReset(HWAVEIN);
+MMRESULT WINAPI waveInGetPosition(HWAVEIN,LPMMTIME,UINT);
+MMRESULT WINAPI waveInGetID(HWAVEIN,LPUINT);
+MMRESULT WINAPI waveInMessage(HWAVEIN,UINT,DWORD,DWORD);
+UINT WINAPI midiOutGetNumDevs(void);
+MMRESULT WINAPI midiStreamOpen(LPHMIDISTRM,LPUINT,DWORD,DWORD,DWORD,DWORD);
+MMRESULT WINAPI midiStreamClose(HMIDISTRM);
+MMRESULT WINAPI midiStreamProperty(HMIDISTRM,LPBYTE,DWORD);
+MMRESULT WINAPI midiStreamPosition(HMIDISTRM,LPMMTIME,UINT);
+MMRESULT WINAPI midiStreamOut(HMIDISTRM,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiStreamPause(HMIDISTRM);
+MMRESULT WINAPI midiStreamRestart(HMIDISTRM);
+MMRESULT WINAPI midiStreamStop(HMIDISTRM);
+MMRESULT WINAPI midiConnect(HMIDI,HMIDIOUT,PVOID);
+MMRESULT WINAPI midiDisconnect(HMIDI,HMIDIOUT,PVOID);
+MMRESULT WINAPI midiOutGetDevCapsA(UINT,LPMIDIOUTCAPSA,UINT);
+MMRESULT WINAPI midiOutGetDevCapsW(UINT,LPMIDIOUTCAPSW,UINT);
+MMRESULT WINAPI midiOutGetVolume(HMIDIOUT,PDWORD);
+MMRESULT WINAPI midiOutSetVolume(HMIDIOUT,DWORD);
+MMRESULT WINAPI midiOutGetErrorTextA(MMRESULT,LPSTR,UINT);
+MMRESULT WINAPI midiOutGetErrorTextW(MMRESULT,LPWSTR,UINT);
+MMRESULT WINAPI midiOutOpen(LPHMIDIOUT,UINT,DWORD,DWORD,DWORD);
+MMRESULT WINAPI midiOutClose(HMIDIOUT);
+MMRESULT WINAPI midiOutPrepareHeader(HMIDIOUT,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiOutUnprepareHeader(HMIDIOUT,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiOutShortMsg(HMIDIOUT,DWORD);
+MMRESULT WINAPI midiOutLongMsg(HMIDIOUT,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiOutReset(HMIDIOUT);
+MMRESULT WINAPI midiOutCachePatches(HMIDIOUT,UINT,LPWORD,UINT);
+MMRESULT WINAPI midiOutCacheDrumPatches(HMIDIOUT,UINT,LPWORD,UINT);
+MMRESULT WINAPI midiOutGetID(HMIDIOUT,LPUINT);
+MMRESULT WINAPI midiOutMessage(HMIDIOUT,UINT,DWORD,DWORD);
+UINT WINAPI midiInGetNumDevs(void);
+MMRESULT WINAPI midiInGetDevCapsA(UINT,LPMIDIINCAPSA,UINT);
+MMRESULT WINAPI midiInGetDevCapsW(UINT,LPMIDIINCAPSW,UINT);
+MMRESULT WINAPI midiInGetErrorTextA(MMRESULT,LPSTR,UINT);
+MMRESULT WINAPI midiInGetErrorTextW(MMRESULT,LPWSTR,UINT);
+MMRESULT WINAPI midiInOpen(LPHMIDIIN,UINT,DWORD,DWORD,DWORD);
+MMRESULT WINAPI midiInClose(HMIDIIN);
+MMRESULT WINAPI midiInPrepareHeader(HMIDIIN,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiInUnprepareHeader(HMIDIIN,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiInAddBuffer(HMIDIIN,LPMIDIHDR,UINT);
+MMRESULT WINAPI midiInStart(HMIDIIN);
+MMRESULT WINAPI midiInStop(HMIDIIN);
+MMRESULT WINAPI midiInReset(HMIDIIN);
+MMRESULT WINAPI midiInGetID(HMIDIIN,LPUINT);
+MMRESULT WINAPI midiInMessage(HMIDIIN,UINT,DWORD,DWORD);
+UINT WINAPI auxGetNumDevs(void);
+MMRESULT WINAPI auxGetDevCapsA(UINT,LPAUXCAPSA,UINT);
+MMRESULT WINAPI auxGetDevCapsW(UINT,LPAUXCAPSW,UINT);
+MMRESULT WINAPI auxSetVolume(UINT,DWORD);
+MMRESULT WINAPI auxGetVolume(UINT,PDWORD);
+MMRESULT WINAPI auxOutMessage(UINT,UINT,DWORD,DWORD);
+UINT WINAPI mixerGetNumDevs(void);
+MMRESULT WINAPI mixerGetDevCapsA(UINT,LPMIXERCAPSA,UINT);
+MMRESULT WINAPI mixerGetDevCapsW(UINT,LPMIXERCAPSW,UINT);
+MMRESULT WINAPI mixerOpen(LPHMIXER,UINT,DWORD,DWORD,DWORD);
+MMRESULT WINAPI mixerClose(HMIXER);
+DWORD WINAPI mixerMessage(HMIXER,UINT,DWORD,DWORD);
+MMRESULT WINAPI mixerGetLineInfoA(HMIXEROBJ,LPMIXERLINEA,DWORD);
+MMRESULT WINAPI mixerGetLineInfoW(HMIXEROBJ,LPMIXERLINEW,DWORD);
+MMRESULT WINAPI mixerGetID(HMIXEROBJ,PUINT,DWORD);
+MMRESULT WINAPI mixerGetLineControlsA(HMIXEROBJ,LPMIXERLINECONTROLSA,DWORD);
+MMRESULT WINAPI mixerGetLineControlsW(HMIXEROBJ,LPMIXERLINECONTROLSW,DWORD);
+MMRESULT WINAPI mixerGetControlDetailsA(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+MMRESULT WINAPI mixerGetControlDetailsW(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+MMRESULT WINAPI mixerSetControlDetails(HMIXEROBJ,LPMIXERCONTROLDETAILS,DWORD);
+MMRESULT WINAPI timeGetSystemTime(LPMMTIME,UINT);
+DWORD WINAPI timeGetTime(void);
+MMRESULT WINAPI timeSetEvent(UINT,UINT,LPTIMECALLBACK,DWORD,UINT);
+MMRESULT WINAPI timeKillEvent(UINT);
+MMRESULT WINAPI timeGetDevCaps(LPTIMECAPS,UINT);
+MMRESULT WINAPI timeBeginPeriod(UINT);
+MMRESULT WINAPI timeEndPeriod(UINT);
+UINT WINAPI joyGetNumDevs(void);
+MMRESULT WINAPI joyGetDevCapsA(UINT,LPJOYCAPSA,UINT);
+MMRESULT WINAPI joyGetDevCapsW(UINT,LPJOYCAPSW,UINT);
+MMRESULT WINAPI joyGetPos(UINT,LPJOYINFO);
+MMRESULT WINAPI joyGetPosEx(UINT,LPJOYINFOEX);
+MMRESULT WINAPI joyGetThreshold(UINT,LPUINT);
+MMRESULT WINAPI joyReleaseCapture(UINT);
+MMRESULT WINAPI joySetCapture(HWND,UINT,UINT,BOOL);
+MMRESULT WINAPI joySetThreshold(UINT,UINT);
+FOURCC WINAPI mmioStringToFOURCCA(LPCSTR,UINT);
+FOURCC WINAPI mmioStringToFOURCCW(LPCWSTR,UINT);
+LPMMIOPROC WINAPI mmioInstallIOProcA(FOURCC,LPMMIOPROC,DWORD);
+LPMMIOPROC WINAPI mmioInstallIOProcW(FOURCC,LPMMIOPROC,DWORD);
+HMMIO WINAPI mmioOpenA(LPSTR,LPMMIOINFO,DWORD);
+HMMIO WINAPI mmioOpenW(LPWSTR,LPMMIOINFO,DWORD);
+MMRESULT WINAPI mmioRenameA(LPCSTR,LPCSTR,LPCMMIOINFO,DWORD);
+MMRESULT WINAPI mmioRenameW(LPCWSTR,LPCWSTR,LPCMMIOINFO,DWORD);
+MMRESULT WINAPI mmioClose(HMMIO,UINT);
+LONG WINAPI mmioRead(HMMIO,HPSTR,LONG);
+LONG WINAPI mmioWrite(HMMIO,LPCSTR,LONG);
+LONG WINAPI mmioSeek(HMMIO,LONG,int);
+MMRESULT WINAPI mmioGetInfo(HMMIO,LPMMIOINFO,UINT);
+MMRESULT WINAPI mmioSetInfo(HMMIO,LPCMMIOINFO,UINT);
+MMRESULT WINAPI mmioSetBuffer(HMMIO,LPSTR,LONG,UINT);
+MMRESULT WINAPI mmioFlush(HMMIO,UINT);
+MMRESULT WINAPI mmioAdvance(HMMIO,LPMMIOINFO,UINT);
+LRESULT WINAPI mmioSendMessage(HMMIO,UINT,LPARAM,LPARAM);
+MMRESULT WINAPI mmioDescend(HMMIO,LPMMCKINFO,const MMCKINFO*,UINT);
+MMRESULT WINAPI mmioAscend(HMMIO,LPMMCKINFO,UINT);
+MMRESULT WINAPI mmioCreateChunk(HMMIO,LPMMCKINFO,UINT);
+MCIERROR WINAPI mciSendCommandA(MCIDEVICEID,UINT,DWORD,DWORD);
+MCIERROR WINAPI mciSendCommandW(MCIDEVICEID,UINT,DWORD,DWORD);
+MCIERROR WINAPI mciSendStringA(LPCSTR,LPSTR,UINT,HWND);
+MCIERROR WINAPI mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND);
+MCIDEVICEID WINAPI mciGetDeviceIDA(LPCSTR);
+MCIDEVICEID WINAPI mciGetDeviceIDW(LPCWSTR);
+MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDA(DWORD,LPCSTR);
+MCIDEVICEID WINAPI mciGetDeviceIDFromElementIDW(DWORD,LPCWSTR);
+BOOL WINAPI mciGetErrorStringA(MCIERROR,LPSTR,UINT);
+BOOL WINAPI mciGetErrorStringW(MCIERROR,LPWSTR,UINT);
+BOOL WINAPI mciSetYieldProc(MCIDEVICEID,YIELDPROC,DWORD);
+HTASK WINAPI mciGetCreatorTask(MCIDEVICEID);
+YIELDPROC WINAPI mciGetYieldProc(MCIDEVICEID,PDWORD);
+
+typedef struct tagMCI_SEQ_SET_PARMS {
+ DWORD dwCallback;
+ DWORD dwTimeFormat;
+ DWORD dwAudio;
+ DWORD dwTempo;
+ DWORD dwPort;
+ DWORD dwSlave;
+ DWORD dwMaster;
+ DWORD dwOffset;
+} MCI_SEQ_SET_PARMS,*PMCI_SEQ_SET_PARMS,*LPMCI_SEQ_SET_PARMS;
+typedef struct tagMCI_ANIM_OPEN_PARMSA {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+} MCI_ANIM_OPEN_PARMSA,*PMCI_ANIM_OPEN_PARMSA,*LPMCI_ANIM_OPEN_PARMSA;
+typedef struct tagMCI_ANIM_OPEN_PARMSW {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCWSTR lpstrDeviceType;
+ LPCWSTR lpstrElementName;
+ LPCWSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+} MCI_ANIM_OPEN_PARMSW,*PMCI_ANIM_OPEN_PARMSW,*LPMCI_ANIM_OPEN_PARMSW;
+typedef struct tagMCI_ANIM_PLAY_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrom;
+ DWORD dwTo;
+ DWORD dwSpeed;
+} MCI_ANIM_PLAY_PARMS,*PMCI_ANIM_PLAY_PARMS,*LPMCI_ANIM_PLAY_PARMS;
+typedef struct tagMCI_ANIM_STEP_PARMS {
+ DWORD dwCallback;
+ DWORD dwFrames;
+} MCI_ANIM_STEP_PARMS,*PMCI_ANIM_STEP_PARMS,*LPMCI_ANIM_STEP_PARMS;
+typedef struct tagMCI_ANIM_WINDOW_PARMSA {
+ DWORD dwCallback;
+ HWND hWnd;
+ UINT nCmdShow;
+ LPCSTR lpstrText;
+} MCI_ANIM_WINDOW_PARMSA,*PMCI_ANIM_WINDOW_PARMSA,*LPMCI_ANIM_WINDOW_PARMSA;
+typedef struct tagMCI_ANIM_WINDOW_PARMSW {
+ DWORD dwCallback;
+ HWND hWnd;
+ UINT nCmdShow;
+ LPCWSTR lpstrText;
+} MCI_ANIM_WINDOW_PARMSW,*PMCI_ANIM_WINDOW_PARMSW,*LPMCI_ANIM_WINDOW_PARMSW;
+typedef struct tagMCI_ANIM_RECT_PARMS {
+ DWORD dwCallback;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+} MCI_ANIM_RECT_PARMS,*PMCI_ANIM_RECT_PARMS,*LPMCI_ANIM_RECT_PARMS;
+typedef struct tagMCI_ANIM_UPDATE_PARMS {
+ DWORD dwCallback;
+ RECT rc;
+ HDC hDC;
+} MCI_ANIM_UPDATE_PARMS,*PMCI_ANIM_UPDATE_PARMS,*LPMCI_ANIM_UPDATE_PARMS;
+typedef struct tagMCI_OVLY_OPEN_PARMSA {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCSTR lpstrDeviceType;
+ LPCSTR lpstrElementName;
+ LPCSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+} MCI_OVLY_OPEN_PARMSA,*PMCI_OVLY_OPEN_PARMSA,*LPMCI_OVLY_OPEN_PARMSA;
+typedef struct tagMCI_OVLY_OPEN_PARMSW {
+ DWORD dwCallback;
+ MCIDEVICEID wDeviceID;
+ LPCWSTR lpstrDeviceType;
+ LPCWSTR lpstrElementName;
+ LPCWSTR lpstrAlias;
+ DWORD dwStyle;
+ HWND hWndParent;
+} MCI_OVLY_OPEN_PARMSW,*PMCI_OVLY_OPEN_PARMSW,*LPMCI_OVLY_OPEN_PARMSW;
+typedef struct tagMCI_OVLY_WINDOW_PARMSA {
+ DWORD dwCallback;
+ HWND hWnd;
+ UINT nCmdShow;
+ LPCSTR lpstrText;
+} MCI_OVLY_WINDOW_PARMSA,*PMCI_OVLY_WINDOW_PARMSA,*LPMCI_OVLY_WINDOW_PARMSA;
+typedef struct tagMCI_OVLY_WINDOW_PARMSW {
+ DWORD dwCallback;
+ HWND hWnd;
+ UINT nCmdShow;
+ LPCWSTR lpstrText;
+} MCI_OVLY_WINDOW_PARMSW,*PMCI_OVLY_WINDOW_PARMSW,*LPMCI_OVLY_WINDOW_PARMSW;
+typedef struct tagMCI_OVLY_RECT_PARMS {
+ DWORD dwCallback;
+#ifdef MCI_USE_OFFEXT
+ POINT ptOffset;
+ POINT ptExtent;
+#else
+ RECT rc;
+#endif
+} MCI_OVLY_RECT_PARMS,*PMCI_OVLY_RECT_PARMS,*LPMCI_OVLY_RECT_PARMS;
+typedef struct tagMCI_OVLY_SAVE_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_SAVE_PARMSA,*PMCI_OVLY_SAVE_PARMSA,*LPMCI_OVLY_SAVE_PARMSA;
+typedef struct tagMCI_OVLY_SAVE_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_SAVE_PARMSW,*PMCI_OVLY_SAVE_PARMSW,*LPMCI_OVLY_SAVE_PARMSW;
+typedef struct tagMCI_OVLY_LOAD_PARMSA {
+ DWORD dwCallback;
+ LPCSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_LOAD_PARMSA,*PMCI_OVLY_LOAD_PARMSA,*LPMCI_OVLY_LOAD_PARMSA;
+typedef struct tagMCI_OVLY_LOAD_PARMSW {
+ DWORD dwCallback;
+ LPCWSTR lpfilename;
+ RECT rc;
+} MCI_OVLY_LOAD_PARMSW,*PMCI_OVLY_LOAD_PARMSW,*LPMCI_OVLY_LOAD_PARMSW;
+
+#ifdef UNICODE
+typedef WAVEOUTCAPSW WAVEOUTCAPS,*PWAVEOUTCAPS,*LPWAVEOUTCAPS;
+typedef WAVEINCAPSW WAVEINCAPS,*PWAVEINCAPS,*LPWAVEINCAPS;
+typedef MIDIOUTCAPSW MIDIOUTCAPS,*PMIDIOUTCAPS,*LPMIDIOUTCAPS;
+typedef MIDIINCAPSW MIDIINCAPS,*PMIDIINCAPS,*LPMIDIINCAPS;
+typedef AUXCAPSW AUXCAPS,*PAUXCAPS,*LPAUXCAPS;
+typedef MIXERCAPSW MIXERCAPS,*PMIXERCAPS,*LPMIXERCAPS;
+typedef MIXERLINEW MIXERLINE,*PMIXERLINE,*LPMIXERLINE;
+typedef MIXERCONTROLA MIXERCONTROL,*PMIXERCONTROL,*LPMIXERCONTROL;
+typedef MIXERLINECONTROLSW MIXERLINECONTROLS,*PMIXERLINECONTROLS,*LPMIXERLINECONTROLS;
+typedef MIXERCONTROLDETAILS_LISTTEXTW MIXERCONTROLDETAILS_LISTTEXT,*PMIXERCONTROLDETAILS_LISTTEXT,*LPMIXERCONTROLDETAILS_LISTTEXT;
+typedef JOYCAPSW JOYCAPS,*PJOYCAPS,*LPJOYCAPS;
+typedef MCI_OPEN_PARMSW MCI_OPEN_PARMS,*PMCI_OPEN_PARMS,*LPMCI_OPEN_PARMS;
+typedef MCI_INFO_PARMSW MCI_INFO_PARMS,*LPMCI_INFO_PARMS;
+typedef MCI_SYSINFO_PARMSW MCI_SYSINFO_PARMS,*PMCI_SYSINFO_PARMS,*LPMCI_SYSINFO_PARMS;
+typedef MCI_SAVE_PARMSW MCI_SAVE_PARMS,*PMCI_SAVE_PARMS,*LPMCI_SAVE_PARMS;
+typedef MCI_LOAD_PARMSW MCI_LOAD_PARMS,*PMCI_LOAD_PARMS,*LPMCI_LOAD_PARMS;
+typedef MCI_VD_ESCAPE_PARMSW MCI_VD_ESCAPE_PARMS,*PMCI_VD_ESCAPE_PARMS,*LPMCI_VD_ESCAPE_PARMS;
+typedef MCI_WAVE_OPEN_PARMSW MCI_WAVE_OPEN_PARMS,*PMCI_WAVE_OPEN_PARMS,*LPMCI_WAVE_OPEN_PARMS;
+typedef MCI_ANIM_OPEN_PARMSW MCI_ANIM_OPEN_PARMS,*PMCI_ANIM_OPEN_PARMS,*LPMCI_ANIM_OPEN_PARMS;
+typedef MCI_ANIM_WINDOW_PARMSW MCI_ANIM_WINDOW_PARMS,*PMCI_ANIM_WINDOW_PARMS,*LPMCI_ANIM_WINDOW_PARMS;
+typedef MCI_OVLY_OPEN_PARMSW MCI_OVLY_OPEN_PARMS,*PMCI_OVLY_OPEN_PARMS,*LPMCI_OVLY_OPEN_PARMS;
+typedef MCI_OVLY_WINDOW_PARMSW MCI_OVLY_WINDOW_PARMS,*PMCI_OVLY_WINDOW_PARMS,*LPMCI_OVLY_WINDOW_PARMS;
+typedef MCI_OVLY_SAVE_PARMSW MCI_OVLY_SAVE_PARMS,*PMCI_OVLY_SAVE_PARMS,*LPMCI_OVLY_SAVE_PARMS;
+#define sndPlaySound sndPlaySoundW
+#define PlaySound PlaySoundW
+#define waveOutGetDevCaps waveOutGetDevCapsW
+#define waveOutGetErrorText waveOutGetErrorTextW
+#define waveInGetDevCaps waveInGetDevCapsW
+#define waveInGetErrorText waveInGetErrorTextW
+#define midiOutGetDevCaps midiOutGetDevCapsW
+#define midiOutGetErrorText midiOutGetErrorTextW
+#define midiInGetDevCaps midiInGetDevCapsW
+#define midiInGetErrorText midiInGetErrorTextW
+#define auxGetDevCaps auxGetDevCapsW
+#define mixerGetDevCaps mixerGetDevCapsW
+#define mixerGetLineInfo mixerGetLineInfoW
+#define mixerGetLineControls mixerGetLineControlsW
+#define mixerGetControlDetails mixerGetControlDetailsW
+#define joyGetDevCaps joyGetDevCapsW
+#define mmioInstallIOProc mmioInstallIOProcW
+#define mmioStringToFOURCC mmioStringToFOURCCW
+#define mmioOpen mmioOpenW
+#define mmioRename mmioRenameW
+#define mciSendCommand mciSendCommandW
+#define mciSendString mciSendStringW
+#define mciGetDeviceID mciGetDeviceIDW
+#define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDW
+#define mciGetErrorString mciGetErrorStringW
+#else
+typedef WAVEOUTCAPSA WAVEOUTCAPS,*PWAVEOUTCAPS,*LPWAVEOUTCAPS;
+typedef WAVEINCAPSA WAVEINCAPS,*PWAVEINCAPS,*LPWAVEINCAPS;
+typedef MIDIOUTCAPSA MIDIOUTCAPS,*PMIDIOUTCAPS,*LPMIDIOUTCAPS;
+typedef MIDIINCAPSA MIDIINCAPS,*PMIDIINCAPS,*LPMIDIINCAPS;
+typedef AUXCAPSA AUXCAPS,*PAUXCAPS,*LPAUXCAPS;
+typedef MIXERCAPSA MIXERCAPS,*PMIXERCAPS,*LPMIXERCAPS;
+typedef MIXERLINEA MIXERLINE,*PMIXERLINE,*LPMIXERLINE;
+typedef MIXERCONTROLA MIXERCONTROL,*PMIXERCONTROL,*LPMIXERCONTROL;
+typedef MIXERLINECONTROLSA MIXERLINECONTROLS,*PMIXERLINECONTROLS,*LPMIXERLINECONTROLS;
+typedef MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT,*PMIXERCONTROLDETAILS_LISTTEXT,*LPMIXERCONTROLDETAILS_LISTTEXT;
+typedef JOYCAPSA JOYCAPS,*PJOYCAPS,*LPJOYCAPS;
+typedef MCI_OPEN_PARMSA MCI_OPEN_PARMS,*PMCI_OPEN_PARMS,*LPMCI_OPEN_PARMS;
+typedef MCI_INFO_PARMSA MCI_INFO_PARMS,*LPMCI_INFO_PARMS;
+typedef MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS,*PMCI_SYSINFO_PARMS,*LPMCI_SYSINFO_PARMS;
+typedef MCI_SAVE_PARMSA MCI_SAVE_PARMS,*PMCI_SAVE_PARMS,*LPMCI_SAVE_PARMS;
+typedef MCI_LOAD_PARMSA MCI_LOAD_PARMS,*PMCI_LOAD_PARMS,*LPMCI_LOAD_PARMS;
+typedef MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS,*PMCI_VD_ESCAPE_PARMS,*LPMCI_VD_ESCAPE_PARMS;
+typedef MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS,*PMCI_WAVE_OPEN_PARMS,*LPMCI_WAVE_OPEN_PARMS;
+typedef MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS,*PMCI_ANIM_OPEN_PARMS,*LPMCI_ANIM_OPEN_PARMS;
+typedef MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS,*PMCI_ANIM_WINDOW_PARMS,*LPMCI_ANIM_WINDOW_PARMS;
+typedef MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS,*PMCI_OVLY_OPEN_PARMS,*LPMCI_OVLY_OPEN_PARMS;
+typedef MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS,*PMCI_OVLY_WINDOW_PARMS,*LPMCI_OVLY_WINDOW_PARMS;
+typedef MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS,*PMCI_OVLY_SAVE_PARMS,*LPMCI_OVLY_SAVE_PARMS;
+#define sndPlaySound sndPlaySoundA
+#define PlaySound PlaySoundA
+#define waveOutGetDevCaps waveOutGetDevCapsA
+#define waveOutGetErrorText waveOutGetErrorTextA
+#define waveInGetDevCaps waveInGetDevCapsA
+#define waveInGetErrorText waveInGetErrorTextA
+#define midiOutGetDevCaps midiOutGetDevCapsA
+#define midiOutGetErrorText midiOutGetErrorTextA
+#define midiInGetDevCaps midiInGetDevCapsA
+#define midiInGetErrorText midiInGetErrorTextA
+#define auxGetDevCaps auxGetDevCapsA
+#define mixerGetDevCaps mixerGetDevCapsA
+#define mixerGetLineInfo mixerGetLineInfoA
+#define mixerGetLineControls mixerGetLineControlsA
+#define mixerGetControlDetails mixerGetControlDetailsA
+#define joyGetDevCaps joyGetDevCapsA
+#define mmioInstallIOProc mmioInstallIOProcA
+#define mmioStringToFOURCC mmioStringToFOURCCA
+#define mmioOpen mmioOpenA
+#define mmioRename mmioRenameA
+#define mciSendCommand mciSendCommandA
+#define mciSendString mciSendStringA
+#define mciGetDeviceID mciGetDeviceIDA
+#define mciGetDeviceIDFromElementID mciGetDeviceIDFromElementIDA
+#define mciGetErrorString mciGetErrorStringA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#pragma pack(pop)
+#endif
diff --git a/winsup/w32api/include/nb30.h b/winsup/w32api/include/nb30.h
new file mode 100644
index 000000000..c12b94355
--- /dev/null
+++ b/winsup/w32api/include/nb30.h
@@ -0,0 +1,182 @@
+#ifndef _NB30_H
+#define _NB30_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define NCBNAMSZ 16
+#define MAX_LANA 254
+#define NAME_FLAGS_MASK 0x87
+#define GROUP_NAME 0x80
+#define UNIQUE_NAME 0x00
+#define REGISTERING 0x00
+#define REGISTERED 0x04
+#define DEREGISTERED 0x05
+#define DUPLICATE 0x06
+#define DUPLICATE_DEREG 0x07
+#define LISTEN_OUTSTANDING 0x01
+#define CALL_PENDING 0x02
+#define SESSION_ESTABLISHED 0x03
+#define HANGUP_PENDING 0x04
+#define HANGUP_COMPLETE 0x05
+#define SESSION_ABORTED 0x06
+#define ALL_TRANSPORTS "M\0\0\0"
+#define MS_NBF "MNBF"
+#define NCBCALL 0x10
+#define NCBLISTEN 0x11
+#define NCBHANGUP 0x12
+#define NCBSEND 0x14
+#define NCBRECV 0x15
+#define NCBRECVANY 0x16
+#define NCBCHAINSEND 0x17
+#define NCBDGSEND 0x20
+#define NCBDGRECV 0x21
+#define NCBDGSENDBC 0x22
+#define NCBDGRECVBC 0x23
+#define NCBADDNAME 0x30
+#define NCBDELNAME 0x31
+#define NCBRESET 0x32
+#define NCBASTAT 0x33
+#define NCBSSTAT 0x34
+#define NCBCANCEL 0x35
+#define NCBADDGRNAME 0x36
+#define NCBENUM 0x37
+#define NCBUNLINK 0x70
+#define NCBSENDNA 0x71
+#define NCBCHAINSENDNA 0x72
+#define NCBLANSTALERT 0x73
+#define NCBACTION 0x77
+#define NCBFINDNAME 0x78
+#define NCBTRACE 0x79
+#define ASYNCH 0x80
+#define NRC_GOODRET 0x00
+#define NRC_BUFLEN 0x01
+#define NRC_ILLCMD 0x03
+#define NRC_CMDTMO 0x05
+#define NRC_INCOMP 0x06
+#define NRC_BADDR 0x07
+#define NRC_SNUMOUT 0x08
+#define NRC_NORES 0x09
+#define NRC_SCLOSED 0x0a
+#define NRC_CMDCAN 0x0b
+#define NRC_DUPNAME 0x0d
+#define NRC_NAMTFUL 0x0e
+#define NRC_ACTSES 0x0f
+#define NRC_LOCTFUL 0x11
+#define NRC_REMTFUL 0x12
+#define NRC_ILLNN 0x13
+#define NRC_NOCALL 0x14
+#define NRC_NOWILD 0x15
+#define NRC_INUSE 0x16
+#define NRC_NAMERR 0x17
+#define NRC_SABORT 0x18
+#define NRC_NAMCONF 0x19
+#define NRC_IFBUSY 0x21
+#define NRC_TOOMANY 0x22
+#define NRC_BRIDGE 0x23
+#define NRC_CANOCCR 0x24
+#define NRC_CANCEL 0x26
+#define NRC_DUPENV 0x30
+#define NRC_ENVNOTDEF 0x34
+#define NRC_OSRESNOTAV 0x35
+#define NRC_MAXAPPS 0x36
+#define NRC_NOSAPS 0x37
+#define NRC_NORESOURCES 0x38
+#define NRC_INVADDRESS 0x39
+#define NRC_INVDDID 0x3B
+#define NRC_LOCKFAIL 0x3C
+#define NRC_OPENERR 0x3f
+#define NRC_SYSTEM 0x40
+#define NRC_PENDING 0xff
+#define NCB_POST void CALLBACK
+typedef struct _ACTION_HEADER {
+ ULONG transport_id;
+ USHORT action_code;
+ USHORT reserved;
+} ACTION_HEADER,*PACTION_HEADER;
+typedef struct _ADAPTER_STATUS {
+ UCHAR adapter_address[6];
+ UCHAR rev_major;
+ UCHAR reserved0;
+ UCHAR adapter_type;
+ UCHAR rev_minor;
+ WORD duration;
+ WORD frmr_recv;
+ WORD frmr_xmit;
+ WORD iframe_recv_err;
+ WORD xmit_aborts;
+ DWORD xmit_success;
+ DWORD recv_success;
+ WORD iframe_xmit_err;
+ WORD recv_buff_unavail;
+ WORD t1_timeouts;
+ WORD ti_timeouts;
+ DWORD reserved1;
+ WORD free_ncbs;
+ WORD max_cfg_ncbs;
+ WORD max_ncbs;
+ WORD xmit_buf_unavail;
+ WORD max_dgram_size;
+ WORD pending_sess;
+ WORD max_cfg_sess;
+ WORD max_sess;
+ WORD max_sess_pkt_size;
+ WORD name_count;
+} ADAPTER_STATUS,*PADAPTER_STATUS;
+typedef struct _FIND_NAME_BUFFER {
+ UCHAR length;
+ UCHAR access_control;
+ UCHAR frame_control;
+ UCHAR destination_addr[6];
+ UCHAR source_addr[6];
+ UCHAR routing_info[18];
+} FIND_NAME_BUFFER,*PFIND_NAME_BUFFER;
+typedef struct _FIND_NAME_HEADER {
+ WORD node_count;
+ UCHAR reserved;
+ UCHAR unique_group;
+} FIND_NAME_HEADER,*PFIND_NAME_HEADER;
+typedef struct _LANA_ENUM {
+ UCHAR length;
+ UCHAR lana[MAX_LANA+1];
+} LANA_ENUM,*PLANA_ENUM;
+typedef struct _NAME_BUFFER {
+ UCHAR name[NCBNAMSZ];
+ UCHAR name_num;
+ UCHAR name_flags;
+} NAME_BUFFER,*PNAME_BUFFER;
+typedef struct _NCB {
+ UCHAR ncb_command;
+ UCHAR ncb_retcode;
+ UCHAR ncb_lsn;
+ UCHAR ncb_num;
+ PUCHAR ncb_buffer;
+ WORD ncb_length;
+ UCHAR ncb_callname[NCBNAMSZ];
+ UCHAR ncb_name[NCBNAMSZ];
+ UCHAR ncb_rto;
+ UCHAR ncb_sto;
+ void (CALLBACK *ncb_post)(struct _NCB*);
+ UCHAR ncb_lana_num;
+ UCHAR ncb_cmd_cplt;
+ UCHAR ncb_reserve[10];
+ HANDLE ncb_event;
+} NCB,*PNCB;
+typedef struct _SESSION_BUFFER {
+ UCHAR lsn;
+ UCHAR state;
+ UCHAR local_name[NCBNAMSZ];
+ UCHAR remote_name[NCBNAMSZ];
+ UCHAR rcvs_outstanding;
+ UCHAR sends_outstanding;
+} SESSION_BUFFER,*PSESSION_BUFFER;
+typedef struct _SESSION_HEADER {
+ UCHAR sess_name;
+ UCHAR num_sess;
+ UCHAR rcv_dg_outstanding;
+ UCHAR rcv_any_outstanding;
+} SESSION_HEADER,*PSESSION_HEADER;
+UCHAR WINAPI Netbios(PNCB);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/nddeapi.h b/winsup/w32api/include/nddeapi.h
new file mode 100644
index 000000000..a4dc03bcf
--- /dev/null
+++ b/winsup/w32api/include/nddeapi.h
@@ -0,0 +1,127 @@
+#ifndef _NDDEAPI_H
+#define _NDDEAPI_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define CNLEN 15
+#define UNCLEN 17
+#define SEP_CHAR ','
+#define BAR_CHAR "|"
+#define SEP_WCHAR L','
+#define BAR_WCHAR L"|"
+#define NDDE_NO_ERROR 0
+#define NDDE_ACCESS_DENIED 1
+#define NDDE_BUF_TOO_SMALL 2
+#define NDDE_ERROR_MORE_DATA 3
+#define NDDE_INVALID_SERVER 4
+#define NDDE_INVALID_SHARE 5
+#define NDDE_INVALID_PARAMETER 6
+#define NDDE_INVALID_LEVEL 7
+#define NDDE_INVALID_PASSWORD 8
+#define NDDE_INVALID_ITEMNAME 9
+#define NDDE_INVALID_TOPIC 10
+#define NDDE_INTERNAL_ERROR 11
+#define NDDE_OUT_OF_MEMORY 12
+#define NDDE_INVALID_APPNAME 13
+#define NDDE_NOT_IMPLEMENTED 14
+#define NDDE_SHARE_ALREADY_EXIST 15
+#define NDDE_SHARE_NOT_EXIST 16
+#define NDDE_INVALID_FILENAME 17
+#define NDDE_NOT_RUNNING 18
+#define NDDE_INVALID_WINDOW 19
+#define NDDE_INVALID_SESSION 20
+#define NDDE_INVALID_ITEM_LIST 21
+#define NDDE_SHARE_DATA_CORRUPTED 22
+#define NDDE_REGISTRY_ERROR 23
+#define NDDE_CANT_ACCESS_SERVER 24
+#define NDDE_INVALID_SPECIAL_COMMAND 25
+#define NDDE_INVALID_SECURITY_DESC 26
+#define NDDE_TRUST_SHARE_FAIL 27
+#define MAX_NDDESHARENAME 256
+#define MAX_DOMAINNAME 15
+#define MAX_USERNAME 15
+#define MAX_APPNAME 255
+#define MAX_TOPICNAME 255
+#define MAX_ITEMNAME 255
+#define NDDEF_NOPASSWORDPROMPT 0x0001
+#define NDDEF_NOCACHELOOKUP 0x0002
+#define NDDEF_STRIP_NDDE 0x0004
+#define SHARE_TYPE_OLD 0x01
+#define SHARE_TYPE_NEW 0x02
+#define SHARE_TYPE_STATIC 0x04
+#define NDDE_TRUST_SHARE_START 0x80000000L
+#define NDDE_TRUST_SHARE_INIT 0x40000000L
+#define NDDE_TRUST_SHARE_DEL 0x20000000L
+#define NDDE_TRUST_CMD_SHOW 0x10000000L
+#define NDDE_CMD_SHOW_MASK 0x0000FFFFL
+struct NDdeShareInfo_tag {
+ LONG lRevision;
+ LPTSTR lpszShareName;
+ LONG lShareType;
+ LPTSTR lpszAppTopicList;
+ LONG fSharedFlag;
+ LONG fService;
+ LONG fStartAppFlag;
+ LONG nCmdShow;
+ LONG qModifyId[2];
+ LONG cNumItems;
+ LPTSTR lpszItemList;
+} NDDESHAREINFO,*PNDDESHAREINFO;
+
+UINT WINAPI NDdeGetErrorStringA(UINT,LPSTR,DWORD);
+UINT WINAPI NDdeGetErrorStringW(UINT,LPWSTR,DWORD);
+UINT WINAPI NDdeGetShareSecurityA(LPSTR,LPSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+UINT WINAPI NDdeGetShareSecurityW(LPWSTR,LPWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,PDWORD);
+UINT WINAPI NDdeGetTrustedShareA(LPSTR,LPSTR,PDWORD,PDWORD,PDWORD);
+UINT WINAPI NDdeGetTrustedShareW(LPWSTR,LPWSTR,PDWORD,PDWORD,PDWORD);
+BOOL WINAPI NDdeIsValidShareNameA(LPSTR);
+BOOL WINAPI NDdeIsValidShareNameW(LPWSTR);
+BOOL WINAPI NDdeIsValidAppTopicListA(LPSTR);
+BOOL WINAPI NDdeIsValidAppTopicListW(LPWSTR);
+UINT WINAPI NDdeSetShareSecurityA(LPSTR,LPSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+UINT WINAPI NDdeSetShareSecurityW(LPWSTR,LPWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+UINT WINAPI NDdeSetTrustedShareA(LPSTR,LPSTR,DWORD);
+UINT WINAPI NDdeSetTrustedShareW(LPWSTR,LPWSTR,DWORD);
+UINT WINAPI NDdeShareAddA(LPSTR,UINT,PSECURITY_DESCRIPTOR,PBYTE,DWORD);
+UINT WINAPI NDdeShareAddW(LPWSTR,UINT,PSECURITY_DESCRIPTOR,PBYTE,DWORD);
+UINT WINAPI NDdeShareDelA(LPSTR,LPSTR,UINT);
+UINT WINAPI NDdeShareDelW(LPWSTR,LPWSTR,UINT);
+UINT WINAPI NDdeShareEnumA(LPSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD);
+UINT WINAPI NDdeShareEnumW(LPWSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD);
+UINT WINAPI NDdeShareGetInfoA(LPSTR,LPSTR,UINT,PBYTE,DWORD,PDWORD,PWORD);
+UINT WINAPI NDdeShareGetInfoW(LPWSTR,LPWSTR,UINT,PBYTE,DWORD,PDWORD,PWORD);
+UINT WINAPI NDdeShareSetInfoA(LPSTR,LPSTR,UINT,PBYTE,DWORD,WORD);
+UINT WINAPI NDdeShareSetInfoW(LPWSTR,LPWSTR,UINT,PBYTE,DWORD,WORD);
+UINT WINAPI NDdeTrustedShareEnumA(LPSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD);
+UINT WINAPI NDdeTrustedShareEnumW(LPWSTR,UINT,PBYTE,DWORD,PDWORD,PDWORD);
+#ifdef UNICODE
+#define NDdeShareAdd NDdeShareAddW
+#define NDdeShareDel NDdeShareDelW
+#define NDdeSetShareSecurity NDdeSetShareSecurityW
+#define NDdeGetShareSecurity NDdeGetShareSecurityW
+#define NDdeShareEnum NDdeShareEnumW
+#define NDdeShareGetInfo NDdeShareGetInfoW
+#define NDdeShareSetInfo NDdeShareSetInfoW
+#define NDdeGetErrorString NDdeGetErrorStringW
+#define NDdeSetTrustedShare NDdeSetTrustedShareW
+#define NDdeGetTrustedShare NDdeGetTrustedShareW
+#define NDdeTrustedShareEnum NDdeTrustedShareEnumW
+#else
+#define NDdeShareAdd NDdeShareAddA
+#define NDdeShareDel NDdeShareDelA
+#define NDdeSetShareSecurity NDdeSetShareSecurityA
+#define NDdeGetShareSecurity NDdeGetShareSecurityA
+#define NDdeShareEnum NDdeShareEnumA
+#define NDdeShareGetInfo NDdeShareGetInfoA
+#define NDdeShareSetInfo NDdeShareSetInfoA
+#define NDdeGetErrorString NDdeGetErrorStringA
+#define NDdeIsValidShareName NDdeIsValidShareNameA
+#define NDdeIsValidAppTopicList NDdeIsValidAppTopicListA
+#define NDdeSetTrustedShare NDdeSetTrustedShareA
+#define NDdeGetTrustedShare NDdeGetTrustedShareA
+#define NDdeTrustedShareEnum NDdeTrustedShareEnumA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/nspapi.h b/winsup/w32api/include/nspapi.h
new file mode 100644
index 000000000..97dde1639
--- /dev/null
+++ b/winsup/w32api/include/nspapi.h
@@ -0,0 +1,19 @@
+#ifndef _NSPAPI_H
+#define _NSPAPI_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef struct _SOCKET_ADDRESS {
+ LPSOCKADDR lpSockaddr;
+ INT iSockaddrLength;
+} SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS;
+typedef struct _CSADDR_INFO {
+ SOCKET_ADDRESS LocalAddr;
+ SOCKET_ADDRESS RemoteAddr;
+ INT iSocketType;
+ INT iProtocol;
+} CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO;
+#ifdef __cplusplus
+}
+#endif
+#endif /* _NSPAPI_H */
diff --git a/winsup/w32api/include/oaidl.h b/winsup/w32api/include/oaidl.h
new file mode 100644
index 000000000..cc0e932a5
--- /dev/null
+++ b/winsup/w32api/include/oaidl.h
@@ -0,0 +1,513 @@
+#ifndef _OAIDL_H
+#define _OAIDL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifdef NONAMELESSUNION
+#define __VARIANT_NAME_1 n1
+#define __VARIANT_NAME_2 n2
+#define __VARIANT_NAME_3 n3
+#define __VARIANT_NAME_4 n4
+#else
+#define __tagVARIANT
+#define __VARIANT_NAME_1
+#define __VARIANT_NAME_2
+#define __VARIANT_NAME_3
+#define __VARIANT_NAME_4
+#endif
+#define DISPID_UNKNOWN (-1)
+#define DISPID_VALUE (0)
+#define DISPID_PROPERTYPUT (-3)
+#define DISPID_NEWENUM (-4)
+#define DISPID_EVALUATE (-5)
+#define DISPID_CONSTRUCTOR (-6)
+#define DISPID_DESTRUCTOR (-7)
+#define DISPID_COLLECT (-8)
+#define FADF_AUTO (1)
+#define FADF_STATIC (2)
+#define FADF_EMBEDDED (4)
+#define FADF_FIXEDSIZE (16)
+#define FADF_BSTR (256)
+#define FADF_UNKNOWN (512)
+#define FADF_DISPATCH (1024)
+#define FADF_VARIANT (2048)
+#define FADF_RESERVED (0xf0e8)
+#define PARAMFLAG_NONE (0)
+#define PARAMFLAG_FIN (1)
+#define PARAMFLAG_FOUT (2)
+#define PARAMFLAG_FLCID (4)
+#define PARAMFLAG_FRETVAL (8)
+#define PARAMFLAG_FOPT (16)
+#define PARAMFLAG_FHASDEFAULT (32)
+#define IDLFLAG_NONE PARAMFLAG_NONE
+#define IDLFLAG_FIN PARAMFLAG_FIN
+#define IDLFLAG_FOUT PARAMFLAG_FOUT
+#define IDLFLAG_FLCID PARAMFLAG_FLCID
+#define IDLFLAG_FRETVAL PARAMFLAG_FRETVAL
+#define IMPLTYPEFLAG_FDEFAULT 1
+#define IMPLTYPEFLAG_FSOURCE 2
+#define IMPLTYPEFLAG_FRESTRICTED 4
+#define IMPLTYPEFLAG_FDEFAULTVTABLE 8
+
+typedef interface ITypeLib *LPTYPELIB;
+typedef interface ICreateTypeInfo *LPCREATETYPEINFO;
+typedef interface ICreateTypeInfo2 *LPCREATETYPEINFO2;
+typedef interface ICreateTypeLib *LPCREATETYPELIB;
+typedef interface ICreateTypeLib2 *LPCREATETYPELIB2;
+typedef interface ITypeComp *LPTYPECOMP;
+typedef interface ITypeInfo *LPTYPEINFO;
+typedef interface IErrorInfo *LPERRORINFO;
+typedef interface IDispatch *LPDISPATCH;
+typedef interface IEnumVARIANT *LPENUMVARIANT;
+typedef interface ICreateErrorInfo *LPCREATEERRORINFO;
+
+extern const IID IID_ITypeLib;
+extern const IID IID_ICreateTypeInfo;
+extern const IID IID_ICreateTypeInfo2;
+extern const IID IID_ICreateTypeLib;
+extern const IID IID_ICreateTypeLib2;
+extern const IID IID_ITypeInfo;
+extern const IID IID_IErrorInfo;
+extern const IID IID_IDispatch;
+extern const IID IID_IEnumVARIANT;
+extern const IID IID_ICreateErrorInfo;
+extern const GUID IID_ISupportErrorInfo;
+
+typedef enum tagSYSKIND {
+ SYS_WIN16,SYS_WIN32,SYS_MAC
+} SYSKIND;
+typedef enum tagLIBFLAGS {
+ LIBFLAG_FRESTRICTED=1,LIBFLAG_FCONTROL=2,LIBFLAG_FHIDDEN=4,
+ LIBFLAG_FHASDISKIMAGE=8
+} LIBFLAGS;
+typedef struct tagTLIBATTR {
+ GUID guid;
+ LCID lcid;
+ SYSKIND syskind;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ WORD wLibFlags;
+} TLIBATTR,*LPTLIBATTR;
+typedef CY CURRENCY;
+typedef struct tagSAFEARRAYBOUND {
+ ULONG cElements;
+ LONG lLbound;
+}SAFEARRAYBOUND,*LPSAFEARRAYBOUND;
+typedef struct _wireSAFEARR_BSTR
+{
+ ULONG Size;
+ wireBSTR *aBstr;
+}SAFEARR_BSTR;
+typedef struct _wireSAFEARR_UNKNOWN {
+ ULONG Size;
+ IUnknown **apUnknown;
+}SAFEARR_UNKNOWN;
+typedef struct _wireSAFEARR_DISPATCH {
+ ULONG Size;
+ LPDISPATCH *apDispatch;
+}SAFEARR_DISPATCH;
+typedef struct _wireSAFEARR_VARIANT {
+ ULONG Size;
+ struct _wireVARIANT *aVariant;
+}SAFEARR_VARIANT;
+typedef enum tagSF_TYPE {
+ SF_ERROR=VT_ERROR,
+ SF_I1=VT_I1,
+ SF_I2=VT_I2,
+ SF_I4=VT_I4,
+ SF_I8=VT_I8,
+ SF_BSTR=VT_BSTR,
+ SF_UNKNOWN=VT_UNKNOWN,
+ SF_DISPATCH=VT_DISPATCH,
+ SF_VARIANT=VT_VARIANT
+}SF_TYPE;
+typedef struct _wireSAFEARRAY_UNION {
+ ULONG sfType;
+ union {
+ SAFEARR_BSTR BstrStr;
+ SAFEARR_UNKNOWN UnknownStr;
+ SAFEARR_DISPATCH DispatchStr;
+ SAFEARR_VARIANT VariantStr;
+ BYTE_SIZEDARR ByteStr;
+ WORD_SIZEDARR WordStr;
+ DWORD_SIZEDARR LongStr;
+ HYPER_SIZEDARR HyperStr;
+ }u;
+}SAFEARRAYUNION;
+typedef struct _wireSAFEARRAY {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ SAFEARRAYUNION uArrayStructs;
+ SAFEARRAYBOUND rgsabound[1];
+}*wireSAFEARRAY;
+typedef wireSAFEARRAY *wirePSAFEARRAY;
+typedef struct tagSAFEARRAY {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ PVOID pvData;
+ SAFEARRAYBOUND rgsabound[1];
+}SAFEARRAY,*LPSAFEARRAY;
+typedef struct tagVARIANT {
+ union {
+ struct __tagVARIANT {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ union {
+ long lVal;
+ unsigned char bVal;
+ short iVal;
+ float fltVal;
+ double dblVal;
+ VARIANT_BOOL boolVal;
+ SCODE scode;
+ CY cyVal;
+ DATE date;
+ BSTR bstrVal;
+ IUnknown *punkVal;
+ LPDISPATCH pdispVal;
+ SAFEARRAY *parray;
+ unsigned char *pbVal;
+ short *piVal;
+ long *plVal;
+ float *pfltVal;
+ double *pdblVal;
+ VARIANT_BOOL *pboolVal;
+ SCODE *pscode;
+ CY *pcyVal;
+ DATE *pdate;
+ BSTR *pbstrVal;
+ IUnknown **ppunkVal;
+ LPDISPATCH *ppdispVal;
+ SAFEARRAY **pparray;
+ struct tagVARIANT *pvarVal;
+ void *byref;
+ CHAR cVal;
+ USHORT uiVal;
+ ULONG ulVal;
+ INT intVal;
+ UINT uintVal;
+ DECIMAL *pdecVal;
+ CHAR *pcVal;
+ USHORT *puiVal;
+ ULONG *pulVal;
+ INT *pintVal;
+ UINT *puintVal;
+ struct {
+ PVOID pvRecord;
+ struct IRecordInfo *pRecInfo;
+ } __VARIANT_NAME_4;
+ } __VARIANT_NAME_3;
+ } __VARIANT_NAME_2;
+ DECIMAL decVal;
+ } __VARIANT_NAME_1;
+} VARIANT,*LPVARIANT;
+typedef VARIANT VARIANTARG;
+typedef VARIANT *LPVARIANTARG;
+typedef struct _wireVARIANT {
+ DWORD clSize;
+ DWORD rpcReserved;
+ USHORT vt;
+ USHORT wReserved1;
+ USHORT wReserved2;
+ USHORT wReserved3;
+ union {
+ LONG lVal;
+ BYTE bVal;
+ SHORT iVal;
+ FLOAT fltVal;
+ DOUBLE dblVal;
+ VARIANT_BOOL boolVal;
+ SCODE scode;
+ CY cyVal;
+ DATE date;
+ wireBSTR bstrVal;
+ IUnknown *punkVal;
+ LPDISPATCH pdispVal;
+ wireSAFEARRAY parray;
+ BYTE *pbVal;
+ SHORT *piVal;
+ LONG *plVal;
+ FLOAT *pfltVal;
+ DOUBLE *pdblVal;
+ VARIANT_BOOL *pboolVal;
+ SCODE *pscode;
+ CY *pcyVal;
+ DATE *pdate;
+ wireBSTR *pbstrVal;
+ IUnknown **ppunkVal;
+ LPDISPATCH *ppdispVal;
+ wireSAFEARRAY *pparray;
+ struct _wireVARIANT *pvarVal;
+ CHAR cVal;
+ USHORT uiVal;
+ ULONG ulVal;
+ INT intVal;
+ UINT uintVal;
+ DECIMAL decVal;
+ DECIMAL *pdecVal;
+ CHAR *pcVal;
+ USHORT *puiVal;
+ ULONG *pulVal;
+ INT *pintVal;
+ UINT *puintVal;
+ } DUMMYUNIONNAME;
+} wireVARIANT;
+typedef LONG DISPID;
+typedef DISPID MEMBERID;
+typedef DWORD HREFTYPE;
+typedef enum tagTYPEKIND {
+ TKIND_ENUM,TKIND_RECORD,TKIND_MODULE,TKIND_INTERFACE,TKIND_DISPATCH,
+ TKIND_COCLASS,TKIND_ALIAS,TKIND_UNION,TKIND_MAX
+}TYPEKIND;
+typedef struct tagTYPEDESC {
+ union {
+ struct tagTYPEDESC *lptdesc;
+ struct tagARRAYDESC *lpadesc;
+ HREFTYPE hreftype;
+ } DUMMYUNIONNAME;
+ VARTYPE vt;
+}TYPEDESC;
+typedef struct tagARRAYDESC {
+ TYPEDESC tdescElem;
+ USHORT cDims;
+ SAFEARRAYBOUND rgbounds[1];
+}ARRAYDESC;
+typedef struct tagPARAMDESCEX {
+ ULONG cBytes;
+ VARIANTARG varDefaultValue;
+}PARAMDESCEX,*LPPARAMDESCEX;
+typedef struct tagPARAMDESC {
+ LPPARAMDESCEX pparamdescex;
+ USHORT wParamFlags;
+}PARAMDESC,*LPPARAMDESC;
+typedef struct tagIDLDESC {
+ ULONG dwReserved;
+ USHORT wIDLFlags;
+}IDLDESC,*LPIDLDESC;
+typedef struct tagELEMDESC {
+ TYPEDESC tdesc;
+ union {
+ IDLDESC idldesc;
+ PARAMDESC paramdesc;
+ } DUMMYUNIONNAME;
+} ELEMDESC,*LPELEMDESC;
+typedef struct tagTYPEATTR {
+ GUID guid;
+ LCID lcid;
+ DWORD dwReserved;
+ MEMBERID memidConstructor;
+ MEMBERID memidDestructor;
+ LPOLESTR lpstrSchema;
+ ULONG cbSizeInstance;
+ TYPEKIND typekind;
+ WORD cFuncs;
+ WORD cVars;
+ WORD cImplTypes;
+ WORD cbSizeVft;
+ WORD cbAlignment;
+ WORD wTypeFlags;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ TYPEDESC tdescAlias;
+ IDLDESC idldescType;
+}TYPEATTR,*LPTYPEATTR;
+typedef struct tagDISPPARAMS {
+ VARIANTARG *rgvarg;
+ DISPID *rgdispidNamedArgs;
+ UINT cArgs;
+ UINT cNamedArgs;
+}DISPPARAMS;
+typedef struct tagEXCEPINFO {
+ WORD wCode;
+ WORD wReserved;
+ BSTR bstrSource;
+ BSTR bstrDescription;
+ BSTR bstrHelpFile;
+ DWORD dwHelpContext;
+ PVOID pvReserved;
+ HRESULT(__stdcall * pfnDeferredFillIn)(struct tagEXCEPINFO*);
+ SCODE scode;
+} EXCEPINFO,*LPEXCEPINFO;
+typedef enum tagCALLCONV {
+ CC_FASTCALL,CC_CDECL,CC_MSCPASCAL,CC_PASCAL=CC_MSCPASCAL,
+ CC_MACPASCAL,CC_STDCALL,CC_FPFASTCALL,CC_SYSCALL,CC_MPWCDECL,
+ CC_MPWPASCAL,CC_MAX=CC_MPWPASCAL
+}CALLCONV;
+typedef enum tagFUNCKIND {
+ FUNC_VIRTUAL,FUNC_PUREVIRTUAL,FUNC_NONVIRTUAL,
+ FUNC_STATIC,FUNC_DISPATCH
+}FUNCKIND;
+typedef enum tagINVOKEKIND {
+ INVOKE_FUNC=1,INVOKE_PROPERTYGET,INVOKE_PROPERTYPUT=4,
+ INVOKE_PROPERTYPUTREF=8
+}INVOKEKIND;
+typedef struct tagFUNCDESC {
+ MEMBERID memid;
+ SCODE *lprgscode;
+ ELEMDESC *lprgelemdescParam;
+ FUNCKIND funckind;
+ INVOKEKIND invkind;
+ CALLCONV callconv;
+ SHORT cParams;
+ SHORT cParamsOpt;
+ SHORT oVft;
+ SHORT cScodes;
+ ELEMDESC elemdescFunc;
+ WORD wFuncFlags;
+}FUNCDESC,*LPFUNCDESC;
+typedef enum tagVARKIND {
+ VAR_PERINSTANCE,VAR_STATIC,VAR_CONST,VAR_DISPATCH
+} VARKIND;
+typedef struct tagVARDESC {
+ MEMBERID memid;
+ LPOLESTR lpstrSchema;
+ union {
+ ULONG oInst;
+ VARIANT *lpvarValue;
+ } DUMMYUNIONNAME;
+ ELEMDESC elemdescVar;
+ WORD wVarFlags;
+ VARKIND varkind;
+} VARDESC,*LPVARDESC;
+typedef enum tagTYPEFLAGS {
+ TYPEFLAG_FAPPOBJECT=1,TYPEFLAG_FCANCREATE=2,TYPEFLAG_FLICENSED=4,
+ TYPEFLAG_FPREDECLID=8,TYPEFLAG_FHIDDEN=16,TYPEFLAG_FCONTROL=32,
+ TYPEFLAG_FDUAL=64,TYPEFLAG_FNONEXTENSIBLE=128,
+ TYPEFLAG_FOLEAUTOMATION=256,TYPEFLAG_FRESTRICTED=512,
+ TYPEFLAG_FAGGREGATABLE=1024,TYPEFLAG_FREPLACEABLE=2048,
+ TYPEFLAG_FDISPATCHABLE=4096,TYPEFLAG_FREVERSEBIND=8192
+} TYPEFLAGS;
+typedef enum tagFUNCFLAGS {
+ FUNCFLAG_FRESTRICTED=1,FUNCFLAG_FSOURCE=2,FUNCFLAG_FBINDABLE=4,
+ FUNCFLAG_FREQUESTEDIT=8,FUNCFLAG_FDISPLAYBIND=16,FUNCFLAG_FDEFAULTBIND=32,
+ FUNCFLAG_FHIDDEN=64,FUNCFLAG_FUSESGETLASTERROR=128,FUNCFLAG_FDEFAULTCOLLELEM=256,
+ FUNCFLAG_FUIDEFAULT=512,FUNCFLAG_FNONBROWSABLE=1024,FUNCFLAG_FREPLACEABLE=2048,
+ FUNCFLAG_FIMMEDIATEBIND=4096
+} FUNCFLAGS;
+typedef enum tagVARFLAGS {
+ VARFLAG_FREADONLY=1,VARFLAG_FSOURCE=2,VARFLAG_FBINDABLE=4,VARFLAG_FREQUESTEDIT=8,
+ VARFLAG_FDISPLAYBIND=16,VARFLAG_FDEFAULTBIND=32,VARFLAG_FHIDDEN=64,VARFLAG_FRESTRICTED=128,
+ VARFLAG_FDEFAULTCOLLELEM=256,VARFLAG_FUIDEFAULT=512,VARFLAG_FNONBROWSABLE=1024,
+ VARFLAG_FREPLACEABLE=2048,VARFLAG_FIMMEDIATEBIND=4096
+} VARFLAGS;
+typedef struct tagCLEANLOCALSTORAGE {
+ IUnknown *pInterface;
+ PVOID pStorage;
+ DWORD flags;
+} CLEANLOCALSTORAGE;
+typedef struct tagCUSTDATAITEM {
+ GUID guid;
+ VARIANTARG varValue;
+} CUSTDATAITEM,*LPCUSTDATAITEM;
+typedef struct tagCUSTDATA {
+ DWORD cCustData;
+ LPCUSTDATAITEM prgCustData;
+} CUSTDATA,*LPCUSTDATA;
+
+typedef enum tagDESCKIND {
+ DESCKIND_NONE=0,DESCKIND_FUNCDESC=DESCKIND_NONE+1,
+ DESCKIND_VARDESC=DESCKIND_FUNCDESC+1,DESCKIND_TYPECOMP=DESCKIND_VARDESC+1,
+ DESCKIND_IMPLICITAPPOBJ=DESCKIND_TYPECOMP+1,
+ DESCKIND_MAX=DESCKIND_IMPLICITAPPOBJ+1
+} DESCKIND;
+
+typedef union tagBINDPTR {
+ LPFUNCDESC lpfuncdesc;
+ LPVARDESC lpvardesc;
+ LPTYPECOMP lptcomp;
+} BINDPTR,*LPBINDPTR;
+
+#undef INTERFACE
+#define INTERFACE IDispatch
+DECLARE_INTERFACE_(IDispatch,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+ STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+ STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+ STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IEnumVARIANT
+DECLARE_INTERFACE_(IEnumVARIANT,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Next)(THIS_ ULONG,VARIANT*,ULONG*) PURE;
+ STDMETHOD(Skip)(THIS_ ULONG) PURE;
+ STDMETHOD(Reset)(THIS) PURE;
+ STDMETHOD(Clone)(THIS_ IEnumVARIANT**) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE ITypeComp
+DECLARE_INTERFACE_(ITypeComp,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Bind)(THIS_ LPOLESTR,ULONG,WORD,LPTYPEINFO*,DESCKIND*,LPBINDPTR) PURE;
+ STDMETHOD(BindType)(THIS_ LPOLESTR,ULONG,LPTYPEINFO*,LPTYPECOMP*) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE ITypeInfo
+DECLARE_INTERFACE_(ITypeInfo,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetTypeAttr)(THIS_ LPTYPEATTR*) PURE;
+ STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE;
+ STDMETHOD(GetFuncDesc)(THIS_ UINT,LPFUNCDESC*) PURE;
+ STDMETHOD(GetVarDesc)(THIS_ UINT,LPVARDESC*) PURE;
+ STDMETHOD(GetNames)(THIS_ MEMBERID,BSTR*,UINT,UINT*) PURE;
+ STDMETHOD(GetRefTypeOfImplType)(THIS_ UINT,HREFTYPE*) PURE;
+ STDMETHOD(GetImplTypeFlags)(THIS_ UINT,INT*) PURE;
+ STDMETHOD(GetIDsOfNames)(THIS_ LPOLESTR*,UINT,MEMBERID*) PURE;
+ STDMETHOD(Invoke)(THIS_ PVOID,MEMBERID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+ STDMETHOD(GetDocumentation)(THIS_ MEMBERID,BSTR*,BSTR*,DWORD*,BSTR*) PURE;
+ STDMETHOD(GetDllEntry)(THIS_ MEMBERID,INVOKEKIND,BSTR*,BSTR*,WORD*) PURE;
+ STDMETHOD(GetRefTypeInfo)(THIS_ HREFTYPE,LPTYPEINFO*) PURE;
+ STDMETHOD(AddressOfMember)(THIS_ MEMBERID,INVOKEKIND,PVOID*) PURE;
+ STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
+ STDMETHOD(GetMops)(THIS_ MEMBERID,BSTR*) PURE;
+ STDMETHOD(GetContainingTypeLib)(THIS_ LPTYPELIB*,UINT*) PURE;
+ STDMETHOD_(void,ReleaseTypeAttr)(THIS_ LPTYPEATTR) PURE;
+ STDMETHOD_(void,ReleaseFuncDesc)(THIS_ LPFUNCDESC) PURE;
+ STDMETHOD_(void,ReleaseVarDesc)(THIS_ LPVARDESC) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE ITypeLib
+DECLARE_INTERFACE_(ITypeLib,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(UINT,GetTypeInfoCount)(THIS) PURE;
+ STDMETHOD(GetTypeInfo)(THIS_ UINT,ITypeInfo**) PURE;
+ STDMETHOD(GetTypeInfoType)(THIS_ UINT,TYPEKIND*) PURE;
+ STDMETHOD(GetTypeInfoOfGuid)(THIS_ REFGUID,ITypeInfo**) PURE;
+ STDMETHOD(GetLibAttr)(THIS_ TLIBATTR**) PURE;
+ STDMETHOD(GetTypeComp)(THIS_ ITypeComp*) PURE;
+ STDMETHOD(GetDocumentation)(THIS_ INT,BSTR*,BSTR*,DWORD*,BSTR*) PURE;
+ STDMETHOD(IsName)(THIS_ LPOLESTR,ULONG,BOOL*) PURE;
+ STDMETHOD(FindName)(THIS_ LPOLESTR,ULONG,ITypeInfo**,MEMBERID*,USHORT*) PURE;
+ STDMETHOD_(void,ReleaseTLibAttr)(THIS_ TLIBATTR*) PURE;
+};
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/objbase.h b/winsup/w32api/include/objbase.h
new file mode 100644
index 000000000..5e83ad5ae
--- /dev/null
+++ b/winsup/w32api/include/objbase.h
@@ -0,0 +1,151 @@
+#ifndef _OBJBASE_H
+#define _OBJBASE_H
+#include <rpc.h>
+#include <rpcndr.h>
+#include <stdlib.h>
+#pragma pack(push,8)
+#include <basetyps.h>
+
+#define WINOLEAPI STDAPI
+#define WINOLEAPI_(type) STDAPI_(type)
+#define FARSTRUCT
+#define HUGEP
+#define LISet32(li,v) ((li).HighPart=(v)<0?-1:0,(li).LowPart=(v))
+#define ULISet32(li,v) ((li).HighPart=0,(li).LowPart=(v))
+#define CLSCTX_ALL (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER|CLSCTX_LOCAL_SERVER)
+#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER)
+#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER|CLSCTX_REMOTE_SERVER)
+#define MARSHALINTERFACE_MIN 500
+#define CWCSTORAGENAME 32
+#define STGM_DIRECT 0
+#define STGM_TRANSACTED 0x10000L
+#define STGM_SIMPLE 0x8000000L
+#define STGM_READ 0
+#define STGM_WRITE 1
+#define STGM_READWRITE 2
+#define STGM_SHARE_DENY_NONE 0x40
+#define STGM_SHARE_DENY_READ 0x30
+#define STGM_SHARE_DENY_WRITE 0x20
+#define STGM_SHARE_EXCLUSIVE 0x10
+#define STGM_PRIORITY 0x40000L
+#define STGM_DELETEONRELEASE 0x4000000
+#define STGM_NOSCRATCH 0x100000
+#define STGM_CREATE 0x1000
+#define STGM_CONVERT 0x20000
+#define STGM_FAILIFTHERE 0
+#define CWCSTORAGENAME 32
+#define ASYNC_MODE_COMPATIBILITY 1
+#define ASYNC_MODE_DEFAULT 0
+#define STGTY_REPEAT 256
+#define STG_TOEND 0xFFFFFFFF
+#define STG_LAYOUT_SEQUENTIAL 0
+#define STG_LAYOUT_INTERLEAVED 1
+typedef enum tagREGCLS {
+ REGCLS_SINGLEUSE = 0,
+ REGCLS_MULTIPLEUSE = 1,
+ REGCLS_MULTI_SEPARATE = 2
+} REGCLS;
+#include <wtypes.h>
+#include <unknwn.h>
+#include <objidl.h>
+
+#ifdef __cplusplus
+inline BOOL IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
+ { return !memcmp(&rguid1, &rguid2, sizeof(GUID)); }
+inline BOOL operator==(const GUID& guidOne, const GUID& guidOther)
+ { return !memcmp(&guidOne,&guidOther,sizeof(GUID)); }
+inline BOOL operator!=(const GUID& g1, const GUID& g2)
+ { return !(g1 == g2); }
+#else
+#define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
+#endif
+#define IsEqualIID(id1,id2) IsEqualGUID(id1,id2)
+#define IsEqualCLSID(id1,id2) IsEqualGUID(id1,id2)
+#include <cguid.h>
+
+typedef enum tagCOINIT {
+ COINIT_APARTMENTTHREADED = 0x2,
+ COINIT_MULTITHREADED = 0x0,
+ COINIT_DISABLE_OLE1DDE = 0x4,
+ COINIT_SPEED_OVER_MEMORY = 0x8,
+} COINIT;
+
+WINOLEAPI_(DWORD) CoBuildVersion(void);
+WINOLEAPI CoInitialize(PVOID);
+WINOLEAPI_(void) CoUninitialize(void);
+WINOLEAPI CoGetMalloc(DWORD,LPMALLOC*);
+WINOLEAPI_(DWORD) CoGetCurrentProcess(void);
+WINOLEAPI CoRegisterMallocSpy(LPMALLOCSPY);
+WINOLEAPI CoRevokeMallocSpy(void);
+WINOLEAPI CoCreateStandardMalloc(DWORD,IMalloc**);
+#if DBG == 1
+WINOLEAPI_(ULONG) DebugCoGetRpcFault(void);
+WINOLEAPI_(void) DebugCoSetRpcFault(ULONG);
+#endif
+WINOLEAPI CoGetClassObject(REFCLSID,DWORD,PVOID,REFIID,PVOID*);
+WINOLEAPI CoRegisterClassObject(REFCLSID,LPUNKNOWN,DWORD,DWORD,PDWORD);
+WINOLEAPI CoRevokeClassObject(DWORD);
+WINOLEAPI CoGetMarshalSizeMax(ULONG*,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD);
+WINOLEAPI CoMarshalInterface(LPSTREAM,REFIID,LPUNKNOWN,DWORD,PVOID,DWORD);
+WINOLEAPI CoUnmarshalInterface(LPSTREAM,REFIID,PVOID*);
+WINOLEAPI CoMarshalHresult(LPSTREAM,HRESULT);
+WINOLEAPI CoUnmarshalHresult(LPSTREAM,HRESULT*);
+WINOLEAPI CoReleaseMarshalData(LPSTREAM);
+WINOLEAPI CoDisconnectObject(LPUNKNOWN,DWORD);
+WINOLEAPI CoLockObjectExternal(LPUNKNOWN,BOOL,BOOL);
+WINOLEAPI CoGetStandardMarshal(REFIID,LPUNKNOWN,DWORD,PVOID,DWORD,LPMARSHAL*);
+WINOLEAPI_(BOOL) CoIsHandlerConnected(LPUNKNOWN);
+WINOLEAPI_(BOOL) CoHasStrongExternalConnections(LPUNKNOWN);
+WINOLEAPI CoMarshalInterThreadInterfaceInStream(REFIID,LPUNKNOWN,LPSTREAM*);
+WINOLEAPI CoGetInterfaceAndReleaseStream(LPSTREAM,REFIID,PVOID*);
+WINOLEAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN,LPUNKNOWN*);
+WINOLEAPI_(HINSTANCE) CoLoadLibrary(LPOLESTR,BOOL);
+WINOLEAPI_(void) CoFreeLibrary(HINSTANCE);
+WINOLEAPI_(void) CoFreeAllLibraries(void);
+WINOLEAPI_(void) CoFreeUnusedLibraries(void);
+WINOLEAPI CoCreateInstance(REFCLSID,LPUNKNOWN,DWORD,REFIID,PVOID*);
+WINOLEAPI StringFromCLSID(REFCLSID,LPOLESTR*);
+WINOLEAPI CLSIDFromString(LPOLESTR,LPCLSID);
+WINOLEAPI StringFromIID(REFIID,LPOLESTR*);
+WINOLEAPI IIDFromString(LPOLESTR,LPIID);
+WINOLEAPI_(BOOL) CoIsOle1Class(REFCLSID);
+WINOLEAPI ProgIDFromCLSID(REFCLSID,LPOLESTR*);
+WINOLEAPI CLSIDFromProgID(LPCOLESTR,LPCLSID);
+WINOLEAPI_(int) StringFromGUID2(REFGUID,LPOLESTR,int);
+WINOLEAPI CoCreateGuid(GUID*);
+WINOLEAPI_(BOOL) CoFileTimeToDosDateTime(FILETIME*,LPWORD,LPWORD);
+WINOLEAPI_(BOOL) CoDosDateTimeToFileTime(WORD,WORD,FILETIME*);
+WINOLEAPI CoFileTimeNow(FILETIME*);
+WINOLEAPI CoRegisterMessageFilter(LPMESSAGEFILTER,LPMESSAGEFILTER*);
+WINOLEAPI CoGetTreatAsClass(REFCLSID,LPCLSID);
+WINOLEAPI CoTreatAsClass(REFCLSID,REFCLSID);
+typedef HRESULT (STDAPICALLTYPE *LPFNGETCLASSOBJECT)(REFCLSID,REFIID,PVOID*);
+typedef HRESULT (STDAPICALLTYPE *LPFNCANUNLOADNOW)(void);
+STDAPI DllGetClassObject(REFCLSID,REFIID,PVOID*);
+STDAPI DllCanUnloadNow(void);
+WINOLEAPI_(PVOID) CoTaskMemAlloc(ULONG);
+WINOLEAPI_(PVOID) CoTaskMemRealloc(PVOID,ULONG);
+WINOLEAPI_(void) CoTaskMemFree(PVOID);
+WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*);
+WINOLEAPI CreateDataCache(LPUNKNOWN,REFCLSID,REFIID,PVOID*);
+WINOLEAPI StgCreateDocfile(const OLECHAR*,DWORD,DWORD,IStorage**);
+WINOLEAPI StgCreateDocfileOnILockBytes(ILockBytes*,DWORD,DWORD,IStorage**);
+WINOLEAPI StgOpenStorage(const OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**);
+WINOLEAPI StgOpenStorageOnILockBytes(ILockBytes*,IStorage*,DWORD,SNB,DWORD,IStorage**);
+WINOLEAPI StgIsStorageFile(const OLECHAR*);
+WINOLEAPI StgIsStorageILockBytes(ILockBytes*);
+WINOLEAPI StgSetTimes(OLECHAR const*,FILETIME const*,FILETIME const*,FILETIME const*);
+WINOLEAPI BindMoniker(LPMONIKER,DWORD,REFIID,PVOID*);
+WINOLEAPI MkParseDisplayName(LPBC,LPCOLESTR,ULONG*,LPMONIKER*);
+WINOLEAPI MonikerRelativePathTo(LPMONIKER,LPMONIKER,LPMONIKER*,BOOL);
+WINOLEAPI MonikerCommonPrefixWith(LPMONIKER,LPMONIKER,LPMONIKER*);
+WINOLEAPI CreateBindCtx(DWORD,LPBC*);
+WINOLEAPI CreateGenericComposite(LPMONIKER,LPMONIKER,LPMONIKER*);
+WINOLEAPI GetClassFile (LPCOLESTR,CLSID*);
+WINOLEAPI CreateFileMoniker(LPCOLESTR,LPMONIKER*);
+WINOLEAPI CreateItemMoniker(LPCOLESTR,LPCOLESTR,LPMONIKER*);
+WINOLEAPI CreateAntiMoniker(LPMONIKER*);
+WINOLEAPI CreatePointerMoniker(LPUNKNOWN,LPMONIKER*);
+WINOLEAPI GetRunningObjectTable(DWORD,LPRUNNINGOBJECTTABLE*);
+#pragma pack(pop)
+#endif
diff --git a/winsup/w32api/include/objfwd.h b/winsup/w32api/include/objfwd.h
new file mode 100644
index 000000000..ce567b6d9
--- /dev/null
+++ b/winsup/w32api/include/objfwd.h
@@ -0,0 +1,51 @@
+#ifndef _OBJFWD_H
+#define _OBJFWD_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef interface IMoniker *LPMONIKER;
+typedef interface IStream *LPSTREAM;
+typedef interface IMarshal *LPMARSHAL;
+typedef interface IMalloc *LPMALLOC;
+typedef interface IMallocSpy *LPMALLOCSPY;
+typedef interface IMessageFilter *LPMESSAGEFILTER;
+typedef interface IPersist *LPPERSIST;
+typedef interface IPersistStream *LPPERSISTSTREAM;
+typedef interface IRunningObjectTable *LPRUNNINGOBJECTTABLE;
+typedef interface IBindCtx *LPBINDCTX,*LPBC;
+typedef interface IAdviseSink *LPADVISESINK;
+typedef interface IAdviseSink2 *LPADVISESINK2;
+typedef interface IDataObject *LPDATAOBJECT;
+typedef interface IDataAdviseHolder *LPDATAADVISEHOLDER;
+typedef interface IEnumMoniker *LPENUMMONIKER;
+typedef interface IEnumFORMATETC *LPENUMFORMATETC;
+typedef interface IEnumSTATDATA *LPENUMSTATDATA;
+typedef interface IEnumSTATSTG *LPENUMSTATSTG;
+typedef interface IEnumSTATPROPSTG LPENUMSTATPROPSTG;
+typedef interface IEnumString *LPENUMSTRING;
+typedef interface IEnumUnknown *LPENUMUNKNOWN;
+typedef interface IStorage *LPSTORAGE;
+typedef interface IPersistStorage *LPPERSISTSTORAGE;
+typedef interface ILockBytes *LPLOCKBYTES;
+typedef interface IStdMarshalInfo *LPSTDMARSHALINFO;
+typedef interface IExternalConnection *LPEXTERNALCONNECTION;
+typedef interface IRunnableObject *LPRUNNABLEOBJECT;
+typedef interface IROTData *LPROTDATA;
+typedef interface IPersistFile *LPPERSISTFILE;
+typedef interface IRootStorage *LPROOTSTORAGE;
+typedef interface IRpcChannelBuffer *LPRPCCHANNELBUFFER;
+typedef interface IRpcProxyBuffer *LPRPCPROXYBUFFER;
+typedef interface IRpcStubBuffer *LPRPCSTUBBUFFER;
+typedef interface IPropertyStorage *LPPROPERTYSTORAGE;
+typedef interface IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG;
+typedef interface IPropertySetStorage *LPPROPERTYSETSTORAGE;
+typedef interface IClientSecurity *LPCLIENTSECURITY;
+typedef interface IServerSecurity *LPSERVERSECURITY;
+typedef interface IClassActivator *LPCLASSACTIVATOR;
+typedef interface IFillLockBytes *LPFILLLOCKBYTES;
+typedef interface IProgressNotify *LPPROGRESSNOTIFY;
+typedef interface ILayoutStorage *LPLAYOUTSTORAGE;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/objidl.h b/winsup/w32api/include/objidl.h
new file mode 100644
index 000000000..4c8eb07fc
--- /dev/null
+++ b/winsup/w32api/include/objidl.h
@@ -0,0 +1,1660 @@
+#ifndef _OBJIDL_H
+#define _OBJIDL_H
+
+#include <objfwd.h>
+
+typedef struct tagSTATSTG {
+ LPOLESTR pwcsName;
+ DWORD type;
+ ULARGE_INTEGER cbSize;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+ DWORD grfMode;
+ DWORD grfLocksSupported;
+ CLSID clsid;
+ DWORD grfStateBits;
+ DWORD reserved;
+} STATSTG;
+typedef enum tagSTGTY {
+ STGTY_STORAGE=1,
+ STGTY_STREAM,
+ STGTY_LOCKBYTES,
+ STGTY_PROPERTY
+} STGTY;
+typedef enum tagSTREAM_SEEK {
+ STREAM_SEEK_SET,
+ STREAM_SEEK_CUR,
+ STREAM_SEEK_END
+} STREAM_SEEK;
+typedef struct tagINTERFACEINFO {
+ LPUNKNOWN pUnk;
+ IID iid;
+ WORD wMethod;
+} INTERFACEINFO,*LPINTERFACEINFO;
+typedef enum tagCALLTYPE {
+ CALLTYPE_TOPLEVEL=1,
+ CALLTYPE_NESTED,
+ CALLTYPE_ASYNC,
+ CALLTYPE_TOPLEVEL_CALLPENDING,
+ CALLTYPE_ASYNC_CALLPENDING
+} CALLTYPE;
+typedef enum tagPENDINGTYPE {
+ PENDINGTYPE_TOPLEVEL=1,
+ PENDINGTYPE_NESTED
+} PENDINGTYPE;
+typedef enum tagPENDINGMSG {
+ PENDINGMSG_CANCELCALL=0,
+ PENDINGMSG_WAITNOPROCESS,
+ PENDINGMSG_WAITDEFPROCESS
+} PENDINGMSG;
+typedef OLECHAR **SNB;
+typedef enum tagDATADIR {
+ DATADIR_GET=1,
+ DATADIR_SET
+} DATADIR;
+typedef WORD CLIPFORMAT,*LPCLIPFORMAT;
+typedef struct tagDVTARGETDEVICE {
+ DWORD tdSize;
+ WORD tdDriverNameOffset;
+ WORD tdDeviceNameOffset;
+ WORD tdPortNameOffset;
+ WORD tdExtDevmodeOffset;
+ BYTE tdData[1];
+} DVTARGETDEVICE;
+typedef struct tagFORMATETC {
+ CLIPFORMAT cfFormat;
+ DVTARGETDEVICE*ptd;
+ DWORD dwAspect;
+ LONG lindex;
+ DWORD tymed;
+} FORMATETC,*LPFORMATETC;
+typedef struct tagRemSTGMEDIUM {
+ DWORD tymed;
+ DWORD dwHandleType;
+ ULONG pData;
+ unsigned long pUnkForRelease;
+ unsigned long cbData;
+ BYTE data[1];
+} RemSTGMEDIUM;
+typedef struct tagHLITEM {
+ ULONG uHLID;
+ LPWSTR pwzFriendlyName;
+} HLITEM;
+typedef struct tagSTATDATA {
+ FORMATETC formatetc;
+ DWORD grfAdvf;
+ struct IAdviseSink *pAdvSink;
+ DWORD dwConnection;
+} STATDATA;
+typedef struct tagSTATPROPSETSTG {
+ FMTID fmtid;
+ CLSID clsid;
+ DWORD grfFlags;
+ FILETIME mtime;
+ FILETIME ctime;
+ FILETIME atime;
+} STATPROPSETSTG;
+typedef enum tagEXTCONN {
+ EXTCONN_STRONG=1,
+ EXTCONN_WEAK=2,
+ EXTCONN_CALLABLE=4
+} EXTCONN;
+typedef struct tagMULTI_QI {
+ const IID *pIID;
+ IUnknown *pItf;
+ HRESULT hr;
+} MULTI_QI;
+typedef struct _AUTH_IDENTITY {
+ USHORT *User;
+ ULONG UserLength;
+ USHORT *Domain;
+ ULONG DomainLength;
+ USHORT *Password;
+ ULONG PasswordLength;
+ ULONG Flags;
+} AUTH_IDENTITY;
+typedef struct _COAUTHINFO{
+ DWORD dwAuthnSvc;
+ DWORD dwAuthzSvc;
+ LPWSTR pwszServerPrincName;
+ DWORD dwAuthnLevel;
+ DWORD dwImpersonationLevel;
+ AUTH_IDENTITY *pAuthIdentityData;
+ DWORD dwCapabilities;
+} COAUTHINFO;
+typedef struct _COSERVERINFO {
+ DWORD dwReserved1;
+ LPWSTR pwszName;
+ COAUTHINFO *pAuthInfo;
+ DWORD dwReserved2;
+} COSERVERINFO;
+typedef struct tagBIND_OPTS {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+} BIND_OPTS,*LPBIND_OPTS;
+typedef struct tagBIND_OPTS2 {
+ DWORD cbStruct;
+ DWORD grfFlags;
+ DWORD grfMode;
+ DWORD dwTickCountDeadline;
+ DWORD dwTrackFlags;
+ DWORD dwClassContext;
+ LCID locale;
+ COSERVERINFO *pServerInfo;
+} BIND_OPTS2,*LPBIND_OPTS2;
+typedef enum tagBIND_FLAGS {
+ BIND_MAYBOTHERUSER=1,
+ BIND_JUSTTESTEXISTENCE
+} BIND_FLAGS;
+typedef struct tagSTGMEDIUM {
+ DWORD tymed;
+ union {
+ HBITMAP hBitmap;
+ PVOID hMetaFilePict;
+ HENHMETAFILE hEnhMetaFile;
+ HGLOBAL hGlobal;
+ LPCSTR lpszFileName;
+ LPSTREAM pstm;
+ LPSTORAGE pstg;
+ } DUMMYUNIONNAME;
+ LPUNKNOWN pUnkForRelease;
+} STGMEDIUM,*LPSTGMEDIUM;
+typedef enum tagLOCKTYPE {
+ LOCK_WRITE=1,
+ LOCK_EXCLUSIVE=2,
+ LOCK_ONLYONCE=4
+} LOCKTYPE;
+typedef unsigned long RPCOLEDATAREP;
+typedef struct tagRPCOLEMESSAGE {
+ PVOID reserved1;
+ RPCOLEDATAREP dataRepresentation;
+ PVOID Buffer;
+ ULONG cbBuffer;
+ ULONG iMethod;
+ PVOID reserved2[5];
+ ULONG rpcFlags;
+} RPCOLEMESSAGE;
+typedef enum tagMKSYS {
+ MKSYS_NONE,
+ MKSYS_GENERICCOMPOSITE,
+ MKSYS_FILEMONIKER,
+ MKSYS_ANTIMONIKER,
+ MKSYS_ITEMMONIKER,
+ MKSYS_POINTERMONIKER
+} MKSYS;
+typedef enum tagMKREDUCE {
+ MKRREDUCE_ALL,
+ MKRREDUCE_ONE=196608,
+ MKRREDUCE_TOUSER=131072,
+ MKRREDUCE_THROUGHUSER=65536
+} MKRREDUCE;
+typedef struct tagRemSNB {
+ unsigned long ulCntStr;
+ unsigned long ulCntChar;
+ OLECHAR rgString[1];
+} RemSNB;
+typedef enum tagADVF {
+ ADVF_NODATA=1,ADVF_PRIMEFIRST=2,ADVF_ONLYONCE=4,ADVF_DATAONSTOP=64,
+ ADVFCACHE_NOHANDLER=8,ADVFCACHE_FORCEBUILTIN=16,ADVFCACHE_ONSAVE=32
+} ADVF;
+typedef enum tagTYMED {
+ TYMED_HGLOBAL=1,TYMED_FILE=2,TYMED_ISTREAM=4,TYMED_ISTORAGE=8,
+ TYMED_GDI=16,TYMED_MFPICT=32,TYMED_ENHMF=64,TYMED_NULL=0
+} TYMED;
+typedef enum tagSERVERCALL {
+ SERVERCALL_ISHANDLED,SERVERCALL_REJECTED,SERVERCALL_RETRYLATER
+} SERVERCALL;
+typedef struct tagCAUB {
+ ULONG cElems;
+ unsigned char *pElems;
+}CAUB;
+typedef struct tagCAI {
+ ULONG cElems;
+ short *pElems;
+}CAI;
+typedef struct tagCAUI {
+ ULONG cElems;
+ USHORT *pElems;
+}CAUI;
+typedef struct tagCAL {
+ ULONG cElems;
+ long *pElems;
+}CAL;
+typedef struct tagCAUL {
+ ULONG cElems;
+ ULONG *pElems;
+}CAUL;
+typedef struct tagCAFLT {
+ ULONG cElems;
+ float *pElems;
+}CAFLT;
+typedef struct tagCADBL {
+ ULONG cElems;
+ double *pElems;
+}CADBL;
+typedef struct tagCACY {
+ ULONG cElems;
+ CY *pElems;
+}CACY;
+typedef struct tagCADATE {
+ ULONG cElems;
+ DATE *pElems;
+}CADATE;
+typedef struct tagCABSTR {
+ ULONG cElems;
+ BSTR *pElems;
+}CABSTR;
+typedef struct tagCABSTRBLOB {
+ ULONG cElems;
+ BSTRBLOB *pElems;
+}CABSTRBLOB;
+typedef struct tagCABOOL {
+ ULONG cElems;
+ VARIANT_BOOL *pElems;
+}CABOOL;
+typedef struct tagCASCODE {
+ ULONG cElems;
+ SCODE *pElems;
+}CASCODE;
+typedef struct tagCAH {
+ ULONG cElems;
+ LARGE_INTEGER *pElems;
+}CAH;
+typedef struct tagCAUH {
+ ULONG cElems;
+ ULARGE_INTEGER *pElems;
+}CAUH;
+typedef struct tagCALPSTR {
+ ULONG cElems;
+ LPSTR *pElems;
+}CALPSTR;
+typedef struct tagCALPWSTR {
+ ULONG cElems;
+ LPWSTR *pElems;
+}CALPWSTR;
+typedef struct tagCAFILETIME {
+ ULONG cElems;
+ FILETIME *pElems;
+}CAFILETIME;
+typedef struct tagCACLIPDATA {
+ ULONG cElems;
+ CLIPDATA *pElems;
+}CACLIPDATA;
+typedef struct tagCACLSID {
+ ULONG cElems;
+ CLSID *pElems;
+}CACLSID;
+typedef struct tagPROPVARIANT *LPPROPVARIANT;
+typedef struct tagCAPROPVARIANT {
+ ULONG cElems;
+ LPPROPVARIANT pElems;
+}CAPROPVARIANT;
+typedef struct tagPROPVARIANT {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ union {
+ UCHAR bVal;
+ short iVal;
+ USHORT uiVal;
+ VARIANT_BOOL boolVal;
+#ifndef __cplusplus
+ _VARIANT_BOOL bool;
+#endif
+ long lVal;
+ ULONG ulVal;
+ float fltVal;
+ SCODE scode;
+ LARGE_INTEGER hVal;
+ ULARGE_INTEGER uhVal;
+ double dblVal;
+ CY cyVal;
+ DATE date;
+ FILETIME filetime;
+ CLSID *puuid;
+ BLOB blob;
+ CLIPDATA *pclipdata;
+ LPSTREAM pStream;
+ LPSTORAGE pStorage;
+ BSTR bstrVal;
+ BSTRBLOB bstrblobVal;
+ LPSTR pszVal;
+ LPWSTR pwszVal;
+ CAUB caub;
+ CAI cai;
+ CAUI caui;
+ CABOOL cabool;
+ CAL cal;
+ CAUL caul;
+ CAFLT caflt;
+ CASCODE cascode;
+ CAH cah;
+ CAUH cauh;
+ CADBL cadbl;
+ CACY cacy;
+ CADATE cadate;
+ CAFILETIME cafiletime;
+ CACLSID cauuid;
+ CACLIPDATA caclipdata;
+ CABSTR cabstr;
+ CABSTRBLOB cabstrblob;
+ CALPSTR calpstr;
+ CALPWSTR calpwstr;
+ CAPROPVARIANT capropvar;
+ } DUMMYUNIONNAME;
+} PROPVARIANT;
+typedef struct tagPROPSPEC {
+ ULONG ulKind;
+ union {
+ PROPID propid;
+ LPOLESTR lpwstr;
+ } DUMMYUNIONNAME;
+}PROPSPEC;
+typedef struct tagSTATPROPSTG {
+ LPOLESTR lpwstrName;
+ PROPID propid;
+ VARTYPE vt;
+} STATPROPSTG;
+typedef enum PROPSETFLAG {
+ PROPSETFLAG_DEFAULT,PROPSETFLAG_NONSIMPLE,PROPSETFLAG_ANSI,
+ PROPSETFLAG_UNBUFFERED=4
+} PROPSETFLAG;
+typedef struct tagSTORAGELAYOUT {
+ DWORD LayoutType;
+ OLECHAR* pwcsElementName;
+ LARGE_INTEGER cOffset;
+ LARGE_INTEGER cBytes;
+} STORAGELAYOUT;
+DECLARE_ENUMERATOR(FORMATETC);
+DECLARE_ENUMERATOR(HLITEM);
+DECLARE_ENUMERATOR(STATDATA);
+DECLARE_ENUMERATOR(STATPROPSETSTG);
+DECLARE_ENUMERATOR(STATPROPSTG);
+DECLARE_ENUMERATOR(STATSTG);
+DECLARE_ENUMERATOR_(IEnumString,LPOLESTR);
+DECLARE_ENUMERATOR_(IEnumMoniker,interface IMoniker);
+DECLARE_ENUMERATOR_(IEnumUnknown,IUnknown*);
+
+EXTERN_C const IID IID_ISequentialStream;
+#undef INTERFACE
+#define INTERFACE ISequentialStream
+DECLARE_INTERFACE_(ISequentialStream,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE;
+ STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE;
+};
+
+EXTERN_C const IID IID_IStream;
+#undef INTERFACE
+#define INTERFACE IStream
+DECLARE_INTERFACE_(IStream,ISequentialStream)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Read)(THIS_ void*,ULONG,ULONG*) PURE;
+ STDMETHOD(Write)(THIS_ void const*,ULONG,ULONG*) PURE;
+ STDMETHOD(Seek)(THIS_ LARGE_INTEGER,DWORD,ULARGE_INTEGER*) PURE;
+ STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE;
+ STDMETHOD(CopyTo)(THIS_ IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*) PURE;
+ STDMETHOD(Commit)(THIS_ DWORD) PURE;
+ STDMETHOD(Revert)(THIS) PURE;
+ STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE;
+ STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE;
+ STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE;
+ STDMETHOD(Clone)(THIS_ LPSTREAM*) PURE;
+};
+
+EXTERN_C const IID IID_IMarshal;
+#undef INTERFACE
+#define INTERFACE IMarshal
+DECLARE_INTERFACE_(IMarshal,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetUnmarshalClass) (THIS_ REFIID,DWORD,PVOID,DWORD,CLSID) PURE;
+ STDMETHOD(GetMarshalSizeMax) (THIS_ REFIID,DWORD,PVOID,DWORD,PDWORD) PURE;
+ STDMETHOD(MarshalInterface) (THIS_ REFIID,DWORD,DWORD) PURE;
+ STDMETHOD(UnmarshalInterface) (THIS_ IStream*,void**) PURE;
+ STDMETHOD(ReleaseMarshalData) (THIS_ IStream*) PURE;
+ STDMETHOD(DisconnectObject) (THIS_ DWORD) PURE;
+};
+
+EXTERN_C const IID IID_IStdMarshalInfo;
+#undef INTERFACE
+#define INTERFACE IStdMarshalInfo
+DECLARE_INTERFACE_(IStdMarshalInfo,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassForHandler)(THIS_ DWORD,PVOID,CLSID*) PURE;
+};
+
+EXTERN_C const IID IID_IMalloc;
+#undef INTERFACE
+#define INTERFACE IMalloc
+DECLARE_INTERFACE_(IMalloc,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(void*,Alloc)(THIS_ ULONG) PURE;
+ STDMETHOD_(void,ReAlloc)(THIS_ void*) PURE;
+ STDMETHOD_(void*,Free)(THIS_ void*) PURE;
+ STDMETHOD_(ULONG,GetSize)(THIS_ void*) PURE;
+ STDMETHOD_(int,DidAlloc)(THIS_ void*) PURE;
+ STDMETHOD_(void,HeapMinimize)(THIS) PURE;
+};
+
+EXTERN_C const IID IID_IMallocSpy;
+#undef INTERFACE
+#define INTERFACE IMallocSpy
+DECLARE_INTERFACE_(IMallocSpy,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(ULONG,PreAlloc)(THIS_ ULONG) PURE;
+ STDMETHOD_(void*,PostAlloc)(THIS_ void*) PURE;
+ STDMETHOD_(void*,PreFree)(THIS_ void*,BOOL) PURE;
+ STDMETHOD_(void,PostFree)(THIS_ BOOL) PURE;
+ STDMETHOD_(ULONG,PreRealloc)(THIS_ void*,ULONG,void*) PURE;
+ STDMETHOD_(void*,PostRealloc)(THIS_ void*,BOOL) PURE;
+ STDMETHOD_(void*,PreGetSize)(THIS_ void*,BOOL) PURE;
+ STDMETHOD_(ULONG,PostGetSize)(THIS_ ULONG,BOOL) PURE;
+ STDMETHOD_(void*,PreDidAlloc)(THIS_ void*,BOOL) PURE;
+ STDMETHOD_(int,PostDidAlloc)(THIS_ void*,BOOL,int) PURE;
+ STDMETHOD_(void,PreHeapMinimize)(THIS) PURE;
+ STDMETHOD_(void,PostHeapMinimize)(THIS) PURE;
+};
+
+EXTERN_C const IID IID_IMessageFilter;
+#undef INTERFACE
+#define INTERFACE IMessageFilter
+DECLARE_INTERFACE_(IMessageFilter,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(DWORD,HandleInComingCall)(THIS_ DWORD,HTASK,DWORD,LPINTERFACEINFO) PURE;
+ STDMETHOD_(DWORD,RetryRejectedCall)(THIS_ HTASK,DWORD,DWORD) PURE;
+ STDMETHOD_(DWORD,MessagePending)(THIS_ HTASK,DWORD,DWORD) PURE;
+};
+
+EXTERN_C const IID IID_IPersist;
+#undef INTERFACE
+#define INTERFACE IPersist
+DECLARE_INTERFACE_(IPersist,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+};
+
+EXTERN_C const IID IID_IPersistStream;
+#undef INTERFACE
+#define INTERFACE IPersistStream
+DECLARE_INTERFACE_(IPersistStream,IPersist)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
+ STDMETHOD(IsDirty)(THIS) PURE;
+ STDMETHOD(Load)(THIS_ IStream*) PURE;
+ STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE;
+ STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE;
+};
+
+EXTERN_C const IID IID_IRunningObjectTable;
+#undef INTERFACE
+#define INTERFACE IRunningObjectTable
+DECLARE_INTERFACE_(IRunningObjectTable,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Register)(THIS_ LPUNKNOWN,LPMONIKER,PDWORD) PURE;
+ STDMETHOD(Revoke)(THIS_ DWORD) PURE;
+ STDMETHOD(IsRunning)(THIS_ LPMONIKER) PURE;
+ STDMETHOD(GetObject)(THIS_ LPMONIKER,LPUNKNOWN*) PURE;
+ STDMETHOD(NoteChangeTime)(THIS_ DWORD,LPFILETIME) PURE;
+ STDMETHOD(GetTimeOfLastChange)(THIS_ LPMONIKER,LPFILETIME) PURE;
+ STDMETHOD(EnumRunning)(THIS_ IEnumMoniker**) PURE;
+};
+
+EXTERN_C const IID IID_IBindCtx;
+#undef INTERFACE
+#define INTERFACE IBindCtx
+DECLARE_INTERFACE_(IBindCtx,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(RegisterObjectBound)(THIS_ LPUNKNOWN) PURE;
+ STDMETHOD(RevokeObjectBound)(THIS_ LPUNKNOWN) PURE;
+ STDMETHOD(ReleaseBoundObjects)(THIS) PURE;
+ STDMETHOD(SetBindOptions)(THIS_ LPBIND_OPTS) PURE;
+ STDMETHOD(GetBindOptions)(THIS_ LPBIND_OPTS) PURE;
+ STDMETHOD(GetRunningObjectTable)(THIS_ IRunningObjectTable**) PURE;
+ STDMETHOD(RegisterObjectParam)(THIS_ LPOLESTR,IUnknown*) PURE;
+ STDMETHOD(GetObjectParam)(THIS_ LPOLESTR,IUnknown**) PURE;
+ STDMETHOD(EnumObjectParam)(THIS_ IEnumString**) PURE;
+ STDMETHOD(RevokeObjectParam)(THIS_ LPOLESTR) PURE;
+};
+
+EXTERN_C const IID IID_IPersistStream;
+#undef INTERFACE
+#define INTERFACE IMoniker
+DECLARE_INTERFACE_(IMoniker,IPersistStream)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
+ STDMETHOD(IsDirty)(THIS) PURE;
+ STDMETHOD(Load)(THIS_ IStream*) PURE;
+ STDMETHOD(Save)(THIS_ IStream*,BOOL) PURE;
+ STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE;
+ STDMETHOD(BindToObject)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE;
+ STDMETHOD(BindToStorage)(THIS_ IBindCtx*,IMoniker*,REFIID,PVOID*) PURE;
+ STDMETHOD(Reduce)(THIS_ IBindCtx*,DWORD,IMoniker**,IMoniker**) PURE;
+ STDMETHOD(ComposeWith)(THIS_ IMoniker*,BOOL,IMoniker**) PURE;
+ STDMETHOD(Enum)(THIS_ BOOL,IEnumMoniker**) PURE;
+ STDMETHOD(IsEqual)(THIS_ IMoniker*) PURE;
+ STDMETHOD(Hash)(THIS_ PDWORD) PURE;
+ STDMETHOD(IsRunning)(THIS_ IBindCtx*,IMoniker*,IMoniker*) PURE;
+ STDMETHOD(GetTimeOfLastChange)(THIS_ IBindCtx*,IMoniker*,LPFILETIME) PURE;
+ STDMETHOD(Inverse)(THIS_ IMoniker**) PURE;
+ STDMETHOD(CommonPrefixWith)(THIS_ IMoniker*,IMoniker**) PURE;
+ STDMETHOD(RelativePathTo)(THIS_ IMoniker*,IMoniker**) PURE;
+ STDMETHOD(GetDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR*) PURE;
+ STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,IMoniker*,LPOLESTR,ULONG*,IMoniker**) PURE;
+ STDMETHOD(IsSystemMoniker)(THIS_ PDWORD) PURE;
+};
+
+EXTERN_C const IID IID_IPersistStorage;
+#undef INTERFACE
+#define INTERFACE IPersistStorage
+DECLARE_INTERFACE_(IPersistStorage,IPersist)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ CLSID) PURE;
+ STDMETHOD(IsDirty)(THIS) PURE;
+ STDMETHOD(InitNew)(THIS_ LPSTORAGE) PURE;
+ STDMETHOD(Load)(THIS_ LPSTORAGE) PURE;
+ STDMETHOD(Save)(THIS_ LPSTORAGE,BOOL) PURE;
+ STDMETHOD(SaveCompleted)(THIS_ LPSTORAGE) PURE;
+ STDMETHOD(HandsOffStorage)(THIS) PURE;
+};
+
+EXTERN_C const IID IID_IPersistFile;
+#undef INTERFACE
+#define INTERFACE IPersistFile
+DECLARE_INTERFACE_(IPersistFile,IPersist)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ CLSID) PURE;
+ STDMETHOD(IsDirty)(THIS) PURE;
+ STDMETHOD(Load)(THIS_ LPCOLESTR,DWORD) PURE;
+ STDMETHOD(Save)(THIS_ LPCOLESTR,BOOL) PURE;
+ STDMETHOD(SaveCompleted)(THIS_ LPCOLESTR) PURE;
+ STDMETHOD(GetCurFile)(THIS_ LPOLESTR*) PURE;
+};
+
+EXTERN_C const IID IID_IAdviseSink;
+#undef INTERFACE
+#define INTERFACE IAdviseSink
+DECLARE_INTERFACE_(IAdviseSink,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+ STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE;
+ STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE;
+ STDMETHOD_(void,OnSave)(THIS) PURE;
+ STDMETHOD_(void,OnClose)(THIS) PURE;
+};
+
+EXTERN_C const IID IID_IAdviseSink2;
+#undef INTERFACE
+#define INTERFACE IAdviseSink2
+DECLARE_INTERFACE_(IAdviseSink2,IAdviseSink)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(void,OnDataChange)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+ STDMETHOD_(void,OnViewChange)(THIS_ DWORD,LONG) PURE;
+ STDMETHOD_(void,OnRename)(THIS_ IMoniker*) PURE;
+ STDMETHOD_(void,OnSave)(THIS) PURE;
+ STDMETHOD_(void,OnClose)(THIS) PURE;
+ STDMETHOD_(void,OnLinkSrcChange)(THIS_ IMoniker*);
+};
+
+EXTERN_C const IID IID_IDataObject;
+#undef INTERFACE
+#define INTERFACE IDataObject
+DECLARE_INTERFACE_(IDataObject,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetData)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+ STDMETHOD(GetDataHere)(THIS_ FORMATETC*,STGMEDIUM*) PURE;
+ STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE;
+ STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE;
+ STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE;
+ STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC**) PURE;
+ STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE;
+ STDMETHOD(DUnadvise)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**) PURE;
+};
+
+EXTERN_C const IID IID_IDataAdviseHolder;
+#undef INTERFACE
+#define INTERFACE IDataAdviseHolder
+DECLARE_INTERFACE_(IDataAdviseHolder,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Advise)(THIS_ IDataObject*,FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE;
+ STDMETHOD(Unadvise)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumAdvise)(THIS_ IEnumSTATDATA**) PURE;
+ STDMETHOD(SendOnDataChange)(THIS_ IDataObject*,DWORD,DWORD) PURE;
+};
+
+EXTERN_C const IID IID_IStorage;
+#undef INTERFACE
+#define INTERFACE IStorage
+DECLARE_INTERFACE_(IStorage,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(CreateStream)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStream**) PURE;
+ STDMETHOD(OpenStream)(THIS_ LPCWSTR,PVOID,DWORD,DWORD,IStream**) PURE;
+ STDMETHOD(CreateStorage)(THIS_ LPCWSTR,DWORD,DWORD,DWORD,IStorage**) PURE;
+ STDMETHOD(OpenStorage)(THIS_ LPCWSTR,IStorage*,DWORD,SNB,DWORD,IStorage**) PURE;
+ STDMETHOD(CopyTo)(THIS_ DWORD,IID const*,SNB,IStorage*) PURE;
+ STDMETHOD(MoveElementTo)(THIS_ LPCWSTR,IStorage*,LPCWSTR,DWORD) PURE;
+ STDMETHOD(Commit)(THIS_ DWORD) PURE;
+ STDMETHOD(Revert)(THIS) PURE;
+ STDMETHOD(EnumElements)(THIS_ DWORD,PVOID,DWORD,IEnumSTATSTG**) PURE;
+ STDMETHOD(DestroyElement)(THIS_ LPCWSTR) PURE;
+ STDMETHOD(RenameElement)(THIS_ LPCWSTR,LPCWSTR) PURE;
+ STDMETHOD(SetElementTimes)(THIS_ LPCWSTR,FILETIME const*,FILETIME const*,FILETIME const*) PURE;
+ STDMETHOD(SetClass)(THIS_ REFCLSID) PURE;
+ STDMETHOD(SetStateBits)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE;
+};
+
+EXTERN_C const IID IID_IRootStorage;
+#undef INTERFACE
+#define INTERFACE IRootStorage
+DECLARE_INTERFACE_(IRootStorage,IPersist)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(SwitchToFile)(THIS_ LPOLESTR) PURE;
+};
+
+EXTERN_C const IID IID_IRpcChannelBuffer;
+#undef INTERFACE
+#define INTERFACE IRpcChannelBuffer
+DECLARE_INTERFACE_(IRpcChannelBuffer,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetBuffer)(THIS_ RPCOLEMESSAGE*,REFIID) PURE;
+ STDMETHOD(SendReceive)(THIS_ RPCOLEMESSAGE*,PULONG) PURE;
+ STDMETHOD(FreeBuffer)(THIS_ RPCOLEMESSAGE*) PURE;
+ STDMETHOD(GetDestCtx)(THIS_ PDWORD,PVOID*) PURE;
+ STDMETHOD(IsConnected)(THIS) PURE;
+};
+
+EXTERN_C const IID IID_IRpcProxyBuffer;
+#undef INTERFACE
+#define INTERFACE IRpcProxyBuffer
+DECLARE_INTERFACE_(IRpcProxyBuffer,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Connect)(THIS_ IRpcChannelBuffer*) PURE;
+ STDMETHOD_(void,Disconnect)(THIS) PURE;
+
+};
+
+EXTERN_C const IID IID_IRpcStubBuffer;
+#undef INTERFACE
+#define INTERFACE IRpcStubBuffer
+DECLARE_INTERFACE_(IRpcStubBuffer,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Connect)(THIS_ LPUNKNOWN) PURE;
+ STDMETHOD_(void,Disconnect)(THIS) PURE;
+ STDMETHOD(Invoke)(THIS_ RPCOLEMESSAGE*,LPRPCSTUBBUFFER) PURE;
+ STDMETHOD_(LPRPCSTUBBUFFER,IsIIDSupported)(THIS_ REFIID) PURE;
+ STDMETHOD_(ULONG,CountRefs)(THIS) PURE;
+ STDMETHOD(DebugServerQueryInterface)(THIS_ PVOID*) PURE;
+ STDMETHOD(DebugServerRelease)(THIS_ PVOID) PURE;
+};
+
+EXTERN_C const IID IID_IPSFactoryBuffer;
+#undef INTERFACE
+#define INTERFACE IPSFactoryBuffer
+DECLARE_INTERFACE_(IPSFactoryBuffer,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(CreateProxy)(THIS_ LPUNKNOWN,REFIID,LPRPCPROXYBUFFER*,PVOID*) PURE;
+ STDMETHOD(CreateStub)(THIS_ REFIID,LPUNKNOWN,LPRPCSTUBBUFFER*) PURE;
+};
+
+EXTERN_C const IID IID_ILockBytes;
+#undef INTERFACE
+#define INTERFACE ILockBytes
+DECLARE_INTERFACE_(ILockBytes,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(ReadAt)(THIS_ ULARGE_INTEGER,PVOID,ULONG,ULONG*) PURE;
+ STDMETHOD(WriteAt)(THIS_ ULARGE_INTEGER,PCVOID,ULONG,ULONG*) PURE;
+ STDMETHOD(Flush)(THIS) PURE;
+ STDMETHOD(SetSize)(THIS_ ULARGE_INTEGER) PURE;
+ STDMETHOD(LockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE;
+ STDMETHOD(UnlockRegion)(THIS_ ULARGE_INTEGER,ULARGE_INTEGER,DWORD) PURE;
+ STDMETHOD(Stat)(THIS_ STATSTG*,DWORD) PURE;
+};
+
+EXTERN_C const IID IID_IExternalConnection;
+#undef INTERFACE
+#define INTERFACE IExternalConnection
+DECLARE_INTERFACE_(IExternalConnection,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(AddConnection)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(ReleaseConnection)(THIS_ DWORD,DWORD,BOOL) PURE;
+};
+
+EXTERN_C const IID IID_IRunnableObject;
+#undef INTERFACE
+#define INTERFACE IRunnableObject
+DECLARE_INTERFACE_(IRunnableObject,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetRunningClass)(THIS_ LPCLSID) PURE;
+ STDMETHOD(Run)(THIS_ LPBC) PURE;
+ STDMETHOD_(BOOL,IsRunning)(THIS) PURE;
+ STDMETHOD(LockRunning)(THIS_ BOOL,BOOL) PURE;
+ STDMETHOD(SetContainedObject)(THIS_ BOOL) PURE;
+};
+
+EXTERN_C const IID IID_IROTData;
+#undef INTERFACE
+#define INTERFACE IROTData
+DECLARE_INTERFACE_(IROTData,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetComparisonData)(THIS_ PVOID,ULONG,PULONG) PURE;
+};
+
+EXTERN_C const IID IID_IChannelHook;
+#undef INTERFACE
+#define INTERFACE IChannelHook
+DECLARE_INTERFACE_(IChannelHook,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(void,ClientGetSize)(THIS_ REFGUID,REFIID,PULONG) PURE;
+ STDMETHOD_(void,ClientFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID) PURE;
+ STDMETHOD_(void,ClientNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD,HRESULT) PURE;
+ STDMETHOD_(void,ServerNotify)(THIS_ REFGUID,REFIID,ULONG,PVOID,DWORD) PURE;
+ STDMETHOD_(void,ServerGetSize)(THIS_ REFGUID,REFIID,HRESULT,PULONG) PURE;
+ STDMETHOD_(void,ServerFillBuffer)(THIS_ REFGUID,REFIID,PULONG,PVOID,HRESULT) PURE;
+};
+
+EXTERN_C const IID IID_IPropertyStorage;
+#undef INTERFACE
+#define INTERFACE IPropertyStorage
+DECLARE_INTERFACE_(IPropertyStorage,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(ReadMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*) PURE;
+ STDMETHOD(WriteMultiple)(THIS_ ULONG,PROPSPEC const*,PROPVARIANT*,PROPID) PURE;
+ STDMETHOD(DeleteMultiple)(THIS_ ULONG,PROPSPEC const*) PURE;
+ STDMETHOD(ReadPropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR*) PURE;
+ STDMETHOD(WritePropertyNames)(THIS_ ULONG,PROPID const*,LPWSTR const*) PURE;
+ STDMETHOD(DeletePropertyNames)(THIS_ ULONG,PROPID const*) PURE;
+ STDMETHOD(SetClass)(THIS_ REFCLSID) PURE;
+ STDMETHOD(Commit)(THIS_ DWORD) PURE;
+ STDMETHOD(Revert)(THIS) PURE;
+ STDMETHOD(Enum)(THIS_ IEnumSTATPROPSTG**) PURE;
+ STDMETHOD(Stat)(THIS_ STATPROPSTG*) PURE;
+ STDMETHOD(SetTimes)(THIS_ FILETIME const*,FILETIME const*,FILETIME const*) PURE;
+};
+
+EXTERN_C const IID IID_IPropertySetStorage;
+#undef INTERFACE
+#define INTERFACE IPropertySetStorage
+DECLARE_INTERFACE_(IPropertySetStorage,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Create)(THIS_ REFFMTID,CLSID*,DWORD,DWORD,LPPROPERTYSTORAGE*) PURE;
+ STDMETHOD(Open)(THIS_ REFFMTID,DWORD,LPPROPERTYSTORAGE*) PURE;
+ STDMETHOD(Delete)(THIS_ REFFMTID) PURE;
+ STDMETHOD(Enum)(THIS_ IEnumSTATPROPSETSTG**) PURE;
+};
+
+EXTERN_C const IID IID_IClientSecurity;
+#undef INTERFACE
+#define INTERFACE IClientSecurity
+DECLARE_INTERFACE_(IClientSecurity,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(QueryBlanket)(THIS_ PVOID,PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTH_IDENTITY_HANDLE**,PDWORD*) PURE;
+ STDMETHOD(SetBlanket)(THIS_ PVOID,DWORD,DWORD,LPWSTR,DWORD,DWORD,RPC_AUTH_IDENTITY_HANDLE*,DWORD) PURE;
+ STDMETHOD(CopyProxy)(THIS_ LPUNKNOWN,LPUNKNOWN*) PURE;
+};
+
+EXTERN_C const IID IID_IServerSecurity;
+#undef INTERFACE
+#define INTERFACE IServerSecurity
+DECLARE_INTERFACE_(IServerSecurity,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(QueryBlanket)(THIS_ PDWORD,PDWORD,OLECHAR**,PDWORD,PDWORD,RPC_AUTHZ_HANDLE*,PDWORD*) PURE;
+ STDMETHOD(ImpersonateClient)(THIS) PURE;
+ STDMETHOD(RevertToSelf)(THIS) PURE;
+ STDMETHOD(IsImpersonating)(THIS) PURE;
+};
+
+EXTERN_C const IID IID_IClassActivator;
+#undef INTERFACE
+#define INTERFACE IClassActivator
+DECLARE_INTERFACE_(IClassActivator,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassObject)(THIS_ REFCLSID,DWORD,LCID,REFIID,PVOID*) PURE;
+};
+
+EXTERN_C const IID IID_IFillLockBytes;
+#undef INTERFACE
+#define INTERFACE IFillLockBytes
+DECLARE_INTERFACE_(IFillLockBytes,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(FillAppend)(THIS_ void const*,ULONG,PULONG) PURE;
+ STDMETHOD(FillAt)(THIS_ ULARGE_INTEGER,void const*,ULONG,PULONG) PURE;
+ STDMETHOD(SetFillSize)(THIS_ ULARGE_INTEGER) PURE;
+ STDMETHOD(Terminate)(THIS_ BOOL) PURE;
+};
+
+EXTERN_C const IID IID_IProgressNotify;
+#undef INTERFACE
+#define INTERFACE IProgressNotify
+DECLARE_INTERFACE_(IProgressNotify,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(OnProgress)(THIS_ DWORD,DWORD,BOOL,BOOL) PURE;
+};
+
+EXTERN_C const IID IID_ILayoutStorage;
+#undef INTERFACE
+#define INTERFACE ILayoutStorage
+DECLARE_INTERFACE_(ILayoutStorage,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(LayoutScript)(THIS_ STORAGELAYOUT*,DWORD,DWORD) PURE;
+ STDMETHOD(BeginMonitor)(THIS) PURE;
+ STDMETHOD(EndMonitor)(THIS) PURE;
+ STDMETHOD(ReLayoutDocfile)(THIS_ OLECHAR*) PURE;
+};
+
+HRESULT STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,CLSID*);
+void STDMETHODCALLTYPE IMarshal_GetUnmarshalClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Proxy(IMarshal*,REFIID,void*,DWORD,void*,DWORD,DWORD*);
+void STDMETHODCALLTYPE IMarshal_GetMarshalSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_MarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void*,DWORD,void*,DWORD);
+void STDMETHODCALLTYPE IMarshal_MarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Proxy(IMarshal*,IStream*,REFIID,void**);
+void STDMETHODCALLTYPE IMarshal_UnmarshalInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Proxy(IMarshal*,IStream*);
+void STDMETHODCALLTYPE IMarshal_ReleaseMarshalData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMarshal_DisconnectObject_Proxy(IMarshal*,DWORD);
+void STDMETHODCALLTYPE IMarshal_DisconnectObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMalloc_Alloc_Proxy(IMalloc*,ULONG);
+void STDMETHODCALLTYPE IMalloc_Alloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMalloc_Realloc_Proxy(IMalloc*,void*,ULONG);
+void STDMETHODCALLTYPE IMalloc_Realloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMalloc_Free_Proxy(IMalloc*,void*);
+void STDMETHODCALLTYPE IMalloc_Free_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IMalloc_GetSize_Proxy(IMalloc*,void*);
+void STDMETHODCALLTYPE IMalloc_GetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+int STDMETHODCALLTYPE IMalloc_DidAlloc_Proxy(IMalloc*,void*);
+void STDMETHODCALLTYPE IMalloc_DidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMalloc_HeapMinimize_Proxy(IMalloc*);
+void STDMETHODCALLTYPE IMalloc_HeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IMallocSpy_PreAlloc_Proxy(IMallocSpy*,ULONG cbRequest);
+void STDMETHODCALLTYPE IMallocSpy_PreAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PostAlloc_Proxy(IMallocSpy*,void*);
+void STDMETHODCALLTYPE IMallocSpy_PostAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PreFree_Proxy(IMallocSpy*,void*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PreFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMallocSpy_PostFree_Proxy(IMallocSpy*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PostFree_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IMallocSpy_PreRealloc_Proxy(IMallocSpy*,void*,ULONG,void**,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PreRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PostRealloc_Proxy(IMallocSpy*,void*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PostRealloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PreGetSize_Proxy(IMallocSpy*,void*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PreGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IMallocSpy_PostGetSize_Proxy(IMallocSpy*,ULONG,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PostGetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void* STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Proxy(IMallocSpy*,void*,BOOL);
+void STDMETHODCALLTYPE IMallocSpy_PreDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+int STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Proxy(IMallocSpy*,void*,BOOL,int);
+void STDMETHODCALLTYPE IMallocSpy_PostDidAlloc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Proxy(IMallocSpy* );
+void STDMETHODCALLTYPE IMallocSpy_PreHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Proxy(IMallocSpy*);
+void STDMETHODCALLTYPE IMallocSpy_PostHeapMinimize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Proxy(IStdMarshalInfo*,DWORD,void*,CLSID*);
+void STDMETHODCALLTYPE IStdMarshalInfo_GetClassForHandler_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IExternalConnection_AddConnection_Proxy(IExternalConnection*,DWORD,DWORD);
+void STDMETHODCALLTYPE IExternalConnection_AddConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Proxy(IExternalConnection*,DWORD,DWORD,BOOL);
+void STDMETHODCALLTYPE IExternalConnection_ReleaseConnection_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*);
+void STDMETHODCALLTYPE IEnumUnknown_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Skip_Proxy(IEnumUnknown*,ULONG);
+void STDMETHODCALLTYPE IEnumUnknown_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Reset_Proxy(IEnumUnknown* );
+void STDMETHODCALLTYPE IEnumUnknown_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Clone_Proxy(IEnumUnknown*,IEnumUnknown**);
+void STDMETHODCALLTYPE IEnumUnknown_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Proxy(IBindCtx*,IUnknown*punk);
+void STDMETHODCALLTYPE IBindCtx_RegisterObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*_pRpcChannelBuffer,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Proxy(IBindCtx*,IUnknown*punk);
+void STDMETHODCALLTYPE IBindCtx_RevokeObjectBound_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Proxy(IBindCtx*);
+void STDMETHODCALLTYPE IBindCtx_ReleaseBoundObjects_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_SetBindOptions_Proxy(IBindCtx*,BIND_OPTS*);
+void STDMETHODCALLTYPE IBindCtx_SetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_GetBindOptions_Proxy(IBindCtx*,BIND_OPTS*pbindopts);
+void STDMETHODCALLTYPE IBindCtx_GetBindOptions_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Proxy(IBindCtx*,IRunningObjectTable**);
+void STDMETHODCALLTYPE IBindCtx_GetRunningObjectTable_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown*);
+void STDMETHODCALLTYPE IBindCtx_RegisterObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_GetObjectParam_Proxy(IBindCtx*,LPCSTR,IUnknown**);
+void STDMETHODCALLTYPE IBindCtx_GetObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Proxy(IBindCtx*,IEnumString**);
+void STDMETHODCALLTYPE IBindCtx_EnumObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Proxy(IBindCtx*,LPCSTR);
+void STDMETHODCALLTYPE IBindCtx_RevokeObjectParam_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*);
+void STDMETHODCALLTYPE IEnumMoniker_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Skip_Proxy(IEnumMoniker*,ULONG);
+void STDMETHODCALLTYPE IEnumMoniker_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Reset_Proxy(IEnumMoniker*);
+void STDMETHODCALLTYPE IEnumMoniker_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Clone_Proxy(IEnumMoniker*,IEnumMoniker**);
+void STDMETHODCALLTYPE IEnumMoniker_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Proxy(IRunnableObject*,LPCLSID);
+void STDMETHODCALLTYPE IRunnableObject_GetRunningClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunnableObject_Run_Proxy(IRunnableObject*,LPBINDCTX);
+void STDMETHODCALLTYPE IRunnableObject_Run_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+BOOL STDMETHODCALLTYPE IRunnableObject_IsRunning_Proxy(IRunnableObject*);
+void STDMETHODCALLTYPE IRunnableObject_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunnableObject_LockRunning_Proxy(IRunnableObject*,BOOL,BOOL);
+void STDMETHODCALLTYPE IRunnableObject_LockRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Proxy(IRunnableObject*,BOOL);
+void STDMETHODCALLTYPE IRunnableObject_SetContainedObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Register_Proxy(IRunningObjectTable*,DWORD,IUnknown*,IMoniker*,DWORD*);
+void STDMETHODCALLTYPE IRunningObjectTable_Register_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_Revoke_Proxy(IRunningObjectTable*,DWORD);
+void STDMETHODCALLTYPE IRunningObjectTable_Revoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Proxy(IRunningObjectTable*,IMoniker*);
+void STDMETHODCALLTYPE IRunningObjectTable_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetObject_Proxy(IRunningObjectTable*,IMoniker*,IUnknown**);
+void STDMETHODCALLTYPE IRunningObjectTable_GetObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Proxy(IRunningObjectTable*,DWORD,FILETIME*);
+void STDMETHODCALLTYPE IRunningObjectTable_NoteChangeTime_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Proxy(IRunningObjectTable*,IMoniker*,FILETIME*);
+void STDMETHODCALLTYPE IRunningObjectTable_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Proxy(IRunningObjectTable*,IEnumMoniker**);
+void STDMETHODCALLTYPE IRunningObjectTable_EnumRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersist_GetClassID_Proxy(IPersist*,CLSID*);
+void STDMETHODCALLTYPE IPersist_GetClassID_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStream_IsDirty_Proxy(IPersistStream*);
+void STDMETHODCALLTYPE IPersistStream_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStream_Load_Proxy(IPersistStream*,IStream*);
+void STDMETHODCALLTYPE IPersistStream_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStream_Save_Proxy(IPersistStream*,IStream*,BOOL);
+void STDMETHODCALLTYPE IPersistStream_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStream_GetSizeMax_Proxy(IPersistStream*,ULARGE_INTEGER*);
+void STDMETHODCALLTYPE IPersistStream_GetSizeMax_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**);
+void STDMETHODCALLTYPE IMoniker_RemoteBindToObject_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**);
+void STDMETHODCALLTYPE IMoniker_RemoteBindToStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_Reduce_Proxy(IMoniker*,IBindCtx*,DWORD,IMoniker**,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_Reduce_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_ComposeWith_Proxy(IMoniker*,IMoniker*,BOOL,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_ComposeWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_Enum_Proxy(IMoniker*,BOOL,IEnumMoniker**);
+void STDMETHODCALLTYPE IMoniker_Enum_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_IsEqual_Proxy(IMoniker*,IMoniker*);
+void STDMETHODCALLTYPE IMoniker_IsEqual_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_Hash_Proxy(IMoniker*,DWORD*);
+void STDMETHODCALLTYPE IMoniker_Hash_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_IsRunning_Proxy(IMoniker*,IBindCtx*,IMoniker*,IMoniker*);
+void STDMETHODCALLTYPE IMoniker_IsRunning_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Proxy(IMoniker*,IBindCtx*,IMoniker*,FILETIME*);
+void STDMETHODCALLTYPE IMoniker_GetTimeOfLastChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_Inverse_Proxy(IMoniker*,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_Inverse_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Proxy(IMoniker*,IMoniker*,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_CommonPrefixWith_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_RelativePathTo_Proxy(IMoniker*,IMoniker*,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_RelativePathTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_GetDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR*);
+void STDMETHODCALLTYPE IMoniker_GetDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_ParseDisplayName_Proxy(IMoniker*,IBindCtx*,IMoniker*,LPCSTR,ULONG*,IMoniker**);
+void STDMETHODCALLTYPE IMoniker_ParseDisplayName_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Proxy(IMoniker*,DWORD*);
+void STDMETHODCALLTYPE IMoniker_IsSystemMoniker_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IROTData_GetComparisonData_Proxy(IROTData*,BYTE*,ULONG cbMax,ULONG*);
+void STDMETHODCALLTYPE IROTData_GetComparisonData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumString_RemoteNext_Proxy(IEnumString*,ULONG,LPCSTR*rgelt,ULONG*);
+void STDMETHODCALLTYPE IEnumString_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumString_Skip_Proxy(IEnumString*,ULONG);
+void STDMETHODCALLTYPE IEnumString_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumString_Reset_Proxy(IEnumString*);
+void STDMETHODCALLTYPE IEnumString_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumString_Clone_Proxy(IEnumString*,IEnumString**);
+void STDMETHODCALLTYPE IEnumString_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_RemoteRead_Proxy(IStream*,BYTE*,ULONG,ULONG*);
+void STDMETHODCALLTYPE IStream_RemoteRead_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_RemoteWrite_Proxy(IStream*,BYTE*pv,ULONG,ULONG*);
+void STDMETHODCALLTYPE IStream_RemoteWrite_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_RemoteSeek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*);
+void STDMETHODCALLTYPE IStream_RemoteSeek_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_SetSize_Proxy(IStream*,ULARGE_INTEGER);
+void STDMETHODCALLTYPE IStream_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_RemoteCopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*);
+void STDMETHODCALLTYPE IStream_RemoteCopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_Commit_Proxy(IStream*,DWORD);
+void STDMETHODCALLTYPE IStream_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_Revert_Proxy(IStream*);
+void STDMETHODCALLTYPE IStream_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_LockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD);
+void STDMETHODCALLTYPE IStream_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_UnlockRegion_Proxy(IStream*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD);
+void STDMETHODCALLTYPE IStream_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_Stat_Proxy(IStream*,STATSTG*,DWORD);
+void STDMETHODCALLTYPE IStream_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStream_Clone_Proxy(IStream*,IStream**);
+void STDMETHODCALLTYPE IStream_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*);
+void STDMETHODCALLTYPE IEnumSTATSTG_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Skip_Proxy(IEnumSTATSTG*,ULONG celt);
+void STDMETHODCALLTYPE IEnumSTATSTG_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Reset_Proxy(IEnumSTATSTG*);
+void STDMETHODCALLTYPE IEnumSTATSTG_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Clone_Proxy(IEnumSTATSTG*,IEnumSTATSTG**);
+void STDMETHODCALLTYPE IEnumSTATSTG_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_CreateStream_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStream**);
+void STDMETHODCALLTYPE IStorage_CreateStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_RemoteOpenStream_Proxy(IStorage*,const OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream**);
+void STDMETHODCALLTYPE IStorage_RemoteOpenStream_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_CreateStorage_Proxy(IStorage*,OLECHAR*,DWORD,DWORD,DWORD,IStorage**);
+void STDMETHODCALLTYPE IStorage_CreateStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_OpenStorage_Proxy(IStorage*,OLECHAR*,IStorage*,DWORD,SNB,DWORD,IStorage**);
+void STDMETHODCALLTYPE IStorage_OpenStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_CopyTo_Proxy(IStorage*,DWORD,const IID*,SNB,IStorage*);
+void STDMETHODCALLTYPE IStorage_CopyTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_MoveElementTo_Proxy(IStorage*,const OLECHAR*,IStorage*,const OLECHAR*,DWORD);
+void STDMETHODCALLTYPE IStorage_MoveElementTo_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_Commit_Proxy(IStorage*,DWORD);
+void STDMETHODCALLTYPE IStorage_Commit_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_Revert_Proxy(IStorage*);
+void STDMETHODCALLTYPE IStorage_Revert_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_RemoteEnumElements_Proxy(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**);
+void STDMETHODCALLTYPE IStorage_RemoteEnumElements_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_DestroyElement_Proxy(IStorage*,OLECHAR*);
+void STDMETHODCALLTYPE IStorage_DestroyElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_RenameElement_Proxy(IStorage*,const OLECHAR*,const OLECHAR*);
+void STDMETHODCALLTYPE IStorage_RenameElement_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_SetElementTimes_Proxy(IStorage*,const OLECHAR*,const FILETIME*,const FILETIME*,const FILETIME*);
+void STDMETHODCALLTYPE IStorage_SetElementTimes_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_SetClass_Proxy(IStorage*,REFCLSID);
+void STDMETHODCALLTYPE IStorage_SetClass_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_SetStateBits_Proxy(IStorage*,DWORD,DWORD);
+void STDMETHODCALLTYPE IStorage_SetStateBits_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IStorage_Stat_Proxy(IStorage*,STATSTG*,DWORD);
+void STDMETHODCALLTYPE IStorage_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_IsDirty_Proxy(IPersistFile*);
+void STDMETHODCALLTYPE IPersistFile_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_Load_Proxy(IPersistFile*,LPCOLESTR,DWORD);
+void STDMETHODCALLTYPE IPersistFile_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_Save_Proxy(IPersistFile*,LPCOLESTR pszFileName,BOOL);
+void STDMETHODCALLTYPE IPersistFile_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_SaveCompleted_Proxy(IPersistFile*,LPCOLESTR);
+void STDMETHODCALLTYPE IPersistFile_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistFile_GetCurFile_Proxy(IPersistFile*,LPCSTR*);
+void STDMETHODCALLTYPE IPersistFile_GetCurFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_IsDirty_Proxy(IPersistStorage*);
+void STDMETHODCALLTYPE IPersistStorage_IsDirty_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_InitNew_Proxy(IPersistStorage*,IStorage*);
+void STDMETHODCALLTYPE IPersistStorage_InitNew_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_Load_Proxy(IPersistStorage*,IStorage*);
+void STDMETHODCALLTYPE IPersistStorage_Load_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_Save_Proxy(IPersistStorage*,IStorage*,BOOL);
+void STDMETHODCALLTYPE IPersistStorage_Save_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Proxy(IPersistStorage*,IStorage*);
+void STDMETHODCALLTYPE IPersistStorage_SaveCompleted_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Proxy(IPersistStorage*);
+void STDMETHODCALLTYPE IPersistStorage_HandsOffStorage_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*);
+void STDMETHODCALLTYPE ILockBytes_RemoteReadAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,BYTE*pv,ULONG,ULONG*);
+void STDMETHODCALLTYPE ILockBytes_RemoteWriteAt_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_Flush_Proxy(ILockBytes*);
+void STDMETHODCALLTYPE ILockBytes_Flush_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_SetSize_Proxy(ILockBytes*,ULARGE_INTEGER);
+void STDMETHODCALLTYPE ILockBytes_SetSize_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_LockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD);
+void STDMETHODCALLTYPE ILockBytes_LockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_UnlockRegion_Proxy(ILockBytes*,ULARGE_INTEGER,ULARGE_INTEGER,DWORD);
+void STDMETHODCALLTYPE ILockBytes_UnlockRegion_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE ILockBytes_Stat_Proxy(ILockBytes*,STATSTG*,DWORD);
+void STDMETHODCALLTYPE ILockBytes_Stat_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*);
+void STDMETHODCALLTYPE IEnumFORMATETC_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Skip_Proxy(IEnumFORMATETC*,ULONG);
+void STDMETHODCALLTYPE IEnumFORMATETC_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Reset_Proxy(IEnumFORMATETC*);
+void STDMETHODCALLTYPE IEnumFORMATETC_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Clone_Proxy(IEnumFORMATETC*,IEnumFORMATETC**);
+void STDMETHODCALLTYPE IEnumFORMATETC_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Proxy(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumFORMATETC_Next_Stub(IEnumFORMATETC*,ULONG,FORMATETC*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*);
+void STDMETHODCALLTYPE IEnumSTATDATA_RemoteNext_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Skip_Proxy(IEnumSTATDATA*,ULONG);
+void STDMETHODCALLTYPE IEnumSTATDATA_Skip_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Reset_Proxy(IEnumSTATDATA*);
+void STDMETHODCALLTYPE IEnumSTATDATA_Reset_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Clone_Proxy(IEnumSTATDATA*,IEnumSTATDATA**);
+void STDMETHODCALLTYPE IEnumSTATDATA_Clone_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Proxy(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumSTATDATA_Next_Stub(IEnumSTATDATA*,ULONG,STATDATA*,ULONG*);
+HRESULT STDMETHODCALLTYPE IRootStorage_SwitchToFile_Proxy(IRootStorage*,LPCSTR);
+void STDMETHODCALLTYPE IRootStorage_SwitchToFile_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Proxy(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Proxy(IAdviseSink*,DWORD,LONG);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnViewChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Proxy(IAdviseSink*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnRename_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Proxy(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnSave_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Proxy(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink_RemoteOnClose_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Proxy(IAdviseSink*,FORMATETC*,STGMEDIUM*);
+void STDMETHODCALLTYPE IAdviseSink_OnDataChange_Stub(IAdviseSink*,FORMATETC*,RemSTGMEDIUM*);
+void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Proxy(IAdviseSink*,DWORD,LONG);
+void STDMETHODCALLTYPE IAdviseSink_OnViewChange_Stub(IAdviseSink*,DWORD,LONG);
+void STDMETHODCALLTYPE IAdviseSink_OnRename_Proxy(IAdviseSink*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink_OnRename_Stub(IAdviseSink*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink_OnSave_Proxy(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink_OnSave_Stub(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink_OnClose_Proxy(IAdviseSink*);
+HRESULT STDMETHODCALLTYPE IAdviseSink_OnClose_Stub(IAdviseSink*);
+void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink2_RemoteOnLinkSrcChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Proxy(IAdviseSink2*,IMoniker*);
+void STDMETHODCALLTYPE IAdviseSink2_OnLinkSrcChange_Stub(IAdviseSink2*,IMoniker*);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**);
+void STDMETHODCALLTYPE IDataObject_RemoteGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM**);
+void STDMETHODCALLTYPE IDataObject_RemoteGetDataHere_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_QueryGetData_Proxy(IDataObject*,FORMATETC*);
+void STDMETHODCALLTYPE IDataObject_QueryGetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Proxy(IDataObject*,FORMATETC*,FORMATETC*);
+void STDMETHODCALLTYPE IDataObject_GetCanonicalFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_RemoteSetData_Proxy(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL);
+void STDMETHODCALLTYPE IDataObject_RemoteSetData_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Proxy(IDataObject*,DWORD,IEnumFORMATETC**);
+void STDMETHODCALLTYPE IDataObject_EnumFormatEtc_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_DAdvise_Proxy(IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*);
+void STDMETHODCALLTYPE IDataObject_DAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_DUnadvise_Proxy(IDataObject*,DWORD);
+void STDMETHODCALLTYPE IDataObject_DUnadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_EnumDAdvise_Proxy(IDataObject*,IEnumSTATDATA**);
+void STDMETHODCALLTYPE IDataObject_EnumDAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataObject_GetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*);
+HRESULT STDMETHODCALLTYPE IDataObject_GetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**);
+HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*);
+HRESULT STDMETHODCALLTYPE IDataObject_GetDataHere_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM**);
+HRESULT STDMETHODCALLTYPE IDataObject_SetData_Proxy(IDataObject*,FORMATETC*,STGMEDIUM*,BOOL);
+HRESULT STDMETHODCALLTYPE IDataObject_SetData_Stub(IDataObject*,FORMATETC*,RemSTGMEDIUM*,BOOL);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Advise_Proxy(IDataAdviseHolder*,IDataObject*,FORMATETC*,DWORD,IAdviseSink*,DWORD*);
+void STDMETHODCALLTYPE IDataAdviseHolder_Advise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Proxy(IDataAdviseHolder*,DWORD);
+void STDMETHODCALLTYPE IDataAdviseHolder_Unadvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Proxy(IDataAdviseHolder*,IEnumSTATDATA**);
+void STDMETHODCALLTYPE IDataAdviseHolder_EnumAdvise_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Proxy(IDataAdviseHolder*,IDataObject*,DWORD,DWORD);
+void STDMETHODCALLTYPE IDataAdviseHolder_SendOnDataChange_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Proxy(IMessageFilter*,DWORD,HTASK,DWORD,LPINTERFACEINFO);
+void STDMETHODCALLTYPE IMessageFilter_HandleInComingCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Proxy(IMessageFilter*,HTASK,DWORD,DWORD);
+void STDMETHODCALLTYPE IMessageFilter_RetryRejectedCall_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+DWORD STDMETHODCALLTYPE IMessageFilter_MessagePending_Proxy(IMessageFilter*,HTASK,DWORD,DWORD);
+void STDMETHODCALLTYPE IMessageFilter_MessagePending_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,REFIID);
+void STDMETHODCALLTYPE IRpcChannelBuffer_GetBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*,ULONG*);
+void STDMETHODCALLTYPE IRpcChannelBuffer_SendReceive_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Proxy(IRpcChannelBuffer*,RPCOLEMESSAGE*);
+void STDMETHODCALLTYPE IRpcChannelBuffer_FreeBuffer_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Proxy(IRpcChannelBuffer*,DWORD*,void**);
+void STDMETHODCALLTYPE IRpcChannelBuffer_GetDestCtx_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Proxy(IRpcChannelBuffer*);
+void STDMETHODCALLTYPE IRpcChannelBuffer_IsConnected_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Proxy(IRpcProxyBuffer*,IRpcChannelBuffer*pRpcChannelBuffer);
+void STDMETHODCALLTYPE IRpcProxyBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Proxy(IRpcProxyBuffer*);
+void STDMETHODCALLTYPE IRpcProxyBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Connect_Proxy(IRpcStubBuffer*,IUnknown*);
+void STDMETHODCALLTYPE IRpcStubBuffer_Connect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Proxy(IRpcStubBuffer*);
+void STDMETHODCALLTYPE IRpcStubBuffer_Disconnect_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Proxy(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*);
+void STDMETHODCALLTYPE IRpcStubBuffer_Invoke_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+IRpcStubBuffer*STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Proxy(IRpcStubBuffer*,REFIID);
+void STDMETHODCALLTYPE IRpcStubBuffer_IsIIDSupported_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Proxy(IRpcStubBuffer*);
+void STDMETHODCALLTYPE IRpcStubBuffer_CountRefs_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Proxy(IRpcStubBuffer*,void**);
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerQueryInterface_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Proxy(IRpcStubBuffer*,void*);
+void STDMETHODCALLTYPE IRpcStubBuffer_DebugServerRelease_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Proxy(IPSFactoryBuffer*,IUnknown*,REFIID,IRpcProxyBuffer**,void**);
+void STDMETHODCALLTYPE IPSFactoryBuffer_CreateProxy_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Proxy(IPSFactoryBuffer*,REFIID,IUnknown*,IRpcStubBuffer**);
+void STDMETHODCALLTYPE IPSFactoryBuffer_CreateStub_Stub(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,PDWORD);
+void STDMETHODCALLTYPE SNB_to_xmit(SNB*,RemSNB**);
+void STDMETHODCALLTYPE SNB_from_xmit(RemSNB*,SNB*);
+void STDMETHODCALLTYPE SNB_free_inst(SNB*);
+void STDMETHODCALLTYPE SNB_free_xmit(RemSNB*);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Proxy(IEnumUnknown*,ULONG,IUnknown**,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumUnknown_Next_Stub(IEnumUnknown*,ULONG,IUnknown**,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Proxy(IEnumMoniker*,ULONG,IMoniker**,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumMoniker_Next_Stub(IEnumMoniker*,ULONG,IMoniker**,ULONG*);
+HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**);
+HRESULT STDMETHODCALLTYPE IMoniker_BindToObject_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**);
+HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Proxy(IMoniker*,IBindCtx*,IMoniker*,REFIID,void**);
+HRESULT STDMETHODCALLTYPE IMoniker_BindToStorage_Stub(IMoniker*,IBindCtx*,IMoniker*,REFIID,IUnknown**);
+HRESULT STDMETHODCALLTYPE IEnumString_Next_Proxy(IEnumString*,ULONG,LPCSTR*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumString_Next_Stub(IEnumString*,ULONG,LPCSTR*,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Read_Proxy(IStream*,void*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Read_Stub(IStream*,BYTE*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Write_Proxy(IStream*,void*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Write_Stub(IStream*,BYTE*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE IStream_Seek_Proxy(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*);
+HRESULT STDMETHODCALLTYPE IStream_Seek_Stub(IStream*,LARGE_INTEGER,DWORD,ULARGE_INTEGER*);
+HRESULT STDMETHODCALLTYPE IStream_CopyTo_Proxy(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*);
+HRESULT STDMETHODCALLTYPE IStream_CopyTo_Stub(IStream*,IStream*,ULARGE_INTEGER,ULARGE_INTEGER*,ULARGE_INTEGER*);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Proxy(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*);
+HRESULT STDMETHODCALLTYPE IEnumSTATSTG_Next_Stub(IEnumSTATSTG*,ULONG,STATSTG*,ULONG*);
+HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Proxy(IStorage*,OLECHAR*,void*,DWORD,DWORD,IStream**);
+HRESULT STDMETHODCALLTYPE IStorage_OpenStream_Stub(IStorage*,OLECHAR*,unsigned long,BYTE*,DWORD,DWORD,IStream** );
+HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Proxy(IStorage*,DWORD,void*,DWORD,IEnumSTATSTG**);
+HRESULT STDMETHODCALLTYPE IStorage_EnumElements_Stub(IStorage*,DWORD,unsigned long,BYTE*,DWORD,IEnumSTATSTG**);
+HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Proxy(ILockBytes*,ULARGE_INTEGER,void*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE ILockBytes_ReadAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Proxy(ILockBytes*,ULARGE_INTEGER,const void*,ULONG,ULONG*);
+HRESULT STDMETHODCALLTYPE ILockBytes_WriteAt_Stub(ILockBytes*,ULARGE_INTEGER,BYTE*,ULONG,ULONG*);
+#ifdef COBJMACROS
+#define IMarshal_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IMarshal_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMarshal_Release(This) (This)->lpVtbl->Release(This)
+#define IMarshal_GetUnmarshalClass(T,r,pv,dw,pvD,m,pC) (T)->lpVtbl->GetUnmarshalClass(T,r,pv,dw,pvD,m,pC)
+#define IMarshal_GetMarshalSizeMax(T,r,pv,dw,pD,m,p) (T)->lpVtbl->GetMarshalSizeMax(T,r,pv,dw,pD,m,p)
+#define IMarshal_MarshalInterface(T,p,r,pv,dw,pvD,m) (T)->lpVtbl->MarshalInterface(T,p,r,pv,dw,pv,m)
+#define IMarshal_UnmarshalInterface(T,p,r,pp) (T)->lpVtbl->UnmarshalInterface(T,p,r,pp)
+#define IMarshal_ReleaseMarshalData(T,p) (T)->lpVtbl->ReleaseMarshalData(T,p)
+#define IMarshal_DisconnectObject(T,d) (T)->lpVtbl->DisconnectObject(T,d)
+#define IMalloc_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMalloc_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMalloc_Release(This) (This)->lpVtbl->Release(This)
+#define IMalloc_Alloc(This,cb) (This)->lpVtbl->Alloc(This,cb)
+#define IMalloc_Realloc(This,pv,cb) (This)->lpVtbl->Realloc(This,pv,cb)
+#define IMalloc_Free(This,pv) (This)->lpVtbl->Free(This,pv)
+#define IMalloc_GetSize(This,pv) (This)->lpVtbl->GetSize(This,pv)
+#define IMalloc_DidAlloc(This,pv) (This)->lpVtbl->DidAlloc(This,pv)
+#define IMalloc_HeapMinimize(This) (This)->lpVtbl->HeapMinimize(This)
+#define IMallocSpy_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IMallocSpy_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMallocSpy_Release(This) (This)->lpVtbl->Release(This)
+#define IMallocSpy_PreAlloc(T,c) (T)->lpVtbl->PreAlloc(T,c)
+#define IMallocSpy_PostAlloc(This,p) (This)->lpVtbl->PostAlloc(This,p)
+#define IMallocSpy_PreFree(This,p,f) (This)->lpVtbl->PreFree(This,p,f)
+#define IMallocSpy_PostFree(This,fSpyed) (This)->lpVtbl->PostFree(This,fSpyed)
+#define IMallocSpy_PreRealloc(T,p,c,pp,f) (T)->lpVtbl->PreRealloc(T,p,c,pp,f)
+#define IMallocSpy_PostRealloc(T,p,f) (T)->lpVtbl->PostRealloc(T,p,f)
+#define IMallocSpy_PreGetSize(This,p,f) (This)->lpVtbl->PreGetSize(This,p,f)
+#define IMallocSpy_PostGetSize(This,cbActual,fSpyed) (This)->lpVtbl->PostGetSize(This,cbActual,fSpyed)
+#define IMallocSpy_PreDidAlloc(This,pRequest,fSpyed) (This)->lpVtbl->PreDidAlloc(This,pRequest,fSpyed)
+#define IMallocSpy_PostDidAlloc(This,pRequest,fSpyed,fActual) (This)->lpVtbl->PostDidAlloc(This,pRequest,fSpyed,fActual)
+#define IMallocSpy_PreHeapMinimize(T) (T)->lpVtbl->PreHeapMinimize(T)
+#define IMallocSpy_PostHeapMinimize(T) (T)->lpVtbl->PostHeapMinimize(T)
+#define IStdMarshalInfo_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p)
+#define IStdMarshalInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStdMarshalInfo_Release(This) (This)->lpVtbl->Release(This)
+#define IStdMarshalInfo_GetClassForHandler(This,D,p,C) (This)->lpVtbl->GetClassForHandler(This,D,p,C)
+#define IExternalConnection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IExternalConnection_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IExternalConnection_Release(This) (This)->lpVtbl->Release(This)
+#define IExternalConnection_AddConnection(T,e,r) (T)->lpVtbl->AddConnection(T,e,r)
+#define IExternalConnection_ReleaseConnection(This,e,r,f) (This)->lpVtbl->ReleaseConnection(This,e,r,f)
+#define IEnumUnknown_QueryInterface(T,r,p) (This)->lpVtbl->QueryInterface(T,r,p)
+#define IEnumUnknown_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumUnknown_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumUnknown_Next(This,celt,rgelt,p) (This)->lpVtbl->Next(This,celt,rgelt,p)
+#define IEnumUnknown_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumUnknown_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumUnknown_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IBindCtx_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IBindCtx_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBindCtx_Release(This) (This)->lpVtbl->Release(This)
+#define IBindCtx_RegisterObjectBound(T,p) (T)->lpVtbl->RegisterObjectBound(T,p)
+#define IBindCtx_RevokeObjectBound(T,p) (T)->lpVtbl->RevokeObjectBound(T,p)
+#define IBindCtx_ReleaseBoundObjects(T) (T)->lpVtbl->ReleaseBoundObjects(T)
+#define IBindCtx_SetBindOptions(T,p) (T)->lpVtbl->SetBindOptions(T,p)
+#define IBindCtx_GetBindOptions(This,pbindopts) (This)->lpVtbl->GetBindOptions(This,pbindopts)
+#define IBindCtx_GetRunningObjectTable(This,pprot) (This)->lpVtbl->GetRunningObjectTable(This,pprot)
+#define IBindCtx_RegisterObjectParam(This,pszKey,punk) (This)->lpVtbl->RegisterObjectParam(This,pszKey,punk)
+#define IBindCtx_GetObjectParam(This,pszKey,ppunk) (This)->lpVtbl->GetObjectParam(This,pszKey,ppunk)
+#define IBindCtx_EnumObjectParam(This,ppenum) (This)->lpVtbl->EnumObjectParam(This,ppenum)
+#define IBindCtx_RevokeObjectParam(This,pszKey) (This)->lpVtbl->RevokeObjectParam(This,pszKey)
+#define IEnumMoniker_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IEnumMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumMoniker_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumMoniker_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumMoniker_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumMoniker_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumMoniker_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IRunnableObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRunnableObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRunnableObject_Release(This) (This)->lpVtbl->Release(This)
+#define IRunnableObject_GetRunningClass(This,lpClsid) (This)->lpVtbl->GetRunningClass(This,lpClsid)
+#define IRunnableObject_Run(This,pbc) (This)->lpVtbl->Run(This,pbc)
+#define IRunnableObject_IsRunning(This) (This)->lpVtbl->IsRunning(This)
+#define IRunnableObject_LockRunning(This,fLock,fLastUnlockCloses) (This)->lpVtbl->LockRunning(This,fLock,fLastUnlockCloses)
+#define IRunnableObject_SetContainedObject(This,fContained) (This)->lpVtbl->SetContainedObject(This,fContained)
+#define IRunningObjectTable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRunningObjectTable_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRunningObjectTable_Release(This) (This)->lpVtbl->Release(This)
+#define IRunningObjectTable_Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister) (This)->lpVtbl->Register(This,grfFlags,punkObject,pmkObjectName,pdwRegister)
+#define IRunningObjectTable_Revoke(This,dwRegister) (This)->lpVtbl->Revoke(This,dwRegister)
+#define IRunningObjectTable_IsRunning(This,pmkObjectName) (This)->lpVtbl->IsRunning(This,pmkObjectName)
+#define IRunningObjectTable_GetObject(This,pmkObjectName,ppunkObject) (This)->lpVtbl->GetObject(This,pmkObjectName,ppunkObject)
+#define IRunningObjectTable_NoteChangeTime(This,dwRegister,pfiletime) (This)->lpVtbl->NoteChangeTime(This,dwRegister,pfiletime)
+#define IRunningObjectTable_GetTimeOfLastChange(This,pmkObjectName,pfiletime) (This)->lpVtbl->GetTimeOfLastChange(This,pmkObjectName,pfiletime)
+#define IRunningObjectTable_EnumRunning(This,ppenumMoniker) (This)->lpVtbl->EnumRunning(This,ppenumMoniker)
+#define IPersist_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IPersist_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersist_Release(This) (This)->lpVtbl->Release(This)
+#define IPersist_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistStream_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IPersistStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistStream_Release(This) (This)->lpVtbl->Release(This)
+#define IPersistStream_GetClassID(T,p) (T)->lpVtbl->GetClassID(T,p)
+#define IPersistStream_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistStream_Load(This,pStm) (This)->lpVtbl->Load(This,pStm)
+#define IPersistStream_Save(T,p,f) (T)->lpVtbl->Save(T,p,f)
+#define IPersistStream_GetSizeMax(T,p) (T)->lpVtbl->GetSizeMax(T,p)
+#define IMoniker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMoniker_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMoniker_Release(This) (This)->lpVtbl->Release(This)
+#define IMoniker_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IMoniker_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IMoniker_Load(This,pStm) (This)->lpVtbl->Load(This,pStm)
+#define IMoniker_Save(This,pStm,fClearDirty) (This)->lpVtbl->Save(This,pStm,fClearDirty)
+#define IMoniker_GetSizeMax(This,pcbSize) (This)->lpVtbl->GetSizeMax(This,pcbSize)
+#define IMoniker_BindToObject(T,p,pm,r,pp) (T)->lpVtbl->BindToObject(T,p,pm,r,pp)
+#define IMoniker_BindToStorage(This,pbc,pmkToLeft,riid,ppvObj) (This)->lpVtbl->BindToStorage(This,pbc,pmkToLeft,riid,ppvObj)
+#define IMoniker_Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced) (This)->lpVtbl->Reduce(This,pbc,dwReduceHowFar,ppmkToLeft,ppmkReduced)
+#define IMoniker_ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite) (This)->lpVtbl->ComposeWith(This,pmkRight,fOnlyIfNotGeneric,ppmkComposite)
+#define IMoniker_Enum(T,f,pp) (T)->lpVtbl->Enum(T,f,pp)
+#define IMoniker_IsEqual(This,p) (This)->lpVtbl->IsEqual(This,p)
+#define IMoniker_Hash(This,pdwHash) (This)->lpVtbl->Hash(This,pdwHash)
+#define IMoniker_IsRunning(T,pbc,Left,N) (T)->lpVtbl->IsRunning(T,pbc,Left,N)
+#define IMoniker_GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime) (This)->lpVtbl->GetTimeOfLastChange(This,pbc,pmkToLeft,pFileTime)
+#define IMoniker_Inverse(This,ppmk) (This)->lpVtbl->Inverse(This,ppmk)
+#define IMoniker_CommonPrefixWith(This,pmkOther,ppmkPrefix) (This)->lpVtbl->CommonPrefixWith(This,pmkOther,ppmkPrefix)
+#define IMoniker_RelativePathTo(This,pmkOther,ppmkRelPath) (This)->lpVtbl->RelativePathTo(This,pmkOther,ppmkRelPath)
+#define IMoniker_GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName) (This)->lpVtbl->GetDisplayName(This,pbc,pmkToLeft,ppszDisplayName)
+#define IMoniker_ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut) (This)->lpVtbl->ParseDisplayName(This,pbc,pmkToLeft,pszDisplayName,pchEaten,ppmkOut)
+#define IMoniker_IsSystemMoniker(This,pdwMksys) (This)->lpVtbl->IsSystemMoniker(This,pdwMksys)
+#define IROTData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IROTData_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IROTData_Release(This) (This)->lpVtbl->Release(This)
+#define IROTData_GetComparisonData(This,pbData,cbMax,pcbData) (This)->lpVtbl->GetComparisonData(This,pbData,cbMax,pcbData)
+#define IEnumString_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumString_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumString_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumString_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumString_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumString_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumString_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IStream_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStream_Release(This) (This)->lpVtbl->Release(This)
+#define IStream_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
+#define IStream_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
+#define IStream_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
+#define IStream_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
+#define IStream_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
+#define IStream_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
+#define IStream_Revert(This) (This)->lpVtbl->Revert(This)
+#define IStream_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
+#define IStream_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
+#define IStream_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
+#define IStream_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
+#define IEnumSTATSTG_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IEnumSTATSTG_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSTATSTG_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumSTATSTG_Next(T,c,r,p) (T)->lpVtbl->Next(T,c,r,p)
+#define IEnumSTATSTG_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumSTATSTG_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSTATSTG_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IStorage_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IStorage_Release(This) (This)->lpVtbl->Release(This)
+#define IStorage_CreateStream(T,p,g,r1,r2,pp) (T)->lpVtbl->CreateStream(T,p,g,r1,r2,pp)
+#define IStorage_OpenStream(T,p,r1,g,r2,pp) (T)->lpVtbl->OpenStream(T,p,r1,g,r2,pp)
+#define IStorage_CreateStorage(T,p,g,d,r2,pp) (This)->lpVtbl->CreateStorage(T,p,g,d,r2,pp)
+#define IStorage_OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg) (This)->lpVtbl->OpenStorage(This,pwcsName,pstgPriority,grfMode,snbExclude,reserved,ppstg)
+#define IStorage_CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest) (This)->lpVtbl->CopyTo(This,ciidExclude,rgiidExclude,snbExclude,pstgDest)
+#define IStorage_MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags) (This)->lpVtbl->MoveElementTo(This,pwcsName,pstgDest,pwcsNewName,grfFlags)
+#define IStorage_Commit(This,g) (This)->lpVtbl->Commit(This,g)
+#define IStorage_Revert(This) (This)->lpVtbl->Revert(This)
+#define IStorage_EnumElements(This,reserved1,reserved2,reserved3,ppenum) (This)->lpVtbl->EnumElements(This,reserved1,reserved2,reserved3,ppenum)
+#define IStorage_DestroyElement(This,pwcsName) (This)->lpVtbl->DestroyElement(This,pwcsName)
+#define IStorage_RenameElement(This,pwcsOldName,pwcsNewName) (This)->lpVtbl->RenameElement(This,pwcsOldName,pwcsNewName)
+#define IStorage_SetElementTimes(This,pwcsName,pctime,patime,pmtime) (This)->lpVtbl->SetElementTimes(This,pwcsName,pctime,patime,pmtime)
+#define IStorage_SetClass(This,clsid) (This)->lpVtbl->SetClass(This,clsid)
+#define IStorage_SetStateBits(This,grfStateBits,grfMask) (This)->lpVtbl->SetStateBits(This,grfStateBits,grfMask)
+#define IStorage_Stat(This,p,g) (This)->lpVtbl->Stat(This,p,g)
+#define IPersistFile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistFile_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistFile_Release(This) (This)->lpVtbl->Release(This)
+#define IPersistFile_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistFile_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistFile_Load(This,pszFileName,dwMode) (This)->lpVtbl->Load(This,pszFileName,dwMode)
+#define IPersistFile_Save(This,pszFileName,fRemember) (This)->lpVtbl->Save(This,pszFileName,fRemember)
+#define IPersistFile_SaveCompleted(This,pszFileName) (This)->lpVtbl->SaveCompleted(This,pszFileName)
+#define IPersistFile_GetCurFile(This,ppszFileName) (This)->lpVtbl->GetCurFile(This,ppszFileName)
+#define IPersistStorage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistStorage_Release(This) (This)->lpVtbl->Release(This)
+#define IPersistStorage_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistStorage_IsDirty(This) (This)->lpVtbl->IsDirty(This)
+#define IPersistStorage_InitNew(This,pStg) (This)->lpVtbl->InitNew(This,pStg)
+#define IPersistStorage_Load(This,pStg) (This)->lpVtbl->Load(This,pStg)
+#define IPersistStorage_Save(This,pStgSave,fSameAsLoad) (This)->lpVtbl->Save(This,pStgSave,fSameAsLoad)
+#define IPersistStorage_SaveCompleted(This,pStgNew) (This)->lpVtbl->SaveCompleted(This,pStgNew)
+#define IPersistStorage_HandsOffStorage(This) (This)->lpVtbl->HandsOffStorage(This)
+#define ILockBytes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ILockBytes_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ILockBytes_Release(This) (This)->lpVtbl->Release(This)
+#define ILockBytes_ReadAt(This,ulOffset,pv,cb,pcbRead) (This)->lpVtbl->ReadAt(This,ulOffset,pv,cb,pcbRead)
+#define ILockBytes_WriteAt(This,ulOffset,pv,cb,pcbWritten) (This)->lpVtbl->WriteAt(This,ulOffset,pv,cb,pcbWritten)
+#define ILockBytes_Flush(This) (This)->lpVtbl->Flush(This)
+#define ILockBytes_SetSize(This,cb) (This)->lpVtbl->SetSize(This,cb)
+#define ILockBytes_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
+#define ILockBytes_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
+#define ILockBytes_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
+#define IEnumFORMATETC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumFORMATETC_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumFORMATETC_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumFORMATETC_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumFORMATETC_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumFORMATETC_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumFORMATETC_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IEnumSTATDATA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumSTATDATA_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumSTATDATA_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumSTATDATA_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumSTATDATA_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumSTATDATA_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumSTATDATA_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#define IRootStorage_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O)
+#define IRootStorage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRootStorage_Release(This) (This)->lpVtbl->Release(This)
+#define IRootStorage_SwitchToFile(This,pszFile) (This)->lpVtbl->SwitchToFile(This,pszFile)
+#define IAdviseSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdviseSink_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdviseSink_Release(This) (This)->lpVtbl->Release(This)
+#define IAdviseSink_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed)
+#define IAdviseSink_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex)
+#define IAdviseSink_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk)
+#define IAdviseSink_OnSave(This) (This)->lpVtbl->OnSave(This)
+#define IAdviseSink_OnClose(This) (This)->lpVtbl->OnClose(This)
+#define IAdviseSink2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAdviseSink2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAdviseSink2_Release(This) (This)->lpVtbl->Release(This)
+#define IAdviseSink2_OnDataChange(This,pFormatetc,pStgmed) (This)->lpVtbl->OnDataChange(This,pFormatetc,pStgmed)
+#define IAdviseSink2_OnViewChange(This,dwAspect,lindex) (This)->lpVtbl->OnViewChange(This,dwAspect,lindex)
+#define IAdviseSink2_OnRename(This,pmk) (This)->lpVtbl->OnRename(This,pmk)
+#define IAdviseSink2_OnSave(This) (This)->lpVtbl->OnSave(This)
+#define IAdviseSink2_OnClose(This) (This)->lpVtbl->OnClose(This)
+#define IAdviseSink2_OnLinkSrcChange(This,pmk) (This)->lpVtbl->OnLinkSrcChange(This,pmk)
+#define IDataObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDataObject_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDataObject_Release(This) (This)->lpVtbl->Release(This)
+#define IDataObject_GetData(This,pformatetcIn,pmedium) (This)->lpVtbl->GetData(This,pformatetcIn,pmedium)
+#define IDataObject_GetDataHere(This,pformatetc,pmedium) (This)->lpVtbl->GetDataHere(This,pformatetc,pmedium)
+#define IDataObject_QueryGetData(This,pformatetc) (This)->lpVtbl->QueryGetData(This,pformatetc)
+#define IDataObject_GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut) (This)->lpVtbl->GetCanonicalFormatEtc(This,pformatectIn,pformatetcOut)
+#define IDataObject_SetData(This,pformatetc,pmedium,fRelease) (This)->lpVtbl->SetData(This,pformatetc,pmedium,fRelease)
+#define IDataObject_EnumFormatEtc(This,dwDirection,ppenumFormatEtc) (This)->lpVtbl->EnumFormatEtc(This,dwDirection,ppenumFormatEtc)
+#define IDataObject_DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection) (This)->lpVtbl->DAdvise(This,pformatetc,advf,pAdvSink,pdwConnection)
+#define IDataObject_DUnadvise(This,dwConnection) (This)->lpVtbl->DUnadvise(This,dwConnection)
+#define IDataObject_EnumDAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumDAdvise(This,ppenumAdvise)
+#define IDataAdviseHolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDataAdviseHolder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDataAdviseHolder_Release(This) (This)->lpVtbl->Release(This)
+#define IDataAdviseHolder_Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection) (This)->lpVtbl->Advise(This,pDataObject,pFetc,advf,pAdvise,pdwConnection)
+#define IDataAdviseHolder_Unadvise(This,dwConnection) (This)->lpVtbl->Unadvise(This,dwConnection)
+#define IDataAdviseHolder_EnumAdvise(This,ppenumAdvise) (This)->lpVtbl->EnumAdvise(This,ppenumAdvise)
+#define IDataAdviseHolder_SendOnDataChange(This,pDataObject,dwReserved,advf) (This)->lpVtbl->SendOnDataChange(This,pDataObject,dwReserved,advf)
+#define IMessageFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMessageFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMessageFilter_Release(This) (This)->lpVtbl->Release(This)
+#define IMessageFilter_HandleInComingCall(T,d,h,dw,lp) (T)->lpVtbl->HandleInComingCall(T,d,h,dw,lp)
+#define IMessageFilter_RetryRejectedCall(s,C,T,R) (s)->lpVtbl->RetryRejectedCall(s,C,T,R)
+#define IMessageFilter_MessagePending(s,C,T,P) (s)->lpVtbl->MessagePending(This,C,T,P)
+#define IRpcChannelBuffer_QueryInterface(T,r,p) (T)->lpVtbl->QueryInterface(T,r,p)
+#define IRpcChannelBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcChannelBuffer_Release(This) (This)->lpVtbl->Release(This)
+#define IRpcChannelBuffer_GetBuffer(This,pMessage,riid) (This)->lpVtbl->GetBuffer(This,pMessage,riid)
+#define IRpcChannelBuffer_SendReceive(T,p,pS) (T)->lpVtbl->SendReceive(T,p,pS)
+#define IRpcChannelBuffer_FreeBuffer(T,p) (T)->lpVtbl->FreeBuffer(T,p)
+#define IRpcChannelBuffer_GetDestCtx(This,pdwDestContext,ppvDestContext) (This)->lpVtbl->GetDestCtx(This,pdwDestContext,ppvDestContext)
+#define IRpcChannelBuffer_IsConnected(This) (This)->lpVtbl->IsConnected(This)
+#define IRpcProxyBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRpcProxyBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcProxyBuffer_Release(This) (This)->lpVtbl->Release(This)
+#define IRpcProxyBuffer_Connect(This,pRpcChannelBuffer) (This)->lpVtbl->Connect(This,pRpcChannelBuffer)
+#define IRpcProxyBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This)
+#define IRpcStubBuffer_QueryInterface(T,r,pp) (T)->lpVtbl->QueryInterface(T,r,pp)
+#define IRpcStubBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRpcStubBuffer_Release(This) (This)->lpVtbl->Release(This)
+#define IRpcStubBuffer_Connect(This,p) (This)->lpVtbl->Connect(This,p)
+#define IRpcStubBuffer_Disconnect(This) (This)->lpVtbl->Disconnect(This)
+#define IRpcStubBuffer_Invoke(T,_prpcmsg,_p) (T)->lpVtbl->Invoke(This,_prpcmsg,_p)
+#define IRpcStubBuffer_IsIIDSupported(T,d) (T)->lpVtbl->IsIIDSupported(T,d)
+#define IRpcStubBuffer_CountRefs(This) (This)->lpVtbl->CountRefs(This)
+#define IRpcStubBuffer_DebugServerQueryInterface(T,p) (T)->lpVtbl->DebugServerQueryInterface(T,p)
+#define IRpcStubBuffer_DebugServerRelease(T,p) (T)->lpVtbl->DebugServerRelease(T,p)
+#define IPSFactoryBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPSFactoryBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPSFactoryBuffer_Release(This) (This)->lpVtbl->Release(This)
+#define IPSFactoryBuffer_CreateProxy(T,U,r,P,p) (T)->lpVtbl->CreateProxy(T,U,r,P,p)
+#define IPSFactoryBuffer_CreateStub(T,r,U,p) (T)->lpVtbl->CreateStub(T,r,U,p)
+#endif /* COBJMACROS */
+
+#endif
diff --git a/winsup/w32api/include/ocidl.h b/winsup/w32api/include/ocidl.h
new file mode 100644
index 000000000..2618d841d
--- /dev/null
+++ b/winsup/w32api/include/ocidl.h
@@ -0,0 +1,7 @@
+#ifndef _OCIDL_H
+#define _OCIDL_H
+
+#include <ole2.h>
+#include <olectl.h>
+
+#endif
diff --git a/winsup/w32api/include/ole.h b/winsup/w32api/include/ole.h
new file mode 100644
index 000000000..1aa3f0245
--- /dev/null
+++ b/winsup/w32api/include/ole.h
@@ -0,0 +1,304 @@
+#ifndef _OLE_H
+#define _OLE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifdef STRICT
+#define OLE_LPCSTR LPCSTR
+#define OLE_CONST const
+#else
+#define OLE_LPCSTR LPSTR
+#define OLE_CONST
+#endif
+#define LRESULT LONG
+#define HGLOBAL HANDLE
+#define OT_LINK 1L
+#define OT_EMBEDDED 2L
+#define OT_STATIC 3L
+#define OLEVERB_PRIMARY 0
+#define OF_SET 1
+#define OF_GET 2
+#define OF_HANDLER 4
+
+typedef struct _OLETARGETDEVICE {
+ USHORT otdDeviceNameOffset;
+ USHORT otdDriverNameOffset;
+ USHORT otdPortNameOffset;
+ USHORT otdExtDevmodeOffset;
+ USHORT otdExtDevmodeSize;
+ USHORT otdEnvironmentOffset;
+ USHORT otdEnvironmentSize;
+ BYTE otdData[1];
+} OLETARGETDEVICE;
+typedef OLETARGETDEVICE *LPOLETARGETDEVICE;
+typedef enum {
+OLE_OK,
+OLE_WAIT_FOR_RELEASE,
+OLE_BUSY,
+OLE_ERROR_PROTECT_ONLY,
+OLE_ERROR_MEMORY,
+OLE_ERROR_STREAM,
+OLE_ERROR_STATIC,
+OLE_ERROR_BLANK,
+OLE_ERROR_DRAW,
+OLE_ERROR_METAFILE,
+OLE_ERROR_ABORT,
+OLE_ERROR_CLIPBOARD,
+OLE_ERROR_FORMAT,
+OLE_ERROR_OBJECT,
+OLE_ERROR_OPTION,
+OLE_ERROR_PROTOCOL,
+OLE_ERROR_ADDRESS,
+OLE_ERROR_NOT_EQUAL,
+OLE_ERROR_HANDLE,
+OLE_ERROR_GENERIC,
+OLE_ERROR_CLASS,
+OLE_ERROR_SYNTAX,
+OLE_ERROR_DATATYPE,
+OLE_ERROR_PALETTE,
+OLE_ERROR_NOT_LINK,
+OLE_ERROR_NOT_EMPTY,
+OLE_ERROR_SIZE,
+OLE_ERROR_DRIVE,
+OLE_ERROR_NETWORK,
+OLE_ERROR_NAME,
+OLE_ERROR_TEMPLATE,
+OLE_ERROR_NEW,
+OLE_ERROR_EDIT,
+OLE_ERROR_OPEN,
+OLE_ERROR_NOT_OPEN,
+OLE_ERROR_LAUNCH,
+OLE_ERROR_COMM,
+OLE_ERROR_TERMINATE,
+OLE_ERROR_COMMAND,
+OLE_ERROR_SHOW,
+OLE_ERROR_DOVERB,
+OLE_ERROR_ADVISE_NATIVE,
+OLE_ERROR_ADVISE_PICT,
+OLE_ERROR_ADVISE_RENAME,
+OLE_ERROR_POKE_NATIVE,
+OLE_ERROR_REQUEST_NATIVE,
+OLE_ERROR_REQUEST_PICT,
+OLE_ERROR_SERVER_BLOCKED,
+OLE_ERROR_REGISTRATION,
+OLE_ERROR_ALREADY_REGISTERED,
+OLE_ERROR_TASK,
+OLE_ERROR_OUTOFDATE,
+OLE_ERROR_CANT_UPDATE_CLIENT,
+OLE_ERROR_UPDATE,
+OLE_ERROR_SETDATA_FORMAT,
+OLE_ERROR_STATIC_FROM_OTHER_OS,
+OLE_ERROR_FILE_VER,
+OLE_WARN_DELETE_DATA = 1000
+} OLESTATUS;
+typedef enum {
+ OLE_CHANGED,
+ OLE_SAVED,
+ OLE_CLOSED,
+ OLE_RENAMED,
+ OLE_QUERY_PAINT,
+ OLE_RELEASE,
+ OLE_QUERY_RETRY
+} OLE_NOTIFICATION;
+typedef enum {
+ OLE_NONE,
+ OLE_DELETE,
+ OLE_LNKPASTE,
+ OLE_EMBPASTE,
+ OLE_SHOW,
+ OLE_RUN,
+ OLE_ACTIVATE,
+ OLE_UPDATE,
+ OLE_CLOSE,
+ OLE_RECONNECT,
+ OLE_SETUPDATEOPTIONS,
+ OLE_SERVERUNLAUNCH,
+ OLE_LOADFROMSTREAM,
+ OLE_SETDATA,
+ OLE_REQUESTDATA,
+ OLE_OTHER,
+ OLE_CREATE,
+ OLE_CREATEFROMTEMPLATE,
+ OLE_CREATELINKFROMFILE,
+ OLE_COPYFROMLNK,
+ OLE_CREATEFROMFILE,
+ OLE_CREATEINVISIBLE
+} OLE_RELEASE_METHOD;
+typedef enum {
+ olerender_none,
+ olerender_draw,
+ olerender_format
+ } OLEOPT_RENDER;
+typedef WORD OLECLIPFORMAT;
+typedef enum {
+ oleupdate_always,
+ oleupdate_onsave,
+#ifdef OLE_INTERNAL
+ oleupdate_oncall,
+ oleupdate_onclose
+#else
+ oleupdate_oncall
+#endif
+} OLEOPT_UPDATE;
+typedef HANDLE HOBJECT;
+typedef LONG LHSERVER;
+typedef LONG LHCLIENTDOC;
+typedef LONG LHSERVERDOC;
+typedef struct _OLEOBJECT *LPOLEOBJECT;
+typedef struct _OLESTREAM *LPOLESTREAM;
+typedef struct _OLECLIENT *LPOLECLIENT;
+typedef struct _OLEOBJECTVTBL {
+ void *(CALLBACK* QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR);
+ OLESTATUS (CALLBACK* Release)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* Show)(LPOLEOBJECT,BOOL);
+ OLESTATUS (CALLBACK* DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL);
+ OLESTATUS (CALLBACK* GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*);
+ OLESTATUS (CALLBACK* SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
+ OLESTATUS (CALLBACK* SetTargetDevice)(LPOLEOBJECT,HGLOBAL);
+ OLESTATUS (CALLBACK* SetBounds)(LPOLEOBJECT,OLE_CONST RECT*);
+ OLECLIPFORMAT (CALLBACK* EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
+ OLESTATUS (CALLBACK* SetColorScheme)(LPOLEOBJECT,OLE_CONST LOGPALETTE*);
+#ifndef SERVERONLY
+ OLESTATUS (CALLBACK* Delete)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR);
+ OLESTATUS (CALLBACK* SaveToStream)(LPOLEOBJECT,LPOLESTREAM);
+ OLESTATUS (CALLBACK* Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
+ OLESTATUS (CALLBACK* CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
+ OLESTATUS (CALLBACK* Equal)(LPOLEOBJECT,LPOLEOBJECT);
+ OLESTATUS (CALLBACK* CopyToClipboard)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* Draw)(LPOLEOBJECT,HDC,OLE_CONST RECT*,OLE_CONST RECT*,HDC);
+ OLESTATUS (CALLBACK* Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,OLE_CONST RECT*);
+ OLESTATUS (CALLBACK* Execute)(LPOLEOBJECT,HGLOBAL,UINT);
+ OLESTATUS (CALLBACK* Close)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* Update)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* Reconnect)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
+ OLESTATUS (CALLBACK* GetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE*);
+ OLESTATUS (CALLBACK* SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
+ OLESTATUS (CALLBACK* Rename)(LPOLEOBJECT,OLE_LPCSTR);
+ OLESTATUS (CALLBACK* QueryName)(LPOLEOBJECT,LPSTR,UINT*);
+ OLESTATUS (CALLBACK* QueryType)(LPOLEOBJECT,LONG*);
+ OLESTATUS (CALLBACK* QueryBounds)(LPOLEOBJECT,RECT*);
+ OLESTATUS (CALLBACK* QuerySize)(LPOLEOBJECT,DWORD*);
+ OLESTATUS (CALLBACK* QueryOpen)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* QueryOutOfDate)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* QueryReleaseStatus)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* QueryReleaseError)(LPOLEOBJECT);
+ OLE_RELEASE_METHOD (CALLBACK* QueryReleaseMethod)(LPOLEOBJECT);
+ OLESTATUS (CALLBACK* RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
+ OLESTATUS (CALLBACK* ObjectLong)(LPOLEOBJECT,UINT,LONG*);
+ OLESTATUS (CALLBACK* ChangeData)(LPOLEOBJECT,HANDLE,LPOLECLIENT,BOOL);
+#endif
+} OLEOBJECTVTBL;
+typedef OLEOBJECTVTBL*LPOLEOBJECTVTBL;
+#ifndef OLE_INTERNAL
+typedef struct _OLEOBJECT { LPOLEOBJECTVTBL lpvtbl; } OLEOBJECT;
+#endif
+typedef struct _OLECLIENTVTBL { int (CALLBACK* CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT); } OLECLIENTVTBL;
+typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
+typedef struct _OLECLIENT { LPOLECLIENTVTBL lpvtbl; } OLECLIENT;
+typedef struct _OLESTREAMVTBL {
+ DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD);
+ DWORD (CALLBACK* Put)(LPOLESTREAM,OLE_CONST void*,DWORD);
+} OLESTREAMVTBL;
+typedef OLESTREAMVTBL *LPOLESTREAMVTBL;
+typedef struct _OLESTREAM { LPOLESTREAMVTBL lpstbl; } OLESTREAM;
+typedef enum {
+ OLE_SERVER_MULTI,
+ OLE_SERVER_SINGLE
+} OLE_SERVER_USE;
+typedef struct _OLESERVER *LPOLESERVER;
+typedef struct _OLESERVERDOC *LPOLESERVERDOC;
+typedef struct _OLESERVERVTBL {
+ OLESTATUS (CALLBACK* Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC*);
+ OLESTATUS (CALLBACK* Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
+ OLESTATUS (CALLBACK* CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
+ OLESTATUS (CALLBACK* Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
+ OLESTATUS (CALLBACK* Exit)(LPOLESERVER);
+ OLESTATUS (CALLBACK* Release)(LPOLESERVER);
+ OLESTATUS (CALLBACK* Execute)(LPOLESERVER,HGLOBAL);
+} OLESERVERVTBL;
+typedef OLESERVERVTBL *LPOLESERVERVTBL;
+typedef struct _OLESERVER { LPOLESERVERVTBL lpvtbl; } OLESERVER;
+typedef struct _OLESERVERDOCVTBL {
+ OLESTATUS (CALLBACK* Save)(LPOLESERVERDOC);
+ OLESTATUS (CALLBACK* Close)(LPOLESERVERDOC);
+ OLESTATUS (CALLBACK* SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR);
+ OLESTATUS (CALLBACK* SetDocDimensions)(LPOLESERVERDOC,OLE_CONST RECT*);
+ OLESTATUS (CALLBACK* GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT);
+ OLESTATUS (CALLBACK* Release)(LPOLESERVERDOC);
+ OLESTATUS (CALLBACK* SetColorScheme)(LPOLESERVERDOC,OLE_CONST LOGPALETTE*);
+ OLESTATUS (CALLBACK* Execute)(LPOLESERVERDOC,HGLOBAL);
+} OLESERVERDOCVTBL;
+typedef OLESERVERDOCVTBL *LPOLESERVERDOCVTBL;
+typedef struct _OLESERVERDOC { LPOLESERVERDOCVTBL lpvtbl; } OLESERVERDOC;
+OLESTATUS WINAPI OleDelete(LPOLEOBJECT);
+OLESTATUS WINAPI OleRelease(LPOLEOBJECT);
+OLESTATUS WINAPI OleSaveToStream(LPOLEOBJECT,LPOLESTREAM);
+OLESTATUS WINAPI OleEqual(LPOLEOBJECT,LPOLEOBJECT );
+OLESTATUS WINAPI OleCopyToClipboard(LPOLEOBJECT);
+OLESTATUS WINAPI OleSetHostNames(LPOLEOBJECT,LPCSTR,LPCSTR);
+OLESTATUS WINAPI OleSetTargetDevice(LPOLEOBJECT,HGLOBAL);
+OLESTATUS WINAPI OleSetBounds(LPOLEOBJECT,LPCRECT);
+OLESTATUS WINAPI OleSetColorScheme(LPOLEOBJECT,const LOGPALETTE*);
+OLESTATUS WINAPI OleQueryBounds(LPOLEOBJECT,RECT*);
+OLESTATUS WINAPI OleQuerySize(LPOLEOBJECT,DWORD*);
+OLESTATUS WINAPI OleDraw(LPOLEOBJECT,HDC,LPCRECT,LPCRECT,HDC);
+OLESTATUS WINAPI OleQueryOpen(LPOLEOBJECT);
+OLESTATUS WINAPI OleActivate(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPCRECT);
+OLESTATUS WINAPI OleExecute(LPOLEOBJECT,HGLOBAL,UINT);
+OLESTATUS WINAPI OleClose(LPOLEOBJECT);
+OLESTATUS WINAPI OleUpdate(LPOLEOBJECT);
+OLESTATUS WINAPI OleReconnect(LPOLEOBJECT);
+OLESTATUS WINAPI OleGetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE*);
+OLESTATUS WINAPI OleSetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE);
+void *WINAPI OleQueryProtocol(LPOLEOBJECT,LPCSTR);
+OLESTATUS WINAPI OleQueryReleaseStatus(LPOLEOBJECT);
+OLESTATUS WINAPI OleQueryReleaseError(LPOLEOBJECT);
+OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod(LPOLEOBJECT);
+OLESTATUS WINAPI OleQueryType(LPOLEOBJECT,LONG*);
+DWORD WINAPI OleQueryClientVersion(void);
+DWORD WINAPI OleQueryServerVersion(void);
+OLECLIPFORMAT WINAPI OleEnumFormats(LPOLEOBJECT,OLECLIPFORMAT);
+OLESTATUS WINAPI OleGetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*);
+OLESTATUS WINAPI OleSetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
+OLESTATUS WINAPI OleQueryOutOfDate(LPOLEOBJECT);
+OLESTATUS WINAPI OleRequestData(LPOLEOBJECT,OLECLIPFORMAT);
+OLESTATUS WINAPI OleQueryLinkFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleQueryCreateFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateLinkFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateLinkFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleLoadFromStream(LPOLESTREAM,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
+OLESTATUS WINAPI OleCreate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleCreateInvisible(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT,BOOL);
+OLESTATUS WINAPI OleCreateFromTemplate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
+OLESTATUS WINAPI OleClone(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
+OLESTATUS WINAPI OleCopyFromLink(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
+OLESTATUS WINAPI OleObjectConvert(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
+OLESTATUS WINAPI OleRename(LPOLEOBJECT,LPCSTR);
+OLESTATUS WINAPI OleQueryName(LPOLEOBJECT,LPSTR,UINT*);
+OLESTATUS WINAPI OleRevokeObject(LPOLECLIENT);
+BOOL WINAPI OleIsDcMeta(HDC);
+OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC*);
+OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR);
+OLESTATUS WINAPI OleRevertClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleSavedClientDoc(LHCLIENTDOC);
+OLESTATUS WINAPI OleEnumObjects(LHCLIENTDOC,LPOLEOBJECT*);
+OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER*,HINSTANCE,OLE_SERVER_USE);
+OLESTATUS WINAPI OleRevokeServer(LHSERVER);
+OLESTATUS WINAPI OleBlockServer(LHSERVER);
+OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL*);
+OLESTATUS WINAPI OleLockServer(LPOLEOBJECT,LHSERVER*);
+OLESTATUS WINAPI OleUnlockServer(LHSERVER);
+OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC*);
+OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC);
+OLESTATUS WINAPI OleRenameServerDoc(LHSERVERDOC,LPCSTR);
+OLESTATUS WINAPI OleRevertServerDoc(LHSERVERDOC);
+OLESTATUS WINAPI OleSavedServerDoc(LHSERVERDOC);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/ole2.h b/winsup/w32api/include/ole2.h
new file mode 100644
index 000000000..0f5aa71fe
--- /dev/null
+++ b/winsup/w32api/include/ole2.h
@@ -0,0 +1,106 @@
+#ifndef _OLE2_H
+#define _OLE2_H
+#pragma pack(push,8)
+#include <winerror.h>
+#include <objbase.h>
+#include <olectlid.h>
+#include <oleauto.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define E_DRAW VIEW_E_DRAW
+#define DATA_E_FORMATETC DV_E_FORMATETC
+#define OLEIVERB_PRIMARY (0L)
+#define OLEIVERB_SHOW (-1L)
+#define OLEIVERB_OPEN (-2L)
+#define OLEIVERB_HIDE (-3L)
+#define OLEIVERB_UIACTIVATE (-4L)
+#define OLEIVERB_INPLACEACTIVATE (-5L)
+#define OLEIVERB_DISCARDUNDOSTATE (-6L)
+#define EMBDHLP_INPROC_HANDLER 0x0000L
+#define EMBDHLP_INPROC_SERVER 0x0001L
+#define EMBDHLP_CREATENOW 0x00000000L
+#define EMBDHLP_DELAYCREATE 0x00010000L
+#include <oleidl.h>
+
+typedef struct _OLESTREAMVTBL *LPOLESTREAMVTBL;
+typedef struct _OLESTREAM {
+ LPOLESTREAMVTBL lpstbl;
+} OLESTREAM,*LPOLESTREAM;
+typedef struct _OLESTREAMVTBL {
+ DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD);
+ DWORD (CALLBACK* Put)(LPOLESTREAM,const void*,DWORD);
+} OLESTREAMVTBL;
+
+WINOLEAPI CreateDataAdviseHolder(LPDATAADVISEHOLDER*);
+WINOLEAPI_(DWORD) OleBuildVersion(void);
+WINOLEAPI ReadClassStg(LPSTORAGE,CLSID*);
+WINOLEAPI WriteClassStg(LPSTORAGE,REFCLSID);
+WINOLEAPI ReadClassStm(LPSTREAM,CLSID*);
+WINOLEAPI WriteClassStm(LPSTREAM,REFCLSID);
+WINOLEAPI WriteFmtUserTypeStg(LPSTORAGE,CLIPFORMAT,LPOLESTR);
+WINOLEAPI ReadFmtUserTypeStg(LPSTORAGE,CLIPFORMAT*,LPOLESTR*);
+WINOLEAPI OleInitialize(PVOID);
+WINOLEAPI_(void) OleUninitialize(void);
+WINOLEAPI OleQueryLinkFromData(LPDATAOBJECT);
+WINOLEAPI OleQueryCreateFromData(LPDATAOBJECT);
+WINOLEAPI OleCreate(REFCLSID,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateLinkFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateStaticFromData(LPDATAOBJECT,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateLink(LPMONIKER,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateLinkToFile(LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleCreateFromFile(REFCLSID,LPCOLESTR,REFIID,DWORD,LPFORMATETC,LPOLECLIENTSITE,LPSTORAGE,PVOID*);
+WINOLEAPI OleLoad(LPSTORAGE,REFIID,LPOLECLIENTSITE,PVOID*);
+WINOLEAPI OleSave(LPPERSISTSTORAGE,LPSTORAGE,BOOL);
+WINOLEAPI OleLoadFromStream(LPSTREAM,REFIID,PVOID*);
+WINOLEAPI OleSaveToStream(LPPERSISTSTREAM,LPSTREAM);
+WINOLEAPI OleSetContainedObject(LPUNKNOWN,BOOL);
+WINOLEAPI OleNoteObjectVisible(LPUNKNOWN,BOOL);
+WINOLEAPI RegisterDragDrop(HWND,LPDROPTARGET);
+WINOLEAPI RevokeDragDrop(HWND);
+WINOLEAPI DoDragDrop(LPDATAOBJECT,LPDROPSOURCE,DWORD,PDWORD);
+WINOLEAPI OleSetClipboard(LPDATAOBJECT);
+WINOLEAPI OleGetClipboard(LPDATAOBJECT*);
+WINOLEAPI OleFlushClipboard(void);
+WINOLEAPI OleIsCurrentClipboard(LPDATAOBJECT);
+WINOLEAPI_(HOLEMENU) OleCreateMenuDescriptor(HMENU,LPOLEMENUGROUPWIDTHS);
+WINOLEAPI OleSetMenuDescriptor(HOLEMENU,HWND,HWND,LPOLEINPLACEFRAME,LPOLEINPLACEACTIVEOBJECT);
+WINOLEAPI OleDestroyMenuDescriptor(HOLEMENU);
+WINOLEAPI OleTranslateAccelerator(LPOLEINPLACEFRAME,LPOLEINPLACEFRAMEINFO,LPMSG);
+WINOLEAPI_(HANDLE) OleDuplicateData(HANDLE,CLIPFORMAT,UINT);
+WINOLEAPI OleDraw(LPUNKNOWN,DWORD,HDC,LPCRECT);
+WINOLEAPI OleRun(LPUNKNOWN);
+WINOLEAPI_(BOOL) OleIsRunning(LPOLEOBJECT);
+WINOLEAPI OleLockRunning(LPUNKNOWN,BOOL,BOOL);
+WINOLEAPI_(void) ReleaseStgMedium(LPSTGMEDIUM);
+WINOLEAPI CreateOleAdviseHolder(LPOLEADVISEHOLDER*);
+WINOLEAPI OleCreateDefaultHandler(REFCLSID,LPUNKNOWN,REFIID,PVOID*);
+WINOLEAPI OleCreateEmbeddingHelper(REFCLSID,LPUNKNOWN,DWORD,LPCLASSFACTORY,REFIID,PVOID*);
+WINOLEAPI_(BOOL) IsAccelerator(HACCEL,int,LPMSG,WORD*);
+WINOLEAPI_(HGLOBAL) OleGetIconOfFile(LPOLESTR,BOOL);
+WINOLEAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID,LPOLESTR,BOOL);
+WINOLEAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON,LPOLESTR,LPOLESTR,UINT);
+WINOLEAPI OleRegGetUserType(REFCLSID,DWORD,LPOLESTR*);
+WINOLEAPI OleRegGetMiscStatus(REFCLSID,DWORD,DWORD*);
+WINOLEAPI OleRegEnumFormatEtc (REFCLSID,DWORD,LPENUMFORMATETC*);
+WINOLEAPI OleRegEnumVerbs (REFCLSID,LPENUMOLEVERB*);
+WINOLEAPI OleConvertOLESTREAMToIStorage(LPOLESTREAM,LPSTORAGE,const DVTARGETDEVICE*);
+WINOLEAPI OleConvertIStorageToOLESTREAM(LPSTORAGE,LPOLESTREAM);
+WINOLEAPI GetHGlobalFromILockBytes(LPLOCKBYTES,HGLOBAL*);
+WINOLEAPI CreateILockBytesOnHGlobal(HGLOBAL,BOOL,LPLOCKBYTES*);
+WINOLEAPI GetHGlobalFromStream(LPSTREAM,HGLOBAL*);
+WINOLEAPI CreateStreamOnHGlobal(HGLOBAL,BOOL,LPSTREAM*);
+WINOLEAPI OleDoAutoConvert(LPSTORAGE,LPCLSID);
+WINOLEAPI OleGetAutoConvert(REFCLSID,LPCLSID);
+WINOLEAPI OleSetAutoConvert(REFCLSID,REFCLSID);
+WINOLEAPI GetConvertStg(LPSTORAGE);
+WINOLEAPI SetConvertStg(LPSTORAGE,BOOL);
+WINOLEAPI OleConvertIStorageToOLESTREAMEx(LPSTORAGE,CLIPFORMAT,LONG,LONG,DWORD,LPSTGMEDIUM,LPOLESTREAM);
+WINOLEAPI OleConvertOLESTREAMToIStorageEx(LPOLESTREAM,LPSTORAGE,CLIPFORMAT*,LONG*,LONG*,DWORD*,LPSTGMEDIUM);
+#ifdef __cplusplus
+}
+#endif
+#pragma pack(pop)
+#endif
diff --git a/winsup/w32api/include/ole2ver.h b/winsup/w32api/include/ole2ver.h
new file mode 100644
index 000000000..c7741dc19
--- /dev/null
+++ b/winsup/w32api/include/ole2ver.h
@@ -0,0 +1,5 @@
+#ifndef _OLE2VER_H
+#define _OLE2VER_H
+#define rmm 23
+#define rup 639
+#endif
diff --git a/winsup/w32api/include/oleauto.h b/winsup/w32api/include/oleauto.h
new file mode 100644
index 000000000..1b60e267d
--- /dev/null
+++ b/winsup/w32api/include/oleauto.h
@@ -0,0 +1,252 @@
+#ifndef _OLEAUTO_H
+#define _OLEAUTO_H
+#pragma pack(push,8)
+#define WINOLEAUTAPI STDAPI
+#define WINOLEAUTAPI_(type) STDAPI_(type)
+#define STDOLE_MAJORVERNUM 1
+#define STDOLE_MINORVERNUM 0
+#define STDOLE_LCID 0
+#define VARIANT_NOVALUEPROP 1
+#define VAR_TIMEVALUEONLY 0x0001
+#define VAR_DATEVALUEONLY 0x0002
+#define MEMBERID_NIL DISPID_UNKNOWN
+#define ID_DEFAULTINST (-2)
+#define DISPATCH_METHOD 1
+#define DISPATCH_PROPERTYGET 2
+#define DISPATCH_PROPERTYPUT 4
+#define DISPATCH_PROPERTYPUTREF 8
+#define LHashValOfName(l,n) LHashValOfNameSys(SYS_WIN32,l,n)
+#define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h)))
+#define IsHashValCompatible(h1,h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2))))
+#define ACTIVEOBJECT_STRONG 0
+#define ACTIVEOBJECT_WEAK 1
+#ifdef NONAMELESSUNION
+#define V_UNION(X,Y) ((X)->u.Y)
+#else
+#define V_UNION(X,Y) ((X)->Y)
+#endif
+#ifdef __cplusplus
+#define V_BOOL(X) V_UNION(X,boolVal)
+#else
+#define V_BOOL(X) V_UNION(X,bool)
+#endif
+#define V_VT(X) ((X)->vt)
+#define V_ISBYREF(X) (V_VT(X)&VT_BYREF)
+#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY)
+#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR)
+#define V_NONE(X) V_I2(X)
+#define V_UI1(X) V_UNION(X,bVal)
+#define V_UI1REF(X) V_UNION(X,pbVal)
+#define V_I2(X) V_UNION(X,iVal)
+#define V_I2REF(X) V_UNION(X,piVal)
+#define V_I4(X) V_UNION(X,lVal)
+#define V_I4REF(X) V_UNION(X,plVal)
+#define V_I8(X) V_UNION(X,hVal)
+#define V_I8REF(X) V_UNION(X,phVal)
+#define V_R4(X) V_UNION(X,fltVal)
+#define V_R4REF(X) V_UNION(X,pfltVal)
+#define V_R8(X) V_UNION(X,dblVal)
+#define V_R8REF(X) V_UNION(X,pdblVal)
+#define V_CY(X) V_UNION(X,cyVal)
+#define V_CYREF(X) V_UNION(X,pcyVal)
+#define V_DATE(X) V_UNION(X,date)
+#define V_DATEREF(X) V_UNION(X,pdate)
+#define V_BSTR(X) V_UNION(X,bstrVal)
+#define V_BSTRREF(X) V_UNION(X,pbstrVal)
+#define V_DISPATCH(X) V_UNION(X,pdispVal)
+#define V_DISPATCHREF(X) V_UNION(X,ppdispVal)
+#define V_ERROR(X) V_UNION(X,scode)
+#define V_ERRORREF(X) V_UNION(X,pscode)
+#define V_BOOLREF(X) V_UNION(X,pboolVal)
+#define V_UNKNOWN(X) V_UNION(X,punkVal)
+#define V_UNKNOWNREF(X) V_UNION(X,ppunkVal)
+#define V_VARIANTREF(X) V_UNION(X,pvarVal)
+#define V_LPSTR(X) V_UNION(X,pszVal)
+#define V_LPSTRREF(X) V_UNION(X,ppszVal)
+#define V_LPWSTR(X) V_UNION(X,pwszVal)
+#define V_LPWSTRREF(X) V_UNION(X,ppwszVal)
+#define V_FILETIME(X) V_UNION(X,filetime)
+#define V_FILETIMEREF(X) V_UNION(X,pfiletime)
+#define V_BLOB(X) V_UNION(X,blob)
+#define V_UUID(X) V_UNION(X,puuid)
+#define V_CLSID(X) V_UNION(X,puuid)
+#define V_ARRAY(X) V_UNION(X,parray)
+#define V_ARRAYREF(X) V_UNION(X,pparray)
+#define V_BYREF(X) V_UNION(X,byref)
+#define V_DECIMAL(X) V_UNION(X,decVal)
+#define V_DECIMALREF(X) V_UNION(X,pdecVal)
+
+#include <oaidl.h>
+
+typedef enum tagREGKIND {
+ REGKIND_DEFAULT,
+ REGKIND_REGISTER,
+ REGKIND_NONE
+} REGKIND;
+typedef struct tagPARAMDATA {
+ OLECHAR *szName;
+ VARTYPE vt;
+} PARAMDATA,*LPPARAMDATA;
+typedef struct tagMETHODDATA {
+ OLECHAR *szName;
+ PARAMDATA *ppdata;
+ DISPID dispid;
+ UINT iMeth;
+ CALLCONV cc;
+ UINT cArgs;
+ WORD wFlags;
+ VARTYPE vtReturn;
+} METHODDATA,*LPMETHODDATA;
+typedef struct tagINTERFACEDATA {
+ METHODDATA *pmethdata;
+ UINT cMembers;
+} INTERFACEDATA,*LPINTERFACEDATA;
+
+WINOLEAUTAPI_(BSTR) SysAllocString(const OLECHAR*);
+WINOLEAUTAPI_(int) SysReAllocString(BSTR*,const OLECHAR*);
+WINOLEAUTAPI_(BSTR) SysAllocStringLen(const OLECHAR*,unsigned int);
+WINOLEAUTAPI_(int) SysReAllocStringLen(BSTR*,const OLECHAR*,unsigned int);
+WINOLEAUTAPI_(void) SysFreeString(BSTR);
+WINOLEAUTAPI_(unsigned int) SysStringLen(BSTR);
+WINOLEAUTAPI_(unsigned int) SysStringByteLen(BSTR);
+WINOLEAUTAPI_(BSTR) SysAllocStringByteLen(const char*,unsigned int);
+WINOLEAUTAPI_(int) DosDateTimeToVariantTime(unsigned short,unsigned short,double*);
+WINOLEAUTAPI_(int) VariantTimeToDosDateTime(double,unsigned short*,unsigned short*);
+WINOLEAUTAPI_(int) VariantTimeToSystemTime(double,LPSYSTEMTIME);
+WINOLEAUTAPI SafeArrayAllocDescriptor(unsigned int,SAFEARRAY**);
+WINOLEAUTAPI SafeArrayAllocData(SAFEARRAY*);
+WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreate(VARTYPE,unsigned int,SAFEARRAYBOUND*);
+WINOLEAUTAPI SafeArrayDestroyDescriptor(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayDestroyData(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayDestroy(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*);
+WINOLEAUTAPI_(unsigned int) SafeArrayGetDim(SAFEARRAY*);
+WINOLEAUTAPI_(unsigned int) SafeArrayGetElemsize(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayGetUBound(SAFEARRAY*,unsigned int,long*);
+WINOLEAUTAPI SafeArrayGetLBound(SAFEARRAY*,unsigned int,long*);
+WINOLEAUTAPI SafeArrayLock(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayUnlock(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayAccessData(SAFEARRAY*,void**);
+WINOLEAUTAPI SafeArrayUnaccessData(SAFEARRAY*);
+WINOLEAUTAPI SafeArrayGetElement(SAFEARRAY*,long*,void*);
+WINOLEAUTAPI SafeArrayPutElement(SAFEARRAY*,long*,void*);
+WINOLEAUTAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**);
+WINOLEAUTAPI SafeArrayPtrOfIndex(SAFEARRAY*,long*,void**);
+WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVector(VARTYPE,LONG,UINT);
+WINOLEAUTAPI_(void) VariantInit(VARIANTARG*);
+WINOLEAUTAPI VariantClear(VARIANTARG*);
+WINOLEAUTAPI VariantCopy(VARIANTARG*,VARIANTARG*);
+WINOLEAUTAPI VariantCopyInd(VARIANT*,VARIANTARG*);
+WINOLEAUTAPI VariantChangeType(VARIANTARG*,VARIANTARG*,unsigned short,VARTYPE);
+WINOLEAUTAPI VariantChangeTypeEx(VARIANTARG*,VARIANTARG*,LCID,unsigned short,VARTYPE);
+WINOLEAUTAPI VarUI1FromI2(short,unsigned char*);
+WINOLEAUTAPI VarUI1FromI4(long,unsigned char*);
+WINOLEAUTAPI VarUI1FromR4(float,unsigned char*);
+WINOLEAUTAPI VarUI1FromR8(double,unsigned char*);
+WINOLEAUTAPI VarUI1FromCy(CY,unsigned char*);
+WINOLEAUTAPI VarUI1FromDate(DATE,unsigned char*);
+WINOLEAUTAPI VarUI1FromStr(OLECHAR*,LCID,unsigned long,unsigned char*);
+WINOLEAUTAPI VarUI1FromDisp(LPDISPATCH*,LCID,unsigned char*);
+WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL,unsigned char*);
+WINOLEAUTAPI VarI2FromUI1(unsigned char,short*);
+WINOLEAUTAPI VarI2FromI4(long,short*);
+WINOLEAUTAPI VarI2FromR4(float,short*);
+WINOLEAUTAPI VarI2FromR8(double,short*);
+WINOLEAUTAPI VarI2FromCy(CY cyIn,short*);
+WINOLEAUTAPI VarI2FromDate(DATE,short*);
+WINOLEAUTAPI VarI2FromStr(OLECHAR*,LCID,unsigned long,short*);
+WINOLEAUTAPI VarI2FromDisp(LPDISPATCH*,LCID,short*);
+WINOLEAUTAPI VarI2FromBool(VARIANT_BOOL,short*);
+WINOLEAUTAPI VarI4FromUI1(unsigned char,long*);
+WINOLEAUTAPI VarI4FromI2(short,long*);
+WINOLEAUTAPI VarI4FromR4(float,long*);
+WINOLEAUTAPI VarI4FromR8(double,long*);
+WINOLEAUTAPI VarI4FromCy(CY,long*);
+WINOLEAUTAPI VarI4FromDate(DATE,long*);
+WINOLEAUTAPI VarI4FromStr(OLECHAR*,LCID,unsigned long,long*);
+WINOLEAUTAPI VarI4FromDisp(LPDISPATCH*,LCID,long*);
+WINOLEAUTAPI VarI4FromBool(VARIANT_BOOL,long*);
+WINOLEAUTAPI VarR4FromUI1(unsigned char,float*);
+WINOLEAUTAPI VarR4FromI2(short,float*);
+WINOLEAUTAPI VarR4FromI4(long,float*);
+WINOLEAUTAPI VarR4FromR8(double,float*);
+WINOLEAUTAPI VarR4FromCy(CY,float*);
+WINOLEAUTAPI VarR4FromDate(DATE,float*);
+WINOLEAUTAPI VarR4FromStr(OLECHAR*,LCID,unsigned long,float*);
+WINOLEAUTAPI VarR4FromDisp(LPDISPATCH*,LCID,float*);
+WINOLEAUTAPI VarR4FromBool(VARIANT_BOOL,float*);
+WINOLEAUTAPI VarR8FromUI1(unsigned char,double*);
+WINOLEAUTAPI VarR8FromI2(short,double*);
+WINOLEAUTAPI VarR8FromI4(long,double*);
+WINOLEAUTAPI VarR8FromR4(float,double*);
+WINOLEAUTAPI VarR8FromCy(CY,double*);
+WINOLEAUTAPI VarR8FromDate(DATE,double*);
+WINOLEAUTAPI VarR8FromStr(OLECHAR*,LCID,unsigned long,double*);
+WINOLEAUTAPI VarR8FromDisp(LPDISPATCH*,LCID,double*);
+WINOLEAUTAPI VarR8FromBool(VARIANT_BOOL,double*);
+WINOLEAUTAPI VarDateFromUI1(unsigned char,DATE*);
+WINOLEAUTAPI VarDateFromI2(short,DATE*);
+WINOLEAUTAPI VarDateFromI4(long,DATE*);
+WINOLEAUTAPI VarDateFromR4(float,DATE*);
+WINOLEAUTAPI VarDateFromR8(double,DATE*);
+WINOLEAUTAPI VarDateFromCy(CY,DATE*);
+WINOLEAUTAPI VarDateFromStr(OLECHAR*,LCID,unsigned long,DATE*);
+WINOLEAUTAPI VarDateFromDisp(LPDISPATCH*,LCID,DATE*);
+WINOLEAUTAPI VarDateFromBool(VARIANT_BOOL,DATE*);
+WINOLEAUTAPI VarCyFromUI1(unsigned char,CY*);
+WINOLEAUTAPI VarCyFromI2(short,CY*);
+WINOLEAUTAPI VarCyFromI4(long,CY*);
+WINOLEAUTAPI VarCyFromR4(float,CY*);
+WINOLEAUTAPI VarCyFromR8(double,CY*);
+WINOLEAUTAPI VarCyFromDate(DATE,CY*);
+WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,unsigned long,CY*);
+WINOLEAUTAPI VarCyFromDisp(LPDISPATCH*,LCID,CY*);
+WINOLEAUTAPI VarCyFromBool(VARIANT_BOOL,CY*);
+WINOLEAUTAPI VarBstrFromUI1(unsigned char,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromI2(short,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromI4(long,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromR4(float,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromR8(double,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromCy(CY,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromDate(DATE,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromDisp(LPDISPATCH*,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBstrFromBool(VARIANT_BOOL,LCID,unsigned long,BSTR*);
+WINOLEAUTAPI VarBoolFromUI1(unsigned char,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromI2(short,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromI4(long,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromR4(float,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromR8(double,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromDate(DATE,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromCy(CY,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromStr(OLECHAR*,LCID,unsigned long,VARIANT_BOOL*);
+WINOLEAUTAPI VarBoolFromDisp(LPDISPATCH*,LCID,VARIANT_BOOL*);
+WINOLEAUTAPI_(ULONG) LHashValOfNameSysA(SYSKIND,LCID,const char*);
+WINOLEAUTAPI_(ULONG) LHashValOfNameSys(SYSKIND,LCID,const OLECHAR*);
+WINOLEAUTAPI LoadTypeLib(const OLECHAR*,LPTYPELIB*);
+WINOLEAUTAPI LoadTypeLibEx(LPCOLESTR,REGKIND,LPTYPELIB*);
+WINOLEAUTAPI LoadRegTypeLib(REFGUID,WORD,WORD,LCID,LPTYPELIB*);
+WINOLEAUTAPI QueryPathOfRegTypeLib(REFGUID,unsigned short,unsigned short,LCID,LPBSTR);
+WINOLEAUTAPI RegisterTypeLib(LPTYPELIB,OLECHAR*,OLECHAR*);
+WINOLEAUTAPI DeregisterTypeLib(REFGUID,WORD,WORD,LCID);
+WINOLEAUTAPI CreateTypeLib(SYSKIND,const OLECHAR*,LPCREATETYPELIB*);
+WINOLEAUTAPI DispGetParam(DISPPARAMS*,UINT,VARTYPE,VARIANT*,UINT*);
+WINOLEAUTAPI DispGetIDsOfNames(LPTYPEINFO,OLECHAR**,UINT,DISPID*);
+WINOLEAUTAPI DispInvoke(void*,LPTYPEINFO,DISPID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*);
+WINOLEAUTAPI CreateDispTypeInfo(INTERFACEDATA*,LCID,LPTYPEINFO*);
+WINOLEAUTAPI CreateStdDispatch(IUnknown*,void*,LPTYPEINFO,IUnknown**);
+WINOLEAUTAPI RegisterActiveObject(IUnknown*,REFCLSID,DWORD,DWORD*);
+WINOLEAUTAPI RevokeActiveObject(DWORD,void*);
+WINOLEAUTAPI GetActiveObject(REFCLSID,void*,IUnknown**);
+WINOLEAUTAPI SetErrorInfo(unsigned long,LPERRORINFO);
+WINOLEAUTAPI GetErrorInfo(unsigned long,LPERRORINFO*);
+WINOLEAUTAPI CreateErrorInfo(LPCREATEERRORINFO*);
+WINOLEAUTAPI_(unsigned long) OaBuildVersion(void);
+WINOLEAUTAPI VectorFromBstr (BSTR, SAFEARRAY **);
+WINOLEAUTAPI BstrFromVector (SAFEARRAY *, BSTR *);
+
+WINOLEAUTAPI VarAdd(LPVARIANT, LPVARIANT, LPVARIANT);
+WINOLEAUTAPI VarSub(LPVARIANT, LPVARIANT, LPVARIANT);
+WINOLEAUTAPI VarMul(LPVARIANT, LPVARIANT, LPVARIANT);
+WINOLEAUTAPI VarDiv(LPVARIANT, LPVARIANT, LPVARIANT);
+#pragma pack(pop)
+#endif
diff --git a/winsup/w32api/include/olectl.h b/winsup/w32api/include/olectl.h
new file mode 100644
index 000000000..97ea9f40d
--- /dev/null
+++ b/winsup/w32api/include/olectl.h
@@ -0,0 +1,721 @@
+#ifndef _OLECTL_H
+#define _OLECTL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <olectlid.h>
+
+#define STD_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR,FACILITY_CONTROL,n)
+#define CTL_E_ILLEGALFUNCTIONCALL STD_CTL_SCODE(5)
+#define CTL_E_OVERFLOW STD_CTL_SCODE(6)
+#define CTL_E_OUTOFMEMORY STD_CTL_SCODE(7)
+#define CTL_E_DIVISIONBYZERO STD_CTL_SCODE(11)
+#define CTL_E_OUTOFSTRINGSPACE STD_CTL_SCODE(14)
+#define CTL_E_OUTOFSTACKSPACE STD_CTL_SCODE(28)
+#define CTL_E_BADFILENAMEORNUMBER STD_CTL_SCODE(52)
+#define CTL_E_FILENOTFOUND STD_CTL_SCODE(53)
+#define CTL_E_BADFILEMODE STD_CTL_SCODE(54)
+#define CTL_E_FILEALREADYOPEN STD_CTL_SCODE(55)
+#define CTL_E_DEVICEIOERROR STD_CTL_SCODE(57)
+#define CTL_E_FILEALREADYEXISTS STD_CTL_SCODE(58)
+#define CTL_E_BADRECORDLENGTH STD_CTL_SCODE(59)
+#define CTL_E_DISKFULL STD_CTL_SCODE(61)
+#define CTL_E_BADRECORDNUMBER STD_CTL_SCODE(63)
+#define CTL_E_BADFILENAME STD_CTL_SCODE(64)
+#define CTL_E_TOOMANYFILES STD_CTL_SCODE(67)
+#define CTL_E_DEVICEUNAVAILABLE STD_CTL_SCODE(68)
+#define CTL_E_PERMISSIONDENIED STD_CTL_SCODE(70)
+#define CTL_E_DISKNOTREADY STD_CTL_SCODE(71)
+#define CTL_E_PATHFILEACCESSERROR STD_CTL_SCODE(75)
+#define CTL_E_PATHNOTFOUND STD_CTL_SCODE(76)
+#define CTL_E_INVALIDPATTERNSTRING STD_CTL_SCODE(93)
+#define CTL_E_INVALIDUSEOFNULL STD_CTL_SCODE(94)
+#define CTL_E_INVALIDFILEFORMAT STD_CTL_SCODE(321)
+#define CTL_E_INVALIDPROPERTYVALUE STD_CTL_SCODE(380)
+#define CTL_E_INVALIDPROPERTYARRAYINDEX STD_CTL_SCODE(381)
+#define CTL_E_SETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(382)
+#define CTL_E_SETNOTSUPPORTED STD_CTL_SCODE(383)
+#define CTL_E_NEEDPROPERTYARRAYINDEX STD_CTL_SCODE(385)
+#define CTL_E_SETNOTPERMITTED STD_CTL_SCODE(387)
+#define CTL_E_GETNOTSUPPORTEDATRUNTIME STD_CTL_SCODE(393)
+#define CTL_E_GETNOTSUPPORTED STD_CTL_SCODE(394)
+#define CTL_E_PROPERTYNOTFOUND STD_CTL_SCODE(422)
+#define CTL_E_INVALIDCLIPBOARDFORMAT STD_CTL_SCODE(460)
+#define CTL_E_INVALIDPICTURE STD_CTL_SCODE(481)
+#define CTL_E_PRINTERERROR STD_CTL_SCODE(482)
+#define CTL_E_CANTSAVEFILETOTEMP STD_CTL_SCODE(735)
+#define CTL_E_SEARCHTEXTNOTFOUND STD_CTL_SCODE(744)
+#define CTL_E_REPLACEMENTSTOOLONG STD_CTL_SCODE(746)
+#define CUSTOM_CTL_SCODE(n) MAKE_SCODE(SEVERITY_ERROR,FACILITY_CONTROL,n)
+#define CTL_E_CUSTOM_FIRST CUSTOM_CTL_SCODE(600)
+#define CLASS_E_NOTLICENSED (CLASSFACTORY_E_FIRST+2)
+#define CONNECT_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200)
+#define CONNECT_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F)
+#define CONNECT_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200)
+#define CONNECT_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F)
+#define CONNECT_E_NOCONNECTION (CONNECT_E_FIRST+0)
+#define CONNECT_E_ADVISELIMIT (CONNECT_E_FIRST+1)
+#define CONNECT_E_CANNOTCONNECT (CONNECT_E_FIRST+2)
+#define CONNECT_E_OVERRIDDEN (CONNECT_E_FIRST+3)
+#define SELFREG_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200)
+#define SELFREG_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F)
+#define SELFREG_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200)
+#define SELFREG_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F)
+#define SELFREG_E_TYPELIB (SELFREG_E_FIRST+0)
+#define SELFREG_E_CLASS (SELFREG_E_FIRST+1)
+#define PERPROP_E_FIRST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x200)
+#define PERPROP_E_LAST MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x20F)
+#define PERPROP_S_FIRST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x200)
+#define PERPROP_S_LAST MAKE_SCODE(SEVERITY_SUCCESS,FACILITY_ITF,0x20F)
+#define PERPROP_E_NOPAGEAVAILABLE PERPROP_E_FIRST
+#define OLEMISC_RECOMPOSEONRESIZE 0x1
+#define OLEMISC_ONLYICONIC 0x2
+#define OLEMISC_INSERTNOTREPLACE 0x4
+#define OLEMISC_STATIC 0x8
+#define OLEMISC_CANTLINKINSIDE 0x10
+#define OLEMISC_CANLINKBYOLE1 0x20
+#define OLEMISC_ISLINKOBJECT 0x40
+#define OLEMISC_INSIDEOUT 0x80
+#define OLEMISC_ACTIVATEWHENVISIBLE 0x100
+#define OLEMISC_RENDERINGISDEVICEINDEPENDENT 0x200
+#define OLEMISC_INVISIBLEATRUNTIME 0x400
+#define OLEMISC_ALWAYSRUN 0x800
+#define OLEMISC_ACTSLIKEBUTTON 0x1000
+#define OLEMISC_ACTSLIKELABEL 0x2000
+#define OLEMISC_NOUIACTIVATE 0x4000
+#define OLEMISC_ALIGNABLE 0x8000
+#define OLEMISC_SIMPLEFRAME 0x10000
+#define OLEMISC_SETCLIENTSITEFIRST 0x20000
+#define OLEMISC_IMEMODE 0x40000
+#define OLEMISC_IGNOREACTIVATEWHENVISIBLE 0x80000
+#define OLEMISC_WANTSTOMENUMERGE 0x100000
+#define OLEMISC_SUPPORTSMULTILEVELUNDO 0x200000
+#define OLEIVERB_PROPERTIES (-7)
+#define VT_STREAMED_PROPSET 73
+#define VT_STORED_PROPSET 74
+#define VT_BLOB_PROPSET 75
+#define VT_VERBOSE_ENUM 76
+#define VT_COLOR VT_I4
+#define VT_XPOS_PIXELS VT_I4
+#define VT_YPOS_PIXELS VT_I4
+#define VT_XSIZE_PIXELS VT_I4
+#define VT_YSIZE_PIXELS VT_I4
+#define VT_XPOS_HIMETRIC VT_I4
+#define VT_YPOS_HIMETRIC VT_I4
+#define VT_XSIZE_HIMETRIC VT_I4
+#define VT_YSIZE_HIMETRIC VT_I4
+#define VT_TRISTATE VT_I2
+#define VT_OPTEXCLUSIVE VT_BOOL
+#define VT_FONT VT_DISPATCH
+#define VT_PICTURE VT_DISPATCH
+#define VT_HANDLE VT_I4
+#define OCM__BASE (WM_USER+0x1c00)
+#define OCM_COMMAND (OCM__BASE+WM_COMMAND)
+#define OCM_CTLCOLORBTN (OCM__BASE+WM_CTLCOLORBTN)
+#define OCM_CTLCOLOREDIT (OCM__BASE+WM_CTLCOLOREDIT)
+#define OCM_CTLCOLORDLG (OCM__BASE+WM_CTLCOLORDLG)
+#define OCM_CTLCOLORLISTBOX (OCM__BASE+WM_CTLCOLORLISTBOX)
+#define OCM_CTLCOLORMSGBOX (OCM__BASE+WM_CTLCOLORMSGBOX)
+#define OCM_CTLCOLORSCROLLBAR (OCM__BASE+WM_CTLCOLORSCROLLBAR)
+#define OCM_CTLCOLORSTATIC (OCM__BASE+WM_CTLCOLORSTATIC)
+#define OCM_DRAWITEM (OCM__BASE+WM_DRAWITEM)
+#define OCM_MEASUREITEM (OCM__BASE+WM_MEASUREITEM)
+#define OCM_DELETEITEM (OCM__BASE+WM_DELETEITEM)
+#define OCM_VKEYTOITEM (OCM__BASE+WM_VKEYTOITEM)
+#define OCM_CHARTOITEM (OCM__BASE+WM_CHARTOITEM)
+#define OCM_COMPAREITEM (OCM__BASE+WM_COMPAREITEM)
+#define OCM_HSCROLL (OCM__BASE+WM_HSCROLL)
+#define OCM_VSCROLL (OCM__BASE+WM_VSCROLL)
+#define OCM_PARENTNOTIFY (OCM__BASE+WM_PARENTNOTIFY)
+#define OCM_NOTIFY (OCM__BASE+WM_NOTIFY)
+#define CTRLINFO_EATS_RETURN 1
+#define CTRLINFO_EATS_ESCAPE 2
+#define XFORMCOORDS_POSITION 1
+#define XFORMCOORDS_SIZE 2
+#define XFORMCOORDS_HIMETRICTOCONTAINER 4
+#define XFORMCOORDS_CONTAINERTOHIMETRIC 8
+#define GUIDKIND_DEFAULT_SOURCE_DISP_IID 1
+#define PROPPAGESTATUS_DIRTY 1
+#define PROPPAGESTATUS_VALIDATE 2
+#define FONTSIZE(n) {n##0000,0}
+#define PICTURE_SCALABLE 1
+#define PICTURE_TRANSPARENT 2
+#define PICTYPE_UNINITIALIZED (-1)
+#define PICTYPE_NONE 0
+#define PICTYPE_BITMAP 1
+#define PICTYPE_METAFILE 2
+#define PICTYPE_ICON 3
+#define PICTYPE_ENHMETAFILE 4
+#define DISPID_AUTOSIZE (-500)
+#define DISPID_BACKCOLOR (-501)
+#define DISPID_BACKSTYLE (-502)
+#define DISPID_BORDERCOLOR (-503)
+#define DISPID_BORDERSTYLE (-504)
+#define DISPID_BORDERWIDTH (-505)
+#define DISPID_DRAWMODE (-507)
+#define DISPID_DRAWSTYLE (-508)
+#define DISPID_DRAWWIDTH (-509)
+#define DISPID_FILLCOLOR (-510)
+#define DISPID_FILLSTYLE (-511)
+#define DISPID_FONT (-512)
+#define DISPID_FORECOLOR (-513)
+#define DISPID_ENABLED (-514)
+#define DISPID_HWND (-515)
+#define DISPID_TABSTOP (-516)
+#define DISPID_TEXT (-517)
+#define DISPID_CAPTION (-518)
+#define DISPID_BORDERVISIBLE (-519)
+#define DISPID_APPEARANCE (-520)
+#define DISPID_REFRESH (-550)
+#define DISPID_DOCLICK (-551)
+#define DISPID_ABOUTBOX (-552)
+#define DISPID_CLICK (-600)
+#define DISPID_DBLCLICK (-601)
+#define DISPID_KEYDOWN (-602)
+#define DISPID_KEYPRESS (-603)
+#define DISPID_KEYUP (-604)
+#define DISPID_MOUSEDOWN (-605)
+#define DISPID_MOUSEMOVE (-606)
+#define DISPID_MOUSEUP (-607)
+#define DISPID_ERROREVENT (-608)
+#define DISPID_AMBIENT_BACKCOLOR (-701)
+#define DISPID_AMBIENT_DISPLAYNAME (-702)
+#define DISPID_AMBIENT_FONT (-703)
+#define DISPID_AMBIENT_FORECOLOR (-704)
+#define DISPID_AMBIENT_LOCALEID (-705)
+#define DISPID_AMBIENT_MESSAGEREFLECT (-706)
+#define DISPID_AMBIENT_SCALEUNITS (-707)
+#define DISPID_AMBIENT_TEXTALIGN (-708)
+#define DISPID_AMBIENT_USERMODE (-709)
+#define DISPID_AMBIENT_UIDEAD (-710)
+#define DISPID_AMBIENT_SHOWGRABHANDLES (-711)
+#define DISPID_AMBIENT_SHOWHATCHING (-712)
+#define DISPID_AMBIENT_DISPLAYASDEFAULT (-713)
+#define DISPID_AMBIENT_SUPPORTSMNEMONICS (-714)
+#define DISPID_AMBIENT_AUTOCLIP (-715)
+#define DISPID_AMBIENT_APPEARANCE (-716)
+#define DISPID_FONT_NAME 0
+#define DISPID_FONT_SIZE 2
+#define DISPID_FONT_BOLD 3
+#define DISPID_FONT_ITALIC 4
+#define DISPID_FONT_UNDER 5
+#define DISPID_FONT_STRIKE 6
+#define DISPID_FONT_WEIGHT 7
+#define DISPID_FONT_CHARSET 8
+#define DISPID_PICT_HANDLE 0
+#define DISPID_PICT_HPAL 2
+#define DISPID_PICT_TYPE 3
+#define DISPID_PICT_WIDTH 4
+#define DISPID_PICT_HEIGHT 5
+#define DISPID_PICT_RENDER 6
+
+#pragma pack(push,8)
+#ifndef OLE2ANSI
+typedef TEXTMETRICW TEXTMETRICOLE;
+#else
+typedef TEXTMETRIC TEXTMETRICOLE;
+#endif
+typedef TEXTMETRICOLE *LPTEXTMETRICOLE;
+typedef interface IOleControl *LPOLECONTROL;
+typedef interface IOleControlSite *LPOLECONTROLSITE;
+typedef interface ISimpleFrameSite *LPSIMPLEFRAMESITE;
+typedef interface IErrorLog *LPERRORLOG;
+typedef interface IPropertyBag *LPPROPERTYBAG;
+typedef interface IPersistPropertyBag *LPPERSISTPROPERTYBAG;
+typedef interface IPersistStreamInit *LPPERSISTSTREAMINIT;
+typedef interface IPersistMemory *LPPERSISTMEMORY;
+typedef interface IPropertyNotifySink* LPPROPERTYNOTIFYSINK;
+typedef interface IProvideClassInfo *LPPROVIDECLASSINFO;
+typedef interface IProvideClassInfo2 *LPPROVIDECLASSINFO2;
+typedef interface IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER;
+typedef interface IEnumConnectionPoints *LPENUMCONNECTIONPOINTS;
+typedef interface IConnectionPoint *LPCONNECTIONPOINT;
+typedef interface IEnumConnections *LPENUMCONNECTIONS;
+typedef interface IClassFactory2 *LPCLASSFACTORY2;
+typedef interface ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES;
+typedef interface IPerPropertyBrowsing *LPPERPROPERTYBROWSING;
+typedef interface IPropertyPageSite *LPPROPERTYPAGESITE;
+typedef interface IPropertyPage *LPPROPERTYPAGE;
+typedef interface IPropertyPage2 *LPPROPERTYPAGE2;
+typedef interface IFont *LPFONT;
+typedef interface IFontDisp *LPFONTDISP;
+typedef interface IPicture *LPPICTURE;
+typedef interface IPictureDisp *LPPICTUREDISP;
+typedef DWORD OLE_COLOR;
+typedef long OLE_XPOS_PIXELS;
+typedef long OLE_YPOS_PIXELS;
+typedef long OLE_XSIZE_PIXELS;
+typedef long OLE_YSIZE_PIXELS;
+typedef long OLE_XPOS_HIMETRIC;
+typedef long OLE_YPOS_HIMETRIC;
+typedef long OLE_XSIZE_HIMETRIC;
+typedef long OLE_YSIZE_HIMETRIC;
+typedef float OLE_XPOS_CONTAINER;
+typedef float OLE_YPOS_CONTAINER;
+typedef float OLE_XSIZE_CONTAINER;
+typedef float OLE_YSIZE_CONTAINER;
+typedef VARIANT_BOOL OLE_OPTEXCLUSIVE;
+typedef VARIANT_BOOL OLE_CANCELBOOL;
+typedef VARIANT_BOOL OLE_ENABLEDEFAULTBOOL;
+typedef UINT OLE_HANDLE;
+typedef enum { triUnchecked,triChecked1,triGray } OLE_TRISTATE;
+typedef struct tagPOINTF {
+ float x;
+ float y;
+} POINTF,*LPPOINTF;
+typedef struct tagCONTROLINFO {
+ ULONG cb;
+ HACCEL hAccel;
+ USHORT cAccel;
+ DWORD dwFlags;
+} CONTROLINFO,*LPCONTROLINFO;
+typedef struct tagCONNECTDATA {
+ LPUNKNOWN pUnk;
+ DWORD dwCookie;
+} CONNECTDATA,*LPCONNECTDATA;
+typedef struct tagLICINFO {
+ long cbLicInfo;
+ BOOL fRuntimeKeyAvail;
+ BOOL fLicVerified;
+} LICINFO,*LPLICINFO;
+typedef struct tagCAUUID {
+ ULONG cElems;
+ GUID *pElems;
+} CAUUID,*LPCAUUID;
+typedef struct tagCALPOLESTR {
+ ULONG cElems;
+ LPOLESTR *pElems;
+} CALPOLESTR,*LPCALPOLESTR;
+typedef struct tagCADWORD {
+ ULONG cElems;
+ DWORD *pElems;
+} CADWORD,*LPCADWORD;
+typedef struct tagOCPFIPARAMS {
+ ULONG cbStructSize;
+ HWND hWndOwner;
+ int x;
+ int y;
+ LPCOLESTR lpszCaption;
+ ULONG cObjects;
+ LPUNKNOWN *lplpUnk;
+ ULONG cPages;
+ CLSID *lpPages;
+ LCID lcid;
+ DISPID dispidInitialProperty;
+} OCPFIPARAMS,*LPOCPFIPARAMS;
+typedef struct tagPROPPAGEINFO {
+ size_t cb;
+ LPOLESTR pszTitle;
+ SIZE size;
+ LPOLESTR pszDocString;
+ LPOLESTR pszHelpFile;
+ DWORD dwHelpContext;
+} PROPPAGEINFO,*LPPROPPAGEINFO;
+typedef struct tagFONTDESC {
+ UINT cbSizeofstruct;
+ LPOLESTR lpstrName;
+ CY cySize;
+ SHORT sWeight;
+ SHORT sCharset;
+ BOOL fItalic;
+ BOOL fUnderline;
+ BOOL fStrikethrough;
+} FONTDESC,*LPFONTDESC;
+typedef struct tagPICTDESC {
+ UINT cbSizeofstruct;
+ UINT picType;
+ union {
+ struct {
+ HBITMAP hbitmap;
+ HPALETTE hpal;
+ } bmp;
+ struct {
+ HMETAFILE hmeta;
+ int xExt;
+ int yExt;
+ } wmf;
+ struct {
+ HICON hicon;
+ } icon;
+ struct {
+ HENHMETAFILE hemf;
+ } emf;
+ } DUMMYUNIONNAME;
+} PICTDESC,*LPPICTDESC;
+
+EXTERN_C const IID IID_IOleControl;
+#undef INTERFACE
+#define INTERFACE IOleControl
+DECLARE_INTERFACE_(IOleControl,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetControlInfo)(THIS_ LPCONTROLINFO) PURE;
+ STDMETHOD(OnMnemonic)(THIS_ LPMSG) PURE;
+ STDMETHOD(OnAmbientPropertyChange)(THIS_ DISPID) PURE;
+ STDMETHOD(FreezeEvents)(THIS_ BOOL) PURE;
+};
+EXTERN_C const IID IID_IOleControlSite;
+#undef INTERFACE
+#define INTERFACE IOleControlSite
+DECLARE_INTERFACE_(IOleControlSite,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(OnControlInfoChanged)(THIS) PURE;
+ STDMETHOD(LockInPlaceActive)(THIS_ BOOL) PURE;
+ STDMETHOD(GetExtendedControl)(THIS_ LPDISPATCH*) PURE;
+ STDMETHOD(TransformCoords)(THIS_ POINTL*,POINTF*,DWORD) PURE;
+ STDMETHOD(TranslateAccelerator)(THIS_ LPMSG,DWORD) PURE;
+ STDMETHOD(OnFocus)(THIS_ BOOL) PURE;
+ STDMETHOD(ShowPropertyFrame)(THIS) PURE;
+};
+EXTERN_C const IID IID_ISimpleFrameSite;
+#undef INTERFACE
+#define INTERFACE ISimpleFrameSite
+DECLARE_INTERFACE_(ISimpleFrameSite,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(PreMessageFilter)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT*,PDWORD) PURE;
+ STDMETHOD(PostMessageFilter)(THIS_ HWND,UINT,WPARAM,LPARAM,LRESULT*,DWORD) PURE;
+};
+EXTERN_C const IID IID_IErrorLog;
+#undef INTERFACE
+#define INTERFACE IErrorLog
+DECLARE_INTERFACE_(IErrorLog,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(AddError)(THIS_ LPCOLESTR,LPEXCEPINFO) PURE;
+};
+EXTERN_C const IID IID_IPropertyBag;
+#undef INTERFACE
+#define INTERFACE IPropertyBag
+DECLARE_INTERFACE_(IPropertyBag,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Read)(THIS_ LPCOLESTR,LPVARIANT,LPERRORLOG) PURE;
+ STDMETHOD(Write)(THIS_ LPCOLESTR,LPVARIANT) PURE;
+};
+EXTERN_C const IID IID_IPersistPropertyBag;
+#undef INTERFACE
+#define INTERFACE IPersistPropertyBag
+DECLARE_INTERFACE_(IPersistPropertyBag,IPersist)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+ STDMETHOD(InitNew)(THIS) PURE;
+ STDMETHOD(Load)(THIS_ LPPROPERTYBAG,LPERRORLOG) PURE;
+ STDMETHOD(Save)(THIS_ LPPROPERTYBAG,BOOL,BOOL) PURE;
+};
+EXTERN_C const IID IID_IPersistStreamInit;
+#undef INTERFACE
+#define INTERFACE IPersistStreamInit
+DECLARE_INTERFACE_(IPersistStreamInit,IPersist)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+ STDMETHOD(IsDirty)(THIS) PURE;
+ STDMETHOD(Load)(THIS_ LPSTREAM) PURE;
+ STDMETHOD(Save)(THIS_ LPSTREAM,BOOL) PURE;
+ STDMETHOD(GetSizeMax)(THIS_ PULARGE_INTEGER) PURE;
+ STDMETHOD(InitNew)(THIS) PURE;
+};
+EXTERN_C const IID IID_IPersistMemory;
+#undef INTERFACE
+#define INTERFACE IPersistMemory
+DECLARE_INTERFACE_(IPersistMemory,IPersist)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ LPCLSID) PURE;
+ STDMETHOD(IsDirty)(THIS) PURE;
+ STDMETHOD(Load)(THIS_ PVOID,ULONG) PURE;
+ STDMETHOD(Save)(THIS_ PVOID,BOOL,ULONG) PURE;
+ STDMETHOD(GetSizeMax)(THIS_ PULONG) PURE;
+ STDMETHOD(InitNew)(THIS) PURE;
+};
+EXTERN_C const IID IID_IPropertyNotifySink;
+#undef INTERFACE
+#define INTERFACE IPropertyNotifySink
+DECLARE_INTERFACE_(IPropertyNotifySink,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(OnChanged)(THIS_ DISPID) PURE;
+ STDMETHOD(OnRequestEdit)(THIS_ DISPID) PURE;
+};
+EXTERN_C const IID IID_IProvideClassInfo;
+#undef INTERFACE
+#define INTERFACE IProvideClassInfo
+DECLARE_INTERFACE_(IProvideClassInfo,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO*) PURE;
+};
+EXTERN_C const IID IID_IProvideClassInfo2;
+#undef INTERFACE
+#define INTERFACE IProvideClassInfo2
+DECLARE_INTERFACE_(IProvideClassInfo2,IProvideClassInfo)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassInfo)(THIS_ LPTYPEINFO*) PURE;
+ STDMETHOD(GetGUID)(THIS_ DWORD,GUID*) PURE;
+};
+EXTERN_C const IID IID_IConnectionPointContainer;
+#undef INTERFACE
+#define INTERFACE IConnectionPointContainer
+DECLARE_INTERFACE_(IConnectionPointContainer,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(EnumConnectionPoints)(THIS_ LPENUMCONNECTIONPOINTS*) PURE;
+ STDMETHOD(FindConnectionPoint)(THIS_ REFIID,LPCONNECTIONPOINT*) PURE;
+};
+EXTERN_C const IID IID_IEnumConnectionPoints;
+#undef INTERFACE
+#define INTERFACE IEnumConnectionPoints
+DECLARE_INTERFACE_(IEnumConnectionPoints,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Next)(THIS_ ULONG,LPCONNECTIONPOINT*,ULONG*) PURE;
+ STDMETHOD(Skip)(THIS_ ULONG) PURE;
+ STDMETHOD(Reset)(THIS) PURE;
+ STDMETHOD(Clone)(THIS_ LPENUMCONNECTIONPOINTS*) PURE;
+};
+EXTERN_C const IID IID_IConnectionPoint;
+#undef INTERFACE
+#define INTERFACE IConnectionPoint
+DECLARE_INTERFACE_(IConnectionPoint,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetConnectionInterface)(THIS_ IID*) PURE;
+ STDMETHOD(GetConnectionPointContainer)(THIS_ IConnectionPointContainer**) PURE;
+ STDMETHOD(Advise)(THIS_ LPUNKNOWN,PDWORD) PURE;
+ STDMETHOD(Unadvise)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumConnections)(THIS_ LPENUMCONNECTIONS*) PURE;
+};
+EXTERN_C const IID IID_IEnumConnections;
+#undef INTERFACE
+#define INTERFACE IEnumConnections
+DECLARE_INTERFACE_(IEnumConnections,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Next)(THIS_ ULONG,LPCONNECTDATA,PULONG) PURE;
+ STDMETHOD(Skip)(THIS_ ULONG) PURE;
+ STDMETHOD(Reset)(THIS) PURE;
+ STDMETHOD(Clone)(THIS_ LPENUMCONNECTIONS*) PURE;
+};
+EXTERN_C const IID IID_IClassFactory2;
+#undef INTERFACE
+#define INTERFACE IClassFactory2
+DECLARE_INTERFACE_(IClassFactory2,IClassFactory)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
+ STDMETHOD(LockServer)(THIS_ BOOL) PURE;
+ STDMETHOD(GetLicInfo)(THIS_ LPLICINFO) PURE;
+ STDMETHOD(RequestLicKey)(THIS_ DWORD,BSTR*) PURE;
+ STDMETHOD(CreateInstanceLic)(THIS_ LPUNKNOWN,LPUNKNOWN,REFIID,BSTR,PVOID*) PURE;
+};
+EXTERN_C const IID IID_ISpecifyPropertyPages;
+#undef INTERFACE
+#define INTERFACE ISpecifyPropertyPages
+DECLARE_INTERFACE_(ISpecifyPropertyPages,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetPages)(THIS_ CAUUID*) PURE;
+};
+EXTERN_C const IID IID_IPerPropertyBrowsing;
+#undef INTERFACE
+#define INTERFACE IPerPropertyBrowsing
+DECLARE_INTERFACE_(IPerPropertyBrowsing,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetDisplayString)(THIS_ DISPID,BSTR*) PURE;
+ STDMETHOD(MapPropertyToPage)(THIS_ DISPID,LPCLSID) PURE;
+ STDMETHOD(GetPredefinedStrings)(THIS_ DISPID,CALPOLESTR*,CADWORD*) PURE;
+ STDMETHOD(GetPredefinedValue)(THIS_ DISPID,DWORD,VARIANT*) PURE;
+};
+EXTERN_C const IID IID_IPropertyPageSite;
+#undef INTERFACE
+#define INTERFACE IPropertyPageSite
+DECLARE_INTERFACE_(IPropertyPageSite,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(OnStatusChange)(THIS_ DWORD) PURE;
+ STDMETHOD(GetLocaleID)(THIS_ LCID*) PURE;
+ STDMETHOD(GetPageContainer)(THIS_ LPUNKNOWN*) PURE;
+ STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE;
+};
+EXTERN_C const IID IID_IPropertyPage;
+#undef INTERFACE
+#define INTERFACE IPropertyPage
+DECLARE_INTERFACE_(IPropertyPage,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(SetPageSite)(THIS_ LPPROPERTYPAGESITE) PURE;
+ STDMETHOD(Activate)(THIS_ HWND,LPCRECT,BOOL) PURE;
+ STDMETHOD(Deactivate)(THIS) PURE;
+ STDMETHOD(GetPageInfo)(THIS_ LPPROPPAGEINFO) PURE;
+ STDMETHOD(SetObjects)(THIS_ ULONG,LPUNKNOWN*) PURE;
+ STDMETHOD(Show)(THIS_ UINT) PURE;
+ STDMETHOD(Move)(THIS_ LPCRECT) PURE;
+ STDMETHOD(IsPageDirty)(THIS) PURE;
+ STDMETHOD(Apply)(THIS) PURE;
+ STDMETHOD(Help)(THIS_ LPCOLESTR) PURE;
+ STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE;
+};
+EXTERN_C const IID IID_IPropertyPage2;
+#undef INTERFACE
+#define INTERFACE IPropertyPage2
+DECLARE_INTERFACE_(IPropertyPage2,IPropertyPage)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(SetPageSite)(THIS_ LPPROPERTYPAGESITE) PURE;
+ STDMETHOD(Activate)(THIS_ HWND,LPCRECT,BOOL) PURE;
+ STDMETHOD(Deactivate)(THIS) PURE;
+ STDMETHOD(GetPageInfo)(THIS_ LPPROPPAGEINFO) PURE;
+ STDMETHOD(SetObjects)(THIS_ ULONG,LPUNKNOWN*) PURE;
+ STDMETHOD(Show)(THIS_ UINT) PURE;
+ STDMETHOD(Move)(THIS_ LPCRECT) PURE;
+ STDMETHOD(IsPageDirty)(THIS) PURE;
+ STDMETHOD(Apply)(THIS) PURE;
+ STDMETHOD(Help)(THIS_ LPCOLESTR) PURE;
+ STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE;
+ STDMETHOD(EditProperty)(THIS_ DISPID) PURE;
+};
+EXTERN_C const IID IID_IFont;
+#undef INTERFACE
+#define INTERFACE IFont
+DECLARE_INTERFACE_(IFont,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(get_Name)(THIS_ BSTR*) PURE;
+ STDMETHOD(put_Name)(THIS_ BSTR) PURE;
+ STDMETHOD(get_Size)(THIS_ CY*) PURE;
+ STDMETHOD(put_Size)(THIS_ CY) PURE;
+ STDMETHOD(get_Bold)(THIS_ BOOL*) PURE;
+ STDMETHOD(put_Bold)(THIS_ BOOL) PURE;
+ STDMETHOD(get_Italic)(THIS_ BOOL*) PURE;
+ STDMETHOD(put_Italic)(THIS_ BOOL) PURE;
+ STDMETHOD(get_Underline)(THIS_ BOOL*) PURE;
+ STDMETHOD(put_Underline)(THIS_ BOOL) PURE;
+ STDMETHOD(get_Strikethrough)(THIS_ BOOL*) PURE;
+ STDMETHOD(put_Strikethrough)(THIS_ BOOL) PURE;
+ STDMETHOD(get_Weight)(THIS_ short*) PURE;
+ STDMETHOD(put_Weight)(THIS_ short) PURE;
+ STDMETHOD(get_Charset)(THIS_ short*) PURE;
+ STDMETHOD(put_Charset)(THIS_ short) PURE;
+ STDMETHOD(get_hFont)(THIS_ HFONT*) PURE;
+ STDMETHOD(Clone)(THIS_ IFont**) PURE;
+ STDMETHOD(IsEqual)(THIS_ IFont*) PURE;
+ STDMETHOD(SetRatio)(THIS_ long,long) PURE;
+ STDMETHOD(QueryTextMetrics)(THIS_ LPTEXTMETRICOLE) PURE;
+ STDMETHOD(AddRefHfont)(THIS_ HFONT) PURE;
+ STDMETHOD(ReleaseHfont)(THIS_ HFONT) PURE;
+ STDMETHOD(SetHdc)(THIS_ HDC) PURE;
+};
+EXTERN_C const IID IID_IFontDisp;
+#undef INTERFACE
+#define INTERFACE IFontDisp
+DECLARE_INTERFACE_(IFontDisp,IDispatch)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+ STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+ STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+ STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+};
+EXTERN_C const IID IID_IPicture;
+#undef INTERFACE
+#define INTERFACE IPicture
+DECLARE_INTERFACE_(IPicture,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(get_Handle)(THIS_ OLE_HANDLE*) PURE;
+ STDMETHOD(get_hPal)(THIS_ OLE_HANDLE*) PURE;
+ STDMETHOD(get_Type)(THIS_ short*) PURE;
+ STDMETHOD(get_Width)(THIS_ OLE_XSIZE_HIMETRIC*) PURE;
+ STDMETHOD(get_Height)(THIS_ OLE_YSIZE_HIMETRIC*) PURE;
+ STDMETHOD(Render)(THIS_ HDC,long,long,long,long,OLE_XPOS_HIMETRIC,OLE_YPOS_HIMETRIC,OLE_XSIZE_HIMETRIC,OLE_YSIZE_HIMETRIC,LPCRECT) PURE;
+ STDMETHOD(set_hPal)(THIS_ OLE_HANDLE) PURE;
+ STDMETHOD(get_CurDC)(THIS_ HDC*) PURE;
+ STDMETHOD(SelectPicture)(THIS_ HDC,HDC*,OLE_HANDLE*) PURE;
+ STDMETHOD(get_KeepOriginalFormat)(THIS_ BOOL*) PURE;
+ STDMETHOD(put_KeepOriginalFormat)(THIS_ BOOL) PURE;
+ STDMETHOD(PictureChanged)(THIS) PURE;
+ STDMETHOD(SaveAsFile)(THIS_ LPSTREAM,BOOL,LONG*) PURE;
+ STDMETHOD(get_Attributes)(THIS_ PDWORD) PURE;
+};
+EXTERN_C const IID IID_IPictureDisp;
+#undef INTERFACE
+#define INTERFACE IPictureDisp
+DECLARE_INTERFACE_(IPictureDisp,IDispatch)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
+ STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
+ STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
+ STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
+};
+#pragma pack(pop)
+
+STDAPI DllRegisterServer(void);
+STDAPI DllUnregisterServer(void);
+STDAPI OleCreateFontIndirect(LPFONTDESC,REFIID,PVOID*);
+STDAPI OleCreatePictureIndirect(LPPICTDESC,REFIID,BOOL,PVOID*);
+STDAPI OleCreatePropertyFrame(HWND,UINT,UINT,LPCOLESTR,ULONG,LPUNKNOWN*,ULONG,LPCLSID,LCID,DWORD,PVOID);
+STDAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS);
+STDAPI_(HCURSOR) OleIconToCursor(HINSTANCE,HICON);
+STDAPI OleLoadPicture(LPSTREAM,LONG,BOOL,REFIID,PVOID*);
+STDAPI OleTranslateColor(OLE_COLOR,HPALETTE,COLORREF*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/olectlid.h b/winsup/w32api/include/olectlid.h
new file mode 100644
index 000000000..2aefe9718
--- /dev/null
+++ b/winsup/w32api/include/olectlid.h
@@ -0,0 +1,109 @@
+#ifndef _OLECTLID_H
+#define _OLECTLID_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const GUID IID_IDispatch;
+extern const GUID IID_IPropertyNotifySink;
+extern const GUID IID_IClassFactory2;
+extern const GUID IID_IProvideClassInfo;
+extern const GUID IID_IProvideClassInfo2;
+extern const GUID IID_IConnectionPointContainer;
+extern const GUID IID_IEnumConnectionPoints;
+extern const GUID IID_IConnectionPoint;
+extern const GUID IID_IEnumConnections;
+extern const GUID IID_IOleControl;
+extern const GUID IID_IOleControlSite;
+extern const GUID IID_ISimpleFrameSite;
+extern const GUID IID_IPersistStreamInit;
+extern const GUID IID_IPersistMemory;
+extern const GUID IID_IPersistPropertyBag;
+extern const GUID IID_IPropertyBag;
+extern const GUID IID_IErrorLog;
+extern const GUID IID_IPropertyFrame;
+extern const GUID IID_ISpecifyPropertyPages;
+extern const GUID IID_IPerPropertyBrowsing;
+extern const GUID IID_IPropertyPageSite;
+extern const GUID IID_IPropertyPage;
+extern const GUID IID_IPropertyPage2;
+extern const GUID CLSID_CFontPropPage;
+extern const GUID CLSID_CColorPropPage;
+extern const GUID CLSID_CPicturePropPage;
+extern const GUID CLSID_PersistPropset;
+extern const GUID CLSID_ConvertVBX;
+extern const GUID CLSID_StdFont;
+extern const GUID CLSID_StdPicture;
+extern const GUID IID_IFont;
+extern const GUID IID_IFontDisp;
+extern const GUID IID_IPicture;
+extern const GUID IID_IPictureDisp;
+extern const GUID GUID_HIMETRIC;
+extern const GUID GUID_COLOR;
+extern const GUID GUID_XPOSPIXEL;
+extern const GUID GUID_YPOSPIXEL;
+extern const GUID GUID_XSIZEPIXEL;
+extern const GUID GUID_YSIZEPIXEL;
+extern const GUID GUID_XPOS;
+extern const GUID GUID_YPOS;
+extern const GUID GUID_XSIZE;
+extern const GUID GUID_YSIZE;
+extern const GUID GUID_TRISTATE;
+extern const GUID GUID_OPTIONVALUEEXCLUSIVE;
+extern const GUID GUID_CHECKVALUEEXCLUSIVE;
+extern const GUID GUID_FONTNAME;
+extern const GUID GUID_FONTSIZE;
+extern const GUID GUID_FONTBOLD;
+extern const GUID GUID_FONTITALIC;
+extern const GUID GUID_FONTUNDERSCORE;
+extern const GUID GUID_FONTSTRIKETHROUGH;
+extern const GUID GUID_HANDLE;
+extern const GUID IID_IEnumUnknown;
+extern const GUID IID_IEnumString;
+extern const GUID IID_IEnumMoniker;
+extern const GUID IID_IEnumFORMATETC;
+extern const GUID IID_IEnumOLEVERB;
+extern const GUID IID_IEnumSTATDATA;
+extern const GUID IID_IEnumGeneric;
+extern const GUID IID_IEnumHolder;
+extern const GUID IID_IEnumCallback;
+extern const GUID IID_IPersistStream;
+extern const GUID IID_IPersistStorage;
+extern const GUID IID_IPersistFile;
+extern const GUID IID_IPersist;
+extern const GUID IID_IViewObject;
+extern const GUID IID_IDataObject;
+extern const GUID IID_IAdviseSink;
+extern const GUID IID_IDataAdviseHolder;
+extern const GUID IID_IOleAdviseHolder;
+extern const GUID IID_IOleObject;
+extern const GUID IID_IOleInPlaceObject;
+extern const GUID IID_IOleWindow;
+extern const GUID IID_IOleInPlaceUIWindow;
+extern const GUID IID_IOleInPlaceFrame;
+extern const GUID IID_IOleInPlaceActiveObject;
+extern const GUID IID_IOleClientSite;
+extern const GUID IID_IOleInPlaceSite;
+extern const GUID IID_IParseDisplayName;
+extern const GUID IID_IOleContainer;
+extern const GUID IID_IOleItemContainer;
+extern const GUID IID_IOleLink;
+extern const GUID IID_IOleCache;
+extern const GUID IID_IOleManager;
+extern const GUID IID_IOlePresObj;
+extern const GUID IID_IDropSource;
+extern const GUID IID_IDropTarget;
+extern const GUID IID_IDebug;
+extern const GUID IID_IDebugStream;
+extern const GUID IID_IAdviseSink2;
+extern const GUID IID_IRunnableObject;
+extern const GUID IID_IViewObject2;
+extern const GUID IID_IOleCache2;
+extern const GUID IID_IOleCacheControl;
+extern const GUID CLSID_Picture_Metafile;
+extern const GUID CLSID_Picture_Dib;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/oledlg.h b/winsup/w32api/include/oledlg.h
new file mode 100644
index 000000000..24cfd4bc2
--- /dev/null
+++ b/winsup/w32api/include/oledlg.h
@@ -0,0 +1,931 @@
+#ifndef _OLEDLG_H
+#define _OLEDLG_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <windows.h>
+#include <shellapi.h>
+#include <commdlg.h>
+#include <ole2.h>
+#include <string.h>
+/* #include <tchar.h> */
+#include <dlgs.h>
+#include <prsht.h>
+#define PS_MAXLINKTYPES 8
+#define OLESTDDELIM TEXT("\\")
+#define SZOLEUI_MSG_HELP TEXT("OLEUI_MSG_HELP")
+#define SZOLEUI_MSG_ENDDIALOG TEXT("OLEUI_MSG_ENDDIALOG")
+#define SZOLEUI_MSG_BROWSE TEXT("OLEUI_MSG_BROWSE")
+#define SZOLEUI_MSG_CHANGEICON TEXT("OLEUI_MSG_CHANGEICON")
+#define SZOLEUI_MSG_CLOSEBUSYDIALOG TEXT("OLEUI_MSG_CLOSEBUSYDIALOG")
+#define SZOLEUI_MSG_CONVERT TEXT("OLEUI_MSG_CONVERT")
+#define SZOLEUI_MSG_CHANGESOURCE TEXT("OLEUI_MSG_CHANGESOURCE")
+#define SZOLEUI_MSG_ADDCONTROL TEXT("OLEUI_MSG_ADDCONTROL")
+#define SZOLEUI_MSG_BROWSE_OFN TEXT("OLEUI_MSG_BROWSE_OFN")
+#define PROP_HWND_CHGICONDLG TEXT("HWND_CIDLG")
+#define IDC_OLEUIHELP 99
+#define IDC_IO_CREATENEW 2100
+#define IDC_IO_CREATEFROMFILE 2101
+#define IDC_IO_LINKFILE 2102
+#define IDC_IO_OBJECTTYPELIST 2103
+#define IDC_IO_DISPLAYASICON 2104
+#define IDC_IO_CHANGEICON 2105
+#define IDC_IO_FILE 2106
+#define IDC_IO_FILEDISPLAY 2107
+#define IDC_IO_RESULTIMAGE 2108
+#define IDC_IO_RESULTTEXT 2109
+#define IDC_IO_ICONDISPLAY 2110
+#define IDC_IO_OBJECTTYPETEXT 2111
+#define IDC_IO_FILETEXT 2112
+#define IDC_IO_FILETYPE 2113
+#define IDC_IO_INSERTCONTROL 2114
+#define IDC_IO_ADDCONTROL 2115
+#define IDC_IO_CONTROLTYPELIST 2116
+#define IDC_PS_PASTE 500
+#define IDC_PS_PASTELINK 501
+#define IDC_PS_SOURCETEXT 502
+#define IDC_PS_PASTELIST 503
+#define IDC_PS_PASTELINKLIST 504
+#define IDC_PS_DISPLAYLIST 505
+#define IDC_PS_DISPLAYASICON 506
+#define IDC_PS_ICONDISPLAY 507
+#define IDC_PS_CHANGEICON 508
+#define IDC_PS_RESULTIMAGE 509
+#define IDC_PS_RESULTTEXT 510
+#define IDC_CI_GROUP 120
+#define IDC_CI_CURRENT 121
+#define IDC_CI_CURRENTICON 122
+#define IDC_CI_DEFAULT 123
+#define IDC_CI_DEFAULTICON 124
+#define IDC_CI_FROMFILE 125
+#define IDC_CI_FROMFILEEDIT 126
+#define IDC_CI_ICONLIST 127
+#define IDC_CI_LABEL 128
+#define IDC_CI_LABELEDIT 129
+#define IDC_CI_BROWSE 130
+#define IDC_CI_ICONDISPLAY 131
+#define IDC_CV_OBJECTTYPE 150
+#define IDC_CV_DISPLAYASICON 152
+#define IDC_CV_CHANGEICON 153
+#define IDC_CV_ACTIVATELIST 154
+#define IDC_CV_CONVERTTO 155
+#define IDC_CV_ACTIVATEAS 156
+#define IDC_CV_RESULTTEXT 157
+#define IDC_CV_CONVERTLIST 158
+#define IDC_CV_ICONDISPLAY 165
+#define IDC_EL_CHANGESOURCE 201
+#define IDC_EL_AUTOMATIC 202
+#define IDC_EL_CANCELLINK 209
+#define IDC_EL_UPDATENOW 210
+#define IDC_EL_OPENSOURCE 211
+#define IDC_EL_MANUAL 212
+#define IDC_EL_LINKSOURCE 216
+#define IDC_EL_LINKTYPE 217
+#define IDC_EL_LINKSLISTBOX 206
+#define IDC_EL_COL1 220
+#define IDC_EL_COL2 221
+#define IDC_EL_COL3 222
+#define IDC_BZ_RETRY 600
+#define IDC_BZ_ICON 601
+#define IDC_BZ_MESSAGE1 602
+#define IDC_BZ_SWITCHTO 604
+#define IDC_UL_METER 1029
+#define IDC_UL_STOP 1030
+#define IDC_UL_PERCENT 1031
+#define IDC_UL_PROGRESS 1032
+#define IDC_PU_LINKS 900
+#define IDC_PU_TEXT 901
+#define IDC_PU_CONVERT 902
+#define IDC_PU_ICON 908
+#define IDC_GP_OBJECTNAME 1009
+#define IDC_GP_OBJECTTYPE 1010
+#define IDC_GP_OBJECTSIZE 1011
+#define IDC_GP_CONVERT 1013
+#define IDC_GP_OBJECTICON 1014
+#define IDC_GP_OBJECTLOCATION 1022
+#define IDC_VP_PERCENT 1000
+#define IDC_VP_CHANGEICON 1001
+#define IDC_VP_EDITABLE 1002
+#define IDC_VP_ASICON 1003
+#define IDC_VP_RELATIVE 1005
+#define IDC_VP_SPIN 1006
+#define IDC_VP_SCALETXT 1034
+#define IDC_VP_ICONDISPLAY 1021
+#define IDC_VP_RESULTIMAGE 1033
+#define IDC_LP_OPENSOURCE 1006
+#define IDC_LP_UPDATENOW 1007
+#define IDC_LP_BREAKLINK 1008
+#define IDC_LP_LINKSOURCE 1012
+#define IDC_LP_CHANGESOURCE 1015
+#define IDC_LP_AUTOMATIC 1016
+#define IDC_LP_MANUAL 1017
+#define IDC_LP_DATE 1018
+#define IDC_LP_TIME 1019
+#define IDD_INSERTOBJECT 1000
+#define IDD_CHANGEICON 1001
+#define IDD_CONVERT 1002
+#define IDD_PASTESPECIAL 1003
+#define IDD_EDITLINKS 1004
+#define IDD_BUSY 1006
+#define IDD_UPDATELINKS 1007
+#define IDD_CHANGESOURCE 1009
+#define IDD_INSERTFILEBROWSE 1010
+#define IDD_CHANGEICONBROWSE 1011
+#define IDD_CONVERTONLY 1012
+#define IDD_CHANGESOURCE4 1013
+#define IDD_GNRLPROPS 1100
+#define IDD_VIEWPROPS 1101
+#define IDD_LINKPROPS 1102
+#define IDD_CANNOTUPDATELINK 1008
+#define IDD_LINKSOURCEUNAVAILABLE 1020
+#define IDD_SERVERNOTFOUND 1023
+#define IDD_OUTOFMEMORY 1024
+#define IDD_SERVERNOTREGW 1021
+#define IDD_LINKTYPECHANGEDW 1022
+#define IDD_SERVERNOTREGA 1025
+#define IDD_LINKTYPECHANGEDA 1026
+#define ID_BROWSE_CHANGEICON 1
+#define ID_BROWSE_INSERTFILE 2
+#define ID_BROWSE_ADDCONTROL 3
+#define ID_BROWSE_CHANGESOURCE 4
+#define OLEUI_FALSE 0
+#define OLEUI_SUCCESS 1
+#define OLEUI_OK 1
+#define OLEUI_CANCEL 2
+#define OLEUI_ERR_STANDARDMIN 100
+#define OLEUI_ERR_STRUCTURENULL 101
+#define OLEUI_ERR_STRUCTUREINVALID 102
+#define OLEUI_ERR_CBSTRUCTINCORRECT 103
+#define OLEUI_ERR_HWNDOWNERINVALID 104
+#define OLEUI_ERR_LPSZCAPTIONINVALID 105
+#define OLEUI_ERR_LPFNHOOKINVALID 106
+#define OLEUI_ERR_HINSTANCEINVALID 107
+#define OLEUI_ERR_LPSZTEMPLATEINVALID 108
+#define OLEUI_ERR_HRESOURCEINVALID 109
+#define OLEUI_ERR_FINDTEMPLATEFAILURE 110
+#define OLEUI_ERR_LOADTEMPLATEFAILURE 111
+#define OLEUI_ERR_DIALOGFAILURE 112
+#define OLEUI_ERR_LOCALMEMALLOC 113
+#define OLEUI_ERR_GLOBALMEMALLOC 114
+#define OLEUI_ERR_LOADSTRING 115
+#define OLEUI_ERR_OLEMEMALLOC 116
+#define OLEUI_ERR_STANDARDMAX 116
+#define OPF_OBJECTISLINK 1
+#define OPF_NOFILLDEFAULT 2
+#define OPF_SHOWHELP 4
+#define OPF_DISABLECONVERT 8
+#define OLEUI_OPERR_SUBPROPNULL OLEUI_ERR_STANDARDMAX
+#define OLEUI_OPERR_SUBPROPINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_OPERR_PROPSHEETNULL (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_OPERR_PROPSHEETINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_OPERR_SUPPROP (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_OPERR_PROPSINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_OPERR_PAGESINCORRECT (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_OPERR_INVALIDPAGES (OLEUI_ERR_STANDARDMAX+7)
+#define OLEUI_OPERR_NOTSUPPORTED (OLEUI_ERR_STANDARDMAX+8)
+#define OLEUI_OPERR_DLGPROCNOTNULL (OLEUI_ERR_STANDARDMAX+9)
+#define OLEUI_OPERR_LPARAMNOTZERO (OLEUI_ERR_STANDARDMAX+10)
+#define OLEUI_GPERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+11)
+#define OLEUI_GPERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+12)
+#define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+13)
+#define OLEUI_GPERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+14)
+#define OLEUI_VPERR_METAPICTINVALID (OLEUI_ERR_STANDARDMAX+15)
+#define OLEUI_VPERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+16)
+#define OLEUI_LPERR_LINKCNTRNULL (OLEUI_ERR_STANDARDMAX+17)
+#define OLEUI_LPERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+18)
+#define OLEUI_OPERR_PROPERTYSHEET (OLEUI_ERR_STANDARDMAX+19)
+#define OLEUI_OPERR_OBJINFOINVALID (OLEUI_ERR_STANDARDMAX+20)
+#define OLEUI_OPERR_LINKINFOINVALID (OLEUI_ERR_STANDARDMAX+21)
+#define OLEUI_QUERY_GETCLASSID 65280
+#define OLEUI_QUERY_LINKBROKEN 65281
+#define IOF_SHOWHELP 1
+#define IOF_SELECTCREATENEW 2
+#define IOF_SELECTCREATEFROMFILE 4
+#define IOF_CHECKLINK 8
+#define IOF_CHECKDISPLAYASICON 16
+#define IOF_CREATENEWOBJECT 32
+#define IOF_CREATEFILEOBJECT 64
+#define IOF_CREATELINKOBJECT 128
+#define IOF_DISABLELINK 256
+#define IOF_VERIFYSERVERSEXIST 512
+#define IOF_DISABLEDISPLAYASICON 1024
+#define IOF_HIDECHANGEICON 2048
+#define IOF_SHOWINSERTCONTROL 4096
+#define IOF_SELECTCREATECONTROL 8192
+#define OLEUI_IOERR_LPSZFILEINVALID OLEUI_ERR_STANDARDMAX
+#define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7)
+#define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8)
+#define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9)
+#define PSF_SHOWHELP 1
+#define PSF_SELECTPASTE 2
+#define PSF_SELECTPASTELINK 4
+#define PSF_CHECKDISPLAYASICON 8
+#define PSF_DISABLEDISPLAYASICON 16
+#define PSF_HIDECHANGEICON 32
+#define PSF_STAYONCLIPBOARDCHANGE 64
+#define PSF_NOREFRESHDATAOBJECT 128
+#define OLEUI_IOERR_SRCDATAOBJECTINVALID OLEUI_ERR_STANDARDMAX
+#define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_PSERR_GETCLIPBOARDFAILED (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_ELERR_LINKCNTRNULL OLEUI_ERR_STANDARDMAX
+#define OLEUI_ELERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define ELF_SHOWHELP 1
+#define ELF_DISABLEUPDATENOW 2
+#define ELF_DISABLEOPENSOURCE 4
+#define ELF_DISABLECHANGESOURCE 8
+#define ELF_DISABLECANCELLINK 16
+#define CIF_SHOWHELP 1
+#define CIF_SELECTCURRENT 2
+#define CIF_SELECTDEFAULT 4
+#define CIF_SELECTFROMFILE 8
+#define CIF_USEICONEXE 16
+#define OLEUI_CIERR_MUSTHAVECLSID OLEUI_ERR_STANDARDMAX
+#define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define CF_SHOWHELPBUTTON 1
+#define CF_SETCONVERTDEFAULT 2
+#define CF_SETACTIVATEDEFAULT 4
+#define CF_SELECTCONVERTTO 8
+#define CF_SELECTACTIVATEAS 16
+#define CF_DISABLEDISPLAYASICON 32
+#define CF_DISABLEACTIVATEAS 64
+#define CF_HIDECHANGEICON 128
+#define CF_CONVERTONLY 256
+#define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define BZ_DISABLECANCELBUTTON 1
+#define BZ_DISABLESWITCHTOBUTTON 2
+#define BZ_DISABLERETRYBUTTON 4
+#define BZ_NOTRESPONDINGDIALOG 8
+#define OLEUI_BZERR_HTASKINVALID OLEUI_ERR_STANDARDMAX
+#define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3)
+#define CSF_SHOWHELP 1
+#define CSF_VALIDSOURCE 2
+#define CSF_ONLYGETSOURCE 4
+#define CSF_EXPLORER 8
+#define OLEUI_CSERR_LINKCNTRNULL OLEUI_ERR_STANDARDMAX
+#define OLEUI_CSERR_LINKCNTRINVALID (OLEUI_ERR_STANDARDMAX+1)
+#define OLEUI_CSERR_FROMNOTNULL (OLEUI_ERR_STANDARDMAX+2)
+#define OLEUI_CSERR_TONOTNULL (OLEUI_ERR_STANDARDMAX+3)
+#define OLEUI_CSERR_SOURCENULL (OLEUI_ERR_STANDARDMAX+4)
+#define OLEUI_CSERR_SOURCEINVALID (OLEUI_ERR_STANDARDMAX+5)
+#define OLEUI_CSERR_SOURCEPARSERROR (OLEUI_ERR_STANDARDMAX+6)
+#define OLEUI_CSERR_SOURCEPARSEERROR (OLEUI_ERR_STANDARDMAX+7)
+#define VPF_SELECTRELATIVE 1
+#define VPF_DISABLERELATIVE 2
+#define VPF_DISABLESCALE 4
+
+#ifndef RC_INVOKED
+#pragma pack(push, 8)
+typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
+typedef struct tagOLEUIINSERTOBJECTW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCWSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCWSTR lpszTemplate;
+ HRSRC hResource;
+ CLSID clsid;
+ LPWSTR lpszFile;
+ UINT cchFile;
+ UINT cClsidExclude;
+ LPCLSID lpClsidExclude;
+ IID iid;
+ DWORD oleRender;
+ LPFORMATETC lpFormatEtc;
+ LPOLECLIENTSITE lpIOleClientSite;
+ LPSTORAGE lpIStorage;
+ PVOID *ppvObj;
+ SCODE sc;
+ HGLOBAL hMetaPict;
+} OLEUIINSERTOBJECTW,*POLEUIINSERTOBJECTW,*LPOLEUIINSERTOBJECTW;
+typedef struct tagOLEUIINSERTOBJECTA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCSTR lpszTemplate;
+ HRSRC hResource;
+ CLSID clsid;
+ LPSTR lpszFile;
+ UINT cchFile;
+ UINT cClsidExclude;
+ LPCLSID lpClsidExclude;
+ IID iid;
+ DWORD oleRender;
+ LPFORMATETC lpFormatEtc;
+ LPOLECLIENTSITE lpIOleClientSite;
+ LPSTORAGE lpIStorage;
+ PVOID *ppvObj;
+ SCODE sc;
+ HGLOBAL hMetaPict;
+} OLEUIINSERTOBJECTA,*POLEUIINSERTOBJECTA,*LPOLEUIINSERTOBJECTA;
+STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
+STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
+typedef enum tagOLEUIPASTEFLAG {
+ OLEUIPASTE_PASTEONLY,
+ OLEUIPASTE_LINKTYPE1,
+ OLEUIPASTE_LINKTYPE2,
+ OLEUIPASTE_LINKTYPE3=4,
+ OLEUIPASTE_LINKTYPE4=8,
+ OLEUIPASTE_LINKTYPE5=16,
+ OLEUIPASTE_LINKTYPE6=32,
+ OLEUIPASTE_LINKTYPE7=64,
+ OLEUIPASTE_LINKTYPE8=128,
+ OLEUIPASTE_PASTE=512,
+ OLEUIPASTE_LINKANYTYPE=1024,
+ OLEUIPASTE_ENABLEICON=2048,
+} OLEUIPASTEFLAG;
+typedef struct tagOLEUIPASTEENTRYW {
+ FORMATETC fmtetc;
+ LPCWSTR lpstrFormatName;
+ LPCWSTR lpstrResultText;
+ DWORD dwFlags;
+ DWORD dwScratchSpace;
+} OLEUIPASTEENTRYW,*POLEUIPASTEENTRYW,*LPOLEUIPASTEENTRYW;
+typedef struct tagOLEUIPASTEENTRYA {
+ FORMATETC fmtetc;
+ LPCSTR lpstrFormatName;
+ LPCSTR lpstrResultText;
+ DWORD dwFlags;
+ DWORD dwScratchSpace;
+} OLEUIPASTEENTRYA,*POLEUIPASTEENTRYA,*LPOLEUIPASTEENTRYA;
+typedef struct tagOLEUIPASTESPECIALW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCWSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCWSTR lpszTemplate;
+ HRSRC hResource;
+ LPDATAOBJECT lpSrcDataObj;
+ LPOLEUIPASTEENTRYW arrPasteEntries;
+ int cPasteEntries;
+ UINT *arrLinkTypes;
+ int cLinkTypes;
+ UINT cClsidExclude;
+ LPCLSID lpClsidExclude;
+ int nSelectedIndex;
+ BOOL fLink;
+ HGLOBAL hMetaPict;
+ SIZEL sizel;
+} OLEUIPASTESPECIALW,*POLEUIPASTESPECIALW,*LPOLEUIPASTESPECIALW;
+typedef struct tagOLEUIPASTESPECIALA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCSTR lpszTemplate;
+ HRSRC hResource;
+ LPDATAOBJECT lpSrcDataObj;
+ LPOLEUIPASTEENTRYA arrPasteEntries;
+ int cPasteEntries;
+ UINT *arrLinkTypes;
+ int cLinkTypes;
+ UINT cClsidExclude;
+ LPCLSID lpClsidExclude;
+ int nSelectedIndex;
+ BOOL fLink;
+ HGLOBAL hMetaPict;
+ SIZEL sizel;
+} OLEUIPASTESPECIALA,*POLEUIPASTESPECIALA,*LPOLEUIPASTESPECIALA;
+#undef INTERFACE
+#define INTERFACE IOleUILinkContainerW
+DECLARE_INTERFACE_(IOleUILinkContainerW, IUnknown)
+{
+ STDMETHOD(QueryInterface) (THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD,PDWORD) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD, LPWSTR,ULONG,PULONG,BOOL) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD,LPWSTR*,PULONG,LPWSTR*,LPWSTR*,BOOL*,BOOL*) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD,BOOL,BOOL) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD) PURE;
+};
+typedef IOleUILinkContainerW *LPOLEUILINKCONTAINERW;
+#undef INTERFACE
+#define INTERFACE IOleUILinkContainerA
+DECLARE_INTERFACE_(IOleUILinkContainerA, IUnknown)
+{
+ STDMETHOD(QueryInterface) (THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+ STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD) PURE;
+ STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD,PDWORD) PURE;
+ STDMETHOD(SetLinkSource) (THIS_ DWORD, LPSTR,ULONG,PULONG,BOOL) PURE;
+ STDMETHOD(GetLinkSource) (THIS_ DWORD,LPSTR*,PULONG,LPSTR*,LPSTR*,BOOL*,BOOL*) PURE;
+ STDMETHOD(OpenLinkSource) (THIS_ DWORD) PURE;
+ STDMETHOD(UpdateLink) (THIS_ DWORD,BOOL,BOOL) PURE;
+ STDMETHOD(CancelLink) (THIS_ DWORD) PURE;
+};
+typedef IOleUILinkContainerA *LPOLEUILINKCONTAINERA;
+typedef struct tagOLEUIEDITLINKSW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCWSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCWSTR lpszTemplate;
+ HRSRC hResource;
+ LPOLEUILINKCONTAINERW lpOleUILinkContainer;
+} OLEUIEDITLINKSW,*POLEUIEDITLINKSW,*LPOLEUIEDITLINKSW;
+typedef struct tagOLEUIEDITLINKSA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCSTR lpszTemplate;
+ HRSRC hResource;
+ LPOLEUILINKCONTAINERA lpOleUILinkContainer;
+} OLEUIEDITLINKSA,*POLEUIEDITLINKSA,*LPOLEUIEDITLINKSA;
+typedef struct tagOLEUICHANGEICONW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCWSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCWSTR lpszTemplate;
+ HRSRC hResource;
+ HGLOBAL hMetaPict;
+ CLSID clsid;
+ WCHAR szIconExe[MAX_PATH];
+ int cchIconExe;
+} OLEUICHANGEICONW,*POLEUICHANGEICONW,*LPOLEUICHANGEICONW;
+typedef struct tagOLEUICHANGEICONA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCSTR lpszTemplate;
+ HRSRC hResource;
+ HGLOBAL hMetaPict;
+ CLSID clsid;
+ CHAR szIconExe[MAX_PATH];
+ int cchIconExe;
+} OLEUICHANGEICONA,*POLEUICHANGEICONA,*LPOLEUICHANGEICONA;
+typedef struct tagOLEUICONVERTW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCWSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCWSTR lpszTemplate;
+ HRSRC hResource;
+ CLSID clsid;
+ CLSID clsidConvertDefault;
+ CLSID clsidActivateDefault;
+ CLSID clsidNew;
+ DWORD dvAspect;
+ WORD wFormat;
+ BOOL fIsLinkedObject;
+ HGLOBAL hMetaPict;
+ LPWSTR lpszUserType;
+ BOOL fObjectsIconChanged;
+ LPWSTR lpszDefLabel;
+ UINT cClsidExclude;
+ LPCLSID lpClsidExclude;
+} OLEUICONVERTW,*POLEUICONVERTW,*LPOLEUICONVERTW;
+typedef struct tagOLEUICONVERTA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCSTR lpszTemplate;
+ HRSRC hResource;
+ CLSID clsid;
+ CLSID clsidConvertDefault;
+ CLSID clsidActivateDefault;
+ CLSID clsidNew;
+ DWORD dvAspect;
+ WORD wFormat;
+ BOOL fIsLinkedObject;
+ HGLOBAL hMetaPict;
+ LPSTR lpszUserType;
+ BOOL fObjectsIconChanged;
+ LPSTR lpszDefLabel;
+ UINT cClsidExclude;
+ LPCLSID lpClsidExclude;
+} OLEUICONVERTA,*POLEUICONVERTA,*LPOLEUICONVERTA;
+typedef struct tagOLEUIBUSYW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCWSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCWSTR lpszTemplate;
+ HRSRC hResource;
+ HTASK hTask;
+ HWND *lphWndDialog;
+} OLEUIBUSYW,*POLEUIBUSYW,*LPOLEUIBUSYW;
+typedef struct tagOLEUIBUSYA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCSTR lpszTemplate;
+ HRSRC hResource;
+ HTASK hTask;
+ HWND *lphWndDialog;
+} OLEUIBUSYA,*POLEUIBUSYA,*LPOLEUIBUSYA;
+typedef struct tagOLEUICHANGESOURCEW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCWSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCWSTR lpszTemplate;
+ HRSRC hResource;
+ OPENFILENAMEW* lpOFN;
+ DWORD dwReserved1[4];
+ LPOLEUILINKCONTAINERW lpOleUILinkContainer;
+ DWORD dwLink;
+ LPWSTR lpszDisplayName;
+ ULONG nFileLength;
+ LPWSTR lpszFrom;
+ LPWSTR lpszTo;
+} OLEUICHANGESOURCEW,*POLEUICHANGESOURCEW,*LPOLEUICHANGESOURCEW;
+typedef struct tagOLEUICHANGESOURCEA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ HWND hWndOwner;
+ LPCSTR lpszCaption;
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ HINSTANCE hInstance;
+ LPCSTR lpszTemplate;
+ HRSRC hResource;
+ OPENFILENAMEA *lpOFN;
+ DWORD dwReserved1[4];
+ LPOLEUILINKCONTAINERA lpOleUILinkContainer;
+ DWORD dwLink;
+ LPSTR lpszDisplayName;
+ ULONG nFileLength;
+ LPSTR lpszFrom;
+ LPSTR lpszTo;
+} OLEUICHANGESOURCEA,*POLEUICHANGESOURCEA,*LPOLEUICHANGESOURCEA;
+#undef INTERFACE
+#define INTERFACE IOleUIObjInfoW
+DECLARE_INTERFACE_(IOleUIObjInfoW, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ DWORD,PDWORD,LPWSTR*,LPWSTR*,LPWSTR*,LPWSTR*) PURE;
+ STDMETHOD(GetConvertInfo)(THIS_ DWORD,CLSID*,PWORD,CLSID*,LPCLSID*,UINT*) PURE;
+ STDMETHOD(ConvertObject)(THIS_ DWORD,REFCLSID) PURE;
+ STDMETHOD(GetViewInfo)(THIS_ DWORD,HGLOBAL*,PDWORD,int*) PURE;
+ STDMETHOD(SetViewInfo)(THIS_ DWORD,HGLOBAL,DWORD,int,BOOL) PURE;
+};
+typedef IOleUIObjInfoW *LPOLEUIOBJINFOW;
+#undef INTERFACE
+#define INTERFACE IOleUIObjInfoA
+DECLARE_INTERFACE_(IOleUIObjInfoA, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetObjectInfo)(THIS_ DWORD,PDWORD,LPSTR*,LPSTR*,LPSTR*,LPSTR*) PURE;
+ STDMETHOD(GetConvertInfo)(THIS_ DWORD,CLSID*,PWORD,CLSID*,LPCLSID*,UINT*) PURE;
+ STDMETHOD(ConvertObject)(THIS_ DWORD,REFCLSID) PURE;
+ STDMETHOD(GetViewInfo)(THIS_ DWORD,HGLOBAL*,PDWORD,int*) PURE;
+ STDMETHOD(SetViewInfo)(THIS_ DWORD,HGLOBAL,DWORD,int,BOOL) PURE;
+};
+typedef IOleUIObjInfoA *LPOLEUIOBJINFOA;
+#undef INTERFACE
+#define INTERFACE IOleUILinkInfoW
+DECLARE_INTERFACE_(IOleUILinkInfoW, IOleUILinkContainerW)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD) PURE;
+ STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD,DWORD*) PURE;
+ STDMETHOD(SetLinkSource)(THIS_ DWORD,LPWSTR,ULONG,PULONG,BOOL) PURE;
+ STDMETHOD(GetLinkSource)(THIS_ DWORD,LPWSTR*,PULONG,LPWSTR*,LPWSTR*,BOOL*,BOOL*) PURE;
+ STDMETHOD(OpenLinkSource)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateLink)(THIS_ DWORD,BOOL,BOOL) PURE;
+ STDMETHOD(CancelLink)(THIS_ DWORD) PURE;
+ STDMETHOD(GetLastUpdate)(THIS_ DWORD,FILETIME*) PURE;
+};
+typedef IOleUILinkInfoW *LPOLEUILINKINFOW;
+#undef INTERFACE
+#define INTERFACE IOleUILinkInfoA
+DECLARE_INTERFACE_(IOleUILinkInfoA, IOleUILinkContainerA)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(DWORD,GetNextLink)(THIS_ DWORD) PURE;
+ STDMETHOD(SetLinkUpdateOptions)(THIS_ DWORD,DWORD) PURE;
+ STDMETHOD(GetLinkUpdateOptions)(THIS_ DWORD,DWORD*) PURE;
+ STDMETHOD(SetLinkSource)(THIS_ DWORD,LPSTR,ULONG,PULONG,BOOL) PURE;
+ STDMETHOD(GetLinkSource)(THIS_ DWORD,LPSTR*,PULONG,LPSTR*,LPSTR*,BOOL*,BOOL*) PURE;
+ STDMETHOD(OpenLinkSource)(THIS_ DWORD) PURE;
+ STDMETHOD(UpdateLink)(THIS_ DWORD,BOOL,BOOL) PURE;
+ STDMETHOD(CancelLink)(THIS_ DWORD) PURE;
+ STDMETHOD(GetLastUpdate)(THIS_ DWORD,FILETIME*) PURE;
+};
+typedef IOleUILinkInfoA* LPOLEUILINKINFOA;
+struct tagOLEUIOBJECTPROPSW;
+struct tagOLEUIOBJECTPROPSA;
+typedef struct tagOLEUIGNRLPROPSW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ DWORD dwReserved2[3];
+ struct tagOLEUIOBJECTPROPSW* lpOP;
+} OLEUIGNRLPROPSW,*POLEUIGNRLPROPSW,*LPOLEUIGNRLPROPSW;
+typedef struct tagOLEUIGNRLPROPSA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ DWORD dwReserved2[3];
+ struct tagOLEUIOBJECTPROPSA* lpOP;
+} OLEUIGNRLPROPSA,*POLEUIGNRLPROPSA,*LPOLEUIGNRLPROPSA;
+typedef struct tagOLEUIVIEWPROPSW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ DWORD dwReserved2[3];
+ struct tagOLEUIOBJECTPROPSW* lpOP;
+ int nScaleMin;
+ int nScaleMax;
+} OLEUIVIEWPROPSW,*POLEUIVIEWPROPSW,*LPOLEUIVIEWPROPSW;
+typedef struct tagOLEUIVIEWPROPSA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ DWORD dwReserved2[3];
+ struct tagOLEUIOBJECTPROPSA *lpOP;
+ int nScaleMin;
+ int nScaleMax;
+} OLEUIVIEWPROPSA,*POLEUIVIEWPROPSA,*LPOLEUIVIEWPROPSA;
+typedef struct tagOLEUILINKPROPSW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ DWORD dwReserved2[3];
+ struct tagOLEUIOBJECTPROPSW *lpOP;
+} OLEUILINKPROPSW, *POLEUILINKPROPSW,* LPOLEUILINKPROPSW;
+typedef struct tagOLEUILINKPROPSA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ DWORD dwReserved1[2];
+ LPFNOLEUIHOOK lpfnHook;
+ LPARAM lCustData;
+ DWORD dwReserved2[3];
+ struct tagOLEUIOBJECTPROPSA* lpOP;
+} OLEUILINKPROPSA,*POLEUILINKPROPSA,*LPOLEUILINKPROPSA;
+typedef struct tagOLEUIOBJECTPROPSW {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ LPPROPSHEETHEADERW lpPS;
+ DWORD dwObject;
+ LPOLEUIOBJINFOW lpObjInfo;
+ DWORD dwLink;
+ LPOLEUILINKINFOW lpLinkInfo;
+ LPOLEUIGNRLPROPSW lpGP;
+ LPOLEUIVIEWPROPSW lpVP;
+ LPOLEUILINKPROPSW lpLP;
+} OLEUIOBJECTPROPSW,*POLEUIOBJECTPROPSW,*LPOLEUIOBJECTPROPSW;
+typedef struct tagOLEUIOBJECTPROPSA {
+ DWORD cbStruct;
+ DWORD dwFlags;
+ LPPROPSHEETHEADERA lpPS;
+ DWORD dwObject;
+ LPOLEUIOBJINFOA lpObjInfo;
+ DWORD dwLink;
+ LPOLEUILINKINFOA lpLinkInfo;
+ LPOLEUIGNRLPROPSA lpGP;
+ LPOLEUIVIEWPROPSA lpVP;
+ LPOLEUILINKPROPSA lpLP;
+} OLEUIOBJECTPROPSA,*POLEUIOBJECTPROPSA,*LPOLEUIOBJECTPROPSA;
+
+STDAPI_(BOOL) OleUIAddVerbMenuW(LPOLEOBJECT,LPCWSTR,HMENU,UINT,UINT,UINT,BOOL,UINT,HMENU*);
+STDAPI_(BOOL) OleUIAddVerbMenuA(LPOLEOBJECT,LPCSTR,HMENU,UINT,UINT,UINT,BOOL,UINT,HMENU*);
+STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW);
+STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA);
+STDAPI_(BOOL) OleUICanConvertOrActivateAs(REFCLSID,BOOL,WORD);
+STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW);
+STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA);
+STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
+STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
+STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW);
+STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA);
+STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW);
+STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA);
+STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
+STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
+STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW);
+STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA);
+int OleUIPromptUserW(int,HWND,...);
+int OleUIPromptUserA(int,HWND,...);
+STDAPI_(BOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW,HWND,LPWSTR,int);
+STDAPI_(BOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA,HWND,LPSTR,int);
+
+#ifdef UNICODE
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGW
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDW
+#define OleUIUpdateLinks OleUIUpdateLinksW
+#define OleUIAddVerbMenu OleUIAddVerbMenuW
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSW
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSW
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSW
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSW
+#define OleUIObjectProperties OleUIObjectPropertiesW
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTW
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTW
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTW
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTW
+#define OleUIInsertObject OleUIInsertObjectW
+#define OleUIPromptUser OleUIPromptUserW
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYW
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYW
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYW
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYW
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALW
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALW
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALW
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALW
+#define OleUIPasteSpecial OleUIPasteSpecialW
+#define IOleUILinkContainer IOleUILinkContainerW
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERW
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSW
+#define OLEUIEDITLINKS OLEUIEDITLINKSW
+#define POLEUIEDITLINKS POLEUIEDITLINKSW
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSW
+#define OleUIEditLinks OleUIEditLinksW
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONW
+#define OLEUICHANGEICON OLEUICHANGEICONW
+#define POLEUICHANGEICON POLEUICHANGEICONW
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONW
+#define OleUIChangeIcon OleUIChangeIconW
+#define tagOLEUICONVERT tagOLEUICONVERTW
+#define OLEUICONVERT OLEUICONVERTW
+#define POLEUICONVERT POLEUICONVERTW
+#define LPOLEUICONVERT LPOLEUICONVERTW
+#define OleUIConvert OleUIConvertW
+#define tagOLEUIBUSY tagOLEUIBUSYW
+#define OLEUIBUSY OLEUIBUSYW
+#define POLEUIBUSY POLEUIBUSYW
+#define LPOLEUIBUSY LPOLEUIBUSYW
+#define OleUIBusy OleUIBusyW
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEW
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEW
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEW
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEW
+#define OleUIChangeSource OleUIChangeSourceW
+#define IOleUIObjInfo IOleUIObjInfoW
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOW
+#define IOleUILinkInfo IOleUILinkInfoW
+#define IOleUILinkInfoVtbl IOleUILinkInfoWVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOW
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSW
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSW
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSW
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSW
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSW
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSW
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSW
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSW
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSW
+#define OLEUILINKPROPS OLEUILINKPROPSW
+#define POLEUILINKPROPS POLEUILINKPROPSW
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSW
+#else
+#define IDD_SERVERNOTREG IDD_SERVERNOTREGA
+#define IDD_LINKTYPECHANGED IDD_LINKTYPECHANGEDA
+#define OleUIUpdateLinks OleUIUpdateLinksA
+#define OleUIAddVerbMenu OleUIAddVerbMenuA
+#define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSA
+#define OLEUIOBJECTPROPS OLEUIOBJECTPROPSA
+#define POLEUIOBJECTPROPS POLEUIOBJECTPROPSA
+#define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSA
+#define OleUIObjectProperties OleUIObjectPropertiesA
+#define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTA
+#define OLEUIINSERTOBJECT OLEUIINSERTOBJECTA
+#define POLEUIINSERTOBJECT POLEUIINSERTOBJECTA
+#define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTA
+#define OleUIInsertObject OleUIInsertObjectA
+#define OleUIPromptUser OleUIPromptUserA
+#define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYA
+#define OLEUIPASTEENTRY OLEUIPASTEENTRYA
+#define POLEUIPASTEENTRY POLEUIPASTEENTRYA
+#define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYA
+#define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALA
+#define OLEUIPASTESPECIAL OLEUIPASTESPECIALA
+#define POLEUIPASTESPECIAL POLEUIPASTESPECIALA
+#define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALA
+#define OleUIPasteSpecial OleUIPasteSpecialA
+#define IOleUILinkContainer IOleUILinkContainerA
+#define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERA
+#define tagOLEUIEDITLINKS tagOLEUIEDITLINKSA
+#define OLEUIEDITLINKS OLEUIEDITLINKSA
+#define POLEUIEDITLINKS POLEUIEDITLINKSA
+#define LPOLEUIEDITLINKS LPOLEUIEDITLINKSA
+#define OleUIEditLinks OleUIEditLinksA
+#define tagOLEUICHANGEICON tagOLEUICHANGEICONA
+#define OLEUICHANGEICON OLEUICHANGEICONA
+#define POLEUICHANGEICON POLEUICHANGEICONA
+#define LPOLEUICHANGEICON LPOLEUICHANGEICONA
+#define OleUIChangeIcon OleUIChangeIconA
+#define tagOLEUICONVERT tagOLEUICONVERTA
+#define OLEUICONVERT OLEUICONVERTA
+#define POLEUICONVERT POLEUICONVERTA
+#define LPOLEUICONVERT LPOLEUICONVERTA
+#define OleUIConvert OleUIConvertA
+#define tagOLEUIBUSY tagOLEUIBUSYA
+#define OLEUIBUSY OLEUIBUSYA
+#define POLEUIBUSY POLEUIBUSYA
+#define LPOLEUIBUSY LPOLEUIBUSYA
+#define OleUIBusy OleUIBusyA
+#define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEA
+#define OLEUICHANGESOURCE OLEUICHANGESOURCEA
+#define POLEUICHANGESOURCE POLEUICHANGESOURCEA
+#define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEA
+#define OleUIChangeSource OleUIChangeSourceA
+#define IOleUIObjInfo IOleUIObjInfoA
+#define LPOLEUIOBJINFO LPOLEUIOBJINFOA
+#define IOleUILinkInfo IOleUILinkInfoA
+#define IOleUILinkInfoVtbl IOleUILinkInfoAVtbl
+#define LPOLEUILINKINFO LPOLEUILINKINFOA
+#define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSA
+#define OLEUIGNRLPROPS OLEUIGNRLPROPSA
+#define POLEUIGNRLPROPS POLEUIGNRLPROPSA
+#define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSA
+#define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSA
+#define OLEUIVIEWPROPS OLEUIVIEWPROPSA
+#define POLEUIVIEWPROPS POLEUIVIEWPROPSA
+#define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSA
+#define tagOLEUILINKPROPS tagOLEUILINKPROPSA
+#define OLEUILINKPROPS OLEUILINKPROPSA
+#define POLEUILINKPROPS POLEUILINKPROPSA
+#define LPOLEUILINKPROPS LPOLEUILINKPROPSA
+#endif
+#pragma pack(pop)
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/oleidl.h b/winsup/w32api/include/oleidl.h
new file mode 100644
index 000000000..e6b951f1d
--- /dev/null
+++ b/winsup/w32api/include/oleidl.h
@@ -0,0 +1,320 @@
+#ifndef _OLEIDL_H
+#define _OLEIDL_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <objfwd.h>
+typedef interface IParseDisplayname *LPPARSEDISPLAYNAME;
+typedef interface IOleContainer *LPOLECONTAINER;
+typedef interface IOleClientSite *LPOLECLIENTSITE;
+typedef interface IOleObject *LPOLEOBJECT;
+typedef interface IDropTarget *LPDROPTARGET;
+typedef interface IDropSource *LPDROPSOURCE;
+typedef interface IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS;
+typedef interface IEnumOleUndoUnits *LPENUMOLEUNDOUNITS;
+typedef interface IEnumOLEVERB *LPENUMOLEVERB;
+typedef interface IOleWindow *LPOLEWINDOW;
+typedef interface IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
+typedef interface IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
+typedef interface IOleInPlaceFrame *LPOLEINPLACEFRAME;
+typedef interface IOleAdviseHolder *LPOLEADVISEHOLDER;
+typedef interface IViewObject *LPVIEWOBJECT;
+typedef interface IViewObject2 *LPVIEWOBJECT2;
+
+typedef enum tagOLEWHICHMK {
+ OLEWHICHMK_CONTAINER=1,
+ OLEWHICHMK_OBJREL,
+ OLEWHICHMK_OBJFULL
+} OLEWHICHMK;
+typedef enum tagOLEGETMONIKER {
+ OLEGETMONIKER_ONLYIFTHERE=1,
+ OLEGETMONIKER_FORCEASSIGN,
+ OLEGETMONIKER_UNASSIGN,
+ OLEGETMONIKER_TEMPFORUSER
+} OLEGETMONIKER;
+typedef enum tagDROPEFFECT {
+ DROPEFFECT_NONE=0,
+ DROPEFFECT_COPY=1,
+ DROPEFFECT_MOVE=2,
+ DROPEFFECT_LINK=4,
+ DROPEFFECT_SCROLL=0x80000000
+} DROPEFFECT;
+typedef struct tagOleMenuGroupWidths {
+ LONG width[6];
+} OLEMENUGROUPWIDTHS,*LPOLEMENUGROUPWIDTHS;
+typedef HGLOBAL HOLEMENU;
+typedef enum tagOLECLOSE {
+ OLECLOSE_SAVEIFDIRTY,
+ OLECLOSE_NOSAVE,
+ OLECLOSE_PROMPTSAVE
+} OLECLOSE;
+typedef struct tagOLEVERB {
+ LONG lVerb;
+ LPWSTR lpszVerbName;
+ DWORD fuFlags;
+ DWORD grfAttribs;
+} OLEVERB,*LPOLEVERB;
+typedef RECT BORDERWIDTHS;
+typedef LPRECT LPBORDERWIDTHS;
+typedef LPCRECT LPCBORDERWIDTHS;
+typedef struct tagOIFI {
+ UINT cb;
+ BOOL fMDIApp;
+ HWND hwndFrame;
+ HACCEL haccel;
+ UINT cAccelEntries;
+}OLEINPLACEFRAMEINFO,*LPOLEINPLACEFRAMEINFO;
+
+/*DECLARE_ENUMERATOR_(IEnumOleDocumentViews,IOleDocumentView);*/
+DECLARE_ENUMERATOR(OLEVERB);
+typedef IEnumOLEVERB IEnumOleVerb;
+
+EXTERN_C const IID IID_IParseDisplayName;
+#undef INTERFACE
+#define INTERFACE IParseDisplayName
+DECLARE_INTERFACE_(IParseDisplayName,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE;
+};
+
+EXTERN_C const IID IID_IOleContainer;
+#undef INTERFACE
+#define INTERFACE IOleContainer
+DECLARE_INTERFACE_(IOleContainer,IParseDisplayName)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(ParseDisplayName)(THIS_ IBindCtx*,LPOLESTR,ULONG*,IMoniker**) PURE;
+ STDMETHOD(EnumObjects)(THIS_ DWORD,IEnumUnknown**) PURE;
+ STDMETHOD(LockContainer)(THIS_ BOOL) PURE;
+};
+
+EXTERN_C const IID IID_IOleClientSite;
+#undef INTERFACE
+#define INTERFACE IOleClientSite
+DECLARE_INTERFACE_(IOleClientSite,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(SaveObject)(THIS) PURE;
+ STDMETHOD(GetMoniker)(THIS_ DWORD,DWORD,LPMONIKER*) PURE;
+ STDMETHOD(GetContainer)(THIS_ LPOLECONTAINER*) PURE;
+ STDMETHOD(ShowObject)(THIS) PURE;
+ STDMETHOD(OnShowWindow)(THIS_ BOOL) PURE;
+ STDMETHOD(RequestNewObjectLayout)(THIS) PURE;
+};
+
+EXTERN_C const IID IID_IOleObject;
+#undef INTERFACE
+#define INTERFACE IOleObject
+DECLARE_INTERFACE_(IOleObject,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(SetClientSite)(THIS_ LPOLECLIENTSITE) PURE;
+ STDMETHOD(GetClientSite)(THIS_ LPOLECLIENTSITE*) PURE;
+ STDMETHOD(SetHostNames)(THIS_ LPCOLESTR,LPCOLESTR) PURE;
+ STDMETHOD(Close)(THIS_ DWORD) PURE;
+ STDMETHOD(SetMoniker)(THIS_ DWORD,LPMONIKER) PURE;
+ STDMETHOD(GetMoniker)(THIS_ DWORD,DWORD,LPMONIKER*) PURE;
+ STDMETHOD(InitFromData)(THIS_ LPDATAOBJECT,BOOL,DWORD) PURE;
+ STDMETHOD(GetClipboardData)(THIS_ DWORD,LPDATAOBJECT*) PURE;
+ STDMETHOD(DoVerb)(THIS_ LONG,LPMSG,LPOLECLIENTSITE,LONG,HWND,LPCRECT) PURE;
+ STDMETHOD(EnumVerbs)(THIS_ LPENUMOLEVERB*) PURE;
+ STDMETHOD(Update)(THIS) PURE;
+ STDMETHOD(IsUpToDate)(THIS) PURE;
+ STDMETHOD(GetUserClassID)(THIS_ LPCLSID) PURE;
+ STDMETHOD(GetUserType)(THIS_ DWORD,LPOLESTR) PURE;
+ STDMETHOD(SetExtent)(THIS_ DWORD,SIZEL*) PURE;
+ STDMETHOD(GetExtent)(THIS_ DWORD,SIZEL*) PURE;
+ STDMETHOD(Advise)(THIS_ LPADVISESINK,PDWORD) PURE;
+ STDMETHOD(Unadvise)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA*) PURE;
+ STDMETHOD(GetMiscStatus)(THIS_ DWORD,PDWORD) PURE;
+ STDMETHOD(SetColorScheme)(THIS_ LPLOGPALETTE) PURE;
+};
+
+EXTERN_C const IID IID_IOleWindow;
+#undef INTERFACE
+#define INTERFACE IOleWindow
+DECLARE_INTERFACE_(IOleWindow,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+};
+
+EXTERN_C const IID IID_IOleInPlaceUIWindow;
+#undef INTERFACE
+#define INTERFACE IOleInPlaceUIWindow
+DECLARE_INTERFACE_(IOleInPlaceUIWindow,IOleWindow)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(GetBorder)(THIS_ LPRECT) PURE;
+ STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE;
+ STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE;
+ STDMETHOD(SetActiveObject)(THIS_ LPOLEINPLACEACTIVEOBJECT,LPCOLESTR) PURE;
+};
+
+EXTERN_C const IID IID_IOleInPlaceActiveObject;
+#undef INTERFACE
+#define INTERFACE IOleInPlaceActiveObject
+DECLARE_INTERFACE_(IOleInPlaceActiveObject,IOleWindow)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(TranslateAccelerator)(THIS_ LPMSG) PURE;
+ STDMETHOD(OnFrameWindowActivate)(THIS_ BOOL) PURE;
+ STDMETHOD(OnDocWindowActivate)(THIS_ BOOL) PURE;
+ STDMETHOD(ResizeBorder)(THIS_ LPCRECT,LPOLEINPLACEUIWINDOW,BOOL) PURE;
+ STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
+};
+
+EXTERN_C const IID IID_IOleInPlaceFrame;
+#undef INTERFACE
+#define INTERFACE IOleInPlaceFrame
+DECLARE_INTERFACE_(IOleInPlaceFrame,IOleInPlaceUIWindow)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(GetBorder)(THIS_ LPRECT) PURE;
+ STDMETHOD(RequestBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE;
+ STDMETHOD(SetBorderSpace)(THIS_ LPCBORDERWIDTHS) PURE;
+ STDMETHOD(SetActiveObject)(THIS_ LPOLEINPLACEACTIVEOBJECT,LPCOLESTR) PURE;
+ STDMETHOD(InsertMenus)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
+ STDMETHOD(SetMenu)(THIS_ HMENU,HOLEMENU,HWND) PURE;
+ STDMETHOD(RemoveMenus)(THIS_ HMENU) PURE;
+ STDMETHOD(SetStatusText)(THIS_ LPCOLESTR) PURE;
+ STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
+ STDMETHOD(TranslateAccelerator)(THIS_ LPMSG,WORD) PURE;
+};
+
+EXTERN_C const IID IID_IOleAdviseHolder;
+#undef INTERFACE
+#define INTERFACE IOleAdviseHolder
+DECLARE_INTERFACE_(IOleAdviseHolder,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Advise)(THIS_ LPADVISESINK,PDWORD) PURE;
+ STDMETHOD(Unadvise)(THIS_ DWORD) PURE;
+ STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA*) PURE;
+ STDMETHOD(SendOnRename)(THIS_ LPMONIKER) PURE;
+ STDMETHOD(SendOnSave)(THIS) PURE;
+ STDMETHOD(SendOnClose)(THIS) PURE;
+};
+
+EXTERN_C const IID IID_IDropSource;
+#undef INTERFACE
+#define INTERFACE IDropSource
+DECLARE_INTERFACE_(IDropSource,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(QueryContinueDrag)(THIS_ BOOL,DWORD) PURE;
+ STDMETHOD(GiveFeedback)(THIS_ DWORD) PURE;
+};
+
+EXTERN_C const IID IID_IDropTarget;
+#undef INTERFACE
+#define INTERFACE IDropTarget
+DECLARE_INTERFACE_(IDropTarget,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(DragEnter)(THIS_ LPDATAOBJECT,DWORD,POINTL,PDWORD) PURE;
+ STDMETHOD(DragOver)(THIS_ DWORD,POINTL,PDWORD) PURE;
+ STDMETHOD(DragLeave)(THIS) PURE;
+ STDMETHOD(Drop)(THIS_ LPDATAOBJECT,DWORD,POINTL,PDWORD) PURE;
+};
+
+typedef BOOL(CALLBACK *__IView_pfncont)(DWORD);
+EXTERN_C const IID IID_IViewObject;
+#undef INTERFACE
+#define INTERFACE IViewObject
+DECLARE_INTERFACE_(IViewObject,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Draw)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD) PURE;
+ STDMETHOD(GetColorSet)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*) PURE;
+ STDMETHOD(Freeze)(THIS_ DWORD,LONG,PVOID,PDWORD) PURE;
+ STDMETHOD(Unfreeze)(THIS_ DWORD) PURE;
+ STDMETHOD(SetAdvise)(THIS_ DWORD,DWORD,IAdviseSink*) PURE;
+ STDMETHOD(GetAdvise)(THIS_ PDWORD,PDWORD,IAdviseSink**) PURE;
+};
+
+EXTERN_C const IID IID_IViewObject2;
+#undef INTERFACE
+#define INTERFACE IViewObject2
+DECLARE_INTERFACE_(IViewObject2,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Draw)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,HDC,LPCRECTL,LPCRECTL,__IView_pfncont pfnContinue,DWORD) PURE;
+ STDMETHOD(GetColorSet)(THIS_ DWORD,LONG,PVOID,DVTARGETDEVICE*,HDC,LPLOGPALETTE*) PURE;
+ STDMETHOD(Freeze)(THIS_ DWORD,LONG,PVOID,PDWORD) PURE;
+ STDMETHOD(Unfreeze)(THIS_ DWORD) PURE;
+ STDMETHOD(SetAdvise)(THIS_ DWORD,DWORD,IAdviseSink*) PURE;
+ STDMETHOD(GetAdvise)(THIS_ PDWORD,PDWORD,IAdviseSink**) PURE;
+ STDMETHOD(GetExtent)(THIS_ DWORD,DWORD,DVTARGETDEVICE*,LPSIZEL) PURE;
+};
+
+EXTERN_C const IID IID_ISupportErrorInfo;
+#undef INTERFACE
+#define INTERFACE ISupportErrorInfo
+DECLARE_INTERFACE_(ISupportErrorInfo, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(InterfaceSupportsErrorInfo)(THIS_ REFIID) PURE;
+
+};
+
+EXTERN_C const IID IID_IErrorInfo;
+#undef INTERFACE
+#define INTERFACE IErrorInfo
+DECLARE_INTERFACE_(IErrorInfo, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+ STDMETHOD(GetGUID)(THIS_ REFIID) PURE;
+ STDMETHOD(GetSource)(THIS_ BSTR*) PURE;
+ STDMETHOD(GetDescription)(THIS_ BSTR*) PURE;
+ STDMETHOD(GetHelpContext)(THIS_ DWORD*) PURE;
+
+ };
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/winsup/w32api/include/pbt.h b/winsup/w32api/include/pbt.h
new file mode 100644
index 000000000..fba11e3d0
--- /dev/null
+++ b/winsup/w32api/include/pbt.h
@@ -0,0 +1,16 @@
+#ifndef _PBT_H
+#define _PBT_H
+#define PBT_APMQUERYSUSPEND 0
+#define PBT_APMQUERYSTANDBY 1
+#define PBT_APMQUERYSUSPENDFAILED 2
+#define PBT_APMQUERYSTANDBYFAILED 3
+#define PBT_APMSUSPEND 4
+#define PBT_APMSTANDBY 5
+#define PBT_APMRESUMECRITICAL 6
+#define PBT_APMRESUMESUSPEND 8
+#define PBT_APMRESUMESTANDBY 8
+#define PBTF_APMRESUMEFROMFAILURE 1
+#define PBT_APMBATTERYLOW 9
+#define PBT_APMPOWERSTATUSCHANGE 10
+#define PBT_APMOEMEVENT 11
+#endif
diff --git a/winsup/w32api/include/poppack.h b/winsup/w32api/include/poppack.h
new file mode 100644
index 000000000..bb04d4524
--- /dev/null
+++ b/winsup/w32api/include/poppack.h
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(pop)
+#endif
diff --git a/winsup/w32api/include/prsht.h b/winsup/w32api/include/prsht.h
new file mode 100644
index 000000000..8b2ab2de2
--- /dev/null
+++ b/winsup/w32api/include/prsht.h
@@ -0,0 +1,244 @@
+#ifndef _PRSHT_H
+#define _PRSHT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MAXPROPPAGES 100
+#define PSP_DEFAULT 0
+#define PSP_DLGINDIRECT 1
+#define PSP_USEHICON 2
+#define PSP_USEICONID 4
+#define PSP_USETITLE 8
+#define PSP_RTLREADING 16
+#define PSP_HASHELP 32
+#define PSP_USEREFPARENT 64
+#define PSP_USECALLBACK 128
+#define PSPCB_RELEASE 1
+#define PSPCB_CREATE 2
+#define PSH_DEFAULT 0
+#define PSH_PROPTITLE 1
+#define PSH_USEHICON 2
+#define PSH_USEICONID 4
+#define PSH_PROPSHEETPAGE 8
+#define PSH_WIZARD 32
+#define PSH_USEPSTARTPAGE 64
+#define PSH_NOAPPLYNOW 128
+#define PSH_USECALLBACK 256
+#define PSH_HASHELP 512
+#define PSH_MODELESS 1024
+#define PSH_RTLREADING 2048
+#define PSCB_INITIALIZED 1
+#define PSCB_PRECREATE 2
+#define PSM_GETTABCONTROL 1140
+#define PSM_GETCURRENTPAGEHWND 1142
+#define PSM_ISDIALOGMESSAGE 1141
+#define PSM_PRESSBUTTON 1137
+#define PSM_SETCURSELID 1138
+#define PSM_SETFINISHTEXTW 1145
+#define PSM_SETFINISHTEXTA 1139
+#define PSN_FIRST (-200)
+#define PSN_LAST (-299)
+#define PSN_APPLY (-202)
+#define PSN_HELP (-205)
+#define PSN_KILLACTIVE (-201)
+#define PSN_QUERYCANCEL (-209)
+#define PSN_RESET (-203)
+#define PSN_SETACTIVE (-200)
+#define PSN_WIZBACK (-206)
+#define PSN_WIZFINISH (-208)
+#define PSN_WIZNEXT (-207)
+#define PSNRET_NOERROR 0
+#define PSNRET_INVALID 1
+#define PSNRET_INVALID_NOCHANGEPAGE 2
+#define ID_PSRESTARTWINDOWS 2
+#define ID_PSREBOOTSYSTEM 3
+#define WIZ_CXDLG 276
+#define WIZ_CYDLG 140
+#define WIZ_CXBMP 80
+#define WIZ_BODYX 92
+#define WIZ_BODYCX 184
+#define PROP_SM_CXDLG 212
+#define PROP_SM_CYDLG 188
+#define PROP_MED_CXDLG 227
+#define PROP_MED_CYDLG 215
+#define PROP_LG_CXDLG 252
+#define PROP_LG_CYDLG 218
+#define PSBTN_MAX 6
+#define PSBTN_BACK 0
+#define PSBTN_NEXT 1
+#define PSBTN_FINISH 2
+#define PSBTN_OK 3
+#define PSBTN_APPLYNOW 4
+#define PSBTN_CANCEL 5
+#define PSBTN_HELP 6
+#define PSWIZB_BACK 1
+#define PSWIZB_NEXT 2
+#define PSWIZB_FINISH 4
+#define PSWIZB_DISABLEDFINISH 8
+#define PSM_SETWIZBUTTONS (WM_USER+112)
+#define PSM_APPLY (WM_USER+110)
+#define PSM_UNCHANGED (WM_USER+109)
+#define PSM_QUERYSIBLINGS (WM_USER+108)
+#define PSM_CANCELTOCLOSE (WM_USER+107)
+#define PSM_REBOOTSYSTEM (WM_USER+106)
+#define PSM_RESTARTWINDOWS (WM_USER+105)
+#define PSM_CHANGED (WM_USER+104)
+#define PSM_ADDPAGE (WM_USER+103)
+#define PSM_REMOVEPAGE (WM_USER+102)
+#define PSM_SETCURSEL (WM_USER+101)
+#define PSM_SETTITLEA (WM_USER+111)
+#define PSM_SETTITLEW (WM_USER+120)
+
+#ifndef RC_INVOKED
+
+#pragma pack(push,8)
+typedef struct _PROPSHEETPAGEA {
+ DWORD dwSize;
+ DWORD dwFlags;
+ HINSTANCE hInstance;
+ union {
+ LPCSTR pszTemplate;
+ LPCDLGTEMPLATE pResource;
+ } DUMMYUNIONNAME;
+ union {
+ HICON hIcon;
+ LPCSTR pszIcon;
+ } DUMMYUNIONNAME2;
+ LPCSTR pszTitle;
+ DLGPROC pfnDlgProc;
+ LPARAM lParam;
+ UINT(CALLBACK *pfnCallback)(HWND,UINT,struct _PROPSHEETPAGEA*);
+ UINT *pcRefParent;
+} PROPSHEETPAGEA,*LPPROPSHEETPAGEA;
+typedef const PROPSHEETPAGEA *LPCPROPSHEETPAGEA;
+typedef struct _PROPSHEETPAGEW {
+ DWORD dwSize;
+ DWORD dwFlags;
+ HINSTANCE hInstance;
+ union {
+ LPCWSTR pszTemplate;
+ LPCDLGTEMPLATE pResource;
+ } DUMMYUNIONNAME;
+ union {
+ HICON hIcon;
+ LPCWSTR pszIcon;
+ } DUMMYUNIONNAME2;
+ LPCWSTR pszTitle;
+ DLGPROC pfnDlgProc;
+ LPARAM lParam;
+ UINT(CALLBACK *pfnCallback)(HWND,UINT,struct _PROPSHEETPAGEW*);
+ UINT *pcRefParent;
+} PROPSHEETPAGEW,*LPPROPSHEETPAGEW;
+typedef const PROPSHEETPAGEA *LPCPROPSHEETPAGEW;
+typedef UINT(CALLBACK *LPFNPSPCALLBACKA)(HWND,UINT,LPPROPSHEETPAGEA);
+typedef UINT(CALLBACK *LPFNPSPCALLBACKW)(HWND,UINT,LPPROPSHEETPAGEW);
+typedef int(CALLBACK *PFNPROPSHEETCALLBACK)(HWND,UINT,LPARAM);
+DECLARE_HANDLE(HPROPSHEETPAGE);
+typedef struct _PROPSHEETHEADERA {
+ DWORD dwSize;
+ DWORD dwFlags;
+ HWND hwndParent;
+ HINSTANCE hInstance;
+ union {
+ HICON hIcon;
+ LPCSTR pszIcon;
+ }DUMMYUNIONNAME;
+ LPCSTR pszCaption;
+ UINT nPages;
+ union {
+ UINT nStartPage;
+ LPCSTR pStartPage;
+ }DUMMYUNIONNAME2;
+ union {
+ LPCPROPSHEETPAGEA ppsp;
+ HPROPSHEETPAGE *phpage;
+ }DUMMYUNIONNAME3;
+ PFNPROPSHEETCALLBACK pfnCallback;
+} PROPSHEETHEADERA,*LPPROPSHEETHEADERA;
+typedef const PROPSHEETHEADERA *LPCPROPSHEETHEADERA;
+typedef struct _PROPSHEETHEADERW {
+ DWORD dwSize;
+ DWORD dwFlags;
+ HWND hwndParent;
+ HINSTANCE hInstance;
+ union {
+ HICON hIcon;
+ LPCWSTR pszIcon;
+ }DUMMYUNIONNAME;
+ LPCWSTR pszCaption;
+ UINT nPages;
+ union {
+ UINT nStartPage;
+ LPCWSTR pStartPage;
+ }DUMMYUNIONNAME2;
+ union {
+ LPCPROPSHEETPAGEW ppsp;
+ HPROPSHEETPAGE *phpage;
+ }DUMMYUNIONNAME3;
+ PFNPROPSHEETCALLBACK pfnCallback;
+} PROPSHEETHEADERW,*LPPROPSHEETHEADERW;
+typedef const PROPSHEETHEADERW *LPCPROPSHEETHEADERW;
+typedef BOOL(CALLBACK *LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE,LPARAM);
+typedef BOOL(CALLBACK *LPFNADDPROPSHEETPAGES)(LPVOID,LPFNADDPROPSHEETPAGE,LPARAM);
+typedef struct _PSHNOTIFY {
+ NMHDR hdr;
+ LPARAM lParam;
+} PSHNOTIFY,*LPPSHNOTIFY;
+
+#pragma pack(pop)
+
+HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(LPCPROPSHEETPAGEA);
+HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW);
+BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE);
+int WINAPI PropertySheetA(LPCPROPSHEETHEADERA);
+int WINAPI PropertySheetW(LPCPROPSHEETHEADERW);
+#define PropSheet_AddPage(d,p) SendMessage(d,PSM_ADDPAGE,0,(LPARAM)p)
+#define PropSheet_Apply(d) SendMessage(d,PSM_APPLY,0,0)
+#define PropSheet_CancelToClose(d) SendMessage(d,PSM_CANCELTOCLOSE,0,0)
+#define PropSheet_Changed(d,w) SendMessage(d,PSM_CHANGED,(WPARAM)w,0)
+#define PropSheet_GetCurrentPageHwnd(d) (HWND)SendMessage(d,PSM_GETCURRENTPAGEHWND,0,0)
+#define PropSheet_GetTabControl(d) (HWND)SendMessage(d,PSM_GETTABCONTROL,0,0)
+#define PropSheet_IsDialogMessage(d,m) (BOOL)SendMessage(d,PSM_ISDIALOGMESSAGE,0,(LPARAM)m)
+#define PropSheet_PressButton(d,i) SendMessage(d,PSM_PRESSBUTTON,i,0)
+#define PropSheet_QuerySiblings(d,w,l) SendMessage(d,PSM_QUERYSIBLINGS,w,l)
+#define PropSheet_RebootSystem(d) SendMessage(d,PSM_REBOOTSYSTEM,0,0)
+#define PropSheet_RemovePage(d,i,p) SendMessage(d,PSM_REMOVEPAGE,i,(LPARAM)p)
+#define PropSheet_RestartWindows(d) SendMessage(d,PSM_RESTARTWINDOWS,0,0)
+#define PropSheet_SetCurSel(d,p,i) SendMessage(d,PSM_SETCURSEL,i,(LPARAM)p)
+#define PropSheet_SetCurSelByID(d,i) SendMessage(d,PSM_SETCURSELID,0,i)
+#define PropSheet_SetFinishText(d,s) SendMessage(d,PSM_SETFINISHTEXT,0,(LPARAM)s)
+#define PropSheet_SetTitle(d,w,s) SendMessage(d,PSM_SETTITLE,w,(LPARAM)s)
+#define PropSheet_SetWizButtons(d,f) PostMessage(d,PSM_SETWIZBUTTONS,0,(LPARAM)f)
+#define PropSheet_UnChanged(d,w) SendMessage(d,PSM_UNCHANGED,(WPARAM)w,0)
+#endif
+
+#ifdef UNICODE
+#define LPFNPSPCALLBACK LPFNPSPCALLBACKW
+#define PROPSHEETPAGE PROPSHEETPAGEW
+#define LPPROPSHEETPAGE LPPROPSHEETPAGEW
+#define LPCPROPSHEETPAGE LPCPROPSHEETPAGEW
+#define PROPSHEETHEADER PROPSHEETHEADERW
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERW
+#define LPCPROPSHEETHEADER LPCPROPSHEETHEADERW
+#define PSM_SETTITLE PSM_SETTITLEW
+#define PSM_SETFINISHTEXT PSM_SETFINISHTEXTW
+#define CreatePropertySheetPage CreatePropertySheetPageW
+#define PropertySheet PropertySheetW
+#else
+#define LPFNPSPCALLBACK LPFNPSPCALLBACKA
+#define PROPSHEETPAGE PROPSHEETPAGEA
+#define LPPROPSHEETPAGE LPPROPSHEETPAGEA
+#define LPCPROPSHEETPAGE LPCPROPSHEETPAGEA
+#define PROPSHEETHEADER PROPSHEETHEADERA
+#define LPPROPSHEETHEADER LPPROPSHEETHEADERA
+#define LPCPROPSHEETHEADER LPCPROPSHEETHEADERA
+#define PSM_SETTITLE PSM_SETTITLEA
+#define PSM_SETFINISHTEXT PSM_SETFINISHTEXTA
+#define CreatePropertySheetPage CreatePropertySheetPageA
+#define PropertySheet PropertySheetA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/psapi.h b/winsup/w32api/include/psapi.h
new file mode 100644
index 000000000..4c4827382
--- /dev/null
+++ b/winsup/w32api/include/psapi.h
@@ -0,0 +1,92 @@
+/*
+ psapi.h - Include file for PSAPI.DLL APIs
+
+ Written by Mumit Khan <khan@nanotech.wisc.edu>
+
+ This file is part of a free library for the Win32 API.
+
+ NOTE: This strictly does not belong in the Win32 API since it's
+ really part of Platform SDK. However,GDB needs it and we might
+ as well provide it here.
+
+ 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 _PSAPI_H
+#define _PSAPI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef RC_INVOKED
+
+typedef struct _MODULEINFO {
+ LPVOID lpBaseOfDll;
+ DWORD SizeOfImage;
+ LPVOID EntryPoint;
+} MODULEINFO,*LPMODULEINFO;
+
+typedef struct _PSAPI_WS_WATCH_INFORMATION {
+ LPVOID FaultingPc;
+ LPVOID FaultingVa;
+} PSAPI_WS_WATCH_INFORMATION,*PPSAPI_WS_WATCH_INFORMATION;
+
+typedef struct _PROCESS_MEMORY_COUNTERS {
+ DWORD cb;
+ DWORD PageFaultCount;
+ DWORD PeakWorkingSetSize;
+ DWORD WorkingSetSize;
+ DWORD QuotaPeakPagedPoolUsage;
+ DWORD QuotaPagedPoolUsage;
+ DWORD QuotaPeakNonPagedPoolUsage;
+ DWORD QuotaNonPagedPoolUsage;
+ DWORD PagefileUsage;
+ DWORD PeakPagefileUsage;
+} PROCESS_MEMORY_COUNTERS,*PPROCESS_MEMORY_COUNTERS;
+
+/* Grouped by application,not in alphabetical order. */
+BOOL WINAPI EnumProcesses(DWORD *,DWORD,DWORD *);
+BOOL WINAPI EnumProcessModules(HANDLE,HMODULE *,DWORD,LPDWORD);
+DWORD WINAPI GetModuleBaseNameA(HANDLE,HMODULE,LPSTR,DWORD);
+DWORD WINAPI GetModuleBaseNameW(HANDLE,HMODULE,LPWSTR,DWORD);
+DWORD WINAPI GetModuleFileNameExA(HANDLE,HMODULE,LPSTR,DWORD);
+DWORD WINAPI GetModuleFileNameExW(HANDLE,HMODULE,LPWSTR,DWORD);
+BOOL WINAPI GetModuleInformation(HANDLE,HMODULE,LPMODULEINFO,DWORD);
+BOOL WINAPI EmptyWorkingSet(HANDLE);
+BOOL WINAPI QueryWorkingSet(HANDLE,PVOID,DWORD);
+BOOL WINAPI InitializeProcessForWsWatch(HANDLE);
+BOOL WINAPI GetWsChanges(HANDLE,PPSAPI_WS_WATCH_INFORMATION,DWORD);
+DWORD WINAPI GetMappedFileNameW(HANDLE,LPVOID,LPWSTR,DWORD);
+DWORD WINAPI GetMappedFileNameA(HANDLE,LPVOID,LPSTR,DWORD);
+BOOL WINAPI EnumDeviceDrivers(LPVOID *,DWORD,LPDWORD);
+DWORD WINAPI GetDeviceDriverBaseNameA(LPVOID,LPSTR,DWORD);
+DWORD WINAPI GetDeviceDriverBaseNameW(LPVOID,LPWSTR,DWORD);
+DWORD WINAPI GetDeviceDriverFileNameA(LPVOID,LPSTR,DWORD);
+DWORD WINAPI GetDeviceDriverFileNameW(LPVOID,LPWSTR,DWORD);
+BOOL WINAPI GetProcessMemoryInfo(HANDLE,PPROCESS_MEMORY_COUNTERS,DWORD);
+
+#endif /* not RC_INVOKED */
+
+#ifdef UNICODE
+#define GetModuleBaseName GetModuleBaseNameW
+#define GetModuleFileNameEx GetModuleFileNameExW
+#define GetMappedFilenameEx GetMappedFilenameExW
+#define GetDeviceDriverBaseName GetDeviceDriverBaseNameW
+#define GetDeviceDriverFileName GetDeviceDriverFileNameW
+#else
+#define GetModuleBaseName GetModuleBaseNameA
+#define GetModuleFileNameEx GetModuleFileNameExA
+#define GetMappedFilenameEx GetMappedFilenameExA
+#define GetDeviceDriverBaseName GetDeviceDriverBaseNameA
+#define GetDeviceDriverFileName GetDeviceDriverFileNameA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PSAPI_H */
+
diff --git a/winsup/w32api/include/pshpack1.h b/winsup/w32api/include/pshpack1.h
new file mode 100644
index 000000000..3cbcf238b
--- /dev/null
+++ b/winsup/w32api/include/pshpack1.h
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(push,1)
+#endif
diff --git a/winsup/w32api/include/pshpack2.h b/winsup/w32api/include/pshpack2.h
new file mode 100644
index 000000000..4d88e004e
--- /dev/null
+++ b/winsup/w32api/include/pshpack2.h
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(push,2)
+#endif
diff --git a/winsup/w32api/include/pshpack4.h b/winsup/w32api/include/pshpack4.h
new file mode 100644
index 000000000..c1c3cf959
--- /dev/null
+++ b/winsup/w32api/include/pshpack4.h
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(push,4)
+#endif
diff --git a/winsup/w32api/include/pshpack8.h b/winsup/w32api/include/pshpack8.h
new file mode 100644
index 000000000..f0c4539b9
--- /dev/null
+++ b/winsup/w32api/include/pshpack8.h
@@ -0,0 +1,3 @@
+#ifndef RC_INVOKED
+#pragma pack(push,8)
+#endif
diff --git a/winsup/w32api/include/rapi.h b/winsup/w32api/include/rapi.h
new file mode 100644
index 000000000..9d63d06a9
--- /dev/null
+++ b/winsup/w32api/include/rapi.h
@@ -0,0 +1,64 @@
+/*
+ rapi.h - main header file for the RAPI API
+
+ Copyright 1999 Cygnus Solutions.
+
+ This file is part of Cygwin.
+
+ This software is a copyrighted work licensed under the terms of the
+ Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+ details.
+*/
+
+#ifndef _RAPI_H
+#define _RAPI_H
+
+typedef struct IRAPIStream
+{
+ struct IRAPIStreamVtbl * lpVtbl;
+} IRAPIStream;
+
+typedef struct IRAPIStreamVtbl IRAPIStreamVtbl;
+
+typedef enum tagRAPISTREAMFLAG
+{
+ STREAM_TIMEOUT_READ
+} RAPISTREAMFLAG;
+
+struct IRAPIStreamVtbl
+{
+ HRESULT (__stdcall * SetRapiStat)( IRAPIStream * This, RAPISTREAMFLAG Flag, DWORD dwValue) ;
+ HRESULT (__stdcall * GetRapiStat)( IRAPIStream * This, RAPISTREAMFLAG Flag, DWORD *pdwValue) ;
+};
+
+// RAPI extension on Windows CE (e.g., MyFunctionFOO) called via CeRapiInvoke should be declared as:
+// EXTERN_C RAPIEXT MyFunctionFOO;
+typedef HRESULT (STDAPICALLTYPE RAPIEXT)(
+ DWORD cbInput, // [IN]
+ BYTE *pInput, // [IN]
+ DWORD *pcbOutput, // [OUT]
+ BYTE **ppOutput, // [OUT]
+ IRAPIStream *pIRAPIStream // [IN]
+ );
+
+typedef struct _RAPIINIT
+{
+ DWORD cbSize;
+ HANDLE heRapiInit;
+ HRESULT hrRapiInit;
+} RAPIINIT;
+
+STDAPI CeRapiInit();
+STDAPI CeRapiInitEx(RAPIINIT*);
+STDAPI_(BOOL) CeCreateProcess(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES,
+ BOOL, DWORD, LPVOID, LPWSTR, LPSTARTUPINFO, LPPROCESS_INFORMATION);
+STDAPI CeRapiUninit();
+
+STDAPI_(BOOL) CeWriteFile(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED);
+STDAPI_(HANDLE) CeCreateFile(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);
+STDAPI_(BOOL) CeCreateDirectory(LPCWSTR, LPSECURITY_ATTRIBUTES);
+STDAPI_(DWORD) CeGetLastError(void);
+STDAPI_(BOOL) CeGetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME);
+STDAPI_(BOOL) CeCloseHandle(HANDLE);
+
+#endif /* _RAPI_H */
diff --git a/winsup/w32api/include/regstr.h b/winsup/w32api/include/regstr.h
new file mode 100644
index 000000000..bec0a97a1
--- /dev/null
+++ b/winsup/w32api/include/regstr.h
@@ -0,0 +1,763 @@
+#ifndef _REGSTR_H
+#define _REGSTR_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define REGSTR_KEY_CLASS TEXT("Class")
+#define REGSTR_KEY_CONFIG TEXT("Config")
+#define REGSTR_KEY_ENUM TEXT("Enum")
+#define REGSTR_KEY_ROOTENUM TEXT("Root")
+#define REGSTR_KEY_BIOSENUM TEXT("BIOS")
+#define REGSTR_KEY_PCMCIAENUM TEXT("PCMCIA")
+#define REGSTR_KEY_PCIENUM TEXT("PCI")
+#define REGSTR_KEY_LOGCONFIG TEXT("LogConfig")
+#define REGSTR_KEY_SYSTEMBOARD TEXT("*PNP0C01")
+#define REGSTR_KEY_APM TEXT("*PNP0C05")
+#define REGSTR_KEY_INIUPDATE TEXT("IniUpdate")
+#define REG_KEY_INSTDEV TEXT("Installed")
+#define REGSTR_KEY_DOSOPTCDROM TEXT("CD-ROM")
+#define REGSTR_KEY_DOSOPTMOUSE TEXT("MOUSE")
+#define REGSTR_DEFAULT_INSTANCE TEXT("0000")
+#define REGSTR_PATH_MOTHERBOARD REGSTR_KEY_SYSTEMBOARD TEXT("\\" REGSTR_DEFAULT_INSTANCE
+#define REGSTR_PATH_SETUP TEXT("Software\\Microsoft\\Windows\\CurrentVersion")
+#define REGSTR_PATH_PIFCONVERT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\PIFConvert")
+#define REGSTR_PATH_MSDOSOPTS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOSOptions")
+#define REGSTR_PATH_MSDOSEMU TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOS Emulation")
+#define REGSTR_PATH_NEWDOSBOX TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\MS-DOS Emulation\\AppCompat")
+#define REGSTR_PATH_RUNONCE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce")
+#define REGSTR_PATH_RUN TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run")
+#define REGSTR_PATH_RUNSERVICESONCE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce")
+#define REGSTR_PATH_RUNSERVICES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\RunServices")
+#define REGSTR_PATH_EXPLORER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
+#define REGSTR_PATH_DETECT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Detect")
+#define REGSTR_PATH_APPPATHS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\App Paths")
+#define REGSTR_PATH_UNINSTALL TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall")
+#define REGSTR_PATH_REALMODENET TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Real Mode Net")
+#define REGSTR_PATH_NETEQUIV TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\Equivalent")
+#define REGSTR_PATH_CVNETWORK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network")
+#define REGSTR_PATH_IDCONFIGDB TEXT("System\\CurrentControlSet\\Control\\IDConfigDB")
+#define REGSTR_PATH_CLASS TEXT("System\\CurrentControlSet\\Services\\Class")
+#define REGSTR_PATH_DISPLAYSETTINGS TEXT("Display\\Settings")
+#define REGSTR_PATH_FONTS TEXT("Display\\Fonts")
+#define REGSTR_PATH_ENUM TEXT("Enum")
+#define REGSTR_PATH_ROOT TEXT("Enum\\Root")
+#define REGSTR_PATH_SERVICES TEXT("System\\CurrentControlSet\\Services")
+#define REGSTR_PATH_VXD TEXT("System\\CurrentControlSet\\Services\\VxD")
+#define REGSTR_PATH_IOS TEXT("System\\CurrentControlSet\\Services\\VxD\\IOS")
+#define REGSTR_PATH_VMM TEXT("System\\CurrentControlSet\\Services\\VxD\\VMM")
+#define REGSTR_PATH_VPOWERD TEXT("System\\CurrentControlSet\\Services\\VxD\\VPOWERD")
+#define REGSTR_PATH_VNETSUP TEXT("System\\CurrentControlSet\\Services\\VxD\\VNETSUP")
+#define REGSTR_PATH_NWREDIR TEXT("System\\CurrentControlSet\\Services\\VxD\\NWREDIR")
+#define REGSTR_PATH_NCPSERVER TEXT("System\\CurrentControlSet\\Services\\NcpServer\\Parameters")
+#define REGSTR_PATH_IOARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\IOArb")
+#define REGSTR_PATH_ADDRARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\AddrArb")
+#define REGSTR_PATH_DMAARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\DMAArb")
+#define REGSTR_PATH_IRQARB TEXT("System\\CurrentControlSet\\Services\\Arbitrators\\IRQArb")
+#define REGSTR_PATH_CODEPAGE TEXT("System\\CurrentControlSet\\Control\\Nls\\Codepage")
+#define REGSTR_PATH_FILESYSTEM TEXT("System\\CurrentControlSet\\Control\\FileSystem")
+#define REGSTR_PATH_FILESYSTEM_NOVOLTRACK TEXT("System\\CurrentControlSet\\Control\\FileSystem\\NoVolTrack")
+#define REGSTR_PATH_CDFS TEXT("System\\CurrentControlSet\\Control\\FileSystem\\CDFS")
+#define REGSTR_PATH_WINBOOT TEXT("System\\CurrentControlSet\\Control\\WinBoot")
+#define REGSTR_PATH_INSTALLEDFILES TEXT("System\\CurrentControlSet\\Control\\InstalledFiles")
+#define REGSTR_PATH_VMM32FILES TEXT("System\\CurrentControlSet\\Control\\VMM32Files")
+#define REGSTR_MAX_VALUE_LENGTH 256
+#define REGSTR_VAL_BITSPERPIXEL TEXT("BitsPerPixel")
+#define REGSTR_VAL_RESOLUTION TEXT("Resolution")
+#define REGSTR_VAL_DPILOGICALX TEXT("DPILogicalX")
+#define REGSTR_VAL_DPILOGICALY TEXT("DPILogicalY")
+#define REGSTR_VAL_DPIPHYSICALX TEXT("DPIPhysicalX")
+#define REGSTR_VAL_DPIPHYSICALY TEXT("DPIPhysicalY")
+#define REGSTR_VAL_REFRESHRATE TEXT("RefreshRate")
+#define REGSTR_VAL_DISPLAYFLAGS TEXT("DisplayFlags")
+#define REGSTR_PATH_CONTROLPANEL TEXT("Control Panel")
+#define REGSTR_PATH_CONTROLSFOLDER TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Controls Folder")
+#define REGSTR_VAL_DOSCP TEXT("OEMCP")
+#define REGSTR_VAL_WINCP TEXT("ACP")
+#define REGSTR_PATH_DYNA_ENUM TEXT("Config Manager\\Enum")
+#define REGSTR_VAL_HARDWARE_KEY TEXT("HardWareKey")
+#define REGSTR_VAL_ALLOCATION TEXT("Allocation")
+#define REGSTR_VAL_PROBLEM TEXT("Problem")
+#define REGSTR_VAL_STATUS TEXT("Status")
+#define REGSTR_VAL_DONTUSEMEM TEXT("DontAllocLastMem")
+#define REGSTR_VAL_SYSTEMROOT TEXT("SystemRoot")
+#define REGSTR_VAL_BOOTCOUNT TEXT("BootCount")
+#define REGSTR_VAL_REALNETSTART TEXT("RealNetStart")
+#define REGSTR_VAL_MEDIA TEXT("MediaPath")
+#define REGSTR_VAL_CONFIG TEXT("ConfigPath")
+#define REGSTR_VAL_DEVICEPATH TEXT("DevicePath")
+#define REGSTR_VAL_SRCPATH TEXT("SourcePath")
+#define REGSTR_VAL_OLDWINDIR TEXT("OldWinDir")
+#define REGSTR_VAL_SETUPFLAGS TEXT("SetupFlags")
+#define REGSTR_VAL_REGOWNER TEXT("RegisteredOwner")
+#define REGSTR_VAL_REGORGANIZATION TEXT("RegisteredOrganization")
+#define REGSTR_VAL_LICENSINGINFO TEXT("LicensingInfo")
+#define REGSTR_VAL_OLDMSDOSVER TEXT("OldMSDOSVer")
+#define REGSTR_VAL_FIRSTINSTALLDATETIME TEXT("FirstInstallDateTime")
+#define REGSTR_VAL_INSTALLTYPE TEXT("InstallType")
+#define REGSTR_VAL_WRAPPER TEXT("Wrapper")
+#define IT_COMPACT 0
+#define IT_TYPICAL 1
+#define IT_PORTABLE 2
+#define IT_CUSTOM 3
+#define REGSTR_KEY_SETUP TEXT("\\Setup")
+#define REGSTR_VAL_BOOTDIR TEXT("BootDir")
+#define REGSTR_VAL_WINBOOTDIR TEXT("WinbootDir")
+#define REGSTR_VAL_WINDIR TEXT("WinDir")
+#define REGSTR_VAL_APPINSTPATH TEXT("AppInstallPath")
+#define REGSTR_PATH_EBD REGSTR_PATH_SETUP REGSTR_KEY_SETUP TEXT("\\EBD")
+#define REGSTR_KEY_EBDFILESLOCAL TEXT("EBDFilesLocale")
+#define REGSTR_KEY_EBDFILESKEYBOARD TEXT("EBDFilesKeyboard")
+#define REGSTR_KEY_EBDAUTOEXECBATLOCAL TEXT("EBDAutoexecBatLocale")
+#define REGSTR_KEY_EBDAUTOEXECBATKEYBOARD TEXT("EBDAutoexecBatKeyboard")
+#define REGSTR_KEY_EBDCONFIGSYSLOCAL TEXT("EBDConfigSysLocale")
+#define REGSTR_KEY_EBDCONFIGSYSKEYBOARD TEXT("EBDConfigSysKeyboard")
+#define REGSTR_VAL_MSDOSMODE TEXT("MSDOSMode")
+#define REGSTR_VAL_MSDOSMODEDISCARD TEXT("Discard")
+#define REGSTR_VAL_DOSOPTGLOBALFLAGS TEXT("GlobalFlags")
+#define DOSOPTGF_DEFCLEAN 1
+#define REGSTR_VAL_DOSOPTFLAGS TEXT("Flags")
+#define REGSTR_VAL_OPTORDER TEXT("Order")
+#define REGSTR_VAL_CONFIGSYS TEXT("Config.Sys")
+#define REGSTR_VAL_AUTOEXEC TEXT("Autoexec.Bat")
+#define REGSTR_VAL_STDDOSOPTION TEXT("StdOption")
+#define REGSTR_VAL_DOSOPTTIP TEXT("TipText")
+#define DOSOPTF_DEFAULT 1
+#define DOSOPTF_SUPPORTED 2
+#define DOSOPTF_ALWAYSUSE 4
+#define DOSOPTF_USESPMODE 8
+#define DOSOPTF_PROVIDESUMB 16
+#define DOSOPTF_NEEDSETUP 32
+#define DOSOPTF_INDOSSTART 64
+#define DOSOPTF_MULTIPLE 128
+#define SUF_FIRSTTIME 1
+#define SUF_EXPRESS 2
+#define SUF_BATCHINF 4
+#define SUF_CLEAN 8
+#define SUF_INSETUP 16
+#define SUF_NETSETUP 32
+#define SUF_NETHDBOOT 64
+#define SUF_NETRPLBOOT 128
+#define SUF_SBSCOPYOK 256
+#define REGSTR_VAL_DOSPAGER TEXT("DOSPager")
+#define REGSTR_VAL_VXDGROUPS TEXT("VXDGroups")
+#define REGSTR_VAL_VPOWERDFLAGS TEXT("Flags")
+#define VPDF_DISABLEPWRMGMT 1
+#define VPDF_FORCEAPM10MODE 2
+#define VPDF_SKIPINTELSLCHECK 4
+#define VPDF_DISABLEPWRSTATUSPOLL 8
+#define REGSTR_VAL_WORKGROUP TEXT("Workgroup")
+#define REGSTR_VAL_DIRECTHOST TEXT("DirectHost")
+#define REGSTR_VAL_FILESHARING TEXT("FileSharing")
+#define REGSTR_VAL_PRINTSHARING TEXT("PrintSharing")
+#define REGSTR_VAL_FIRSTNETDRIVE TEXT("FirstNetworkDrive")
+#define REGSTR_VAL_MAXCONNECTIONS TEXT("MaxConnections")
+#define REGSTR_VAL_APISUPPORT TEXT("APISupport")
+#define REGSTR_VAL_MAXRETRY TEXT("MaxRetry")
+#define REGSTR_VAL_MINRETRY TEXT("MinRetry")
+#define REGSTR_VAL_SUPPORTLFN TEXT("SupportLFN")
+#define REGSTR_VAL_SUPPORTBURST TEXT("SupportBurst")
+#define REGSTR_VAL_SUPPORTTUNNELLING TEXT("SupportTunnelling")
+#define REGSTR_VAL_FULLTRACE TEXT("FullTrace")
+#define REGSTR_VAL_READCACHING TEXT("ReadCaching")
+#define REGSTR_VAL_SHOWDOTS TEXT("ShowDots")
+#define REGSTR_VAL_GAPTIME TEXT("GapTime")
+#define REGSTR_VAL_SEARCHMODE TEXT("SearchMode")
+#define REGSTR_VAL_SHELLVERSION TEXT("ShellVersion")
+#define REGSTR_VAL_MAXLIP TEXT("MaxLIP")
+#define REGSTR_VAL_PRESERVECASE TEXT("PreserveCase")
+#define REGSTR_VAL_OPTIMIZESFN TEXT("OptimizeSFN")
+#define REGSTR_VAL_NCP_BROWSEMASTER TEXT("BrowseMaster")
+#define REGSTR_VAL_NCP_USEPEERBROWSING TEXT("Use_PeerBrowsing")
+#define REGSTR_VAL_NCP_USESAP TEXT("Use_Sap")
+#define REGSTR_VAL_WIN31FILESYSTEM TEXT("Win31FileSystem")
+#define REGSTR_VAL_PRESERVELONGNAMES TEXT("PreserveLongNames")
+#define REGSTR_VAL_DRIVEWRITEBEHIND TEXT("DriveWriteBehind")
+#define REGSTR_VAL_ASYNCFILECOMMIT TEXT("AsyncFileCommit")
+#define REGSTR_VAL_PATHCACHECOUNT TEXT("PathCache")
+#define REGSTR_VAL_NAMECACHECOUNT TEXT("NameCache")
+#define REGSTR_VAL_CONTIGFILEALLOC TEXT("ContigFileAllocSize")
+#define REGSTR_VAL_VOLIDLETIMEOUT TEXT("VolumeIdleTimeout")
+#define REGSTR_VAL_BUFFIDLETIMEOUT TEXT("BufferIdleTimeout")
+#define REGSTR_VAL_BUFFAGETIMEOUT TEXT("BufferAgeTimeout")
+#define REGSTR_VAL_NAMENUMERICTAIL TEXT("NameNumericTail")
+#define REGSTR_VAL_READAHEADTHRESHOLD TEXT("ReadAheadThreshold")
+#define REGSTR_VAL_DOUBLEBUFFER TEXT("DoubleBuffer")
+#define REGSTR_VAL_SOFTCOMPATMODE TEXT("SoftCompatMode")
+#define REGSTR_VAL_DRIVESPINDOWN TEXT("DriveSpinDown")
+#define REGSTR_VAL_FORCEPMIO TEXT("ForcePMIO")
+#define REGSTR_VAL_FORCERMIO TEXT("ForceRMIO")
+#define REGSTR_VAL_LASTBOOTPMDRVS TEXT("LastBootPMDrvs")
+#define REGSTR_VAL_VIRTUALHDIRQ TEXT("VirtualHDIRQ")
+#define REGSTR_VAL_SRVNAMECACHECOUNT TEXT("ServerNameCacheMax")
+#define REGSTR_VAL_SRVNAMECACHE TEXT("ServerNameCache")
+#define REGSTR_VAL_SRVNAMECACHENETPROV TEXT("ServerNameCacheNumNets")
+#define REGSTR_VAL_AUTOMOUNT TEXT("AutoMountDrives")
+#define REGSTR_VAL_COMPRESSIONMETHOD TEXT("CompressionAlgorithm")
+#define REGSTR_VAL_COMPRESSIONTHRESHOLD TEXT("CompressionThreshold")
+#define REGSTR_VAL_CDCACHESIZE TEXT("CacheSize")
+#define REGSTR_VAL_CDPREFETCH TEXT("Prefetch")
+#define REGSTR_VAL_CDPREFETCHTAIL TEXT("PrefetchTail")
+#define REGSTR_VAL_CDRAWCACHE TEXT("RawCache")
+#define REGSTR_VAL_CDEXTERRORS TEXT("ExtendedErrors")
+#define REGSTR_VAL_CDSVDSENSE TEXT("SVDSense")
+#define REGSTR_VAL_CDSHOWVERSIONS TEXT("ShowVersions")
+#define REGSTR_VAL_CDCOMPATNAMES TEXT("MSCDEXCompatNames")
+#define REGSTR_VAL_CDNOREADAHEAD TEXT("NoReadAhead")
+#define REGSTR_VAL_SCSI TEXT("SCSI\\")
+#define REGSTR_VAL_ESDI TEXT("ESDI\\")
+#define REGSTR_VAL_FLOP TEXT("FLOP\\")
+#define REGSTR_VAL_DISK TEXT("GenDisk")
+#define REGSTR_VAL_CDROM TEXT("GenCD")
+#define REGSTR_VAL_TAPE TEXT("TAPE")
+#define REGSTR_VAL_SCANNER TEXT("SCANNER")
+#define REGSTR_VAL_FLOPPY TEXT("FLOPPY")
+#define REGSTR_VAL_SCSITID TEXT("SCSITargetID")
+#define REGSTR_VAL_SCSILUN TEXT("SCSILUN")
+#define REGSTR_VAL_REVLEVEL TEXT("RevisionLevel")
+#define REGSTR_VAL_PRODUCTID TEXT("ProductId")
+#define REGSTR_VAL_PRODUCTTYPE TEXT("ProductType")
+#define REGSTR_VAL_DEVTYPE TEXT("DeviceType")
+#define REGSTR_VAL_REMOVABLE TEXT("Removable")
+#define REGSTR_VAL_CURDRVLET TEXT("CurrentDriveLetterAssignment")
+#define REGSTR_VAL_USRDRVLET TEXT("UserDriveLetterAssignment")
+#define REGSTR_VAL_SYNCDATAXFER TEXT("SyncDataXfer")
+#define REGSTR_VAL_AUTOINSNOTE TEXT("AutoInsertNotification")
+#define REGSTR_VAL_DISCONNECT TEXT("Disconnect")
+#define REGSTR_VAL_INT13 TEXT("Int13")
+#define REGSTR_VAL_PMODE_INT13 TEXT("PModeInt13")
+#define REGSTR_VAL_USERSETTINGS TEXT("AdapterSettings")
+#define REGSTR_VAL_NOIDE TEXT("NoIDE")
+#define REGSTR_VAL_DISKCLASSNAME TEXT("DiskDrive")
+#define REGSTR_VAL_CDROMCLASSNAME TEXT("CDROM")
+#define REGSTR_VAL_FORCELOAD TEXT("ForceLoadPD")
+#define REGSTR_VAL_FORCEFIFO TEXT("ForceFIFO")
+#define REGSTR_VAL_FORCECL TEXT("ForceChangeLine")
+#define REGSTR_VAL_NOUSECLASS TEXT("NoUseClass")
+#define REGSTR_VAL_NOINSTALLCLASS TEXT("NoInstallClass")
+#define REGSTR_VAL_NODISPLAYCLASS TEXT("NoDisplayClass")
+#define REGSTR_VAL_SILENTINSTALL TEXT("SilentInstall")
+#define REGSTR_KEY_PCMCIA_CLASS TEXT("PCMCIA")
+#define REGSTR_KEY_SCSI_CLASS TEXT("SCSIAdapter")
+#define REGSTR_KEY_PORTS_CLASS TEXT("ports")
+#define REGSTR_KEY_MEDIA_CLASS TEXT("MEDIA")
+#define REGSTR_KEY_DISPLAY_CLASS TEXT("Display")
+#define REGSTR_KEY_KEYBOARD_CLASS TEXT("Keyboard")
+#define REGSTR_KEY_MOUSE_CLASS TEXT("Mouse")
+#define REGSTR_KEY_MONITOR_CLASS TEXT("Monitor")
+#define REGSTR_VAL_PCMCIA_OPT TEXT("Options")
+#define PCMCIA_OPT_HAVE_SOCKET 1
+#define PCMCIA_OPT_AUTOMEM 4
+#define PCMCIA_OPT_NO_SOUND 8
+#define PCMCIA_OPT_NO_AUDIO 16
+#define PCMCIA_OPT_NO_APMREMOVE 32
+#define REGSTR_VAL_PCMCIA_MEM TEXT("Memory")
+#define PCMCIA_DEF_MEMBEGIN 0xC0000
+#define PCMCIA_DEF_MEMEND 0xFFFFFF
+#define PCMCIA_DEF_MEMLEN 0x1000
+#define REGSTR_VAL_PCMCIA_ALLOC TEXT("AllocMemWin")
+#define REGSTR_VAL_PCMCIA_ATAD TEXT("ATADelay")
+#define REGSTR_VAL_PCMCIA_SIZ TEXT("MinRegionSize")
+#define PCMCIA_DEF_MIN_REGION 0x10000
+#define REGSTR_VAL_P1284MDL TEXT("Model")
+#define REGSTR_VAL_P1284MFG TEXT("Manufacturer")
+#define REGSTR_VAL_ISAPNP TEXT("ISAPNP")
+#define REGSTR_VAL_ISAPNP_RDP_OVERRIDE TEXT("RDPOverRide")
+#define REGSTR_VAL_PCI TEXT("PCI")
+#define REGSTR_PCI_OPTIONS TEXT("Options")
+#define REGSTR_PCI_DUAL_IDE TEXT("PCIDualIDE")
+#define PCI_OPTIONS_USE_BIOS 1
+#define PCI_OPTIONS_USE_IRQ_STEERING 2
+#define PCI_FLAG_NO_VIDEO_IRQ 1
+#define PCI_FLAG_PCMCIA_WANT_IRQ 2
+#define PCI_FLAG_DUAL_IDE 4
+#define PCI_FLAG_NO_ENUM_AT_ALL 8
+#define PCI_FLAG_ENUM_NO_RESOURCE 16
+#define PCI_FLAG_NEED_DWORD_ACCESS 32
+#define PCI_FLAG_SINGLE_FUNCTION 64
+#define PCI_FLAG_ALWAYS_ENABLED 128
+#define PCI_FLAG_IS_IDE 256
+#define PCI_FLAG_IS_VIDEO 512
+#define PCI_FLAG_FAIL_START 1024
+#define REGSTR_KEY_CRASHES TEXT("Crashes")
+#define REGSTR_KEY_DANGERS TEXT("Dangers")
+#define REGSTR_KEY_DETMODVARS TEXT("DetModVars")
+#define REGSTR_KEY_NDISINFO TEXT("NDISInfo")
+#define REGSTR_VAL_PROTINIPATH TEXT("ProtIniPath")
+#define REGSTR_VAL_RESOURCES TEXT("Resources")
+#define REGSTR_VAL_CRASHFUNCS TEXT("CrashFuncs")
+#define REGSTR_VAL_CLASS TEXT("Class")
+#define REGSTR_VAL_DEVDESC TEXT("DeviceDesc")
+#define REGSTR_VAL_BOOTCONFIG TEXT("BootConfig")
+#define REGSTR_VAL_DETFUNC TEXT("DetFunc")
+#define REGSTR_VAL_DETFLAGS TEXT("DetFlags")
+#define REGSTR_VAL_COMPATIBLEIDS TEXT("CompatibleIDs")
+#define REGSTR_VAL_DETCONFIG TEXT("DetConfig")
+#define REGSTR_VAL_VERIFYKEY TEXT("VerifyKey")
+#define REGSTR_VAL_COMINFO TEXT("ComInfo")
+#define REGSTR_VAL_INFNAME TEXT("InfName")
+#define REGSTR_VAL_CARDSPECIFIC TEXT("CardSpecific")
+#define REGSTR_VAL_NETOSTYPE TEXT("NetOSType")
+#define REGSTR_DATA_NETOS_NDIS TEXT("NDIS")
+#define REGSTR_DATA_NETOS_ODI TEXT("ODI")
+#define REGSTR_DATA_NETOS_IPX TEXT("IPX")
+#define REGSTR_VAL_MFG TEXT("Mfg")
+#define REGSTR_VAL_SCAN_ONLY_FIRST TEXT("ScanOnlyFirstDrive")
+#define REGSTR_VAL_SHARE_IRQ TEXT("ForceIRQSharing")
+#define REGSTR_VAL_NONSTANDARD_ATAPI TEXT("NonStandardATAPI")
+#define REGSTR_VAL_IDE_FORCE_SERIALIZE TEXT("ForceSerialization")
+#define REGSTR_VAL_MAX_HCID_LEN 1024
+#define REGSTR_VAL_HWREV TEXT("HWRevision")
+#define REGSTR_VAL_ENABLEINTS TEXT("EnableInts")
+#define REGDF_NOTDETIO 1
+#define REGDF_NOTDETMEM 2
+#define REGDF_NOTDETIRQ 4
+#define REGDF_NOTDETDMA 8
+#define REGDF_NOTDETALL (REGDF_NOTDETIO | REGDF_NOTDETMEM | REGDF_NOTDETIRQ | REGDF_NOTDETDMA)
+#define REGDF_NEEDFULLCONFIG 16
+#define REGDF_GENFORCEDCONFIG 32
+#define REGDF_NODETCONFIG 0x8000
+#define REGDF_CONFLICTIO 0x10000
+#define REGDF_CONFLICTMEM 0x20000
+#define REGDF_CONFLICTIRQ 0x40000
+#define REGDF_CONFLICTDMA 0x80000
+#define REGDF_CONFLICTALL (REGDF_CONFLICTIO | REGDF_CONFLICTMEM | REGDF_CONFLICTIRQ | REGDF_CONFLICTDMA)
+#define REGDF_MAPIRQ2TO9 0x100000
+#define REGDF_NOTVERIFIED 0x80000000
+#define REGSTR_VAL_APMBIOSVER TEXT("APMBiosVer")
+#define REGSTR_VAL_APMFLAGS TEXT("APMFlags")
+#define REGSTR_VAL_SLSUPPORT TEXT("SLSupport")
+#define REGSTR_VAL_MACHINETYPE TEXT("MachineType")
+#define REGSTR_VAL_SETUPMACHINETYPE TEXT("SetupMachineType")
+#define REGSTR_MACHTYPE_UNKNOWN TEXT("Unknown")
+#define REGSTR_MACHTYPE_IBMPC TEXT("IBM PC")
+#define REGSTR_MACHTYPE_IBMPCJR TEXT("IBM PCjr")
+#define REGSTR_MACHTYPE_IBMPCCONV TEXT("IBM PC Convertible")
+#define REGSTR_MACHTYPE_IBMPCXT TEXT("IBM PC/XT")
+#define REGSTR_MACHTYPE_IBMPCXT_286 TEXT("IBM PC/XT 286")
+#define REGSTR_MACHTYPE_IBMPCAT TEXT("IBM PC/AT")
+#define REGSTR_MACHTYPE_IBMPS2_25 TEXT("IBM PS/2-25")
+#define REGSTR_MACHTYPE_IBMPS2_30_286 TEXT("IBM PS/2-30 286")
+#define REGSTR_MACHTYPE_IBMPS2_30 TEXT("IBM PS/2-30")
+#define REGSTR_MACHTYPE_IBMPS2_50 TEXT("IBM PS/2-50")
+#define REGSTR_MACHTYPE_IBMPS2_50Z TEXT("IBM PS/2-50Z")
+#define REGSTR_MACHTYPE_IBMPS2_55SX TEXT("IBM PS/2-55SX")
+#define REGSTR_MACHTYPE_IBMPS2_60 TEXT("IBM PS/2-60")
+#define REGSTR_MACHTYPE_IBMPS2_65SX TEXT("IBM PS/2-65SX")
+#define REGSTR_MACHTYPE_IBMPS2_70 TEXT("IBM PS/2-70")
+#define REGSTR_MACHTYPE_IBMPS2_P70 TEXT("IBM PS/2-P70")
+#define REGSTR_MACHTYPE_IBMPS2_70_80 TEXT("IBM PS/2-70/80")
+#define REGSTR_MACHTYPE_IBMPS2_80 TEXT("IBM PS/2-80")
+#define REGSTR_MACHTYPE_IBMPS2_90 TEXT("IBM PS/2-90")
+#define REGSTR_MACHTYPE_IBMPS1 TEXT("IBM PS/1")
+#define REGSTR_MACHTYPE_PHOENIX_PCAT TEXT("Phoenix PC/AT Compatible")
+#define REGSTR_MACHTYPE_HP_VECTRA TEXT("HP Vectra")
+#define REGSTR_MACHTYPE_ATT_PC TEXT("AT&T PC")
+#define REGSTR_MACHTYPE_ZENITH_PC TEXT("Zenith PC")
+#define REGSTR_VAL_APMMENUSUSPEND TEXT("APMMenuSuspend")
+#define APMMENUSUSPEND_DISABLED 0
+#define APMMENUSUSPEND_ENABLED 1
+#define APMMENUSUSPEND_UNDOCKED 2
+#define APMMENUSUSPEND_NOCHANGE 128
+#define REGSTR_VAL_BUSTYPE TEXT("BusType")
+#define REGSTR_VAL_CPU TEXT("CPU")
+#define REGSTR_VAL_NDP TEXT("NDP")
+#define REGSTR_VAL_PNPBIOSVER TEXT("PnPBIOSVer")
+#define REGSTR_VAL_PNPSTRUCOFFSET TEXT("PnPStrucOffset")
+#define REGSTR_VAL_PCIBIOSVER TEXT("PCIBIOSVer")
+#define REGSTR_VAL_HWMECHANISM TEXT("HWMechanism")
+#define REGSTR_VAL_LASTPCIBUSNUM TEXT("LastPCIBusNum")
+#define REGSTR_VAL_CONVMEM TEXT("ConvMem")
+#define REGSTR_VAL_EXTMEM TEXT("ExtMem")
+#define REGSTR_VAL_COMPUTERNAME TEXT("ComputerName")
+#define REGSTR_VAL_BIOSNAME TEXT("BIOSName")
+#define REGSTR_VAL_BIOSVERSION TEXT("BIOSVersion")
+#define REGSTR_VAL_BIOSDATE TEXT("BIOSDate")
+#define REGSTR_VAL_MODEL TEXT("Model")
+#define REGSTR_VAL_SUBMODEL TEXT("Submodel")
+#define REGSTR_VAL_REVISION TEXT("Revision")
+#define REGSTR_VAL_FIFODEPTH TEXT("FIFODepth")
+#define REGSTR_VAL_RDINTTHRESHOLD TEXT("RDIntThreshold")
+#define REGSTR_VAL_WRINTTHRESHOLD TEXT("WRIntThreshold")
+#define REGSTR_VAL_PRIORITY TEXT("Priority")
+#define REGSTR_VAL_DRIVER TEXT("Driver")
+#define REGSTR_VAL_FUNCDESC TEXT("FunctionDesc")
+#define REGSTR_VAL_FORCEDCONFIG TEXT("ForcedConfig")
+#define REGSTR_VAL_CONFIGFLAGS TEXT("ConfigFlags")
+#define REGSTR_VAL_CSCONFIGFLAGS TEXT("CSConfigFlags")
+#define CONFIGFLAG_DISABLED 1
+#define CONFIGFLAG_REMOVED 2
+#define CONFIGFLAG_MANUAL_INSTALL 4
+#define CONFIGFLAG_IGNORE_BOOT_LC 8
+#define CONFIGFLAG_NET_BOOT 16
+#define CONFIGFLAG_REINSTALL 32
+#define CONFIGFLAG_FAILEDINSTALL 64
+#define CONFIGFLAG_CANTSTOPACHILD 128
+#define CONFIGFLAG_OKREMOVEROM 256
+#define CONFIGFLAG_NOREMOVEEXIT 512
+#define CSCONFIGFLAG_BITS 7
+#define CSCONFIGFLAG_DISABLED 1
+#define CSCONFIGFLAG_DO_NOT_CREATE 2
+#define CSCONFIGFLAG_DO_NOT_START 4
+#define DMSTATEFLAG_APPLYTOALL 1
+#define REGSTR_VAL_ROOT_DEVNODE TEXT("HTREE\\ROOT\\0")
+#define REGSTR_VAL_RESERVED_DEVNODE TEXT("HTREE\\RESERVED\\0")
+#define REGSTR_PATH_READDATAPORT REGSTR_KEY_ISAENUM TEXT("\\ReadDataPort\\0")
+#define REGSTR_PATH_MULTI_FUNCTION TEXT("MF")
+#define REGSTR_VAL_RESOURCE_MAP TEXT("ResourceMap")
+#define REGSTR_PATH_CHILD_PREFIX TEXT("Child")
+#define NUM_RESOURCE_MAP 256
+#define REGSTR_VAL_MF_FLAGS TEXT("MFFlags")
+#define MF_FLAGS_EVEN_IF_NO_RESOURCE 1
+#define MF_FLAGS_NO_CREATE_IF_NO_RESOURCE 2
+#define MF_FLAGS_FILL_IN_UNKNOWN_RESOURCE 4
+#define MF_FLAGS_CREATE_BUT_NO_SHOW_DISABLED 8
+#define EISAFLAG_NO_IO_MERGE 1
+#define EISAFLAG_SLOT_IO_FIRST 2
+#define EISA_NO_MAX_FUNCTION 0xFF
+#define NUM_EISA_RANGES 4
+#define REGSTR_VAL_DRVDESC TEXT("DriverDesc")
+#define REGSTR_VAL_DEVLOADER TEXT("DevLoader")
+#define REGSTR_VAL_STATICVXD TEXT("StaticVxD")
+#define REGSTR_VAL_PROPERTIES TEXT("Properties")
+#define REGSTR_VAL_MANUFACTURER TEXT("Manufacturer")
+#define REGSTR_VAL_EXISTS TEXT("Exists")
+#define REGSTR_VAL_CMENUMFLAGS TEXT("CMEnumFlags")
+#define REGSTR_VAL_CMDRIVFLAGS TEXT("CMDrivFlags")
+#define REGSTR_VAL_ENUMERATOR TEXT("Enumerator")
+#define REGSTR_VAL_DEVICEDRIVER TEXT("DeviceDriver")
+#define REGSTR_VAL_PORTNAME TEXT("PortName")
+#define REGSTR_VAL_INFPATH TEXT("InfPath")
+#define REGSTR_VAL_INFSECTION TEXT("InfSection")
+#define REGSTR_VAL_POLLING TEXT("Polling")
+#define REGSTR_VAL_DONTLOADIFCONFLICT TEXT("DontLoadIfConflict")
+#define REGSTR_VAL_PORTSUBCLASS TEXT("PortSubClass")
+#define REGSTR_VAL_NETCLEAN TEXT("NetClean")
+#define REGSTR_VAL_IDE_NO_SERIALIZE TEXT("IDENoSerialize")
+#define REGSTR_VAL_NOCMOSORFDPT TEXT("NoCMOSorFDPT")
+#define REGSTR_VAL_COMVERIFYBASE TEXT("COMVerifyBase")
+#define REGSTR_KEY_OVERRIDE TEXT("Override")
+#define REGSTR_VAL_CONFIGMG TEXT("CONFIGMG")
+#define REGSTR_VAL_SYSDM TEXT("SysDM")
+#define REGSTR_VAL_SYSDMFUNC TEXT("SysDMFunc")
+#define REGSTR_VAL_PRIVATE TEXT("Private")
+#define REGSTR_VAL_PRIVATEFUNC TEXT("PrivateFunc")
+#define REGSTR_VAL_DETECT TEXT("Detect")
+#define REGSTR_VAL_DETECTFUNC TEXT("DetectFunc")
+#define REGSTR_VAL_ASKFORCONFIG TEXT("AskForConfig")
+#define REGSTR_VAL_ASKFORCONFIGFUNC TEXT("AskForConfigFunc")
+#define REGSTR_VAL_WAITFORUNDOCK TEXT("WaitForUndock")
+#define REGSTR_VAL_WAITFORUNDOCKFUNC TEXT("WaitForUndockFunc")
+#define REGSTR_VAL_REMOVEROMOKAY TEXT("RemoveRomOkay")
+#define REGSTR_VAL_REMOVEROMOKAYFUNC TEXT("RemoveRomOkayFunc")
+#define REGSTR_VAL_CURCONFIG TEXT("CurrentConfig")
+#define REGSTR_VAL_FRIENDLYNAME TEXT("FriendlyName")
+#define REGSTR_VAL_CURRENTCONFIG TEXT("CurrentConfig")
+#define REGSTR_VAL_MAP TEXT("Map")
+#define REGSTR_VAL_ID TEXT("CurrentID")
+#define REGSTR_VAL_DOCKED TEXT("CurrentDockedState")
+#define REGSTR_VAL_CHECKSUM TEXT("CurrentChecksum")
+#define REGSTR_VAL_HWDETECT TEXT("HardwareDetect")
+#define REGSTR_VAL_INHIBITRESULTS TEXT("InhibitResults")
+#define REGSTR_VAL_PROFILEFLAGS TEXT("ProfileFlags")
+#define REGSTR_KEY_PCMCIA TEXT("PCMCIA\\")
+#define REGSTR_KEY_PCUNKNOWN TEXT("UNKNOWN_MANUFACTURER")
+#define REGSTR_VAL_PCSSDRIVER TEXT("Driver")
+#define REGSTR_KEY_PCMTD TEXT("MTD-")
+#define REGSTR_VAL_PCMTDRIVER TEXT("MTD")
+#define REGSTR_VAL_HARDWAREID TEXT("HardwareID")
+#define REGSTR_VAL_INSTALLER TEXT("Installer")
+#define REGSTR_VAL_INSICON TEXT("Icon")
+#define REGSTR_VAL_ENUMPROPPAGES TEXT("EnumPropPages")
+#define REGSTR_VAL_BASICPROPERTIES TEXT("BasicProperties")
+#define REGSTR_VAL_PRIVATEPROBLEM TEXT("PrivateProblem")
+#define REGSTR_KEY_CURRENT TEXT("Current")
+#define REGSTR_KEY_DEFAULT TEXT("Default")
+#define REGSTR_KEY_MODES TEXT("Modes")
+#define REGSTR_VAL_MODE TEXT("Mode")
+#define REGSTR_VAL_BPP TEXT("BPP")
+#define REGSTR_VAL_HRES TEXT("HRes")
+#define REGSTR_VAL_VRES TEXT("VRes")
+#define REGSTR_VAL_FONTSIZE TEXT("FontSize")
+#define REGSTR_VAL_DRV TEXT("drv")
+#define REGSTR_VAL_GRB TEXT("grb")
+#define REGSTR_VAL_VDD TEXT("vdd")
+#define REGSTR_VAL_VER TEXT("Ver")
+#define REGSTR_VAL_MAXRES TEXT("MaxResolution")
+#define REGSTR_VAL_DPMS TEXT("DPMS")
+#define REGSTR_VAL_RESUMERESET TEXT("ResumeReset")
+#define REGSTR_VAL_DESCRIPTION TEXT("Description")
+#define REGSTR_KEY_SYSTEM TEXT("System")
+#define REGSTR_KEY_USER TEXT("User")
+#define REGSTR_VAL_DPI TEXT("dpi")
+#define REGSTR_VAL_PCICOPTIONS TEXT("PCICOptions")
+#ifndef NEC_98
+#define PCIC_DEFAULT_IRQMASK 0x4EB8
+#else
+#define PCIC_DEFAULT_IRQMASK 0x1468
+#endif
+#define PCIC_DEFAULT_NUMSOCKETS 0
+#define REGSTR_VAL_PCICIRQMAP TEXT("PCICIRQMap")
+#define REGSTR_PATH_APPEARANCE TEXT("Control Panel\\Appearance")
+#define REGSTR_PATH_LOOKSCHEMES TEXT("Control Panel\\Appearance\\Schemes")
+#define REGSTR_VAL_CUSTOMCOLORS TEXT("CustomColors")
+#define REGSTR_PATH_SCREENSAVE TEXT("Control Panel\\Desktop")
+#define REGSTR_VALUE_USESCRPASSWORD TEXT("ScreenSaveUsePassword")
+#define REGSTR_VALUE_SCRPASSWORD TEXT("ScreenSave_Data")
+#define REGSTR_VALUE_LOWPOWERTIMEOUT TEXT("ScreenSaveLowPowerTimeout")
+#define REGSTR_VALUE_POWEROFFTIMEOUT TEXT("ScreenSavePowerOffTimeout")
+#define REGSTR_VALUE_LOWPOWERACTIVE TEXT("ScreenSaveLowPowerActive")
+#define REGSTR_VALUE_POWEROFFACTIVE TEXT("ScreenSavePowerOffActive")
+#define REGSTR_PATH_WINDOWSAPPLETS TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets")
+#define REGSTR_PATH_SYSTRAY TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\SysTray")
+#define REGSTR_VAL_SYSTRAYSVCS TEXT("Services")
+#define REGSTR_VAL_SYSTRAYBATFLAGS TEXT("PowerFlags")
+#define REGSTR_VAL_SYSTRAYPCCARDFLAGS TEXT("PCMCIAFlags")
+#define REGSTR_PATH_NETWORK_USERSETTINGS TEXT("Network")
+#define REGSTR_KEY_NETWORK_PERSISTENT TEXT("\\Persistent")
+#define REGSTR_KEY_NETWORK_RECENT TEXT("\\Recent")
+#define REGSTR_VAL_REMOTE_PATH TEXT("RemotePath")
+#define REGSTR_VAL_USER_NAME TEXT("UserName")
+#define REGSTR_VAL_PROVIDER_NAME TEXT("ProviderName")
+#define REGSTR_VAL_CONNECTION_TYPE TEXT("ConnectionType")
+#define REGSTR_VAL_UPGRADE TEXT("Upgrade")
+#define REGSTR_KEY_LOGON TEXT("\\Logon")
+#define REGSTR_VAL_MUSTBEVALIDATED TEXT("MustBeValidated")
+#define REGSTR_VAL_RUNLOGINSCRIPT TEXT("ProcessLoginScript")
+#define REGSTR_KEY_NETWORKPROVIDER TEXT("\\NetworkProvider")
+#define REGSTR_PATH_NW32NETPROVIDER REGSTR_PATH_SERVICES TEXT("\\NWNP32" REGSTR_KEY_NETWORKPROVIDER
+#define REGSTR_PATH_MS32NETPROVIDER REGSTR_PATH_SERVICES TEXT("\\MSNP32" REGSTR_KEY_NETWORKPROVIDER
+#define REGSTR_VAL_AUTHENT_AGENT TEXT("AuthenticatingAgent")
+#define REGSTR_VAL_PREFREDIR TEXT("PreferredRedir")
+#define REGSTR_VAL_AUTOSTART TEXT("AutoStart")
+#define REGSTR_VAL_AUTOLOGON TEXT("AutoLogon")
+#define REGSTR_VAL_NETCARD TEXT("Netcard")
+#define REGSTR_VAL_TRANSPORT TEXT("Transport")
+#define REGSTR_VAL_DYNAMIC TEXT("Dynamic")
+#define REGSTR_VAL_TRANSITION TEXT("Transition")
+#define REGSTR_VAL_STATICDRIVE TEXT("StaticDrive")
+#define REGSTR_VAL_LOADHI TEXT("LoadHi")
+#define REGSTR_VAL_LOADRMDRIVERS TEXT("LoadRMDrivers")
+#define REGSTR_VAL_SETUPN TEXT("SetupN")
+#define REGSTR_VAL_SETUPNPATH TEXT("SetupNPath")
+#define REGSTR_VAL_WRKGRP_FORCEMAPPING TEXT("WrkgrpForceMapping")
+#define REGSTR_VAL_WRKGRP_REQUIRED TEXT("WrkgrpRequired")
+#define REGSTR_PATH_CURRENT_CONTROL_SET TEXT("System\\CurrentControlSet\\Control")
+#define REGSTR_VAL_CURRENT_USER TEXT("Current User")
+#define REGSTR_PATH_PWDPROVIDER TEXT("System\\CurrentControlSet\\Control\\PwdProvider")
+#define REGSTR_VAL_PWDPROVIDER_PATH TEXT("ProviderPath")
+#define REGSTR_VAL_PWDPROVIDER_DESC TEXT("Description")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEPWD TEXT("ChangePassword")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEPWDHWND TEXT("ChangePasswordHwnd")
+#define REGSTR_VAL_PWDPROVIDER_GETPWDSTATUS TEXT("GetPasswordStatus")
+#define REGSTR_VAL_PWDPROVIDER_ISNP TEXT("NetworkProvider")
+#define REGSTR_VAL_PWDPROVIDER_CHANGEORDER TEXT("ChangeOrder")
+#define REGSTR_PATH_POLICIES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Policies")
+#define REGSTR_PATH_UPDATE TEXT("System\\CurrentControlSet\\Control\\Update")
+#define REGSTR_VALUE_ENABLE TEXT("Enable")
+#define REGSTR_VALUE_VERBOSE TEXT("Verbose")
+#define REGSTR_VALUE_NETPATH TEXT("NetworkPath")
+#define REGSTR_VALUE_DEFAULTLOC TEXT("UseDefaultNetLocation")
+#define REGSTR_KEY_NETWORK TEXT("Network")
+#define REGSTR_KEY_SYSTEM TEXT("System")
+#define REGSTR_KEY_PRINTERS TEXT("Printers")
+#define REGSTR_KEY_WINOLDAPP TEXT("WinOldApp")
+#define REGSTR_VAL_NOFILESHARING TEXT("NoFileSharing")
+#define REGSTR_VAL_NOPRINTSHARING TEXT("NoPrintSharing")
+#define REGSTR_VAL_NOFILESHARINGCTRL TEXT("NoFileSharingControl")
+#define REGSTR_VAL_NOPRINTSHARINGCTRL TEXT("NoPrintSharingControl")
+#define REGSTR_VAL_HIDESHAREPWDS TEXT("HideSharePwds")
+#define REGSTR_VAL_DISABLEPWDCACHING TEXT("DisablePwdCaching")
+#define REGSTR_VAL_ALPHANUMPWDS TEXT("AlphanumPwds")
+#define REGSTR_VAL_NETSETUP_DISABLE TEXT("NoNetSetup")
+#define REGSTR_VAL_NETSETUP_NOCONFIGPAGE TEXT("NoNetSetupConfigPage")
+#define REGSTR_VAL_NETSETUP_NOIDPAGE TEXT("NoNetSetupIDPage")
+#define REGSTR_VAL_NETSETUP_NOSECURITYPAGE TEXT("NoNetSetupSecurityPage")
+#define REGSTR_VAL_SYSTEMCPL_NOVIRTMEMPAGE TEXT("NoVirtMemPage")
+#define REGSTR_VAL_SYSTEMCPL_NODEVMGRPAGE TEXT("NoDevMgrPage")
+#define REGSTR_VAL_SYSTEMCPL_NOCONFIGPAGE TEXT("NoConfigPage")
+#define REGSTR_VAL_SYSTEMCPL_NOFILESYSPAGE TEXT("NoFileSysPage")
+#define REGSTR_VAL_DISPCPL_NODISPCPL TEXT("NoDispCPL")
+#define REGSTR_VAL_DISPCPL_NOBACKGROUNDPAGE TEXT("NoDispBackgroundPage")
+#define REGSTR_VAL_DISPCPL_NOSCRSAVPAGE TEXT("NoDispScrSavPage")
+#define REGSTR_VAL_DISPCPL_NOAPPEARANCEPAGE TEXT("NoDispAppearancePage")
+#define REGSTR_VAL_DISPCPL_NOSETTINGSPAGE TEXT("NoDispSettingsPage")
+#define REGSTR_VAL_SECCPL_NOSECCPL TEXT("NoSecCPL")
+#define REGSTR_VAL_SECCPL_NOPWDPAGE TEXT("NoPwdPage")
+#define REGSTR_VAL_SECCPL_NOADMINPAGE TEXT("NoAdminPage")
+#define REGSTR_VAL_SECCPL_NOPROFILEPAGE TEXT("NoProfilePage")
+#define REGSTR_VAL_PRINTERS_HIDETABS TEXT("NoPrinterTabs")
+#define REGSTR_VAL_PRINTERS_NODELETE TEXT("NoDeletePrinter")
+#define REGSTR_VAL_PRINTERS_NOADD TEXT("NoAddPrinter")
+#define REGSTR_VAL_WINOLDAPP_DISABLED TEXT("Disabled")
+#define REGSTR_VAL_WINOLDAPP_NOREALMODE TEXT("NoRealMode")
+#define REGSTR_VAL_NOENTIRENETWORK TEXT("NoEntireNetwork")
+#define REGSTR_VAL_NOWORKGROUPCONTENTS TEXT("NoWorkgroupContents")
+#define REGSTR_VAL_MINPWDLEN TEXT("MinPwdLen")
+#define REGSTR_VAL_PWDEXPIRATION TEXT("PwdExpiration")
+#define REGSTR_VAL_WIN31PROVIDER TEXT("Win31Provider")
+#define REGSTR_VAL_DISABLEREGTOOLS TEXT("DisableRegistryTools")
+#define REGSTR_PATH_WINLOGON TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Winlogon")
+#define REGSTR_VAL_LEGALNOTICECAPTION TEXT("LegalNoticeCaption")
+#define REGSTR_VAL_LEGALNOTICETEXT TEXT("LegalNoticeText")
+#define REGSTR_VAL_RESTRICTRUN TEXT("RestrictRun")
+#define REGSTR_KEY_POL_USERS TEXT("Users")
+#define REGSTR_KEY_POL_COMPUTERS TEXT("Computers")
+#define REGSTR_KEY_POL_USERGROUPS TEXT("UserGroups")
+#define REGSTR_KEY_POL_DEFAULT TEXT(".default")
+#define REGSTR_KEY_POL_USERGROUPDATA TEXT("GroupData\\UserGroups\\Priority")
+#define REGSTR_PATH_TIMEZONE TEXT("System\\CurrentControlSet\\Control\\TimeZoneInformation")
+#define REGSTR_VAL_TZBIAS TEXT("Bias")
+#define REGSTR_VAL_TZDLTBIAS TEXT("DaylightBias")
+#define REGSTR_VAL_TZSTDBIAS TEXT("StandardBias")
+#define REGSTR_VAL_TZACTBIAS TEXT("ActiveTimeBias")
+#define REGSTR_VAL_TZDLTFLAG TEXT("DaylightFlag")
+#define REGSTR_VAL_TZSTDSTART TEXT("StandardStart")
+#define REGSTR_VAL_TZDLTSTART TEXT("DaylightStart")
+#define REGSTR_VAL_TZDLTNAME TEXT("DaylightName")
+#define REGSTR_VAL_TZSTDNAME TEXT("StandardName")
+#define REGSTR_VAL_TZNOCHANGESTART TEXT("NoChangeStart")
+#define REGSTR_VAL_TZNOCHANGEEND TEXT("NoChangeEnd")
+#define REGSTR_VAL_TZNOAUTOTIME TEXT("DisableAutoDaylightTimeSet")
+#define REGSTR_PATH_FLOATINGPOINTPROCESSOR TEXT("HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor")
+#define REGSTR_PATH_FLOATINGPOINTPROCESSOR0 TEXT("HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor\\0")
+#define REGSTR_PATH_COMPUTRNAME TEXT("System\\CurrentControlSet\\Control\\ComputerName\\ComputerName")
+#define REGSTR_VAL_COMPUTRNAME TEXT("ComputerName")
+#define REGSTR_PATH_SHUTDOWN TEXT("System\\CurrentControlSet\\Control\\Shutdown")
+#define REGSTR_VAL_FORCEREBOOT TEXT("ForceReboot")
+#define REGSTR_VAL_SETUPPROGRAMRAN TEXT("SetupProgramRan")
+#define REGSTR_VAL_DOES_POLLING TEXT("PollingSupportNeeded")
+#define REGSTR_PATH_KNOWNDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\KnownDLLs")
+#define REGSTR_PATH_KNOWN16DLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\Known16DLLs")
+#define REGSTR_PATH_CHECKVERDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\CheckVerDLLs")
+#define REGSTR_PATH_WARNVERDLLS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\WarnVerDLLs")
+#define REGSTR_PATH_HACKINIFILE TEXT("System\\CurrentControlSet\\Control\\SessionManager\\HackIniFiles")
+#define REGSTR_PATH_CHECKBADAPPS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\CheckBadApps")
+#define REGSTR_PATH_APPPATCH TEXT("System\\CurrentControlSet\\Control\\SessionManager\\AppPatches")
+#define REGSTR_PATH_KNOWNVXDS TEXT("System\\CurrentControlSet\\Control\\SessionManager\\KnownVxDs")
+#define REGSTR_VAL_UNINSTALLER_DISPLAYNAME TEXT("DisplayName")
+#define REGSTR_VAL_UNINSTALLER_COMMANDLINE TEXT("UninstallString")
+#define REGSTR_PATH_DESKTOP REGSTR_PATH_SCREENSAVE
+#define REGSTR_PATH_MOUSE TEXT("Control Panel\\Mouse")
+#define REGSTR_PATH_KEYBOARD TEXT("Control Panel\\Keyboard")
+#define REGSTR_PATH_COLORS TEXT("Control Panel\\Colors")
+#define REGSTR_PATH_SOUND TEXT("Control Panel\\Sound")
+#define REGSTR_PATH_METRICS TEXT("Control Panel\\Desktop\\WindowMetrics")
+#define REGSTR_PATH_ICONS TEXT("Control Panel\\Icons")
+#define REGSTR_PATH_CURSORS TEXT("Control Panel\\Cursors")
+#define REGSTR_PATH_CHECKDISK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive")
+#define REGSTR_PATH_CHECKDISKSET TEXT("Settings")
+#define REGSTR_PATH_CHECKDISKUDRVS TEXT("NoUnknownDDErrDrvs")
+#define REGSTR_PATH_FAULT TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Fault")
+#define REGSTR_VAL_FAULT_LOGFILE TEXT("LogFile")
+#define REGSTR_PATH_AEDEBUG TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug")
+#define REGSTR_VAL_AEDEBUG_DEBUGGER TEXT("Debugger")
+#define REGSTR_VAL_AEDEBUG_AUTO TEXT("Auto")
+#define REGSTR_PATH_GRPCONV TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\GrpConv")
+#define REGSTR_VAL_REGITEMDELETEMESSAGE TEXT("Removal Message")
+#define REGSTR_PATH_LASTCHECK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastCheck")
+#define REGSTR_PATH_LASTOPTIMIZE TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastOptimize")
+#define REGSTR_PATH_LASTBACKUP TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\LastBackup")
+#define REGSTR_PATH_CHKLASTCHECK TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastCheck")
+#define REGSTR_PATH_CHKLASTSURFAN TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Check Drive\\LastSurfaceAnalysis")
+#define DTRESULTOK 0
+#define DTRESULTFIX 1
+#define DTRESULTPROB 2
+#define DTRESULTPART 3
+#define REGSTR_KEY_SHARES TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Network\\LanMan")
+#define REGSTR_VAL_SHARES_FLAGS TEXT("Flags")
+#define REGSTR_VAL_SHARES_TYPE TEXT("Type")
+#define REGSTR_VAL_SHARES_PATH TEXT("Path")
+#define REGSTR_VAL_SHARES_REMARK TEXT("Remark")
+#define REGSTR_VAL_SHARES_RW_PASS TEXT("Parm1")
+#define REGSTR_VAL_SHARES_RO_PASS TEXT("Parm2")
+#define REGSTR_PATH_PRINT TEXT("System\\CurrentControlSet\\Control\\Print")
+#define REGSTR_PATH_PRINTERS TEXT("System\\CurrentControlSet\\Control\\Print\\Printers")
+#define REGSTR_PATH_PROVIDERS TEXT("System\\CurrentControlSet\\Control\\Print\\Providers")
+#define REGSTR_PATH_MONITORS TEXT("System\\CurrentControlSet\\Control\\Print\\Monitors")
+#define REGSTR_PATH_ENVIRONMENTS TEXT("System\\CurrentControlSet\\Control\\Print\\Environments")
+#define REGSTR_VAL_START_ON_BOOT TEXT("StartOnBoot")
+#define REGSTR_VAL_PRINTERS_MASK TEXT("PrintersMask")
+#define REGSTR_VAL_DOS_SPOOL_MASK TEXT("DOSSpoolMask")
+#define REGSTR_KEY_CURRENT_ENV TEXT("\\Windows 4.0")
+#define REGSTR_KEY_DRIVERS TEXT("\\Drivers")
+#define REGSTR_KEY_PRINT_PROC TEXT("\\Print Processors")
+#define REGSTR_PATH_EVENTLABELS TEXT("AppEvents\\EventLabels")
+#define REGSTR_PATH_SCHEMES TEXT("AppEvents\\Schemes")
+#define REGSTR_PATH_APPS REGSTR_PATH_SCHEMES TEXT("\\Apps")
+#define REGSTR_PATH_APPS_DEFAULT REGSTR_PATH_SCHEMES TEXT("\\Apps\\.Default")
+#define REGSTR_PATH_NAMES REGSTR_PATH_SCHEMES TEXT("\\Names")
+#define REGSTR_PATH_MULTIMEDIA REGSTR_PATH_SETUP TEXT("\\Multimedia")
+#define REGSTR_PATH_MULTIMEDIA_AUDIO TEXT("Software\\Microsoft\\Multimedia\\Audio")
+#define REGSTR_PATH_MEDIARESOURCES REGSTR_PATH_CURRENT_CONTROL_SET TEXT("\\MediaResources")
+#define REGSTR_PATH_MEDIAPROPERTIES REGSTR_PATH_CURRENT_CONTROL_SET TEXT("\\MediaProperties")
+#define REGSTR_PATH_PRIVATEPROPERTIES REGSTR_PATH_MEDIAPROPERTIES TEXT("\\PrivateProperties")
+#define REGSTR_PATH_PUBLICPROPERTIES REGSTR_PATH_MEDIAPROPERTIES TEXT("\\PublicProperties")
+#define REGSTR_PATH_JOYOEM REGSTR_PATH_PRIVATEPROPERTIES TEXT("\\Joystick\\OEM")
+#define REGSTR_PATH_JOYCONFIG REGSTR_PATH_MEDIARESOURCES TEXT("\\Joystick")
+#define REGSTR_KEY_JOYCURR TEXT("CurrentJoystickSettings")
+#define REGSTR_KEY_JOYSETTINGS TEXT("JoystickSettings")
+#define REGSTR_VAL_JOYUSERVALUES TEXT("JoystickUserValues")
+#define REGSTR_VAL_JOYCALLOUT TEXT("JoystickCallout")
+#define REGSTR_VAL_JOYNCONFIG TEXT("Joystick%dConfiguration")
+#define REGSTR_VAL_JOYNOEMNAME TEXT("Joystick%dOEMName")
+#define REGSTR_VAL_JOYNOEMCALLOUT TEXT("Joystick%dOEMCallout")
+#define REGSTR_VAL_JOYOEMCALLOUT TEXT("OEMCallout")
+#define REGSTR_VAL_JOYOEMNAME TEXT("OEMName")
+#define REGSTR_VAL_JOYOEMDATA TEXT("OEMData")
+#define REGSTR_VAL_JOYOEMXYLABEL TEXT("OEMXYLabel")
+#define REGSTR_VAL_JOYOEMZLABEL TEXT("OEMZLabel")
+#define REGSTR_VAL_JOYOEMRLABEL TEXT("OEMRLabel")
+#define REGSTR_VAL_JOYOEMPOVLABEL TEXT("OEMPOVLabel")
+#define REGSTR_VAL_JOYOEMULABEL TEXT("OEMULabel")
+#define REGSTR_VAL_JOYOEMVLABEL TEXT("OEMVLabel")
+#define REGSTR_VAL_JOYOEMTESTMOVEDESC TEXT("OEMTestMoveDesc")
+#define REGSTR_VAL_JOYOEMTESTBUTTONDESC TEXT("OEMTestButtonDesc")
+#define REGSTR_VAL_JOYOEMTESTMOVECAP TEXT("OEMTestMoveCap")
+#define REGSTR_VAL_JOYOEMTESTBUTTONCAP TEXT("OEMTestButtonCap")
+#define REGSTR_VAL_JOYOEMTESTWINCAP TEXT("OEMTestWinCap")
+#define REGSTR_VAL_JOYOEMCALCAP TEXT("OEMCalCap")
+#define REGSTR_VAL_JOYOEMCALWINCAP TEXT("OEMCalWinCap")
+#define REGSTR_VAL_JOYOEMCAL1 TEXT("OEMCal1")
+#define REGSTR_VAL_JOYOEMCAL2 TEXT("OEMCal2")
+#define REGSTR_VAL_JOYOEMCAL3 TEXT("OEMCal3")
+#define REGSTR_VAL_JOYOEMCAL4 TEXT("OEMCal4")
+#define REGSTR_VAL_JOYOEMCAL5 TEXT("OEMCal5")
+#define REGSTR_VAL_JOYOEMCAL6 TEXT("OEMCal6")
+#define REGSTR_VAL_JOYOEMCAL7 TEXT("OEMCal7")
+#define REGSTR_VAL_JOYOEMCAL8 TEXT("OEMCal8")
+#define REGSTR_VAL_JOYOEMCAL9 TEXT("OEMCal9")
+#define REGSTR_VAL_JOYOEMCAL10 TEXT("OEMCal10")
+#define REGSTR_VAL_JOYOEMCAL11 TEXT("OEMCal11")
+#define REGSTR_VAL_JOYOEMCAL12 TEXT("OEMCal12")
+#ifndef NEC_98
+#define REGSTR_KEY_ISAENUM TEXT("ISAPnP")
+#define REGSTR_KEY_EISAENUM TEXT("EISA")
+#define REGSTR_VAL_EISA_RANGES TEXT("EISARanges")
+#define REGSTR_VAL_EISA_FUNCTIONS TEXT("EISAFunctions")
+#define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("EISAFunctionsMask")
+#define REGSTR_VAL_EISA_FLAGS TEXT("EISAFlags")
+#define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("EISASimulateInt15")
+#else
+#define REGSTR_KEY_ISAENUM TEXT("C98PnP")
+#define REGSTR_KEY_EISAENUM TEXT("NESA")
+#define REGSTR_VAL_EISA_RANGES TEXT("NESARanges")
+#define REGSTR_VAL_EISA_FUNCTIONS TEXT("NESAFunctions")
+#define REGSTR_VAL_EISA_FUNCTIONS_MASK TEXT("NESAFunctionsMask")
+#define REGSTR_VAL_EISA_FLAGS TEXT("NESAFlags")
+#define REGSTR_VAL_EISA_SIMULATE_INT15 TEXT("NESASimulateInt15")
+#endif
+typedef struct _DSKTLSYSTEMTIME {
+ WORD wYear;
+ WORD wMonth;
+ WORD wDayOfWeek;
+ WORD wDay;
+ WORD wHour;
+ WORD wMinute;
+ WORD wSecond;
+ WORD wMilliseconds;
+ WORD wResult;
+} DSKTLSYSTEMTIME,*PDSKTLSYSTEMTIME,*LPDSKTLSYSTEMTIME;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/richedit.h b/winsup/w32api/include/richedit.h
new file mode 100644
index 000000000..5262b5089
--- /dev/null
+++ b/winsup/w32api/include/richedit.h
@@ -0,0 +1,349 @@
+#ifndef _RICHEDIT_H
+#define _RICHEDIT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,4)
+
+#define CF_RTF TEXT("Rich Text Format")
+#define CF_RTFNOOBJS TEXT("Rich Text Format Without Objects")
+#define CF_RETEXTOBJ TEXT("RichEdit Text and Objects")
+#define CFM_BOLD 1
+#define CFM_ITALIC 2
+#define CFM_UNDERLINE 4
+#define CFM_STRIKEOUT 8
+#define CFM_PROTECTED 16
+#define CFM_SIZE 0x80000000
+#define CFM_COLOR 0x40000000
+#define CFM_FACE 0x20000000
+#define CFM_OFFSET 0x10000000
+#define CFM_CHARSET 0x08000000
+#define CFE_BOLD 1
+#define CFE_ITALIC 2
+#define CFE_UNDERLINE 4
+#define CFE_STRIKEOUT 8
+#define CFE_PROTECTED 16
+#define CFE_AUTOCOLOR 0x40000000
+#define IMF_FORCENONE 1
+#define IMF_FORCEENABLE 2
+#define IMF_FORCEDISABLE 4
+#define IMF_CLOSESTATUSWINDOW 8
+#define IMF_VERTICAL 32
+#define IMF_FORCEACTIVE 64
+#define IMF_FORCEINACTIVE 128
+#define IMF_FORCEREMEMBER 256
+#define SEL_EMPTY 0
+#define SEL_TEXT 1
+#define SEL_OBJECT 2
+#define SEL_MULTICHAR 4
+#define SEL_MULTIOBJECT 8
+#define MAX_TAB_STOPS 32
+#define PFM_ALIGNMENT 8
+#define PFM_NUMBERING 32
+#define PFM_OFFSET 4
+#define PFM_OFFSETINDENT 0x80000000
+#define PFM_RIGHTINDENT 2
+#define PFM_STARTINDENT 1
+#define PFM_TABSTOPS 16
+#define PFN_BULLET 1
+#define PFA_LEFT 1
+#define PFA_RIGHT 2
+#define PFA_CENTER 3
+#define SF_TEXT 1
+#define SF_RTF 2
+#define SF_RTFNOOBJS 3
+#define SF_TEXTIZED 4
+#define SFF_PLAINRTF 0x4000
+#define SFF_SELECTION 0x8000
+#define WB_CLASSIFY 3
+#define WB_MOVEWORDLEFT 4
+#define WB_MOVEWORDRIGHT 5
+#define WB_LEFTBREAK 6
+#define WB_RIGHTBREAK 7
+#define WB_MOVEWORDPREV 4
+#define WB_MOVEWORDNEXT 5
+#define WB_PREVBREAK 6
+#define WB_NEXTBREAK 7
+#define WBF_WORDWRAP 16
+#define WBF_WORDBREAK 32
+#define WBF_OVERFLOW 64
+#define WBF_LEVEL1 128
+#define WBF_LEVEL2 256
+#define WBF_CUSTOM 512
+#define ES_DISABLENOSCROLL 8192
+#define ES_EX_NOCALLOLEINIT 16777216
+#define ES_NOIME 524288
+#define ES_SAVESEL 32768
+#define ES_SELFIME 262144
+#define ES_SUNKEN 16384
+#define ES_VERTICAL 4194304
+#define ES_SELECTIONBAR 16777216
+#define EM_CANPASTE (WM_USER+50)
+#define EM_DISPLAYBAND (WM_USER+51)
+#define EM_EXGETSEL (WM_USER+52)
+#define EM_EXLIMITTEXT (WM_USER+53)
+#define EM_EXLINEFROMCHAR (WM_USER+54)
+#define EM_EXSETSEL (WM_USER+55)
+#define EM_FINDTEXT (WM_USER+56)
+#define EM_FORMATRANGE (WM_USER+57)
+#define EM_GETCHARFORMAT (WM_USER+58)
+#define EM_GETEVENTMASK (WM_USER+59)
+#define EM_GETOLEINTERFACE (WM_USER+60)
+#define EM_GETPARAFORMAT (WM_USER+61)
+#define EM_GETSELTEXT (WM_USER+62)
+#define EM_HIDESELECTION (WM_USER+63)
+#define EM_PASTESPECIAL (WM_USER+64)
+#define EM_REQUESTRESIZE (WM_USER+65)
+#define EM_SELECTIONTYPE (WM_USER+66)
+#define EM_SETBKGNDCOLOR (WM_USER+67)
+#define EM_SETCHARFORMAT (WM_USER+68)
+#define EM_SETEVENTMASK (WM_USER+69)
+#define EM_SETOLECALLBACK (WM_USER+70)
+#define EM_SETPARAFORMAT (WM_USER+71)
+#define EM_SETTARGETDEVICE (WM_USER+72)
+#define EM_STREAMIN (WM_USER+73)
+#define EM_STREAMOUT (WM_USER+74)
+#define EM_GETTEXTRANGE (WM_USER+75)
+#define EM_FINDWORDBREAK (WM_USER+76)
+#define EM_SETOPTIONS (WM_USER+77)
+#define EM_GETOPTIONS (WM_USER+78)
+#define EM_FINDTEXTEX (WM_USER+79)
+#define EM_GETWORDBREAKPROCEX (WM_USER+80)
+#define EM_SETWORDBREAKPROCEX (WM_USER+81)
+#define EN_CORRECTTEXT 1797
+#define EN_DROPFILES 1795
+#define EN_IMECHANGE 1799
+#define EN_MSGFILTER 1792
+#define EN_OLEOPFAILED 1801
+#define EN_PROTECTED 1796
+#define EN_REQUESTRESIZE 1793
+#define EN_SAVECLIPBOARD 1800
+#define EN_SELCHANGE 1794
+#define EN_STOPNOUNDO 1798
+#define ENM_NONE 0
+#define ENM_CHANGE 1
+#define ENM_CORRECTTEXT 4194304
+#define ENM_DROPFILES 1048576
+#define ENM_KEYEVENTS 65536
+#define ENM_MOUSEEVENTS 131072
+#define ENM_PROTECTED 2097152
+#define ENM_REQUESTRESIZE 262144
+#define ENM_SCROLL 4
+#define ENM_SELCHANGE 524288
+#define ENM_UPDATE 2
+#define ECO_AUTOWORDSELECTION 1
+#define ECO_AUTOVSCROLL 64
+#define ECO_AUTOHSCROLL 128
+#define ECO_NOHIDESEL 256
+#define ECO_READONLY 2048
+#define ECO_WANTRETURN 4096
+#define ECO_SAVESEL 0x8000
+#define ECO_SELECTIONBAR 0x1000000
+#define ECO_VERTICAL 0x400000
+#define ECOOP_SET 1
+#define ECOOP_OR 2
+#define ECOOP_AND 3
+#define ECOOP_XOR 4
+#define SCF_DEFAULT 0
+#define SCF_SELECTION 1
+#define SCF_WORD 2
+#define SCF_ALL 4
+#define SCF_USEUIRULES 8
+#define yHeightCharPtsMost 1638
+#define lDefaultTab 720
+
+typedef struct _charformat {
+ UINT cbSize;
+ DWORD dwMask;
+ DWORD dwEffects;
+ LONG yHeight;
+ LONG yOffset;
+ COLORREF crTextColor;
+ BYTE bCharSet;
+ BYTE bPitchAndFamily;
+ char szFaceName[LF_FACESIZE];
+} CHARFORMATA;
+typedef struct _charformatw {
+ UINT cbSize;
+ DWORD dwMask;
+ DWORD dwEffects;
+ LONG yHeight;
+ LONG yOffset;
+ COLORREF crTextColor;
+ BYTE bCharSet;
+ BYTE bPitchAndFamily;
+ WCHAR szFaceName[LF_FACESIZE];
+} CHARFORMATW;
+typedef struct _charformat2a {
+ UINT cbSize;
+ DWORD dwMask;
+ DWORD dwEffects;
+ LONG yHeight;
+ LONG yOffset;
+ COLORREF crTextColor;
+ BYTE bCharSet;
+ BYTE bPitchAndFamily;
+ char szFaceName[LF_FACESIZE];
+ WORD wWeight;
+ SHORT sSpacing;
+ COLORREF crBackColor;
+ LCID lcid;
+ DWORD dwReserved;
+ SHORT sStyle;
+ WORD wKerning;
+ BYTE bUnderlineType;
+ BYTE bAnimation;
+ BYTE bRevAuthor;
+} CHARFORMAT2A;
+typedef struct _charformat2w {
+ UINT cbSize;
+ DWORD dwMask;
+ DWORD dwEffects;
+ LONG yHeight;
+ LONG yOffset;
+ COLORREF crTextColor;
+ BYTE bCharSet;
+ BYTE bPitchAndFamily;
+ WCHAR szFaceName[LF_FACESIZE];
+ WORD wWeight;
+ SHORT sSpacing;
+ COLORREF crBackColor;
+ LCID lcid;
+ DWORD dwReserved;
+ SHORT sStyle;
+ WORD wKerning;
+ BYTE bUnderlineType;
+ BYTE bAnimation;
+ BYTE bRevAuthor;
+} CHARFORMAT2W;
+typedef struct _charrange {
+ LONG cpMin;
+ LONG cpMax;
+} CHARRANGE;
+typedef struct _compcolor {
+ COLORREF crText;
+ COLORREF crBackground;
+ DWORD dwEffects;
+} COMPCOLOR;
+typedef DWORD(CALLBACK *EDITSTREAMCALLBACK)(DWORD,PBYTE,LONG,LONG*);
+typedef struct _editstream {
+ DWORD dwCookie;
+ DWORD dwError;
+ EDITSTREAMCALLBACK pfnCallback;
+} EDITSTREAM;
+typedef struct _encorrecttext {
+ NMHDR nmhdr;
+ CHARRANGE chrg;
+ WORD seltyp;
+} ENCORRECTTEXT;
+typedef struct _endropfiles {
+ NMHDR nmhdr;
+ HANDLE hDrop;
+ LONG cp;
+ BOOL fProtected;
+} ENDROPFILES;
+typedef struct {
+ NMHDR nmhdr;
+ LONG iob;
+ LONG lOper;
+ HRESULT hr;
+} ENOLEOPFAILED;
+typedef struct _enprotected {
+ NMHDR nmhdr;
+ UINT msg;
+ WPARAM wParam;
+ LPARAM lParam;
+ CHARRANGE chrg;
+} ENPROTECTED,*LPENPROTECTED;
+typedef struct _ensaveclipboard {
+ NMHDR nmhdr;
+ LONG cObjectCount;
+ LONG cch;
+} ENSAVECLIPBOARD;
+typedef struct _findtextA {
+ CHARRANGE chrg;
+ LPSTR lpstrText;
+} FINDTEXTA;
+typedef struct _findtextW {
+ CHARRANGE chrg;
+ LPWSTR lpstrText;
+} FINDTEXTW;
+typedef struct _findtextexA {
+ CHARRANGE chrg;
+ LPSTR lpstrText;
+ CHARRANGE chrgText;
+} FINDTEXTEXA;
+typedef struct _findtextexW {
+ CHARRANGE chrg;
+ LPWSTR lpstrText;
+ CHARRANGE chrgText;
+} FINDTEXTEXW;
+typedef struct _formatrange {
+ HDC hdc;
+ HDC hdcTarget;
+ RECT rc;
+ RECT rcPage;
+ CHARRANGE chrg;
+} FORMATRANGE;
+typedef struct _msgfilter {
+ NMHDR nmhdr;
+ UINT msg;
+ WPARAM wParam;
+ LPARAM lParam;
+} MSGFILTER;
+typedef struct _paraformat {
+ UINT cbSize;
+ DWORD dwMask;
+ WORD wNumbering;
+ WORD wReserved;
+ LONG dxStartIndent;
+ LONG dxRightIndent;
+ LONG dxOffset;
+ WORD wAlignment;
+ SHORT cTabCount;
+ LONG rgxTabs[MAX_TAB_STOPS];
+} PARAFORMAT;
+typedef struct _selchange {
+ NMHDR nmhdr;
+ CHARRANGE chrg;
+ WORD seltyp;
+} SELCHANGE;
+typedef struct _textrange {
+ CHARRANGE chrg;
+ LPSTR lpstrText;
+} TEXTRANGEA;
+typedef struct _textrangew {
+ CHARRANGE chrg;
+ LPWSTR lpstrText;
+} TEXTRANGEW;
+typedef struct _reqresize {
+ NMHDR nmhdr;
+ RECT rc;
+} REQRESIZE;
+typedef struct _repastespecial {
+ DWORD dwAspect;
+ DWORD dwParam;
+} REPASTESPECIAL;
+typedef struct _punctuation {
+ UINT iSize;
+ LPSTR szPunctuation;
+} PUNCTUATION;
+typedef LONG (*EDITWORDBREAKPROCEX)(char*,LONG,BYTE,INT);
+#ifdef UNICODE
+typedef CHARFORMATW CHARFORMAT;
+typedef CHARFORMAT2W CHARFORMAT2;
+typedef FINDTEXTW FINDTEXT;
+typedef FINDTEXTEXW FINDTEXTEX;
+typedef TEXTRANGEW TEXTRANGE;
+#else
+typedef CHARFORMATA CHARFORMAT;
+typedef CHARFORMAT2A CHARFORMAT2;
+typedef FINDTEXTA FINDTEXT;
+typedef FINDTEXTEXA FINDTEXTEX;
+typedef TEXTRANGEA TEXTRANGE;
+#endif
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/richole.h b/winsup/w32api/include/richole.h
new file mode 100644
index 000000000..90f390bde
--- /dev/null
+++ b/winsup/w32api/include/richole.h
@@ -0,0 +1,103 @@
+#ifndef _RICHOLE_H
+#define _RICHOLE_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,4)
+#define REO_GETOBJ_NO_INTERFACES 0
+#define REO_GETOBJ_POLEOBJ 1
+#define REO_GETOBJ_PSTG 2
+#define REO_GETOBJ_POLESITE 4
+#define REO_GETOBJ_ALL_INTERFACES 7
+#define REO_CP_SELECTION ((ULONG)-1)
+#define REO_IOB_SELECTION ((ULONG)-1)
+#define REO_IOB_USE_CP ((ULONG)-2)
+#define REO_NULL 0
+#define REO_READWRITEMASK 0x3FL
+#define REO_DONTNEEDPALETTE 32
+#define REO_BLANK 16
+#define REO_DYNAMICSIZE 8
+#define REO_INVERTEDSELECT 4
+#define REO_BELOWBASELINE 2
+#define REO_RESIZABLE 1
+#define REO_LINK 0x80000000
+#define REO_STATIC 0x40000000
+#define REO_SELECTED 0x08000000
+#define REO_OPEN 0x4000000
+#define REO_INPLACEACTIVE 0x2000000
+#define REO_HILITED 0x1000000
+#define REO_LINKAVAILABLE 0x800000
+#define REO_GETMETAFILE 0x400000
+#define RECO_PASTE 0
+#define RECO_DROP 1
+#define RECO_COPY 2
+#define RECO_CUT 3
+#define RECO_DRAG 4
+
+extern const GUID IID_IRichEditOle;
+extern const GUID IID_IRichEditOleCallback;
+#ifndef INITGUID
+typedef struct _reobject {
+ DWORD cbStruct;
+ LONG cp;
+ CLSID clsid;
+ LPOLEOBJECT poleobj;
+ LPSTORAGE pstg;
+ LPOLECLIENTSITE polesite;
+ SIZEL sizel;
+ DWORD dvaspect;
+ DWORD dwFlags;
+ DWORD dwUser;
+} REOBJECT;
+
+#undef INTERFACE
+#define INTERFACE IRichEditOle
+DECLARE_INTERFACE_(IRichEditOle, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClientSite)(THIS_ LPOLECLIENTSITE*) PURE;
+ STDMETHOD_(LONG,GetObjectCount)(THIS) PURE;
+ STDMETHOD_(LONG,GetLinkCount)(THIS) PURE;
+ STDMETHOD(GetObject)(THIS_ LONG, REOBJECT*,DWORD) PURE;
+ STDMETHOD(InsertObject)(THIS_ REOBJECT*) PURE;
+ STDMETHOD(ConvertObject)(THIS_ LONG,REFCLSID,LPCSTR) PURE;
+ STDMETHOD(ActivateAs)(THIS_ REFCLSID,REFCLSID) PURE;
+ STDMETHOD(SetHostNames)(THIS_ LPCSTR,LPCSTR) PURE;
+ STDMETHOD(SetLinkAvailable)(THIS_ LONG,BOOL) PURE;
+ STDMETHOD(SetDvaspect)(THIS_ LONG,DWORD) PURE;
+ STDMETHOD(HandsOffStorage)(THIS_ LONG) PURE;
+ STDMETHOD(SaveCompleted)(THIS_ LONG,LPSTORAGE) PURE;
+ STDMETHOD(InPlaceDeactivate)(THIS) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(GetClipboardData)(THIS_ CHARRANGE*,DWORD,LPDATAOBJECT*) PURE;
+ STDMETHOD(ImportDataObject)(THIS_ LPDATAOBJECT,CLIPFORMAT,HGLOBAL) PURE;
+};
+typedef IRichEditOle *LPRICHEDITOLE;
+
+#undef INTERFACE
+#define INTERFACE IRichEditOleCallback
+DECLARE_INTERFACE_(IRichEditOleCallback, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetNewStorage)(THIS_ LPSTORAGE*) PURE;
+ STDMETHOD(GetInPlaceContext)(THIS_ LPOLEINPLACEFRAME*,LPOLEINPLACEUIWINDOW*,LPOLEINPLACEFRAMEINFO) PURE;
+ STDMETHOD(ShowContainerUI)(THIS_ BOOL) PURE;
+ STDMETHOD(QueryInsertObject)(THIS_ LPCLSID,LPSTORAGE,LONG) PURE;
+ STDMETHOD(DeleteObject)(THIS_ LPOLEOBJECT) PURE;
+ STDMETHOD(QueryAcceptData) (THIS_ LPDATAOBJECT,CLIPFORMAT*,DWORD,BOOL,HGLOBAL) PURE;
+ STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL) PURE;
+ STDMETHOD(GetClipboardData) (THIS_ CHARRANGE*,DWORD,LPDATAOBJECT*) PURE;
+ STDMETHOD(GetDragDropEffect) (THIS_ BOOL,DWORD,PDWORD) PURE;
+ STDMETHOD(GetContextMenu) (THIS_ WORD,LPOLEOBJECT,CHARRANGE*,HMENU*) PURE;
+};
+typedef IRichEditOleCallback FAR * LPRICHEDITOLECALLBACK;
+#endif
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/rpc.h b/winsup/w32api/include/rpc.h
new file mode 100644
index 000000000..eeb602f9f
--- /dev/null
+++ b/winsup/w32api/include/rpc.h
@@ -0,0 +1,54 @@
+#ifndef _RPC_H
+#define _RPC_H
+#ifndef RPC_NO_WINDOWS_H
+#include <windows.h>
+#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define __RPC_WIN32__
+#ifndef _WIN95
+#define __RPC_NT__
+#define RPC_UNICODE_SUPPORTED
+#endif
+
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+#define RPC_UNICODE_SUPPORTED
+#define __RPC_FAR
+#define __RPC_API __stdcall
+#define __RPC_USER __stdcall
+#define __RPC_STUB __stdcall
+#define RPC_ENTRY __stdcall
+typedef void *I_RPC_HANDLE;
+typedef long RPC_STATUS;
+
+#include <rpcdce.h>
+#include <rpcnsi.h>
+#include <rpcnterr.h>
+
+#include <winerror.h>
+
+/* SEH is not supported */
+#if 0
+#include <excpt.h>
+#define RpcTryExcept __try {
+#define RpcExcept(x) } __except (x) {
+#define RpcEndExcept }
+#define RpcTryFinally __try {
+#define RpcFinally } __finally {
+#define RpcEndFinally }
+#define RpcExceptionCode() GetExceptionCode()
+#define RpcAbnormalTermination() AbnormalTermination()
+#endif /* 0 */
+
+RPC_STATUS RPC_ENTRY RpcImpersonateClient(RPC_BINDING_HANDLE);
+RPC_STATUS RPC_ENTRY RpcRevertToSelf();
+long RPC_ENTRY I_RpcMapWin32Status(RPC_STATUS);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/rpcdce.h b/winsup/w32api/include/rpcdce.h
new file mode 100644
index 000000000..97d93ce59
--- /dev/null
+++ b/winsup/w32api/include/rpcdce.h
@@ -0,0 +1,381 @@
+#ifndef _RPCDCE_H
+#define _RPCDCE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <basetyps.h>
+
+#define IN
+#define OUT
+#define OPTIONAL
+#define uuid_t UUID
+#define rpc_binding_handle_t RPC_BINDING_HANDLE
+#define rpc_binding_vector_t RPC_BINDING_VECTOR
+#define uuid_vector_t UUID_VECTOR
+#define RPC_C_BINDING_INFINITE_TIMEOUT 10
+#define RPC_C_BINDING_MIN_TIMEOUT 0
+#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
+#define RPC_C_BINDING_MAX_TIMEOUT 9
+#define RPC_C_CANCEL_INFINITE_TIMEOUT (-1)
+#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
+#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
+#define RPC_C_BIND_TO_ALL_NICS 1
+#define RPC_C_USE_INTERNET_PORT 1
+#define RPC_C_USE_INTRANET_PORT 2
+#define RPC_MGR_EPV void
+#define RPC_C_STATS_CALLS_IN 0
+#define RPC_C_STATS_CALLS_OUT 1
+#define RPC_C_STATS_PKTS_IN 2
+#define RPC_C_STATS_PKTS_OUT 3
+#define RPC_IF_AUTOLISTEN 0x0001
+#define RPC_IF_OLE 2
+#define RPC_C_MGMT_INQ_IF_IDS 0
+#define RPC_C_MGMT_INQ_PRINC_NAME 1
+#define RPC_C_MGMT_INQ_STATS 2
+#define RPC_C_MGMT_IS_SERVER_LISTEN 3
+#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
+#define RPC_C_EP_ALL_ELTS 0
+#define RPC_C_EP_MATCH_BY_IF 1
+#define RPC_C_EP_MATCH_BY_OBJ 2
+#define RPC_C_EP_MATCH_BY_BOTH 3
+#define RPC_C_VERS_ALL 1
+#define RPC_C_VERS_COMPATIBLE 2
+#define RPC_C_VERS_EXACT 3
+#define RPC_C_VERS_MAJOR_ONLY 4
+#define RPC_C_VERS_UPTO 5
+#define DCE_C_ERROR_STRING_LEN 256
+#define RPC_C_PARM_MAX_PACKET_LENGTH 1
+#define RPC_C_PARM_BUFFER_LENGTH 2
+#define RPC_C_AUTHN_LEVEL_DEFAULT 0
+#define RPC_C_AUTHN_LEVEL_NONE 1
+#define RPC_C_AUTHN_LEVEL_CONNECT 2
+#define RPC_C_AUTHN_LEVEL_CALL 3
+#define RPC_C_AUTHN_LEVEL_PKT 4
+#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
+#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
+#define RPC_C_IMP_LEVEL_ANONYMOUS 1
+#define RPC_C_IMP_LEVEL_IDENTIFY 2
+#define RPC_C_IMP_LEVEL_IMPERSONATE 3
+#define RPC_C_IMP_LEVEL_DELEGATE 4
+#define RPC_C_QOS_IDENTITY_STATIC 0
+#define RPC_C_QOS_IDENTITY_DYNAMIC 1
+#define RPC_C_QOS_CAPABILITIES_DEFAULT 0
+#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 1
+#define RPC_C_PROTECT_LEVEL_DEFAULT(RPC_C_AUTHN_LEVEL_DEFAULT)
+#define RPC_C_PROTECT_LEVEL_NONE(RPC_C_AUTHN_LEVEL_NONE)
+#define RPC_C_PROTECT_LEVEL_CONNECT(RPC_C_AUTHN_LEVEL_CONNECT)
+#define RPC_C_PROTECT_LEVEL_CALL(RPC_C_AUTHN_LEVEL_CALL)
+#define RPC_C_PROTECT_LEVEL_PKT(RPC_C_AUTHN_LEVEL_PKT)
+#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY(RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
+#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY(RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
+#define RPC_C_AUTHN_NONE 0
+#define RPC_C_AUTHN_DCE_PRIVATE 1
+#define RPC_C_AUTHN_DCE_PUBLIC 2
+#define RPC_C_AUTHN_DEC_PUBLIC 4
+#define RPC_C_AUTHN_WINNT 10
+#define RPC_C_AUTHN_DEFAULT 0xFFFFFFFF
+#define RPC_C_SECURITY_QOS_VERSION L
+#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
+#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE 2
+
+typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
+typedef RPC_BINDING_HANDLE handle_t;
+typedef struct _RPC_BINDING_VECTOR {
+ unsigned long Count;
+ RPC_BINDING_HANDLE BindingH[1];
+} RPC_BINDING_VECTOR;
+typedef struct _UUID_VECTOR {
+ unsigned long Count;
+ UUID *Uuid[1];
+} UUID_VECTOR;
+typedef void *RPC_IF_HANDLE;
+typedef struct _RPC_IF_ID {
+ UUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_IF_ID;
+typedef struct _RPC_POLICY {
+ unsigned int Length ;
+ unsigned long EndpointFlags ;
+ unsigned long NICFlags ;
+} RPC_POLICY,*PRPC_POLICY ;
+typedef void __RPC_USER RPC_OBJECT_INQ_FN(UUID*,UUID*,RPC_STATUS*);
+typedef RPC_STATUS RPC_IF_CALLBACK_FN(RPC_IF_HANDLE,void*);
+typedef struct {
+ unsigned int Count;
+ unsigned long Stats[1];
+} RPC_STATS_VECTOR;
+typedef struct {
+ unsigned long Count;
+ RPC_IF_ID*IfId[1];
+} RPC_IF_ID_VECTOR;
+typedef void *RPC_AUTH_IDENTITY_HANDLE;
+typedef void *RPC_AUTHZ_HANDLE;
+typedef struct _RPC_SECURITY_QOS {
+ unsigned long Version;
+ unsigned long Capabilities;
+ unsigned long IdentityTracking;
+ unsigned long ImpersonationType;
+} RPC_SECURITY_QOS,*PRPC_SECURITY_QOS;
+typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
+ unsigned short *User;
+ unsigned long UserLength;
+ unsigned short *Domain;
+ unsigned long DomainLength;
+ unsigned short *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_W,*PSEC_WINNT_AUTH_IDENTITY_W;
+typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
+ unsigned char *User;
+ unsigned long UserLength;
+ unsigned char *Domain;
+ unsigned long DomainLength;
+ unsigned char *Password;
+ unsigned long PasswordLength;
+ unsigned long Flags;
+} SEC_WINNT_AUTH_IDENTITY_A,*PSEC_WINNT_AUTH_IDENTITY_A;
+typedef struct {
+ unsigned char *UserName;
+ unsigned char *ComputerName;
+ unsigned short Privilege;
+ unsigned long AuthFlags;
+} RPC_CLIENT_INFORMATION1,* PRPC_CLIENT_INFORMATION1;
+typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
+typedef int(__RPC_API *RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE,unsigned long,RPC_STATUS*);
+
+#ifdef RPC_UNICODE_SUPPORTED
+typedef struct _RPC_PROTSEQ_VECTORA {
+ unsigned int Count;
+ unsigned char*Protseq[1];
+} RPC_PROTSEQ_VECTORA;
+typedef struct _RPC_PROTSEQ_VECTORW {
+ unsigned int Count;
+ unsigned short*Protseq[1];
+} RPC_PROTSEQ_VECTORW;
+RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingA(unsigned char *,RPC_BINDING_HANDLE *);
+RPC_STATUS RPC_ENTRY RpcBindingFromStringBindingW(unsigned short *,RPC_BINDING_HANDLE *);
+RPC_STATUS RPC_ENTRY RpcBindingToStringBindingA(RPC_BINDING_HANDLE,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcBindingToStringBindingW(RPC_BINDING_HANDLE,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcStringBindingComposeA(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringBindingComposeW(unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short *,unsigned short **);
+RPC_STATUS RPC_ENTRY RpcStringBindingParseA(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringBindingParseW(unsigned short *,unsigned short **,unsigned short **,unsigned short **,unsigned short **,unsigned short **);
+RPC_STATUS RPC_ENTRY RpcStringFreeA(unsigned char**);
+RPC_STATUS RPC_ENTRY RpcStringFreeW(unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidA(unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValidW(unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA**);
+RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqsW(RPC_PROTSEQ_VECTORW**);
+RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA**);
+RPC_STATUS RPC_ENTRY RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW**);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqA(unsigned char*,unsigned int,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqW(unsigned short*,unsigned int,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqExA(unsigned char*,unsigned int MaxCalls,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqExW(unsigned short*,unsigned int,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpA(unsigned char*,unsigned int,unsigned char*,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExA(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpW(unsigned short*,unsigned int,unsigned short*,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpExW(unsigned short*,unsigned int,unsigned short*,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfExA(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfExW(unsigned short*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameA(unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameW(unsigned long,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE,unsigned long,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientA(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned char**,unsigned long*,unsigned long*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthClientW(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE *,unsigned short**,unsigned long*,unsigned long*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE,unsigned short**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE,unsigned char*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE,unsigned short*,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long,RPC_SECURITY_QOS*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE,unsigned char**,unsigned long*,unsigned long*,RPC_AUTH_IDENTITY_HANDLE*,unsigned long*,unsigned long,RPC_SECURITY_QOS*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE,unsigned short ** , unsigned long *, unsigned long *, RPC_AUTH_IDENTITY_HANDLE *, unsigned long *, unsigned long , RPC_SECURITY_QOS *);
+typedef void(__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned short*,unsigned long,void**,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoA(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfoW(unsigned short*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*);
+RPC_STATUS RPC_ENTRY UuidToStringA(UUID*,unsigned char**);
+RPC_STATUS RPC_ENTRY UuidFromStringA(unsigned char*,UUID*);
+RPC_STATUS RPC_ENTRY UuidToStringW(UUID*,unsigned short**);
+RPC_STATUS RPC_ENTRY UuidFromStringW(unsigned short*,UUID*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplaceW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*, UUID_VECTOR*,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterA(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterW(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned short*);
+RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS,unsigned char*);
+RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned short**);
+#ifdef UNICODE
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORW
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_W
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_W
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_W
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingW
+#define RpcBindingToStringBinding RpcBindingToStringBindingW
+#define RpcStringBindingCompose RpcStringBindingComposeW
+#define RpcStringBindingParse RpcStringBindingParseW
+#define RpcStringFree RpcStringFreeW
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidW
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsW
+#define RpcProtseqVectorFree RpcProtseqVectorFreeW
+#define RpcServerUseProtseq RpcServerUseProtseqW
+#define RpcServerUseProtseqEx RpcServerUseProtseqExW
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpW
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExW
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfW
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExW
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameW
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameW
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameW
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientW
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoW
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoW
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoW
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExW
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExW
+#define UuidFromString UuidFromStringW
+#define UuidToString UuidToStringW
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceW
+#define RpcEpRegister RpcEpRegisterW
+#define DceErrorInqText DceErrorInqTextW
+#else /* UNICODE */
+#define RPC_PROTSEQ_VECTOR RPC_PROTSEQ_VECTORA
+#define SEC_WINNT_AUTH_IDENTITY SEC_WINNT_AUTH_IDENTITY_A
+#define PSEC_WINNT_AUTH_IDENTITY PSEC_WINNT_AUTH_IDENTITY_A
+#define _SEC_WINNT_AUTH_IDENTITY _SEC_WINNT_AUTH_IDENTITY_A
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#define RpcBindingFromStringBinding RpcBindingFromStringBindingA
+#define RpcBindingToStringBinding RpcBindingToStringBindingA
+#define RpcStringBindingCompose RpcStringBindingComposeA
+#define RpcStringBindingParse RpcStringBindingParseA
+#define RpcStringFree RpcStringFreeA
+#define RpcNetworkIsProtseqValid RpcNetworkIsProtseqValidA
+#define RpcNetworkInqProtseqs RpcNetworkInqProtseqsA
+#define RpcProtseqVectorFree RpcProtseqVectorFreeA
+#define RpcServerUseProtseq RpcServerUseProtseqA
+#define RpcServerUseProtseqEx RpcServerUseProtseqExA
+#define RpcServerUseProtseqEp RpcServerUseProtseqEpA
+#define RpcServerUseProtseqEpEx RpcServerUseProtseqEpExA
+#define RpcServerUseProtseqIf RpcServerUseProtseqIfA
+#define RpcServerUseProtseqIfEx RpcServerUseProtseqIfExA
+#define RpcMgmtInqServerPrincName RpcMgmtInqServerPrincNameA
+#define RpcServerInqDefaultPrincName RpcServerInqDefaultPrincNameA
+#define RpcNsBindingInqEntryName RpcNsBindingInqEntryNameA
+#define RpcBindingInqAuthClient RpcBindingInqAuthClientA
+#define RpcBindingInqAuthInfo RpcBindingInqAuthInfoA
+#define RpcBindingSetAuthInfo RpcBindingSetAuthInfoA
+#define RpcServerRegisterAuthInfo RpcServerRegisterAuthInfoA
+#define RpcBindingInqAuthInfoEx RpcBindingInqAuthInfoExA
+#define RpcBindingSetAuthInfoEx RpcBindingSetAuthInfoExA
+#define UuidFromString UuidFromStringA
+#define UuidToString UuidToStringA
+#define RpcEpRegisterNoReplace RpcEpRegisterNoReplaceA
+#define RpcEpRegister RpcEpRegisterA
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+#else /* RPC_UNICODE_SUPPORTED */
+typedef struct _RPC_PROTSEQ_VECTOR {
+ unsigned int Count;
+ unsigned char*Protseq[1];
+} RPC_PROTSEQ_VECTOR;
+RPC_STATUS RPC_ENTRY RpcBindingFromStringBinding(unsigned char *,RPC_BINDING_HANDLE *);
+RPC_STATUS RPC_ENTRY RpcBindingToStringBinding(RPC_BINDING_HANDLE,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringBindingCompose(unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringBindingParse(unsigned char *,unsigned char **,unsigned char **,unsigned char **,unsigned char **,unsigned char **);
+RPC_STATUS RPC_ENTRY RpcStringFree(unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNetworkIsProtseqValid(unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNetworkInqProtseqs(RPC_PROTSEQ_VECTOR **);
+RPC_STATUS RPC_ENTRY RpcServerInqBindings(RPC_BINDING_VECTOR **);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseq(unsigned char*,unsigned int,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEx(unsigned char*,unsigned int,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEp(unsigned char*,unsigned int,unsigned char*,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqEpEx(unsigned char*,unsigned int,unsigned char*,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIf(unsigned char*,unsigned int,RPC_IF_HANDLE,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseProtseqIfEx(unsigned char*,unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcMgmtInqServerPrincName(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincName(unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsBindingInqEntryName(RPC_BINDING_HANDLE,unsigned long,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthClient(RPC_BINDING_HANDLE,RPC_AUTHZ_HANDLE*,unsigned char**,unsigned long*,unsigned long*,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcBindingInqAuthInfo(RPC_BINDING_HANDLE,unsigned char **,unsigned long *,unsigned long *,RPC_AUTH_IDENTITY_HANDLE *,unsigned long *);
+RPC_STATUS RPC_ENTRY RpcBindingSetAuthInfo(RPC_BINDING_HANDLE,unsigned char *,unsigned long,unsigned long,RPC_AUTH_IDENTITY_HANDLE,unsigned long);
+typedef void(__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void*,unsigned char*,unsigned long,void**,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterAuthInfo(unsigned char*,unsigned long,RPC_AUTH_KEY_RETRIEVAL_FN,void*);
+RPC_STATUS RPC_ENTRY UuidToString(UUID*,unsigned char**);
+RPC_STATUS RPC_ENTRY UuidFromString(unsigned char*,UUID*);
+RPC_STATUS RPC_ENTRY RpcEpRegisterNoReplace(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcEpRegister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*,unsigned char*);
+RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID *,RPC_BINDING_HANDLE *,unsigned char **);
+#endif /* RPC_UNICODE_SUPPORTED */
+
+RPC_STATUS RPC_ENTRY RpcBindingCopy(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcBindingFree(RPC_BINDING_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcBindingInqObject(RPC_BINDING_HANDLE,UUID *);
+RPC_STATUS RPC_ENTRY RpcBindingReset(RPC_BINDING_HANDLE);
+RPC_STATUS RPC_ENTRY RpcBindingSetObject(RPC_BINDING_HANDLE,UUID *);
+RPC_STATUS RPC_ENTRY RpcMgmtInqDefaultProtectLevel(unsigned long,unsigned long *);
+RPC_STATUS RPC_ENTRY RpcBindingVectorFree(RPC_BINDING_VECTOR **);
+RPC_STATUS RPC_ENTRY RpcIfInqId(RPC_IF_HANDLE,RPC_IF_ID *);
+RPC_STATUS RPC_ENTRY RpcMgmtInqComTimeout(RPC_BINDING_HANDLE,unsigned int*);
+RPC_STATUS RPC_ENTRY RpcMgmtSetComTimeout(RPC_BINDING_HANDLE,unsigned int);
+RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout(long Timeout);
+RPC_STATUS RPC_ENTRY RpcObjectInqType(UUID *,UUID *);
+RPC_STATUS RPC_ENTRY RpcObjectSetInqFn(RPC_OBJECT_INQ_FN *);
+RPC_STATUS RPC_ENTRY RpcObjectSetType(UUID *,UUID *);
+RPC_STATUS RPC_ENTRY RpcProtseqVectorFree(RPC_PROTSEQ_VECTOR **);
+RPC_STATUS RPC_ENTRY RpcServerInqIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV**);
+RPC_STATUS RPC_ENTRY RpcServerListen(unsigned int,unsigned int,unsigned int);
+RPC_STATUS RPC_ENTRY RpcServerRegisterIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*);
+RPC_STATUS RPC_ENTRY RpcServerRegisterIfEx(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*);
+RPC_STATUS RPC_ENTRY RpcServerUnregisterIf(RPC_IF_HANDLE,UUID*,unsigned int);
+RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqs(unsigned int,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsEx(unsigned int,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIf(unsigned int,RPC_IF_HANDLE,void*);
+RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsIfEx(unsigned int,RPC_IF_HANDLE,void*,PRPC_POLICY);
+RPC_STATUS RPC_ENTRY RpcMgmtStatsVectorFree(RPC_STATS_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcMgmtInqStats(RPC_BINDING_HANDLE,RPC_STATS_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcMgmtIsServerListening(RPC_BINDING_HANDLE);
+RPC_STATUS RPC_ENTRY RpcMgmtStopServerListening(RPC_BINDING_HANDLE);
+RPC_STATUS RPC_ENTRY RpcMgmtWaitServerListen(void);
+RPC_STATUS RPC_ENTRY RpcMgmtSetServerStackSize(unsigned long);
+void RPC_ENTRY RpcSsDontSerializeContext(void);
+RPC_STATUS RPC_ENTRY RpcMgmtEnableIdleCleanup(void);
+RPC_STATUS RPC_ENTRY RpcMgmtInqIfIds(RPC_BINDING_HANDLE,RPC_IF_ID_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcIfIdVectorFree(RPC_IF_ID_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcEpResolveBinding(RPC_BINDING_HANDLE,RPC_IF_HANDLE);
+RPC_STATUS RPC_ENTRY RpcBindingServerFromClient(RPC_BINDING_HANDLE,RPC_BINDING_HANDLE*);
+void RPC_ENTRY RpcRaiseException(RPC_STATUS);
+RPC_STATUS RPC_ENTRY RpcTestCancel();
+RPC_STATUS RPC_ENTRY RpcCancelThread(void*);
+RPC_STATUS RPC_ENTRY UuidCreate(UUID*);
+signed int RPC_ENTRY UuidCompare(UUID*,UUID*, RPC_STATUS*);
+RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*);
+int RPC_ENTRY UuidEqual(UUID*,UUID*, RPC_STATUS*);
+unsigned short RPC_ENTRY UuidHash(UUID*,RPC_STATUS*);
+int RPC_ENTRY UuidIsNil(UUID*,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcEpUnregister(RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE,unsigned long,RPC_IF_ID*,unsigned long,UUID*,RPC_EP_INQ_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpUnregister(RPC_BINDING_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE,UUID*);
+RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN);
+RPC_STATUS RPC_ENTRY RpcMgmtInqParameter(unsigned int,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcMgmtSetParameter(unsigned int,unsigned long);
+RPC_STATUS RPC_ENTRY RpcMgmtBindingInqParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long*);
+RPC_STATUS RPC_ENTRY RpcMgmtBindingSetParameter(RPC_BINDING_HANDLE,unsigned int,unsigned long);
+#include <rpcdcep.h>
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/rpcdce2.h b/winsup/w32api/include/rpcdce2.h
new file mode 100644
index 000000000..ec0f62e35
--- /dev/null
+++ b/winsup/w32api/include/rpcdce2.h
@@ -0,0 +1,52 @@
+#ifndef _RPCDCE2_H
+#define _RPCDCE2_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <rpcdce.h>
+
+#define RPC_C_EP_ALL_ELTS 0
+#define RPC_C_EP_MATCH_BY_IF 1
+#define RPC_C_EP_MATCH_BY_OBJ 2
+#define RPC_C_EP_MATCH_BY_BOTH 3
+#define RPC_C_VERS_ALL 1
+#define RPC_C_VERS_COMPATIBLE 2
+#define RPC_C_VERS_EXACT 3
+#define RPC_C_VERS_MAJOR_ONLY 4
+#define RPC_C_VERS_UPTO 5
+#define DCE_C_ERROR_STRING_LEN 256
+#define RPC_C_MGMT_INQ_IF_IDS 0
+#define RPC_C_MGMT_INQ_PRINC_NAME 1
+#define RPC_C_MGMT_INQ_STATS 2
+#define RPC_C_MGMT_IS_SERVER_LISTEN 3
+#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
+
+int RPC_ENTRY UuidCompare(UUID*,UUID*,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY UuidCreateNil(UUID*);
+int RPC_ENTRY UuidEqual(UUID*,UUID*,RPC_STATUS*);
+unsigned short RPC_ENTRY UuidHash(UUID*,RPC_STATUS*);
+int RPC_ENTRY UuidIsNil(UUID*,RPC_STATUS*);
+#ifdef RPC_UNICODE_SUPPORTED
+RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS,unsigned char*);
+RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned short**);
+#ifdef UNICODE
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextW
+#define DceErrorInqText DceErrorInqTextW
+#else
+#define RpcMgmtEpEltInqNext RpcMgmtEpEltInqNextA
+#define DceErrorInqText DceErrorInqTextA
+#endif /* UNICODE */
+#else /* RPC_UNICODE_SUPPORTED */
+RPC_STATUS RPC_ENTRY DceErrorInqText(RPC_STATUS,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqNext(RPC_EP_INQ_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE*,UUID*,unsigned char**);
+#endif
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE,unsigned long,RPC_IF_ID*,unsigned long,UUID*,RPC_EP_INQ_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcMgmtEpUnregister(RPC_BINDING_HANDLE,RPC_IF_ID*,RPC_BINDING_HANDLE,UUID*);
+RPC_STATUS RPC_ENTRY RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/rpcdcep.h b/winsup/w32api/include/rpcdcep.h
new file mode 100644
index 000000000..82d731ebd
--- /dev/null
+++ b/winsup/w32api/include/rpcdcep.h
@@ -0,0 +1,124 @@
+#ifndef _RPCDCEP_H
+#define _RPCDCEP_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define RPC_NCA_FLAGS_DEFAULT 0
+#define RPC_NCA_FLAGS_IDEMPOTENT 1
+#define RPC_NCA_FLAGS_BROADCAST 2
+#define RPC_NCA_FLAGS_MAYBE 4
+#define RPCFLG_ASYNCHRONOUS 0x40000000
+#define RPCFLG_INPUT_SYNCHRONOUS 0x20000000
+#define RPC_FLAGS_VALID_BIT 0x8000
+#define TRANSPORT_TYPE_CN 1
+#define TRANSPORT_TYPE_DG 2
+#define TRANSPORT_TYPE_LPC 4
+#define TRANSPORT_TYPE_WMSG 8
+
+typedef struct _RPC_VERSION {
+ unsigned short MajorVersion;
+ unsigned short MinorVersion;
+} RPC_VERSION;
+typedef struct _RPC_SYNTAX_IDENTIFIER {
+ GUID SyntaxGUID;
+ RPC_VERSION SyntaxVersion;
+} RPC_SYNTAX_IDENTIFIER, *PRPC_SYNTAX_IDENTIFIER;
+typedef struct _RPC_MESSAGE {
+ HANDLE Handle;
+ unsigned long DataRepresentation;
+ void *Buffer;
+ unsigned int BufferLength;
+ unsigned int ProcNum;
+ PRPC_SYNTAX_IDENTIFIER TransferSyntax;
+ void *RpcInterfaceInformation;
+ void *ReservedForRuntime;
+ void *ManagerEpv;
+ void *ImportContext;
+ unsigned long RpcFlags;
+} RPC_MESSAGE,*PRPC_MESSAGE;
+typedef long __stdcall RPC_FORWARD_FUNCTION(GUID*,RPC_VERSION*,GUID*,unsigned char*,void**);
+typedef void(__stdcall *RPC_DISPATCH_FUNCTION) ( PRPC_MESSAGE Message);
+typedef struct {
+ unsigned int DispatchTableCount;
+ RPC_DISPATCH_FUNCTION *DispatchTable;
+ int Reserved;
+} RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE;
+typedef struct _RPC_PROTSEQ_ENDPOINT {
+ unsigned char *RpcProtocolSequence;
+ unsigned char *Endpoint;
+} RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT;
+typedef struct _RPC_SERVER_INTERFACE {
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ void *DefaultManagerEpv;
+ void const *InterpreterInfo;
+} RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE;
+typedef struct _RPC_CLIENT_INTERFACE {
+ unsigned int Length;
+ RPC_SYNTAX_IDENTIFIER InterfaceId;
+ RPC_SYNTAX_IDENTIFIER TransferSyntax;
+ PRPC_DISPATCH_TABLE DispatchTable;
+ unsigned int RpcProtseqEndpointCount;
+ PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
+ unsigned long Reserved;
+ void const *InterpreterInfo;
+} RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE;
+typedef void *I_RPC_MUTEX;
+typedef struct _RPC_TRANSFER_SYNTAX {
+ GUID Uuid;
+ unsigned short VersMajor;
+ unsigned short VersMinor;
+} RPC_TRANSFER_SYNTAX;
+typedef long(__stdcall *RPC_BLOCKING_FUNCTION)(void*,void*);
+
+long __stdcall I_RpcGetBuffer(RPC_MESSAGE*);
+long __stdcall I_RpcSendReceive(RPC_MESSAGE*);
+long __stdcall I_RpcFreeBuffer(RPC_MESSAGE*);
+void __stdcall I_RpcRequestMutex(I_RPC_MUTEX*);
+void __stdcall I_RpcClearMutex(I_RPC_MUTEX);
+void __stdcall I_RpcDeleteMutex(I_RPC_MUTEX);
+void* __stdcall I_RpcAllocate(unsigned int);
+void __stdcall I_RpcFree(void*);
+void __stdcall I_RpcPauseExecution(unsigned long);
+typedef void(__stdcall *PRPC_RUNDOWN) (void*);
+long __stdcall I_RpcMonitorAssociation(HANDLE,PRPC_RUNDOWN,void*);
+long __stdcall I_RpcStopMonitorAssociation(HANDLE);
+HANDLE __stdcall I_RpcGetCurrentCallHandle(void);
+long __stdcall I_RpcGetAssociationContext(void**);
+long __stdcall I_RpcSetAssociationContext(void*);
+#ifdef __RPC_NT__
+long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned short*);
+long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE, unsigned short**);
+#else
+long __stdcall I_RpcNsBindingSetEntryName(HANDLE,unsigned long,unsigned char*);
+long __stdcall I_RpcBindingInqDynamicEndpoint(HANDLE,unsigned char**);
+#endif
+long __stdcall I_RpcBindingInqTransportType(HANDLE,unsigned int*);
+long __stdcall I_RpcIfInqTransferSyntaxes(HANDLE,RPC_TRANSFER_SYNTAX*,unsigned int,unsigned int*);
+long __stdcall I_UuidCreate(GUID*);
+long __stdcall I_RpcBindingCopy(HANDLE,HANDLE*);
+long __stdcall I_RpcBindingIsClientLocal(HANDLE,unsigned int*);
+void __stdcall I_RpcSsDontSerializeContext(void);
+long __stdcall I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION*);
+long __stdcall I_RpcConnectionInqSockBuffSize(unsigned long*,unsigned long*);
+long __stdcall I_RpcConnectionSetSockBuffSize(unsigned long,unsigned long);
+long __stdcall I_RpcBindingSetAsync(HANDLE,RPC_BLOCKING_FUNCTION);
+long __stdcall I_RpcAsyncSendReceive(RPC_MESSAGE*,void*);
+long __stdcall I_RpcGetThreadWindowHandle(void**);
+long __stdcall I_RpcServerThreadPauseListening();
+long __stdcall I_RpcServerThreadContinueListening();
+long __stdcall I_RpcServerUnregisterEndpointA(unsigned char*,unsigned char*);
+long __stdcall I_RpcServerUnregisterEndpointW(unsigned short*,unsigned short*);
+#ifdef UNICODE
+#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointW
+#else
+#define I_RpcServerUnregisterEndpoint I_RpcServerUnregisterEndpointA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/rpcndr.h b/winsup/w32api/include/rpcndr.h
new file mode 100644
index 000000000..8b6c37b45
--- /dev/null
+++ b/winsup/w32api/include/rpcndr.h
@@ -0,0 +1,466 @@
+#ifndef __RPCNDR_H__
+#define __RPCNDR_H__
+#include <rpcnsip.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <objfwd.h>
+#define DECLSPEC_UUID(x)
+#define MIDL_INTERFACE(x) struct
+#define NDR_CHAR_REP_MASK (unsigned long)0xFL
+#define NDR_INT_REP_MASK (unsigned long)0xF0L
+#define NDR_FLOAT_REP_MASK (unsigned long)0xFF00L
+#define NDR_LITTLE_ENDIAN (unsigned long)0x10L
+#define NDR_BIG_ENDIAN (unsigned long)0
+#define NDR_IEEE_FLOAT (unsigned long)0
+#define NDR_VAX_FLOAT (unsigned long)0x100L
+#define NDR_ASCII_CHAR (unsigned long)0
+#define NDR_EBCDIC_CHAR (unsigned long)1
+#define NDR_LOCAL_DATA_REPRESENTATION (unsigned long)0x10L
+#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
+#define __RPC_CALLEE __stdcall
+#ifndef __MIDL_USER_DEFINED
+#define midl_user_allocate MIDL_user_allocate
+#define midl_user_free MIDL_user_free
+#define __MIDL_USER_DEFINED
+#endif
+#define RPC_VAR_ENTRY __cdecl
+#ifdef _M_IX86
+#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
+#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
+#else
+#define __MIDL_DECLSPEC_DLLIMPORT
+#define __MIDL_DECLSPEC_DLLEXPORT
+#endif
+#if defined(HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
+#define hyper __int64
+#define MIDL_uhyper unsigned __int64
+#else
+#define hyper double
+#define MIDL_uhyper double
+#endif
+#define small char
+typedef unsigned char byte;
+#define NDRSContextValue(hContext) (&(hContext)->userContext)
+#define cbNDRContext 20
+#define byte_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; }
+#define byte_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
+#define boolean_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; }
+#define boolean_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
+#define small_from_ndr(source, target) { *(target) = *(*(char**)&(source)->Buffer)++; }
+#define small_from_ndr_temp(source, target, format) { *(target) = *(*(char**)(source))++; }
+#define small_array_from_ndr(Source, LowerIndex, UpperIndex, Target) { NDRcopy ((((char *)(Target))+(LowerIndex)), (Source)->Buffer, (unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned long *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
+#define MIDL_ascii_strlen(string) strlen(string)
+#define MIDL_ascii_strcpy(target,source) strcpy(target,source)
+#define MIDL_memset(s,c,n) memset(s,c,n)
+#define _midl_ma1( p, cast ) *(*( cast **)&p)++
+#define _midl_ma2( p, cast ) *(*( cast **)&p)++
+#define _midl_ma4( p, cast ) *(*( cast **)&p)++
+#define _midl_ma8( p, cast ) *(*( cast **)&p)++
+#define _midl_unma1( p, cast ) *(( cast *)p)++
+#define _midl_unma2( p, cast ) *(( cast *)p)++
+#define _midl_unma3( p, cast ) *(( cast *)p)++
+#define _midl_unma4( p, cast ) *(( cast *)p)++
+#define _midl_fa2( p ) (p = (RPC_BUFPTR )((unsigned long)(p+1) & 0xfffffffe))
+#define _midl_fa4( p ) (p = (RPC_BUFPTR )((unsigned long)(p+3) & 0xfffffffc))
+#define _midl_fa8( p ) (p = (RPC_BUFPTR )((unsigned long)(p+7) & 0xfffffff8))
+#define _midl_addp( p, n ) (p += n)
+#define _midl_marsh_lhs( p, cast ) *(*( cast **)&p)++
+#define _midl_marsh_up( mp, p ) *(*(unsigned long **)&mp)++ = (unsigned long)p
+#define _midl_advmp( mp ) *(*(unsigned long **)&mp)++
+#define _midl_unmarsh_up( p ) (*(*(unsigned long **)&p)++)
+#define NdrMarshConfStringHdr( p, s, l ) (_midl_ma4( p, unsigned long) = s, _midl_ma4( p, unsigned long) = 0, _midl_ma4( p, unsigned long) = l)
+#define NdrUnMarshConfStringHdr(p, s, l) ((s=_midl_unma4(p,unsigned long), (_midl_addp(p,4)), (l=_midl_unma4(p,unsigned long))
+#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall( (NDR_CCONTEXT)pc, p ),p+20)
+#define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CONTEXT)pc,h,p,drep), p+20)
+#define NdrUnMarshSCtxtHdl(pc, p,drep) (pc = NdrSContextUnMarshall(p,drep ))
+#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p, (NDR_RUNDOWN)rd)
+#define NdrFieldOffset(s,f) (long)(& (((s *)0)->f))
+#define NdrFieldPad(s,f,p,t) (NdrFieldOffset(s,f) - NdrFieldOffset(s,p) - sizeof(t))
+#define NdrFcShort(s) (unsigned char)(s & 0xff), (unsigned char)(s >> 8)
+#define NdrFcLong(s) (unsigned char)(s & 0xff), (unsigned char)((s & 0x0000ff00) >> 8), (unsigned char)((s & 0x00ff0000) >> 16), (unsigned char)(s >> 24)
+#ifdef CONST_VTABLE
+#define CONST_VTBL const
+#else
+#define CONST_VTBL
+#endif
+typedef void *NDR_CCONTEXT;
+typedef struct {
+ void *pad[2];
+ void *userContext;
+} *NDR_SCONTEXT;
+typedef void (__RPC_USER *NDR_RUNDOWN)(void*);
+typedef struct _SCONTEXT_QUEUE {
+ unsigned long NumberOfObjects;
+ NDR_SCONTEXT *ArrayOfObjects;
+} SCONTEXT_QUEUE,*PSCONTEXT_QUEUE;
+struct _MIDL_STUB_MESSAGE;
+struct _MIDL_STUB_DESC;
+struct _FULL_PTR_XLAT_TABLES;
+typedef unsigned char *RPC_BUFPTR;
+typedef unsigned long RPC_LENGTH;
+typedef void(__RPC_USER *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE*);
+typedef const unsigned char *PFORMAT_STRING;
+typedef struct {
+ long Dimension;
+ unsigned long *BufferConformanceMark;
+ unsigned long *BufferVarianceMark;
+ unsigned long *MaxCountArray;
+ unsigned long *OffsetArray;
+ unsigned long *ActualCountArray;
+} ARRAY_INFO,*PARRAY_INFO;
+
+RPC_BINDING_HANDLE RPC_ENTRY NDRCContextBinding(NDR_CCONTEXT);
+void RPC_ENTRY NDRCContextMarshall(NDR_CCONTEXT,void*);
+void RPC_ENTRY NDRCContextUnmarshall(NDR_CCONTEXT*,RPC_BINDING_HANDLE,void*,unsigned long);
+void RPC_ENTRY NDRSContextMarshall(NDR_SCONTEXT,void*,NDR_RUNDOWN);
+NDR_SCONTEXT RPC_ENTRY NDRSContextUnmarshall(void*pBuff,unsigned long);
+void RPC_ENTRY RpcSsDestroyClientContext(void**);
+void RPC_ENTRY NDRcopy(void*,void*,unsigned int);
+unsigned int RPC_ENTRY MIDL_wchar_strlen(wchar_t*);
+void RPC_ENTRY MIDL_wchar_strcpy(void*,wchar_t*);
+void RPC_ENTRY char_from_ndr(PRPC_MESSAGE,unsigned char*);
+void RPC_ENTRY char_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned char*);
+void RPC_ENTRY short_from_ndr(PRPC_MESSAGE,unsigned short*);
+void RPC_ENTRY short_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned short*);
+void RPC_ENTRY short_from_ndr_temp(unsigned char**,unsigned short*,unsigned long);
+void RPC_ENTRY long_from_ndr(PRPC_MESSAGE,unsigned long*);
+void RPC_ENTRY long_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,unsigned long*);
+void RPC_ENTRY long_from_ndr_temp(unsigned char**,unsigned long*,unsigned long);
+void RPC_ENTRY enum_from_ndr(PRPC_MESSAGE,unsigned int*);
+void RPC_ENTRY float_from_ndr(PRPC_MESSAGE,void*);
+void RPC_ENTRY float_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,void*);
+void RPC_ENTRY double_from_ndr(PRPC_MESSAGE,void*);
+void RPC_ENTRY double_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,void*);
+void RPC_ENTRY hyper_from_ndr(PRPC_MESSAGE,hyper*);
+void RPC_ENTRY hyper_array_from_ndr(PRPC_MESSAGE,unsigned long,unsigned long,hyper*);
+void RPC_ENTRY hyper_from_ndr_temp(unsigned char**,hyper*,unsigned long);
+void RPC_ENTRY data_from_ndr(PRPC_MESSAGE,void*,char*,unsigned char);
+void RPC_ENTRY data_into_ndr(void*,PRPC_MESSAGE,char*,unsigned char);
+void RPC_ENTRY tree_into_ndr(void*,PRPC_MESSAGE,char*,unsigned char);
+void RPC_ENTRY data_size_ndr(void*,PRPC_MESSAGE,char*,unsigned char);
+void RPC_ENTRY tree_size_ndr(void*,PRPC_MESSAGE,char*,unsigned char);
+void RPC_ENTRY tree_peek_ndr(PRPC_MESSAGE,unsigned char**,char*,unsigned char);
+void *RPC_ENTRY midl_allocate(int);
+
+#pragma pack(push,4)
+typedef struct _MIDL_STUB_MESSAGE {
+ PRPC_MESSAGE RpcMsg;
+ unsigned char *Buffer;
+ unsigned char *BufferStart;
+ unsigned char *BufferEnd;
+ unsigned char *BufferMark;
+ unsigned long BufferLength;
+ unsigned long MemorySize;
+ unsigned char *Memory;
+ int IsClient;
+ int ReuseBuffer;
+ unsigned char *AllocAllNodesMemory;
+ unsigned char *AllocAllNodesMemoryEnd;
+ int IgnoreEmbeddedPointers;
+ unsigned char *PointerBufferMark;
+ unsigned char fBufferValid;
+ unsigned char Unused;
+ unsigned long MaxCount;
+ unsigned long Offset;
+ unsigned long ActualCount;
+ void*(__RPC_API *pfnAllocate)(unsigned int);
+ void(__RPC_API *pfnFree)(void*);
+ unsigned char *StackTop;
+ unsigned char *pPresentedType;
+ unsigned char *pTransmitType;
+ handle_t SavedHandle;
+ const struct _MIDL_STUB_DESC *StubDesc;
+ struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables;
+ unsigned long FullPtrRefId;
+ int fCheckBounds;
+ int fInDontFree :1;
+ int fDontCallFreeInst :1;
+ int fInOnlyParam :1;
+ int fHasReturn :1;
+ unsigned long dwDestContext;
+ void*pvDestContext;
+ NDR_SCONTEXT *SavedContextHandles;
+ long ParamNumber;
+ struct IRpcChannelBuffer *pRpcChannelBuffer;
+ PARRAY_INFO pArrayInfo;
+ unsigned long *SizePtrCountArray;
+ unsigned long *SizePtrOffsetArray;
+ unsigned long *SizePtrLengthArray;
+ void*pArgQueue;
+ unsigned long dwStubPhase;
+ unsigned long Reserved[5];
+} MIDL_STUB_MESSAGE,*PMIDL_STUB_MESSAGE;
+#pragma pack(pop)
+typedef void*(__RPC_API *GENERIC_BINDING_ROUTINE)(void*);
+typedef void (__RPC_API *GENERIC_UNBIND_ROUTINE)(void*,unsigned char*);
+typedef struct _GENERIC_BINDING_ROUTINE_PAIR {
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+} GENERIC_BINDING_ROUTINE_PAIR,*PGENERIC_BINDING_ROUTINE_PAIR;
+typedef struct __GENERIC_BINDING_INFO {
+ void *pObj;
+ unsigned int Size;
+ GENERIC_BINDING_ROUTINE pfnBind;
+ GENERIC_UNBIND_ROUTINE pfnUnbind;
+} GENERIC_BINDING_INFO,*PGENERIC_BINDING_INFO;
+typedef void(__RPC_USER *XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE);
+typedef struct _XMIT_ROUTINE_QUINTUPLE {
+ XMIT_HELPER_ROUTINE pfnTranslateToXmit;
+ XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
+ XMIT_HELPER_ROUTINE pfnFreeXmit;
+ XMIT_HELPER_ROUTINE pfnFreeInst;
+} XMIT_ROUTINE_QUINTUPLE,*PXMIT_ROUTINE_QUINTUPLE;
+typedef struct _MALLOC_FREE_STRUCT {
+void*(__RPC_USER *pfnAllocate)(unsigned int);
+void(__RPC_USER *pfnFree)(void*);
+} MALLOC_FREE_STRUCT;
+typedef struct _COMM_FAULT_OFFSETS {
+ short CommOffset;
+ short FaultOffset;
+} COMM_FAULT_OFFSETS;
+typedef struct _MIDL_STUB_DESC {
+ void*RpcInterfaceInformation;
+ void*(__RPC_API *pfnAllocate)(unsigned int);
+ void(__RPC_API *pfnFree)(void*);
+ union {
+ handle_t *pAutoHandle;
+ handle_t *pPrimitiveHandle;
+ PGENERIC_BINDING_INFO pGenericBindingInfo;
+ } IMPLICIT_HANDLE_INFO;
+ const NDR_RUNDOWN *apfnNdrRundownRoutines;
+ const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs;
+ const EXPR_EVAL *apfnExprEval;
+ const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple;
+ const unsigned char *pFormatTypes;
+ int fCheckBounds;
+ unsigned long Version;
+ MALLOC_FREE_STRUCT *pMallocFreeStruct;
+ long MIDLVersion;
+ const COMM_FAULT_OFFSETS *CommFaultOffsets;
+} MIDL_STUB_DESC;
+typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC;
+typedef void*PMIDL_XMIT_TYPE;
+typedef struct _MIDL_FORMAT_STRING {
+ short Pad;
+ unsigned char Format[1];
+} MIDL_FORMAT_STRING;
+typedef void(__RPC_API *STUB_THUNK)(PMIDL_STUB_MESSAGE);
+typedef long(__RPC_API *SERVER_ROUTINE)();
+typedef struct _MIDL_SERVER_INFO_ {
+ PMIDL_STUB_DESC pStubDesc;
+ const SERVER_ROUTINE *DispatchTable;
+ PFORMAT_STRING ProcString;
+ const unsigned short *FmtStringOffset;
+ const STUB_THUNK *ThunkTable;
+} MIDL_SERVER_INFO,*PMIDL_SERVER_INFO;
+typedef struct _MIDL_STUBLESS_PROXY_INFO {
+ PMIDL_STUB_DESC pStubDesc;
+ PFORMAT_STRING ProcFormatString;
+ const unsigned short *FormatStringOffset;
+} MIDL_STUBLESS_PROXY_INFO;
+typedef MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO;
+typedef union _CLIENT_CALL_RETURN {
+ void *Pointer;
+ long Simple;
+} CLIENT_CALL_RETURN;
+typedef enum { XLAT_SERVER = 1,XLAT_CLIENT } XLAT_SIDE;
+typedef struct _FULL_PTR_TO_REFID_ELEMENT {
+ struct _FULL_PTR_TO_REFID_ELEMENT *Next;
+ void*Pointer;
+ unsigned long RefId;
+ unsigned char State;
+} FULL_PTR_TO_REFID_ELEMENT,*PFULL_PTR_TO_REFID_ELEMENT;
+typedef struct _FULL_PTR_XLAT_TABLES {
+ struct {
+ void **XlatTable;
+ unsigned char *StateTable;
+ unsigned long NumberOfEntries;
+ } RefIdToPointer;
+ struct {
+ PFULL_PTR_TO_REFID_ELEMENT *XlatTable;
+ unsigned long NumberOfBuckets;
+ unsigned long HashMask;
+ } PointerToRefId;
+ unsigned long NextRefId;
+ XLAT_SIDE XlatSide;
+} FULL_PTR_XLAT_TABLES,*PFULL_PTR_XLAT_TABLES;
+void RPC_ENTRY NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned char);
+unsigned char *RPC_ENTRY NdrPointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING pFormat);
+unsigned char *RPC_ENTRY NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrHardStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrComplexStructMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrConformantStringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned char *RPC_ENTRY NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrClientContextMarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT,int);
+void RPC_ENTRY NdrServerContextMarshall(PMIDL_STUB_MESSAGE,NDR_SCONTEXT,NDR_RUNDOWN);
+void RPC_ENTRY NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned char);
+unsigned char *RPC_ENTRY NdrPointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrHardStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+unsigned char *RPC_ENTRY NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char);
+void RPC_ENTRY NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE,NDR_CCONTEXT*,RPC_BINDING_HANDLE);
+NDR_SCONTEXT RPC_ENTRY NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE);
+void RPC_ENTRY NdrPointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrHardStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrContextHandleSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrPointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrHardStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+unsigned long RPC_ENTRY NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+void RPC_ENTRY NdrPointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrSimpleStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrHardStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrComplexStructFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrFixedArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrVaryingArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrComplexArrayFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrByteCountPointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrInterfacePointerFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING);
+void RPC_ENTRY NdrConvert(PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+void RPC_ENTRY NdrClientInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int);
+unsigned char *RPC_ENTRY NdrServerInitializeNew(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC);
+void RPC_ENTRY NdrClientInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int);
+unsigned char *RPC_ENTRY NdrServerInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC);
+unsigned char *RPC_ENTRY NdrServerInitializeUnmarshall(PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PRPC_MESSAGE);
+void RPC_ENTRY NdrServerInitializeMarshall(PRPC_MESSAGE,PMIDL_STUB_MESSAGE);
+unsigned char *RPC_ENTRY NdrGetBuffer(PMIDL_STUB_MESSAGE,unsigned long,RPC_BINDING_HANDLE);
+unsigned char *RPC_ENTRY NdrNsGetBuffer(PMIDL_STUB_MESSAGE,unsigned long,RPC_BINDING_HANDLE);
+unsigned char *RPC_ENTRY NdrSendReceive(PMIDL_STUB_MESSAGE,unsigned char*);
+unsigned char *RPC_ENTRY NdrNsSendReceive(PMIDL_STUB_MESSAGE,unsigned char*,RPC_BINDING_HANDLE*);
+void RPC_ENTRY NdrFreeBuffer(PMIDL_STUB_MESSAGE);
+CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall(PMIDL_STUB_DESC,PFORMAT_STRING,...);
+typedef enum {
+ STUB_UNMARSHAL,
+ STUB_CALL_SERVER,
+ STUB_MARSHAL,
+ STUB_CALL_SERVER_NO_HRESULT
+} STUB_PHASE;
+typedef enum {
+ PROXY_CALCSIZE,
+ PROXY_GETBUFFER,
+ PROXY_MARSHAL,
+ PROXY_SENDRECEIVE,
+ PROXY_UNMARSHAL
+} PROXY_PHASE;
+long RPC_ENTRY NdrStubCall(struct IRpcStubBuffer*,struct IRpcChannelBuffer*,PRPC_MESSAGE,unsigned long*);
+void RPC_ENTRY NdrServerCall(PRPC_MESSAGE);
+int RPC_ENTRY NdrServerUnmarshall(struct IRpcChannelBuffer*,PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,PFORMAT_STRING,void*);
+void RPC_ENTRY NdrServerMarshall(struct IRpcStubBuffer*,struct IRpcChannelBuffer*,PMIDL_STUB_MESSAGE,PFORMAT_STRING);
+RPC_STATUS RPC_ENTRY NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE,unsigned long*,unsigned long*,RPC_STATUS);
+int RPC_ENTRY NdrSH_UPDecision(PMIDL_STUB_MESSAGE,unsigned char**,RPC_BUFPTR);
+int RPC_ENTRY NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE,unsigned char**);
+int RPC_ENTRY NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE,unsigned char**);
+int RPC_ENTRY NdrSH_IfAlloc(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+int RPC_ENTRY NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+int RPC_ENTRY NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+RPC_BUFPTR RPC_ENTRY NdrSH_IfCopy(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+RPC_BUFPTR RPC_ENTRY NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE,unsigned char**,unsigned long);
+unsigned long RPC_ENTRY NdrSH_Copy(unsigned char*,unsigned char*,unsigned long);
+void RPC_ENTRY NdrSH_IfFree(PMIDL_STUB_MESSAGE,unsigned char*);
+RPC_BUFPTR RPC_ENTRY NdrSH_StringMarshall(PMIDL_STUB_MESSAGE,unsigned char*,unsigned long,int);
+RPC_BUFPTR RPC_ENTRY NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE,unsigned char**,int);
+typedef void *RPC_SS_THREAD_HANDLE;
+typedef void* __RPC_API RPC_CLIENT_ALLOC(unsigned int);
+typedef void __RPC_API RPC_CLIENT_FREE(void*);
+void*RPC_ENTRY RpcSsAllocate(unsigned int);
+void RPC_ENTRY RpcSsDisableAllocate(void);
+void RPC_ENTRY RpcSsEnableAllocate(void);
+void RPC_ENTRY RpcSsFree(void*);
+RPC_SS_THREAD_HANDLE RPC_ENTRY RpcSsGetThreadHandle(void);
+void RPC_ENTRY RpcSsSetClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*);
+void RPC_ENTRY RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE);
+void RPC_ENTRY RpcSsSwapClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*,RPC_CLIENT_ALLOC**,RPC_CLIENT_FREE**);
+void*RPC_ENTRY RpcSmAllocate(unsigned int,RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcSmClientFree(void*);
+RPC_STATUS RPC_ENTRY RpcSmDestroyClientContext(void**);
+RPC_STATUS RPC_ENTRY RpcSmDisableAllocate(void);
+RPC_STATUS RPC_ENTRY RpcSmEnableAllocate(void);
+RPC_STATUS RPC_ENTRY RpcSmFree(void*);
+RPC_SS_THREAD_HANDLE RPC_ENTRY RpcSmGetThreadHandle(RPC_STATUS*);
+RPC_STATUS RPC_ENTRY RpcSmSetClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*);
+RPC_STATUS RPC_ENTRY RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE);
+RPC_STATUS RPC_ENTRY RpcSmSwapClientAllocFree(RPC_CLIENT_ALLOC*,RPC_CLIENT_FREE*,RPC_CLIENT_ALLOC**,RPC_CLIENT_FREE**);
+void RPC_ENTRY NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE);
+void RPC_ENTRY NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE);
+void RPC_ENTRY NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE);
+void*RPC_ENTRY NdrRpcSmClientAllocate(unsigned int);
+void RPC_ENTRY NdrRpcSmClientFree(void*);
+void*RPC_ENTRY NdrRpcSsDefaultAllocate(unsigned int);
+void RPC_ENTRY NdrRpcSsDefaultFree(void*);
+PFULL_PTR_XLAT_TABLES RPC_ENTRY NdrFullPointerXlatInit(unsigned long,XLAT_SIDE);
+void RPC_ENTRY NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES);
+int RPC_ENTRY NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES,void*,unsigned char,unsigned long*);
+int RPC_ENTRY NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES,unsigned long,unsigned char,void**);
+void RPC_ENTRY NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES,unsigned long,void*);
+int RPC_ENTRY NdrFullPointerFree(PFULL_PTR_XLAT_TABLES,void*);
+void*RPC_ENTRY NdrAllocate(PMIDL_STUB_MESSAGE,unsigned int);
+void RPC_ENTRY NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*);
+void*RPC_ENTRY NdrOleAllocate(unsigned int);
+void RPC_ENTRY NdrOleFree(void*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/rpcnsi.h b/winsup/w32api/include/rpcnsi.h
new file mode 100644
index 000000000..69547c8e4
--- /dev/null
+++ b/winsup/w32api/include/rpcnsi.h
@@ -0,0 +1,118 @@
+#ifndef _RPCNSI_H
+#define _RPCNSI_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef void *RPC_NS_HANDLE;
+#define RPC_C_NS_SYNTAX_DEFAULT 0
+#define RPC_C_NS_SYNTAX_DCE 3
+#define RPC_C_PROFILE_DEFAULT_ELT 0
+#define RPC_C_PROFILE_ALL_ELT 1
+#define RPC_C_PROFILE_MATCH_BY_IF 2
+#define RPC_C_PROFILE_MATCH_BY_MBR 3
+#define RPC_C_PROFILE_MATCH_BY_BOTH 4
+#define RPC_C_NS_DEFAULT_EXP_AGE -1
+
+RPC_STATUS RPC_ENTRY RpcNsBindingExportA(unsigned long,unsigned char*,RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsBindingUnexportA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsBindingLookupBeginA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID*,unsigned long,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsBindingLookupNext(RPC_NS_HANDLE,RPC_BINDING_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcNsBindingLookupDone(RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsGroupDeleteA(unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrAddA(unsigned long,unsigned char*,unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrRemoveA(unsigned long,unsigned char*,unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqBeginA(unsigned long,unsigned char*,unsigned long,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqNextA(RPC_NS_HANDLE,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqDone(RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsProfileDeleteA(unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltAddA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,unsigned char*,unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltRemoveA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqBeginA(unsigned long,unsigned char*,unsigned long,RPC_IF_ID*,unsigned long,unsigned long,unsigned char*,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqNextA(RPC_NS_HANDLE,RPC_IF_ID*,unsigned char**,unsigned long*,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqDone(RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqNext(IN RPC_NS_HANDLE,OUT UUID*);
+RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqDone(IN OUT RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsEntryExpandNameA(unsigned long,unsigned char*,unsigned char**);
+RPC_STATUS RPC_ENTRY RpcNsMgmtBindingUnexportA(unsigned long,unsigned char*,RPC_IF_ID*,unsigned long,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryCreateA(unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryDeleteA(unsigned long,unsigned char*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryInqIfIdsA(unsigned long,unsigned char*,RPC_IF_ID_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE,unsigned long);
+RPC_STATUS RPC_ENTRY RpcNsMgmtInqExpAge(unsigned long*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtSetExpAge(unsigned long);
+RPC_STATUS RPC_ENTRY RpcNsBindingImportNext(RPC_NS_HANDLE,RPC_BINDING_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsBindingImportDone(RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsBindingSelect(RPC_BINDING_VECTOR*,RPC_BINDING_HANDLE*);
+#ifndef UNICODE_ONLY
+RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqBeginA(unsigned long,unsigned char*,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsBindingImportBeginA(unsigned long,unsigned char*,RPC_IF_HANDLE,UUID*,RPC_NS_HANDLE*);
+#endif
+#ifdef RPC_UNICODE_SUPPORTED
+RPC_STATUS RPC_ENTRY RpcNsBindingExportW(unsigned long,unsigned short*,RPC_IF_HANDLE,RPC_BINDING_VECTOR*,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsBindingUnexportW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsBindingLookupBeginW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID*,unsigned long,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsGroupDeleteW(unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrAddW(unsigned long,unsigned short*,unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrRemoveW(unsigned long,unsigned short*,unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqBeginW(unsigned long,unsigned short*,unsigned long,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsGroupMbrInqNextW(RPC_NS_HANDLE,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNsProfileDeleteW(unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltAddW(unsigned long,unsigned short*, RPC_IF_ID*,unsigned long,unsigned short*,unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltRemoveW(unsigned long,unsigned short*, RPC_IF_ID*,unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqBeginW(unsigned long,unsigned short*, unsigned long,RPC_IF_ID*,unsigned long,unsigned long,unsigned short*, RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsProfileEltInqNextW(RPC_NS_HANDLE,RPC_IF_ID*, unsigned short**,unsigned long*,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNsEntryObjectInqBeginW(unsigned long,unsigned short*,RPC_NS_HANDLE*);
+RPC_STATUS RPC_ENTRY RpcNsEntryExpandNameW(unsigned long,unsigned short*,unsigned short**);
+RPC_STATUS RPC_ENTRY RpcNsMgmtBindingUnexportW(unsigned long,unsigned short*,RPC_IF_ID*,unsigned long,UUID_VECTOR*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryCreateW(unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryDeleteW(unsigned long,unsigned short*);
+RPC_STATUS RPC_ENTRY RpcNsMgmtEntryInqIfIdsW(unsigned long,unsigned short , RPC_IF_ID_VECTOR**);
+RPC_STATUS RPC_ENTRY RpcNsBindingImportBeginW(unsigned long,unsigned short*,RPC_IF_HANDLE,UUID*,RPC_NS_HANDLE*);
+#endif /* RPC_UNICODE_SUPPORTED */
+#ifdef UNICODE
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginW
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginW
+#define RpcNsBindingExport RpcNsBindingExportW
+#define RpcNsBindingUnexport RpcNsBindingUnexportW
+#define RpcNsGroupDelete RpcNsGroupDeleteW
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddW
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveW
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginW
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextW
+#define RpcNsEntryExpandName RpcNsEntryExpandNameW
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginW
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportW
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateW
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteW
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsW
+#define RpcNsProfileDelete RpcNsProfileDeleteW
+#define RpcNsProfileEltAdd RpcNsProfileEltAddW
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveW
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginW
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextW
+#else
+#define RpcNsBindingLookupBegin RpcNsBindingLookupBeginA
+#define RpcNsBindingImportBegin RpcNsBindingImportBeginA
+#define RpcNsBindingExport RpcNsBindingExportA
+#define RpcNsBindingUnexport RpcNsBindingUnexportA
+#define RpcNsGroupDelete RpcNsGroupDeleteA
+#define RpcNsGroupMbrAdd RpcNsGroupMbrAddA
+#define RpcNsGroupMbrRemove RpcNsGroupMbrRemoveA
+#define RpcNsGroupMbrInqBegin RpcNsGroupMbrInqBeginA
+#define RpcNsGroupMbrInqNext RpcNsGroupMbrInqNextA
+#define RpcNsEntryExpandName RpcNsEntryExpandNameA
+#define RpcNsEntryObjectInqBegin RpcNsEntryObjectInqBeginA
+#define RpcNsMgmtBindingUnexport RpcNsMgmtBindingUnexportA
+#define RpcNsMgmtEntryCreate RpcNsMgmtEntryCreateA
+#define RpcNsMgmtEntryDelete RpcNsMgmtEntryDeleteA
+#define RpcNsMgmtEntryInqIfIds RpcNsMgmtEntryInqIfIdsA
+#define RpcNsProfileDelete RpcNsProfileDeleteA
+#define RpcNsProfileEltAdd RpcNsProfileEltAddA
+#define RpcNsProfileEltRemove RpcNsProfileEltRemoveA
+#define RpcNsProfileEltInqBegin RpcNsProfileEltInqBeginA
+#define RpcNsProfileEltInqNext RpcNsProfileEltInqNextA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/rpcnsip.h b/winsup/w32api/include/rpcnsip.h
new file mode 100644
index 000000000..4f05d297d
--- /dev/null
+++ b/winsup/w32api/include/rpcnsip.h
@@ -0,0 +1,21 @@
+#ifndef _RPCNSIP_H
+#define _RPCNSIP_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef struct {
+ RPC_NS_HANDLE LookupContext;
+ RPC_BINDING_HANDLE ProposedHandle;
+ RPC_BINDING_VECTOR *Bindings;
+} RPC_IMPORT_CONTEXT_P,*PRPC_IMPORT_CONTEXT_P;
+RPC_STATUS RPC_ENTRY I_RpcNsGetBuffer(IN PRPC_MESSAGE);
+RPC_STATUS RPC_ENTRY I_RpcNsSendReceive(IN PRPC_MESSAGE,OUT RPC_BINDING_HANDLE*);
+void RPC_ENTRY I_RpcNsRaiseException(IN PRPC_MESSAGE,IN RPC_STATUS);
+RPC_STATUS RPC_ENTRY I_RpcReBindBuffer(IN PRPC_MESSAGE);
+RPC_STATUS RPC_ENTRY I_NsServerBindSearch();
+RPC_STATUS RPC_ENTRY I_NsClientBindSearch();
+void RPC_ENTRY I_NsClientBindDone();
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/rpcnterr.h b/winsup/w32api/include/rpcnterr.h
new file mode 100644
index 000000000..6b075ae07
--- /dev/null
+++ b/winsup/w32api/include/rpcnterr.h
@@ -0,0 +1,18 @@
+#ifndef _RPCNTERR_H
+#define _RPCNTERR_H
+#define RPC_S_OK ERROR_SUCCESS
+#define RPC_S_INVALID_ARG ERROR_INVALID_PARAMETER
+#define RPC_S_OUT_OF_MEMORY ERROR_OUTOFMEMORY
+#define RPC_S_OUT_OF_THREADS ERROR_MAX_THRDS_REACHED
+#define RPC_S_INVALID_LEVEL ERROR_INVALID_PARAMETER
+#define RPC_S_BUFFER_TOO_SMALL ERROR_INSUFFICIENT_BUFFER
+#define RPC_S_INVALID_SECURITY_DESC ERROR_INVALID_SECURITY_DESCR
+#define RPC_S_ACCESS_DENIED ERROR_ACCESS_DENIED
+#define RPC_S_SERVER_OUT_OF_MEMORY ERROR_NOT_ENOUGH_SERVER_MEMORY
+#define RPC_X_NO_MEMORY RPC_S_OUT_OF_MEMORY
+#define RPC_X_INVALID_BOUND RPC_S_INVALID_BOUND
+#define RPC_X_INVALID_TAG RPC_S_INVALID_TAG
+#define RPC_X_ENUM_VALUE_TOO_LARGE RPC_X_ENUM_VALUE_OUT_OF_RANGE
+#define RPC_X_SS_CONTEXT_MISMATCH ERROR_INVALID_HANDLE
+#define RPC_X_INVALID_BUFFER ERROR_INVALID_USER_BUFFER
+#endif
diff --git a/winsup/w32api/include/rpcproxy.h b/winsup/w32api/include/rpcproxy.h
new file mode 100644
index 000000000..fa968fc3a
--- /dev/null
+++ b/winsup/w32api/include/rpcproxy.h
@@ -0,0 +1,185 @@
+/*
+ -DREGISTER_PROXY_DLL Generates DllMain, DllRegisterServer, and DllUnregisterServer
+ -DPROXY_CLSID=clsid Specifies a class ID to be used by the proxy DLL.
+ -DPROXY_CLSID_IS={..} Specifies the class ID to be used by the proxy DLL.
+ -DNT35_STRICT No new features
+*/
+#ifndef _RPCPROXY_H
+#define _RPCPROXY_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <rpc.h>
+#include <rpcndr.h>
+#include <string.h>
+
+#define CStdStubBuffer_METHODS CStdStubBuffer_QueryInterface,CStdStubBuffer_AddRef,\
+CStdStubBuffer_Release,CStdStubBuffer_Connect,CStdStubBuffer_Disconnect,CStdStubBuffer_Invoke,\
+CStdStubBuffer_IsIIDSupported,CStdStubBuffer_CountRefs,CStdStubBuffer_DebugServerQueryInterface,\
+CStdStubBuffer_DebugServerRelease
+#define IID_GENERIC_CHECK_IID(name,pIID,index) memcmp(pIID,name##_ProxyVtblList[index]->header.piid,16)
+#define IID_BS_LOOKUP_SETUP int result, low=-1;
+#define IID_BS_LOOKUP_INITIAL_TEST(name,sz,split) if ((result = name##_CHECK_IID(split))>0) { low=sz-split;} else if (!result) { low = split; goto found_label; }
+#define IID_BS_LOOKUP_NEXT_TEST(name,split) if ((result = name##_CHECK_IID(low+split))>=0) { low=low+split; if (!result) goto found_label; }
+#define IID_BS_LOOKUP_RETURN_RESULT(name,sz,index) low+=1; if ((low>=sz )||(result=name##_CHECK_IID(low))) goto not_found_label; found_label: (index)=low; return 1; not_found_label: return 0;
+#define REGISTER_PROXY_DLL_ROUTINES(pProxyFileList, pClsID) \
+HINSTANCE hProxyDll = 0; \
+BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) \
+{ \
+if(fdwReason == DLL_PROCESS_ATTACH) hProxyDll = hinstDLL; \
+return TRUE; \
+} \
+HRESULT STDAPICALLTYPE DllRegisterServer() \
+{\
+return NdrDllRegisterProxy(hProxyDll, pProxyFileList, pClsID); \
+}\
+HRESULT STDAPICALLTYPE DllUnregisterServer()\
+{\
+return NdrDllUnregisterProxy(hProxyDll, pProxyFileList, pClsID);\
+}
+#ifdef PROXY_CLSID
+#define CLSID_PSFACTORYBUFFER extern CLSID PROXY_CLSID;
+#else
+#ifdef PROXY_CLSID_IS
+#define CLSID_PSFACTORYBUFFER const CLSID CLSID_PSFactoryBuffer = PROXY_CLSID_IS;
+#define PROXY_CLSID CLSID_PSFactoryBuffer
+#else
+#define CLSID_PSFACTORYBUFFER
+#endif
+#endif
+#ifndef PROXY_CLSID
+#define GET_DLL_CLSID (aProxyFileList[0]->pStubVtblList[0] != 0 ? aProxyFileList[0]->pStubVtblList[0]->header.piid : 0)
+#else
+#define GET_DLL_CLSID &PROXY_CLSID
+#endif
+#define EXTERN_PROXY_FILE(name) EXTERN_C const ProxyFileInfo name##_ProxyFileInfo;
+#define PROXYFILE_LIST_START const ProxyFileInfo * aProxyFileList[] = {
+#define REFERENCE_PROXY_FILE(name) & name##_ProxyFileInfo
+#define PROXYFILE_LIST_END 0 };
+#define DLLDATA_GETPROXYDLLINFO(pPFList,pClsid) \
+void RPC_ENTRY GetProxyDllInfo( const ProxyFileInfo*** pInfo, const CLSID ** pId ) \
+{ *pInfo = pPFList; *pId = pClsid; };
+#define DLLGETCLASSOBJECTROUTINE(pPFlist, pClsid,pFactory) HRESULT STDAPICALLTYPE DllGetClassObject(REFCLSID rclsid,REFIID riid,void **ppv) \
+{ return NdrDllGetClassObject(rclsid,riid,ppv,pPFlist,pClsid,pFactory ); }
+#define DLLCANUNLOADNOW(pFactory) HRESULT STDAPICALLTYPE DllCanUnloadNow() \
+{ return NdrDllCanUnloadNow( pFactory ); }
+#define DLLDUMMYPURECALL void __cdecl _purecall(void) { }
+#define CSTDSTUBBUFFERRELEASE(pFactory) ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer *This) \
+{ return NdrCStdStubBuffer_Release(This,(IPSFactoryBuffer *)pFactory); }
+#ifdef PROXY_DELEGATION
+#define CSTDSTUBBUFFER2RELEASE(pFactory) ULONG STDMETHODCALLTYPE CStdStubBuffer2_Release(IRpcStubBuffer *This) \
+{ return NdrCStdStubBuffer2_Release(This,(IPSFactoryBuffer *)pFactory); }
+#else
+#define CSTDSTUBBUFFER2RELEASE(pFactory)
+#endif
+
+#ifdef REGISTER_PROXY_DLL
+#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID ) REGISTER_PROXY_DLL_ROUTINES(pProxyFileList,pClsID)
+#else
+#define DLLREGISTRY_ROUTINES(pProxyFileList,pClsID)
+#endif
+#define DLLDATA_ROUTINES(pProxyFileList,pClsID) \
+CLSID_PSFACTORYBUFFER \
+CStdPSFactoryBuffer gPFactory = {0,0,0,0}; \
+DLLDATA_GETPROXYDLLINFO(pProxyFileList,pClsID) \
+DLLGETCLASSOBJECTROUTINE(pProxyFileList,pClsID,&gPFactory) \
+DLLCANUNLOADNOW(&gPFactory) \
+CSTDSTUBBUFFERRELEASE(&gPFactory) \
+CSTDSTUBBUFFER2RELEASE(&gPFactory) \
+DLLDUMMYPURECALL \
+DLLREGISTRY_ROUTINES(pProxyFileList, pClsID)
+
+#define DLLDATA_STANDARD_ROUTINES DLLDATA_ROUTINES( (const ProxyFileInfo**) pProxyFileList, &CLSID_PSFactoryBuffer)
+
+struct tagCInterfaceStubVtbl;
+struct tagCInterfaceProxyVtbl;
+typedef struct tagCInterfaceStubVtbl *PCInterfaceStubVtblList;
+typedef struct tagCInterfaceProxyVtbl *PCInterfaceProxyVtblList;
+typedef const char *PCInterfaceName;
+typedef int __stdcall IIDLookupRtn(const IID*,int*);
+typedef IIDLookupRtn *PIIDLookup;
+typedef struct tagProxyFileInfo {
+ const PCInterfaceProxyVtblList *pProxyVtblList;
+ const PCInterfaceStubVtblList *pStubVtblList;
+ const PCInterfaceName * pNamesArray;
+ const IID ** pDelegatedIIDs;
+ const PIIDLookup pIIDLookupRtn;
+ unsigned short TableSize;
+ unsigned short TableVersion;
+ unsigned long Filler1;
+ unsigned long Filler2;
+ unsigned long Filler3;
+ unsigned long Filler4;
+}ProxyFileInfo;
+typedef ProxyFileInfo ExtendedProxyFileInfo;
+
+typedef struct tagCInterfaceProxyHeader {
+#ifdef USE_STUBLESS_PROXY
+ const void *pStublessProxyInfo;
+#endif
+ const IID *piid;
+} CInterfaceProxyHeader;
+typedef struct tagCInterfaceProxyVtbl {
+ CInterfaceProxyHeader header;
+ void *Vtbl[0];
+} CInterfaceProxyVtbl;
+typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,DWORD*);
+typedef struct tagCInterfaceStubHeader {
+ const IID *piid;
+ const MIDL_SERVER_INFO *pServerInfo;
+ unsigned long DispatchTableCount;
+ const PRPC_STUB_FUNCTION *pDispatchTable;
+} CInterfaceStubHeader;
+typedef struct tagCInterfaceStubVtbl {
+ CInterfaceStubHeader header;
+ IRpcStubBufferVtbl Vtbl;
+} CInterfaceStubVtbl;
+typedef struct tagCStdStubBuffer {
+ const struct IRpcStubBufferVtbl * lpVtbl;
+ long RefCount;
+ struct IUnknown *pvServerObject;
+} CStdStubBuffer;
+typedef struct tagCStdPSFactoryBuffer {
+ const IPSFactoryBufferVtbl *lpVtbl;
+ long RefCount;
+ const ProxyFileInfo ** pProxyFileList;
+ long Filler1;
+} CStdPSFactoryBuffer;
+void RPC_ENTRY NdrProxyInitialize(void*,PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,unsigned int);
+void RPC_ENTRY NdrProxyGetBuffer(void*,PMIDL_STUB_MESSAGE);
+void RPC_ENTRY NdrProxySendReceive(void*,MIDL_STUB_MESSAGE*);
+void RPC_ENTRY NdrProxyFreeBuffer(void*,MIDL_STUB_MESSAGE*);
+HRESULT RPC_ENTRY NdrProxyErrorHandler(DWORD);
+void RPC_ENTRY NdrStubInitialize(PRPC_MESSAGE,PMIDL_STUB_MESSAGE,PMIDL_STUB_DESC,IRpcChannelBuffer*);
+void __RPC_STUB NdrStubForwardingFunction(IRpcStubBuffer*,IRpcChannelBuffer*,PRPC_MESSAGE,DWORD*);
+void RPC_ENTRY NdrStubGetBuffer(IRpcStubBuffer*,IRpcChannelBuffer*,PMIDL_STUB_MESSAGE);
+HRESULT RPC_ENTRY NdrStubErrorHandler(DWORD);
+HRESULT STDMETHODCALLTYPE CStdStubBuffer_QueryInterface(IRpcStubBuffer*,REFIID,void**);
+ULONG STDMETHODCALLTYPE CStdStubBuffer_AddRef(IRpcStubBuffer*);
+ULONG STDMETHODCALLTYPE CStdStubBuffer_Release(IRpcStubBuffer*);
+ULONG STDMETHODCALLTYPE NdrCStdStubBuffer_Release(IRpcStubBuffer*,IPSFactoryBuffer*);
+HRESULT STDMETHODCALLTYPE CStdStubBuffer_Connect(IRpcStubBuffer*,IUnknown*);
+void STDMETHODCALLTYPE CStdStubBuffer_Disconnect(IRpcStubBuffer*);
+HRESULT STDMETHODCALLTYPE CStdStubBuffer_Invoke(IRpcStubBuffer*,RPCOLEMESSAGE*,IRpcChannelBuffer*);
+IRpcStubBuffer* STDMETHODCALLTYPE CStdStubBuffer_IsIIDSupported(IRpcStubBuffer*,REFIID);
+ULONG STDMETHODCALLTYPE CStdStubBuffer_CountRefs(IRpcStubBuffer*);
+HRESULT STDMETHODCALLTYPE CStdStubBuffer_DebugServerQueryInterface(IRpcStubBuffer*,void**);
+void STDMETHODCALLTYPE CStdStubBuffer_DebugServerRelease(IRpcStubBuffer*,void*);
+HRESULT RPC_ENTRY NdrDllGetClassObject(REFCLSID,REFIID,void**,const ProxyFileInfo**,const CLSID*,CStdPSFactoryBuffer*);
+HRESULT RPC_ENTRY NdrDllCanUnloadNow(CStdPSFactoryBuffer*);
+#ifndef NT35_STRICT
+HRESULT RPC_ENTRY NdrDllRegisterProxy(HMODULE,const ProxyFileInfo**,const CLSID*);
+HRESULT RPC_ENTRY NdrDllUnregisterProxy(HMODULE,const ProxyFileInfo**,const CLSID*);
+#define STUB_FORWARDING_FUNCTION NdrStubForwardingFunction
+ULONG STDMETHODCALLTYPE
+CStdStubBuffer2_Release(IRpcStubBuffer*);
+ULONG STDMETHODCALLTYPE
+NdrCStdStubBuffer2_Release(IRpcStubBuffer*,IPSFactoryBuffer*);
+#define CStdStubBuffer_DELEGATING_METHODS 0, 0, CStdStubBuffer2_Release, 0, 0, 0, 0, 0, 0, 0
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/winsup/w32api/include/scrnsave.h b/winsup/w32api/include/scrnsave.h
new file mode 100644
index 000000000..30889d0ea
--- /dev/null
+++ b/winsup/w32api/include/scrnsave.h
@@ -0,0 +1,78 @@
+/*
+ Screen saver library by Anders Norlander <anorland@hem2.passagen.se>
+
+ This library is (hopefully) compatible with Microsoft's
+ screen saver library.
+
+ This is public domain software.
+
+ */
+#ifndef _SCRNSAVE_H
+#define _SCRNSAVE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* configure dialog identifier */
+#define DLG_SCRNSAVECONFIGURE 2003
+
+#define idsIsPassword 1000
+#define idsIniFile 1001
+#define idsScreenSaver 1002
+#define idsPassword 1003
+#define idsDifferentPW 1004
+#define idsChangePW 1005
+#define idsBadOldPW 1006
+#define idsAppName 1007
+#define idsNoHelpMemory 1008
+#define idsHelpFile 1009
+#define idsDefKeyword 1010
+
+#define IDS_DESCRIPTION 1
+#define ID_APP 100
+
+#define WS_GT (WS_GROUP | WS_TABSTOP)
+#define SCRM_VERIFYPW WM_APP
+#define MAXFILELEN 13
+#define TITLEBARNAMELEN 40
+#define APPNAMEBUFFERLEN 40
+#define BUFFLEN 255
+
+#ifndef RC_INVOKED
+
+/* functions provided by the aothor of the screen saver */
+BOOL WINAPI ScreenSaverConfigureDialog(HWND,UINT,WPARAM,LPARAM);
+BOOL WINAPI RegisterDialogClasses(HANDLE);
+LONG WINAPI ScreenSaverProc(HWND,UINT,WPARAM,LPARAM);
+
+/* Change name of function if we are using UNICODE */
+#ifdef UNICODE
+#define DefScreenSaverProc DefScreenSaverProcW
+#endif
+
+/* default screen saver proc; call instead of DefWindowProc */
+LONG WINAPI DefScreenSaverProc(HWND,UINT,WPARAM,LPARAM);
+
+/* change password */
+void WINAPI ScreenSaverChangePassword(HWND);
+
+/* globals that may be used by screen saver */
+extern HINSTANCE hMainInstance;
+extern HWND hMainWindow;
+extern BOOL fChildPreview;
+extern TCHAR szName[];
+extern TCHAR szAppName[];
+extern TCHAR szIniFile[];
+extern TCHAR szScreenSaver[];
+extern TCHAR szHelpFile[];
+extern TCHAR szNoHelpMemory[];
+extern UINT MyHelpMessage;
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SCRNSAVE_H */
diff --git a/winsup/w32api/include/shellapi.h b/winsup/w32api/include/shellapi.h
new file mode 100644
index 000000000..4e1c9a7dc
--- /dev/null
+++ b/winsup/w32api/include/shellapi.h
@@ -0,0 +1,251 @@
+#ifndef _SHELLAPI_H
+#define _SHELLAPI_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WINSHELLAPI DECLSPEC_IMPORT
+#define ABE_LEFT 0
+#define ABE_TOP 1
+#define ABE_RIGHT 2
+#define ABE_BOTTOM 3
+#define SEE_MASK_CLASSNAME 1
+#define SEE_MASK_CLASSKEY 3
+#define SEE_MASK_IDLIST 4
+#define SEE_MASK_INVOKEIDLIST 12
+#define SEE_MASK_ICON 16
+#define SEE_MASK_HOTKEY 32
+#define SEE_MASK_NOCLOSEPROCESS 64
+#define SEE_MASK_CONNECTNETDRV 128
+#define SEE_MASK_FLAG_DDEWAIT 256
+#define SEE_MASK_DOENVSUBST 512
+#define SEE_MASK_FLAG_NO_UI 1024
+#define SEE_MASK_UNICODE 65536
+#define ABM_NEW 0
+#define ABM_REMOVE 1
+#define ABM_QUERYPOS 2
+#define ABM_SETPOS 3
+#define ABM_GETSTATE 4
+#define ABM_GETTASKBARPOS 5
+#define ABM_ACTIVATE 6
+#define ABM_GETAUTOHIDEBAR 7
+#define ABM_SETAUTOHIDEBAR 8
+#define ABM_WINDOWPOSCHANGED 9
+#define ABN_STATECHANGE 0
+#define ABN_POSCHANGED 1
+#define ABN_FULLSCREENAPP 2
+#define ABN_WINDOWARRANGE 3
+#define NIM_ADD 0
+#define NIM_MODIFY 1
+#define NIM_DELETE 2
+#define NIF_MESSAGE 1
+#define NIF_ICON 2
+#define NIF_TIP 4
+#define SE_ERR_FNF 2
+#define SE_ERR_PNF 3
+#define SE_ERR_ACCESSDENIED 5
+#define SE_ERR_OOM 8
+#define SE_ERR_DLLNOTFOUND 32
+#define SE_ERR_SHARE 26
+#define SE_ERR_ASSOCINCOMPLETE 27
+#define SE_ERR_DDETIMEOUT 28
+#define SE_ERR_DDEFAIL 29
+#define SE_ERR_DDEBUSY 30
+#define SE_ERR_NOASSOC 31
+#define FO_MOVE 1
+#define FO_COPY 2
+#define FO_DELETE 3
+#define FO_RENAME 4
+#define FOF_MULTIDESTFILES 1
+#define FOF_CONFIRMMOUSE 2
+#define FOF_SILENT 4
+#define FOF_RENAMEONCOLLISION 8
+#define FOF_NOCONFIRMATION 16
+#define FOF_WANTMAPPINGHANDLE 32
+#define FOF_ALLOWUNDO 64
+#define FOF_FILESONLY 128
+#define FOF_SIMPLEPROGRESS 256
+#define FOF_NOCONFIRMMKDIR 512
+#define PO_DELETE 19
+#define PO_RENAME 20
+#define PO_PORTCHANGE 32
+#define PO_REN_PORT 52
+#define SHGFI_ICON 256
+#define SHGFI_DISPLAYNAME 512
+#define SHGFI_TYPENAME 1024
+#define SHGFI_ATTRIBUTES 2048
+#define SHGFI_ICONLOCATION 4096
+#define SHGFI_EXETYPE 8192
+#define SHGFI_SYSICONINDEX 16384
+#define SHGFI_LINKOVERLAY 32768
+#define SHGFI_SELECTED 65536
+#define SHGFI_LARGEICON 0
+#define SHGFI_SMALLICON 1
+#define SHGFI_OPENICON 2
+#define SHGFI_SHELLICONSIZE 4
+#define SHGFI_PIDL 8
+#define SHGFI_USEFILEATTRIBUTES 16
+
+typedef WORD FILEOP_FLAGS;
+typedef WORD PRINTEROP_FLAGS;
+typedef struct _AppBarData {
+ DWORD cbSize;
+ HWND hWnd;
+ UINT uCallbackMessage;
+ UINT uEdge;
+ RECT rc;
+ LPARAM lParam;
+} APPBARDATA,*PAPPBARDATA;
+DECLARE_HANDLE(HDROP);
+typedef struct _NOTIFYICONDATAA {
+ DWORD cbSize;
+ HWND hWnd;
+ UINT uID;
+ UINT uFlags;
+ UINT uCallbackMessage;
+ HICON hIcon;
+ CHAR szTip[64];
+} NOTIFYICONDATAA,*PNOTIFYICONDATAA;
+typedef struct _NOTIFYICONDATAW {
+ DWORD cbSize;
+ HWND hWnd;
+ UINT uID;
+ UINT uFlags;
+ UINT uCallbackMessage;
+ HICON hIcon;
+ WCHAR szTip[64];
+} NOTIFYICONDATAW,*PNOTIFYICONDATAW;
+typedef struct _SHELLEXECUTEINFOA {
+ DWORD cbSize;
+ ULONG fMask;
+ HWND hwnd;
+ LPCSTR lpVerb;
+ LPCSTR lpFile;
+ LPCSTR lpParameters;
+ LPCSTR lpDirectory;
+ int nShow;
+ HINSTANCE hInstApp;
+ PVOID lpIDList;
+ LPCSTR lpClass;
+ HKEY hkeyClass;
+ DWORD dwHotKey;
+ HANDLE hIcon;
+ HANDLE hProcess;
+} SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
+typedef struct _SHELLEXECUTEINFOW {
+ DWORD cbSize;
+ ULONG fMask;
+ HWND hwnd;
+ LPCWSTR lpVerb;
+ LPCWSTR lpFile;
+ LPCWSTR lpParameters;
+ LPCWSTR lpDirectory;
+ int nShow;
+ HINSTANCE hInstApp;
+ PVOID lpIDList;
+ LPCWSTR lpClass;
+ HKEY hkeyClass;
+ DWORD dwHotKey;
+ HANDLE hIcon;
+ HANDLE hProcess;
+} SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
+typedef struct _SHFILEOPSTRUCTA {
+ HWND hwnd;
+ UINT wFunc;
+ LPCSTR pFrom;
+ LPCSTR pTo;
+ FILEOP_FLAGS fFlags;
+ BOOL fAnyOperationsAborted;
+ PVOID hNameMappings;
+ LPCSTR lpszProgressTitle;
+} SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
+typedef struct _SHFILEOPSTRUCTW {
+ HWND hwnd;
+ UINT wFunc;
+ LPCWSTR pFrom;
+ LPCWSTR pTo;
+ FILEOP_FLAGS fFlags;
+ BOOL fAnyOperationsAborted;
+ PVOID hNameMappings;
+ LPCWSTR lpszProgressTitle;
+} SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
+typedef struct _SHFILEINFOA {
+ HICON hIcon;
+ int iIcon;
+ DWORD dwAttributes;
+ CHAR szDisplayName[MAX_PATH];
+ CHAR szTypeName[80];
+} SHFILEINFOA;
+typedef struct _SHFILEINFOW {
+ HICON hIcon;
+ int iIcon;
+ DWORD dwAttributes;
+ WCHAR szDisplayName[MAX_PATH];
+ WCHAR szTypeName[80];
+} SHFILEINFOW;
+
+LPWSTR *CommandLineToArgvW(LPCWSTR,int*);
+void WINAPI DragAcceptFiles(HWND,BOOL);
+void WINAPI DragFinish(HDROP);
+UINT WINAPI DragQueryFileA(HDROP,UINT,LPSTR,UINT);
+UINT WINAPI DragQueryFileW(HDROP,UINT,LPWSTR,UINT);
+BOOL WINAPI DragQueryPoint(HDROP,LPPOINT);
+HICON WINAPI ExtractAssociatedIconA(HINSTANCE,LPCSTR,PWORD);
+HICON WINAPI ExtractAssociatedIconW(HINSTANCE,LPCWSTR,PWORD);
+HICON WINAPI ExtractIconA(HINSTANCE,LPCSTR,UINT);
+HICON WINAPI ExtractIconW(HINSTANCE,LPCWSTR,UINT);
+HICON WINAPI ExtractIconExA(LPCSTR,int,HICON*,HICON*,UINT);
+HICON WINAPI ExtractIconExW(LPCWSTR,int,HICON*,HICON*,UINT);
+HINSTANCE WINAPI FindExecutableA(LPCSTR,LPCSTR,LPSTR);
+HINSTANCE WINAPI FindExecutableW(LPCWSTR,LPCWSTR,LPWSTR);
+UINT WINAPI SHAppBarMessage(DWORD,PAPPBARDATA);
+BOOL WINAPI Shell_NotifyIconA(DWORD,PNOTIFYICONDATAA);
+BOOL WINAPI Shell_NotifyIconW(DWORD,PNOTIFYICONDATAW);
+int WINAPI ShellAboutA(HWND,LPCSTR,LPCSTR,HICON);
+int WINAPI ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON);
+HINSTANCE WINAPI ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT);
+HINSTANCE WINAPI ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT);
+BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA);
+BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW);
+int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA);
+int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW);
+void WINAPI SHFreeNameMappings(HANDLE);
+DWORD WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
+DWORD WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
+
+#ifdef UNICODE
+typedef NOTIFYICONDATAW NOTIFYICONDATA,*PNOTIFYICONDATA;
+typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
+typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
+typedef SHFILEINFOW SHFILEINFO;
+#define DragQueryFile DragQueryFileW
+#define ExtractAssociatedIcon ExtractAssociatedIconW
+#define ExtractIcon ExtractIconW
+#define ExtractIconEx ExtractIconExW
+#define FindExecutable FindExecutableW
+#define Shell_NotifyIcon Shell_NotifyIconW
+#define ShellAbout ShellAboutW
+#define ShellExecute ShellExecuteW
+#define ShellExecuteEx ShellExecuteExW
+#define SHFileOperation SHFileOperationW
+#define SHGetFileInfo SHGetFileInfoW
+#else
+typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA;
+typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
+typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
+typedef SHFILEINFOA SHFILEINFO;
+#define DragQueryFile DragQueryFileA
+#define ExtractAssociatedIcon ExtractAssociatedIconA
+#define ExtractIcon ExtractIconA
+#define ExtractIconEx ExtractIconExA
+#define FindExecutable FindExecutableA
+#define Shell_NotifyIcon Shell_NotifyIconA
+#define ShellAbout ShellAboutA
+#define ShellExecute ShellExecuteA
+#define ShellExecuteEx ShellExecuteExA
+#define SHFileOperation SHFileOperationA
+#define SHGetFileInfo SHGetFileInfoA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/shlguid.h b/winsup/w32api/include/shlguid.h
new file mode 100644
index 000000000..d658e6ebc
--- /dev/null
+++ b/winsup/w32api/include/shlguid.h
@@ -0,0 +1,73 @@
+#ifndef _SHLGUID_H
+#define _SHLGUID_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#define SID_SShellBrowser IID_IShellBrowser
+extern const GUID CLSID_ShellDesktop;
+extern const GUID CLSID_ShellLink;
+extern const GUID FMTID_Intshcut;
+extern const GUID FMTID_InternetSite;
+extern const GUID CGID_Explorer;
+extern const GUID CGID_ShellDocView;
+extern const GUID IID_INewShortcutHookA;
+extern const GUID IID_IShellBrowser;
+extern const GUID IID_IShellView;
+extern const GUID IID_IContextMenu;
+extern const GUID IID_IShellIcon;
+extern const GUID IID_IShellFolder;
+extern const GUID IID_IShellExtInit;
+extern const GUID IID_IShellPropSheetExt;
+extern const GUID IID_IPersistFolder;
+extern const GUID IID_IExtractIconA;
+extern const GUID IID_IShellLinkA;
+extern const GUID IID_IShellCopyHookA;
+extern const GUID IID_IFileViewerA;
+extern const GUID IID_ICommDlgBrowser;
+extern const GUID IID_IEnumIDList;
+extern const GUID IID_IFileViewerSite;
+extern const GUID IID_IContextMenu2;
+extern const GUID IID_IShellExecuteHookA;
+extern const GUID IID_IPropSheetPage;
+extern const GUID IID_INewShortcutHookW;
+extern const GUID IID_IFileViewerW;
+extern const GUID IID_IShellLinkW;
+extern const GUID IID_IExtractIconW;
+extern const GUID IID_IShellExecuteHookW;
+extern const GUID IID_IShellCopyHookW;
+extern const GUID IID_IShellView2;
+extern const GUID LIBID_SHDocVw;
+extern const GUID IID_IShellExplorer;
+extern const GUID DIID_DShellExplorerEvents;
+extern const GUID CLSID_ShellExplorer;
+extern const GUID IID_ISHItemOC;
+extern const GUID DIID_DSHItemOCEvents;
+extern const GUID CLSID_SHItemOC;
+extern const GUID IID_DHyperLink;
+extern const GUID IID_DIExplorer;
+extern const GUID DIID_DExplorerEvents;
+extern const GUID CLSID_InternetExplorer;
+extern const GUID CLSID_StdHyperLink;
+extern const GUID CLSID_FileTypes;
+extern const GUID CLSID_InternetShortcut;
+extern const GUID IID_IUniformResourceLocator;
+#ifdef UNICODE
+#define IID_IFileViewer IID_IFileViewerW
+#define IID_IShellLink IID_IShellLinkW
+#define IID_IExtractIcon IID_IExtractIconW
+#define IID_IShellCopyHook IID_IShellCopyHookW
+#define IID_IShellExecuteHook IID_IShellExecuteHookW
+#define IID_INewShortcutHook IID_INewShortcutHookW
+#else
+#define IID_IFileViewer IID_IFileViewerA
+#define IID_IShellLink IID_IShellLinkA
+#define IID_IExtractIcon IID_IExtractIconA
+#define IID_IShellCopyHook IID_IShellCopyHookA
+#define IID_IShellExecuteHook IID_IShellExecuteHookA
+#define IID_INewShortcutHook IID_INewShortcutHookA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/shlobj.h b/winsup/w32api/include/shlobj.h
new file mode 100644
index 000000000..6ce37ec29
--- /dev/null
+++ b/winsup/w32api/include/shlobj.h
@@ -0,0 +1,695 @@
+#ifndef _SHLOBJ_H
+#define _SHLOBJ_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ole2.h>
+#include <shlguid.h>
+#include <shellapi.h>
+#pragma pack(push,1)
+#include <commctrl.h>
+
+#define BIF_RETURNONLYFSDIRS 1
+#define BIF_DONTGOBELOWDOMAIN 2
+#define BIF_STATUSTEXT 4
+#define BIF_RETURNFSANCESTORS 8
+#define BIF_BROWSEFORCOMPUTER 0x1000
+#define BIF_BROWSEFORPRINTER 0x2000
+#define BFFM_INITIALIZED 1
+#define BFFM_SELCHANGED 2
+#define BFFM_SETSTATUSTEXT (WM_USER + 100)
+#define BFFM_ENABLEOK (WM_USER + 101)
+#define BFFM_SETSELECTION (WM_USER + 102)
+#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY
+#define CMIC_MASK_ICON SEE_MASK_ICON
+#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI
+#define CMDSTR_NEWFOLDER "NewFolder"
+#define CMDSTR_VIEWLIST "ViewList"
+#define CMDSTR_VIEWDETAILS "ViewDetails"
+#define DVASPECT_SHORTNAME 2
+#define SHARD_PIDL 1
+#define SHARD_PATH 2
+#define SHCNE_RENAMEITEM 1
+#define SHCNE_CREATE 2
+#define SHCNE_DELETE 4
+#define SHCNE_MKDIR 8
+#define SHCNE_RMDIR 16
+#define SHCNE_MEDIAINSERTED 32
+#define SHCNE_MEDIAREMOVED 64
+#define SHCNE_DRIVEREMOVED 128
+#define SHCNE_DRIVEADD 256
+#define SHCNE_NETSHARE 512
+#define SHCNE_NETUNSHARE 1024
+#define SHCNE_ATTRIBUTES 2048
+#define SHCNE_UPDATEDIR 4096
+#define SHCNE_UPDATEITEM 8192
+#define SHCNE_SERVERDISCONNECT 16384
+#define SHCNE_UPDATEIMAGE 32768
+#define SHCNE_DRIVEADDGUI 65536
+#define SHCNE_RENAMEFOLDER 0x20000
+#define SHCNE_FREESPACE 0x40000
+#define SHCNE_ASSOCCHANGED 0x8000000
+#define SHCNE_DISKEVENTS 0x2381F
+#define SHCNE_GLOBALEVENTS 0xC0581E0
+#define SHCNE_ALLEVENTS 0x7FFFFFFF
+#define SHCNE_INTERRUPT 0x80000000
+#define SHCNF_IDLIST 0
+#define SHCNF_PATH 1
+#define SHCNF_PRINTER 2
+#define SHCNF_DWORD 3
+#define SHCNF_TYPE 0xFF
+#define SHCNF_FLUSH 0x1000
+#define SHCNF_FLUSHNOWAIT 0x2000
+#define SFGAO_CANCOPY DROPEFFECT_COPY
+#define SFGAO_CANMOVE DROPEFFECT_MOVE
+#define SFGAO_CANLINK DROPEFFECT_LINK
+#define SFGAO_CANRENAME 0x00000010L
+#define SFGAO_CANDELETE 0x00000020L
+#define SFGAO_HASPROPSHEET 0x00000040L
+#define SFGAO_DROPTARGET 0x00000100L
+#define SFGAO_CAPABILITYMASK 0x00000177L
+#define SFGAO_LINK 0x00010000L
+#define SFGAO_SHARE 0x00020000L
+#define SFGAO_READONLY 0x00040000L
+#define SFGAO_GHOSTED 0x00080000L
+#define SFGAO_DISPLAYATTRMASK 0x000F0000L
+#define SFGAO_FILESYSANCESTOR 0x10000000L
+#define SFGAO_FOLDER 0x20000000L
+#define SFGAO_FILESYSTEM 0x40000000L
+#define SFGAO_HASSUBFOLDER 0x80000000L
+#define SFGAO_CONTENTSMASK 0x80000000L
+#define SFGAO_VALIDATE 0x01000000L
+#define SFGAO_REMOVABLE 0x02000000L
+#define STRRET_WSTR 0
+#define STRRET_OFFSET 1
+#define STRRET_CSTR 2
+#define SHGDFIL_FINDDATA 1
+#define SHGDFIL_NETRESOURCE 2
+#define SHGDFIL_DESCRIPTIONID 3
+#define SHDID_ROOT_REGITEM 1
+#define SHDID_FS_FILE 2
+#define SHDID_FS_DIRECTORY 3
+#define SHDID_FS_OTHER 4
+#define SHDID_COMPUTER_DRIVE35 5
+#define SHDID_COMPUTER_DRIVE525 6
+#define SHDID_COMPUTER_REMOVABLE 7
+#define SHDID_COMPUTER_FIXED 8
+#define SHDID_COMPUTER_NETDRIVE 9
+#define SHDID_COMPUTER_CDROM 10
+#define SHDID_COMPUTER_RAMDISK 11
+#define SHDID_COMPUTER_OTHER 12
+#define SHDID_NET_DOMAIN 13
+#define SHDID_NET_SERVER 14
+#define SHDID_NET_SHARE 15
+#define SHDID_NET_RESTOFNET 16
+#define SHDID_NET_OTHER 17
+#ifndef REGSTR_PATH_EXPLORER
+#define REGSTR_PATH_EXPLORER "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"
+#endif
+#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER "\\Shell Folders"
+#define CSIDL_DESKTOP 0
+#define CSIDL_PROGRAMS 2
+#define CSIDL_CONTROLS 3
+#define CSIDL_PRINTERS 4
+#define CSIDL_PERSONAL 5
+#define CSIDL_FAVORITES 6
+#define CSIDL_STARTUP 7
+#define CSIDL_RECENT 8
+#define CSIDL_SENDTO 9
+#define CSIDL_BITBUCKET 10
+#define CSIDL_STARTMENU 11
+#define CSIDL_DESKTOPDIRECTORY 16
+#define CSIDL_DRIVES 17
+#define CSIDL_NETWORK 18
+#define CSIDL_NETHOOD 19
+#define CSIDL_FONTS 20
+#define CSIDL_TEMPLATES 21
+#define CFSTR_SHELLIDLIST "Shell IDList Array"
+#define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets"
+#define CFSTR_NETRESOURCES "Net Resource"
+#define CFSTR_FILEDESCRIPTOR "FileGroupDescriptor"
+#define CFSTR_FILECONTENTS "FileContents"
+#define CFSTR_FILENAME "FileName"
+#define CFSTR_PRINTERGROUP "PrinterFriendlyName"
+#define CFSTR_FILENAMEMAP "FileNameMap"
+#define CMF_NORMAL 0
+#define CMF_DEFAULTONLY 1
+#define CMF_VERBSONLY 2
+#define CMF_EXPLORE 4
+#define CMF_RESERVED 0xffff0000
+#define GCS_VERB 0
+#define GCS_HELPTEXT 1
+#define GCS_VALIDATE 2
+#define CMDSTR_NEWFOLDER "NewFolder"
+#define CMDSTR_VIEWLIST "ViewList"
+#define CMDSTR_VIEWDETAILS "ViewDetails"
+#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY
+#define CMIC_MASK_ICON SEE_MASK_ICON
+#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI
+#define CMIC_MASK_MODAL 0x80000000
+#define CMIC_VALID_SEE_FLAGS SEE_VALID_CMIC_FLAGS
+#define GIL_OPENICON 1
+#define GIL_FORSHELL 2
+#define GIL_SIMULATEDOC 1
+#define GIL_PERINSTANCE 2
+#define GIL_PERCLASS 4
+#define GIL_NOTFILENAME 8
+#define GIL_DONTCACHE 16
+#define FVSIF_RECT 1
+#define FVSIF_PINNED 2
+#define FVSIF_NEWFAILED 0x8000000
+#define FVSIF_NEWFILE 0x80000000
+#define FVSIF_CANVIEWIT 0x40000000
+#define CDBOSC_SETFOCUS 0
+#define CDBOSC_KILLFOCUS 1
+#define CDBOSC_SELCHANGE 2
+#define CDBOSC_RENAME 3
+#define FCIDM_SHVIEWFIRST 0
+#define FCIDM_SHVIEWLAST 0x7fff
+#define FCIDM_BROWSERFIRST 0xa000
+#define FCIDM_BROWSERLAST 0xbf00
+#define FCIDM_GLOBALFIRST 0x8000
+#define FCIDM_GLOBALLAST 0x9fff
+#define FCIDM_MENU_FILE FCIDM_GLOBALFIRST
+#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
+#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
+#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
+#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
+#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
+#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
+#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
+#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
+#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170) 
+#define FCIDM_TOOLBAR FCIDM_BROWSERFIRST
+#define FCIDM_STATUS (FCIDM_BROWSERFIRST+1)
+#define SBSP_DEFBROWSER 0
+#define SBSP_SAMEBROWSER 1
+#define SBSP_NEWBROWSER 2
+#define SBSP_DEFMODE 0
+#define SBSP_OPENMODE 16
+#define SBSP_EXPLOREMODE 32
+#define SBSP_ABSOLUTE 0
+#define SBSP_RELATIVE 0x1000
+#define SBSP_PARENT 0x2000
+#define SBSP_INITIATEDBYHLINKFRAME 0x80000000
+#define SBSP_REDIRECT 0x40000000
+#define FCW_STATUS 1
+#define FCW_TOOLBAR 2
+#define FCW_TREE 3
+#define FCT_MERGE 1
+#define FCT_CONFIGABLE 2
+#define FCT_ADDTOEND 4
+#define SVSI_DESELECT 0
+#define SVSI_SELECT 1
+#define SVSI_EDIT 3
+#define SVSI_DESELECTOTHERS 4
+#define SVSI_ENSUREVISIBLE 8
+#define SVSI_FOCUSED 16
+#define SVGIO_BACKGROUND 0
+#define SVGIO_SELECTION 1
+#define SVGIO_ALLVIEW 2
+#define SV2GV_CURRENTVIEW ((UINT)-1)
+#define SV2GV_DEFAULTVIEW ((UINT)-2)
+
+typedef struct _IDA {
+ UINT cidl;
+ UINT aoffset[1];
+} CIDA,*LPIDA;
+typedef struct _SHITEMID {
+ USHORT cb;
+ BYTE abID[1];
+} SHITEMID, * LPSHITEMID;
+typedef const SHITEMID *LPCSHITEMID;
+typedef struct _ITEMIDLIST {
+ SHITEMID mkid;
+} ITEMIDLIST,*LPITEMIDLIST;
+typedef const ITEMIDLIST *LPCITEMIDLIST;
+typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
+typedef struct _browseinfo {
+ HWND hwndOwner;
+ LPCITEMIDLIST pidlRoot;
+ LPSTR pszDisplayName;
+ LPCSTR lpszTitle;
+ UINT ulFlags;
+ BFFCALLBACK lpfn;
+ LPARAM lParam;
+ int iImage;
+} BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
+typedef struct _CMInvokeCommandInfo {
+ DWORD cbSize;
+ DWORD fMask;
+ HWND hwnd;
+ LPCSTR lpVerb;
+ LPCSTR lpParameters;
+ LPCSTR lpDirectory;
+ int nShow;
+ DWORD dwHotKey;
+ HANDLE hIcon;
+} CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
+typedef struct _DROPFILES {
+ DWORD pFiles;
+ POINT pt;
+ BOOL fNC;
+ BOOL fWide;
+} DROPFILES,*LPDROPFILES;
+typedef enum tagSHGDN {
+ SHGDN_NORMAL=0,
+ SHGDN_INFOLDER,
+ SHGDN_FORPARSING=0x8000
+} SHGNO;
+typedef enum tagSHCONTF {
+ SHCONTF_FOLDERS=32,
+ SHCONTF_NONFOLDERS=64,
+ SHCONTF_INCLUDEHIDDEN=128
+} SHCONTF;
+typedef struct _STRRET {
+ UINT uType;
+ union {
+ LPWSTR pOleStr;
+ UINT uOffset;
+ char cStr[MAX_PATH];
+ } DUMMYUNIONNAME;
+} STRRET,*LPSTRRET;
+typedef enum {
+ FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16,
+ FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000
+} FD_FLAGS;
+typedef struct _FILEDESCRIPTOR {
+ DWORD dwFlags;
+ CLSID clsid;
+ SIZEL sizel;
+ POINTL pointl;
+ DWORD dwFileAttributes;
+ FILETIME ftCreationTime;
+ FILETIME ftLastAccessTime;
+ FILETIME ftLastWriteTime;
+ DWORD nFileSizeHigh;
+ DWORD nFileSizeLow;
+ CHAR cFileName[MAX_PATH];
+} FILEDESCRIPTOR,*LPFILEDESCRIPTOR;
+typedef struct _FILEGROUPDESCRIPTOR {
+ UINT cItems;
+ FILEDESCRIPTOR fgd[1];
+} FILEGROUPDESCRIPTOR,*LPFILEGROUPDESCRIPTOR;
+typedef enum {
+ SLR_NO_UI=1,
+ SLR_ANY_MATCH=2,
+ SLR_UPDATE=4
+} SLR_FLAGS;
+typedef enum {
+ SLGP_SHORTPATH=1,
+ SLGP_UNCPRIORITY
+} SLGP_FLAGS;
+typedef PBYTE LPVIEWSETTINGS;
+typedef enum {
+ FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8,
+ FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128,
+ FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800,
+ FWF_SINGLECLICKACTIVATE=0x8000
+} FOLDERFLAGS;
+typedef enum {
+ FVM_ICON=1,
+ FVM_SMALLICON,
+ FVM_LIST,
+ FVM_DETAILS
+} FOLDERVIEWMODE;
+typedef struct {
+ UINT ViewMode;
+ UINT fFlags;
+} FOLDERSETTINGS,*LPFOLDERSETTINGS;
+typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
+typedef struct {
+ DWORD cbSize;
+ HWND hwndOwner;
+ int iShow;
+ DWORD dwFlags;
+ RECT rect;
+ LPUNKNOWN punkRel;
+ OLECHAR strNewFile[MAX_PATH];
+} FVSHOWINFO,*LPFVSHOWINFO;
+typedef struct _NRESARRAY {
+ UINT cItems;
+ NETRESOURCE nr[1];
+} NRESARRAY, *LPNRESARRAY;
+enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY };
+enum {
+ SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION,
+ SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS
+};
+typedef enum {
+ SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS,
+ SVUIA_INPLACEACTIVATE
+} SVUIA_STATUS;
+
+DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
+typedef IEnumIDList *LPENUMIDLIST;
+
+#undef INTERFACE
+#define INTERFACE IContextMenu
+DECLARE_INTERFACE_(IContextMenu,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
+ STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
+ STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
+};
+typedef IContextMenu *LPCONTEXTMENU;
+
+#undef INTERFACE
+#define INTERFACE IContextMenu2
+DECLARE_INTERFACE_(IContextMenu2,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
+ STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
+ STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
+ STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
+};
+typedef IContextMenu2 *LPCONTEXTMENU2;
+
+#undef INTERFACE
+#define INTERFACE IShellExtInit
+DECLARE_INTERFACE_(IShellExtInit, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE;
+};
+typedef IShellExtInit *LPSHELLEXTINIT;
+
+#undef INTERFACE
+#define INTERFACE IShellPropSheetExt
+DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE;
+ STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
+};
+typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
+
+#undef INTERFACE
+#define INTERFACE IExtractIcon
+DECLARE_INTERFACE_(IExtractIcon, IUnknown) // exic
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
+ STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
+};
+typedef IExtractIcon *LPEXTRACTICON;
+
+#undef INTERFACE
+#define INTERFACE IShellLinkA
+DECLARE_INTERFACE_(IShellLinkA, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetPath)(THIS_ LPSTR,int,LPWIN32_FIND_DATAA*,DWORD) PURE;
+ STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
+ STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
+ STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE;
+ STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE;
+ STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE;
+ STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE;
+ STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE;
+ STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE;
+ STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
+ STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
+ STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
+ STDMETHOD(SetShowCmd)(THIS_ int) PURE;
+ STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE;
+ STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE;
+ STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE;
+ STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(SetPath)(THIS_ LPCSTR) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IShellLinkW
+DECLARE_INTERFACE_(IShellLinkW, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetPath)(THIS_ LPSTR,int,LPWIN32_FIND_DATAW*,DWORD) PURE;
+ STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
+ STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
+ STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE;
+ STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE;
+ STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE;
+ STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE;
+ STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE;
+ STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE;
+ STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
+ STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
+ STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
+ STDMETHOD(SetShowCmd)(THIS_ int) PURE;
+ STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE;
+ STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE;
+ STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE;
+ STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
+ STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IShellFolder
+DECLARE_INTERFACE_(IShellFolder, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
+ STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
+ STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
+ STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
+ STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
+ STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
+ STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
+ STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
+ STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
+ STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
+};
+typedef IShellFolder *LPSHELLFOLDER;
+
+#undef INTERFACE
+#define INTERFACE ICopyHook
+DECLARE_INTERFACE_(ICopyHook, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE;
+};
+typedef ICopyHook *LPCOPYHOOK;
+
+#undef INTERFACE
+#define INTERFACE IFileViewerSite
+DECLARE_INTERFACE(IFileViewerSite)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE;
+ STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE;
+};
+typedef IFileViewerSite *LPFILEVIEWERSITE;
+
+#undef INTERFACE
+#define INTERFACE IFileViewer
+DECLARE_INTERFACE(IFileViewer)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE;
+ STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE;
+ STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE;
+};
+typedef IFileViewer *LPFILEVIEWER;
+
+#undef INTERFACE
+#define INTERFACE ICommDlgBrowser
+DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(OnDefaultCommand)(THIS) PURE;
+ STDMETHOD(OnStateChange)(THIS_ ULONG) PURE;
+ STDMETHOD(IncludeObject)(THIS_ LPCITEMIDLIST) PURE;
+};
+typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
+
+#undef INTERFACE
+#define INTERFACE IPersistFolder
+DECLARE_INTERFACE_(IPersistFolder,IPersist)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetClassID)(THIS_ CLSID) PURE;
+ STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
+};
+typedef IPersistFolder *LPPERSISTFOLDER;
+
+typedef interface IShellBrowser *LPSHELLBROWSER;
+typedef interface IShellView *LPSHELLVIEW;
+
+#undef INTERFACE
+#define INTERFACE IShellBrowser
+DECLARE_INTERFACE_(IShellBrowser,IOleWindow)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
+ STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE;
+ STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE;
+ STDMETHOD(SetStatusTextSB) (THIS_ LPCOLESTR) PURE;
+ STDMETHOD(EnableModelessSB) (THIS_ BOOL ) PURE;
+ STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE;
+ STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE;
+ STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE;
+ STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE;
+ STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE;
+ STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE;
+ STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE;
+ STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IShellView
+DECLARE_INTERFACE_(IShellView,IOleWindow)
+{
+
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+ STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
+#else
+ STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
+#endif
+ STDMETHOD(UIActivate)(THIS_ UINT) PURE;
+ STDMETHOD(Refresh) (THIS) PURE;
+ STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
+ STDMETHOD(DestroyViewWindow)(THIS) PURE;
+ STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
+ STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
+ STDMETHOD(SaveViewState)(THIS) PURE;
+ STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
+ STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
+};
+typedef GUID SHELLVIEWID;
+typedef struct _SV2CVW2_PARAMS {
+ DWORD cbSize;
+ IShellView *psvPrev;
+ FOLDERSETTINGS const *pfs;
+ IShellBrowser *psbOwner;
+ RECT *prcView;
+ SHELLVIEWID const *pvid;
+ HWND hwndView;
+} SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS;
+#undef INTERFACE
+#define INTERFACE IShellView2
+DECLARE_INTERFACE_(IShellView2,IShellView)
+{
+
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+ STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
+#else
+ STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
+#endif
+ STDMETHOD(UIActivate)(THIS_ UINT) PURE;
+ STDMETHOD(Refresh) (THIS) PURE;
+ STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
+ STDMETHOD(DestroyViewWindow)(THIS) PURE;
+ STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
+ STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
+ STDMETHOD(SaveViewState)(THIS) PURE;
+ STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
+ STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
+ STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
+ STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IShellExecuteHookA
+DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IShellExecuteHookW
+DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE;
+};
+
+#undef INTERFACE
+#define INTERFACE IShellIcon
+DECLARE_INTERFACE_(IShellIcon,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE;
+};
+typedef IShellIcon *LPSHELLICON;
+
+void WINAPI SHAddToRecentDocs(UINT,PCVOID);
+LPITEMIDLIST WINAPI SHBrowseForFolder(PBROWSEINFO);
+void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
+HRESULT WINAPI ShGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
+HRESULT WINAPI ShGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
+HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*);
+HRESULT WINAPI SHGetInstanceExplorer(LPUNKNOWN);
+HRESULT WINAPI SHGetMalloc(LPMALLOC*);
+BOOL WINAPI SHGetPathFromIDList(LPCITEMIDLIST,LPSTR);
+HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
+HRESULT WINAPI SHLoadInProc(REFCLSID);
+
+#ifdef UNICODE
+typedef IShellExecuteHookW IShellExecuteHook;
+typedef IShellLinkW IShellLink;
+#define ShGetDataFromIDList ShGetDataFromIDListW
+#else
+typedef IShellExecuteHookA IShellExecuteHook;
+typedef IShellLinkA IShellLink;
+#define ShGetDataFromIDList ShGetDataFromIDListA
+#endif
+
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _SHLOBJ_H */
diff --git a/winsup/w32api/include/sql.h b/winsup/w32api/include/sql.h
new file mode 100644
index 000000000..cbad41d3a
--- /dev/null
+++ b/winsup/w32api/include/sql.h
@@ -0,0 +1,705 @@
+#ifndef _SQL_H
+#define _SQL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef ODBCVER
+#define ODBCVER 0x0250
+#endif
+#include "sqltypes.h"
+/* FIXME! */
+#define SQL_SPEC_MAJOR (ODBCVER/0x100)
+#define SQL_SPEC_MINOR (ODBCVER&0xFF00)
+#define SQL_SPEC_STRING "02.50"
+#define SQL_ACCESSIBLE_PROCEDURES 20
+#define SQL_ACCESSIBLE_TABLES 19
+#define SQL_ACCESS_MODE 101
+#define SQL_ACTIVE_CONNECTIONS 0
+#define SQL_ACTIVE_STATEMENTS 1
+#define SQL_ALL_EXCEPT_LIKE 2
+#define SQL_ALL_TYPES 0
+#define SQL_ALTER_TABLE 86
+#define SQL_API_ALL_FUNCTIONS 0
+#define SQL_API_LOADBYORDINAL 199
+#define SQL_API_SQLALLOCCONNECT 1
+#define SQL_API_SQLALLOCENV 2
+#define SQL_API_SQLALLOCSTMT 3
+#define SQL_API_SQLBINDCOL 4
+#define SQL_API_SQLBINDPARAMETER 72
+#define SQL_API_SQLBROWSECONNECT 55
+#define SQL_API_SQLCANCEL 5
+#define SQL_API_SQLCOLATTRIBUTES 6
+#define SQL_API_SQLCOLUMNPRIVILEGES 56
+#define SQL_API_SQLCOLUMNS 40
+#define SQL_API_SQLCONNECT 7
+#define SQL_API_SQLDATASOURCES 57
+#define SQL_API_SQLDESCRIBECOL 8
+#define SQL_API_SQLDESCRIBEPARAM 58
+#define SQL_API_SQLDISCONNECT 9
+#define SQL_API_SQLDRIVERCONNECT 41
+#define SQL_API_SQLDRIVERS 71
+#define SQL_API_SQLERROR 10
+#define SQL_API_SQLEXECDIRECT 11
+#define SQL_API_SQLEXECUTE 12
+#define SQL_API_SQLEXTENDEDFETCH 59
+#define SQL_API_SQLFETCH 13
+#define SQL_API_SQLFOREIGNKEYS 60
+#define SQL_API_SQLFREECONNECT 14
+#define SQL_API_SQLFREEENV 15
+#define SQL_API_SQLFREESTMT 16
+#define SQL_API_SQLGETCONNECTOPTION 42
+#define SQL_API_SQLGETCURSORNAME 17
+#define SQL_API_SQLGETDATA 43
+#define SQL_API_SQLGETFUNCTIONS 44
+#define SQL_API_SQLGETINFO 45
+#define SQL_API_SQLGETSTMTOPTION 46
+#define SQL_API_SQLGETTYPEINFO 47
+#define SQL_API_SQLMORERESULTS 61
+#define SQL_API_SQLNATIVESQL 62
+#define SQL_API_SQLNUMPARAMS 63
+#define SQL_API_SQLNUMRESULTCOLS 18
+#define SQL_API_SQLPARAMDATA 48
+#define SQL_API_SQLPARAMOPTIONS 64
+#define SQL_API_SQLPREPARE 19
+#define SQL_API_SQLPRIMARYKEYS 65
+#define SQL_API_SQLPROCEDURECOLUMNS 66
+#define SQL_API_SQLPROCEDURES 67
+#define SQL_API_SQLPUTDATA 49
+#define SQL_API_SQLROWCOUNT 20
+#define SQL_API_SQLSETCONNECTOPTION 50
+#define SQL_API_SQLSETCURSORNAME 21
+#define SQL_API_SQLSETPARAM 22
+#define SQL_API_SQLSETPOS 68
+#define SQL_API_SQLSETSCROLLOPTIONS 69
+#define SQL_API_SQLSETSTMTOPTION 51
+#define SQL_API_SQLSPECIALCOLUMNS 52
+#define SQL_API_SQLSTATISTICS 53
+#define SQL_API_SQLTABLEPRIVILEGES 70
+#define SQL_API_SQLTABLES 54
+#define SQL_API_SQLTRANSACT 23
+#define SQL_ASYNC_ENABLE_OFF 0
+#define SQL_ASYNC_ENABLE_ON 1
+#define SQL_ASYNC_ENABLE 4
+#define SQL_ASYNC_ENABLE_DEFAULT SQL_ASYNC_ENABLE_OFF
+#define SQL_ATTR_READONLY 0
+#define SQL_ATTR_READWRITE_UNKNOWN 2
+#define SQL_ATTR_WRITE 1
+#define SQL_AT_ADD_COLUMN 1
+#define SQL_AT_DROP_COLUMN 2
+#define SQL_AUTOCOMMIT 102
+#define SQL_AUTOCOMMIT_DEFAULT SQL_AUTOCOMMIT_ON
+#define SQL_AUTOCOMMIT_OFF 0UL
+#define SQL_AUTOCOMMIT_ON 1UL
+#define SQL_BEST_ROWID 1
+#define SQL_BIGINT (-5)
+#define SQL_BINARY (-2)
+#define SQL_BIND_BY_COLUMN 0UL
+#define SQL_BIND_TYPE 5
+#define SQL_BIND_TYPE_DEFAULT SQL_BIND_BY_COLUMN
+#define SQL_BIT (-7)
+#define SQL_BOOKMARK_PERSISTENCE 82
+#define SQL_BP_CLOSE 1
+#define SQL_BP_DELETE 2
+#define SQL_BP_DROP 4
+#define SQL_BP_OTHER_HSTMT 32
+#define SQL_BP_SCROLL 64
+#define SQL_BP_TRANSACTION 8
+#define SQL_BP_UPDATE 16
+#define SQL_CB_CLOSE 1
+#define SQL_CB_DELETE 0
+#define SQL_CB_NON_NULL 1
+#define SQL_CB_NULL 0
+#define SQL_CB_PRESERVE 2
+#define SQL_CC_CLOSE SQL_CB_CLOSE
+#define SQL_CC_DELETE SQL_CB_DELETE
+#define SQL_CC_PRESERVE SQL_CB_PRESERVE
+#define SQL_CHAR 1
+#define SQL_CLOSE 0
+#define SQL_CN_ANY 2
+#define SQL_CN_DIFFERENT 1
+#define SQL_CN_NONE 0
+#define SQL_COLUMN_ALIAS 87
+#define SQL_COLUMN_AUTO_INCREMENT 11
+#define SQL_COLUMN_CASE_SENSITIVE 12
+#define SQL_COLUMN_COUNT 0
+#define SQL_COLUMN_DISPLAY_SIZE 6
+#define SQL_COLUMN_DRIVER_START 1000
+#define SQL_COLUMN_LABEL 18
+#define SQL_COLUMN_LENGTH 3
+#define SQL_COLUMN_MONEY 9
+#define SQL_COLUMN_NAME 1
+#define SQL_COLUMN_NULLABLE 7
+#define SQL_COLUMN_OWNER_NAME 16
+#define SQL_COLUMN_PRECISION 4
+#define SQL_COLUMN_QUALIFIER_NAME 17
+#define SQL_COLUMN_SCALE 5
+#define SQL_COLUMN_SEARCHABLE 13
+#define SQL_COLUMN_TABLE_NAME 15
+#define SQL_COLUMN_TYPE 2
+#define SQL_COLUMN_TYPE_NAME 14
+#define SQL_COLUMN_UNSIGNED 8
+#define SQL_COLUMN_UPDATABLE 10
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL
+#define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT
+#define SQL_COMMIT 0
+#define SQL_CONCAT_NULL_BEHAVIOR 22
+#define SQL_CONCURRENCY 7
+#define SQL_CONCUR_READ_ONLY 1
+#define SQL_CONCUR_ROWVER 3
+#define SQL_CONCUR_DEFAULT SQL_CONCUR_READ_ONLY
+#define SQL_CONCUR_LOCK 2
+#define SQL_CONCUR_TIMESTAMP SQL_CONCUR_ROWVER
+#define SQL_CONCUR_VALUES 4
+#define SQL_CONNECT_OPT_DRVR_START 1000
+#define SQL_PACKET_SIZE 112
+#define SQL_CONN_OPT_MAX SQL_PACKET_SIZE
+#define SQL_CONN_OPT_MIN SQL_ACCESS_MODE
+#define SQL_CONVERT_BIGINT 53
+#define SQL_CONVERT_BINARY 54
+#define SQL_CONVERT_BIT 55
+#define SQL_CONVERT_CHAR 56
+#define SQL_CONVERT_DATE 57
+#define SQL_CONVERT_DECIMAL 58
+#define SQL_CONVERT_DOUBLE 59
+#define SQL_CONVERT_FLOAT 60
+#define SQL_CONVERT_FUNCTIONS 48
+#define SQL_CONVERT_INTEGER 61
+#define SQL_CONVERT_LONGVARBINARY 71
+#define SQL_CONVERT_LONGVARCHAR 62
+#define SQL_CONVERT_NUMERIC 63
+#define SQL_CONVERT_REAL 64
+#define SQL_CONVERT_SMALLINT 65
+#define SQL_CONVERT_TIME 66
+#define SQL_CONVERT_TIMESTAMP 67
+#define SQL_CONVERT_TINYINT 68
+#define SQL_CONVERT_VARBINARY 69
+#define SQL_CONVERT_VARCHAR 70
+#define SQL_CORRELATION_NAME 74
+#define SQL_CR_CLOSE SQL_CB_CLOSE
+#define SQL_CR_DELETE SQL_CB_DELETE
+#define SQL_CR_PRESERVE SQL_CB_PRESERVE
+#define SQL_CURRENT_QUALIFIER 109
+#define SQL_CUR_DEFAULT SQL_CUR_USE_DRIVER
+#define SQL_CUR_USE_DRIVER 2UL
+#define SQL_CUR_USE_IF_NEEDED 0UL
+#define SQL_CUR_USE_ODBC 1UL
+#define SQL_CURSOR_COMMIT_BEHAVIOR 23
+#define SQL_CURSOR_DYNAMIC 2UL
+#define SQL_CURSOR_FORWARD_ONLY 0UL
+#define SQL_CURSOR_KEYSET_DRIVEN 1UL
+#define SQL_CURSOR_ROLLBACK_BEHAVIOR 24
+#define SQL_CURSOR_STATIC 3UL
+#define SQL_CURSOR_TYPE 6
+#define SQL_CURSOR_TYPE_DEFAULT SQL_CURSOR_FORWARD_ONLY
+#define SQL_CVT_BIGINT 0x00004000L
+#define SQL_CVT_BINARY 0x00000400L
+#define SQL_CVT_BIT 0x00001000L
+#define SQL_CVT_CHAR 1
+#define SQL_CVT_DATE 0x00008000L
+#define SQL_CVT_DECIMAL 4
+#define SQL_CVT_DOUBLE 128
+#define SQL_CVT_FLOAT 32
+#define SQL_CVT_INTEGER 8
+#define SQL_CVT_LONGVARBINARY 0x00040000L
+#define SQL_CVT_LONGVARCHAR 512
+#define SQL_CVT_NUMERIC 2
+#define SQL_CVT_REAL 64
+#define SQL_CVT_SMALLINT 16
+#define SQL_CVT_TIME 0x10000L
+#define SQL_CVT_TIMESTAMP 0x20000L
+#define SQL_CVT_TINYINT 0x2000L
+#define SQL_CVT_VARBINARY 0x800L
+#define SQL_CVT_VARCHAR 256
+#define SQL_DATABASE_NAME 16
+#define SQL_DATA_AT_EXEC (-2)
+#define SQL_DATA_SOURCE_NAME 2
+#define SQL_DATA_SOURCE_READ_ONLY 25
+#define SQL_DATE 9
+#define SQL_DBMS_NAME 17
+#define SQL_DBMS_VER 18
+#define SQL_DECIMAL 3
+#define SQL_DEFAULT_TXN_ISOLATION 26
+#define SQL_DOUBLE 8
+#define SQL_DRIVER_HDBC 3
+#define SQL_DRIVER_HENV 4
+#define SQL_DRIVER_HLIB 76
+#define SQL_DRIVER_HSTMT 5
+#define SQL_DRIVER_NAME 6
+#define SQL_DRIVER_ODBC_VER 77
+#define SQL_DRIVER_VER 7
+#define SQL_DROP 1
+#define SQL_ENSURE 1
+#define SQL_ERROR (-1)
+#define SQL_EXPRESSIONS_IN_ORDERBY 27
+#define SQL_EXT_API_LAST SQL_API_SQLBINDPARAMETER
+#define SQL_EXT_API_START 40
+#define SQL_FD_FETCH_ABSOLUTE 16
+#define SQL_FD_FETCH_BOOKMARK 128
+#define SQL_FD_FETCH_FIRST 2
+#define SQL_FD_FETCH_LAST 4
+#define SQL_FD_FETCH_NEXT 1
+#define SQL_FD_FETCH_PREV SQL_FD_FETCH_PRIOR
+#define SQL_FD_FETCH_PRIOR 8
+#define SQL_FD_FETCH_RELATIVE 32
+#define SQL_FD_FETCH_RESUME 64
+#define SQL_FETCH_DIRECTION 8
+#define SQL_FETCH_FIRST 2
+#define SQL_FETCH_NEXT 1
+#define SQL_FETCH_PREV SQL_FETCH_PRIOR
+#define SQL_FETCH_RESUME 7
+#define SQL_FILE_NOT_SUPPORTED 0
+#define SQL_FILE_QUALIFIER 2
+#define SQL_FILE_TABLE 1
+#define SQL_FILE_USAGE 84
+#define SQL_FLOAT 6
+#define SQL_FN_CVT_CONVERT 1
+#define SQL_FN_NUM_ABS 1
+#define SQL_FN_NUM_ACOS 2
+#define SQL_FN_NUM_ASIN 4
+#define SQL_FN_NUM_ATAN 8
+#define SQL_FN_NUM_ATAN2 16
+#define SQL_FN_NUM_CEILING 32
+#define SQL_FN_NUM_COS 64
+#define SQL_FN_NUM_COT 128
+#define SQL_FN_NUM_DEGREES 0x40000L
+#define SQL_FN_NUM_EXP 256
+#define SQL_FN_NUM_FLOOR 512
+#define SQL_FN_NUM_LOG 1024
+#define SQL_FN_NUM_LOG10 0x80000L
+#define SQL_FN_NUM_MOD 0x800L
+#define SQL_FN_NUM_PI 0x10000L
+#define SQL_FN_NUM_POWER 0x100000L
+#define SQL_FN_NUM_RADIANS 0x200000L
+#define SQL_FN_NUM_RAND 0x20000L
+#define SQL_FN_NUM_ROUND 0x400000L
+#define SQL_FN_NUM_SIGN 0x1000L
+#define SQL_FN_NUM_SIN 0x2000L
+#define SQL_FN_NUM_SQRT 0x00004000L
+#define SQL_FN_NUM_TAN 0x00008000L
+#define SQL_FN_NUM_TRUNCATE 0x00800000L
+#define SQL_FN_STR_ASCII 0x00002000L
+#define SQL_FN_STR_CHAR 0x00004000L
+#define SQL_FN_STR_CONCAT 1
+#define SQL_FN_STR_DIFFERENCE 0x00008000L
+#define SQL_FN_STR_INSERT 2
+#define SQL_FN_STR_LCASE 64
+#define SQL_FN_STR_LEFT 4
+#define SQL_FN_STR_LENGTH 16
+#define SQL_FN_STR_LOCATE 32
+#define SQL_FN_STR_LOCATE_2 0x00010000L
+#define SQL_FN_STR_LTRIM 8
+#define SQL_FN_STR_REPEAT 128
+#define SQL_FN_STR_REPLACE 256
+#define SQL_FN_STR_RIGHT 512
+#define SQL_FN_STR_RTRIM 1024
+#define SQL_FN_STR_SOUNDEX 0x00020000L
+#define SQL_FN_STR_SPACE 0x00040000L
+#define SQL_FN_STR_SUBSTRING 0x00000800L
+#define SQL_FN_STR_UCASE 0x00001000L
+#define SQL_FN_SYS_DBNAME 0x00000002L
+#define SQL_FN_SYS_IFNULL 0x00000004L
+#define SQL_FN_SYS_USERNAME 0x00000001L
+#define SQL_FN_TD_CURDATE 0x00000002L
+#define SQL_FN_TD_CURTIME 0x00000200L
+#define SQL_FN_TD_DAYNAME 0x00008000L
+#define SQL_FN_TD_DAYOFMONTH 0x00000004L
+#define SQL_FN_TD_DAYOFWEEK 0x00000008L
+#define SQL_FN_TD_DAYOFYEAR 0x00000010L
+#define SQL_FN_TD_HOUR 0x00000400L
+#define SQL_FN_TD_MINUTE 0x00000800L
+#define SQL_FN_TD_MONTH 32
+#define SQL_FN_TD_MONTHNAME 0x00010000L
+#define SQL_FN_TD_NOW 1
+#define SQL_FN_TD_QUARTER 64
+#define SQL_FN_TD_SECOND 0x00001000L
+#define SQL_FN_TD_TIMESTAMPADD 0x00002000L
+#define SQL_FN_TD_TIMESTAMPDIFF 0x00004000L
+#define SQL_FN_TD_WEEK 128
+#define SQL_FN_TD_YEAR 256
+#define SQL_FN_TSI_DAY 16
+#define SQL_FN_TSI_FRAC_SECOND 1
+#define SQL_FN_TSI_HOUR 8
+#define SQL_FN_TSI_MINUTE 4
+#define SQL_FN_TSI_MONTH 64
+#define SQL_FN_TSI_QUARTER 128
+#define SQL_FN_TSI_SECOND 2
+#define SQL_FN_TSI_WEEK 32
+#define SQL_FN_TSI_YEAR 256
+#define SQL_GB_GROUP_BY_CONTAINS_SELECT 2
+#define SQL_GB_GROUP_BY_EQUALS_SELECT 1
+#define SQL_GB_NOT_SUPPORTED 0
+#define SQL_GB_NO_RELATION 3
+#define SQL_GD_ANY_COLUMN 1
+#define SQL_GD_ANY_ORDER 2
+#define SQL_GD_BLOCK 4
+#define SQL_GD_BOUND 8
+#define SQL_GETDATA_EXTENSIONS 81
+#define SQL_GET_BOOKMARK 13
+#define SQL_GROUP_BY 88
+#define SQL_IC_LOWER 2
+#define SQL_IC_MIXED 4
+#define SQL_IC_SENSITIVE 3
+#define SQL_IC_UPPER 1
+#define SQL_IDENTIFIER_CASE 28
+#define SQL_IDENTIFIER_QUOTE_CHAR 29
+#define SQL_INDEX_ALL 1
+#define SQL_INDEX_CLUSTERED 1
+#define SQL_INDEX_HASHED 2
+#define SQL_INDEX_OTHER 3
+#define SQL_INDEX_UNIQUE 0
+#define SQL_INFO_DRIVER_START 1000
+#define SQL_INFO_FIRST 0
+#define SQL_INFO_LAST SQL_QUALIFIER_LOCATION
+#define SQL_INTEGER 4
+#define SQL_INTERVAL_DAY (-83)
+#define SQL_INTERVAL_DAY_TO_HOUR (-87)
+#define SQL_INTERVAL_DAY_TO_MINUTE (-88)
+#define SQL_INTERVAL_DAY_TO_SECOND (-89)
+#define SQL_INTERVAL_HOUR (-84)
+#define SQL_INTERVAL_HOUR_TO_MINUTE (-90)
+#define SQL_INTERVAL_HOUR_TO_SECOND (-91)
+#define SQL_INTERVAL_MINUTE (-85)
+#define SQL_INTERVAL_MINUTE_TO_SECOND (-92)
+#define SQL_INTERVAL_MONTH (-81)
+#define SQL_INTERVAL_SECOND (-86)
+#define SQL_INTERVAL_YEAR (-80)
+#define SQL_INTERVAL_YEAR_TO_MONTH (-82)
+#define SQL_INVALID_HANDLE (-2)
+#define SQL_KEYSET_SIZE 8
+#define SQL_KEYSET_SIZE_DEFAULT 0
+#define SQL_KEYWORDS 89
+#define SQL_LCK_EXCLUSIVE 2
+#define SQL_LCK_NO_CHANGE 1
+#define SQL_LCK_UNLOCK 4
+#define SQL_LIKE_ESCAPE_CLAUSE 113
+#define SQL_LIKE_ONLY 1
+#define SQL_LOCK_TYPES 78
+#define SQL_LOGIN_TIMEOUT 103
+#define SQL_LOGIN_TIMEOUT_DEFAULT 15UL
+#define SQL_LONGVARBINARY (-4)
+#define SQL_LONGVARCHAR (-1)
+#define SQL_MAX_BINARY_LITERAL_LEN 112
+#define SQL_MAX_CHAR_LITERAL_LEN 108
+#define SQL_MAX_COLUMNS_IN_GROUP_BY 97
+#define SQL_MAX_COLUMNS_IN_INDEX 98
+#define SQL_MAX_COLUMNS_IN_ORDER_BY 99
+#define SQL_MAX_COLUMNS_IN_SELECT 100
+#define SQL_MAX_COLUMNS_IN_TABLE 101
+#define SQL_MAX_COLUMN_NAME_LEN 30
+#define SQL_MAX_CURSOR_NAME_LEN 31
+#define SQL_MAX_DSN_LENGTH 32
+#define SQL_MAX_INDEX_SIZE 102
+#define SQL_MAX_LENGTH 3
+#define SQL_MAX_LENGTH_DEFAULT 0
+#define SQL_MAX_MESSAGE_LENGTH 512
+#define SQL_MAX_OPTION_STRING_LENGTH 256
+#define SQL_MAX_OWNER_NAME_LEN 32
+#define SQL_MAX_PROCEDURE_NAME_LEN 33
+#define SQL_MAX_QUALIFIER_NAME_LEN 34
+#define SQL_MAX_ROWS 1
+#define SQL_MAX_ROWS_DEFAULT 0UL
+#define SQL_MAX_ROW_SIZE 104
+#define SQL_MAX_ROW_SIZE_INCLUDES_LONG 103
+#define SQL_MAX_STATEMENT_LEN 105
+#define SQL_MAX_TABLES_IN_SELECT 106
+#define SQL_MAX_TABLE_NAME_LEN 35
+#define SQL_MAX_USER_NAME_LEN 107
+#define SQL_MODE_DEFAULT SQL_MODE_READ_WRITE
+#define SQL_MODE_READ_ONLY 1UL
+#define SQL_MODE_READ_WRITE 0UL
+#define SQL_MULTIPLE_ACTIVE_TXN 37
+#define SQL_MULT_RESULT_SETS 36
+#define SQL_NC_END 4
+#define SQL_NC_HIGH 0
+#define SQL_NC_LOW 1
+#define SQL_NC_START 2
+#define SQL_NEED_DATA 99
+#define SQL_NEED_LONG_DATA_LEN 111
+#define SQL_NNC_NON_NULL 1
+#define SQL_NNC_NULL 0
+#define SQL_NON_NULLABLE_COLUMNS 75
+#define SQL_NOSCAN 2
+#define SQL_NOSCAN_DEFAULT SQL_NOSCAN_OFF
+#define SQL_NOSCAN_OFF 0
+#define SQL_NOSCAN_ON 1
+#define SQL_NO_DATA 100
+#define SQL_NO_NULLS 0
+#define SQL_NO_TOTAL (-4)
+#define SQL_NTS (-3)
+#define SQL_NULLABLE 1
+#define SQL_NULLABLE_UNKNOWN 2
+#define SQL_NULL_COLLATION 85
+#define SQL_NULL_DATA (-1)
+#define SQL_NULL_HDBC 0
+#define SQL_NULL_HENV 0
+#define SQL_NULL_HSTMT 0
+#define SQL_NUMERIC 2
+#define SQL_NUMERIC_FUNCTIONS 49
+#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1)
+#define SQL_NUM_FUNCTIONS 23
+#define SQL_OAC_LEVEL1 1
+#define SQL_OAC_LEVEL2 2
+#define SQL_OAC_NONE 0
+#define SQL_ODBC_API_CONFORMANCE 9
+#define SQL_ODBC_CURSORS 110
+#define SQL_ODBC_KEYWORDS "ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\
+"ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\
+"BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\
+"CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\
+"COBOL,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\
+"CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\
+"CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\
+"DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,"\
+"DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\
+"DISTINCT,DOMAIN,DOUBLE,DROP,""ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,"\
+"EXISTS,EXTERNAL,EXTRACT,""FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\
+"GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
+"IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\
+"INPUT,INSENSITIVE,INSERT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,"\
+"JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\
+"MATCH,MAX,MIN,MINUTE,MODULE,MONTH,MUMPS,"\
+"NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\
+"OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\
+"PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\
+"PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\
+"REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS,"\
+"SCHEMA,SCROLL,SECOND,SECTION,SELECT,SEQUENCE,SESSION,SESSION_USER,SET,SIZE,"\
+"SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\
+"SUBSTRING,SUM,SYSTEM_USER,"\
+"TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\
+"TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\
+"UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\
+"VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,YEAR"
+#define SQL_ODBC_SAG_CLI_CONFORMANCE 12
+#define SQL_ODBC_SQL_CONFORMANCE 15
+#define SQL_ODBC_SQL_OPT_IEF 73
+#define SQL_ODBC_VER 10
+#define SQL_OJ_ALL_COMPARISON_OPS 64
+#define SQL_OJ_CAPABILITIES 65003
+#define SQL_OJ_FULL 4
+#define SQL_OJ_INNER 32
+#define SQL_OJ_LEFT 1
+#define SQL_OJ_NESTED 8
+#define SQL_OJ_NOT_ORDERED 16
+#define SQL_OJ_RIGHT 2
+#define SQL_OPT_TRACE_OFF 0
+#define SQL_OPT_TRACE_ON 1
+#define SQL_OPT_TRACE 104
+#define SQL_OPT_TRACEFILE 105
+#define SQL_OPT_TRACE_DEFAULT SQL_OPT_TRACE_OFF
+#define SQL_OPT_TRACE_FILE_DEFAULT "\\SQL.LOG"
+#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90
+#define SQL_OSCC_COMPLIANT 1
+#define SQL_OSCC_NOT_COMPLIANT 0
+#define SQL_OSC_CORE 1
+#define SQL_OSC_EXTENDED 2
+#define SQL_OSC_MINIMUM 0
+#define SQL_OUTER_JOINS 38
+#define SQL_OU_DML_STATEMENTS 1
+#define SQL_OU_INDEX_DEFINITION 8
+#define SQL_OU_PRIVILEGE_DEFINITION 16
+#define SQL_OU_PROCEDURE_INVOCATION 2
+#define SQL_OU_TABLE_DEFINITION 4
+#define SQL_OWNER_TERM 39
+#define SQL_OWNER_USAGE 91
+#define SQL_PC_NOT_PSEUDO 1
+#define SQL_PC_PSEUDO 2
+#define SQL_PC_UNKNOWN 0
+#define SQL_PC_NON_PSEUDO SQL_PC_NOT_PSEUDO
+#define SQL_POSITIONED_STATEMENTS 80
+#define SQL_POS_ADD 16
+#define SQL_POS_DELETE 8
+#define SQL_POS_OPERATIONS 79
+#define SQL_POS_POSITION 1
+#define SQL_POS_REFRESH 2
+#define SQL_POS_UPDATE 4
+#define SQL_PROCEDURES 21
+#define SQL_PROCEDURE_TERM 40
+#define SQL_PS_POSITIONED_DELETE 1
+#define SQL_PS_POSITIONED_UPDATE 2
+#define SQL_PS_SELECT_FOR_UPDATE 4
+#define SQL_QL_END 2
+#define SQL_QL_START 1
+#define SQL_QUALIFIER_LOCATION 114
+#define SQL_QUALIFIER_NAME_SEPARATOR 41
+#define SQL_QUALIFIER_TERM 42
+#define SQL_QUALIFIER_USAGE 92
+#define SQL_QUERY_TIMEOUT 0
+#define SQL_QUERY_TIMEOUT_DEFAULT 0UL
+#define SQL_QUICK 0
+#define SQL_QUIET_MODE 111
+#define SQL_QUOTED_IDENTIFIER_CASE 93
+#define SQL_QU_DML_STATEMENTS 1
+#define SQL_QU_INDEX_DEFINITION 8
+#define SQL_QU_PRIVILEGE_DEFINITION 16
+#define SQL_QU_PROCEDURE_INVOCATION 2
+#define SQL_QU_TABLE_DEFINITION 4
+#define SQL_RD_DEFAULT SQL_RD_ON
+#define SQL_RD_OFF 0
+#define SQL_RD_ON 1
+#define SQL_REAL 7
+#define SQL_RESET_PARAMS 3
+#define SQL_RETRIEVE_DATA 11
+#define SQL_ROLLBACK 1
+#define SQL_ROWSET_SIZE 9
+#define SQL_ROWSET_SIZE_DEFAULT 1UL
+#define SQL_ROWVER 2
+#define SQL_ROW_NUMBER 14
+#define SQL_ROW_UPDATES 11
+#define SQL_SCCO_LOCK 2
+#define SQL_SCCO_OPT_ROWVER 4
+#define SQL_SCCO_OPT_TIMESTAMP SQL_SCCO_OPT_ROWVER
+#define SQL_SCCO_OPT_VALUES 8
+#define SQL_SCCO_READ_ONLY 1
+#define SQL_SCOPE_CURROW 0
+#define SQL_SCOPE_SESSION 2
+#define SQL_SCOPE_TRANSACTION 1
+#define SQL_SCROLL_CONCURRENCY 43
+#define SQL_SCROLL_DYNAMIC (-2L)
+#define SQL_SCROLL_FORWARD_ONLY 0
+#define SQL_SCROLL_KEYSET_DRIVEN (-1L)
+#define SQL_SCROLL_OPTIONS 44
+#define SQL_SCROLL_STATIC (-3L)
+#define SQL_SC_NON_UNIQUE 0
+#define SQL_SC_TRY_UNIQUE 1
+#define SQL_SC_UNIQUE 2
+#define SQL_SEARCHABLE 3
+#define SQL_SEARCH_PATTERN_ESCAPE 14
+#define SQL_SERVER_NAME 13
+#define SQL_SIGNED_OFFSET (-20)
+#define SQL_SIMULATE_CURSOR 10
+#define SQL_SMALLINT 5
+#define SQL_SO_DYNAMIC 4
+#define SQL_SO_FORWARD_ONLY 1
+#define SQL_SO_KEYSET_DRIVEN 2
+#define SQL_SO_MIXED 8
+#define SQL_SO_STATIC 16
+#define SQL_SPECIAL_CHARACTERS 94
+#define SQL_SQLSTATE_SIZE 5
+#define SQL_SQ_COMPARISON 1
+#define SQL_SQ_CORRELATED_SUBQUERIES 16
+#define SQL_SQ_EXISTS 2
+#define SQL_SQ_IN 4
+#define SQL_SQ_QUANTIFIED 8
+#define SQL_SS_ADDITIONS 1
+#define SQL_SS_DELETIONS 2
+#define SQL_SS_UPDATES 4
+#define SQL_STATIC_SENSITIVITY 83
+#define SQL_STILL_EXECUTING 2
+#define SQL_STMT_OPT_MAX SQL_ROW_NUMBER
+#define SQL_STMT_OPT_MIN SQL_QUERY_TIMEOUT
+#define SQL_STRING_FUNCTIONS 50
+#define SQL_SUBQUERIES 95
+#define SQL_SUCCESS 0
+#define SQL_SUCCESS_WITH_INFO 1
+#define SQL_SYSTEM_FUNCTIONS 51
+#define SQL_TABLE_STAT 0
+#define SQL_TABLE_TERM 45
+#define SQL_TC_ALL 0x0002
+#define SQL_TC_DDL_COMMIT 3
+#define SQL_TC_DDL_IGNORE 4
+#define SQL_TC_DML 1
+#define SQL_TC_NONE 0
+#define SQL_TIME 10
+#define SQL_TIMEDATE_ADD_INTERVALS 109
+#define SQL_TIMEDATE_DIFF_INTERVALS 110
+#define SQL_TIMEDATE_FUNCTIONS 52
+#define SQL_TIMESTAMP 11
+#define SQL_TINYINT (-6)
+#define SQL_TRANSLATE_DLL 106
+#define SQL_TRANSLATE_OPTION 107
+#define SQL_TXN_CAPABLE 46
+#define SQL_TXN_ISOLATION 108
+#define SQL_TXN_ISOLATION_OPTION 72
+#define SQL_TXN_READ_COMMITTED 2
+#define SQL_TXN_READ_UNCOMMITTED 1
+#define SQL_TXN_REPEATABLE_READ 4
+#define SQL_TXN_SERIALIZABLE 8
+#define SQL_TXN_VERSIONING 16
+#define SQL_TYPE_NULL 0
+#define SQL_UB_OFF 0
+#define SQL_UB_ON 1
+#define SQL_UNBIND 2
+#define SQL_UNICODE (-95)
+#define SQL_UNICODE_CHAR SQL_UNICODE
+#define SQL_UNICODE_LONGVARCHAR (-97)
+#define SQL_UNICODE_VARCHAR (-96)
+#define SQL_UNION 96
+#define SQL_UNSEARCHABLE 0
+#define SQL_UNSIGNED_OFFSET (-22)
+#define SQL_USER_NAME 47
+#define SQL_USE_BOOKMARKS 12
+#define SQL_U_UNION 1
+#define SQL_U_UNION_ALL 2
+#define SQL_VARBINARY (-3)
+#define SQL_VARCHAR 12
+#define SQL_C_BINARY SQL_BINARY
+#define SQL_C_BIT SQL_BIT
+#define SQL_C_BOOKMARK SQL_C_ULONG
+#define SQL_C_CHAR SQL_CHAR
+#define SQL_C_DATE SQL_DATE
+#define SQL_C_DEFAULT 99
+#define SQL_C_DOUBLE SQL_DOUBLE
+#define SQL_C_FLOAT SQL_REAL
+#define SQL_C_LONG SQL_INTEGER
+#define SQL_C_SHORT SQL_SMALLINT
+#define SQL_C_SLONG SQL_C_LONG+SQL_SIGNED_OFFSET
+#define SQL_C_SSHORT SQL_C_SHORT+SQL_SIGNED_OFFSET
+#define SQL_C_STINYINT SQL_TINYINT+SQL_SIGNED_OFFSET
+#define SQL_C_TIME SQL_TIME
+#define SQL_C_TIMESTAMP SQL_TIMESTAMP
+#define SQL_C_TINYINT SQL_TINYINT
+#define SQL_C_ULONG SQL_C_LONG+SQL_UNSIGNED_OFFSET
+#define SQL_C_USHORT SQL_C_SHORT+SQL_UNSIGNED_OFFSET
+#define SQL_C_UTINYINT SQL_TINYINT+SQL_UNSIGNED_OFFSET
+#define SQL_TYPE_DRIVER_END SQL_UNICODE_LONGVARCHAR
+#define SQL_TYPE_DRIVER_START SQL_INTERVAL_YEAR
+#define SQL_TYPE_MAX SQL_VARCHAR
+#define SQL_TYPE_MIN SQL_BIT
+#define SQL_UB_DEFAULT SQL_UB_OFF
+
+SQLRETURN SQL_API SQLAllocConnect(SQLHENV,SQLHDBC*);
+SQLRETURN SQL_API SQLAllocEnv(SQLHENV *);
+SQLRETURN SQL_API SQLAllocStmt(SQLHDBC,SQLHSTMT*);
+SQLRETURN SQL_API SQLAllocHandle(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
+SQLRETURN SQL_API SQLBindCol(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLCancel(SQLHSTMT);
+SQLRETURN SQL_API SQLColAttributes(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*,SQLINTEGER*);
+SQLRETURN SQL_API SQLConnect(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLDescribeCol(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLUINTEGER*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLDisconnect(SQLHDBC);
+SQLRETURN SQL_API SQLError(SQLHENV,SQLHDBC,SQLHSTMT,SQLCHAR*,SQLINTEGER*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLExecDirect(SQLHSTMT,SQLCHAR*,SQLINTEGER);
+SQLRETURN SQL_API SQLExecute(SQLHSTMT);
+SQLRETURN SQL_API SQLFetch(SQLHSTMT);
+SQLRETURN SQL_API SQLFreeConnect(SQLHDBC);
+SQLRETURN SQL_API SQLFreeEnv(SQLHENV);
+SQLRETURN SQL_API SQLFreeStmt(SQLHSTMT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLFreeHandle(SQLSMALLINT,SQLHANDLE);
+SQLRETURN SQL_API SQLGetCursorName(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLNumResultCols(SQLHSTMT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLPrepare(SQLHSTMT,SQLCHAR*,SQLINTEGER);
+SQLRETURN SQL_API SQLRowCount(SQLHSTMT,SQLINTEGER*);
+SQLRETURN SQL_API SQLSetCursorName(SQLHSTMT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLTransact(SQLHENV,SQLHDBC,SQLUSMALLINT);
+SQLRETURN SQL_API SQLSetParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLUINTEGER,SQLSMALLINT,SQLPOINTER,SQLINTEGER*);
+SQLRETURN SQL_API SQLColumns(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLGetConnectOption(SQLHDBC,SQLUSMALLINT,SQLPOINTER);
+SQLRETURN SQL_API SQLGetData(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLGetFunctions(SQLHDBC,SQLUSMALLINT,SQLUSMALLINT*);
+SQLRETURN SQL_API SQLGetInfo(SQLHDBC,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLGetStmtOption(SQLHSTMT,SQLUSMALLINT,SQLPOINTER);
+SQLRETURN SQL_API SQLGetTypeInfo(SQLHSTMT,SQLSMALLINT);
+SQLRETURN SQL_API SQLParamData(SQLHSTMT,SQLPOINTER*);
+SQLRETURN SQL_API SQLPutData(SQLHSTMT,SQLPOINTER,SQLINTEGER);
+SQLRETURN SQL_API SQLSetConnectOption(SQLHDBC,SQLUSMALLINT,SQLUINTEGER);
+SQLRETURN SQL_API SQLSetStmtOption(SQLHSTMT,SQLUSMALLINT,SQLUINTEGER);
+SQLRETURN SQL_API SQLSpecialColumns(SQLHSTMT,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT fNullable);
+SQLRETURN SQL_API SQLStatistics(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLTables(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLDataSources(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLSetScrollOptions(SQLHSTMT,SQLUSMALLINT,SQLINTEGER,SQLUSMALLINT);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/sqlext.h b/winsup/w32api/include/sqlext.h
new file mode 100644
index 000000000..fc0538601
--- /dev/null
+++ b/winsup/w32api/include/sqlext.h
@@ -0,0 +1,79 @@
+#ifndef _SQLEXT_H
+#define _SQLEXT_H
+#include <sql.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SQL_DEFAULT_PARAM (-5)
+#define SQL_IGNORE (-6)
+#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100)
+#define SQL_LEN_DATA_AT_EXEC(l) (-l+SQL_LEN_DATA_AT_EXEC_OFFSET)
+#define SQL_ENTIRE_ROWSET 0
+#define SQL_POSITION 0
+#define SQL_REFRESH 1
+#define SQL_UPDATE 2
+#define SQL_DELETE 3
+#define SQL_ADD 4
+#define SQL_LOCK_NO_CHANGE 0
+#define SQL_LOCK_EXCLUSIVE 1
+#define SQL_LOCK_UNLOCK 2
+#define SQL_POSITION_TO(s,r) SQLSetPos(s,r,SQL_POSITION,SQL_LOCK_NO_CHANGE)
+#define SQL_LOCK_RECORD(s,i,l) SQLSetPos(s,r,SQL_POSITION,l)
+#define SQL_REFRESH_RECORD(s,i,f) SQLSetPos(s,r,SQL_REFRESH,fLock)
+#define SQL_UPDATE_RECORD(s,r) SQLSetPos(s,r,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
+#define SQL_DELETE_RECORD(s,r) SQLSetPos(s,r,SQL_DELETE,SQL_LOCK_NO_CHANGE)
+#define SQL_ADD_RECORD(s,r) SQLSetPos(s,r,SQL_ADD,SQL_LOCK_NO_CHANGE)
+#define SQL_DRIVER_NOPROMPT 0
+#define SQL_DRIVER_COMPLETE 1
+#define SQL_DRIVER_PROMPT 2
+#define SQL_DRIVER_COMPLETE_REQUIRED 3
+#define SQL_FETCH_LAST 3
+#define SQL_FETCH_PRIOR 4
+#define SQL_FETCH_ABSOLUTE 5
+#define SQL_FETCH_RELATIVE 6
+#define SQL_FETCH_BOOKMARK 8
+#define SQL_ROW_SUCCESS 0
+#define SQL_ROW_DELETED 1
+#define SQL_ROW_UPDATED 2
+#define SQL_ROW_NOROW 3
+#define SQL_ROW_ADDED 4
+#define SQL_ROW_ERROR 5
+#define SQL_CASCADE 0
+#define SQL_RESTRICT 1
+#define SQL_SET_NULL 2
+#define SQL_NO_ACTION 3
+#define SQL_SET_DEFAULT 4
+#define SQL_PARAM_TYPE_UNKNOWN 0
+#define SQL_PARAM_INPUT 1
+#define SQL_PARAM_INPUT_OUTPUT 2
+#define SQL_RESULT_COL 3
+#define SQL_PARAM_OUTPUT 4
+#define SQL_RETURN_VALUE 5
+#define SQL_PT_UNKNOWN 0
+#define SQL_PT_PROCEDURE 1
+#define SQL_PT_FUNCTION 2
+#define SQL_PARAM_TYPE_DEFAULT SQL_PARAM_INPUT_OUTPUT
+#define SQL_SETPARAM_VALUE_MAX (-1L)
+#define SQL_NO_DATA_FOUND SQL_NO_DATA
+
+SQLRETURN SQL_API SQLDriverConnect(SQLHDBC,SQLHWND,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
+SQLRETURN SQL_API SQLBrowseConnect(SQLHDBC,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLColumnPrivileges(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLDescribeParam(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLUINTEGER*,SQLSMALLINT*,SQLSMALLINT*);
+SQLRETURN SQL_API SQLExtendedFetch(SQLHSTMT,SQLUSMALLINT,SQLINTEGER,SQLUINTEGER*,SQLUSMALLINT*);
+SQLRETURN SQL_API SQLForeignKeys(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLMoreResults(SQLHSTMT);
+SQLRETURN SQL_API SQLNativeSql(SQLHDBC,SQLCHAR*,SQLINTEGER,SQLCHAR*,SQLINTEGER,SQLINTEGER*);
+SQLRETURN SQL_API SQLNumParams(SQLHSTMT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLParamOptions(SQLHSTMT,SQLUINTEGER,SQLUINTEGER*);
+SQLRETURN SQL_API SQLPrimaryKeys(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLProcedureColumns(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLProcedures(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLSetPos(SQLHSTMT,SQLUSMALLINT,SQLUSMALLINT,SQLUSMALLINT);
+SQLRETURN SQL_API SQLTablePrivileges(SQLHSTMT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT,SQLCHAR*,SQLSMALLINT);
+SQLRETURN SQL_API SQLDrivers(SQLHENV,SQLUSMALLINT,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLCHAR*,SQLSMALLINT,SQLSMALLINT*);
+SQLRETURN SQL_API SQLBindParameter(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLUINTEGER,SQLSMALLINT,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/sqltypes.h b/winsup/w32api/include/sqltypes.h
new file mode 100644
index 000000000..4d9529d9d
--- /dev/null
+++ b/winsup/w32api/include/sqltypes.h
@@ -0,0 +1,61 @@
+#ifndef _SQLTYPES_H
+#define _SQLTYPES_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define SQL_API __stdcall
+#pragma pack(push,1)
+typedef signed char SCHAR;
+typedef long SDWORD;
+typedef short SWORD;
+typedef ULONG UDWORD;
+typedef USHORT UWORD;
+typedef long SLONG;
+typedef short SSHORT;
+typedef double SDOUBLE;
+typedef double LDOUBLE;
+typedef float SFLOAT;
+typedef PVOID PTR;
+typedef PVOID HENV;
+typedef PVOID HDBC;
+typedef PVOID HSTMT;
+typedef short RETCODE;
+typedef UCHAR SQLCHAR;
+typedef SCHAR SQLSCHAR;
+typedef SDWORD SQLINTEGER;
+typedef SWORD SQLSMALLINT;
+typedef UDWORD SQLUINTEGER;
+typedef UWORD SQLUSMALLINT;
+typedef PVOID SQLPOINTER;
+typedef HENV SQLHENV;
+typedef HDBC SQLHDBC;
+typedef HSTMT SQLHSTMT;
+typedef SQLSMALLINT SQLRETURN;
+typedef HWND SQLHWND;
+typedef ULONG BOOKMARK;
+typedef struct tagDATE_STRUCT {
+ SQLSMALLINT year;
+ SQLUSMALLINT month;
+ SQLUSMALLINT day;
+} DATE_STRUCT;
+typedef struct tagTIME_STRUCT {
+ SQLUSMALLINT hour;
+ SQLUSMALLINT minute;
+ SQLUSMALLINT second;
+} TIME_STRUCT;
+typedef struct tagTIMESTAMP_STRUCT {
+ SQLSMALLINT year;
+ SQLUSMALLINT month;
+ SQLUSMALLINT day;
+ SQLUSMALLINT hour;
+ SQLUSMALLINT minute;
+ SQLUSMALLINT second;
+ SQLUINTEGER fraction;
+} TIMESTAMP_STRUCT;
+typedef void* SQLHANDLE;
+typedef SQLHANDLE SQLHDESC;
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/unknwn.h b/winsup/w32api/include/unknwn.h
new file mode 100644
index 000000000..48cea3bc1
--- /dev/null
+++ b/winsup/w32api/include/unknwn.h
@@ -0,0 +1,67 @@
+#ifndef _UNKNWN_H
+#define _UNKNWN_H
+#include <windows.h>
+#ifdef __cplusplus
+extern "C"{
+#endif
+#include <objfwd.h>
+#include <wtypes.h>
+
+void * __RPC_USER MIDL_user_allocate(size_t);
+void __RPC_USER MIDL_user_free(void*);
+EXTERN_C const IID IID_IUnknown;
+EXTERN_C const IID IID_IClassFactory;
+#ifndef __IUnknown_INTERFACE_DEFINED__
+#define __IUnknown_INTERFACE_DEFINED__
+#undef INTERFACE
+#define INTERFACE IUnknown
+DECLARE_INTERFACE(IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+};
+typedef IUnknown *LPUNKNOWN;
+#endif
+#ifndef __IClassFactory_INTERFACE_DEFINED__
+#define __IClassFactory_INTERFACE_DEFINED__
+#undef INTERFACE
+#define INTERFACE IClassFactory
+DECLARE_INTERFACE_(IClassFactory,IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
+ STDMETHOD(LockServer)(THIS_ BOOL) PURE;
+};
+typedef IClassFactory *LPCLASSFACTORY;
+#endif
+HRESULT STDMETHODCALLTYPE IUnknown_QueryInterface_Proxy(IUnknown*,REFIID,void**);
+void __RPC_STUB IUnknown_QueryInterface_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IUnknown_AddRef_Proxy(IUnknown*);
+void __RPC_STUB IUnknown_AddRef_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+ULONG STDMETHODCALLTYPE IUnknown_Release_Proxy(IUnknown*);
+void __RPC_STUB IUnknown_Release_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IClassFactory_RemoteCreateInstance_Proxy(IClassFactory*,REFIID,IUnknown**);
+void __RPC_STUB IClassFactory_RemoteCreateInstance_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+HRESULT __stdcall IClassFactory_RemoteLockServer_Proxy(IClassFactory*,BOOL);
+void __RPC_STUB IClassFactory_RemoteLockServer_Stub(LPRPCSTUBBUFFER,LPRPCCHANNELBUFFER,PRPC_MESSAGE,PDWORD);
+HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Proxy(IClassFactory*,IUnknown*,REFIID,void**);
+HRESULT STDMETHODCALLTYPE IClassFactory_CreateInstance_Stub(IClassFactory*,REFIID,IUnknown**);
+HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Proxy(IClassFactory*,BOOL);
+HRESULT STDMETHODCALLTYPE IClassFactory_LockServer_Stub(IClassFactory*,BOOL);
+#ifdef COBJMACROS
+#define IUnknown_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O)
+#define IUnknown_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IUnknown_Release(T) (T)->lpVtbl->Release(T)
+#define IClassFactory_QueryInterface(T,r,O) (T)->lpVtbl->QueryInterface(T,r,O)
+#define IClassFactory_AddRef(T) (T)->lpVtbl->AddRef(T)
+#define IClassFactory_Release(T) (T)->lpVtbl->Release(T)
+#define IClassFactory_CreateInstance(T,p,r,O) (T)->lpVtbl->CreateInstance(T,p,r,O)
+#define IClassFactory_LockServer(T,f) (T)->lpVtbl->LockServer(T,f)
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/winbase.h b/winsup/w32api/include/winbase.h
new file mode 100644
index 000000000..eec682b66
--- /dev/null
+++ b/winsup/w32api/include/winbase.h
@@ -0,0 +1,1841 @@
+#ifndef _WINBASE_H
+#define _WINBASE_H
+#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 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 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 TLS_MINIMUM_AVAILABLE 64
+#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 VER_PLATFORM_WIN32s 0
+#define VER_PLATFORM_WIN32_WINDOWS 1
+#define VER_PLATFORM_WIN32_NT 2
+#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 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 {
+ union {
+ DWORD dwOemId;
+ 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 _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 _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;
+ 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)(HANDLE,LPCTSTR,LPCTSTR,WORD,LONG);
+typedef BOOL(CALLBACK *ENUMRESNAMEPROC)(HANDLE,LPCTSTR,LPTSTR,LONG);
+typedef BOOL(CALLBACK *ENUMRESTYPEPROC)(HANDLE,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(LPSTR,HWND,LPCOMMCONFIG);
+BOOL WINAPI CommConfigDialogW(LPWSTR,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 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);
+void WINAPI FreeLibraryAndExitThread(HMODULE,DWORD);
+#define FreeModule(m) FreeLibrary(m)
+#define FreeProcInstance(p) (void)(p)
+BOOL WINAPI FreeResource(HGLOBAL);
+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(LPCSTR,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);
+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);
+BOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD);
+BOOL WINAPI InitializeSid (PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
+PVOID WINAPI InterlockedCompareExchange(PVOID*,PVOID,PVOID);
+LONG WINAPI InterlockedDecrement(LPLONG);
+LONG WINAPI InterlockedExchange(PLONG,LONG);
+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 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);
+PVOID WINAPI VirtualAlloc(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;
+typedef OSVERSIONINFOW OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
+#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 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 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;
+typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO;
+#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 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 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/winsup/w32api/include/wincon.h b/winsup/w32api/include/wincon.h
new file mode 100644
index 000000000..4ed04abf1
--- /dev/null
+++ b/winsup/w32api/include/wincon.h
@@ -0,0 +1,203 @@
+#ifndef _WINCON_H
+#define _WINCON_H
+
+#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/winsup/w32api/include/wincrypt.h b/winsup/w32api/include/wincrypt.h
new file mode 100644
index 000000000..db6bd1e89
--- /dev/null
+++ b/winsup/w32api/include/wincrypt.h
@@ -0,0 +1,184 @@
+#ifndef _WINCRYPT_H
+#define _WINCRYPT_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0"
+#define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0"
+#define GET_ALG_CLASS(x) (x&57344)
+#define GET_ALG_TYPE(x) (x&7680)
+#define GET_ALG_SID(x) (x&511)
+#define ALG_CLASS_ANY 0
+#define ALG_CLASS_SIGNATURE 8192
+#define ALG_CLASS_MSG_ENCRYPT 16384
+#define ALG_CLASS_DATA_ENCRYPT 24576
+#define ALG_CLASS_HASH 32768
+#define ALG_CLASS_KEY_EXCHANGE 40960
+#define ALG_TYPE_ANY 0
+#define ALG_TYPE_DSS 512
+#define ALG_TYPE_RSA 1024
+#define ALG_TYPE_BLOCK 1536
+#define ALG_TYPE_STREAM 2048
+#define ALG_SID_ANY 0
+#define ALG_SID_RSA_ANY 0
+#define ALG_SID_RSA_PKCS 1
+#define ALG_SID_RSA_MSATWORK 2
+#define ALG_SID_RSA_ENTRUST 3
+#define ALG_SID_RSA_PGP 4
+#define ALG_SID_DSS_ANY 0
+#define ALG_SID_DSS_PKCS 1
+#define ALG_SID_DSS_DMS 2
+#define ALG_SID_DES 1
+#define ALG_SID_RC2 2
+#define ALG_SID_RC4 1
+#define ALG_SID_SEAL 2
+#define ALG_SID_MD2 1
+#define ALG_SID_MD4 2
+#define ALG_SID_MD5 3
+#define ALG_SID_SHA 4
+#define ALG_SID_MAC 5
+#define ALG_SID_EXAMPLE 80
+#define CALG_MD2 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD2)
+#define CALG_MD4 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD4)
+#define CALG_MD5 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MD5)
+#define CALG_SHA (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA)
+#define CALG_MAC (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_MAC)
+#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
+#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE|ALG_TYPE_DSS|ALG_SID_DSS_ANY)
+#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
+#define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES)
+#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
+#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4)
+#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL)
+#define CRYPT_VERIFYCONTEXT 0xF0000000
+#define CRYPT_NEWKEYSET 8
+#define CRYPT_DELETEKEYSET 16
+#define CRYPT_EXPORTABLE 1
+#define CRYPT_USER_PROTECTED 2
+#define CRYPT_CREATE_SALT 4
+#define CRYPT_UPDATE_KEY 8
+#define SIMPLEBLOB 1
+#define PUBLICKEYBLOB 6
+#define AT_KEYEXCHANGE 1
+#define AT_SIGNATURE 2
+#define CRYPT_USERDATA 1
+#define KP_IV 1
+#define KP_SALT 2
+#define KP_PADDING 3
+#define KP_MODE 4
+#define KP_MODE_BITS 5
+#define KP_PERMISSIONS 6
+#define KP_ALGID 7
+#define KP_BLOCKLEN 8
+#define PKCS5_PADDING 1
+#define CRYPT_MODE_CBC 1
+#define CRYPT_MODE_ECB 2
+#define CRYPT_MODE_OFB 3
+#define CRYPT_MODE_CFB 4
+#define CRYPT_MODE_CTS 5
+#define CRYPT_ENCRYPT 1
+#define CRYPT_DECRYPT 2
+#define CRYPT_EXPORT 4
+#define CRYPT_READ 8
+#define CRYPT_WRITE 16
+#define CRYPT_MAC 32
+#define HP_ALGID 1
+#define HP_HASHVAL 2
+#define HP_HASHSIZE 4
+#define CRYPT_FAILED FALSE
+#define CRYPT_SUCCEED TRUE
+#define RCRYPT_SUCCEEDED(r) ((r)==CRYPT_SUCCEED)
+#define RCRYPT_FAILED(r) ((r)==CRYPT_FAILED)
+#define PP_ENUMALGS 1
+#define PP_ENUMCONTAINERS 2
+#define PP_IMPTYPE 3
+#define PP_NAME 4
+#define PP_VERSION 5
+#define PP_CONTAINER 6
+#define CRYPT_FIRST 1
+#define CRYPT_NEXT 2
+#define CRYPT_IMPL_HARDWARE 1
+#define CRYPT_IMPL_SOFTWARE 2
+#define CRYPT_IMPL_MIXED 3
+#define CRYPT_IMPL_UNKNOWN 4
+#define PROV_RSA_FULL 1
+#define PROV_RSA_SIG 2
+#define PROV_DSS 3
+#define PROV_FORTEZZA 4
+#define PROV_MS_MAIL 5
+#define PROV_SSL 6
+#define PROV_STT_MER 7
+#define PROV_STT_ACQ 8
+#define PROV_STT_BRND 9
+#define PROV_STT_ROOT 10
+#define PROV_STT_ISS 11
+#define MAXUIDLEN 64
+#define CUR_BLOB_VERSION 2
+typedef UINT ALG_ID;
+typedef struct _VTableProvStruc {FARPROC FuncVerifyImage;} VTableProvStruc,*PVTableProvStruc;
+typedef ULONG HCRYPTPROV;
+typedef ULONG HCRYPTKEY;
+typedef ULONG HCRYPTHASH;
+typedef struct _PROV_ENUMALGS {
+ ALG_ID aiAlgid;
+ DWORD dwBitLen;
+ DWORD dwNameLen;
+ CHAR szName[20];
+} PROV_ENUMALGS;
+typedef struct _PUBLICKEYSTRUC {
+ BYTE bType;
+ BYTE bVersion;
+ WORD reserved;
+ ALG_ID aiKeyAlg;
+} PUBLICKEYSTRUC;
+typedef struct _RSAPUBKEY {
+ DWORD magic;
+ DWORD bitlen;
+ DWORD pubexp;
+} RSAPUBKEY;
+BOOL WINAPI CryptAcquireContextA(HCRYPTPROV*,LPCSTR,LPCSTR,DWORD,DWORD);
+BOOL WINAPI CryptAcquireContextW(HCRYPTPROV*,LPCWSTR,LPCWSTR,DWORD,DWORD);
+BOOL WINAPI CryptReleaseContext(HCRYPTPROV,DWORD);
+BOOL WINAPI CryptGenKey(HCRYPTPROV,ALG_ID,DWORD,HCRYPTKEY*);
+BOOL WINAPI CryptDeriveKey(HCRYPTPROV,ALG_ID,HCRYPTHASH,DWORD,HCRYPTKEY*);
+BOOL WINAPI CryptDestroyKey(HCRYPTKEY);
+BOOL WINAPI CryptSetKeyParam(HCRYPTKEY,DWORD,PBYTE,DWORD);
+BOOL WINAPI CryptGetKeyParam(HCRYPTKEY,DWORD,PBYTE,PDWORD,DWORD);
+BOOL WINAPI CryptSetHashParam(HCRYPTHASH,DWORD,PBYTE,DWORD);
+BOOL WINAPI CryptGetHashParam(HCRYPTHASH,DWORD,PBYTE,PDWORD,DWORD);
+BOOL WINAPI CryptSetProvParam(HCRYPTPROV,DWORD,PBYTE,DWORD);
+BOOL WINAPI CryptGetProvParam(HCRYPTPROV,DWORD,PBYTE,PDWORD,DWORD);
+BOOL WINAPI CryptGenRandom(HCRYPTPROV,DWORD,PBYTE);
+BOOL WINAPI CryptGetUserKey(HCRYPTPROV,DWORD,HCRYPTKEY*);
+BOOL WINAPI CryptExportKey(HCRYPTKEY,HCRYPTKEY,DWORD,DWORD,PBYTE,PDWORD);
+BOOL WINAPI CryptImportKey(HCRYPTPROV,PBYTE,DWORD,HCRYPTKEY,DWORD,HCRYPTKEY*);
+BOOL WINAPI CryptEncrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD,DWORD);
+BOOL WINAPI CryptDecrypt(HCRYPTKEY,HCRYPTHASH,BOOL,DWORD,PBYTE,PDWORD);
+BOOL WINAPI CryptCreateHash(HCRYPTPROV,ALG_ID,HCRYPTKEY,DWORD,HCRYPTHASH*);
+BOOL WINAPI CryptHashData(HCRYPTHASH,PBYTE,DWORD,DWORD);
+BOOL WINAPI CryptHashSessionKey(HCRYPTHASH,HCRYPTKEY,DWORD);
+BOOL WINAPI CryptGetHashValue(HCRYPTHASH,DWORD,PBYTE,PDWORD);
+BOOL WINAPI CryptDestroyHash(HCRYPTHASH);
+BOOL WINAPI CryptSignHashA(HCRYPTHASH,DWORD,LPCSTR,DWORD,PBYTE,PDWORD);
+BOOL WINAPI CryptSignHashW(HCRYPTHASH,DWORD,LPCWSTR,DWORD,PBYTE,PDWORD);
+BOOL WINAPI CryptVerifySignatureA(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCSTR,DWORD);
+BOOL WINAPI CryptVerifySignatureW(HCRYPTHASH,PBYTE,DWORD,HCRYPTKEY,LPCWSTR,DWORD);
+BOOL WINAPI CryptSetProviderA(LPCSTR,DWORD);
+BOOL WINAPI CryptSetProviderW(LPCWSTR,DWORD);
+#ifdef UNICODE
+#define CryptAcquireContext CryptAcquireContextW
+#define CryptSignHash CryptSignHashW
+#define CryptVerifySignature CryptVerifySignatureW
+#define CryptSetProvider CryptSetProviderW
+#define MS_DEF_PROV MS_DEF_PROV_W
+#else
+#define CryptAcquireContext CryptAcquireContextA
+#define CryptSignHash CryptSignHashA
+#define CryptVerifySignature CryptVerifySignatureA
+#define CryptSetProvider CryptSetProviderA
+#define MS_DEF_PROV MS_DEF_PROV_A
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/windef.h b/winsup/w32api/include/windef.h
new file mode 100644
index 000000000..433cacfbb
--- /dev/null
+++ b/winsup/w32api/include/windef.h
@@ -0,0 +1,223 @@
+#ifndef _WINDEF_H
+#define _WINDEF_H
+#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
+#define OPTIONAL
+
+#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)
+#define DECLSPEC_NORETURN __declspec(noreturn)
+#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 __OBJC__
+typedef WINBOOL BOOL;
+#else
+#define BOOL WINBOOL
+#endif
+typedef BOOL *PBOOL,*LPBOOL;
+typedef unsigned char BYTE;
+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
+typedef WORD ATOM;
+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);
+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/winsup/w32api/include/windows.h b/winsup/w32api/include/windows.h
new file mode 100644
index 000000000..60cabfb6d
--- /dev/null
+++ b/winsup/w32api/include/windows.h
@@ -0,0 +1,137 @@
+/*
+ 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
+/* 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
+#define _ANONYMOUS_STRUCT
+#else
+#if defined(__cplusplus)
+#define _ANONYMOUS_UNION
+#endif
+#endif /* __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) */
+#endif /* NONAMELESSUNION */
+#endif /* __GNUC__ */
+
+#ifndef _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 _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>
+#include <wingdi.h>
+#include <winuser.h>
+#include <winnls.h>
+#include <winver.h>
+#include <winnetwk.h>
+#include <winreg.h>
+#include <winsvc.h>
+
+#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) || !(defined(__INSIDE_CYGWIN__) || defined(__CYGWIN__) || defined(__CYGWIN32__) || defined(_UWIN))
+#include <winsock.h>
+#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/winsup/w32api/include/windowsx.h b/winsup/w32api/include/windowsx.h
new file mode 100644
index 000000000..8e6e44cf2
--- /dev/null
+++ b/winsup/w32api/include/windowsx.h
@@ -0,0 +1,505 @@
+#ifndef _WINDOWSX_H
+#define _WINDOWSX_H
+#define WM_CTLCOLOR 25
+#define Button_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define Button_GetCheck(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),BM_GETCHECK,0,0))
+#define Button_GetState(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),BM_GETSTATE,0,0))
+#define Button_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax))
+#define Button_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Button_SetCheck(hwndCtl,check) ((void)SendMessage((hwndCtl),BM_SETCHECK,(WPARAM)(int)(check),0))
+#define Button_SetState(hwndCtl,state) ((UINT)(DWORD)SendMessage((hwndCtl),BM_SETSTATE,(WPARAM)(int)(state),0))
+#define Button_SetStyle(hwndCtl,style,fRedraw) ((void)SendMessage((hwndCtl),BM_SETSTYLE,(WPARAM)LOWORD(style),MAKELPARAM(((fRedraw) ? TRUE : FALSE),0)))
+#define Button_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz))
+#define CheckDefDlgRecursion(pfRecursion) if (*(pfRecursion)) {*(pfRecursion) = FALSE; return FALSE; }
+#define ComboBox_AddItemData(hwndCtl,data) ((int)(DWORD)SendMessage((hwndCtl),CB_ADDSTRING,0,(LPARAM)(data)))
+#define ComboBox_AddString(hwndCtl,lpsz) ((int)(DWORD)SendMessage((hwndCtl),CB_ADDSTRING,0,(LPARAM)(LPCTSTR)(lpsz)))
+#define ComboBox_DeleteString(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),CB_DELETESTRING,(WPARAM)(int)(index),0))
+#define ComboBox_Dir(hwndCtl,attrs,lpszFileSpec) ((int)(DWORD)SendMessage((hwndCtl),CB_DIR,(WPARAM)(UINT)(attrs),(LPARAM)(LPCTSTR)(lpszFileSpec)))
+#define ComboBox_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define ComboBox_FindItemData(hwndCtl,indexStart,data) ((int)(DWORD)SendMessage((hwndCtl),CB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data)))
+#define ComboBox_FindString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),CB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ComboBox_FindStringExact(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),CB_FINDSTRINGEXACT,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ComboBox_GetCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),CB_GETCOUNT,0,0))
+#define ComboBox_GetCurSel(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),CB_GETCURSEL,0,0))
+#define ComboBox_GetDroppedControlRect(hwndCtl,lprc) ((void)SendMessage((hwndCtl),CB_GETDROPPEDCONTROLRECT,0,(LPARAM)(RECT*)(lprc)))
+#define ComboBox_GetDroppedState(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),CB_GETDROPPEDSTATE,0,0))
+#define ComboBox_GetEditSel(hwndCtl) ((DWORD)SendMessage((hwndCtl),CB_GETEDITSEL,0,0))
+#define ComboBox_GetExtendedUI(hwndCtl) ((UINT)(DWORD)SendMessage((hwndCtl),CB_GETEXTENDEDUI,0,0))
+#define ComboBox_GetItemData(hwndCtl,index) ((LRESULT)(DWORD)SendMessage((hwndCtl),CB_GETITEMDATA,(WPARAM)(int)(index),0))
+#define ComboBox_GetItemHeight(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),CB_GETITEMHEIGHT,0,0))
+#define ComboBox_GetLBText(hwndCtl,index,lpszBuffer) ((int)(DWORD)SendMessage((hwndCtl),CB_GETLBTEXT,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpszBuffer)))
+#define ComboBox_GetLBTextLen(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),CB_GETLBTEXTLEN,(WPARAM)(int)(index),0))
+#define ComboBox_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax))
+#define ComboBox_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define ComboBox_InsertItemData(hwndCtl,index,data) ((int)(DWORD)SendMessage((hwndCtl),CB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(data)))
+#define ComboBox_InsertString(hwndCtl,index,lpsz) ((int)(DWORD)SendMessage((hwndCtl),CB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpsz)))
+#define ComboBox_LimitText(hwndCtl,cchLimit) ((int)(DWORD)SendMessage((hwndCtl),CB_LIMITTEXT,(WPARAM)(int)(cchLimit),0))
+#define ComboBox_ResetContent(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),CB_RESETCONTENT,0,0))
+#define ComboBox_SelectItemData(hwndCtl,indexStart,data) ((int)(DWORD)SendMessage((hwndCtl),CB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data)))
+#define ComboBox_SelectString(hwndCtl,indexStart,lpszSelect) ((int)(DWORD)SendMessage((hwndCtl),CB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszSelect)))
+#define ComboBox_SetCurSel(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),CB_SETCURSEL,(WPARAM)(int)(index),0))
+#define ComboBox_SetEditSel(hwndCtl,ichStart,ichEnd) ((int)(DWORD)SendMessage((hwndCtl),CB_SETEDITSEL,0,MAKELPARAM((ichStart),(ichEnd))))
+#define ComboBox_SetExtendedUI(hwndCtl,flags) ((int)(DWORD)SendMessage((hwndCtl),CB_SETEXTENDEDUI,(WPARAM)(UINT)(flags),0))
+#define ComboBox_SetItemData(hwndCtl,index,data) ((int)(DWORD)SendMessage((hwndCtl),CB_SETITEMDATA,(WPARAM)(int)(index),(LPARAM)(data)))
+#define ComboBox_SetItemHeight(hwndCtl,index,cyItem) ((int)(DWORD)SendMessage((hwndCtl),CB_SETITEMHEIGHT,(WPARAM)(int)(index),(LPARAM)(int)cyItem))
+#define ComboBox_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz))
+#define ComboBox_ShowDropdown(hwndCtl,fShow) ((BOOL)(DWORD)SendMessage((hwndCtl),CB_SHOWDROPDOWN,(WPARAM)(BOOL)(fShow),0))
+#define CopyRgn(hrgnDst,hrgnSrc) CombineRgn(hrgnDst,hrgnSrc,0,RGN_COPY)
+#define DECLARE_HANDLE32 DECLARE_HANDLE
+#define DefDlgProcEx(hwnd,msg,wParam,lParam,pfRecursion) (*(pfRecursion) = TRUE,DefDlgProc(hwnd,msg,wParam,lParam))
+#define DeleteBitmap(hbm) DeleteObject((HGDIOBJ)(HBITMAP)(hbm))
+#define DeleteBrush(hbr) DeleteObject((HGDIOBJ)(HBRUSH)(hbr))
+#define DeleteFont(hfont) DeleteObject((HGDIOBJ)(HFONT)(hfont))
+#define DeletePalette(hpal) DeleteObject((HGDIOBJ)(HPALETTE)(hpal))
+#define DeletePen(hpen) DeleteObject((HGDIOBJ)(HPEN)(hpen))
+#define DeleteRgn(hrgn) DeleteObject((HGDIOBJ)(HRGN)(hrgn))
+#define Edit_CanUndo(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_CANUNDO,0,0))
+#define Edit_EmptyUndoBuffer(hwndCtl) ((void)SendMessage((hwndCtl),EM_EMPTYUNDOBUFFER,0,0))
+#define Edit_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define Edit_FmtLines(hwndCtl,fAddEOL) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_FMTLINES,(WPARAM)(BOOL)(fAddEOL),0))
+#define Edit_GetFirstVisibleLine(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),EM_GETFIRSTVISIBLELINE,0,0))
+#define Edit_GetHandle(hwndCtl) ((HLOCAL)(UINT)(DWORD)SendMessage((hwndCtl),EM_GETHANDLE,0,0))
+#define Edit_GetLine(hwndCtl,line,lpch,cchMax) ((*((int*)(lpch)) = (cchMax)),((int)(DWORD)SendMessage((hwndCtl),EM_GETLINE,(WPARAM)(int)(line),(LPARAM)(LPTSTR)(lpch))))
+#define Edit_GetLineCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),EM_GETLINECOUNT,0,0))
+#define Edit_GetModify(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_GETMODIFY,0,0))
+#define Edit_GetPasswordChar(hwndCtl) ((TCHAR)(DWORD)SendMessage((hwndCtl),EM_GETPASSWORDCHAR,0,0))
+#define Edit_GetRect(hwndCtl,lprc) ((void)SendMessage((hwndCtl),EM_GETRECT,0,(LPARAM)(RECT*)(lprc)))
+#define Edit_GetSel(hwndCtl) ((DWORD)SendMessage((hwndCtl),EM_GETSEL,0,0))
+#define Edit_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax))
+#define Edit_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Edit_GetWordBreakProc(hwndCtl) ((EDITWORDBREAKPROC)SendMessage((hwndCtl),EM_GETWORDBREAKPROC,0,0))
+#define Edit_LimitText(hwndCtl,cchMax) ((void)SendMessage((hwndCtl),EM_LIMITTEXT,(WPARAM)(cchMax),0))
+#define Edit_LineFromChar(hwndCtl,ich) ((int)(DWORD)SendMessage((hwndCtl),EM_LINEFROMCHAR,(WPARAM)(int)(ich),0))
+#define Edit_LineIndex(hwndCtl,line) ((int)(DWORD)SendMessage((hwndCtl),EM_LINEINDEX,(WPARAM)(int)(line),0))
+#define Edit_LineLength(hwndCtl,line) ((int)(DWORD)SendMessage((hwndCtl),EM_LINELENGTH,(WPARAM)(int)(line),0))
+#define Edit_ReplaceSel(hwndCtl,lpszReplace) ((void)SendMessage((hwndCtl),EM_REPLACESEL,0,(LPARAM)(LPCTSTR)(lpszReplace)))
+#define Edit_Scroll(hwndCtl,dv,dh) ((void)SendMessage((hwndCtl),EM_LINESCROLL,(WPARAM)(dh),(LPARAM)(dv)))
+#define Edit_ScrollCaret(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_SCROLLCARET,0,0))
+#define Edit_SetHandle(hwndCtl,h) ((void)SendMessage((hwndCtl),EM_SETHANDLE,(WPARAM)(UINT)(HLOCAL)(h),0))
+#define Edit_SetModify(hwndCtl,fModified) ((void)SendMessage((hwndCtl),EM_SETMODIFY,(WPARAM)(UINT)(fModified),0))
+#define Edit_SetPasswordChar(hwndCtl,ch) ((void)SendMessage((hwndCtl),EM_SETPASSWORDCHAR,(WPARAM)(UINT)(ch),0))
+#define Edit_SetReadOnly(hwndCtl,fReadOnly) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_SETREADONLY,(WPARAM)(BOOL)(fReadOnly),0))
+#define Edit_SetRect(hwndCtl,lprc) ((void)SendMessage((hwndCtl),EM_SETRECT,0,(LPARAM)(const RECT*)(lprc)))
+#define Edit_SetRectNoPaint(hwndCtl,lprc) ((void)SendMessage((hwndCtl),EM_SETRECTNP,0,(LPARAM)(const RECT*)(lprc)))
+#define Edit_SetSel(hwndCtl,ichStart,ichEnd) ((void)SendMessage((hwndCtl),EM_SETSEL,(ichStart),(ichEnd)))
+#define Edit_SetTabStops(hwndCtl,cTabs,lpTabs) ((void)SendMessage((hwndCtl),EM_SETTABSTOPS,(WPARAM)(int)(cTabs),(LPARAM)(const int*)(lpTabs)))
+#define Edit_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz))
+#define Edit_SetWordBreakProc(hwndCtl,lpfnWordBreak) ((void)SendMessage((hwndCtl),EM_SETWORDBREAKPROC,0,(LPARAM)(EDITWORDBREAKPROC)(lpfnWordBreak)))
+#define Edit_Undo(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),EM_UNDO,0,0))
+#define FORWARD_WM_ACTIVATE(hwnd,state,hwndActDeact,fMinimized,fn) (void)(fn)((hwnd),WM_ACTIVATE,MAKEWPARAM((state),(fMinimized)),(LPARAM)(HWND)(hwndActDeact))
+#define FORWARD_WM_ACTIVATEAPP(hwnd,fActivate,dwThreadId,fn) (void)(fn)((hwnd),WM_ACTIVATEAPP,(WPARAM)(BOOL)(fActivate),(LPARAM)(dwThreadId))
+#define FORWARD_WM_ASKCBFORMATNAME(hwnd,cchMax,rgchName,fn) (void)(fn)((hwnd),WM_ASKCBFORMATNAME,(WPARAM)(int)(cchMax),(LPARAM)(rgchName))
+#define FORWARD_WM_CANCELMODE(hwnd,fn) (void)(fn)((hwnd),WM_CANCELMODE,0,0)
+#define FORWARD_WM_CHANGECBCHAIN(hwnd,hwndRemove,hwndNext,fn) (void)(fn)((hwnd),WM_CHANGECBCHAIN,(WPARAM)(HWND)(hwndRemove),(LPARAM)(HWND)(hwndNext))
+#define FORWARD_WM_CHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_CHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0))
+#define FORWARD_WM_CHARTOITEM(hwnd,ch,hwndListBox,iCaret,fn) (int)(DWORD)(fn)((hwnd),WM_CHARTOITEM,MAKEWPARAM((UINT)(iCaret),(UINT)(ch)),(LPARAM)(hwndListBox))
+#define FORWARD_WM_CHILDACTIVATE(hwnd,fn) (void)(fn)((hwnd),WM_CHILDACTIVATE,0,0)
+#define FORWARD_WM_CLEAR(hwnd,fn) (void)(fn)((hwnd),WM_CLEAR,0,0)
+#define FORWARD_WM_CLOSE(hwnd,fn) (void)(fn)((hwnd),WM_CLOSE,0,0)
+#define FORWARD_WM_COMMAND(hwnd,id,hwndCtl,codeNotify,fn) (void)(fn)((hwnd),WM_COMMAND,MAKEWPARAM((UINT)(id),(UINT)(codeNotify)),(LPARAM)(HWND)(hwndCtl))
+#define FORWARD_WM_COMMNOTIFY(hwnd,cid,flags,fn) (void)(fn)((hwnd),WM_COMMNOTIFY,(WPARAM)(cid),MAKELPARAM((flags),0))
+#define FORWARD_WM_COMPACTING(hwnd,compactRatio,fn) (void)(fn)((hwnd),WM_COMPACTING,(WPARAM)(UINT)(compactRatio),0)
+#define FORWARD_WM_COMPAREITEM(hwnd,lpCompareItem,fn) (int)(DWORD)(fn)((hwnd),WM_COMPAREITEM,(WPARAM)(((const COMPAREITEMSTRUCT*)(lpCompareItem))->CtlID),(LPARAM)(const COMPAREITEMSTRUCT*)(lpCompareItem))
+#define FORWARD_WM_COPY(hwnd,fn) (void)(fn)((hwnd),WM_COPY,0,0)
+#define FORWARD_WM_CREATE(hwnd,lpCreateStruct,fn) (BOOL)(DWORD)(fn)((hwnd),WM_CREATE,0,(LPARAM)(LPCREATESTRUCT)(lpCreateStruct))
+#define FORWARD_WM_CTLCOLORBTN(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORBTN,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORDLG(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORDLG,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLOREDIT(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLOREDIT,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORLISTBOX(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORLISTBOX,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORMSGBOX(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORMSGBOX,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORSCROLLBAR(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORSCROLLBAR,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CTLCOLORSTATIC(hwnd,hdc,hwndChild,fn) (HBRUSH)(UINT)(DWORD)(fn)((hwnd),WM_CTLCOLORSTATIC,(WPARAM)(HDC)(hdc),(LPARAM)(HWND)(hwndChild))
+#define FORWARD_WM_CUT(hwnd,fn) (void)(fn)((hwnd),WM_CUT,0,0)
+#define FORWARD_WM_DEADCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_DEADCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0))
+#define FORWARD_WM_DELETEITEM(hwnd,lpDeleteItem,fn) (void)(fn)((hwnd),WM_DELETEITEM,(WPARAM)(((const DELETEITEMSTRUCT*)(lpDeleteItem))->CtlID),(LPARAM)(const DELETEITEMSTRUCT*)(lpDeleteItem))
+#define FORWARD_WM_DESTROY(hwnd,fn) (void)(fn)((hwnd),WM_DESTROY,0,0)
+#define FORWARD_WM_DESTROYCLIPBOARD(hwnd,fn) (void)(fn)((hwnd),WM_DESTROYCLIPBOARD,0,0)
+#define FORWARD_WM_DEVMODECHANGE(hwnd,lpszDeviceName,fn) (void)(fn)((hwnd),WM_DEVMODECHANGE,0,(LPARAM)(LPCTSTR)(lpszDeviceName))
+#define FORWARD_WM_DRAWCLIPBOARD(hwnd,fn) (void)(fn)((hwnd),WM_DRAWCLIPBOARD,0,0)
+#define FORWARD_WM_DRAWITEM(hwnd,lpDrawItem,fn) (void)(fn)((hwnd),WM_DRAWITEM,(WPARAM)(((const DRAWITEMSTRUCT*)lpDrawItem)->CtlID),(LPARAM)(const DRAWITEMSTRUCT*)(lpDrawItem))
+#define FORWARD_WM_DROPFILES(hwnd,hdrop,fn) (void)(fn)((hwnd),WM_DROPFILES,(WPARAM)(HDROP)(hdrop),0)
+#define FORWARD_WM_ENABLE(hwnd,fEnable,fn) (void)(fn)((hwnd),WM_ENABLE,(WPARAM)(BOOL)(fEnable),0)
+#define FORWARD_WM_ENDSESSION(hwnd,fEnding,fn) (void)(fn)((hwnd),WM_ENDSESSION,(WPARAM)(BOOL)(fEnding),0)
+#define FORWARD_WM_ENTERIDLE(hwnd,source,hwndSource,fn) (void)(fn)((hwnd),WM_ENTERIDLE,(WPARAM)(UINT)(source),(LPARAM)(HWND)(hwndSource))
+#define FORWARD_WM_ERASEBKGND(hwnd,hdc,fn) (BOOL)(DWORD)(fn)((hwnd),WM_ERASEBKGND,(WPARAM)(HDC)(hdc),0)
+#define FORWARD_WM_FONTCHANGE(hwnd,fn) (void)(fn)((hwnd),WM_FONTCHANGE,0,0)
+#define FORWARD_WM_GETDLGCODE(hwnd,lpmsg,fn) (UINT)(DWORD)(fn)((hwnd),WM_GETDLGCODE,(lpmsg ? lpmsg->wParam : 0),(LPARAM)(LPMSG)(lpmsg))
+#define FORWARD_WM_GETFONT(hwnd,fn) (HFONT)(UINT)(DWORD)(fn)((hwnd),WM_GETFONT,0,0)
+#define FORWARD_WM_GETMINMAXINFO(hwnd,lpMinMaxInfo,fn) (void)(fn)((hwnd),WM_GETMINMAXINFO,0,(LPARAM)(LPMINMAXINFO)(lpMinMaxInfo))
+#define FORWARD_WM_GETTEXT(hwnd,cchTextMax,lpszText,fn) (int)(DWORD)(fn)((hwnd),WM_GETTEXT,(WPARAM)(int)(cchTextMax),(LPARAM)(LPTSTR)(lpszText))
+#define FORWARD_WM_GETTEXTLENGTH(hwnd,fn) (int)(DWORD)(fn)((hwnd),WM_GETTEXTLENGTH,0,0)
+#define FORWARD_WM_HSCROLL(hwnd,hwndCtl,code,pos,fn) (void)(fn)((hwnd),WM_HSCROLL,MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)),(LPARAM)(UINT)(hwndCtl))
+#define FORWARD_WM_HSCROLLCLIPBOARD(hwnd,hwndCBViewer,code,pos,fn) (void)(fn)((hwnd),WM_HSCROLLCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),MAKELPARAM((code),(pos)))
+#define FORWARD_WM_ICONERASEBKGND(hwnd,hdc,fn) (BOOL)(DWORD)(fn)((hwnd),WM_ICONERASEBKGND,(WPARAM)(HDC)(hdc),0)
+#define FORWARD_WM_INITDIALOG(hwnd,hwndFocus,lParam,fn) (BOOL)(DWORD)(fn)((hwnd),WM_INITDIALOG,(WPARAM)(HWND)(hwndFocus),(lParam))
+#define FORWARD_WM_INITMENU(hwnd,hMenu,fn) (void)(fn)((hwnd),WM_INITMENU,(WPARAM)(HMENU)(hMenu),0)
+#define FORWARD_WM_INITMENUPOPUP(hwnd,hMenu,item,fSystemMenu,fn) (void)(fn)((hwnd),WM_INITMENUPOPUP,(WPARAM)(HMENU)(hMenu),MAKELPARAM((item),(fSystemMenu)))
+#define FORWARD_WM_KEYDOWN(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_KEYDOWN,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags)))
+#define FORWARD_WM_KEYUP(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_KEYUP,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags)))
+#define FORWARD_WM_KILLFOCUS(hwnd,hwndNewFocus,fn) (void)(fn)((hwnd),WM_KILLFOCUS,(WPARAM)(HWND)(hwndNewFocus),0)
+#define FORWARD_WM_LBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_LBUTTONDBLCLK : WM_LBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_LBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_LBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_MBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_MBUTTONDBLCLK : WM_MBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_MBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_MBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_MDIACTIVATE(hwnd,fActive,hwndActivate,hwndDeactivate,fn) (void)(fn)(hwnd,WM_MDIACTIVATE,(WPARAM)(hwndDeactivate),(LPARAM)(hwndActivate))
+#define FORWARD_WM_MDICASCADE(hwnd,cmd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_MDICASCADE,(WPARAM)(cmd),0)
+#define FORWARD_WM_MDICREATE(hwnd,lpmcs,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDICREATE,0,(LPARAM)(LPMDICREATESTRUCT)(lpmcs))
+#define FORWARD_WM_MDIDESTROY(hwnd,hwndDestroy,fn) (void)(fn)((hwnd),WM_MDIDESTROY,(WPARAM)(hwndDestroy),0)
+#define FORWARD_WM_MDIGETACTIVE(hwnd,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDIGETACTIVE,0,0)
+#define FORWARD_WM_MDIICONARRANGE(hwnd,fn) (void)(fn)((hwnd),WM_MDIICONARRANGE,0,0)
+#define FORWARD_WM_MDIMAXIMIZE(hwnd,hwndMaximize,fn) (void)(fn)((hwnd),WM_MDIMAXIMIZE,(WPARAM)(hwndMaximize),0)
+#define FORWARD_WM_MDINEXT(hwnd,hwndCur,fPrev,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_MDINEXT,(WPARAM)(hwndCur),(LPARAM)(fPrev))
+#define FORWARD_WM_MDIRESTORE(hwnd,hwndRestore,fn) (void)(fn)((hwnd),WM_MDIRESTORE,(WPARAM)(hwndRestore),0)
+#define FORWARD_WM_MDISETMENU(hwnd,fRefresh,hmenuFrame,hmenuWindow,fn) (HMENU)(UINT)(DWORD)(fn)((hwnd),WM_MDISETMENU,(WPARAM)((fRefresh) ? (hmenuFrame) : 0),(LPARAM)(hmenuWindow))
+#define FORWARD_WM_MDITILE(hwnd,cmd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_MDITILE,(WPARAM)(cmd),0)
+#define FORWARD_WM_MEASUREITEM(hwnd,lpMeasureItem,fn) (void)(fn)((hwnd),WM_MEASUREITEM,(WPARAM)(((MEASUREITEMSTRUCT*)lpMeasureItem)->CtlID),(LPARAM)(MEASUREITEMSTRUCT*)(lpMeasureItem))
+#define FORWARD_WM_MENUCHAR(hwnd,ch,flags,hmenu,fn) (DWORD)(fn)((hwnd),WM_MENUCHAR,MAKEWPARAM(flags,(WORD)(ch)),(LPARAM)(HMENU)(hmenu))
+#define FORWARD_WM_MENUSELECT(hwnd,hmenu,item,hmenuPopup,flags,fn) (void)(fn)((hwnd),WM_MENUSELECT,MAKEWPARAM((item),(flags)),(LPARAM)(HMENU)((hmenu) ? (hmenu) : (hmenuPopup)))
+#define FORWARD_WM_MOUSEACTIVATE(hwnd,hwndTopLevel,codeHitTest,msg,fn) (int)(DWORD)(fn)((hwnd),WM_MOUSEACTIVATE,(WPARAM)(HWND)(hwndTopLevel),MAKELPARAM((codeHitTest),(msg)))
+#define FORWARD_WM_MOUSEMOVE(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_MOUSEMOVE,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_MOVE(hwnd,x,y,fn) (void)(fn)((hwnd),WM_MOVE,0,MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCACTIVATE(hwnd,fActive,hwndActDeact,fMinimized,fn) (BOOL)(DWORD)(fn)((hwnd),WM_NCACTIVATE,(WPARAM)(BOOL)(fActive),0)
+#define FORWARD_WM_NCCALCSIZE(hwnd,fCalcValidRects,lpcsp,fn) (UINT)(DWORD)(fn)((hwnd),WM_NCCALCSIZE,0,(LPARAM)(NCCALCSIZE_PARAMS*)(lpcsp))
+#define FORWARD_WM_NCCREATE(hwnd,lpCreateStruct,fn) (BOOL)(DWORD)(fn)((hwnd),WM_NCCREATE,0,(LPARAM)(LPCREATESTRUCT)(lpCreateStruct))
+#define FORWARD_WM_NCDESTROY(hwnd,fn) (void)(fn)((hwnd),WM_NCDESTROY,0,0)
+#define FORWARD_WM_NCHITTEST(hwnd,x,y,fn) (UINT)(DWORD)(fn)((hwnd),WM_NCHITTEST,0,MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCLBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCLBUTTONDBLCLK : WM_NCLBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCLBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCLBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCMBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCMBUTTONDBLCLK : WM_NCMBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) )
+#define FORWARD_WM_NCMBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCMBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) )
+#define FORWARD_WM_NCMOUSEMOVE(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCMOUSEMOVE,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)))
+#define FORWARD_WM_NCPAINT(hwnd,hrgn,fn) (void)(fn)((hwnd),WM_NCPAINT,(WPARAM)(HRGN)(hrgn),0)
+#define FORWARD_WM_NCRBUTTONDOWN(hwnd,fDoubleClick,x,y,codeHitTest,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_NCRBUTTONDBLCLK : WM_NCRBUTTONDOWN,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) )
+#define FORWARD_WM_NCRBUTTONUP(hwnd,x,y,codeHitTest,fn) (void)(fn)((hwnd),WM_NCRBUTTONUP,(WPARAM)(UINT)(codeHitTest),MAKELPARAM((x),(y)) )
+#define FORWARD_WM_NEXTDLGCTL(hwnd,hwndSetFocus,fNext,fn) (HWND)(UINT)(DWORD)(fn)((hwnd),WM_NEXTDLGCTL,(WPARAM)(HWND)(hwndSetFocus),(LPARAM)(fNext))
+#define FORWARD_WM_PAINT(hwnd,fn) (void)(fn)((hwnd),WM_PAINT,0,0)
+#define FORWARD_WM_PAINTCLIPBOARD(hwnd,hwndCBViewer,lpPaintStruct,fn) (void)(fn)((hwnd),WM_PAINTCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),(LPARAM)(LPPAINTSTRUCT)(lpPaintStruct))
+#define FORWARD_WM_PALETTECHANGED(hwnd,hwndPaletteChange,fn) (void)(fn)((hwnd),WM_PALETTECHANGED,(WPARAM)(HWND)(hwndPaletteChange),0)
+#define FORWARD_WM_PALETTEISCHANGING(hwnd,hwndPaletteChange,fn) (void)(fn)((hwnd),WM_PALETTEISCHANGING,(WPARAM)(HWND)(hwndPaletteChange),0)
+#define FORWARD_WM_PARENTNOTIFY(hwnd,msg,hwndChild,idChild,fn) (void)(fn)((hwnd),WM_PARENTNOTIFY,MAKEWPARAM(msg,idChild),(LPARAM)(hwndChild))
+#define FORWARD_WM_PASTE(hwnd,fn) (void)(fn)((hwnd),WM_PASTE,0,0)
+#define FORWARD_WM_POWER(hwnd,code,fn) (void)(fn)((hwnd),WM_POWER,(WPARAM)(int)(code),0)
+#define FORWARD_WM_QUERYDRAGICON(hwnd,fn) (HICON)(UINT)(DWORD)(fn)((hwnd),WM_QUERYDRAGICON,0,0)
+#define FORWARD_WM_QUERYENDSESSION(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYENDSESSION,0,0)
+#define FORWARD_WM_QUERYNEWPALETTE(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYNEWPALETTE,0,0)
+#define FORWARD_WM_QUERYOPEN(hwnd,fn) (BOOL)(DWORD)(fn)((hwnd),WM_QUERYOPEN,0,0)
+#define FORWARD_WM_QUEUESYNC(hwnd,fn) (void)(fn)((hwnd),WM_QUEUESYNC,0,0)
+#define FORWARD_WM_QUIT(hwnd,exitCode,fn) (void)(fn)((hwnd),WM_QUIT,(WPARAM)(exitCode),0)
+#define FORWARD_WM_RBUTTONDOWN(hwnd,fDoubleClick,x,y,keyFlags,fn) (void)(fn)((hwnd),(fDoubleClick) ? WM_RBUTTONDBLCLK : WM_RBUTTONDOWN,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_RBUTTONUP(hwnd,x,y,keyFlags,fn) (void)(fn)((hwnd),WM_RBUTTONUP,(WPARAM)(UINT)(keyFlags),MAKELPARAM((x),(y)))
+#define FORWARD_WM_RENDERALLFORMATS(hwnd,fn) (void)(fn)((hwnd),WM_RENDERALLFORMATS,0,0)
+#define FORWARD_WM_RENDERFORMAT(hwnd,fmt,fn) (HANDLE)(UINT)(DWORD)(fn)((hwnd),WM_RENDERFORMAT,(WPARAM)(UINT)(fmt),0)
+#define FORWARD_WM_SETCURSOR(hwnd,hwndCursor,codeHitTest,msg,fn) (BOOL)(DWORD)(fn)((hwnd),WM_SETCURSOR,(WPARAM)(HWND)(hwndCursor),MAKELPARAM((codeHitTest),(msg)))
+#define FORWARD_WM_SETFOCUS(hwnd,hwndOldFocus,fn) (void)(fn)((hwnd),WM_SETFOCUS,(WPARAM)(HWND)(hwndOldFocus),0)
+#define FORWARD_WM_SETFONT(hwnd,hfont,fRedraw,fn) (void)(fn)((hwnd),WM_SETFONT,(WPARAM)(HFONT)(hfont),(LPARAM)(BOOL)(fRedraw))
+#define FORWARD_WM_SETREDRAW(hwnd,fRedraw,fn) (void)(fn)((hwnd),WM_SETREDRAW,(WPARAM)(BOOL)(fRedraw),0)
+#define FORWARD_WM_SETTEXT(hwnd,lpszText,fn) (void)(fn)((hwnd),WM_SETTEXT,0,(LPARAM)(LPCTSTR)(lpszText))
+#define FORWARD_WM_SHOWWINDOW(hwnd,fShow,status,fn) (void)(fn)((hwnd),WM_SHOWWINDOW,(WPARAM)(BOOL)(fShow),(LPARAM)(UINT)(status))
+#define FORWARD_WM_SIZE(hwnd,state,cx,cy,fn) (void)(fn)((hwnd),WM_SIZE,(WPARAM)(UINT)(state),MAKELPARAM((cx),(cy)))
+#define FORWARD_WM_SIZECLIPBOARD(hwnd,hwndCBViewer,lprc,fn) (void)(fn)((hwnd),WM_SIZECLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),(LPARAM)(LPRECT)(lprc))
+#define FORWARD_WM_SPOOLERSTATUS(hwnd,status,cJobInQueue,fn) (void)(fn)((hwnd),WM_SPOOLERSTATUS,(WPARAM)(status),MAKELPARAM((cJobInQueue),0))
+#define FORWARD_WM_SYSCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_SYSCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0))
+#define FORWARD_WM_SYSCOLORCHANGE(hwnd,fn) (void)(fn)((hwnd),WM_SYSCOLORCHANGE,0,0)
+#define FORWARD_WM_SYSCOMMAND(hwnd,cmd,x,y,fn) (void)(fn)((hwnd),WM_SYSCOMMAND,(WPARAM)(UINT)(cmd),MAKELPARAM((x),(y)))
+#define FORWARD_WM_SYSDEADCHAR(hwnd,ch,cRepeat,fn) (void)(fn)((hwnd),WM_SYSDEADCHAR,(WPARAM)(TCHAR)(ch),MAKELPARAM((cRepeat),0))
+#define FORWARD_WM_SYSKEYDOWN(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_SYSKEYDOWN,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags)))
+#define FORWARD_WM_SYSKEYUP(hwnd,vk,cRepeat,flags,fn) (void)(fn)((hwnd),WM_SYSKEYUP,(WPARAM)(UINT)(vk),MAKELPARAM((cRepeat),(flags)))
+#define FORWARD_WM_SYSTEMERROR(hwnd,errCode,fn) 0
+#define FORWARD_WM_TIMECHANGE(hwnd,fn) (void)(fn)((hwnd),WM_TIMECHANGE,0,0)
+#define FORWARD_WM_TIMER(hwnd,id,fn) (void)(fn)((hwnd),WM_TIMER,(WPARAM)(UINT)(id),0)
+#define FORWARD_WM_UNDO(hwnd,fn) (void)(fn)((hwnd),WM_UNDO,0,0)
+#define FORWARD_WM_VKEYTOITEM(hwnd,vk,hwndListBox,iCaret,fn) (int)(DWORD)(fn)((hwnd),WM_VKEYTOITEM,MAKEWPARAM((vk),(iCaret)),(LPARAM)(hwndListBox))
+#define FORWARD_WM_VSCROLL(hwnd,hwndCtl,code,pos,fn) (void)(fn)((hwnd),WM_VSCROLL,MAKEWPARAM((UINT)(int)(code),(UINT)(int)(pos)),(LPARAM)(HWND)(hwndCtl))
+#define FORWARD_WM_VSCROLLCLIPBOARD(hwnd,hwndCBViewer,code,pos,fn) (void)(fn)((hwnd),WM_VSCROLLCLIPBOARD,(WPARAM)(HWND)(hwndCBViewer),MAKELPARAM((code),(pos)))
+#define FORWARD_WM_WINDOWPOSCHANGED(hwnd,lpwpos,fn) (void)(fn)((hwnd),WM_WINDOWPOSCHANGED,0,(LPARAM)(const LPWINDOWPOS)(lpwpos))
+#define FORWARD_WM_WINDOWPOSCHANGING(hwnd,lpwpos,fn) (BOOL)(DWORD)(fn)((hwnd),WM_WINDOWPOSCHANGING,0,(LPARAM)(LPWINDOWPOS)(lpwpos))
+#define FORWARD_WM_WININICHANGE(hwnd,lpszSectionName,fn) (void)(fn)((hwnd),WM_WININICHANGE,0,(LPARAM)(LPCTSTR)(lpszSectionName))
+#define GET_EM_LINESCROLL_MPS(vert,horz) (WPARAM)horz,(LONG)vert
+#define GET_EM_SETSEL_END(wp,lp) (lp)
+#define GET_EM_SETSEL_MPS(iStart,iEnd) (WPARAM)(iStart),(LONG)(iEnd)
+#define GET_EM_SETSEL_START(wp,lp) (INT)(wp)
+#define GET_LPARAM(wp,lp) (lp)
+#define GET_WM_ACTIVATE_FMINIMIZED(wp,lp) (BOOL)HIWORD(wp)
+#define GET_WM_ACTIVATE_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_ACTIVATE_MPS(s,fmin,hwnd) (WPARAM)MAKELONG((s),(fmin)),(LONG)(hwnd)
+#define GET_WM_ACTIVATE_STATE(wp,lp) LOWORD(wp)
+#define GET_WM_CHANGECBCHAIN_HWNDNEXT(wp,lp) (HWND)(lp)
+#define GET_WM_CHARTOITEM_CHAR(wp,lp) (TCHAR)LOWORD(wp)
+#define GET_WM_CHARTOITEM_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_CHARTOITEM_MPS(ch,pos,hwnd) (WPARAM)MAKELONG((pos),(ch)),(LONG)(hwnd)
+#define GET_WM_CHARTOITEM_POS(wp,lp) HIWORD(wp)
+#define GET_WM_COMMAND_CMD(wp,lp) HIWORD(wp)
+#define GET_WM_COMMAND_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_COMMAND_ID(wp,lp) LOWORD(wp)
+#define GET_WM_COMMAND_MPS(id,hwnd,cmd) (WPARAM)MAKELONG(id,cmd),(LONG)(hwnd)
+#define GET_WM_CTLCOLOR_HDC(wp,lp,msg) (HDC)(wp)
+#define GET_WM_CTLCOLOR_HWND(wp,lp,msg) (HWND)(lp)
+#define GET_WM_CTLCOLOR_MPS(hdc,hwnd,type) (WPARAM)(hdc),(LONG)(hwnd)
+#define GET_WM_CTLCOLOR_MSG(type) (WORD)(WM_CTLCOLORMSGBOX+(type))
+#define GET_WM_CTLCOLOR_TYPE(wp,lp,msg) (WORD)(msg - WM_CTLCOLORMSGBOX)
+#define GET_WM_HSCROLL_CODE(wp,lp) LOWORD(wp)
+#define GET_WM_HSCROLL_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_HSCROLL_MPS(code,pos,hwnd) (WPARAM)MAKELONG(code,pos),(LONG)(hwnd)
+#define GET_WM_HSCROLL_POS(wp,lp) HIWORD(wp)
+#define GET_WM_MDIACTIVATE_FACTIVATE(hwnd,wp,lp) (lp == (LONG)hwnd)
+#define GET_WM_MDIACTIVATE_HWNDACTIVATE(wp,lp) (HWND)(lp)
+#define GET_WM_MDIACTIVATE_HWNDDEACT(wp,lp) (HWND)(wp)
+#define GET_WM_MDIACTIVATE_MPS(f,hwndD,hwndA) (WPARAM)(hwndA),0
+#define GET_WM_MDISETMENU_MPS(hmenuF,hmenuW) (WPARAM)hmenuF,(LONG)hmenuW
+#define GET_WM_MENUCHAR_CHAR(wp,lp) (TCHAR)LOWORD(wp)
+#define GET_WM_MENUCHAR_FMENU(wp,lp) (BOOL)HIWORD(wp)
+#define GET_WM_MENUCHAR_HMENU(wp,lp) (HMENU)(lp)
+#define GET_WM_MENUCHAR_MPS(ch,hmenu,f) (WPARAM)MAKELONG(ch,f),(LONG)(hmenu)
+#define GET_WM_MENUSELECT_CMD(wp,lp) LOWORD(wp)
+#define GET_WM_MENUSELECT_FLAGS(wp,lp) (UINT)(int)(short)HIWORD(wp)
+#define GET_WM_MENUSELECT_HMENU(wp,lp) (HMENU)(lp)
+#define GET_WM_MENUSELECT_MPS(cmd,f,hmenu) (WPARAM)MAKELONG(cmd,f),(LONG)(hmenu)
+#define GET_WM_PARENTNOTIFY2_MPS(msg,x,y) (WPARAM)MAKELONG(0,msg),MAKELONG(x,y)
+#define GET_WM_PARENTNOTIFY_HWNDCHILD(wp,lp) (HWND)(lp)
+#define GET_WM_PARENTNOTIFY_ID(wp,lp) HIWORD(wp)
+#define GET_WM_PARENTNOTIFY_MPS(msg,id,hwnd) (WPARAM)MAKELONG(id,msg),(LONG)(hwnd)
+#define GET_WM_PARENTNOTIFY_MSG(wp,lp) LOWORD(wp)
+#define GET_WM_PARENTNOTIFY_X(wp,lp) (int)(short)LOWORD(lp)
+#define GET_WM_PARENTNOTIFY_Y(wp,lp) (int)(short)HIWORD(lp)
+#define GET_WM_VKEYTOITEM_CODE(wp,lp) (int)(short)LOWORD(wp)
+#define GET_WM_VKEYTOITEM_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_VKEYTOITEM_ITEM(wp,lp) HIWORD(wp)
+#define GET_WM_VKEYTOITEM_MPS(code,item,hwnd) (WPARAM)MAKELONG(item,code),(LONG)(hwnd)
+#define GET_WM_VSCROLL_CODE(wp,lp) LOWORD(wp)
+#define GET_WM_VSCROLL_HWND(wp,lp) (HWND)(lp)
+#define GET_WM_VSCROLL_MPS(code,pos,hwnd) (WPARAM)MAKELONG(code,pos),(LONG)(hwnd)
+#define GET_WM_VSCROLL_POS(wp,lp) HIWORD(wp)
+#define GET_WPARAM(wp,lp) (wp)
+#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
+#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
+#define GetFirstChild(hwnd) GetTopWindow(hwnd)
+#define GetFirstSibling(hwnd) GetWindow(hwnd,GW_HWNDFIRST)
+#define GetInstanceModule(hInstance) (HMODULE)(hInstance)
+#define GetLastSibling(hwnd) GetWindow(hwnd,GW_HWNDLAST)
+#define GetNextSibling(hwnd) GetWindow(hwnd,GW_HWNDNEXT)
+#define GetPrevSibling(hwnd) GetWindow(hwnd,GW_HWNDPREV)
+#define GetStockBrush(i) ((HBRUSH)GetStockObject(i))
+#define GetStockFont(i) ((HFONT)GetStockObject(i))
+#define GetStockPen(i) ((HPEN)GetStockObject(i))
+#define GetWindowExStyle(hwnd) ((DWORD)GetWindowLong(hwnd,GWL_EXSTYLE))
+#define GetWindowFont(hwnd) FORWARD_WM_GETFONT((hwnd),SendMessage)
+#define GetWindowID(hwnd) GetDlgCtrlID(hwnd)
+#define GetWindowInstance(hwnd) ((HMODULE)GetWindowLong(hwnd,GWL_HINSTANCE))
+#define GetWindowOwner(hwnd) GetWindow(hwnd,GW_OWNER)
+#define GetWindowStyle(hwnd) ((DWORD)GetWindowLong(hwnd,GWL_STYLE))
+#define GlobalAllocPtr(flags,cb) (GlobalLock(GlobalAlloc((flags),(cb))))
+#define GlobalFreePtr(lp) (GlobalUnlockPtr(lp),(BOOL)GlobalFree(GlobalPtrHandle(lp)))
+#define GlobalLockPtr(lp) ((BOOL)GlobalLock(GlobalPtrHandle(lp)))
+#define GlobalPtrHandle(lp) ((HGLOBAL)GlobalHandle(lp))
+#define GlobalReAllocPtr(lp,cbNew,flags) (GlobalUnlockPtr(lp),GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) ,(cbNew),(flags))))
+#define GlobalUnlockPtr(lp) GlobalUnlock(GlobalPtrHandle(lp))
+#define HANDLE_MSG(hwnd,message,fn) case (message): return HANDLE_##message((hwnd),(wParam),(lParam),(fn))
+#define HANDLE_WM_ACTIVATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(BOOL)HIWORD(wParam)),0)
+#define HANDLE_WM_ACTIVATEAPP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam),(DWORD)(lParam)),0)
+#define HANDLE_WM_ASKCBFORMATNAME(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam),(LPTSTR)(lParam)),0)
+#define HANDLE_WM_CANCELMODE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_CHANGECBCHAIN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(HWND)(lParam)),0)
+#define HANDLE_WM_CHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_CHARTOITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(int)(short)HIWORD(wParam))
+#define HANDLE_WM_CHILDACTIVATE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_CLEAR(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_CLOSE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_COMMAND(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam)),0)
+#define HANDLE_WM_COMMNOTIFY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam),(UINT)LOWORD(lParam)),0)
+#define HANDLE_WM_COMPACTING(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam)),0)
+#define HANDLE_WM_COMPAREITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(const COMPAREITEMSTRUCT*)(lParam))
+#define HANDLE_WM_COPY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_CREATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCREATESTRUCT)(lParam)) ? 0 : (LRESULT)-1L)
+#define HANDLE_WM_CTLCOLORBTN(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_BTN)
+#define HANDLE_WM_CTLCOLORDLG(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_DLG)
+#define HANDLE_WM_CTLCOLOREDIT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_EDIT)
+#define HANDLE_WM_CTLCOLORLISTBOX(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_LISTBOX)
+#define HANDLE_WM_CTLCOLORMSGBOX(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_MSGBOX)
+#define HANDLE_WM_CTLCOLORSCROLLBAR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_SCROLLBAR)
+#define HANDLE_WM_CTLCOLORSTATIC(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HBRUSH)(fn)((hwnd),(HDC)(wParam),(HWND)(lParam),CTLCOLOR_STATIC)
+#define HANDLE_WM_CUT(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_DEADCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_DELETEITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const DELETEITEMSTRUCT*)(lParam)),0)
+#define HANDLE_WM_DESTROY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_DESTROYCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_DEVMODECHANGE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0)
+#define HANDLE_WM_DRAWCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_DRAWITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const DRAWITEMSTRUCT*)(lParam)),0)
+#define HANDLE_WM_DROPFILES(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HDROP)(wParam)),0)
+#define HANDLE_WM_ENABLE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0)
+#define HANDLE_WM_ENDSESSION(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0)
+#define HANDLE_WM_ENTERIDLE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(HWND)(lParam)),0)
+#define HANDLE_WM_ERASEBKGND(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HDC)(wParam))
+#define HANDLE_WM_FONTCHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_GETDLGCODE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd,(LPMSG)(lParam))
+#define HANDLE_WM_GETFONT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HFONT)(fn)(hwnd)
+#define HANDLE_WM_GETMINMAXINFO(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPMINMAXINFO)(lParam)),0)
+#define HANDLE_WM_GETTEXT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(int)(wParam),(LPTSTR)(lParam))
+#define HANDLE_WM_GETTEXTLENGTH(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)(hwnd)
+#define HANDLE_WM_HSCROLL(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(lParam),(UINT)(LOWORD(wParam)),(int)(short)HIWORD(wParam)),0)
+#define HANDLE_WM_HSCROLLCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_ICONERASEBKGND(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HDC)(wParam))
+#define HANDLE_WM_INITDIALOG(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(BOOL)(fn)((hwnd),(HWND)(wParam),lParam)
+#define HANDLE_WM_INITMENU(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(wParam)),0)
+#define HANDLE_WM_INITMENUPOPUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(wParam),(UINT)LOWORD(lParam),(BOOL)HIWORD(lParam)),0)
+#define HANDLE_WM_KEYDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),TRUE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0)
+#define HANDLE_WM_KEYUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),FALSE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0)
+#define HANDLE_WM_KILLFOCUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_LBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_LBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_LBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MDIACTIVATE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(lParam == (LPARAM)hwnd),(HWND)(lParam),(HWND)(wParam)),0)
+#define HANDLE_WM_MDICASCADE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(wParam))
+#define HANDLE_WM_MDICREATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(LPMDICREATESTRUCT)(lParam))
+#define HANDLE_WM_MDIDESTROY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_MDIGETACTIVE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define HANDLE_WM_MDIICONARRANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_MDIMAXIMIZE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_MDINEXT(hwnd,wParam,lParam,fn) (LRESULT)(HWND)(fn)((hwnd),(HWND)(wParam),(BOOL)lParam)
+#define HANDLE_WM_MDIRESTORE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_MDISETMENU(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(BOOL)(wParam),(HMENU)(wParam),(HMENU)(lParam))
+#define HANDLE_WM_MDITILE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(wParam))
+#define HANDLE_WM_MEASUREITEM(hwnd,wParam,lParam,fn) ((fn)((hwnd),(MEASUREITEMSTRUCT*)(lParam)),0)
+#define HANDLE_WM_MENUCHAR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(fn)((hwnd),(UINT)(LOWORD(wParam)),(UINT)HIWORD(wParam),(HMENU)(lParam))
+#define HANDLE_WM_MENUSELECT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HMENU)(lParam),(int)(LOWORD(wParam)),(HIWORD(wParam) & MF_POPUP) ? GetSubMenu((HMENU)lParam,LOWORD(wParam)) : 0,(UINT)(((short)HIWORD(wParam) == -1) ? 0xFFFFFFFF : HIWORD(wParam))),0)
+#define HANDLE_WM_MOUSEACTIVATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(UINT)HIWORD(lParam))
+#define HANDLE_WM_MOUSEMOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_MOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_NCACTIVATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(BOOL)(wParam),0,0)
+#define HANDLE_WM_NCCALCSIZE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(BOOL)(0),(NCCALCSIZE_PARAMS*)(lParam))
+#define HANDLE_WM_NCCREATE(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(LPCREATESTRUCT)(lParam))
+#define HANDLE_WM_NCDESTROY(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_NCHITTEST(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam))
+#define HANDLE_WM_NCLBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCLBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCLBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCMBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCMBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCMBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCMOUSEMOVE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCPAINT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HRGN)(wParam)),0)
+#define HANDLE_WM_NCRBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCRBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NCRBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_NEXTDLGCTL(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HWND)(fn)((hwnd),(HWND)(wParam),(BOOL)(lParam))
+#define HANDLE_WM_PAINT(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_PAINTCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(const LPPAINTSTRUCT)GlobalLock((HGLOBAL)(lParam))),GlobalUnlock((HGLOBAL)(lParam)),0)
+#define HANDLE_WM_PALETTECHANGED(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_PALETTEISCHANGING(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_PARENTNOTIFY(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(UINT)HIWORD(wParam)),0)
+#define HANDLE_WM_PASTE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_POWER(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam)),0)
+#define HANDLE_WM_QUERYDRAGICON(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(fn)(hwnd)
+#define HANDLE_WM_QUERYENDSESSION(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0)
+#define HANDLE_WM_QUERYNEWPALETTE(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0)
+#define HANDLE_WM_QUERYOPEN(hwnd,wParam,lParam,fn) MAKELRESULT((BOOL)(fn)(hwnd),0)
+#define HANDLE_WM_QUEUESYNC(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_QUIT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(wParam)),0)
+#define HANDLE_WM_RBUTTONDBLCLK(hwnd,wParam,lParam,fn) ((fn)((hwnd),TRUE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_RBUTTONDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),FALSE,(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_RBUTTONUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam),(UINT)(wParam)),0)
+#define HANDLE_WM_RENDERALLFORMATS(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_RENDERFORMAT(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(UINT)(HANDLE)(fn)((hwnd),(UINT)(wParam))
+#define HANDLE_WM_SETCURSOR(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(UINT)HIWORD(lParam))
+#define HANDLE_WM_SETFOCUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam)),0)
+#define HANDLE_WM_SETFONT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HFONT)(wParam),(BOOL)(lParam)),0)
+#define HANDLE_WM_SETREDRAW(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam)),0)
+#define HANDLE_WM_SETTEXT(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0)
+#define HANDLE_WM_SHOWWINDOW(hwnd,wParam,lParam,fn) ((fn)((hwnd),(BOOL)(wParam),(UINT)(lParam)),0)
+#define HANDLE_WM_SIZE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_SIZECLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(const LPRECT)GlobalLock((HGLOBAL)(lParam))),GlobalUnlock((HGLOBAL)(lParam)),0)
+#define HANDLE_WM_SPOOLERSTATUS(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_SYSCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_SYSCOLORCHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_SYSCOMMAND(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),(int)(short)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_SYSDEADCHAR(hwnd,wParam,lParam,fn) ((fn)((hwnd),(TCHAR)(wParam),(int)(short)LOWORD(lParam)),0)
+#define HANDLE_WM_SYSKEYDOWN(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),TRUE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0)
+#define HANDLE_WM_SYSKEYUP(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam),FALSE,(int)(short)LOWORD(lParam),(UINT)HIWORD(lParam)),0)
+#define HANDLE_WM_SYSTEMERROR(hwnd,wParam,lParam,fn) 0
+#define HANDLE_WM_TIMECHANGE(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_TIMER(hwnd,wParam,lParam,fn) ((fn)((hwnd),(UINT)(wParam)),0)
+#define HANDLE_WM_UNDO(hwnd,wParam,lParam,fn) ((fn)(hwnd),0)
+#define HANDLE_WM_VKEYTOITEM(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(int)(fn)((hwnd),(UINT)LOWORD(wParam),(HWND)(lParam),(int)(short)HIWORD(wParam))
+#define HANDLE_WM_VSCROLL(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(lParam),(UINT)(LOWORD(wParam)),(int)(short)HIWORD(wParam)),0)
+#define HANDLE_WM_VSCROLLCLIPBOARD(hwnd,wParam,lParam,fn) ((fn)((hwnd),(HWND)(wParam),(UINT)LOWORD(lParam),(int)(short)HIWORD(lParam)),0)
+#define HANDLE_WM_WINDOWPOSCHANGED(hwnd,wParam,lParam,fn) ((fn)((hwnd),(const LPWINDOWPOS)(lParam)),0)
+#define HANDLE_WM_WINDOWPOSCHANGING(hwnd,wParam,lParam,fn) (LRESULT)(DWORD)(BOOL)(fn)((hwnd),(LPWINDOWPOS)(lParam))
+#define HANDLE_WM_WININICHANGE(hwnd,wParam,lParam,fn) ((fn)((hwnd),(LPCTSTR)(lParam)),0)
+#define InsetRect(lprc,dx,dy) InflateRect((lprc),-(dx),-(dy))
+#define IntersectRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_AND)
+#define IsLButtonDown() (GetKeyState(VK_LBUTTON) < 0)
+#define IsMButtonDown() (GetKeyState(VK_MBUTTON) < 0)
+#define IsMaximized(hwnd) IsZoomed(hwnd)
+#define IsMinimized(hwnd) IsIconic(hwnd)
+#define IsRButtonDown() (GetKeyState(VK_RBUTTON) < 0)
+#define IsRestored(hwnd) ((GetWindowStyle(hwnd) & (WS_MINIMIZE | WS_MAXIMIZE)) == 0)
+#define ListBox_AddItemData(hwndCtl,data) ((int)(DWORD)SendMessage((hwndCtl),LB_ADDSTRING,0,(LPARAM)(data)))
+#define ListBox_AddString(hwndCtl,lpsz) ((int)(DWORD)SendMessage((hwndCtl),LB_ADDSTRING,0,(LPARAM)(LPCTSTR)(lpsz)))
+#define ListBox_DeleteString(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_DELETESTRING,(WPARAM)(int)(index),0))
+#define ListBox_Dir(hwndCtl,attrs,lpszFileSpec) ((int)(DWORD)SendMessage((hwndCtl),LB_DIR,(WPARAM)(UINT)(attrs),(LPARAM)(LPCTSTR)(lpszFileSpec)))
+#define ListBox_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define ListBox_FindItemData(hwndCtl,indexStart,data) ((int)(DWORD)SendMessage((hwndCtl),LB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data)))
+#define ListBox_FindString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),LB_FINDSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ListBox_FindStringExact(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),LB_FINDSTRINGEXACT,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ListBox_GetCaretIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETCARETINDEX,0,0))
+#define ListBox_GetCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETCOUNT,0,0))
+#define ListBox_GetCurSel(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETCURSEL,0,0))
+#define ListBox_GetHorizontalExtent(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETHORIZONTALEXTENT,0,0))
+#define ListBox_GetItemData(hwndCtl,index) ((LRESULT)(DWORD)SendMessage((hwndCtl),LB_GETITEMDATA,(WPARAM)(int)(index),0))
+#define ListBox_GetItemHeight(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_GETITEMHEIGHT,(WPARAM)(int)(index),0))
+#define ListBox_GetItemRect(hwndCtl,index,lprc) ((int)(DWORD)SendMessage((hwndCtl),LB_GETITEMRECT,(WPARAM)(int)(index),(LPARAM)(RECT*)(lprc)))
+#define ListBox_GetSel(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_GETSEL,(WPARAM)(int)(index),0))
+#define ListBox_GetSelCount(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETSELCOUNT,0,0))
+#define ListBox_GetSelItems(hwndCtl,cItems,lpItems) ((int)(DWORD)SendMessage((hwndCtl),LB_GETSELITEMS,(WPARAM)(int)(cItems),(LPARAM)(int*)(lpItems)))
+#define ListBox_GetText(hwndCtl,index,lpszBuffer) ((int)(DWORD)SendMessage((hwndCtl),LB_GETTEXT,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpszBuffer)))
+#define ListBox_GetTextLen(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_GETTEXTLEN,(WPARAM)(int)(index),0))
+#define ListBox_GetTopIndex(hwndCtl) ((int)(DWORD)SendMessage((hwndCtl),LB_GETTOPINDEX,0,0))
+#define ListBox_InsertItemData(hwndCtl,index,data) ((int)(DWORD)SendMessage((hwndCtl),LB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(data)))
+#define ListBox_InsertString(hwndCtl,index,lpsz) ((int)(DWORD)SendMessage((hwndCtl),LB_INSERTSTRING,(WPARAM)(int)(index),(LPARAM)(LPCTSTR)(lpsz)))
+#define ListBox_ResetContent(hwndCtl) ((BOOL)(DWORD)SendMessage((hwndCtl),LB_RESETCONTENT,0,0))
+#define ListBox_SelItemRange(hwndCtl,fSelect,first,last) ((int)(DWORD)SendMessage((hwndCtl),LB_SELITEMRANGE,(WPARAM)(BOOL)(fSelect),MAKELPARAM((first),(last))))
+#define ListBox_SelectItemData(hwndCtl,indexStart,data) ((int)(DWORD)SendMessage((hwndCtl),LB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(data)))
+#define ListBox_SelectString(hwndCtl,indexStart,lpszFind) ((int)(DWORD)SendMessage((hwndCtl),LB_SELECTSTRING,(WPARAM)(int)(indexStart),(LPARAM)(LPCTSTR)(lpszFind)))
+#define ListBox_SetCaretIndex(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_SETCARETINDEX,(WPARAM)(int)(index),0))
+#define ListBox_SetColumnWidth(hwndCtl,cxColumn) ((void)SendMessage((hwndCtl),LB_SETCOLUMNWIDTH,(WPARAM)(int)(cxColumn),0))
+#define ListBox_SetCurSel(hwndCtl,index) ((int)(DWORD)SendMessage((hwndCtl),LB_SETCURSEL,(WPARAM)(int)(index),0))
+#define ListBox_SetHorizontalExtent(hwndCtl,cxExtent) ((void)SendMessage((hwndCtl),LB_SETHORIZONTALEXTENT,(WPARAM)(int)(cxExtent),0))
+#define ListBox_SetItemData(hwndCtl,index,data) ((int)(DWORD)SendMessage((hwndCtl),LB_SETITEMDATA,(WPARAM)(int)(index),(LPARAM)(data)))
+#define ListBox_SetItemHeight(hwndCtl,index,cy) ((int)(DWORD)SendMessage((hwndCtl),LB_SETITEMHEIGHT,(WPARAM)(int)(index),MAKELPARAM((cy),0)))
+#define ListBox_SetSel(hwndCtl,fSelect,index) ((int)(DWORD)SendMessage((hwndCtl),LB_SETSEL,(WPARAM)(BOOL)(fSelect),(LPARAM)(index)))
+#define ListBox_SetTabStops(hwndCtl,cTabs,lpTabs) ((BOOL)(DWORD)SendMessage((hwndCtl),LB_SETTABSTOPS,(WPARAM)(int)(cTabs),(LPARAM)(int*)(lpTabs)))
+#define ListBox_SetTopIndex(hwndCtl,indexTop) ((int)(DWORD)SendMessage((hwndCtl),LB_SETTOPINDEX,(WPARAM)(int)(indexTop),0))
+#define MapWindowRect(hwndFrom,hwndTo,lprc) MapWindowPoints((hwndFrom),(hwndTo),(POINT*)(lprc),2)
+#define ScrollBar_Enable(hwndCtl,flags) EnableScrollBar((hwndCtl),SB_CTL,(flags))
+#define ScrollBar_GetPos(hwndCtl) GetScrollPos((hwndCtl),SB_CTL)
+#define ScrollBar_GetRange(hwndCtl,lpposMin,lpposMax) GetScrollRange((hwndCtl),SB_CTL,(lpposMin),(lpposMax))
+#define ScrollBar_SetPos(hwndCtl,pos,fRedraw) SetScrollPos((hwndCtl),SB_CTL,(pos),(fRedraw))
+#define ScrollBar_SetRange(hwndCtl,posMin,posMax,fRedraw) SetScrollRange((hwndCtl),SB_CTL,(posMin),(posMax),(fRedraw))
+#define ScrollBar_Show(hwndCtl,fShow) ShowWindow((hwndCtl),(fShow) ? SW_SHOWNORMAL : SW_HIDE)
+#define SelectBitmap(hdc,hbm) ((HBITMAP)SelectObject((hdc),(HGDIOBJ)(HBITMAP)(hbm)))
+#define SelectBrush(hdc,hbr) ((HBRUSH)SelectObject((hdc),(HGDIOBJ)(HBRUSH)(hbr)))
+#define SelectFont(hdc,hfont) ((HFONT)SelectObject((hdc),(HGDIOBJ)(HFONT)(hfont)))
+#define SelectPen(hdc,hpen) ((HPEN)SelectObject((hdc),(HGDIOBJ)(HPEN)(hpen)))
+#define SetDlgMsgResult(hwnd,msg,result) (( (msg) == WM_CTLCOLORMSGBOX || (msg) == WM_CTLCOLOREDIT || (msg) == WM_CTLCOLORLISTBOX || (msg) == WM_CTLCOLORBTN || (msg) == WM_CTLCOLORDLG || (msg) == WM_CTLCOLORSCROLLBAR || (msg) == WM_CTLCOLORSTATIC || (msg) == WM_COMPAREITEM || (msg) == WM_VKEYTOITEM || (msg) == WM_CHARTOITEM || (msg) == WM_QUERYDRAGICON || (msg) == WM_INITDIALOG ) ? (BOOL)(result) : (SetWindowLong((hwnd),DWL_MSGRESULT,(LPARAM)(LRESULT)(result)),TRUE))
+#define SetWindowFont(hwnd,hfont,fRedraw) FORWARD_WM_SETFONT((hwnd),(hfont),(fRedraw),SendMessage)
+#define SetWindowRedraw(hwnd,fRedraw) ((void)SendMessage(hwnd,WM_SETREDRAW,(WPARAM)(BOOL)(fRedraw),0))
+#define Static_Enable(hwndCtl,fEnable) EnableWindow((hwndCtl),(fEnable))
+#define Static_GetIcon(hwndCtl,hIcon) ((HICON)(UINT)(DWORD)SendMessage((hwndCtl),STM_GETICON,0,0))
+#define Static_GetText(hwndCtl,lpch,cchMax) GetWindowText((hwndCtl),(lpch),(cchMax))
+#define Static_GetTextLength(hwndCtl) GetWindowTextLength(hwndCtl)
+#define Static_SetIcon(hwndCtl,hIcon) ((HICON)(UINT)(DWORD)SendMessage((hwndCtl),STM_SETICON,(WPARAM)(HICON)(hIcon),0))
+#define Static_SetText(hwndCtl,lpsz) SetWindowText((hwndCtl),(lpsz))
+#define SubclassDialog(hwndDlg,lpfn) ((DLGPROC)SetWindowLong(hwndDlg,DWL_DLGPROC,(LPARAM)(DLGPROC)(lpfn)))
+#define SubclassWindow(hwnd,lpfn) ((WNDPROC)SetWindowLong((hwnd),GWL_WNDPROC,(LPARAM)(WNDPROC)(lpfn)))
+#define SubtractRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_DIFF)
+#define UnionRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_OR)
+#define XorRgn(hrgnResult,hrgnA,hrgnB) CombineRgn(hrgnResult,hrgnA,hrgnB,RGN_XOR)
+#define _fmemcpy memcpy
+#define _fmemmove memmove
+#define _fmemset memset
+#define _fmemcmp memcmp
+#define hmemcpy MoveMemory
+#endif
diff --git a/winsup/w32api/include/winerror.h b/winsup/w32api/include/winerror.h
new file mode 100644
index 000000000..46db8e4f8
--- /dev/null
+++ b/winsup/w32api/include/winerror.h
@@ -0,0 +1,1011 @@
+#ifndef _WINERROR_H
+#define _WINERROR_H
+#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_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 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
+#endif
diff --git a/winsup/w32api/include/wingdi.h b/winsup/w32api/include/wingdi.h
new file mode 100644
index 000000000..aeb6cc82a
--- /dev/null
+++ b/winsup/w32api/include/wingdi.h
@@ -0,0 +1,2808 @@
+#ifndef _WINGDI_H
+#define _WINGDI_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WINGDIAPI
+#define BI_RGB 0
+#define BI_RLE8 1
+#define BI_RLE4 2
+#define BI_BITFIELDS 3
+#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_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 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_BITMAP 1
+#define GGO_NATIVE 2
+#define GGO_METRICS 0
+#define GGO_GRAY2_BITMAP 4
+#define GGO_GRAY4_BITMAP 5
+#define GGO_GRAY8_BITMAP 6
+#define GGO_GLYPH_INDEX 128
+#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
+
+#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 {
+ int cbSize;
+ LPCTSTR lpszDocName;
+ LPCTSTR lpszOutput;
+ LPCTSTR lpszDatatype;
+ DWORD fwType;
+} DOCINFO,*LPDOCINFO;
+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;
+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 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);
+
+#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);
+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,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 DOCINFO*);
+int WINAPI StartDocW(HDC,const DOCINFO*);
+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 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 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/winsup/w32api/include/wininet.h b/winsup/w32api/include/wininet.h
new file mode 100644
index 000000000..007d8a0de
--- /dev/null
+++ b/winsup/w32api/include/wininet.h
@@ -0,0 +1,881 @@
+#ifndef _WININET_H
+#define _WININET_H
+#include <windows.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define INTERNET_INVALID_PORT_NUMBER 0
+#define INTERNET_DEFAULT_FTP_PORT 21
+#define INTERNET_DEFAULT_GOPHER_PORT 70
+#define INTERNET_DEFAULT_HTTP_PORT 80
+#define INTERNET_DEFAULT_HTTPS_PORT 443
+#define INTERNET_DEFAULT_SOCKS_PORT 1080
+#define MAX_CACHE_ENTRY_INFO_SIZE 4096
+#define INTERNET_MAX_HOST_NAME_LENGTH 256
+#define INTERNET_MAX_USER_NAME_LENGTH 128
+#define INTERNET_MAX_PASSWORD_LENGTH 128
+#define INTERNET_MAX_PORT_NUMBER_LENGTH 5
+#define INTERNET_MAX_PORT_NUMBER_VALUE 65535
+#define INTERNET_MAX_PATH_LENGTH 2048
+#define INTERNET_MAX_SCHEME_LENGTH 32
+#define INTERNET_MAX_URL_LENGTH (INTERNET_MAX_SCHEME_LENGTH+sizeof("://")+INTERNET_MAX_PATH_LENGTH)
+#define INTERNET_KEEP_ALIVE_UNKNOWN ((DWORD)-1)
+#define INTERNET_KEEP_ALIVE_ENABLED 1
+#define INTERNET_KEEP_ALIVE_DISABLED 0
+#define INTERNET_REQFLAG_FROM_CACHE 1
+#define INTERNET_REQFLAG_ASYNC 2
+#define INTERNET_FLAG_RELOAD 0x80000000
+#define INTERNET_FLAG_RAW_DATA 0x40000000
+#define INTERNET_FLAG_EXISTING_CONNECT 0x20000000
+#define INTERNET_FLAG_ASYNC 0x10000000
+#define INTERNET_FLAG_PASSIVE 0x08000000
+#define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000
+#define INTERNET_FLAG_DONT_CACHE INTERNET_FLAG_NO_CACHE_WRITE
+#define INTERNET_FLAG_MAKE_PERSISTENT 0x02000000
+#define INTERNET_FLAG_OFFLINE 0x1000000
+#define INTERNET_FLAG_SECURE 0x800000
+#define INTERNET_FLAG_KEEP_CONNECTION 0x400000
+#define INTERNET_FLAG_NO_AUTO_REDIRECT 0x200000
+#define INTERNET_FLAG_READ_PREFETCH 0x100000
+#define INTERNET_FLAG_NO_COOKIES 0x80000
+#define INTERNET_FLAG_NO_AUTH 0x40000
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP 0x8000
+#define INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS 0x4000
+#define INTERNET_FLAG_IGNORE_CERT_DATE_INVALID 0x2000
+#define INTERNET_FLAG_IGNORE_CERT_CN_INVALID 0x1000
+#define INTERNET_FLAG_MUST_CACHE_REQUEST 16
+#define INTERNET_FLAG_RESYNCHRONIZE 0x800
+#define INTERNET_FLAG_HYPERLINK 0x400
+#define INTERNET_FLAG_NO_UI 0x200
+#define INTERNET_FLAG_TRANSFER_ASCII FTP_TRANSFER_TYPE_ASCII
+#define INTERNET_FLAG_TRANSFER_BINARY FTP_TRANSFER_TYPE_BINARY
+#define SECURITY_INTERNET_MASK (INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID|INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS|INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP)
+#define SECURITY_SET_MASK SECURITY_INTERNET_MASK
+#define INTERNET_FLAGS_MASK (INTERNET_FLAG_RELOAD|INTERNET_FLAG_RAW_DATA|INTERNET_FLAG_EXISTING_CONNECT|\
+INTERNET_FLAG_ASYNC|INTERNET_FLAG_PASSIVE|INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_MAKE_PERSISTENT|INTERNET_FLAG_OFFLINE|\
+INTERNET_FLAG_SECURE|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_NO_AUTO_REDIRECT|INTERNET_FLAG_READ_PREFETCH |\
+INTERNET_FLAG_NO_COOKIES|INTERNET_FLAG_NO_AUTH|SECURITY_INTERNET_MASK|INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_TRANSFER_BINARY\
+|INTERNET_FLAG_RESYNCHRONIZE|INTERNET_FLAG_MUST_CACHE_REQUEST|INTERNET_FLAG_HYPERLINK|INTERNET_FLAG_NO_UI)
+#define INTERNET_OPTIONS_MASK (~INTERNET_FLAGS_MASK)
+#define INTERNET_NO_CALLBACK 0
+#define INTERNET_RFC1123_FORMAT 0
+#define INTERNET_RFC1123_BUFSIZE 30
+#define ICU_ESCAPE 0x80000000
+#define ICU_USERNAME 0x40000000
+#define ICU_NO_ENCODE 0x20000000
+#define ICU_DECODE 0x10000000
+#define ICU_NO_META 0x08000000
+#define ICU_ENCODE_SPACES_ONLY 0x04000000
+#define ICU_BROWSER_MODE 0x02000000
+#define INTERNET_OPEN_TYPE_PRECONFIG 0
+#define INTERNET_OPEN_TYPE_DIRECT 1
+#define INTERNET_OPEN_TYPE_PROXY 3
+#define PRE_CONFIG_INTERNET_ACCESS INTERNET_OPEN_TYPE_PRECONFIG
+#define LOCAL_INTERNET_ACCESS INTERNET_OPEN_TYPE_DIRECT
+#define GATEWAY_INTERNET_ACCESS 2
+#define CERN_PROXY_INTERNET_ACCESS INTERNET_OPEN_TYPE_PROXY
+#define ISO_GLOBAL 1
+#define ISO_REGISTRY 2
+#define ISO_VALID_FLAGS (ISO_GLOBAL | ISO_REGISTRY)
+#define INTERNET_OPTION_CALLBACK 1
+#define INTERNET_OPTION_CONNECT_TIMEOUT 2
+#define INTERNET_OPTION_CONNECT_RETRIES 3
+#define INTERNET_OPTION_CONNECT_BACKOFF 4
+#define INTERNET_OPTION_SEND_TIMEOUT 5
+#define INTERNET_OPTION_CONTROL_SEND_TIMEOUT INTERNET_OPTION_SEND_TIMEOUT
+#define INTERNET_OPTION_RECEIVE_TIMEOUT 6
+#define INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT INTERNET_OPTION_RECEIVE_TIMEOUT
+#define INTERNET_OPTION_DATA_SEND_TIMEOUT 7
+#define INTERNET_OPTION_DATA_RECEIVE_TIMEOUT 8
+#define INTERNET_OPTION_HANDLE_TYPE 9
+#define INTERNET_OPTION_CONTEXT_VALUE 10
+#define INTERNET_OPTION_LISTEN_TIMEOUT 11
+#define INTERNET_OPTION_READ_BUFFER_SIZE 12
+#define INTERNET_OPTION_WRITE_BUFFER_SIZE 13
+#define INTERNET_OPTION_ASYNC_ID 15
+#define INTERNET_OPTION_ASYNC_PRIORITY 16
+#define INTERNET_OPTION_PARENT_HANDLE 21
+#define INTERNET_OPTION_KEEP_CONNECTION 22
+#define INTERNET_OPTION_REQUEST_FLAGS 23
+#define INTERNET_OPTION_EXTENDED_ERROR 24
+#define INTERNET_OPTION_OFFLINE_MODE 26
+#define INTERNET_OPTION_CACHE_STREAM_HANDLE 27
+#define INTERNET_OPTION_USERNAME 28
+#define INTERNET_OPTION_PASSWORD 29
+#define INTERNET_OPTION_ASYNC 30
+#define INTERNET_OPTION_SECURITY_FLAGS 31
+#define INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT 32
+#define INTERNET_OPTION_DATAFILE_NAME 33
+#define INTERNET_OPTION_URL 34
+#define INTERNET_OPTION_SECURITY_CERTIFICATE 35
+#define INTERNET_OPTION_SECURITY_KEY_BITNESS 36
+#define INTERNET_OPTION_REFRESH 37
+#define INTERNET_OPTION_PROXY 38
+#define INTERNET_OPTION_SETTINGS_CHANGED 39
+#define INTERNET_OPTION_VERSION 40
+#define INTERNET_OPTION_USER_AGENT 41
+#define INTERNET_FIRST_OPTION INTERNET_OPTION_CALLBACK
+#define INTERNET_LAST_OPTION INTERNET_OPTION_USER_AGENT
+#define INTERNET_PRIORITY_FOREGROUND 1000
+#define INTERNET_HANDLE_TYPE_INTERNET 1
+#define INTERNET_HANDLE_TYPE_CONNECT_FTP 2
+#define INTERNET_HANDLE_TYPE_CONNECT_GOPHER 3
+#define INTERNET_HANDLE_TYPE_CONNECT_HTTP 4
+#define INTERNET_HANDLE_TYPE_FTP_FIND 5
+#define INTERNET_HANDLE_TYPE_FTP_FIND_HTML 6
+#define INTERNET_HANDLE_TYPE_FTP_FILE 7
+#define INTERNET_HANDLE_TYPE_FTP_FILE_HTML 8
+#define INTERNET_HANDLE_TYPE_GOPHER_FIND 9
+#define INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML 10
+#define INTERNET_HANDLE_TYPE_GOPHER_FILE 11
+#define INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML 12
+#define INTERNET_HANDLE_TYPE_HTTP_REQUEST 13
+#define SECURITY_FLAG_SECURE 1
+#define SECURITY_FLAG_SSL 2
+#define SECURITY_FLAG_SSL3 4
+#define SECURITY_FLAG_PCT 8
+#define SECURITY_FLAG_PCT4 16
+#define SECURITY_FLAG_IETFSSL4 0x20
+#define SECURITY_FLAG_40BIT 0x10000000
+#define SECURITY_FLAG_128BIT 0x20000000
+#define SECURITY_FLAG_56BIT 0x40000000
+#define SECURITY_FLAG_UNKNOWNBIT 0x80000000
+#define SECURITY_FLAG_NORMALBITNESS SECURITY_FLAG_40BIT
+#define SECURITY_FLAG_IGNORE_CERT_CN_INVALID INTERNET_FLAG_IGNORE_CERT_CN_INVALID
+#define SECURITY_FLAG_IGNORE_CERT_DATE_INVALID INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
+#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
+#define SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
+#define INTERNET_SERVICE_FTP 1
+#define INTERNET_SERVICE_GOPHER 2
+#define INTERNET_SERVICE_HTTP 3
+#define INTERNET_STATUS_RESOLVING_NAME 10
+#define INTERNET_STATUS_NAME_RESOLVED 11
+#define INTERNET_STATUS_CONNECTING_TO_SERVER 20
+#define INTERNET_STATUS_CONNECTED_TO_SERVER 21
+#define INTERNET_STATUS_SENDING_REQUEST 30
+#define INTERNET_STATUS_REQUEST_SENT 31
+#define INTERNET_STATUS_RECEIVING_RESPONSE 40
+#define INTERNET_STATUS_RESPONSE_RECEIVED 41
+#define INTERNET_STATUS_CTL_RESPONSE_RECEIVED 42
+#define INTERNET_STATUS_PREFETCH 43
+#define INTERNET_STATUS_CLOSING_CONNECTION 50
+#define INTERNET_STATUS_CONNECTION_CLOSED 51
+#define INTERNET_STATUS_HANDLE_CREATED 60
+#define INTERNET_STATUS_HANDLE_CLOSING 70
+#define INTERNET_STATUS_REQUEST_COMPLETE 100
+#define INTERNET_STATUS_REDIRECT 110
+#define INTERNET_INVALID_STATUS_CALLBACK ((INTERNET_STATUS_CALLBACK)(-1L))
+#define FTP_TRANSFER_TYPE_UNKNOWN 0
+#define FTP_TRANSFER_TYPE_ASCII 1
+#define FTP_TRANSFER_TYPE_BINARY 2
+#define FTP_TRANSFER_TYPE_MASK (FTP_TRANSFER_TYPE_ASCII | FTP_TRANSFER_TYPE_BINARY)
+#define MAX_GOPHER_DISPLAY_TEXT 128
+#define MAX_GOPHER_SELECTOR_TEXT 256
+#define MAX_GOPHER_HOST_NAME INTERNET_MAX_HOST_NAME_LENGTH
+#define MAX_GOPHER_LOCATOR_LENGTH (1+MAX_GOPHER_DISPLAY_TEXT+1+MAX_GOPHER_SELECTOR_TEXT+1+MAX_GOPHER_HOST_NAME+1+INTERNET_MAX_PORT_NUMBER_LENGTH+1+1+2)
+#define GOPHER_TYPE_TEXT_FILE 1
+#define GOPHER_TYPE_DIRECTORY 2
+#define GOPHER_TYPE_CSO 4
+#define GOPHER_TYPE_ERROR 8
+#define GOPHER_TYPE_MAC_BINHEX 16
+#define GOPHER_TYPE_DOS_ARCHIVE 32
+#define GOPHER_TYPE_UNIX_UUENCODED 64
+#define GOPHER_TYPE_INDEX_SERVER 128
+#define GOPHER_TYPE_TELNET 256
+#define GOPHER_TYPE_BINARY 512
+#define GOPHER_TYPE_REDUNDANT 1024
+#define GOPHER_TYPE_TN3270 0x800
+#define GOPHER_TYPE_GIF 0x1000
+#define GOPHER_TYPE_IMAGE 0x2000
+#define GOPHER_TYPE_BITMAP 0x4000
+#define GOPHER_TYPE_MOVIE 0x8000
+#define GOPHER_TYPE_SOUND 0x10000
+#define GOPHER_TYPE_HTML 0x20000
+#define GOPHER_TYPE_PDF 0x40000
+#define GOPHER_TYPE_CALENDAR 0x80000
+#define GOPHER_TYPE_INLINE 0x100000
+#define GOPHER_TYPE_UNKNOWN 0x20000000
+#define GOPHER_TYPE_ASK 0x40000000
+#define GOPHER_TYPE_GOPHER_PLUS 0x80000000
+#define IS_GOPHER_FILE(t) (BOOL)(((t)&GOPHER_TYPE_FILE_MASK)?TRUE:FALSE)
+#define IS_GOPHER_DIRECTORY(t) (BOOL)(((t)&GOPHER_TYPE_DIRECTORY)?TRUE:FALSE)
+#define IS_GOPHER_PHONE_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_CSO)?TRUE:FALSE)
+#define IS_GOPHER_ERROR(t) (BOOL)(((t)&GOPHER_TYPE_ERROR)?TRUE:FALSE)
+#define IS_GOPHER_INDEX_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_INDEX_SERVER)?TRUE:FALSE)
+#define IS_GOPHER_TELNET_SESSION(t) (BOOL)(((t)&GOPHER_TYPE_TELNET)?TRUE:FALSE)
+#define IS_GOPHER_BACKUP_SERVER(t) (BOOL)(((t)&GOPHER_TYPE_REDUNDANT)?TRUE:FALSE)
+#define IS_GOPHER_TN3270_SESSION(t) (BOOL)(((t)&GOPHER_TYPE_TN3270)?TRUE:FALSE)
+#define IS_GOPHER_ASK(t) (BOOL)(((t)&GOPHER_TYPE_ASK)?TRUE:FALSE)
+#define IS_GOPHER_PLUS(t) (BOOL)(((t)&GOPHER_TYPE_GOPHER_PLUS)?TRUE:FALSE)
+#define IS_GOPHER_TYPE_KNOWN(t) (BOOL)(((t)&GOPHER_TYPE_UNKNOWN)?FALSE:TRUE)
+#define GOPHER_TYPE_FILE_MASK (GOPHER_TYPE_TEXT_FILE|GOPHER_TYPE_MAC_BINHEX|GOPHER_TYPE_DOS_ARCHIVE|\
+GOPHER_TYPE_UNIX_UUENCODED|GOPHER_TYPE_BINARY|GOPHER_TYPE_GIF|GOPHER_TYPE_IMAGE|GOPHER_TYPE_BITMAP\
+|GOPHER_TYPE_MOVIE|GOPHER_TYPE_SOUND|GOPHER_TYPE_HTML|GOPHER_TYPE_PDF|GOPHER_TYPE_CALENDAR|GOPHER_TYPE_INLINE)
+#define MAX_GOPHER_CATEGORY_NAME 128
+#define MAX_GOPHER_ATTRIBUTE_NAME 128
+#define MIN_GOPHER_ATTRIBUTE_LENGTH 256
+#define GOPHER_INFO_CATEGORY TEXT("+INFO")
+#define GOPHER_ADMIN_CATEGORY TEXT("+ADMIN")
+#define GOPHER_VIEWS_CATEGORY TEXT("+VIEWS")
+#define GOPHER_ABSTRACT_CATEGORY TEXT("+ABSTRACT")
+#define GOPHER_VERONICA_CATEGORY TEXT("+VERONICA")
+#define GOPHER_ADMIN_ATTRIBUTE TEXT("Admin")
+#define GOPHER_MOD_DATE_ATTRIBUTE TEXT("Mod-Date")
+#define GOPHER_TTL_ATTRIBUTE TEXT("TTL")
+#define GOPHER_SCORE_ATTRIBUTE TEXT("Score")
+#define GOPHER_RANGE_ATTRIBUTE TEXT("Score-range")
+#define GOPHER_SITE_ATTRIBUTE TEXT("Site")
+#define GOPHER_ORG_ATTRIBUTE TEXT("Org")
+#define GOPHER_LOCATION_ATTRIBUTE TEXT("Loc")
+#define GOPHER_GEOG_ATTRIBUTE TEXT("Geog")
+#define GOPHER_TIMEZONE_ATTRIBUTE TEXT("TZ")
+#define GOPHER_PROVIDER_ATTRIBUTE TEXT("Provider")
+#define GOPHER_VERSION_ATTRIBUTE TEXT("Version")
+#define GOPHER_ABSTRACT_ATTRIBUTE TEXT("Abstract")
+#define GOPHER_VIEW_ATTRIBUTE TEXT("View")
+#define GOPHER_TREEWALK_ATTRIBUTE TEXT("treewalk")
+#define GOPHER_ATTRIBUTE_ID_BASE 0xabcccc00
+#define GOPHER_CATEGORY_ID_ALL (GOPHER_ATTRIBUTE_ID_BASE+1)
+#define GOPHER_CATEGORY_ID_INFO (GOPHER_ATTRIBUTE_ID_BASE+2)
+#define GOPHER_CATEGORY_ID_ADMIN (GOPHER_ATTRIBUTE_ID_BASE+3)
+#define GOPHER_CATEGORY_ID_VIEWS (GOPHER_ATTRIBUTE_ID_BASE+4)
+#define GOPHER_CATEGORY_ID_ABSTRACT (GOPHER_ATTRIBUTE_ID_BASE+5)
+#define GOPHER_CATEGORY_ID_VERONICA (GOPHER_ATTRIBUTE_ID_BASE+6)
+#define GOPHER_CATEGORY_ID_ASK (GOPHER_ATTRIBUTE_ID_BASE+7)
+#define GOPHER_CATEGORY_ID_UNKNOWN (GOPHER_ATTRIBUTE_ID_BASE+8)
+#define GOPHER_ATTRIBUTE_ID_ALL (GOPHER_ATTRIBUTE_ID_BASE+9)
+#define GOPHER_ATTRIBUTE_ID_ADMIN (GOPHER_ATTRIBUTE_ID_BASE+10)
+#define GOPHER_ATTRIBUTE_ID_MOD_DATE (GOPHER_ATTRIBUTE_ID_BASE+11)
+#define GOPHER_ATTRIBUTE_ID_TTL (GOPHER_ATTRIBUTE_ID_BASE+12)
+#define GOPHER_ATTRIBUTE_ID_SCORE (GOPHER_ATTRIBUTE_ID_BASE+13)
+#define GOPHER_ATTRIBUTE_ID_RANGE (GOPHER_ATTRIBUTE_ID_BASE+14)
+#define GOPHER_ATTRIBUTE_ID_SITE (GOPHER_ATTRIBUTE_ID_BASE+15)
+#define GOPHER_ATTRIBUTE_ID_ORG (GOPHER_ATTRIBUTE_ID_BASE+16)
+#define GOPHER_ATTRIBUTE_ID_LOCATION (GOPHER_ATTRIBUTE_ID_BASE+17)
+#define GOPHER_ATTRIBUTE_ID_GEOG (GOPHER_ATTRIBUTE_ID_BASE+18)
+#define GOPHER_ATTRIBUTE_ID_TIMEZONE (GOPHER_ATTRIBUTE_ID_BASE+19)
+#define GOPHER_ATTRIBUTE_ID_PROVIDER (GOPHER_ATTRIBUTE_ID_BASE+20)
+#define GOPHER_ATTRIBUTE_ID_VERSION (GOPHER_ATTRIBUTE_ID_BASE+21)
+#define GOPHER_ATTRIBUTE_ID_ABSTRACT (GOPHER_ATTRIBUTE_ID_BASE+22)
+#define GOPHER_ATTRIBUTE_ID_VIEW (GOPHER_ATTRIBUTE_ID_BASE+23)
+#define GOPHER_ATTRIBUTE_ID_TREEWALK (GOPHER_ATTRIBUTE_ID_BASE+24)
+#define GOPHER_ATTRIBUTE_ID_UNKNOWN (GOPHER_ATTRIBUTE_ID_BASE+25)
+#define HTTP_MAJOR_VERSION 1
+#define HTTP_MINOR_VERSION 0
+#define HTTP_VERSION TEXT("HTTP/1.0")
+#define HTTP_QUERY_MIME_VERSION 0
+#define HTTP_QUERY_CONTENT_TYPE 1
+#define HTTP_QUERY_CONTENT_TRANSFER_ENCODING 2
+#define HTTP_QUERY_CONTENT_ID 3
+#define HTTP_QUERY_CONTENT_DESCRIPTION 4
+#define HTTP_QUERY_CONTENT_LENGTH 5
+#define HTTP_QUERY_CONTENT_LANGUAGE 6
+#define HTTP_QUERY_ALLOW 7
+#define HTTP_QUERY_PUBLIC 8
+#define HTTP_QUERY_DATE 9
+#define HTTP_QUERY_EXPIRES 10
+#define HTTP_QUERY_LAST_MODIFIED 11
+#define HTTP_QUERY_MESSAGE_ID 12
+#define HTTP_QUERY_URI 13
+#define HTTP_QUERY_DERIVED_FROM 14
+#define HTTP_QUERY_COST 15
+#define HTTP_QUERY_LINK 16
+#define HTTP_QUERY_PRAGMA 17
+#define HTTP_QUERY_VERSION 18
+#define HTTP_QUERY_STATUS_CODE 19
+#define HTTP_QUERY_STATUS_TEXT 20
+#define HTTP_QUERY_RAW_HEADERS 21
+#define HTTP_QUERY_RAW_HEADERS_CRLF 22
+#define HTTP_QUERY_CONNECTION 23
+#define HTTP_QUERY_ACCEPT 24
+#define HTTP_QUERY_ACCEPT_CHARSET 25
+#define HTTP_QUERY_ACCEPT_ENCODING 26
+#define HTTP_QUERY_ACCEPT_LANGUAGE 27
+#define HTTP_QUERY_AUTHORIZATION 28
+#define HTTP_QUERY_CONTENT_ENCODING 29
+#define HTTP_QUERY_FORWARDED 30
+#define HTTP_QUERY_FROM 31
+#define HTTP_QUERY_IF_MODIFIED_SINCE 32
+#define HTTP_QUERY_LOCATION 33
+#define HTTP_QUERY_ORIG_URI 34
+#define HTTP_QUERY_REFERER 35
+#define HTTP_QUERY_RETRY_AFTER 36
+#define HTTP_QUERY_SERVER 37
+#define HTTP_QUERY_TITLE 38
+#define HTTP_QUERY_USER_AGENT 39
+#define HTTP_QUERY_WWW_AUTHENTICATE 40
+#define HTTP_QUERY_PROXY_AUTHENTICATE 41
+#define HTTP_QUERY_ACCEPT_RANGES 42
+#define HTTP_QUERY_SET_COOKIE 43
+#define HTTP_QUERY_COOKIE 44
+#define HTTP_QUERY_REQUEST_METHOD 45
+#define HTTP_QUERY_MAX 45
+#define HTTP_QUERY_CUSTOM 65535
+#define HTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000
+#define HTTP_QUERY_FLAG_SYSTEMTIME 0x40000000
+#define HTTP_QUERY_FLAG_NUMBER 0x20000000
+#define HTTP_QUERY_FLAG_COALESCE 0x10000000
+#define HTTP_QUERY_MODIFIER_FLAGS_MASK (HTTP_QUERY_FLAG_REQUEST_HEADERS|HTTP_QUERY_FLAG_SYSTEMTIME|HTTP_QUERY_FLAG_NUMBER|HTTP_QUERY_FLAG_COALESCE)
+#define HTTP_QUERY_HEADER_MASK (~HTTP_QUERY_MODIFIER_FLAGS_MASK)
+#define HTTP_STATUS_OK 200
+#define HTTP_STATUS_CREATED 201
+#define HTTP_STATUS_ACCEPTED 202
+#define HTTP_STATUS_PARTIAL 203
+#define HTTP_STATUS_NO_CONTENT 204
+#define HTTP_STATUS_AMBIGUOUS 300
+#define HTTP_STATUS_MOVED 301
+#define HTTP_STATUS_REDIRECT 302
+#define HTTP_STATUS_REDIRECT_METHOD 303
+#define HTTP_STATUS_NOT_MODIFIED 304
+#define HTTP_STATUS_BAD_REQUEST 400
+#define HTTP_STATUS_DENIED 401
+#define HTTP_STATUS_PAYMENT_REQ 402
+#define HTTP_STATUS_FORBIDDEN 403
+#define HTTP_STATUS_NOT_FOUND 404
+#define HTTP_STATUS_BAD_METHOD 405
+#define HTTP_STATUS_NONE_ACCEPTABLE 406
+#define HTTP_STATUS_PROXY_AUTH_REQ 407
+#define HTTP_STATUS_REQUEST_TIMEOUT 408
+#define HTTP_STATUS_CONFLICT 409
+#define HTTP_STATUS_GONE 410
+#define HTTP_STATUS_AUTH_REFUSED 411
+#define HTTP_STATUS_SERVER_ERROR 500
+#define HTTP_STATUS_NOT_SUPPORTED 501
+#define HTTP_STATUS_BAD_GATEWAY 502
+#define HTTP_STATUS_SERVICE_UNAVAIL 503
+#define HTTP_STATUS_GATEWAY_TIMEOUT 504
+#define INTERNET_PREFETCH_PROGRESS 0
+#define INTERNET_PREFETCH_COMPLETE 1
+#define INTERNET_PREFETCH_ABORTED 2
+#define FLAGS_ERROR_UI_FILTER_FOR_ERRORS 0x01
+#define FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS 0x02
+#define FLAGS_ERROR_UI_FLAGS_GENERATE_DATA 0x04
+#define FLAGS_ERROR_UI_FLAGS_NO_UI 0x08
+#define HTTP_ADDREQ_INDEX_MASK 0x0000FFFF
+#define HTTP_ADDREQ_FLAGS_MASK 0xFFFF0000
+#define HTTP_ADDREQ_FLAG_ADD_IF_NEW 0x10000000
+#define HTTP_ADDREQ_FLAG_ADD 0x20000000
+#define HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA 0x40000000
+#define HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON 0x01000000
+#define HTTP_ADDREQ_FLAG_COALESCE HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA
+#define HTTP_ADDREQ_FLAG_REPLACE 0x80000000
+#define INTERNET_ERROR_BASE 12000
+#define ERROR_INTERNET_OUT_OF_HANDLES (INTERNET_ERROR_BASE+1)
+#define ERROR_INTERNET_TIMEOUT (INTERNET_ERROR_BASE+2)
+#define ERROR_INTERNET_EXTENDED_ERROR (INTERNET_ERROR_BASE+3)
+#define ERROR_INTERNET_INTERNAL_ERROR (INTERNET_ERROR_BASE+4)
+#define ERROR_INTERNET_INVALID_URL (INTERNET_ERROR_BASE+5)
+#define ERROR_INTERNET_UNRECOGNIZED_SCHEME (INTERNET_ERROR_BASE+6)
+#define ERROR_INTERNET_NAME_NOT_RESOLVED (INTERNET_ERROR_BASE+7)
+#define ERROR_INTERNET_PROTOCOL_NOT_FOUND (INTERNET_ERROR_BASE+8)
+#define ERROR_INTERNET_INVALID_OPTION (INTERNET_ERROR_BASE+9)
+#define ERROR_INTERNET_BAD_OPTION_LENGTH (INTERNET_ERROR_BASE+10)
+#define ERROR_INTERNET_OPTION_NOT_SETTABLE (INTERNET_ERROR_BASE+11)
+#define ERROR_INTERNET_SHUTDOWN (INTERNET_ERROR_BASE+12)
+#define ERROR_INTERNET_INCORRECT_USER_NAME (INTERNET_ERROR_BASE+13)
+#define ERROR_INTERNET_INCORRECT_PASSWORD (INTERNET_ERROR_BASE+14)
+#define ERROR_INTERNET_LOGIN_FAILURE (INTERNET_ERROR_BASE+15)
+#define ERROR_INTERNET_INVALID_OPERATION (INTERNET_ERROR_BASE+16)
+#define ERROR_INTERNET_OPERATION_CANCELLED (INTERNET_ERROR_BASE+17)
+#define ERROR_INTERNET_INCORRECT_HANDLE_TYPE (INTERNET_ERROR_BASE+18)
+#define ERROR_INTERNET_INCORRECT_HANDLE_STATE (INTERNET_ERROR_BASE+19)
+#define ERROR_INTERNET_NOT_PROXY_REQUEST (INTERNET_ERROR_BASE+20)
+#define ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND (INTERNET_ERROR_BASE+21)
+#define ERROR_INTERNET_BAD_REGISTRY_PARAMETER (INTERNET_ERROR_BASE+22)
+#define ERROR_INTERNET_NO_DIRECT_ACCESS (INTERNET_ERROR_BASE+23)
+#define ERROR_INTERNET_NO_CONTEXT (INTERNET_ERROR_BASE+24)
+#define ERROR_INTERNET_NO_CALLBACK (INTERNET_ERROR_BASE+25)
+#define ERROR_INTERNET_REQUEST_PENDING (INTERNET_ERROR_BASE+26)
+#define ERROR_INTERNET_INCORRECT_FORMAT (INTERNET_ERROR_BASE+27)
+#define ERROR_INTERNET_ITEM_NOT_FOUND (INTERNET_ERROR_BASE+28)
+#define ERROR_INTERNET_CANNOT_CONNECT (INTERNET_ERROR_BASE+29)
+#define ERROR_INTERNET_CONNECTION_ABORTED (INTERNET_ERROR_BASE+30)
+#define ERROR_INTERNET_CONNECTION_RESET (INTERNET_ERROR_BASE+31)
+#define ERROR_INTERNET_FORCE_RETRY (INTERNET_ERROR_BASE+32)
+#define ERROR_INTERNET_INVALID_PROXY_REQUEST (INTERNET_ERROR_BASE+33)
+#define ERROR_INTERNET_NEED_UI (INTERNET_ERROR_BASE+34)
+#define ERROR_INTERNET_HANDLE_EXISTS (INTERNET_ERROR_BASE+36)
+#define ERROR_INTERNET_SEC_CERT_DATE_INVALID (INTERNET_ERROR_BASE+37)
+#define ERROR_INTERNET_SEC_CERT_CN_INVALID (INTERNET_ERROR_BASE+38)
+#define ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR (INTERNET_ERROR_BASE+39)
+#define ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR (INTERNET_ERROR_BASE+40)
+#define ERROR_INTERNET_MIXED_SECURITY (INTERNET_ERROR_BASE+41)
+#define ERROR_INTERNET_CHG_POST_IS_NON_SECURE (INTERNET_ERROR_BASE+42)
+#define ERROR_INTERNET_POST_IS_NON_SECURE (INTERNET_ERROR_BASE+43)
+#define ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED (INTERNET_ERROR_BASE+44)
+#define ERROR_INTERNET_INVALID_CA (INTERNET_ERROR_BASE+45)
+#define ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP (INTERNET_ERROR_BASE+46)
+#define ERROR_INTERNET_ASYNC_THREAD_FAILED (INTERNET_ERROR_BASE+47)
+#define ERROR_INTERNET_REDIRECT_SCHEME_CHANGE (INTERNET_ERROR_BASE+48)
+#define ERROR_FTP_TRANSFER_IN_PROGRESS (INTERNET_ERROR_BASE+110)
+#define ERROR_FTP_DROPPED (INTERNET_ERROR_BASE+111)
+#define ERROR_GOPHER_PROTOCOL_ERROR (INTERNET_ERROR_BASE+130)
+#define ERROR_GOPHER_NOT_FILE (INTERNET_ERROR_BASE+131)
+#define ERROR_GOPHER_DATA_ERROR (INTERNET_ERROR_BASE+132)
+#define ERROR_GOPHER_END_OF_DATA (INTERNET_ERROR_BASE+133)
+#define ERROR_GOPHER_INVALID_LOCATOR (INTERNET_ERROR_BASE+134)
+#define ERROR_GOPHER_INCORRECT_LOCATOR_TYPE (INTERNET_ERROR_BASE+135)
+#define ERROR_GOPHER_NOT_GOPHER_PLUS (INTERNET_ERROR_BASE+136)
+#define ERROR_GOPHER_ATTRIBUTE_NOT_FOUND (INTERNET_ERROR_BASE+137)
+#define ERROR_GOPHER_UNKNOWN_LOCATOR (INTERNET_ERROR_BASE+138)
+#define ERROR_HTTP_HEADER_NOT_FOUND (INTERNET_ERROR_BASE+150)
+#define ERROR_HTTP_DOWNLEVEL_SERVER (INTERNET_ERROR_BASE+151)
+#define ERROR_HTTP_INVALID_SERVER_RESPONSE (INTERNET_ERROR_BASE+152)
+#define ERROR_HTTP_INVALID_HEADER (INTERNET_ERROR_BASE+153)
+#define ERROR_HTTP_INVALID_QUERY_REQUEST (INTERNET_ERROR_BASE+154)
+#define ERROR_HTTP_HEADER_ALREADY_EXISTS (INTERNET_ERROR_BASE+155)
+#define ERROR_HTTP_REDIRECT_FAILED (INTERNET_ERROR_BASE+156)
+#define ERROR_HTTP_NOT_REDIRECTED (INTERNET_ERROR_BASE+160)
+#define ERROR_INTERNET_SECURITY_CHANNEL_ERROR (INTERNET_ERROR_BASE+157)
+#define ERROR_INTERNET_UNABLE_TO_CACHE_FILE (INTERNET_ERROR_BASE+158)
+#define ERROR_INTERNET_TCPIP_NOT_INSTALLED (INTERNET_ERROR_BASE+159)
+#define INTERNET_ERROR_LAST ERROR_INTERNET_TCPIP_NOT_INSTALLED
+#define URLCACHEAPI DECLSPEC_IMPORT
+#define NORMAL_CACHE_ENTRY 1
+#define STABLE_CACHE_ENTRY 2
+#define STICKY_CACHE_ENTRY 4
+#define SPARSE_CACHE_ENTRY 0x10000
+#define OCX_CACHE_ENTRY 0x20000
+#define COOKIE_CACHE_ENTRY 0x100000
+#define URLHISTORY_CACHE_ENTRY 0x200000
+#define CACHE_ENTRY_ATTRIBUTE_FC 4
+#define CACHE_ENTRY_HITRATE_FC 0x10
+#define CACHE_ENTRY_MODTIME_FC 0x40
+#define CACHE_ENTRY_EXPTIME_FC 0x80
+#define CACHE_ENTRY_ACCTIME_FC 0x100
+#define CACHE_ENTRY_SYNCTIME_FC 0x200
+#define CACHE_ENTRY_HEADERINFO_FC 0x400
+#define HSR_ASYNC WININET_API_FLAG_ASYNC
+#define HSR_SYNC WININET_API_FLAG_SYNC
+#define HSR_USE_CONTEXT WININET_API_FLAG_USE_CONTEXT
+#define HSR_INITIATE 8
+#define HSR_DOWNLOAD 16
+#define HSR_CHUNKED 32
+
+typedef PVOID HINTERNET;
+typedef HINTERNET *LPHINTERNET;
+typedef WORD INTERNET_PORT,*LPINTERNET_PORT;
+typedef enum {
+ INTERNET_SCHEME_PARTIAL = -2, INTERNET_SCHEME_UNKNOWN = -1,
+ INTERNET_SCHEME_DEFAULT = 0, INTERNET_SCHEME_FTP, INTERNET_SCHEME_GOPHER,
+ INTERNET_SCHEME_HTTP, INTERNET_SCHEME_HTTPS, INTERNET_SCHEME_FILE,
+ INTERNET_SCHEME_NEWS, INTERNET_SCHEME_MAILTO, INTERNET_SCHEME_SOCKS,
+ INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP, INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS
+} INTERNET_SCHEME,*LPINTERNET_SCHEME;
+typedef struct { DWORD dwResult; DWORD dwError; } INTERNET_ASYNC_RESULT,*LPINTERNET_ASYNC_RESULT;
+typedef struct { DWORD dwStatus; DWORD dwSize; } INTERNET_PREFETCH_STATUS,*LPINTERNET_PREFETCH_STATUS;
+typedef struct {
+ DWORD dwAccessType;
+ LPCTSTR lpszProxy;
+ LPCTSTR lpszProxyBypass;
+} INTERNET_PROXY_INFO,*LPINTERNET_PROXY_INFO;
+typedef struct {
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+} INTERNET_VERSION_INFO,*LPINTERNET_VERSION_INFO;
+typedef struct {
+ DWORD dwStructSize;
+ LPSTR lpszScheme;
+ DWORD dwSchemeLength;
+ INTERNET_SCHEME nScheme;
+ LPSTR lpszHostName;
+ DWORD dwHostNameLength;
+ INTERNET_PORT nPort;
+ LPSTR lpszUserName;
+ DWORD dwUserNameLength;
+ LPSTR lpszPassword;
+ DWORD dwPasswordLength;
+ LPSTR lpszUrlPath;
+ DWORD dwUrlPathLength;
+ LPSTR lpszExtraInfo;
+ DWORD dwExtraInfoLength;
+} URL_COMPONENTSA,*LPURL_COMPONENTSA;
+typedef struct {
+ DWORD dwStructSize;
+ LPWSTR lpszScheme;
+ DWORD dwSchemeLength;
+ INTERNET_SCHEME nScheme;
+ LPWSTR lpszHostName;
+ DWORD dwHostNameLength;
+ INTERNET_PORT nPort;
+ LPWSTR lpszUserName;
+ DWORD dwUserNameLength;
+ LPWSTR lpszPassword;
+ DWORD dwPasswordLength;
+ LPWSTR lpszUrlPath;
+ DWORD dwUrlPathLength;
+ LPWSTR lpszExtraInfo;
+ DWORD dwExtraInfoLength;
+} URL_COMPONENTSW,*LPURL_COMPONENTSW;
+typedef struct {
+ FILETIME ftExpiry;
+ FILETIME ftStart;
+ LPTSTR lpszSubjectInfo;
+ LPTSTR lpszIssuerInfo;
+ LPTSTR lpszProtocolName;
+ LPTSTR lpszSignatureAlgName;
+ LPTSTR lpszEncryptionAlgName;
+ DWORD dwKeySize;
+} INTERNET_CERTIFICATE_INFO,*LPINTERNET_CERTIFICATE_INFO;
+typedef VOID (CALLBACK * INTERNET_STATUS_CALLBACK)(HINTERNET,DWORD,DWORD,PVOID,DWORD);
+typedef INTERNET_STATUS_CALLBACK * LPINTERNET_STATUS_CALLBACK;
+typedef struct {
+ CHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT+1];
+ DWORD GopherType;
+ DWORD SizeLow;
+ DWORD SizeHigh;
+ FILETIME LastModificationTime;
+ CHAR Locator[MAX_GOPHER_LOCATOR_LENGTH+1];
+} GOPHER_FIND_DATAA,*LPGOPHER_FIND_DATAA;
+typedef struct {
+ WCHAR DisplayString[MAX_GOPHER_DISPLAY_TEXT+1];
+ DWORD GopherType;
+ DWORD SizeLow;
+ DWORD SizeHigh;
+ FILETIME LastModificationTime;
+ WCHAR Locator[MAX_GOPHER_LOCATOR_LENGTH+1];
+} GOPHER_FIND_DATAW,*LPGOPHER_FIND_DATAW;
+typedef struct {
+ LPCTSTR Comment;
+ LPCTSTR EmailAddress;
+} GOPHER_ADMIN_ATTRIBUTE_TYPE,*LPGOPHER_ADMIN_ATTRIBUTE_TYPE;
+typedef struct {FILETIME DateAndTime;} GOPHER_MOD_DATE_ATTRIBUTE_TYPE,*LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE;
+typedef struct {DWORD Ttl;} GOPHER_TTL_ATTRIBUTE_TYPE,*LPGOPHER_TTL_ATTRIBUTE_TYPE;
+typedef struct {INT Score;} GOPHER_SCORE_ATTRIBUTE_TYPE,*LPGOPHER_SCORE_ATTRIBUTE_TYPE;
+typedef struct {
+ INT LowerBound;
+ INT UpperBound;
+} GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE,*LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Site;} GOPHER_SITE_ATTRIBUTE_TYPE,*LPGOPHER_SITE_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Organization;} GOPHER_ORGANIZATION_ATTRIBUTE_TYPE,*LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Location;} GOPHER_LOCATION_ATTRIBUTE_TYPE,*LPGOPHER_LOCATION_ATTRIBUTE_TYPE;
+typedef struct {
+ INT DegreesNorth;
+ INT MinutesNorth;
+ INT SecondsNorth;
+ INT DegreesEast;
+ INT MinutesEast;
+ INT SecondsEast;
+} GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE,*LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE;
+typedef struct {INT Zone;} GOPHER_TIMEZONE_ATTRIBUTE_TYPE,*LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Provider;} GOPHER_PROVIDER_ATTRIBUTE_TYPE,*LPGOPHER_PROVIDER_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Version;} GOPHER_VERSION_ATTRIBUTE_TYPE,*LPGOPHER_VERSION_ATTRIBUTE_TYPE;
+typedef struct {
+ LPCTSTR ShortAbstract;
+ LPCTSTR AbstractFile;
+} GOPHER_ABSTRACT_ATTRIBUTE_TYPE,*LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE;
+typedef struct {
+ LPCTSTR ContentType;
+ LPCTSTR Language;
+ DWORD Size;
+} GOPHER_VIEW_ATTRIBUTE_TYPE,*LPGOPHER_VIEW_ATTRIBUTE_TYPE;
+typedef struct {BOOL TreeWalk;} GOPHER_VERONICA_ATTRIBUTE_TYPE,*LPGOPHER_VERONICA_ATTRIBUTE_TYPE;
+typedef struct {
+ LPCTSTR QuestionType;
+ LPCTSTR QuestionText;
+} GOPHER_ASK_ATTRIBUTE_TYPE,*LPGOPHER_ASK_ATTRIBUTE_TYPE;
+typedef struct {LPCTSTR Text;} GOPHER_UNKNOWN_ATTRIBUTE_TYPE,*LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE;
+typedef struct {
+ DWORD CategoryId;
+ DWORD AttributeId;
+ union {
+ GOPHER_ADMIN_ATTRIBUTE_TYPE Admin;
+ GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate;
+ GOPHER_TTL_ATTRIBUTE_TYPE Ttl;
+ GOPHER_SCORE_ATTRIBUTE_TYPE Score;
+ GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange;
+ GOPHER_SITE_ATTRIBUTE_TYPE Site;
+ GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization;
+ GOPHER_LOCATION_ATTRIBUTE_TYPE Location;
+ GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation;
+ GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone;
+ GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider;
+ GOPHER_VERSION_ATTRIBUTE_TYPE Version;
+ GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract;
+ GOPHER_VIEW_ATTRIBUTE_TYPE View;
+ GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica;
+ GOPHER_ASK_ATTRIBUTE_TYPE Ask;
+ GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown;
+ } AttributeType;
+} GOPHER_ATTRIBUTE_TYPE,*LPGOPHER_ATTRIBUTE_TYPE;
+typedef BOOL(CALLBACK *GOPHER_ATTRIBUTE_ENUMERATOR)(LPGOPHER_ATTRIBUTE_TYPE,DWORD);
+typedef struct _INTERNET_CACHE_ENTRY_INFOA {
+ DWORD dwStructSize;
+ LPSTR lpszSourceUrlName;
+ LPSTR lpszLocalFileName;
+ DWORD CacheEntryType;
+ DWORD dwUseCount;
+ DWORD dwHitRate;
+ DWORD dwSizeLow;
+ DWORD dwSizeHigh;
+ FILETIME LastModifiedTime;
+ FILETIME ExpireTime;
+ FILETIME LastAccessTime;
+ FILETIME LastSyncTime;
+ PBYTE lpHeaderInfo;
+ DWORD dwHeaderInfoSize;
+ LPSTR lpszFileExtension;
+ DWORD dwReserved;
+} INTERNET_CACHE_ENTRY_INFOA,*LPINTERNET_CACHE_ENTRY_INFOA;
+typedef struct _INTERNET_CACHE_ENTRY_INFOW {
+ DWORD dwStructSize;
+ LPSTR lpszSourceUrlName;
+ LPWSTR lpszLocalFileName;
+ DWORD CacheEntryType;
+ DWORD dwUseCount;
+ DWORD dwHitRate;
+ DWORD dwSizeLow;
+ DWORD dwSizeHigh;
+ FILETIME LastModifiedTime;
+ FILETIME ExpireTime;
+ FILETIME LastAccessTime;
+ FILETIME LastSyncTime;
+ PBYTE lpHeaderInfo;
+ DWORD dwHeaderInfoSize;
+ LPWSTR lpszFileExtension;
+ DWORD dwReserved;
+} INTERNET_CACHE_ENTRY_INFOW,*LPINTERNET_CACHE_ENTRY_INFOW;
+typedef struct _INTERNET_BUFFERSA {
+ DWORD dwStructSize;
+ struct _INTERNET_BUFFERSA *Next;
+ LPCSTR lpcszHeader;
+ DWORD dwHeadersLength;
+ DWORD dwHeadersTotal;
+ LPVOID lpvBuffer;
+ DWORD dwBufferLength;
+ DWORD dwBufferTotal;
+ DWORD dwOffsetLow;
+ DWORD dwOffsetHigh;
+} INTERNET_BUFFERSA,*LPINTERNET_BUFFERSA;
+typedef struct _INTERNET_BUFFERSW {
+ DWORD dwStructSize;
+ struct _INTERNET_BUFFERS *Next;
+ LPCWSTR lpcszHeader;
+ DWORD dwHeadersLength;
+ DWORD dwHeadersTotal;
+ LPVOID lpvBuffer;
+ DWORD dwBufferLength;
+ DWORD dwBufferTotal;
+ DWORD dwOffsetLow;
+ DWORD dwOffsetHigh;
+} INTERNET_BUFFERSW,*LPINTERNET_BUFFERSW;
+
+#ifdef UNICODE
+typedef URL_COMPONENTSW URL_COMPONENTS;
+typedef LPURL_COMPONENTSW LPURL_COMPONENTS;
+typedef GOPHER_FIND_DATAW GOPHER_FIND_DATA;
+typedef LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA;
+typedef INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO;
+typedef LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO;
+typedef INTERNET_BUFFERSW INTERNET_BUFFERS,*LPINTERNET_BUFFERS;
+#else
+typedef URL_COMPONENTSA URL_COMPONENTS;
+typedef LPURL_COMPONENTSA LPURL_COMPONENTS;
+typedef GOPHER_FIND_DATAA GOPHER_FIND_DATA;
+typedef LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA;
+typedef INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO;
+typedef LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO;
+typedef INTERNET_BUFFERSA INTERNET_BUFFERS,*LPINTERNET_BUFFERS;
+#endif
+BOOL WINAPI InternetTimeFromSystemTime(SYSTEMTIME*,DWORD,LPSTR,DWORD);
+BOOL WINAPI InternetTimeToSystemTime(LPCSTR,SYSTEMTIME*,DWORD);
+BOOL WINAPI InternetDebugGetLocalTime(SYSTEMTIME*,PDWORD);
+BOOL WINAPI InternetCrackUrlA(LPCSTR,DWORD,DWORD,LPURL_COMPONENTSA);
+BOOL WINAPI InternetCrackUrlW(LPCWSTR,DWORD,DWORD,LPURL_COMPONENTSW);
+BOOL WINAPI InternetCreateUrlA(LPURL_COMPONENTSA,DWORD,LPSTR,PDWORD);
+BOOL WINAPI InternetCreateUrlW(LPURL_COMPONENTSW,DWORD,LPWSTR,PDWORD);
+BOOL WINAPI InternetCanonicalizeUrlA(LPCSTR,LPSTR,PDWORD,DWORD);
+BOOL WINAPI InternetCanonicalizeUrlW(LPCWSTR,LPWSTR,PDWORD,DWORD);
+BOOL WINAPI InternetCombineUrlA(LPCSTR,LPCSTR,LPSTR,PDWORD,DWORD);
+BOOL WINAPI InternetCombineUrlW(LPCWSTR,LPCWSTR,LPWSTR,PDWORD,DWORD);
+HINTERNET WINAPI InternetOpenA(LPCSTR,DWORD,LPCSTR,LPCSTR,DWORD);
+HINTERNET WINAPI InternetOpenW(LPCWSTR,DWORD,LPCWSTR,LPCWSTR,DWORD);
+BOOL WINAPI InternetCloseHandle(HINTERNET);
+HINTERNET WINAPI InternetConnectA(HINTERNET,LPCSTR,INTERNET_PORT,LPCSTR,LPCSTR,DWORD,DWORD,DWORD);
+HINTERNET WINAPI InternetConnectW(HINTERNET,LPCWSTR,INTERNET_PORT,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD);
+HINTERNET WINAPI InternetOpenUrlA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD,DWORD);
+HINTERNET WINAPI InternetOpenUrlW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD,DWORD);
+BOOL WINAPI InternetReadFile(HINTERNET,PVOID,DWORD,PDWORD);
+DWORD WINAPI InternetSetFilePointer( HINTERNET,LONG,PVOID,DWORD,DWORD);
+BOOL WINAPI InternetWriteFile(HINTERNET,LPCVOID,DWORD,PDWORD);
+BOOL WINAPI InternetQueryDataAvailable( HINTERNET,PDWORD,DWORD,DWORD);
+BOOL WINAPI InternetFindNextFileA(HINTERNET,PVOID);
+BOOL WINAPI InternetFindNextFileW(HINTERNET,PVOID);
+BOOL WINAPI InternetQueryOptionA(HINTERNET,DWORD,PVOID,PDWORD);
+BOOL WINAPI InternetQueryOptionW(HINTERNET,DWORD,PVOID,PDWORD);
+BOOL WINAPI InternetSetOptionA(HINTERNET,DWORD,PVOID,DWORD);
+BOOL WINAPI InternetSetOptionW(HINTERNET,DWORD,PVOID,DWORD);
+BOOL WINAPI InternetSetOptionExA(HINTERNET,DWORD,PVOID,DWORD,DWORD);
+BOOL WINAPI InternetSetOptionExW(HINTERNET,DWORD,PVOID,DWORD,DWORD);
+BOOL WINAPI InternetGetLastResponseInfoA(PDWORD,LPSTR,PDWORD);
+BOOL WINAPI InternetGetLastResponseInfoW(PDWORD,LPWSTR,PDWORD);
+INTERNET_STATUS_CALLBACK WINAPI InternetSetStatusCallback(HINTERNET,INTERNET_STATUS_CALLBACK);
+HINTERNET WINAPI FtpFindFirstFileA(HINTERNET,LPCSTR,LPWIN32_FIND_DATA,DWORD,DWORD);
+HINTERNET WINAPI FtpFindFirstFileW(HINTERNET,LPCWSTR,LPWIN32_FIND_DATA,DWORD,DWORD);
+BOOL WINAPI FtpGetFileA(HINTERNET,LPCSTR,LPCSTR,BOOL,DWORD,DWORD,DWORD);
+BOOL WINAPI FtpGetFileW( HINTERNET,LPCWSTR,LPCWSTR,BOOL,DWORD,DWORD,DWORD);
+BOOL WINAPI FtpPutFileA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD);
+BOOL WINAPI FtpPutFileW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD);
+BOOL WINAPI FtpDeleteFileA(HINTERNET,LPCSTR);
+BOOL WINAPI FtpDeleteFileW(HINTERNET,LPCWSTR);
+BOOL WINAPI FtpRenameFileA(HINTERNET, LPCSTR,LPCSTR);
+BOOL WINAPI FtpRenameFileW(HINTERNET,LPCWSTR,LPCWSTR);
+HINTERNET WINAPI FtpOpenFileA(HINTERNET,LPCSTR,DWORD,DWORD,DWORD);
+HINTERNET WINAPI FtpOpenFileW(HINTERNET,LPCWSTR,DWORD,DWORD,DWORD);
+BOOL WINAPI FtpCreateDirectoryA(HINTERNET,LPCSTR);
+BOOL WINAPI FtpCreateDirectoryW(HINTERNET,LPCWSTR);
+BOOL WINAPI FtpRemoveDirectoryA(HINTERNET,LPCSTR);
+BOOL WINAPI FtpRemoveDirectoryW(HINTERNET,LPCWSTR);
+BOOL WINAPI FtpSetCurrentDirectoryA(HINTERNET,LPCSTR);
+BOOL WINAPI FtpSetCurrentDirectoryW(HINTERNET,LPCWSTR);
+BOOL WINAPI FtpGetCurrentDirectoryA(HINTERNET,LPSTR,PDWORD);
+BOOL WINAPI FtpGetCurrentDirectoryW(HINTERNET,LPWSTR,PDWORD);
+BOOL WINAPI FtpCommandA(HINTERNET,BOOL,DWORD,LPCSTR,DWORD);
+BOOL WINAPI FtpCommandW( HINTERNET,BOOL,DWORD,LPCWSTR,DWORD);
+BOOL WINAPI GopherCreateLocatorA(LPCSTR,INTERNET_PORT,LPCSTR,LPCSTR,DWORD,LPSTR,PDWORD);
+BOOL WINAPI GopherCreateLocatorW(LPCWSTR,INTERNET_PORT,LPCWSTR,LPCWSTR,DWORD,LPWSTR,PDWORD);
+BOOL WINAPI GopherGetLocatorTypeA(LPCSTR,PDWORD);
+BOOL WINAPI GopherGetLocatorTypeW(LPCWSTR,PDWORD);
+HINTERNET WINAPI GopherFindFirstFileA(HINTERNET,LPCSTR,LPCSTR,LPGOPHER_FIND_DATAA,DWORD,DWORD);
+HINTERNET WINAPI GopherFindFirstFileW(HINTERNET,LPCWSTR,LPCWSTR,LPGOPHER_FIND_DATAW,DWORD,DWORD);
+HINTERNET WINAPI GopherOpenFileA(HINTERNET,LPCSTR,LPCSTR,DWORD,DWORD);
+HINTERNET WINAPI GopherOpenFileW(HINTERNET,LPCWSTR,LPCWSTR,DWORD,DWORD);
+BOOL WINAPI GopherGetAttributeA(HINTERNET,LPCSTR,LPCSTR,LPBYTE,DWORD,PDWORD,GOPHER_ATTRIBUTE_ENUMERATOR,DWORD);
+BOOL WINAPI GopherGetAttributeW(HINTERNET,LPCWSTR,
+LPCWSTR, LPBYTE, DWORD, PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD);
+HINTERNET WINAPI HttpOpenRequestA(HINTERNET,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR *,DWORD,DWORD);
+HINTERNET WINAPI HttpOpenRequestW(HINTERNET,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR FAR * lplpszAcceptTypes , DWORD dwFlags, DWORD dwContext);
+BOOL WINAPI HttpAddRequestHeadersA(HINTERNET,LPCSTR,DWORD,DWORD);
+BOOL WINAPI HttpAddRequestHeadersW(HINTERNET,LPCWSTR,DWORD,DWORD);
+BOOL WINAPI HttpSendRequestA(HINTERNET,LPCSTR,DWORD,PVOID,DWORD);
+BOOL WINAPI HttpSendRequestW(HINTERNET,LPCWSTR,DWORD,PVOID,DWORD);
+BOOL WINAPI HttpQueryInfoA(HINTERNET,DWORD,PVOID,PDWORD,PDWORD);
+BOOL WINAPI HttpQueryInfoW(HINTERNET,DWORD,PVOID,PDWORD,PDWORD);
+BOOL WINAPI InternetSetCookieA(LPCSTR,LPCSTR,LPCSTR);
+BOOL WINAPI InternetSetCookieW(LPCSTR,LPCWSTR,LPCWSTR);
+BOOL WINAPI InternetGetCookieA(LPCSTR,LPCSTR,LPSTR,PDWORD);
+BOOL WINAPI InternetGetCookieW(LPCSTR,LPCWSTR,LPWSTR,PDWORD);
+DWORD WINAPI InternetAttemptConnect(DWORD);
+DWORD WINAPI InternetErrorDlg(HWND,HINTERNET,DWORD,DWORD,PVOID *);
+DWORD WINAPI InternetConfirmZoneCrossing(HWND,LPSTR,LPSTR,BOOL);
+BOOL WINAPI CreateUrlCacheEntryA(LPCSTR,DWORD,LPCSTR,LPSTR,DWORD);
+BOOL WINAPI CreateUrlCacheEntryW(LPCSTR,DWORD,LPCSTR,LPWSTR,DWORD);
+BOOL WINAPI CommitUrlCacheEntryA(LPCSTR,LPCSTR,FILETIME,FILETIME,DWORD,LPBYTE,DWORD,LPCSTR,DWORD);
+BOOL WINAPI CommitUrlCacheEntryW(LPCSTR,LPCWSTR,FILETIME,FILETIME,DWORD,LPBYTE,DWORD,LPCWSTR,DWORD);
+BOOL WINAPI RetrieveUrlCacheEntryFileA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD,DWORD);
+BOOL WINAPI RetrieveUrlCacheEntryFileW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD,DWORD);
+BOOL WINAPI UnlockUrlCacheEntryFile(LPCSTR,DWORD);
+HANDLE WINAPI RetrieveUrlCacheEntryStreamA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD,BOOL,DWORD);
+HANDLE WINAPI RetrieveUrlCacheEntryStreamW( LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD,BOOL,DWORD);
+BOOL WINAPI ReadUrlCacheEntryStream(HANDLE,DWORD,PVOID,PDWORD,DWORD);
+BOOL WINAPI UnlockUrlCacheEntryStream( HANDLE,DWORD);
+BOOL WINAPI GetUrlCacheEntryInfoA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD);
+BOOL WINAPI GetUrlCacheEntryInfoW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD);
+BOOL WINAPI SetUrlCacheEntryInfoA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,DWORD);
+BOOL WINAPI SetUrlCacheEntryInfoW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,DWORD);
+HANDLE WINAPI FindFirstUrlCacheEntryA(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD);
+HANDLE WINAPI FindFirstUrlCacheEntryW(LPCSTR,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD);
+BOOL WINAPI FindNextUrlCacheEntryA(HANDLE,LPINTERNET_CACHE_ENTRY_INFOA,PDWORD);
+BOOL WINAPI FindNextUrlCacheEntryW(HANDLE,LPINTERNET_CACHE_ENTRY_INFOW,PDWORD);
+BOOL WINAPI FindCloseUrlCache(HANDLE);
+BOOL WINAPI DeleteUrlCacheEntry(LPCSTR);
+DWORD AuthenticateUser(PVOID*,LPSTR,LPSTR,DWORD,LPSTR,DWORD,LPSTR,LPSTR);
+BOOL WINAPI HttpSendRequestExA(HINTERNET,LPINTERNET_BUFFERSA,LPINTERNET_BUFFERSA,DWORD,DWORD);
+BOOL WINAPI HttpSendRequestExW(HINTERNET,LPINTERNET_BUFFERSW,LPINTERNET_BUFFERSW,DWORD,DWORD);
+BOOL WINAPI HttpEndRequestA(HINTERNET,LPINTERNET_BUFFERSA,DWORD,DWORD);
+BOOL WINAPI HttpEndRequestW(HINTERNET,LPINTERNET_BUFFERSW,DWORD,DWORD);
+#ifdef UNICODE
+#define InternetCrackUrl InternetCrackUrlW
+#define InternetCreateUrl InternetCreateUrlW
+#define InternetCanonicalizeUrl InternetCanonicalizeUrlW
+#define InternetCombineUrl InternetCombineUrlW
+#define InternetOpen InternetOpenW
+#define InternetConnect InternetConnectW
+#define InternetOpenUrl InternetOpenUrlW
+#define InternetFindNextFile InternetFindNextFileW
+#define InternetQueryOption InternetQueryOptionW
+#define InternetSetOption InternetSetOptionW
+#define InternetSetOptionEx InternetSetOptionExW
+#define InternetGetLastResponseInfo InternetGetLastResponseInfoW
+#define FtpFindFirstFile FtpFindFirstFileW
+#define FtpGetFile FtpGetFileW
+#define FtpPutFile FtpPutFileW
+#define FtpDeleteFile FtpDeleteFileW
+#define FtpRenameFile FtpRenameFileW
+#define FtpOpenFile FtpOpenFileW
+#define FtpCreateDirectory FtpCreateDirectoryW
+#define FtpRemoveDirectory FtpRemoveDirectoryW
+#define FtpSetCurrentDirectory FtpSetCurrentDirectoryW
+#define FtpGetCurrentDirectory FtpGetCurrentDirectoryW
+#define FtpCommand FtpCommandW
+#define GopherGetLocatorType GopherGetLocatorTypeW
+#define GopherCreateLocator GopherCreateLocatorW
+#define GopherFindFirstFile GopherFindFirstFileW
+#define GopherOpenFile GopherOpenFileW
+#define GopherGetAttribute GopherGetAttributeW
+#define HttpSendRequest HttpSendRequestW
+#define HttpOpenRequest HttpOpenRequestW
+#define HttpAddRequestHeaders HttpAddRequestHeadersW
+#define HttpQueryInfo HttpQueryInfoW
+#define InternetSetCookie InternetSetCookieW
+#define InternetGetCookie InternetGetCookieW
+#define CreateUrlCacheEntry CreateUrlCacheEntryW
+#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamW
+#define FindNextUrlCacheEntry FindNextUrlCacheEntryW
+#define CommitUrlCacheEntry CommitUrlCacheEntryW
+#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoW
+#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoW
+#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryW
+#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileW
+#define HttpSendRequestEx HttpSendRequestExW
+#define HttpEndRequest HttpEndRequestW
+#else
+#define GopherGetAttribute GopherGetAttributeA
+#define InternetCrackUrl InternetCrackUrlA
+#define InternetCreateUrl InternetCreateUrlA
+#define InternetCanonicalizeUrl InternetCanonicalizeUrlA
+#define InternetCombineUrl InternetCombineUrlA
+#define InternetOpen InternetOpenA
+#define InternetConnect InternetConnectA
+#define InternetOpenUrl InternetOpenUrlA
+#define InternetFindNextFile InternetFindNextFileA
+#define InternetQueryOption InternetQueryOptionA
+#define InternetSetOption InternetSetOptionA
+#define InternetSetOptionEx InternetSetOptionExA
+#define InternetGetLastResponseInfo InternetGetLastResponseInfoA
+#define FtpFindFirstFile FtpFindFirstFileA
+#define FtpGetFile FtpGetFileA
+#define FtpPutFile FtpPutFileA
+#define FtpDeleteFile FtpDeleteFileA
+#define FtpRenameFile FtpRenameFileA
+#define FtpOpenFile FtpOpenFileA
+#define FtpCreateDirectory FtpCreateDirectoryA
+#define FtpRemoveDirectory FtpRemoveDirectoryA
+#define FtpSetCurrentDirectory FtpSetCurrentDirectoryA
+#define FtpGetCurrentDirectory FtpGetCurrentDirectoryA
+#define FtpCommand FtpCommandA
+#define GopherGetLocatorType GopherGetLocatorTypeA
+#define GopherCreateLocator GopherCreateLocatorA
+#define GopherFindFirstFile GopherFindFirstFileA
+#define GopherOpenFile GopherOpenFileA
+#define HttpSendRequest HttpSendRequestA
+#define HttpOpenRequest HttpOpenRequestA
+#define HttpAddRequestHeaders HttpAddRequestHeadersA
+#define HttpQueryInfo HttpQueryInfoA
+#define InternetSetCookie InternetSetCookieA
+#define InternetGetCookie InternetGetCookieA
+#define CreateUrlCacheEntry CreateUrlCacheEntryA
+#define RetrieveUrlCacheEntryStream RetrieveUrlCacheEntryStreamA
+#define FindNextUrlCacheEntry FindNextUrlCacheEntryA
+#define CommitUrlCacheEntry CommitUrlCacheEntryA
+#define GetUrlCacheEntryInfo GetUrlCacheEntryInfoA
+#define SetUrlCacheEntryInfo SetUrlCacheEntryInfoA
+#define FindFirstUrlCacheEntry FindFirstUrlCacheEntryA
+#define RetrieveUrlCacheEntryFile RetrieveUrlCacheEntryFileA
+#define HttpSendRequestEx HttpSendRequestExA
+#define HttpEndRequest HttpEndRequestA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/winioctl.h b/winsup/w32api/include/winioctl.h
new file mode 100644
index 000000000..b9ac29f22
--- /dev/null
+++ b/winsup/w32api/include/winioctl.h
@@ -0,0 +1,255 @@
+#ifndef _WINIOCTL_H
+#define _WINIOCTL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define HIST_NO_OF_BUCKETS 24
+#define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET)
+#define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM)
+#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m))
+#define IOCTL_DISK_BASE FILE_DEVICE_DISK
+#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE,0,METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,1,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,2,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS)
+#define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,3,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,4,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS)
+#define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE,5,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE,6,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS)
+#define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE,7,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS)
+#define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE,8,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE,9,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE,10,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE,11,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE,13,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,16,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x200,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x201,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x202,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x203,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE,0x204,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE,0x205,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE,0x206,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_REMOVE_DEVICE CTL_CODE(IOCTL_DISK_BASE,0x207,METHOD_BUFFERED,FILE_READ_ACCESS)
+#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE,0x300,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define DEVICE_TYPE DWORD
+#define FILE_DEVICE_BEEP 1
+#define FILE_DEVICE_CD_ROM 2
+#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 3
+#define FILE_DEVICE_CONTROLLER 4
+#define FILE_DEVICE_DATALINK 5
+#define FILE_DEVICE_DFS 6
+#define FILE_DEVICE_DISK 7
+#define FILE_DEVICE_DISK_FILE_SYSTEM 8
+#define FILE_DEVICE_FILE_SYSTEM 9
+#define FILE_DEVICE_INPORT_PORT 10
+#define FILE_DEVICE_KEYBOARD 11
+#define FILE_DEVICE_MAILSLOT 12
+#define FILE_DEVICE_MIDI_IN 13
+#define FILE_DEVICE_MIDI_OUT 14
+#define FILE_DEVICE_MOUSE 15
+#define FILE_DEVICE_MULTI_UNC_PROVIDER 16
+#define FILE_DEVICE_NAMED_PIPE 17
+#define FILE_DEVICE_NETWORK 18
+#define FILE_DEVICE_NETWORK_BROWSER 19
+#define FILE_DEVICE_NETWORK_FILE_SYSTEM 20
+#define FILE_DEVICE_NULL 21
+#define FILE_DEVICE_PARALLEL_PORT 22
+#define FILE_DEVICE_PHYSICAL_NETCARD 23
+#define FILE_DEVICE_PRINTER 24
+#define FILE_DEVICE_SCANNER 25
+#define FILE_DEVICE_SERIAL_MOUSE_PORT 26
+#define FILE_DEVICE_SERIAL_PORT 27
+#define FILE_DEVICE_SCREEN 28
+#define FILE_DEVICE_SOUND 29
+#define FILE_DEVICE_STREAMS 30
+#define FILE_DEVICE_TAPE 31
+#define FILE_DEVICE_TAPE_FILE_SYSTEM 32
+#define FILE_DEVICE_TRANSPORT 33
+#define FILE_DEVICE_UNKNOWN 34
+#define FILE_DEVICE_VIDEO 35
+#define FILE_DEVICE_VIRTUAL_DISK 36
+#define FILE_DEVICE_WAVE_IN 37
+#define FILE_DEVICE_WAVE_OUT 38
+#define FILE_DEVICE_8042_PORT 39
+#define FILE_DEVICE_NETWORK_REDIRECTOR 40
+#define FILE_DEVICE_BATTERY 41
+#define FILE_DEVICE_BUS_EXTENDER 41
+#define PARTITION_ENTRY_UNUSED 0
+#define PARTITION_FAT_12 1
+#define PARTITION_XENIX_1 2
+#define PARTITION_XENIX_2 3
+#define PARTITION_FAT_16 4
+#define PARTITION_EXTENDED 5
+#define PARTITION_HUGE 6
+#define PARTITION_IFS 7
+#define PARTITION_PREP 0x41
+#define PARTITION_UNIX 0x63
+#define PARTITION_NTFT 128
+#define VALID_NTFT 0xC0
+#define METHOD_BUFFERED 0
+#define METHOD_IN_DIRECT 1
+#define METHOD_OUT_DIRECT 2
+#define METHOD_NEITHER 3
+#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define SERIAL_LSRMST_ESCAPE 0
+#define SERIAL_LSRMST_LSR_DATA 1
+#define SERIAL_LSRMST_LSR_NODATA 2
+#define SERIAL_LSRMST_MST 3
+#define FILE_ANY_ACCESS 0
+#define FILE_READ_ACCESS 1
+#define FILE_WRITE_ACCESS 2
+#define DISK_LOGGING_START 0
+#define DISK_LOGGING_STOP 1
+#define DISK_LOGGING_DUMP 2
+#define DISK_BINNING 3
+#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_MOUNT_DBLS_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,13,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
+#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
+#define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA)
+#define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA)
+typedef WORD BAD_TRACK_NUMBER,*PBAD_TRACK_NUMBER;
+typedef enum _BIN_TYPES {RequestSize,RequestLocation} BIN_TYPES;
+typedef struct _BIN_RANGE {
+ LARGE_INTEGER StartValue;
+ LARGE_INTEGER Length;
+} BIN_RANGE,*PBIN_RANGE;
+typedef struct _BIN_COUNT {
+ BIN_RANGE BinRange;
+ DWORD BinCount;
+} BIN_COUNT,*PBIN_COUNT;
+typedef struct _BIN_RESULTS {
+ DWORD NumberOfBins;
+ BIN_COUNT BinCounts[1];
+} BIN_RESULTS,*PBIN_RESULTS;
+typedef enum _MEDIA_TYPE {
+ Unknown,
+ F5_1Pt2_512,
+ F3_1Pt44_512,
+ F3_2Pt88_512,
+ F3_20Pt8_512,
+ F3_720_512,
+ F5_360_512,
+ F5_320_512,
+ F5_320_1024,
+ F5_180_512,
+ F5_160_512,
+ RemovableMedia,
+ FixedMedia
+} MEDIA_TYPE;
+typedef struct _DISK_GEOMETRY {
+ LARGE_INTEGER Cylinders;
+ MEDIA_TYPE MediaType;
+ DWORD TracksPerCylinder;
+ DWORD SectorsPerTrack;
+ DWORD BytesPerSector;
+} DISK_GEOMETRY;
+typedef struct _DISK_PERFORMANCE {
+ LARGE_INTEGER BytesRead;
+ LARGE_INTEGER BytesWritten;
+ LARGE_INTEGER ReadTime;
+ LARGE_INTEGER WriteTime;
+ DWORD ReadCount;
+ DWORD WriteCount;
+ DWORD QueueDepth;
+} DISK_PERFORMANCE;
+typedef struct _DISK_RECORD {
+ LARGE_INTEGER ByteOffset;
+ LARGE_INTEGER StartTime;
+ LARGE_INTEGER EndTime;
+ PVOID VirtualAddress;
+ DWORD NumberOfBytes;
+ BYTE DeviceNumber;
+ BOOLEAN ReadRequest;
+} DISK_RECORD,*PDISK_RECORD;
+typedef struct _DISK_LOGGING {
+ BYTE Function;
+ PVOID BufferAddress;
+ DWORD BufferSize;
+} DISK_LOGGING,*PDISK_LOGGING;
+typedef struct _FORMAT_PARAMETERS {
+ MEDIA_TYPE MediaType;
+ DWORD StartCylinderNumber;
+ DWORD EndCylinderNumber;
+ DWORD StartHeadNumber;
+ DWORD EndHeadNumber;
+} FORMAT_PARAMETERS,*PFORMAT_PARAMETERS;
+typedef struct _FORMAT_EX_PARAMETERS {
+ MEDIA_TYPE MediaType;
+ DWORD StartCylinderNumber;
+ DWORD EndCylinderNumber;
+ DWORD StartHeadNumber;
+ DWORD EndHeadNumber;
+ WORD FormatGapLength;
+ WORD SectorsPerTrack;
+ WORD SectorNumber[1];
+} FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS;
+typedef struct _HISTOGRAM_BUCKET {
+ DWORD Reads;
+ DWORD Writes;
+} HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET;
+typedef struct _DISK_HISTOGRAM {
+ LARGE_INTEGER DiskSize;
+ LARGE_INTEGER Start;
+ LARGE_INTEGER End;
+ LARGE_INTEGER Average;
+ LARGE_INTEGER AverageRead;
+ LARGE_INTEGER AverageWrite;
+ DWORD Granularity;
+ DWORD Size;
+ DWORD ReadCount;
+ DWORD WriteCount;
+ PHISTOGRAM_BUCKET Histogram;
+} DISK_HISTOGRAM,*PDISK_HISTOGRAM;
+typedef struct _PARTITION_INFORMATION {
+ LARGE_INTEGER StartingOffset;
+ LARGE_INTEGER PartitionLength;
+ DWORD HiddenSectors;
+ DWORD PartitionNumber;
+ BYTE PartitionType;
+ BOOLEAN BootIndicator;
+ BOOLEAN RecognizedPartition;
+ BOOLEAN RewritePartition;
+} PARTITION_INFORMATION,*PPARTITION_INFORMATION;
+typedef struct _DRIVE_LAYOUT_INFORMATION {
+ DWORD PartitionCount;
+ DWORD Signature;
+ PARTITION_INFORMATION PartitionEntry[1];
+} DRIVE_LAYOUT_INFORMATION;
+typedef struct _PERF_BIN {
+ DWORD NumberOfBins;
+ DWORD TypeOfBin;
+ BIN_RANGE BinsRanges[1];
+} PERF_BIN,*PPERF_BIN;
+typedef struct _PREVENT_MEDIA_REMOVAL {
+ BOOLEAN PreventMediaRemoval;
+} PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL;
+typedef struct _REASSIGN_BLOCKS {
+ WORD Reserved;
+ WORD Count;
+ DWORD BlockNumber[1];
+} REASSIGN_BLOCKS,*PREASSIGN_BLOCKS;
+typedef struct _SET_PARTITION_INFORMATION {
+ BYTE PartitionType;
+} SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION;
+typedef struct _VERIFY_INFORMATION {
+ LARGE_INTEGER StartingOffset;
+ DWORD Length;
+} VERIFY_INFORMATION,*PVERIFY_INFORMATION;
+#define IsRecognizedPartition(t) (((t&PARTITION_NTFT)&&((t&~0xC0)==PARTITION_FAT_12))||\
+ ((t&PARTITION_NTFT)&&((t&~0xC0)==PARTITION_FAT_16))||\
+ ((t&PARTITION_NTFT)&&((t&~0xC0)==PARTITION_IFS))||\
+ ((t&PARTITION_NTFT)&&((t&~0xC0)==PARTITION_HUGE))||\
+ ((t&~PARTITION_NTFT)==PARTITION_FAT_12)||\
+ ((t&~PARTITION_NTFT)==PARTITION_FAT_16)||\
+ ((t&~PARTITION_NTFT)==PARTITION_IFS)||\
+ ((t&~PARTITION_NTFT)==PARTITION_HUGE))
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/winnetwk.h b/winsup/w32api/include/winnetwk.h
new file mode 100644
index 000000000..538487cb0
--- /dev/null
+++ b/winsup/w32api/include/winnetwk.h
@@ -0,0 +1,312 @@
+#ifndef _WINNETWK_H
+#define _WINNETWK_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WNNC_NET_MSNET 0x10000
+#define WNNC_NET_LANMAN 0x20000
+#define WNNC_NET_NETWARE 0x30000
+#define WNNC_NET_VINES 0x40000
+#define WNNC_NET_10NET 0x50000
+#define WNNC_NET_LOCUS 0x60000
+#define WNNC_NET_SUN_PC_NFS 0x70000
+#define WNNC_NET_LANSTEP 0x80000
+#define WNNC_NET_9TILES 0x90000
+#define WNNC_NET_LANTASTIC 0xA0000
+#define WNNC_NET_AS400 0xB0000
+#define WNNC_NET_FTP_NFS 0xC0000
+#define WNNC_NET_PATHWORKS 0xD0000
+#define WNNC_NET_LIFENET 0xE0000
+#define WNNC_NET_POWERLAN 0xF0000
+#define WNNC_NET_BWNFS 0x100000
+#define WNNC_NET_COGENT 0x110000
+#define WNNC_NET_FARALLON 0x120000
+#define WNNC_NET_APPLETALK 0x130000
+#define WNNC_NET_INTERGRAPH 0x140000
+#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 1
+#define RESOURCEUSAGE_CONTAINER 2
+#define RESOURCEUSAGE_NOLOCALDEVICE 4
+#define RESOURCEUSAGE_SIBLING 8
+#define RESOURCEUSAGE_ALL (RESOURCEUSAGE_CONNECTABLE|RESOURCEUSAGE_CONTAINER)
+#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 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 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 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/winsup/w32api/include/winnls.h b/winsup/w32api/include/winnls.h
new file mode 100644
index 000000000..851edafc9
--- /dev/null
+++ b/winsup/w32api/include/winnls.h
@@ -0,0 +1,454 @@
+#ifndef _WINNLS_H
+#define _WINNLS_H
+#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_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_BYTEREV 2048
+#define LCMAP_FULLWIDTH 8388608
+#define LCMAP_HALFWIDTH 4194304
+#define LCMAP_HIRAGANA 1048576
+#define LCMAP_KATAKANA 2097152
+#define LCMAP_LOWERCASE 256
+#define LCMAP_SORTKEY 1024
+#define LCMAP_UPPERCASE 512
+#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 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_ALPHA 32768
+#define C3_NOTAPPLICABLE 0
+#define TIME_NOMINUTESORSECONDS 1
+#define TIME_NOSECONDS 2
+#define TIME_NOTIMEMARKER 4
+#define TIME_FORCE24HOURFORMAT 8
+#define LCMAP_BYTEREV 2048
+#define LCMAP_FULLWIDTH 8388608
+#define LCMAP_HALFWIDTH 4194304
+#define LCMAP_HIRAGANA 1048576
+#define LCMAP_KATAKANA 2097152
+#define LCMAP_LOWERCASE 256
+#define LCMAP_SORTKEY 1024
+#define LCMAP_UPPERCASE 512
+#define SORT_STRINGSORT 4096
+#define NORM_IGNORECASE 1
+#define NORM_IGNORENONSPACE 2
+#define NORM_IGNORESYMBOLS 4
+#define NORM_IGNOREKANATYPE 65536
+#define NORM_IGNOREWIDTH 131072
+#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_AUSTRALIA 61
+#define CTRY_AUSTRIA 43
+#define CTRY_BELGIUM 32
+#define CTRY_BRAZIL 55
+#define CTRY_BULGARIA 359
+#define CTRY_CANADA 2
+#define CTRY_CROATIA 385
+#define CTRY_CZECH 42
+#define CTRY_DENMARK 45
+#define CTRY_FINLAND 358
+#define CTRY_FRANCE 33
+#define CTRY_GERMANY 49
+#define CTRY_GREECE 30
+#define CTRY_HONG_KONG 852
+#define CTRY_HUNGARY 36
+#define CTRY_ICELAND 354
+#define CTRY_IRELAND 353
+#define CTRY_ITALY 39
+#define CTRY_JAPAN 81
+#define CTRY_MEXICO 52
+#define CTRY_NETHERLANDS 31
+#define CTRY_NEW_ZEALAND 64
+#define CTRY_NORWAY 47
+#define CTRY_POLAND 48
+#define CTRY_PORTUGAL 351
+#define CTRY_PRCHINA 86
+#define CTRY_ROMANIA 40
+#define CTRY_RUSSIA 7
+#define CTRY_SINGAPORE 65
+#define CTRY_SLOVAK 42
+#define CTRY_SLOVENIA 386
+#define CTRY_SOUTH_KOREA 82
+#define CTRY_SPAIN 34
+#define CTRY_SWEDEN 46
+#define CTRY_SWITZERLAND 41
+#define CTRY_TAIWAN 886
+#define CTRY_TURKEY 90
+#define CTRY_UNITED_KINGDOM 44
+#define CTRY_UNITED_STATES 1
+#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
+
+#ifndef RC_INVOKED
+typedef DWORD LCTYPE;
+typedef ULONG CALTYPE;
+typedef ULONG CALID;
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCA)(LPSTR);
+typedef BOOL (CALLBACK *CALINFO_ENUMPROCW)(LPWSTR);
+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 *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 _currencyfmtA {
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPSTR lpDecimalSep;
+ LPSTR lpThousandSep;
+ UINT NegativeOrder;
+ UINT PositiveOrder;
+ LPSTR lpCurrencySymbol;
+} CURRENCYFMTA;
+typedef struct _currencyfmtW {
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPWSTR lpDecimalSep;
+ LPWSTR lpThousandSep;
+ UINT NegativeOrder;
+ UINT PositiveOrder;
+ LPWSTR lpCurrencySymbol;
+} CURRENCYFMTW;
+typedef struct _numberfmtA {
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPSTR lpDecimalSep;
+ LPSTR lpThousandSep;
+ UINT NegativeOrder;
+} NUMBERFMTA;
+typedef struct _numberfmtW {
+ UINT NumDigits;
+ UINT LeadingZero;
+ UINT Grouping;
+ LPWSTR lpDecimalSep;
+ LPWSTR lpThousandSep;
+ UINT NegativeOrder;
+} NUMBERFMTW;
+
+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);
+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);
+
+#ifdef UNICODE
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCW
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCW
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
+typedef CURRENCYFMTW CURRENCYFMT;
+typedef NUMBERFMTW NUMBERFMT;
+#define CompareString CompareStringW
+#define EnumCalendarInfo EnumCalendarInfoW
+#define EnumSystemCodePages EnumSystemCodePagesW
+#define EnumSystemLocales EnumSystemLocalesW
+#define EnumTimeFormats EnumTimeFormatsW
+#define FoldString FoldStringA
+#define GetCurrencyFormat GetCurrencyFormatW
+#define GetDateFormat GetDateFormatW
+#define GetLocaleInfo GetLocaleInfoW
+#define GetNumberFormat GetNumberFormatW
+#define GetStringTypeEx GetStringTypeExW
+#define GetTimeFormat GetTimeFormatW
+#define LCMapString LCMapStringW
+#define SetLocaleInfo SetLocaleInfoW
+#else
+#define CALINFO_ENUMPROC CALINFO_ENUMPROCA
+#define LOCALE_ENUMPROC LOCALE_ENUMPROCA
+#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
+#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
+#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
+typedef CURRENCYFMTA CURRENCYFMT;
+typedef NUMBERFMTA NUMBERFMT;
+#define CompareString CompareStringA
+#define EnumCalendarInfo EnumCalendarInfoA
+#define EnumSystemCodePages EnumSystemCodePagesA
+#define EnumSystemLocales EnumSystemLocalesA
+#define EnumTimeFormats EnumTimeFormatsA
+#define FoldString FoldStringW
+#define GetCurrencyFormat GetCurrencyFormatA
+#define GetDateFormat GetDateFormatA
+#define GetLocaleInfo GetLocaleInfoA
+#define GetNumberFormat GetNumberFormatA
+#define GetStringTypeEx GetStringTypeExA
+#define GetTimeFormat GetTimeFormatA
+#define LCMapString LCMapStringA
+#define SetLocaleInfo SetLocaleInfoA
+#endif
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/winnt.h b/winsup/w32api/include/winnt.h
new file mode 100644
index 000000000..71c0e353a
--- /dev/null
+++ b/winsup/w32api/include/winnt.h
@@ -0,0 +1,2231 @@
+#ifndef _WINNT_H
+#define _WINNT_H
+/* 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
+typedef char CHAR;
+typedef short SHORT;
+typedef long LONG;
+#endif
+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
+typedef WCHAR TCHAR;
+#else
+typedef CHAR TCHAR;
+#endif
+#endif
+typedef TCHAR TBYTE,*PTCH,*PTBYTE;
+typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP,*PTCHAR;
+typedef const TCHAR *LPCTSTR;
+#ifdef UNICODE
+#define TEXT(q) L##q
+#else
+#define TEXT(q) q
+#endif
+#ifndef _T
+#define _T TEXT
+#endif
+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
+#endif
+#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
+#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_NORMAL 128
+#define FILE_ATTRIBUTE_TEMPORARY 256
+#define FILE_ATTRIBUTE_COMPRESSED 2048
+#define FILE_ATTRIBUTE_OFFLINE 0x1000
+#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_IS_COMPRESSED 0x8000
+#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
+#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 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 LANG_BULGARIAN 2
+#define LANG_CHINESE 4
+#define LANG_CROATIAN 26
+#define LANG_CZECH 5
+#define LANG_DANISH 6
+#define LANG_DUTCH 19
+#define LANG_ENGLISH 9
+#define LANG_FINNISH 11
+#define LANG_FRENCH 12
+#define LANG_GERMAN 7
+#define LANG_GREEK 8
+#define LANG_HUNGARIAN 14
+#define LANG_ICELANDIC 15
+#define LANG_ITALIAN 16
+#define LANG_JAPANESE 17
+#define LANG_KOREAN 18
+#define LANG_NEUTRAL 0
+#define LANG_NORWEGIAN 20
+#define LANG_POLISH 21
+#define LANG_PORTUGUESE 22
+#define LANG_ROMANIAN 24
+#define LANG_RUSSIAN 25
+#define LANG_SLOVAK 27
+#define LANG_SLOVENIAN 36
+#define LANG_SPANISH 10
+#define LANG_SWEDISH 29
+#define LANG_TURKISH 31
+#define SUBLANG_CHINESE_SIMPLIFIED 2
+#define SUBLANG_CHINESE_TRADITIONAL 1
+#define SUBLANG_CHINESE_HONGKONG 3
+#define SUBLANG_CHINESE_SINGAPORE 4
+#define SUBLANG_DEFAULT 1
+#define SUBLANG_DUTCH 1
+#define SUBLANG_DUTCH_BELGIAN 2
+#define SUBLANG_ENGLISH_AUS 3
+#define SUBLANG_ENGLISH_CAN 4
+#define SUBLANG_ENGLISH_EIRE 6
+#define SUBLANG_ENGLISH_NZ 5
+#define SUBLANG_ENGLISH_UK 2
+#define SUBLANG_ENGLISH_US 1
+#define SUBLANG_FRENCH 1
+#define SUBLANG_FRENCH_BELGIAN 2
+#define SUBLANG_FRENCH_CANADIAN 3
+#define SUBLANG_FRENCH_SWISS 4
+#define SUBLANG_GERMAN 1
+#define SUBLANG_GERMAN_AUSTRIAN 3
+#define SUBLANG_GERMAN_SWISS 2
+#define SUBLANG_ITALIAN 1
+#define SUBLANG_ITALIAN_SWISS 2
+#define SUBLANG_NEUTRAL 0
+#define SUBLANG_NORWEGIAN_BOKMAL 1
+#define SUBLANG_NORWEGIAN_NYNORSK 2
+#define SUBLANG_PORTUGUESE 2
+#define SUBLANG_PORTUGUESE_BRAZILIAN 1
+#define SUBLANG_SPANISH 1
+#define SUBLANG_SPANISH_MEXICAN 2
+#define SUBLANG_SPANISH_MODERN 3
+#define SUBLANG_SYS_DEFAULT 2
+#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_UNICODE 1
+#define SORT_KOREAN_KSC 0
+#define SORT_KOREAN_UNICODE 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 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 4096
+#define MEM_FREE 65536
+#define MEM_RESERVE 8192
+#define MEM_IMAGE 16777216
+#define MEM_MAPPED 262144
+#define MEM_PRIVATE 131072
+#define MEM_DECOMMIT 16384
+#define MEM_RELEASE 32768
+#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_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 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))
+
+#ifndef RC_INVOKED
+typedef DWORD ACCESS_MASK;
+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 _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_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
+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;
+} 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, *PCONTEXT;
+#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,*PCONTEXT,*LPCONTEXT;
+
+#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,*PCONTEXT,*LPCONTEXT;
+#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, *PCONTEXT;
+
+#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;
+ }_STRUCT_NAME(u);
+ LONGLONG QuadPart;
+} LARGE_INTEGER;
+typedef LARGE_INTEGER *PLARGE_INTEGER;
+typedef union _ULARGE_INTEGER {
+ struct {
+ DWORD LowPart;
+ DWORD HighPart;
+ }_STRUCT_NAME(u);
+ DWORDLONG QuadPart;
+} ULARGE_INTEGER;
+typedef 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[8];
+ LUID SourceIdentifier;
+} TOKEN_SOURCE;
+typedef struct _TOKEN_CONTROL {
+ LUID TokenId;
+ LUID AuthenticationId;
+ LUID ModifiedId;
+ TOKEN_SOURCE TokenSource;
+} TOKEN_CONTROL;
+typedef struct _TOKEN_DEFAULT_DACL {
+ PACL DefaultDacl;
+} TOKEN_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;
+typedef struct _TOKEN_PRIMARY_GROUP {
+ PSID PrimaryGroup;
+} TOKEN_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;
+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
+} 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 _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;
+#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 {
+ 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 {
+ 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;
+typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
+ union {
+ struct {
+ DWORD NameOffset:31;
+ DWORD NameIsString:1;
+ }DUMMYSTRUCTNAME;
+ DWORD Name;
+ WORD Id;
+ } DUMMYUNIONNAME;
+ union {
+ DWORD OffsetToData;
+ 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;
+
+PVOID GetCurrentFiber(void);
+PVOID GetFiberData(void);
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/winperf.h b/winsup/w32api/include/winperf.h
new file mode 100644
index 000000000..99620e47e
--- /dev/null
+++ b/winsup/w32api/include/winperf.h
@@ -0,0 +1,135 @@
+#ifndef _WINPERF_H
+#define _WINPERF_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define PERF_DATA_VERSION 1
+#define PERF_DATA_REVISION 1
+#define PERF_NO_INSTANCES -1
+#define PERF_SIZE_DWORD 0
+#define PERF_SIZE_LARGE 256
+#define PERF_SIZE_ZERO 512
+#define PERF_SIZE_VARIABLE_LEN 768
+#define PERF_TYPE_NUMBER 0
+#define PERF_TYPE_COUNTER 1024
+#define PERF_TYPE_TEXT 2048
+#define PERF_TYPE_ZERO 0xC00
+#define PERF_NUMBER_HEX 0
+#define PERF_NUMBER_DECIMAL 0x10000
+#define PERF_NUMBER_DEC_1000 0x20000
+#define PERF_COUNTER_VALUE 0
+#define PERF_COUNTER_RATE 0x10000
+#define PERF_COUNTER_FRACTION 0x20000
+#define PERF_COUNTER_BASE 0x30000
+#define PERF_COUNTER_ELAPSED 0x40000
+#define PERF_COUNTER_QUEUELEN 0x50000
+#define PERF_COUNTER_HISTOGRAM 0x60000
+#define PERF_TEXT_UNICODE 0
+#define PERF_TEXT_ASCII 0x10000
+#define PERF_TIMER_TICK 0
+#define PERF_TIMER_100NS 0x100000
+#define PERF_OBJECT_TIMER 0x200000
+#define PERF_DELTA_COUNTER 0x400000
+#define PERF_DELTA_BASE 0x800000
+#define PERF_INVERSE_COUNTER 0x1000000
+#define PERF_MULTI_COUNTER 0x2000000
+#define PERF_DISPLAY_NO_SUFFIX 0
+#define PERF_DISPLAY_PER_SEC 0x10000000
+#define PERF_DISPLAY_PERCENT 0x20000000
+#define PERF_DISPLAY_SECONDS 0x30000000
+#define PERF_DISPLAY_NOSHOW 0x40000000
+#define PERF_COUNTER_HISTOGRAM_TYPE 0x80000000
+#define PERF_NO_UNIQUE_ID (-1)
+#define PERF_DETAIL_NOVICE 100
+#define PERF_DETAIL_ADVANCED 200
+#define PERF_DETAIL_EXPERT 300
+#define PERF_DETAIL_WIZARD 400
+#define PERF_COUNTER_COUNTER (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC)
+#define PERF_COUNTER_TIMER (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT)
+#define PERF_COUNTER_QUEUELEN_TYPE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_QUEUELEN|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX)
+#define PERF_COUNTER_BULK_COUNT (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_PER_SEC)
+#define PERF_COUNTER_TEXT (PERF_SIZE_VARIABLE_LEN|PERF_TYPE_TEXT|PERF_TEXT_UNICODE|PERF_DISPLAY_NO_SUFFIX)
+#define PERF_COUNTER_RAWCOUNT (PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX)
+#define PERF_COUNTER_LARGE_RAWCOUNT (PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_DECIMAL|PERF_DISPLAY_NO_SUFFIX)
+#define PERF_COUNTER_RAWCOUNT_HEX (PERF_SIZE_DWORD|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX)
+#define PERF_COUNTER_LARGE_RAWCOUNT_HEX (PERF_SIZE_LARGE|PERF_TYPE_NUMBER|PERF_NUMBER_HEX|PERF_DISPLAY_NO_SUFFIX)
+#define PERF_SAMPLE_FRACTION (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DELTA_COUNTER|PERF_DELTA_BASE|PERF_DISPLAY_PERCENT)
+#define PERF_SAMPLE_COUNTER (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_DISPLAY_NO_SUFFIX)
+#define PERF_COUNTER_NODATA (PERF_SIZE_ZERO|PERF_DISPLAY_NOSHOW)
+#define PERF_COUNTER_TIMER_INV (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_TICK|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT)
+#define PERF_SAMPLE_BASE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|1)
+#define PERF_AVERAGE_TIMER (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_SECONDS)
+#define PERF_AVERAGE_BASE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|2)
+#define PERF_AVERAGE_BULK (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_NOSHOW)
+#define PERF_100NSEC_TIMER (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_DISPLAY_PERCENT)
+#define PERF_100NSEC_TIMER_INV (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_DELTA_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT)
+#define PERF_COUNTER_MULTI_TIMER (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_TIMER_TICK|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT)
+#define PERF_COUNTER_MULTI_TIMER_INV (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_RATE|PERF_DELTA_COUNTER|PERF_MULTI_COUNTER|PERF_TIMER_TICK|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT)
+#define PERF_COUNTER_MULTI_BASE (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_MULTI_COUNTER|PERF_DISPLAY_NOSHOW)
+#define PERF_100NSEC_MULTI_TIMER (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_DISPLAY_PERCENT)
+#define PERF_100NSEC_MULTI_TIMER_INV (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_DELTA_COUNTER|PERF_COUNTER_RATE|PERF_TIMER_100NS|PERF_MULTI_COUNTER|PERF_INVERSE_COUNTER|PERF_DISPLAY_PERCENT)
+#define PERF_RAW_FRACTION (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_FRACTION|PERF_DISPLAY_PERCENT)
+#define PERF_RAW_BASE (PERF_SIZE_DWORD|PERF_TYPE_COUNTER|PERF_COUNTER_BASE|PERF_DISPLAY_NOSHOW|3)
+#define PERF_ELAPSED_TIME (PERF_SIZE_LARGE|PERF_TYPE_COUNTER|PERF_COUNTER_ELAPSED|PERF_OBJECT_TIMER|PERF_DISPLAY_SECONDS)
+typedef struct _PERF_DATA_BLOCK {
+ WCHAR Signature[4];
+ DWORD LittleEndian;
+ DWORD Version;
+ DWORD Revision;
+ DWORD TotalByteLength;
+ DWORD HeaderLength;
+ DWORD NumObjectTypes;
+ LONG DefaultObject;
+ SYSTEMTIME SystemTime;
+ LARGE_INTEGER PerfTime;
+ LARGE_INTEGER PerfFreq;
+ LARGE_INTEGER PerfTime100nSec;
+ DWORD SystemNameLength;
+ DWORD SystemNameOffset;
+} PERF_DATA_BLOCK, *PPERF_DATA_BLOCK;
+typedef struct _PERF_OBJECT_TYPE {
+ DWORD TotalByteLength;
+ DWORD DefinitionLength;
+ DWORD HeaderLength;
+ DWORD ObjectNameTitleIndex;
+ LPWSTR ObjectNameTitle;
+ DWORD ObjectHelpTitleIndex;
+ LPWSTR ObjectHelpTitle;
+ DWORD DetailLevel;
+ DWORD NumCounters;
+ LONG DefaultCounter;
+ LONG NumInstances;
+ DWORD CodePage;
+ LARGE_INTEGER PerfTime;
+ LARGE_INTEGER PerfFreq;
+} PERF_OBJECT_TYPE, *PPERF_OBJECT_TYPE;
+typedef struct _PERF_COUNTER_DEFINITION {
+ DWORD ByteLength;
+ DWORD CounterNameTitleIndex;
+ LPWSTR CounterNameTitle;
+ DWORD CounterHelpTitleIndex;
+ LPWSTR CounterHelpTitle;
+ LONG DefaultScale;
+ DWORD DetailLevel;
+ DWORD CounterType;
+ DWORD CounterSize;
+ DWORD CounterOffset;
+} PERF_COUNTER_DEFINITION,*PPERF_COUNTER_DEFINITION;
+typedef struct _PERF_INSTANCE_DEFINITION {
+ DWORD ByteLength;
+ DWORD ParentObjectTitleIndex;
+ DWORD ParentObjectInstance;
+ LONG UniqueID;
+ DWORD NameOffset;
+ DWORD NameLength;
+} PERF_INSTANCE_DEFINITION,*PPERF_INSTANCE_DEFINITION;
+typedef struct _PERF_COUNTER_BLOCK {
+ DWORD ByteLength;
+} PERF_COUNTER_BLOCK, *PPERF_COUNTER_BLOCK;
+typedef DWORD(CALLBACK PM_OPEN_PROC)(LPWSTR);
+typedef DWORD(CALLBACK PM_COLLECT_PROC)(LPWSTR,PVOID*,PDWORD,PDWORD);
+typedef DWORD(CALLBACK PM_CLOSE_PROC)(void);
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/winreg.h b/winsup/w32api/include/winreg.h
new file mode 100644
index 000000000..aae020a39
--- /dev/null
+++ b/winsup/w32api/include/winreg.h
@@ -0,0 +1,155 @@
+#ifndef _WINREG_H
+#define _WINREG_H
+#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/winsup/w32api/include/winresrc.h b/winsup/w32api/include/winresrc.h
new file mode 100644
index 000000000..59e0cd062
--- /dev/null
+++ b/winsup/w32api/include/winresrc.h
@@ -0,0 +1,10 @@
+#ifndef _WINRESRC_H
+#define _WINRESRC_H
+#define WIN32_LEAN_AND_MEAN
+#include <winuser.h>
+#include <winnt.h>
+#include <winver.h>
+#include <dde.h>
+#include <dlgs.h>
+#include <commctrl.h>
+#endif
diff --git a/winsup/w32api/include/winsock.h b/winsup/w32api/include/winsock.h
new file mode 100644
index 000000000..93986d02e
--- /dev/null
+++ b/winsup/w32api/include/winsock.h
@@ -0,0 +1,510 @@
+/*
+
+ Definitions for winsock 1.1
+
+ Portions Copyright (c) 1980, 1983, 1988, 1993
+ The Regents of the University of California. All rights reserved.
+
+ Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ */
+
+#ifndef _WINSOCK_H
+#define _WINSOCK_H
+#define _GNU_H_WINDOWS32_SOCKETS
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _SYS_TYPES_H
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned int u_int;
+typedef unsigned long u_long;
+#endif /* ndef _SYS_TYPES_H */
+typedef u_int SOCKET;
+#ifndef FD_SETSIZE
+#define FD_SETSIZE 64
+#endif
+
+/* shutdown() how types */
+#define SD_RECEIVE 0x00
+#define SD_SEND 0x01
+#define SD_BOTH 0x02
+
+#ifndef _SYS_TYPES_H
+/* fd_set may have been defined by the newlib <sys/types.h>. */
+#ifdef fd_set
+#undef fd_set
+#endif
+typedef struct fd_set {
+ u_int fd_count;
+ SOCKET fd_array[FD_SETSIZE];
+} fd_set;
+int PASCAL __WSAFDIsSet(SOCKET,fd_set*);
+#ifndef FD_CLR
+#define FD_CLR(fd,set) do { u_int __i;\
+for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\
+ if (((fd_set *)(set))->fd_array[__i] == fd) {\
+ while (__i < ((fd_set *)(set))->fd_count-1) {\
+ ((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\
+ __i++;\
+ }\
+ ((fd_set*)(set))->fd_count--;\
+ break;\
+ }\
+}\
+} while (0)
+#endif
+#ifndef FD_SET
+#define FD_SET(fd, set) do { \
+ if (((fd_set *)(set))->fd_count < FD_SETSIZE) \
+ ((fd_set *)(set))->fd_array[((fd_set *)(set))->fd_count++]=(fd);\
+}while (0)
+#endif
+#ifndef FD_ZERO
+#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0)
+#endif
+#ifndef FD_ISSET
+#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set))
+#endif
+#endif /* ndef _SYS_TYPES_H */
+#ifndef __INSIDE_CYGWIN__
+struct timeval {
+ long tv_sec;
+ long tv_usec;
+};
+struct hostent {
+ char *h_name;
+ char **h_aliases;
+ short h_addrtype;
+ short h_length;
+ char **h_addr_list;
+#define h_addr h_addr_list[0]
+};
+struct linger {
+ u_short l_onoff;
+ u_short l_linger;
+};
+#endif /* ndef __INSIDE_CYGWIN__ */
+#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#define timercmp(tvp, uvp, cmp) \
+ ((tvp)->tv_sec cmp (uvp)->tv_sec || \
+ (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
+#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
+#define IOCPARM_MASK 0x7f
+#define IOC_VOID 0x20000000
+#define IOC_OUT 0x40000000
+#define IOC_IN 0x80000000
+#define IOC_INOUT (IOC_IN|IOC_OUT)
+
+#ifndef __INSIDE_CYGWIN__
+#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
+#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define FIONBIO _IOW('f', 126, u_long)
+#endif /* ndef __INSIDE_CYGWIN__ */
+
+#define FIONREAD _IOR('f', 127, u_long)
+#define FIOASYNC _IOW('f', 125, u_long)
+#define SIOCSHIWAT _IOW('s', 0, u_long)
+#define SIOCGHIWAT _IOR('s', 1, u_long)
+#define SIOCSLOWAT _IOW('s', 2, u_long)
+#define SIOCGLOWAT _IOR('s', 3, u_long)
+#define SIOCATMARK _IOR('s', 7, u_long)
+
+#ifndef __INSIDE_CYGWIN__
+struct netent {
+ char * n_name;
+ char **n_aliases;
+ short n_addrtype;
+ u_long n_net;
+};
+struct servent {
+ char *s_name;
+ char **s_aliases;
+ short s_port;
+ char *s_proto;
+};
+struct protoent {
+ char *p_name;
+ char **p_aliases;
+ short p_proto;
+};
+#endif /* __INSIDE_CYGWIN__ */
+
+#define IPPROTO_IP 0
+#define IPPROTO_ICMP 1
+#define IPPROTO_GGP 2
+#define IPPROTO_TCP 6
+#define IPPROTO_PUP 12
+#define IPPROTO_UDP 17
+#define IPPROTO_IDP 22
+#define IPPROTO_ND 77
+#define IPPROTO_RAW 255
+#define IPPROTO_MAX 256
+#define IPPORT_ECHO 7
+#define IPPORT_DISCARD 9
+#define IPPORT_SYSTAT 11
+#define IPPORT_DAYTIME 13
+#define IPPORT_NETSTAT 15
+#define IPPORT_FTP 21
+#define IPPORT_TELNET 23
+#define IPPORT_SMTP 25
+#define IPPORT_TIMESERVER 37
+#define IPPORT_NAMESERVER 42
+#define IPPORT_WHOIS 43
+#define IPPORT_MTP 57
+#define IPPORT_TFTP 69
+#define IPPORT_RJE 77
+#define IPPORT_FINGER 79
+#define IPPORT_TTYLINK 87
+#define IPPORT_SUPDUP 95
+#define IPPORT_EXECSERVER 512
+#define IPPORT_LOGINSERVER 513
+#define IPPORT_CMDSERVER 514
+#define IPPORT_EFSSERVER 520
+#define IPPORT_BIFFUDP 512
+#define IPPORT_WHOSERVER 513
+#define IPPORT_ROUTESERVER 520
+#define IPPORT_RESERVED 1024
+#define IMPLINK_IP 155
+#define IMPLINK_LOWEXPER 156
+#define IMPLINK_HIGHEXPER 158
+struct in_addr {
+ union {
+ struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
+ struct { u_short s_w1,s_w2; } S_un_w;
+ u_long S_addr;
+ } S_un;
+#define s_addr S_un.S_addr
+#define s_host S_un.S_un_b.s_b2
+#define s_net S_un.S_un_b.s_b1
+#define s_imp S_un.S_un_w.s_w2
+#define s_impno S_un.S_un_b.s_b4
+#define s_lh S_un.S_un_b.s_b3
+};
+#define IN_CLASSA(i) ((long)(i)&0x80000000)
+#define IN_CLASSA_NET 0xff000000
+#define IN_CLASSA_NSHIFT 24
+#define IN_CLASSA_HOST 0x00ffffff
+#define IN_CLASSA_MAX 128
+#define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000)
+#define IN_CLASSB_NET 0xffff0000
+#define IN_CLASSB_NSHIFT 16
+#define IN_CLASSB_HOST 0x0000ffff
+#define IN_CLASSB_MAX 65536
+#define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000)
+#define IN_CLASSC_NET 0xffffff00
+#define IN_CLASSC_NSHIFT 8
+#define IN_CLASSC_HOST 0xff
+#define INADDR_ANY (u_long)0
+#define INADDR_LOOPBACK 0x7f000001
+#define INADDR_BROADCAST (u_long)0xffffffff
+#define INADDR_NONE 0xffffffff
+struct sockaddr_in {
+ short sin_family;
+ u_short sin_port;
+ struct in_addr sin_addr;
+ char sin_zero[8];
+};
+#define WSADESCRIPTION_LEN 256
+#define WSASYS_STATUS_LEN 128
+typedef struct WSAData {
+ WORD wVersion;
+ WORD wHighVersion;
+ char szDescription[WSADESCRIPTION_LEN+1];
+ char szSystemStatus[WSASYS_STATUS_LEN+1];
+ unsigned short iMaxSockets;
+ unsigned short iMaxUdpDg;
+ char * lpVendorInfo;
+} WSADATA;
+typedef WSADATA *LPWSADATA;
+
+#ifndef __INSIDE_CYGWIN__
+#define IP_OPTIONS 1
+#define SO_DEBUG 1
+#define SO_ACCEPTCONN 2
+#define SO_REUSEADDR 4
+#define SO_KEEPALIVE 8
+#define SO_DONTROUTE 16
+#define SO_BROADCAST 32
+#define SO_USELOOPBACK 64
+#define SO_LINGER 128
+#define SO_OOBINLINE 256
+#define SO_DONTLINGER (u_int)(~SO_LINGER)
+#define SO_SNDBUF 0x1001
+#define SO_RCVBUF 0x1002
+#define SO_SNDLOWAT 0x1003
+#define SO_RCVLOWAT 0x1004
+#define SO_SNDTIMEO 0x1005
+#define SO_RCVTIMEO 0x1006
+#define SO_ERROR 0x1007
+#define SO_TYPE 0x1008
+#define SO_CONNDATA 0x7000
+#define SO_CONNOPT 0x7001
+#define SO_DISCDATA 0x7002
+#define SO_DISCOPT 0x7003
+#define SO_CONNDATALEN 0x7004
+#define SO_CONNOPTLEN 0x7005
+#define SO_DISCDATALEN 0x7006
+#define SO_DISCOPTLEN 0x7007
+#define SO_OPENTYPE 0x7008
+#define SO_SYNCHRONOUS_ALERT 0x10
+#define SO_SYNCHRONOUS_NONALERT 0x20
+#define SO_MAXDG 0x7009
+#define SO_MAXPATHDG 0x700A
+#define SO_UPDATE_ACCEPT_CONTEXT 0x700B
+#define SO_CONNECT_TIME 0x700C
+#endif
+#define IP_MULTICAST_IF 2
+#define IP_MULTICAST_TTL 3
+#define IP_MULTICAST_LOOP 4
+#define IP_ADD_MEMBERSHIP 5
+#define IP_DROP_MEMBERSHIP 6
+#define IP_DEFAULT_MULTICAST_TTL 1
+#define IP_DEFAULT_MULTICAST_LOOP 1
+#define IP_MAX_MEMBERSHIPS 20
+struct ip_mreq {
+ struct in_addr imr_multiaddr;
+ struct in_addr imr_interface;
+};
+#define INVALID_SOCKET (SOCKET)(~0)
+#define SOCKET_ERROR (-1)
+#define SOCK_STREAM 1
+#define SOCK_DGRAM 2
+#define SOCK_RAW 3
+#define SOCK_RDM 4
+#define SOCK_SEQPACKET 5
+#define TCP_NODELAY 0x0001
+#define TCP_BSDURGENT 0x7000
+#define AF_UNSPEC 0
+#define AF_UNIX 1
+#define AF_INET 2
+#define AF_IMPLINK 3
+#define AF_PUP 4
+#define AF_CHAOS 5
+#define AF_IPX 6
+#define AF_NS 6
+#define AF_ISO 7
+#define AF_OSI AF_ISO
+#define AF_ECMA 8
+#define AF_DATAKIT 9
+#define AF_CCITT 10
+#define AF_SNA 11
+#define AF_DECnet 12
+#define AF_DLI 13
+#define AF_LAT 14
+#define AF_HYLINK 15
+#define AF_APPLETALK 16
+#define AF_NETBIOS 17
+#define AF_VOICEVIEW 18
+#ifndef __INSIDE_CYGWIN__
+#define AF_MAX 19
+struct sockaddr {
+ u_short sa_family;
+ char sa_data[14];
+};
+#endif /* ndef __INSIDE_CYGWIN__ */
+
+struct sockproto {
+ u_short sp_family;
+ u_short sp_protocol;
+};
+#define PF_UNSPEC AF_UNSPEC
+#define PF_UNIX AF_UNIX
+#define PF_INET AF_INET
+#define PF_IMPLINK AF_IMPLINK
+#define PF_PUP AF_PUP
+#define PF_CHAOS AF_CHAOS
+#define PF_NS AF_NS
+#define PF_IPX AF_IPX
+#define PF_ISO AF_ISO
+#define PF_OSI AF_OSI
+#define PF_ECMA AF_ECMA
+#define PF_DATAKIT AF_DATAKIT
+#define PF_CCITT AF_CCITT
+#define PF_SNA AF_SNA
+#define PF_DECnet AF_DECnet
+#define PF_DLI AF_DLI
+#define PF_LAT AF_LAT
+#define PF_HYLINK AF_HYLINK
+#define PF_APPLETALK AF_APPLETALK
+#define PF_VOICEVIEW AF_VOICEVIEW
+#define PF_MAX AF_MAX
+#define SOL_SOCKET 0xffff
+#define SOMAXCONN 5
+#ifndef __INSIDE_CYGWIN__
+#define MSG_OOB 1
+#define MSG_PEEK 2
+#define MSG_DONTROUTE 4
+#endif /* ndef __INSIDE_CYGWIN__ */
+#define MSG_MAXIOVLEN 16
+#define MSG_PARTIAL 0x8000
+#define MAXGETHOSTSTRUCT 1024
+#define FD_READ 1
+#define FD_WRITE 2
+#define FD_OOB 4
+#define FD_ACCEPT 8
+#define FD_CONNECT 16
+#define FD_CLOSE 32
+#define WSABASEERR 10000
+#define WSAEINTR (WSABASEERR+4)
+#define WSAEBADF (WSABASEERR+9)
+#define WSAEACCES (WSABASEERR+13)
+#define WSAEFAULT (WSABASEERR+14)
+#define WSAEINVAL (WSABASEERR+22)
+#define WSAEMFILE (WSABASEERR+24)
+#define WSAEWOULDBLOCK (WSABASEERR+35)
+#define WSAEINPROGRESS (WSABASEERR+36)
+#define WSAEALREADY (WSABASEERR+37)
+#define WSAENOTSOCK (WSABASEERR+38)
+#define WSAEDESTADDRREQ (WSABASEERR+39)
+#define WSAEMSGSIZE (WSABASEERR+40)
+#define WSAEPROTOTYPE (WSABASEERR+41)
+#define WSAENOPROTOOPT (WSABASEERR+42)
+#define WSAEPROTONOSUPPORT (WSABASEERR+43)
+#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
+#define WSAEOPNOTSUPP (WSABASEERR+45)
+#define WSAEPFNOSUPPORT (WSABASEERR+46)
+#define WSAEAFNOSUPPORT (WSABASEERR+47)
+#define WSAEADDRINUSE (WSABASEERR+48)
+#define WSAEADDRNOTAVAIL (WSABASEERR+49)
+#define WSAENETDOWN (WSABASEERR+50)
+#define WSAENETUNREACH (WSABASEERR+51)
+#define WSAENETRESET (WSABASEERR+52)
+#define WSAECONNABORTED (WSABASEERR+53)
+#define WSAECONNRESET (WSABASEERR+54)
+#define WSAENOBUFS (WSABASEERR+55)
+#define WSAEISCONN (WSABASEERR+56)
+#define WSAENOTCONN (WSABASEERR+57)
+#define WSAESHUTDOWN (WSABASEERR+58)
+#define WSAETOOMANYREFS (WSABASEERR+59)
+#define WSAETIMEDOUT (WSABASEERR+60)
+#define WSAECONNREFUSED (WSABASEERR+61)
+#define WSAELOOP (WSABASEERR+62)
+#define WSAENAMETOOLONG (WSABASEERR+63)
+#define WSAEHOSTDOWN (WSABASEERR+64)
+#define WSAEHOSTUNREACH (WSABASEERR+65)
+#define WSAENOTEMPTY (WSABASEERR+66)
+#define WSAEPROCLIM (WSABASEERR+67)
+#define WSAEUSERS (WSABASEERR+68)
+#define WSAEDQUOT (WSABASEERR+69)
+#define WSAESTALE (WSABASEERR+70)
+#define WSAEREMOTE (WSABASEERR+71)
+#define WSAEDISCON (WSABASEERR+101)
+#define WSASYSNOTREADY (WSABASEERR+91)
+#define WSAVERNOTSUPPORTED (WSABASEERR+92)
+#define WSANOTINITIALISED (WSABASEERR+93)
+#define WSAHOST_NOT_FOUND (WSABASEERR+1001)
+#define WSATRY_AGAIN (WSABASEERR+1002)
+#define WSANO_RECOVERY (WSABASEERR+1003)
+#define WSANO_DATA (WSABASEERR+1004)
+#define WSANO_ADDRESS WSANO_DATA
+#ifndef __INSIDE_CYGWIN__
+#define h_errno WSAGetLastError()
+#define HOST_NOT_FOUND WSAHOST_NOT_FOUND
+#define TRY_AGAIN WSATRY_AGAIN
+#define NO_RECOVERY WSANO_RECOVERY
+#define NO_DATA WSANO_DATA
+#define NO_ADDRESS WSANO_ADDRESS
+#endif
+SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*);
+int PASCAL bind(SOCKET,const struct sockaddr*,int);
+int PASCAL closesocket(SOCKET);
+int PASCAL connect(SOCKET,const struct sockaddr*,int);
+int PASCAL ioctlsocket(SOCKET,long,u_long *);
+int PASCAL getpeername(SOCKET,struct sockaddr*,int*);
+int PASCAL getsockname(SOCKET,struct sockaddr*,int*);
+int PASCAL getsockopt(SOCKET,int,int,char*,int*);
+unsigned long PASCAL inet_addr(const char*);
+char * PASCAL inet_ntoa(struct in_addr);
+int PASCAL listen(SOCKET,int);
+int PASCAL recv(SOCKET,char*,int,int);
+int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
+int PASCAL send(SOCKET,const char*,int,int);
+int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
+int PASCAL setsockopt(SOCKET,int,int,const char*,int);
+int PASCAL shutdown(SOCKET,int);
+SOCKET PASCAL socket(int,int,int);
+struct hostent* PASCAL gethostbyaddr(const char*,int,int);
+struct hostent* PASCAL gethostbyname(const char*);
+struct servent* PASCAL getservbyport(int,const char*);
+struct servent* PASCAL getservbyname(const char*,const char*);
+struct protoent* PASCAL getprotobynumber(int);
+struct protoent* PASCAL getprotobyname(const char*);
+int PASCAL WSAStartup(WORD,LPWSADATA);
+int PASCAL WSACleanup(void);
+void PASCAL WSASetLastError(int);
+int PASCAL WSAGetLastError(void);
+BOOL PASCAL WSAIsBlocking(void);
+int PASCAL WSAUnhookBlockingHook(void);
+FARPROC PASCAL WSASetBlockingHook(FARPROC);
+int PASCAL WSACancelBlockingCall(void);
+HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int);
+HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int);
+HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int);
+HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int);
+HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int);
+HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int);
+int PASCAL WSACancelAsyncRequest(HANDLE);
+int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long);
+int PASCAL WSARecvEx(SOCKET,char*,int,int*);
+typedef struct _TRANSMIT_FILE_BUFFERS {
+ PVOID Head;
+ DWORD HeadLength;
+ PVOID Tail;
+ DWORD TailLength;
+} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
+BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
+BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
+VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
+#ifndef __INSIDE_CYGWIN__
+u_long PASCAL htonl(u_long);
+u_long PASCAL ntohl(u_long);
+u_short PASCAL htons(u_short);
+u_short PASCAL ntohs(u_short);
+int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*);
+int PASCAL gethostname(char*,int);
+#endif /* ndef __INSIDE_CYGWIN__ */
+
+#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)
+#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)
+#define WSAGETASYNCBUFLEN(l) LOWORD(l)
+#define WSAGETASYNCERROR(l) HIWORD(l)
+#define WSAGETSELECTEVENT(l) LOWORD(l)
+#define WSAGETSELECTERROR(l) HIWORD(l)
+
+typedef struct sockaddr SOCKADDR;
+typedef struct sockaddr *PSOCKADDR;
+typedef struct sockaddr *LPSOCKADDR;
+typedef struct sockaddr_in SOCKADDR_IN;
+typedef struct sockaddr_in *PSOCKADDR_IN;
+typedef struct sockaddr_in *LPSOCKADDR_IN;
+typedef struct linger LINGER;
+typedef struct linger *PLINGER;
+typedef struct linger *LPLINGER;
+typedef struct in_addr IN_ADDR;
+typedef struct in_addr *PIN_ADDR;
+typedef struct in_addr *LPIN_ADDR;
+typedef struct fd_set FD_SET;
+typedef struct fd_set *PFD_SET;
+typedef struct fd_set *LPFD_SET;
+typedef struct hostent HOSTENT;
+typedef struct hostent *PHOSTENT;
+typedef struct hostent *LPHOSTENT;
+typedef struct servent SERVENT;
+typedef struct servent *PSERVENT;
+typedef struct servent *LPSERVENT;
+typedef struct protoent PROTOENT;
+typedef struct protoent *PPROTOENT;
+typedef struct protoent *LPPROTOENT;
+typedef struct timeval TIMEVAL;
+typedef struct timeval *PTIMEVAL;
+typedef struct timeval *LPTIMEVAL;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/winsock2.h b/winsup/w32api/include/winsock2.h
new file mode 100644
index 000000000..ea748f0dc
--- /dev/null
+++ b/winsup/w32api/include/winsock2.h
@@ -0,0 +1,129 @@
+/*
+
+ Definitions for winsock 2
+
+ FIXME: This is mostly a stub for now. Taken from the Wine project.
+
+ Portions Copyright (c) 1980, 1983, 1988, 1993
+ The Regents of the University of California. All rights reserved.
+
+ Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ */
+
+#ifndef _WINSOCK2_H
+#define _WINSOCK2_H
+#define _GNU_H_WINDOWS32_SOCKETS
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winsock.h>
+
+#define FD_MAX_EVENTS 10
+#define FD_READ_BIT 0
+#define FD_WRITE_BIT 1
+#define FD_OOB_BIT 2
+#define FD_ACCEPT_BIT 3
+#define FD_CONNECT_BIT 4
+#define FD_CLOSE_BIT 5
+#define FROM_PROTOCOL_INFO -1
+#define SO_GROUP_ID 0x2001
+#define SO_GROUP_PRIORITY 0x2002
+#define SO_MAX_MSG_SIZE 0x2003
+#define SO_PROTOCOL_INFOA 0x2004
+#define SO_PROTOCOL_INFOW 0x2005
+#define MAX_PROTOCOL_CHAIN 7
+#define BASE_PROTOCOL 1
+#define LAYERED_PROTOCOL 0
+#define WSAPROTOCOL_LEN 255
+#define WSA_FLAG_OVERLAPPED 0x01
+#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
+#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
+#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
+#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
+typedef HANDLE WSAEVENT;
+typedef unsigned int GROUP;
+#ifndef GUID_DEFINED
+#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 */
+typedef struct _WSANETWORKEVENTS {
+ long lNetworkEvents;
+ int iErrorCode[FD_MAX_EVENTS];
+} WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
+typedef struct _WSAPROTOCOLCHAIN {
+ int ChainLen;
+ DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
+} WSAPROTOCOLCHAIN,*LPWSAPROTOCOLCHAIN;
+typedef struct _WSAPROTOCOL_INFOA {
+ DWORD dwServiceFlags1;
+ DWORD dwServiceFlags2;
+ DWORD dwServiceFlags3;
+ DWORD dwServiceFlags4;
+ DWORD dwProviderFlags;
+ GUID ProviderId;
+ DWORD dwCatalogEntryId;
+ WSAPROTOCOLCHAIN ProtocolChain;
+ int iVersion;
+ int iAddressFamily;
+ int iMaxSockAddr;
+ int iMinSockAddr;
+ int iSocketType;
+ int iProtocol;
+ int iProtocolMaxOffset;
+ int iNetworkByteOrder;
+ int iSecurityScheme;
+ DWORD dwMessageSize;
+ DWORD dwProviderReserved;
+ CHAR szProtocol[WSAPROTOCOL_LEN+1];
+} WSAPROTOCOL_INFOA,*LPWSAPROTOCOL_INFOA;
+typedef struct _WSAPROTOCOL_INFOW {
+ DWORD dwServiceFlags1;
+ DWORD dwServiceFlags2;
+ DWORD dwServiceFlags3;
+ DWORD dwServiceFlags4;
+ DWORD dwProviderFlags;
+ GUID ProviderId;
+ DWORD dwCatalogEntryId;
+ WSAPROTOCOLCHAIN ProtocolChain;
+ int iVersion;
+ int iAddressFamily;
+ int iMaxSockAddr;
+ int iMinSockAddr;
+ int iSocketType;
+ int iProtocol;
+ int iProtocolMaxOffset;
+ int iNetworkByteOrder;
+ int iSecurityScheme;
+ DWORD dwMessageSize;
+ DWORD dwProviderReserved;
+ WCHAR szProtocol[WSAPROTOCOL_LEN+1];
+} WSAPROTOCOL_INFOW,*LPWSAPROTOCOL_INFOW;
+SOCKET PASCAL WSASocketA(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD);
+SOCKET PASCAL WSASocketW(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD);
+#define WSACreateEvent() CreateEvent(NULL, TRUE, FALSE, NULL)
+int PASCAL WSAEnumNetworkEvents(SOCKET s, WSAEVENT hEventObject, LPWSANETWORKEVENTS lpNetworkEvents);
+int PASCAL WSAEventSelect(SOCKET s, WSAEVENT hEventObject, long lNetworkEvents);
+
+#ifdef UNICODE
+#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOW
+#define WSAPROTOCOL_INFO WSAPROTOCOL_INFOW
+#define LPWSAPROTOCOL_INFO LPWSAPROTOCOL_INFOW
+#define WSASocket WSASocketW
+#else
+#define SO_PROTOCOL_INFO SO_PROTOCOL_INFOA
+#define WSAPROTOCOL_INFO WSAPROTOCOL_INFOA
+#define LPWSAPROTOCOL_INFO LPWSAPROTOCOL_INFOA
+#define WSASocket WSASocketA
+#endif /* UNICODE */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/winsup/w32api/include/winspool.h b/winsup/w32api/include/winspool.h
new file mode 100644
index 000000000..7d9f280e1
--- /dev/null
+++ b/winsup/w32api/include/winspool.h
@@ -0,0 +1,776 @@
+#ifndef _WINSPOOL_H
+#define _WINSPOOL_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DI_CHANNEL 1
+#define DI_CHANNEL_WRITE 2
+#define DI_READ_SPOOL_JOB 3
+#define FORM_BUILTIN 1
+#define JOB_CONTROL_PAUSE 1
+#define JOB_CONTROL_RESUME 2
+#define JOB_CONTROL_CANCEL 3
+#define JOB_CONTROL_RESTART 4
+#define JOB_CONTROL_DELETE 5
+#define JOB_STATUS_PAUSED 1
+#define JOB_STATUS_ERROR 2
+#define JOB_STATUS_DELETING 4
+#define JOB_STATUS_SPOOLING 8
+#define JOB_STATUS_PRINTING 16
+#define JOB_STATUS_OFFLINE 32
+#define JOB_STATUS_PAPEROUT 0x40
+#define JOB_STATUS_PRINTED 0x80
+#define JOB_STATUS_DELETED 0x100
+#define JOB_STATUS_BLOCKED_DEVQ 0x200
+#define JOB_STATUS_USER_INTERVENTION 0x400
+#define JOB_POSITION_UNSPECIFIED 0
+#define JOB_NOTIFY_TYPE 1
+#define JOB_NOTIFY_FIELD_PRINTER_NAME 0
+#define JOB_NOTIFY_FIELD_MACHINE_NAME 1
+#define JOB_NOTIFY_FIELD_PORT_NAME 2
+#define JOB_NOTIFY_FIELD_USER_NAME 3
+#define JOB_NOTIFY_FIELD_NOTIFY_NAME 4
+#define JOB_NOTIFY_FIELD_DATATYPE 5
+#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 6
+#define JOB_NOTIFY_FIELD_PARAMETERS 7
+#define JOB_NOTIFY_FIELD_DRIVER_NAME 8
+#define JOB_NOTIFY_FIELD_DEVMODE 9
+#define JOB_NOTIFY_FIELD_STATUS 10
+#define JOB_NOTIFY_FIELD_STATUS_STRING 11
+#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 12
+#define JOB_NOTIFY_FIELD_DOCUMENT 13
+#define JOB_NOTIFY_FIELD_PRIORITY 14
+#define JOB_NOTIFY_FIELD_POSITION 15
+#define JOB_NOTIFY_FIELD_SUBMITTED 16
+#define JOB_NOTIFY_FIELD_START_TIME 17
+#define JOB_NOTIFY_FIELD_UNTIL_TIME 18
+#define JOB_NOTIFY_FIELD_TIME 19
+#define JOB_NOTIFY_FIELD_TOTAL_PAGES 20
+#define JOB_NOTIFY_FIELD_PAGES_PRINTED 21
+#define JOB_NOTIFY_FIELD_TOTAL_BYTES 22
+#define JOB_NOTIFY_FIELD_BYTES_PRINTED 23
+#define JOB_ACCESS_ADMINISTER 16
+#define JOB_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|JOB_ACCESS_ADMINISTER)
+#define JOB_READ (STANDARD_RIGHTS_READ| JOB_ACCESS_ADMINISTER)
+#define JOB_WRITE (STANDARD_RIGHTS_WRITE|JOB_ACCESS_ADMINISTER)
+#define JOB_EXECUTE (STANDARD_RIGHTS_EXECUTE|JOB_ACCESS_ADMINISTER)
+#define PRINTER_NOTIFY_OPTIONS_REFRESH 1
+#define PRINTER_ACCESS_ADMINISTER 4
+#define PRINTER_ACCESS_USE 8
+#define PRINTER_ERROR_INFORMATION 0x80000000
+#define PRINTER_ERROR_WARNING 0x40000000
+#define PRINTER_ERROR_SEVERE 0x20000000
+#define PRINTER_ERROR_OUTOFPAPER 1
+#define PRINTER_ERROR_JAM 2
+#define PRINTER_ERROR_OUTOFTONER 4
+#define PRINTER_CONTROL_PAUSE 1
+#define PRINTER_CONTROL_RESUME 2
+#define PRINTER_CONTROL_PURGE 3
+#define PRINTER_CONTROL_SET_STATUS 4
+#define PRINTER_STATUS_PAUSED 1
+#define PRINTER_STATUS_ERROR 2
+#define PRINTER_STATUS_PENDING_DELETION 4
+#define PRINTER_STATUS_PAPER_JAM 8
+#define PRINTER_STATUS_PAPER_OUT 0x10
+#define PRINTER_STATUS_MANUAL_FEED 0x20
+#define PRINTER_STATUS_PAPER_PROBLEM 0x40
+#define PRINTER_STATUS_OFFLINE 0x80
+#define PRINTER_STATUS_IO_ACTIVE 0x100
+#define PRINTER_STATUS_BUSY 0x200
+#define PRINTER_STATUS_PRINTING 0x400
+#define PRINTER_STATUS_OUTPUT_BIN_FULL 0x800
+#define PRINTER_STATUS_NOT_AVAILABLE 0x1000
+#define PRINTER_STATUS_WAITING 0x2000
+#define PRINTER_STATUS_PROCESSING 0x4000
+#define PRINTER_STATUS_INITIALIZING 0x8000
+#define PRINTER_STATUS_WARMING_UP 0x10000
+#define PRINTER_STATUS_TONER_LOW 0x20000
+#define PRINTER_STATUS_NO_TONER 0x40000
+#define PRINTER_STATUS_PAGE_PUNT 0x80000
+#define PRINTER_STATUS_USER_INTERVENTION 0x100000
+#define PRINTER_STATUS_OUT_OF_MEMORY 0x200000
+#define PRINTER_STATUS_DOOR_OPEN 0x400000
+#define PRINTER_STATUS_SERVER_UNKNOWN 0x800000
+#define PRINTER_STATUS_POWER_SAVE 0x1000000
+#define PRINTER_ATTRIBUTE_QUEUED 1
+#define PRINTER_ATTRIBUTE_DIRECT 2
+#define PRINTER_ATTRIBUTE_DEFAULT 4
+#define PRINTER_ATTRIBUTE_SHARED 8
+#define PRINTER_ATTRIBUTE_NETWORK 0x10
+#define PRINTER_ATTRIBUTE_HIDDEN 0x20
+#define PRINTER_ATTRIBUTE_LOCAL 0x40
+#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x80
+#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x100
+#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x200
+#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x400
+#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x800
+#define PRINTER_ENUM_DEFAULT 1
+#define PRINTER_ENUM_LOCAL 2
+#define PRINTER_ENUM_CONNECTIONS 4
+#define PRINTER_ENUM_FAVORITE 4
+#define PRINTER_ENUM_NAME 8
+#define PRINTER_ENUM_REMOTE 16
+#define PRINTER_ENUM_SHARED 32
+#define PRINTER_ENUM_NETWORK 0x40
+#define PRINTER_ENUM_EXPAND 0x4000
+#define PRINTER_ENUM_CONTAINER 0x8000
+#define PRINTER_ENUM_ICONMASK 0xff0000
+#define PRINTER_ENUM_ICON1 0x10000
+#define PRINTER_ENUM_ICON2 0x20000
+#define PRINTER_ENUM_ICON3 0x40000
+#define PRINTER_ENUM_ICON4 0x80000
+#define PRINTER_ENUM_ICON5 0x100000
+#define PRINTER_ENUM_ICON6 0x200000
+#define PRINTER_ENUM_ICON7 0x400000
+#define PRINTER_ENUM_ICON8 0x800000
+#define PRINTER_NOTIFY_TYPE 0
+#define PRINTER_NOTIFY_FIELD_SERVER_NAME 0
+#define PRINTER_NOTIFY_FIELD_PRINTER_NAME 1
+#define PRINTER_NOTIFY_FIELD_SHARE_NAME 2
+#define PRINTER_NOTIFY_FIELD_PORT_NAME 3
+#define PRINTER_NOTIFY_FIELD_DRIVER_NAME 4
+#define PRINTER_NOTIFY_FIELD_COMMENT 5
+#define PRINTER_NOTIFY_FIELD_LOCATION 6
+#define PRINTER_NOTIFY_FIELD_DEVMODE 7
+#define PRINTER_NOTIFY_FIELD_SEPFILE 8
+#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 9
+#define PRINTER_NOTIFY_FIELD_PARAMETERS 10
+#define PRINTER_NOTIFY_FIELD_DATATYPE 11
+#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 12
+#define PRINTER_NOTIFY_FIELD_ATTRIBUTES 13
+#define PRINTER_NOTIFY_FIELD_PRIORITY 14
+#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 15
+#define PRINTER_NOTIFY_FIELD_START_TIME 16
+#define PRINTER_NOTIFY_FIELD_UNTIL_TIME 17
+#define PRINTER_NOTIFY_FIELD_STATUS 18
+#define PRINTER_NOTIFY_FIELD_STATUS_STRING 19
+#define PRINTER_NOTIFY_FIELD_CJOBS 20
+#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM 21
+#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES 22
+#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED 23
+#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES 24
+#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED 25
+#define PRINTER_CHANGE_ADD_PRINTER 1
+#define PRINTER_CHANGE_SET_PRINTER 2
+#define PRINTER_CHANGE_DELETE_PRINTER 4
+#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 8
+#define PRINTER_CHANGE_PRINTER 0xFF
+#define PRINTER_CHANGE_ADD_JOB 0x100
+#define PRINTER_CHANGE_SET_JOB 0x200
+#define PRINTER_CHANGE_DELETE_JOB 0x400
+#define PRINTER_CHANGE_WRITE_JOB 0x800
+#define PRINTER_CHANGE_JOB 0xFF00
+#define PRINTER_CHANGE_ADD_FORM 0x10000
+#define PRINTER_CHANGE_SET_FORM 0x20000
+#define PRINTER_CHANGE_DELETE_FORM 0x40000
+#define PRINTER_CHANGE_FORM 0x70000
+#define PRINTER_CHANGE_ADD_PORT 0x100000
+#define PRINTER_CHANGE_CONFIGURE_PORT 0x200000
+#define PRINTER_CHANGE_DELETE_PORT 0x400000
+#define PRINTER_CHANGE_PORT 0x700000
+#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x1000000
+#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x4000000
+#define PRINTER_CHANGE_PRINT_PROCESSOR 0x7000000
+#define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000
+#define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000
+#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000
+#define PRINTER_CHANGE_PRINTER_DRIVER 0x70000000
+#define PRINTER_CHANGE_TIMEOUT 0x80000000
+#define PRINTER_CHANGE_ALL 0x7777FFFF
+#define PRINTER_NOTIFY_INFO_DISCARDED 1
+#define PRINTER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|PRINTER_ACCESS_ADMINISTER|PRINTER_ACCESS_USE)
+#define PRINTER_READ (STANDARD_RIGHTS_READ|PRINTER_ACCESS_USE)
+#define PRINTER_WRITE (STANDARD_RIGHTS_WRITE|PRINTER_ACCESS_USE)
+#define PRINTER_EXECUTE (STANDARD_RIGHTS_EXECUTE|PRINTER_ACCESS_USE)
+#define NO_PRIORITY 0
+#define MAX_PRIORITY 99
+#define MIN_PRIORITY 1
+#define DEF_PRIORITY 1
+#define PORT_TYPE_WRITE 1
+#define PORT_TYPE_READ 2
+#define PORT_TYPE_REDIRECTED 4
+#define PORT_TYPE_NET_ATTACHED 8
+#define SERVER_ACCESS_ADMINISTER 1
+#define SERVER_ACCESS_ENUMERATE 2
+#define SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE)
+#define SERVER_READ (STANDARD_RIGHTS_READ|SERVER_ACCESS_ENUMERATE)
+#define SERVER_WRITE (STANDARD_RIGHTS_WRITE|SERVER_ACCESS_ADMINISTER|SERVER_ACCESS_ENUMERATE)
+#define SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE|SERVER_ACCESS_ENUMERATE)
+#define PORT_STATUS_TYPE_ERROR 1
+#define PORT_STATUS_TYPE_WARNING 2
+#define PORT_STATUS_TYPE_INFO 3
+#define PORT_STATUS_OFFLINE 1
+#define PORT_STATUS_PAPER_JAM 2
+#define PORT_STATUS_PAPER_OUT 3
+#define PORT_STATUS_OUTPUT_BIN_FULL 4
+#define PORT_STATUS_PAPER_PROBLEM 5
+#define PORT_STATUS_NO_TONER 6
+#define PORT_STATUS_DOOR_OPEN 7
+#define PORT_STATUS_USER_INTERVENTION 8
+#define PORT_STATUS_OUT_OF_MEMORY 9
+#define PORT_STATUS_TONER_LOW 10
+#define PORT_STATUS_WARMING_UP 11
+#define PORT_STATUS_POWER_SAVE 12
+#ifndef RC_INVOKED
+typedef struct _ADDJOB_INFO_1A {
+ LPSTR Path;
+ DWORD JobId;
+} ADDJOB_INFO_1A,*PADDJOB_INFO_1A,*LPADDJOB_INFO_1A;
+typedef struct _ADDJOB_INFO_1W {
+ LPWSTR Path;
+ DWORD JobId;
+} ADDJOB_INFO_1W,*PADDJOB_INFO_1W,*LPADDJOB_INFO_1W;
+typedef struct _DATATYPES_INFO_1A{LPSTR pName;} DATATYPES_INFO_1A,*PDATATYPES_INFO_1A,*LPDATATYPES_INFO_1A;
+typedef struct _DATATYPES_INFO_1W{LPWSTR pName;} DATATYPES_INFO_1W,*PDATATYPES_INFO_1W,*LPDATATYPES_INFO_1W;
+typedef struct _JOB_INFO_1A {
+ DWORD JobId;
+ LPSTR pPrinterName;
+ LPSTR pMachineName;
+ LPSTR pUserName;
+ LPSTR pDocument;
+ LPSTR pDatatype;
+ LPSTR pStatus;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD TotalPages;
+ DWORD PagesPrinted;
+ SYSTEMTIME Submitted;
+} JOB_INFO_1A,*PJOB_INFO_1A,*LPJOB_INFO_1A;
+typedef struct _JOB_INFO_1W {
+ DWORD JobId;
+ LPWSTR pPrinterName;
+ LPWSTR pMachineName;
+ LPWSTR pUserName;
+ LPWSTR pDocument;
+ LPWSTR pDatatype;
+ LPWSTR pStatus;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD TotalPages;
+ DWORD PagesPrinted;
+ SYSTEMTIME Submitted;
+} JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W;
+typedef struct _JOB_INFO_2A {
+ DWORD JobId;
+ LPSTR pPrinterName;
+ LPSTR pMachineName;
+ LPSTR pUserName;
+ LPSTR pDocument;
+ LPSTR pNotifyName;
+ LPSTR pDatatype;
+ LPSTR pPrintProcessor;
+ LPSTR pParameters;
+ LPSTR pDriverName;
+ LPDEVMODEA pDevMode;
+ LPSTR pStatus;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD TotalPages;
+ DWORD Size;
+ SYSTEMTIME Submitted;
+ DWORD Time;
+ DWORD PagesPrinted;
+} JOB_INFO_2A,*PJOB_INFO_2A,*LPJOB_INFO_2A;
+typedef struct _JOB_INFO_2W {
+ DWORD JobId;
+ LPWSTR pPrinterName;
+ LPWSTR pMachineName;
+ LPWSTR pUserName;
+ LPWSTR pDocument;
+ LPWSTR pNotifyName;
+ LPWSTR pDatatype;
+ LPWSTR pPrintProcessor;
+ LPWSTR pParameters;
+ LPWSTR pDriverName;
+ LPDEVMODEW pDevMode;
+ LPWSTR pStatus;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Status;
+ DWORD Priority;
+ DWORD Position;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD TotalPages;
+ DWORD Size;
+ SYSTEMTIME Submitted;
+ DWORD Time;
+ DWORD PagesPrinted;
+} JOB_INFO_2W,*PJOB_INFO_2W,*LPJOB_INFO_2W;
+typedef struct _DOC_INFO_1A {
+ LPSTR pDocName;
+ LPSTR pOutputFile;
+ LPSTR pDatatype;
+} DOC_INFO_1A,*PDOC_INFO_1A,*LPDOC_INFO_1A;
+typedef struct _DOC_INFO_1W {
+ LPWSTR pDocName;
+ LPWSTR pOutputFile;
+ LPWSTR pDatatype;
+} DOC_INFO_1W,*PDOC_INFO_1W,*LPDOC_INFO_1W;
+typedef struct _DOC_INFO_2A {
+ LPSTR pDocName;
+ LPSTR pOutputFile;
+ LPSTR pDatatype;
+ DWORD dwMode;
+ DWORD JobId;
+} DOC_INFO_2A,*PDOC_INFO_2A,*LPDOC_INFO_2A;
+typedef struct _DOC_INFO_2W {
+ LPWSTR pDocName;
+ LPWSTR pOutputFile;
+ LPWSTR pDatatype;
+ DWORD dwMode;
+ DWORD JobId;
+} DOC_INFO_2W,*PDOC_INFO_2W,*LPDOC_INFO_2W;
+typedef struct _DRIVER_INFO_1A {LPSTR pName;} DRIVER_INFO_1A,*PDRIVER_INFO_1A,*LPDRIVER_INFO_1A;
+typedef struct _DRIVER_INFO_1W {LPWSTR pName;} DRIVER_INFO_1W,*PDRIVER_INFO_1W,*LPDRIVER_INFO_1W;
+typedef struct _DRIVER_INFO_2A {
+ DWORD cVersion;
+ LPSTR pName;
+ LPSTR pEnvironment;
+ LPSTR pDriverPath;
+ LPSTR pDataFile;
+ LPSTR pConfigFile;
+} DRIVER_INFO_2A,*PDRIVER_INFO_2A,*LPDRIVER_INFO_2A;
+typedef struct _DRIVER_INFO_2W {
+ DWORD cVersion;
+ LPWSTR pName;
+ LPWSTR pEnvironment;
+ LPWSTR pDriverPath;
+ LPWSTR pDataFile;
+ LPWSTR pConfigFile;
+} DRIVER_INFO_2W,*PDRIVER_INFO_2W,*LPDRIVER_INFO_2W;
+typedef struct _DRIVER_INFO_3A {
+ DWORD cVersion;
+ LPSTR pName;
+ LPSTR pEnvironment;
+ LPSTR pDriverPath;
+ LPSTR pDataFile;
+ LPSTR pConfigFile;
+ LPSTR pHelpFile;
+ LPSTR pDependentFiles;
+ LPSTR pMonitorName;
+ LPSTR pDefaultDataType;
+} DRIVER_INFO_3A,*PDRIVER_INFO_3A,*LPDRIVER_INFO_3A;
+typedef struct _DRIVER_INFO_3W {
+ DWORD cVersion;
+ LPWSTR pName;
+ LPWSTR pEnvironment;
+ LPWSTR pDriverPath;
+ LPWSTR pDataFile;
+ LPWSTR pConfigFile;
+ LPWSTR pHelpFile;
+ LPWSTR pDependentFiles;
+ LPWSTR pMonitorName;
+ LPWSTR pDefaultDataType;
+} DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W;
+typedef struct _MONITOR_INFO_1A{LPSTR pName;} MONITOR_INFO_1A,*PMONITOR_INFO_1A,*LPMONITOR_INFO_1A;
+typedef struct _MONITOR_INFO_1W{LPWSTR pName;} MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W;
+typedef struct _PORT_INFO_1A {LPSTR pName;} PORT_INFO_1A,*PPORT_INFO_1A,*LPPORT_INFO_1A;
+typedef struct _PORT_INFO_1W {LPWSTR pName;} PORT_INFO_1W,*PPORT_INFO_1W,*LPPORT_INFO_1W;
+typedef struct _MONITOR_INFO_2A{
+ LPSTR pName;
+ LPSTR pEnvironment;
+ LPSTR pDLLName;
+} MONITOR_INFO_2A,*PMONITOR_INFO_2A,*LPMONITOR_INFO_2A;
+typedef struct _MONITOR_INFO_2W{
+ LPWSTR pName;
+ LPWSTR pEnvironment;
+ LPWSTR pDLLName;
+} MONITOR_INFO_2W,*PMONITOR_INFO_2W,*LPMONITOR_INFO_2W;
+typedef struct _PORT_INFO_2A {
+ LPSTR pPortName;
+ LPSTR pMonitorName;
+ LPSTR pDescription;
+ DWORD fPortType;
+ DWORD Reserved;
+} PORT_INFO_2A,*PPORT_INFO_2A,*LPPORT_INFO_2A;
+typedef struct _PORT_INFO_2W {
+ LPWSTR pPortName;
+ LPWSTR pMonitorName;
+ LPWSTR pDescription;
+ DWORD fPortType;
+ DWORD Reserved;
+} PORT_INFO_2W,*PPORT_INFO_2W,*LPPORT_INFO_2W;
+typedef struct _PORT_INFO_3A {
+ DWORD dwStatus;
+ LPSTR pszStatus;
+ DWORD dwSeverity;
+} PORT_INFO_3A,*PPORT_INFO_3A,*LPPORT_INFO_3A;
+typedef struct _PORT_INFO_3W {
+ DWORD dwStatus;
+ LPWSTR pszStatus;
+ DWORD dwSeverity;
+} PORT_INFO_3W,*PPORT_INFO_3W,*LPPORT_INFO_3W;
+typedef struct _PRINTER_INFO_1A {
+ DWORD Flags;
+ LPSTR pDescription;
+ LPSTR pName;
+ LPSTR pComment;
+} PRINTER_INFO_1A,*PPRINTER_INFO_1A,*LPPRINTER_INFO_1A;
+typedef struct _PRINTER_INFO_1W {
+ DWORD Flags;
+ LPWSTR pDescription;
+ LPWSTR pName;
+ LPWSTR pComment;
+} PRINTER_INFO_1W,*PPRINTER_INFO_1W,*LPPRINTER_INFO_1W;
+typedef struct _PRINTER_INFO_2A {
+ LPSTR pServerName;
+ LPSTR pPrinterName;
+ LPSTR pShareName;
+ LPSTR pPortName;
+ LPSTR pDriverName;
+ LPSTR pComment;
+ LPSTR pLocation;
+ LPDEVMODEA pDevMode;
+ LPSTR pSepFile;
+ LPSTR pPrintProcessor;
+ LPSTR pDatatype;
+ LPSTR pParameters;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Attributes;
+ DWORD Priority;
+ DWORD DefaultPriority;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD Status;
+ DWORD cJobs;
+ DWORD AveragePPM;
+} PRINTER_INFO_2A,*PPRINTER_INFO_2A,*LPPRINTER_INFO_2A;
+typedef struct _PRINTER_INFO_2W {
+ LPWSTR pServerName;
+ LPWSTR pPrinterName;
+ LPWSTR pShareName;
+ LPWSTR pPortName;
+ LPWSTR pDriverName;
+ LPWSTR pComment;
+ LPWSTR pLocation;
+ LPDEVMODEW pDevMode;
+ LPWSTR pSepFile;
+ LPWSTR pPrintProcessor;
+ LPWSTR pDatatype;
+ LPWSTR pParameters;
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+ DWORD Attributes;
+ DWORD Priority;
+ DWORD DefaultPriority;
+ DWORD StartTime;
+ DWORD UntilTime;
+ DWORD Status;
+ DWORD cJobs;
+ DWORD AveragePPM;
+} PRINTER_INFO_2W,*PPRINTER_INFO_2W,*LPPRINTER_INFO_2W;
+typedef struct _PRINTER_INFO_3 {
+ PSECURITY_DESCRIPTOR pSecurityDescriptor;
+} PRINTER_INFO_3,*PPRINTER_INFO_3,*LPPRINTER_INFO_3;
+typedef struct _PRINTER_INFO_4A {
+ LPSTR pPrinterName;
+ LPSTR pServerName;
+ DWORD Attributes;
+} PRINTER_INFO_4A,*PPRINTER_INFO_4A,*LPPRINTER_INFO_4A;
+typedef struct _PRINTER_INFO_4W {
+ LPWSTR pPrinterName;
+ LPWSTR pServerName;
+ DWORD Attributes;
+} PRINTER_INFO_4W,*PPRINTER_INFO_4W,*LPPRINTER_INFO_4W;
+typedef struct _PRINTER_INFO_5A {
+ LPSTR pPrinterName;
+ LPSTR pPortName;
+ DWORD Attributes;
+ DWORD DeviceNotSelectedTimeout;
+ DWORD TransmissionRetryTimeout;
+} PRINTER_INFO_5A,*PPRINTER_INFO_5A,*LPPRINTER_INFO_5A;
+typedef struct _PRINTER_INFO_5W {
+ LPWSTR pPrinterName;
+ LPWSTR pPortName;
+ DWORD Attributes;
+ DWORD DeviceNotSelectedTimeout;
+ DWORD TransmissionRetryTimeout;
+} PRINTER_INFO_5W,*PPRINTER_INFO_5W,*LPPRINTER_INFO_5W;
+typedef struct _PRINTPROCESSOR_INFO_1A {LPSTR pName;} PRINTPROCESSOR_INFO_1A,*PPRINTPROCESSOR_INFO_1A,*LPPRINTPROCESSOR_INFO_1A;
+typedef struct _PRINTPROCESSOR_INFO_1W {LPWSTR pName;} PRINTPROCESSOR_INFO_1W,*PPRINTPROCESSOR_INFO_1W,*LPPRINTPROCESSOR_INFO_1W;
+typedef struct _PRINTER_NOTIFY_INFO_DATA {
+ WORD Type;
+ WORD Field;
+ DWORD Reserved;
+ DWORD Id;
+ union {
+ DWORD adwData[2];
+ struct {
+ DWORD cbBuf;
+ PVOID pBuf;
+ } Data;
+ } NotifyData;
+} PRINTER_NOTIFY_INFO_DATA,*PPRINTER_NOTIFY_INFO_DATA,*LPPRINTER_NOTIFY_INFO_DATA;
+typedef struct _PRINTER_NOTIFY_INFO {
+ DWORD Version;
+ DWORD Flags;
+ DWORD Count;
+ PRINTER_NOTIFY_INFO_DATA aData[1];
+} PRINTER_NOTIFY_INFO,*PPRINTER_NOTIFY_INFO,*LPPRINTER_NOTIFY_INFO;
+typedef struct _FORM_INFO_1A {
+ DWORD Flags;
+ LPSTR pName;
+ SIZEL Size;
+ RECTL ImageableArea;
+} FORM_INFO_1A,*PFORM_INFO_1A,*LPFORM_INFO_1A;
+typedef struct _FORM_INFO_1W {
+ DWORD Flags;
+ LPWSTR pName;
+ SIZEL Size;
+ RECTL ImageableArea;
+} FORM_INFO_1W,*PFORM_INFO_1W,*LPFORM_INFO_1W;
+typedef struct _PRINTER_DEFAULTSA {
+ LPSTR pDatatype;
+ LPDEVMODE pDevMode;
+ ACCESS_MASK DesiredAccess;
+} PRINTER_DEFAULTSA,*PPRINTER_DEFAULTSA,*LPPRINTER_DEFAULTSA;
+typedef struct _PRINTER_DEFAULTSW {
+ LPWSTR pDatatype;
+ LPDEVMODE pDevMode;
+ ACCESS_MASK DesiredAccess;
+} PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW;
+
+BOOL WINAPI AbortPrinter(HANDLE);
+BOOL WINAPI AddFormA(HANDLE,DWORD,PBYTE);
+BOOL WINAPI AddFormW(HANDLE,DWORD,PBYTE);
+BOOL WINAPI AddJobA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI AddJobW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI AddMonitorA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddMonitorW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI AddPortW(LPWSTR,HWND,LPWSTR);
+HANDLE WINAPI AddPrinterA(LPSTR,DWORD,PBYTE);
+HANDLE WINAPI AddPrinterW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrinterConnectionA(LPSTR);
+BOOL WINAPI AddPrinterConnectionW(LPWSTR);
+BOOL WINAPI AddPrinterDriverA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrinterDriverW(LPWSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrintProcessorA(LPSTR,LPSTR,LPSTR,LPSTR);
+BOOL WINAPI AddPrintProcessorW(LPWSTR,LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI AddPrintProvidorA(LPSTR,DWORD,PBYTE);
+BOOL WINAPI AddPrintProvidorW(LPWSTR,DWORD,PBYTE);
+LONG WINAPI AdvancedDocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODE,PDEVMODEA);
+LONG WINAPI AdvancedDocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODE,PDEVMODEW);
+BOOL WINAPI ClosePrinter(HANDLE);
+BOOL WINAPI ConfigurePortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI ConfigurePortW(LPWSTR,HWND,LPWSTR);
+HANDLE WINAPI ConnectToPrinterDlg(HWND,DWORD);
+BOOL WINAPI DeleteFormA(HANDLE,LPSTR);
+BOOL WINAPI DeleteFormW(HANDLE,LPWSTR);
+BOOL WINAPI DeleteMonitorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeleteMonitorW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePortA(LPSTR,HWND,LPSTR);
+BOOL WINAPI DeletePortW(LPWSTR,HWND,LPWSTR);
+BOOL WINAPI DeletePrinter(HANDLE);
+BOOL WINAPI DeletePrinterConnectionA(LPSTR);
+BOOL WINAPI DeletePrinterConnectionW(LPWSTR);
+DWORD WINAPI DeletePrinterDataA(HANDLE,LPSTR);
+DWORD WINAPI DeletePrinterDataW(HANDLE,LPWSTR);
+BOOL WINAPI DeletePrinterDriverA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrinterDriverW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePrintProcessorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrintProcessorW(LPWSTR,LPWSTR,LPWSTR);
+BOOL WINAPI DeletePrintProvidorA(LPSTR,LPSTR,LPSTR);
+BOOL WINAPI DeletePrintProvidorW(LPWSTR,LPWSTR,LPWSTR);
+LONG WINAPI DocumentPropertiesA(HWND,HANDLE,LPSTR,PDEVMODEA,PDEVMODEA,DWORD);
+LONG WINAPI DocumentPropertiesW(HWND,HANDLE,LPWSTR,PDEVMODEA,PDEVMODEA,DWORD);
+BOOL WINAPI EndDocPrinter(HANDLE);
+BOOL WINAPI EndPagePrinter(HANDLE);
+BOOL WINAPI EnumFormsA(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumFormsW(HANDLE,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumJobsA(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumJobsW(HANDLE,DWORD,DWORD,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumMonitorsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumMonitorsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPortsA(LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPortsW(LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+DWORD WINAPI EnumPrinterDataA(HANDLE,DWORD,LPSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI EnumPrinterDataW(HANDLE,DWORD,LPWSTR,DWORD,PDWORD,PDWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI EnumPrinterDriversA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrinterDriversW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintersA(DWORD,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintersW(DWORD,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorDatatypesA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorDatatypesW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorsA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI EnumPrintProcessorsW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD,PDWORD);
+BOOL WINAPI FindClosePrinterChangeNotification(HANDLE);
+HANDLE WINAPI FindFirstPrinterChangeNotification(HANDLE,DWORD,DWORD,PVOID);
+HANDLE WINAPI FindNextPrinterChangeNotification(HANDLE,PDWORD,PVOID,PVOID*);
+BOOL WINAPI FreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO);
+BOOL WINAPI GetFormA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetFormW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetPrinterA(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI GetPrinterW(HANDLE,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDataA(HANDLE,LPSTR,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDataW(HANDLE,LPWSTR,PDWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverA(HANDLE,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrinterDriverDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrintProcessorDirectoryA(LPSTR,LPSTR,DWORD,PBYTE,DWORD,PDWORD);
+DWORD WINAPI GetPrintProcessorDirectoryW(LPWSTR,LPWSTR,DWORD,PBYTE,DWORD,PDWORD);
+BOOL WINAPI OpenPrinterA(LPSTR,PHANDLE,LPPRINTER_DEFAULTSA);
+BOOL WINAPI OpenPrinterW(LPWSTR,PHANDLE,LPPRINTER_DEFAULTSW);
+DWORD WINAPI PrinterMessageBoxA(HANDLE,DWORD,HWND,LPSTR,LPSTR,DWORD);
+DWORD WINAPI PrinterMessageBoxW(HANDLE,DWORD,HWND,LPWSTR,LPWSTR,DWORD);
+BOOL WINAPI PrinterProperties(HWND,HANDLE);
+BOOL WINAPI ReadPrinter(HANDLE,PVOID,DWORD,PDWORD);
+BOOL WINAPI ResetPrinterA(HANDLE,LPPRINTER_DEFAULTSA);
+BOOL WINAPI ResetPrinterW(HANDLE,LPPRINTER_DEFAULTSW);
+BOOL WINAPI ScheduleJob(HANDLE,DWORD);
+BOOL WINAPI SetFormA(HANDLE,LPSTR,DWORD,PBYTE);
+BOOL WINAPI SetFormW(HANDLE,LPWSTR,DWORD,PBYTE);
+BOOL WINAPI SetJobA(HANDLE,DWORD,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetJobW(HANDLE,DWORD,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterA(HANDLE,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterW(HANDLE,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterDataA(HANDLE,LPSTR,DWORD,PBYTE,DWORD);
+BOOL WINAPI SetPrinterDataW(HANDLE,LPWSTR,DWORD,PBYTE,DWORD);
+DWORD WINAPI StartDocPrinterA(HANDLE,DWORD,PBYTE);
+DWORD WINAPI StartDocPrinterW(HANDLE,DWORD,PBYTE);
+BOOL WINAPI StartPagePrinter(HANDLE);
+DWORD WINAPI WaitForPrinterChange(HANDLE,DWORD);
+BOOL WINAPI WritePrinter(HANDLE,PVOID,DWORD,PDWORD);
+
+#ifdef UNICODE
+typedef JOB_INFO_1W JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;
+typedef JOB_INFO_2W JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2;
+typedef ADDJOB_INFO_1W ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1;
+typedef DATATYPES_INFO_1W DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1;
+typedef MONITOR_INFO_1W MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1;
+typedef MONITOR_INFO_2W MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2;
+typedef DOC_INFO_1W DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1;
+typedef DOC_INFO_2W DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2;
+typedef PORT_INFO_1W PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
+typedef PORT_INFO_2W PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
+typedef PORT_INFO_3W PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
+typedef DRIVER_INFO_2W DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
+typedef PRINTER_INFO_1W PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
+typedef PRINTER_INFO_2W PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
+typedef PRINTER_INFO_4W PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
+typedef PRINTER_INFO_5W PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5;
+typedef PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1;
+typedef FORM_INFO_1W FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1;
+typedef PRINTER_DEFAULTSW PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS;
+#define AddForm AddFormW
+#define AddJob AddJobW
+#define AddMonitor AddMonitorW
+#define AddPort AddPortW
+#define AddPrinter AddPrinterW
+#define AddPrinterConnection AddPrinterConnectionW
+#define AddPrinterDriver AddPrinterDriverW
+#define AddPrintProcessor AddPrintProcessorW
+#define AddPrintProvidor AddPrintProvidorW
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesW
+#define ConfigurePort ConfigurePortW
+#define DeleteForm DeleteFormW
+#define DeleteMonitor DeleteMonitorW
+#define DeletePort DeletePortW
+#define DeletePrinterConnection DeletePrinterConnectionW
+#define DeletePrinterData DeletePrinterDataW
+#define DeletePrinterDriver DeletePrinterDriverW
+#define DeletePrintProcessor DeletePrinterProcessorW
+#define DeletePrintProvidor DeletePrinterProvidorW
+#define DocumentProperties DocumentPropertiesW
+#define EnumForms EnumFormsW
+#define EnumJobs EnumJobsW
+#define EnumMonitors EnumMonitorsW
+#define EnumPorts EnumPortsW
+#define EnumPrinterData EnumPrinterDataW
+#define EnumPrinterDrivers EnumPrinterDriversW
+#define EnumPrinters EnumPrintersW
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesW
+#define EnumPrintProcessors EnumPrintProcessorsW
+#define GetForm GetFormW
+#define GetJob GetJobW
+#define GetPrinter GetPrinterW
+#define GetPrinterData GetPrinterDataW
+#define GetPrinterDriver GetPrinterDriverW
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryW
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryW
+#define OpenPrinter OpenPrinterW
+#define PrinterMessageBox PrinterMessageBoxW
+#define ResetPrinter ResetPrinterW
+#define SetForm SetFormW
+#define SetJob SetJobW
+#define SetPrinter SetPrinterW
+#define SetPrinterData SetPrinterDataW
+#define StartDocPrinter StartDocPrinterW
+#else
+typedef JOB_INFO_1A JOB_INFO_1,*PJOB_INFO_1,*LPJOB_INFO_1;
+typedef JOB_INFO_2A JOB_INFO_2,*PJOB_INFO_2,*LPJOB_INFO_2;
+typedef ADDJOB_INFO_1A ADDJOB_INFO_1,*PADDJOB_INFO_1,*LPADDJOB_INFO_1;
+typedef DATATYPES_INFO_1A DATATYPES_INFO_1,*PDATATYPES_INFO_1,*LPDATATYPES_INFO_1;
+typedef MONITOR_INFO_1A MONITOR_INFO_1,*PMONITOR_INFO_1,*LPMONITOR_INFO_1;
+typedef MONITOR_INFO_2A MONITOR_INFO_2,*PMONITOR_INFO_2,*LPMONITOR_INFO_2;
+typedef DOC_INFO_1A DOC_INFO_1,*PDOC_INFO_1,*LPDOC_INFO_1;
+typedef DOC_INFO_2A DOC_INFO_2,*PDOC_INFO_2,*LPDOC_INFO_2;
+typedef PORT_INFO_1A PORT_INFO_1,*PPORT_INFO_1,*LPPORT_INFO_1;
+typedef PORT_INFO_2A PORT_INFO_2,*PPORT_INFO_2,*LPPORT_INFO_2;
+typedef PORT_INFO_3A PORT_INFO_3,*PPORT_INFO_3,*LPPORT_INFO_3;
+typedef DRIVER_INFO_2A DRIVER_INFO_2,*PDRIVER_INFO_2,*LPDRIVER_INFO_2;
+typedef PRINTER_INFO_1A PRINTER_INFO_1,*PPRINTER_INFO_1,*LPPRINTER_INFO_1;
+typedef PRINTER_INFO_2A PRINTER_INFO_2,*PPRINTER_INFO_2,*LPPRINTER_INFO_2;
+typedef PRINTER_INFO_4A PRINTER_INFO_4,*PPRINTER_INFO_4,*LPPRINTER_INFO_4;
+typedef PRINTER_INFO_5A PRINTER_INFO_5,*PPRINTER_INFO_5,*LPPRINTER_INFO_5;
+typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1,*PPRINTPROCESSOR_INFO_1,*LPPRINTPROCESSOR_INFO_1;
+typedef FORM_INFO_1A FORM_INFO_1,*PFORM_INFO_1,*LPFORM_INFO_1;
+typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS,*PPRINTER_DEFAULTS,*LPPRINTER_DEFAULTS;
+#define AddForm AddFormA
+#define AddJob AddJobA
+#define AddMonitor AddMonitorA
+#define AddPort AddPortA
+#define AddPrinter AddPrinterA
+#define AddPrinterConnection AddPrinterConnectionA
+#define AddPrinterDriver AddPrinterDriverA
+#define AddPrintProcessor AddPrintProcessorA
+#define AddPrintProvidor AddPrintProvidorA
+#define AdvancedDocumentProperties AdvancedDocumentPropertiesA
+#define ConfigurePort ConfigurePortA
+#define DeleteForm DeleteFormA
+#define DeleteMonitor DeleteMonitorA
+#define DeletePort DeletePortA
+#define DeletePrinterConnection DeletePrinterConnectionA
+#define DeletePrinterData DeletePrinterDataA
+#define DeletePrinterDriver DeletePrinterDriverA
+#define DeletePrintProcessor DeletePrinterProcessorA
+#define DeletePrintProvidor DeletePrinterProvidorA
+#define DocumentProperties DocumentPropertiesA
+#define EnumForms EnumFormsA
+#define EnumJobs EnumJobsA
+#define EnumMonitors EnumMonitorsA
+#define EnumPorts EnumPortsA
+#define EnumPrinterData EnumPrinterDataA
+#define EnumPrinterDrivers EnumPrinterDriversA
+#define EnumPrinters EnumPrintersA
+#define EnumPrintProcessorDatatypes EnumPrintProcessorDatatypesA
+#define EnumPrintProcessors EnumPrintProcessorsA
+#define GetForm GetFormA
+#define GetJob GetJobA
+#define GetPrinter GetPrinterA
+#define GetPrinterData GetPrinterDataA
+#define GetPrinterDriver GetPrinterDriverA
+#define GetPrinterDriverDirectory GetPrinterDriverDirectoryA
+#define GetPrintProcessorDirectory GetPrintProcessorDirectoryA
+#define OpenPrinter OpenPrinterA
+#define PrinterMessageBox PrinterMessageBoxA
+#define ResetPrinter ResetPrinterA
+#define SetForm SetFormA
+#define SetJob SetJobA
+#define SetPrinter SetPrinterA
+#define SetPrinterData SetPrinterDataA
+#define StartDocPrinter StartDocPrinterA
+#endif
+#endif /* RC_INVOKED */
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/winsvc.h b/winsup/w32api/include/winsvc.h
new file mode 100644
index 000000000..11b136145
--- /dev/null
+++ b/winsup/w32api/include/winsvc.h
@@ -0,0 +1,202 @@
+#ifndef _WINSVC_H
+#define _WINSVC_H
+#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_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_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)
+
+
+typedef struct _SERVICE_STATUS {
+ DWORD dwServiceType;
+ DWORD dwCurrentState;
+ DWORD dwControlsAccepted;
+ DWORD dwWin32ExitCode;
+ DWORD dwServiceSpecificExitCode;
+ DWORD dwCheckPoint;
+ DWORD dwWaitHint;
+} SERVICE_STATUS,*LPSERVICE_STATUS;
+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 _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);
+
+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 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 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 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);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerA(LPCSTR,LPHANDLER_FUNCTION);
+SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerW(LPCWSTR,LPHANDLER_FUNCTION);
+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 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;
+#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 CreateService CreateServiceW
+#define EnumDependentServices EnumDependentServicesW
+#define EnumServicesStatus EnumServicesStatusW
+#define GetServiceDisplayName GetServiceDisplayNameW
+#define GetServiceKeyName GetServiceKeyNameW
+#define OpenSCManager OpenSCManagerW
+#define OpenService OpenServiceW
+#define QueryServiceConfig QueryServiceConfigW
+#define QueryServiceLockStatus QueryServiceLockStatusW
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
+#define StartService StartServiceW
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
+#else
+typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS,*LPENUM_SERVICE_STATUS;
+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;
+#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 CreateService CreateServiceA
+#define EnumDependentServices EnumDependentServicesA
+#define EnumServicesStatus EnumServicesStatusA
+#define GetServiceDisplayName GetServiceDisplayNameA
+#define GetServiceKeyName GetServiceKeyNameA
+#define OpenSCManager OpenSCManagerA
+#define OpenService OpenServiceA
+#define QueryServiceConfig QueryServiceConfigA
+#define QueryServiceLockStatus QueryServiceLockStatusA
+#define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
+#define StartService StartServiceA
+#define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _WINSVC_H */
diff --git a/winsup/w32api/include/winuser.h b/winsup/w32api/include/winuser.h
new file mode 100644
index 000000000..8c2fe7d41
--- /dev/null
+++ b/winsup/w32api/include/winuser.h
@@ -0,0 +1,3236 @@
+#ifndef _WINUSER_H
+#define _WINUSER_H
+#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 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 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 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_CONTEXTHELP 0x400
+#define WS_EX_CONTROLPARENT 0x10000
+#define WS_EX_DLGMODALFRAME 1
+#define WS_EX_LEFT 0
+#define WS_EX_LEFTSCROLLBAR 0x4000
+#define WS_EX_LTRREADING 0
+#define WS_EX_MDICHILD 64
+#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)))
+#define RT_CURSOR MAKEINTRESOURCE(1)
+#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_FONT MAKEINTRESOURCE(8)
+#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)
+#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_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
+#define MB_SERVICE_NOTIFICATION 0x40000
+#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 GWL_HINSTANCE (-6)
+#define GWL_HWNDPARENT (-8)
+#define GWL_ID (-12)
+#define GWL_USERDATA (-21)
+#define DWL_DLGPROC 4
+#define DWL_MSGRESULT 0
+#define DWL_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 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_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 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_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
+#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_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
+#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
+#define WHEEL_DELTA 120
+#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_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_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
+#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 *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;
+typedef struct tagANIMATIONINFO {
+ UINT cbSize;
+ int iMinAnimate;
+} ANIMATIONINFO,*LPANIMATIONINFO;
+typedef struct tagCREATESTRUCT {
+ LPVOID lpCreateParams;
+ HINSTANCE hInstance;
+ HMENU hMenu;
+ HWND hwndParent;
+ int cy;
+ int cx;
+ int y;
+ int x;
+ LONG style;
+ LPCTSTR lpszName;
+ LPCTSTR lpszClass;
+ DWORD dwExStyle;
+} CREATESTRUCT,*LPCREATESTRUCT;
+typedef struct tagCBT_CREATEWND {
+ LPCREATESTRUCT lpcs;
+ HWND hwndInsertAfter;
+} CBT_CREATEWND;
+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;
+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,*PWCWPSTRUCT;
+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 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;
+
+#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(pts);(ps).y=HIWORD(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 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 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);
+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 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 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);
+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 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 GetProp GetPropW
+#define GetTabbedTextExtent GetTabbedTextExtentW
+#define GetUserObjectInformation GetUserObjectInformationW
+#define GetWindowLong GetWindowLongW
+#define GetWindowText GetWindowTextW
+#define GetWindowTextLength GetWindowTextLengthW
+#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 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 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 GetProp GetPropA
+#define GetTabbedTextExtent GetTabbedTextExtentA
+#define GetUserObjectInformation GetUserObjectInformationA
+#define GetWindowLong GetWindowLongA
+#define GetWindowText GetWindowTextA
+#define GetWindowTextLength GetWindowTextLengthA
+#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 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/winsup/w32api/include/winver.h b/winsup/w32api/include/winver.h
new file mode 100644
index 000000000..93f5e533d
--- /dev/null
+++ b/winsup/w32api/include/winver.h
@@ -0,0 +1,129 @@
+#ifndef _WINVER_H
+#define _WINVER_H
+#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
diff --git a/winsup/w32api/include/wtypes.h b/winsup/w32api/include/wtypes.h
new file mode 100644
index 000000000..2222f91af
--- /dev/null
+++ b/winsup/w32api/include/wtypes.h
@@ -0,0 +1,152 @@
+#ifndef _WTYPES_H
+#define _WTYPES_H
+#include <rpc.h>
+#include <rpcndr.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define IID_NULL GUID_NULL
+#define CLSID_NULL GUID_NULL
+#define CBPCLIPDATA(d) ((d).cbSize-sizeof((d).ulClipFmt))
+#define DECIMAL_NEG ((BYTE)0x80)
+#define DECIMAL_SETZERO(d) {(dec).Lo64=(dec).Hi32=(dec).signscale=0;}
+typedef struct _BLOB {
+ ULONG cbSize;
+ BYTE *pBlobData;
+} BLOB;
+typedef enum tagDVASPECT {
+ DVASPECT_CONTENT=1,
+ DVASPECT_THUMBNAIL=2,
+ DVASPECT_ICON=4,
+ DVASPECT_DOCPRINT=8
+} DVASPECT;
+typedef enum tagDVASPECT2 {
+ DVASPECT_OPAQUE=16,
+ DVASPECT_TRANSPARENT=32
+} DVASPECT2;
+typedef enum tagSTATFLAG {
+ STATFLAG_DEFAULT=0,
+ STATFLAG_NONAME=1
+} STATFLAG;
+typedef enum tagMEMCTX {
+ MEMCTX_TASK=1,
+ MEMCTX_SHARED,
+ MEMCTX_MACSYSTEM,
+ MEMCTX_UNKNOWN=-1,
+ MEMCTX_SAME=-2
+} MEMCTX;
+typedef enum tagMSHCTX {
+ MSHCTX_LOCAL,
+ MSHCTX_NOSHAREDMEM,
+ MSHCTX_DIFFERENTMACHINE,
+ MSHCTX_INPROC
+} MSHCTX;
+typedef
+enum tagCLSCTX {
+ CLSCTX_INPROC_SERVER=1,CLSCTX_INPROC_HANDLER=2,CLSCTX_LOCAL_SERVER=4,
+ CLSCTX_INPROC_SERVER16=8,CLSCTX_REMOTE_SERVER=16
+} CLSCTX;
+typedef enum tagMSHLFLAGS {
+ MSHLFLAGS_NORMAL,MSHLFLAGS_TABLESTRONG,MSHLFLAGS_TABLEWEAK
+} MSHLFLAGS;
+typedef struct _FLAGGED_WORD_BLOB {
+ unsigned long fFlags;
+ unsigned long clSize;
+ unsigned short asData[1];
+}FLAGGED_WORD_BLOB;
+
+#ifndef OLE2ANSI
+typedef WCHAR OLECHAR;
+typedef LPWSTR LPOLESTR;
+typedef LPCWSTR LPCOLESTR;
+#define OLESTR(s) L##s
+#else
+typedef char OLECHAR;
+typedef LPSTR LPOLESTR;
+typedef LPCSTR LPCOLESTR;
+#define OLESTR(s) s
+#endif
+typedef unsigned short VARTYPE;
+typedef short VARIANT_BOOL;
+typedef VARIANT_BOOL _VARIANT_BOOL;
+#define VARIANT_TRUE ((VARIANT_BOOL)0xffff)
+#define VARIANT_FALSE ((VARIANT_BOOL)0)
+typedef OLECHAR *BSTR;
+typedef FLAGGED_WORD_BLOB *wireBSTR;
+typedef BSTR *LPBSTR;
+typedef LONG SCODE;
+typedef void *HCONTEXT;
+typedef union tagCY {
+ struct {
+ unsigned long Lo;
+ long Hi;
+ }_STRUCT_NAME(s);
+ LONGLONG int64;
+} CY;
+typedef double DATE;
+typedef struct tagBSTRBLOB {
+ ULONG cbSize;
+ PBYTE pData;
+}BSTRBLOB;
+typedef struct tagBSTRBLOB *LPBSTRBLOB;
+typedef struct tagCLIPDATA {
+ ULONG cbSize;
+ long ulClipFmt;
+ PBYTE pClipData;
+}CLIPDATA;
+typedef enum tagSTGC {
+ STGC_DEFAULT,STGC_OVERWRITE,STGC_ONLYIFCURRENT,
+ STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
+}STGC;
+typedef enum tagSTGMOVE {
+ STGMOVE_MOVE,STGMOVE_COPY,STGMOVE_SHALLOWCOPY
+}STGMOVE;
+enum VARENUM {
+ VT_EMPTY,VT_NULL,VT_I2,VT_I4,VT_R4,VT_R8,VT_CY,VT_DATE,VT_BSTR,VT_DISPATCH,
+ VT_ERROR,VT_BOOL,VT_VARIANT,VT_UNKNOWN,VT_DECIMAL,VT_I1=16,VT_UI1,VT_UI2,VT_UI4,VT_I8,
+ VT_UI8,VT_INT,VT_UINT,VT_VOID,VT_HRESULT,VT_PTR,VT_SAFEARRAY,VT_CARRAY,VT_USERDEFINED,
+ VT_LPSTR,VT_LPWSTR,VT_FILETIME=64,VT_BLOB,VT_STREAM,VT_STORAGE,VT_STREAMED_OBJECT,
+ VT_STORED_OBJECT,VT_BLOB_OBJECT,VT_CF,VT_CLSID,VT_BSTR_BLOB=0xfff,VT_VECTOR=0x1000,
+ VT_ARRAY=0x2000,VT_BYREF=0x4000,VT_RESERVED=0x8000,VT_ILLEGAL= 0xffff,VT_ILLEGALMASKED=0xfff,
+ VT_TYPEMASK=0xfff
+};
+typedef struct _BYTE_SIZEDARR {
+ unsigned long clSize;
+ byte *pData;
+}BYTE_SIZEDARR;
+typedef struct _SHORT_SIZEDARR {
+ unsigned long clSize;
+ unsigned short *pData;
+}WORD_SIZEDARR;
+typedef struct _LONG_SIZEDARR {
+ unsigned long clSize;
+ unsigned long *pData;
+}DWORD_SIZEDARR;
+typedef struct _HYPER_SIZEDARR {
+ unsigned long clSize;
+ hyper *pData;
+}HYPER_SIZEDARR;
+typedef double DOUBLE;
+typedef struct tagDEC {
+ USHORT wReserved;
+ union {
+ struct {
+ BYTE scale;
+ BYTE sign;
+ }_STRUCT_NAME(s);
+ USHORT signscale;
+ } DUMMYUNIONNAME;
+ ULONG Hi32;
+ union {
+ struct {
+ ULONG Lo32;
+ ULONG Mid32;
+ }_STRUCT_NAME(s2);
+ ULONGLONG Lo64;
+ } DUMMYUNIONNAME2;
+} DECIMAL;
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/winsup/w32api/include/zmouse.h b/winsup/w32api/include/zmouse.h
new file mode 100644
index 000000000..aa6073c7e
--- /dev/null
+++ b/winsup/w32api/include/zmouse.h
@@ -0,0 +1,24 @@
+/*
+ zmouse.h - Header for IntelliMouse.
+
+ 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.
+
+ FIXME: This file is obviously horribly incomplete!
+
+*/
+
+#ifndef _ZMOUSE_H
+#define _ZMOUSE_H
+
+#ifndef WM_MOUSEWHEEL
+# define WM_MOUSEWHEEL (WM_MOUSELAST + 1)
+#endif
+
+#define WHEEL_DELTA 120
+#define WHEEL_PAGESCROLL UINT_MAX
+
+#endif /* _ZMOUSE_H */