summaryrefslogtreecommitdiffstats
path: root/libmsi
diff options
context:
space:
mode:
Diffstat (limited to 'libmsi')
-rw-r--r--libmsi/Makefile.am4
-rw-r--r--libmsi/database.c1
-rw-r--r--libmsi/msipriv.h6
-rw-r--r--libmsi/record.c3
-rw-r--r--libmsi/storages.c2
-rw-r--r--libmsi/suminfo.c2
-rw-r--r--libmsi/winstubs/winstubs.h472
-rw-r--r--libmsi/winstubs/winuser.h14
8 files changed, 489 insertions, 15 deletions
diff --git a/libmsi/Makefile.am b/libmsi/Makefile.am
index 9adfe03..075ae3e 100644
--- a/libmsi/Makefile.am
+++ b/libmsi/Makefile.am
@@ -1,6 +1,8 @@
lib_LTLIBRARIES = libmsi.la
-AM_CPPFLAGS = -I$(srcdir) -I. -DUNICODE
+AM_CPPFLAGS = -I$(srcdir) -I. -DUNICODE \
+ -I$(srcdir)/winstubs -include $(srcdir)/winstubs/winstubs.h
+
AM_CFLAGS = -Wunused -Wimplicit
AM_YFLAGS = -d
BUILT_SOURCES = sql-parser.c sql-parser.h
diff --git a/libmsi/database.c b/libmsi/database.c
index 59c5cf4..21d1c5c 100644
--- a/libmsi/database.c
+++ b/libmsi/database.c
@@ -26,7 +26,6 @@
#include "windef.h"
#include "winbase.h"
-#include "winreg.h"
#include "winnls.h"
#include "debug.h"
#include "unicode.h"
diff --git a/libmsi/msipriv.h b/libmsi/msipriv.h
index 26b572c..acda71b 100644
--- a/libmsi/msipriv.h
+++ b/libmsi/msipriv.h
@@ -27,17 +27,11 @@
#include "unicode.h"
#include "windef.h"
#include "winbase.h"
-#include "fdi.h"
#include "msi.h"
#include "msiquery.h"
-#include "msidefs.h"
-#include "wingdi.h"
-#include "winuser.h"
#include "objbase.h"
#include "objidl.h"
-#include "fusion.h"
#include "winnls.h"
-#include "winver.h"
#include "list.h"
#pragma GCC visibility push(hidden)
diff --git a/libmsi/record.c b/libmsi/record.c
index 78e27ff..db23f29 100644
--- a/libmsi/record.c
+++ b/libmsi/record.c
@@ -24,8 +24,6 @@
#include "windef.h"
#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
#include "winerror.h"
#include "debug.h"
#include "unicode.h"
@@ -35,7 +33,6 @@
#include "winnls.h"
#include "ole2.h"
-#include "winreg.h"
#include "shlwapi.h"
#include "query.h"
diff --git a/libmsi/storages.c b/libmsi/storages.c
index e4f8af3..6f33b8e 100644
--- a/libmsi/storages.c
+++ b/libmsi/storages.c
@@ -24,8 +24,6 @@
#include "windef.h"
#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
#include "winerror.h"
#include "ole2.h"
#include "msiquery.h"
diff --git a/libmsi/suminfo.c b/libmsi/suminfo.c
index 01f17a1..a41b1e9 100644
--- a/libmsi/suminfo.c
+++ b/libmsi/suminfo.c
@@ -25,13 +25,11 @@
#include "windef.h"
#include "winbase.h"
-#include "winreg.h"
#include "winnls.h"
#include "shlwapi.h"
#include "debug.h"
#include "unicode.h"
#include "msiquery.h"
-#include "msidefs.h"
#include "msipriv.h"
#include "objidl.h"
#include "propvarutil.h"
diff --git a/libmsi/winstubs/winstubs.h b/libmsi/winstubs/winstubs.h
new file mode 100644
index 0000000..7aa1095
--- /dev/null
+++ b/libmsi/winstubs/winstubs.h
@@ -0,0 +1,472 @@
+#define _WINSPOOL_
+#define _WINGDI_
+#define _IMM_
+#define _INC_COMMDLG
+#define __servprov_h__
+#define __urlmon_h__
+#define _INC_VIRTDISK
+#define _WINIOCTL_
+#define _WINNETWK_
+#define _WINPERF_
+#define _WINREG_
+#define _NTDDSCRD_H2_
+#define _WINSOCKAPI_
+#define _WINSVC_
+#define _WINSCARD_H_
+#define _INC_CDERR
+#define _DDEHEADER_INCLUDED_
+#define _INC_DDEMLH
+#define _DLGSH_INCLUDED_
+#define _INC_EXCPT
+#define INCLUDED_TYPES_FCI_FDI
+#define __fusion_h__
+#define _LZEXPAND_
+#define _MCX_H_
+#define _INC_MMSYSTEM
+#define __MSIDEFS
+#define NCB_INCLUDED
+#define _INC_NCRYPT
+#define _INC_BCRYPT
+#define SAL_HXX
+#define _INC_SDKDDKVER
+#define _WINCON_
+#define __WINCRYPT_H__
+#define __WINEFS_H__
+#define _MSI_H_
+#define _MSIQUERY_H_
+
+typedef struct tagMSG *LPMSG;
+typedef struct tagREGSAM REGSAM;
+
+typedef struct AsyncIAdviseSink AsyncIAdviseSink;
+typedef struct AsyncIAdviseSink2 AsyncIAdviseSink2;
+typedef struct AsyncIMultiQI AsyncIMultiQI;
+typedef struct AsyncIPipeByte AsyncIPipeByte;
+typedef struct AsyncIPipeDouble AsyncIPipeDouble;
+typedef struct AsyncIPipeLong AsyncIPipeLong;
+typedef struct AsyncIUnknown AsyncIUnknown;
+typedef struct FolderItem FolderItem;
+typedef struct FolderItemVerb FolderItemVerb;
+typedef struct FolderItemVerbs FolderItemVerbs;
+typedef struct FolderItems FolderItems;
+typedef struct IAccessible IAccessible;
+typedef struct IActiveScript IActiveScript;
+typedef struct IActiveScriptError IActiveScriptError;
+typedef struct IActiveScriptParse IActiveScriptParse;
+typedef struct IActiveScriptParseProcedure IActiveScriptParseProcedure;
+typedef struct IActiveScriptParseProcedureOld IActiveScriptParseProcedureOld;
+typedef struct IActiveScriptSite IActiveScriptSite;
+typedef struct IActiveScriptSiteInterruptPoll IActiveScriptSiteInterruptPoll;
+typedef struct IActiveScriptSiteWindow IActiveScriptSiteWindow;
+typedef struct IActiveScriptStats IActiveScriptStats;
+typedef struct IAddrExclusionControl IAddrExclusionControl;
+typedef struct IAddrTrackingControl IAddrTrackingControl;
+typedef struct IAdviseSink IAdviseSink;
+typedef struct IAdviseSink2 IAdviseSink2;
+typedef struct IAdviseSinkEx IAdviseSinkEx;
+typedef struct IAsyncManager IAsyncManager;
+typedef struct IAsyncRpcChannelBuffer IAsyncRpcChannelBuffer;
+typedef struct IAuthenticate IAuthenticate;
+typedef struct IBindCtx IBindCtx;
+typedef struct IBindEventHandler IBindEventHandler;
+typedef struct IBindHost IBindHost;
+typedef struct IBindProtocol IBindProtocol;
+typedef struct IBindStatusCallback IBindStatusCallback;
+typedef struct IBinding IBinding;
+typedef struct IBlockingLock IBlockingLock;
+typedef struct ICSSFilter ICSSFilter;
+typedef struct ICSSFilterSite ICSSFilterSite;
+typedef struct ICallFactory ICallFactory;
+typedef struct ICancelMethodCalls ICancelMethodCalls;
+typedef struct ICatInformation ICatInformation;
+typedef struct ICatRegister ICatRegister;
+typedef struct ICatalogFileInfo ICatalogFileInfo;
+typedef struct IChannelHook IChannelHook;
+typedef struct IChannelMgr IChannelMgr;
+typedef struct IClassActivator IClassActivator;
+typedef struct IClassFactory IClassFactory;
+typedef struct IClassFactory2 IClassFactory2;
+typedef struct IClientSecurity IClientSecurity;
+typedef struct ICodeInstall ICodeInstall;
+typedef struct IConnectionPoint IConnectionPoint;
+typedef struct IConnectionPointContainer IConnectionPointContainer;
+typedef struct IContinue IContinue;
+typedef struct IContinueCallback IContinueCallback;
+typedef struct ICreateErrorInfo ICreateErrorInfo;
+typedef struct ICreateTypeInfo ICreateTypeInfo;
+typedef struct ICreateTypeInfo2 ICreateTypeInfo2;
+typedef struct ICreateTypeLib ICreateTypeLib;
+typedef struct ICreateTypeLib2 ICreateTypeLib2;
+typedef struct ICustomDoc ICustomDoc;
+typedef struct IDataAdviseHolder IDataAdviseHolder;
+typedef struct IDataFilter IDataFilter;
+typedef struct IDataObject IDataObject;
+typedef struct IDeskBand IDeskBand;
+typedef struct IDirectWriterLock IDirectWriterLock;
+typedef struct IDispError IDispError;
+typedef struct IDispatch IDispatch;
+typedef struct IDispatchEx IDispatchEx;
+typedef struct IDocHostShowUI IDocHostShowUI;
+typedef struct IDocHostUIHandler IDocHostUIHandler;
+typedef struct IDockingWindow IDockingWindow;
+typedef struct IDropSource IDropSource;
+typedef struct IDropTarget IDropTarget;
+typedef struct IDummyHICONIncluder IDummyHICONIncluder;
+typedef struct IEncodingFilterFactory IEncodingFilterFactory;
+typedef struct IEnumCATEGORYINFO IEnumCATEGORYINFO;
+typedef struct IEnumChannels IEnumChannels;
+typedef struct IEnumCodePage IEnumCodePage;
+typedef struct IEnumConnectionPoints IEnumConnectionPoints;
+typedef struct IEnumConnections IEnumConnections;
+typedef struct IEnumFORMATETC IEnumFORMATETC;
+typedef struct IEnumGUID IEnumGUID;
+typedef struct IEnumHLITEM IEnumHLITEM;
+typedef struct IEnumIDList IEnumIDList;
+typedef struct IEnumMoniker IEnumMoniker;
+typedef struct IEnumOLEVERB IEnumOLEVERB;
+typedef struct IEnumOleDocumentViews IEnumOleDocumentViews;
+typedef struct IEnumOleUndoUnits IEnumOleUndoUnits;
+typedef struct IEnumRfc1766 IEnumRfc1766;
+typedef struct IEnumSTATDATA IEnumSTATDATA;
+typedef struct IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG;
+typedef struct IEnumSTATPROPSTG IEnumSTATPROPSTG;
+typedef struct IEnumSTATSTG IEnumSTATSTG;
+typedef struct IEnumSTATURL IEnumSTATURL;
+typedef struct IEnumString IEnumString;
+typedef struct IEnumUnknown IEnumUnknown;
+typedef struct IEnumVARIANT IEnumVARIANT;
+typedef struct IErrorInfo IErrorInfo;
+typedef struct IErrorLog IErrorLog;
+typedef struct IExtensionServices IExtensionServices;
+typedef struct IExternalConnection IExternalConnection;
+typedef struct IFillLockBytes IFillLockBytes;
+typedef struct IFilter IFilter;
+typedef struct IFolderViewOC IFolderViewOC;
+typedef struct IFont IFont;
+typedef struct IFontDisp IFontDisp;
+typedef struct IFontEventsDisp IFontEventsDisp;
+typedef struct IForegroundTransfer IForegroundTransfer;
+typedef struct IGlobalInterfaceTable IGlobalInterfaceTable;
+typedef struct IHTMLAnchorElement IHTMLAnchorElement;
+typedef struct IHTMLAreaElement IHTMLAreaElement;
+typedef struct IHTMLAreasCollection IHTMLAreasCollection;
+typedef struct IHTMLBGsound IHTMLBGsound;
+typedef struct IHTMLBRElement IHTMLBRElement;
+typedef struct IHTMLBaseElement IHTMLBaseElement;
+typedef struct IHTMLBaseFontElement IHTMLBaseFontElement;
+typedef struct IHTMLBlockElement IHTMLBlockElement;
+typedef struct IHTMLBodyElement IHTMLBodyElement;
+typedef struct IHTMLButtonElement IHTMLButtonElement;
+typedef struct IHTMLCommentElement IHTMLCommentElement;
+typedef struct IHTMLControlElement IHTMLControlElement;
+typedef struct IHTMLControlRange IHTMLControlRange;
+typedef struct IHTMLDDElement IHTMLDDElement;
+typedef struct IHTMLDListElement IHTMLDListElement;
+typedef struct IHTMLDTElement IHTMLDTElement;
+typedef struct IHTMLDatabinding IHTMLDatabinding;
+typedef struct IHTMLDialog IHTMLDialog;
+typedef struct IHTMLDivElement IHTMLDivElement;
+typedef struct IHTMLDivPosition IHTMLDivPosition;
+typedef struct IHTMLDocument IHTMLDocument;
+typedef struct IHTMLDocument2 IHTMLDocument2;
+typedef struct IHTMLElement IHTMLElement;
+typedef struct IHTMLElementCollection IHTMLElementCollection;
+typedef struct IHTMLEmbedElement IHTMLEmbedElement;
+typedef struct IHTMLEventObj IHTMLEventObj;
+typedef struct IHTMLFieldSetElement IHTMLFieldSetElement;
+typedef struct IHTMLFiltersCollection IHTMLFiltersCollection;
+typedef struct IHTMLFontElement IHTMLFontElement;
+typedef struct IHTMLFontNamesCollection IHTMLFontNamesCollection;
+typedef struct IHTMLFontSizesCollection IHTMLFontSizesCollection;
+typedef struct IHTMLFormElement IHTMLFormElement;
+typedef struct IHTMLFrameBase IHTMLFrameBase;
+typedef struct IHTMLFrameElement IHTMLFrameElement;
+typedef struct IHTMLFrameSetElement IHTMLFrameSetElement;
+typedef struct IHTMLFramesCollection2 IHTMLFramesCollection2;
+typedef struct IHTMLHRElement IHTMLHRElement;
+typedef struct IHTMLHeaderElement IHTMLHeaderElement;
+typedef struct IHTMLIFrameElement IHTMLIFrameElement;
+typedef struct IHTMLImageElementFactory IHTMLImageElementFactory;
+typedef struct IHTMLImgElement IHTMLImgElement;
+typedef struct IHTMLInputButtonElement IHTMLInputButtonElement;
+typedef struct IHTMLInputFileElement IHTMLInputFileElement;
+typedef struct IHTMLInputHiddenElement IHTMLInputHiddenElement;
+typedef struct IHTMLInputImage IHTMLInputImage;
+typedef struct IHTMLInputTextElement IHTMLInputTextElement;
+typedef struct IHTMLIsIndexElement IHTMLIsIndexElement;
+typedef struct IHTMLLIElement IHTMLLIElement;
+typedef struct IHTMLLabelElement IHTMLLabelElement;
+typedef struct IHTMLLegendElement IHTMLLegendElement;
+typedef struct IHTMLLinkElement IHTMLLinkElement;
+typedef struct IHTMLListElement IHTMLListElement;
+typedef struct IHTMLLocation IHTMLLocation;
+typedef struct IHTMLMapElement IHTMLMapElement;
+typedef struct IHTMLMarqueeElement IHTMLMarqueeElement;
+typedef struct IHTMLMetaElement IHTMLMetaElement;
+typedef struct IHTMLMimeTypesCollection IHTMLMimeTypesCollection;
+typedef struct IHTMLNextIdElement IHTMLNextIdElement;
+typedef struct IHTMLNoShowElement IHTMLNoShowElement;
+typedef struct IHTMLOListElement IHTMLOListElement;
+typedef struct IHTMLObjectElement IHTMLObjectElement;
+typedef struct IHTMLOpsProfile IHTMLOpsProfile;
+typedef struct IHTMLOptionButtonElement IHTMLOptionButtonElement;
+typedef struct IHTMLOptionElement IHTMLOptionElement;
+typedef struct IHTMLOptionElementFactory IHTMLOptionElementFactory;
+typedef struct IHTMLOptionsHolder IHTMLOptionsHolder;
+typedef struct IHTMLParaElement IHTMLParaElement;
+typedef struct IHTMLPhraseElement IHTMLPhraseElement;
+typedef struct IHTMLPluginsCollection IHTMLPluginsCollection;
+typedef struct IHTMLRuleStyle IHTMLRuleStyle;
+typedef struct IHTMLScreen IHTMLScreen;
+typedef struct IHTMLScriptElement IHTMLScriptElement;
+typedef struct IHTMLSelectElement IHTMLSelectElement;
+typedef struct IHTMLSelectionObject IHTMLSelectionObject;
+typedef struct IHTMLSpanElement IHTMLSpanElement;
+typedef struct IHTMLSpanFlow IHTMLSpanFlow;
+typedef struct IHTMLStyle IHTMLStyle;
+typedef struct IHTMLStyleElement IHTMLStyleElement;
+typedef struct IHTMLStyleFontFace IHTMLStyleFontFace;
+typedef struct IHTMLStyleSheet IHTMLStyleSheet;
+typedef struct IHTMLStyleSheetRule IHTMLStyleSheetRule;
+typedef struct IHTMLStyleSheetRulesCollection IHTMLStyleSheetRulesCollection;
+typedef struct IHTMLStyleSheetsCollection IHTMLStyleSheetsCollection;
+typedef struct IHTMLTable IHTMLTable;
+typedef struct IHTMLTableCaption IHTMLTableCaption;
+typedef struct IHTMLTableCell IHTMLTableCell;
+typedef struct IHTMLTableCol IHTMLTableCol;
+typedef struct IHTMLTableRow IHTMLTableRow;
+typedef struct IHTMLTableSection IHTMLTableSection;
+typedef struct IHTMLTextAreaElement IHTMLTextAreaElement;
+typedef struct IHTMLTextContainer IHTMLTextContainer;
+typedef struct IHTMLTextElement IHTMLTextElement;
+typedef struct IHTMLTitleElement IHTMLTitleElement;
+typedef struct IHTMLTxtRange IHTMLTxtRange;
+typedef struct IHTMLUListElement IHTMLUListElement;
+typedef struct IHTMLUnknownElement IHTMLUnknownElement;
+typedef struct IHTMLWindow2 IHTMLWindow2;
+typedef struct IHlink IHlink;
+typedef struct IHlinkBrowseContext IHlinkBrowseContext;
+typedef struct IHlinkFrame IHlinkFrame;
+typedef struct IHlinkSite IHlinkSite;
+typedef struct IHlinkTarget IHlinkTarget;
+typedef struct IHttpNegotiate IHttpNegotiate;
+typedef struct IHttpNegotiate2 IHttpNegotiate2;
+typedef struct IHttpSecurity IHttpSecurity;
+typedef struct IImageDecodeEventSink IImageDecodeEventSink;
+typedef struct IImageDecodeFilter IImageDecodeFilter;
+typedef struct IInternalUnknown IInternalUnknown;
+typedef struct IInternet IInternet;
+typedef struct IInternetBindInfo IInternetBindInfo;
+typedef struct IInternetHostSecurityManager IInternetHostSecurityManager;
+typedef struct IInternetPriority IInternetPriority;
+typedef struct IInternetProtocol IInternetProtocol;
+typedef struct IInternetProtocolInfo IInternetProtocolInfo;
+typedef struct IInternetProtocolRoot IInternetProtocolRoot;
+typedef struct IInternetProtocolSink IInternetProtocolSink;
+typedef struct IInternetProtocolSinkStackable IInternetProtocolSinkStackable;
+typedef struct IInternetSecurityManager IInternetSecurityManager;
+typedef struct IInternetSecurityMgrSite IInternetSecurityMgrSite;
+typedef struct IInternetSession IInternetSession;
+typedef struct IInternetThreadSwitch IInternetThreadSwitch;
+typedef struct IInternetZoneManager IInternetZoneManager;
+typedef struct ILayoutStorage ILayoutStorage;
+typedef struct ILockBytes ILockBytes;
+typedef struct IMLangCodePages IMLangCodePages;
+typedef struct IMLangConvertCharset IMLangConvertCharset;
+typedef struct IMLangFontLink IMLangFontLink;
+typedef struct IMLangLineBreakConsole IMLangLineBreakConsole;
+typedef struct IMLangString IMLangString;
+typedef struct IMLangStringAStr IMLangStringAStr;
+typedef struct IMLangStringBufA IMLangStringBufA;
+typedef struct IMLangStringBufW IMLangStringBufW;
+typedef struct IMLangStringWStr IMLangStringWStr;
+typedef struct IMalloc IMalloc;
+typedef struct IMallocSpy IMallocSpy;
+typedef struct IMapMIMEToCLSID IMapMIMEToCLSID;
+typedef struct IMarshal IMarshal;
+typedef struct IMarshal2 IMarshal2;
+typedef struct IMessageFilter IMessageFilter;
+typedef struct IMimeInfo IMimeInfo;
+typedef struct IMoniker IMoniker;
+typedef struct IMonikerProp IMonikerProp;
+typedef struct IMultiLanguage IMultiLanguage;
+typedef struct IMultiQI IMultiQI;
+typedef struct IObjectIdentity IObjectIdentity;
+typedef struct IObjectSafety IObjectSafety;
+typedef struct IObjectWithSite IObjectWithSite;
+typedef struct IOleAdviseHolder IOleAdviseHolder;
+typedef struct IOleCache IOleCache;
+typedef struct IOleCache2 IOleCache2;
+typedef struct IOleCacheControl IOleCacheControl;
+typedef struct IOleClientSite IOleClientSite;
+typedef struct IOleCommandTarget IOleCommandTarget;
+typedef struct IOleContainer IOleContainer;
+typedef struct IOleControl IOleControl;
+typedef struct IOleControlSite IOleControlSite;
+typedef struct IOleDocument IOleDocument;
+typedef struct IOleDocumentSite IOleDocumentSite;
+typedef struct IOleDocumentView IOleDocumentView;
+typedef struct IOleInPlaceActiveObject IOleInPlaceActiveObject;
+typedef struct IOleInPlaceFrame IOleInPlaceFrame;
+typedef struct IOleInPlaceObject IOleInPlaceObject;
+typedef struct IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless;
+typedef struct IOleInPlaceSite IOleInPlaceSite;
+typedef struct IOleInPlaceSiteEx IOleInPlaceSiteEx;
+typedef struct IOleInPlaceSiteWindowless IOleInPlaceSiteWindowless;
+typedef struct IOleInPlaceUIWindow IOleInPlaceUIWindow;
+typedef struct IOleItemContainer IOleItemContainer;
+typedef struct IOleLink IOleLink;
+typedef struct IOleObject IOleObject;
+typedef struct IOleParentUndoUnit IOleParentUndoUnit;
+typedef struct IOleUndoManager IOleUndoManager;
+typedef struct IOleUndoUnit IOleUndoUnit;
+typedef struct IOleWindow IOleWindow;
+typedef struct IOmHistory IOmHistory;
+typedef struct IOmNavigator IOmNavigator;
+typedef struct IOplockStorage IOplockStorage;
+typedef struct IPSFactoryBuffer IPSFactoryBuffer;
+typedef struct IParseDisplayName IParseDisplayName;
+typedef struct IPerPropertyBrowsing IPerPropertyBrowsing;
+typedef struct IPersist IPersist;
+typedef struct IPersistFile IPersistFile;
+typedef struct IPersistFolder IPersistFolder;
+typedef struct IPersistFolder2 IPersistFolder2;
+typedef struct IPersistHistory IPersistHistory;
+typedef struct IPersistMemory IPersistMemory;
+typedef struct IPersistMoniker IPersistMoniker;
+typedef struct IPersistPropertyBag IPersistPropertyBag;
+typedef struct IPersistPropertyBag2 IPersistPropertyBag2;
+typedef struct IPersistStorage IPersistStorage;
+typedef struct IPersistStream IPersistStream;
+typedef struct IPersistStreamInit IPersistStreamInit;
+typedef struct IPicture IPicture;
+typedef struct IPictureDisp IPictureDisp;
+typedef struct IPipeByte IPipeByte;
+typedef struct IPipeDouble IPipeDouble;
+typedef struct IPipeLong IPipeLong;
+typedef struct IPointerInactive IPointerInactive;
+typedef struct IPrint IPrint;
+typedef struct IProgressNotify IProgressNotify;
+typedef struct IPropertyBag IPropertyBag;
+typedef struct IPropertyBag2 IPropertyBag2;
+typedef struct IPropertyNotifySink IPropertyNotifySink;
+typedef struct IPropertyPage IPropertyPage;
+typedef struct IPropertyPage2 IPropertyPage2;
+typedef struct IPropertyPageSite IPropertyPageSite;
+typedef struct IPropertySetStorage IPropertySetStorage;
+typedef struct IPropertyStorage IPropertyStorage;
+typedef struct IProvideClassInfo IProvideClassInfo;
+typedef struct IProvideClassInfo2 IProvideClassInfo2;
+typedef struct IProvideMultipleClassInfo IProvideMultipleClassInfo;
+typedef struct IQuickActivate IQuickActivate;
+typedef struct IROTData IROTData;
+typedef struct IRecordInfo IRecordInfo;
+typedef struct IReleaseMarshalBuffers IReleaseMarshalBuffers;
+typedef struct IRootStorage IRootStorage;
+typedef struct IRpcChannelBuffer IRpcChannelBuffer;
+typedef struct IRpcChannelBuffer2 IRpcChannelBuffer2;
+typedef struct IRpcChannelBuffer3 IRpcChannelBuffer3;
+typedef struct IRpcHelper IRpcHelper;
+typedef struct IRpcOptions IRpcOptions;
+typedef struct IRpcProxyBuffer IRpcProxyBuffer;
+typedef struct IRpcStubBuffer IRpcStubBuffer;
+typedef struct IRpcSyntaxNegotiate IRpcSyntaxNegotiate;
+typedef struct IRunnableObject IRunnableObject;
+typedef struct IRunningObjectTable IRunningObjectTable;
+typedef struct ISequentialStream ISequentialStream;
+typedef struct IServerSecurity IServerSecurity;
+typedef struct IServiceProvider IServiceProvider;
+typedef struct IShellBrowser IShellBrowser;
+typedef struct IShellDispatch IShellDispatch;
+typedef struct IShellExtInit IShellExtInit;
+typedef struct IShellFolder IShellFolder;
+typedef struct IShellFolderViewDual IShellFolderViewDual;
+typedef struct IShellLinkA IShellLinkA;
+typedef struct IShellLinkDual IShellLinkDual;
+typedef struct IShellLinkW IShellLinkW;
+typedef struct IShellPropSheetExt IShellPropSheetExt;
+typedef struct IShellUIHelper IShellUIHelper;
+typedef struct IShellView IShellView;
+typedef struct IShellView2 IShellView2;
+typedef struct IShellWindows IShellWindows;
+typedef struct ISimpleFrameSite ISimpleFrameSite;
+typedef struct ISoftDistExt ISoftDistExt;
+typedef struct ISpecifyPropertyPages ISpecifyPropertyPages;
+typedef struct IStdMarshalInfo IStdMarshalInfo;
+typedef struct IStorage IStorage;
+typedef struct IStream IStream;
+typedef struct ISubscriptionMgr ISubscriptionMgr;
+typedef struct ISupportErrorInfo ISupportErrorInfo;
+typedef struct ISurrogate ISurrogate;
+typedef struct ISynchronize ISynchronize;
+typedef struct ISynchronizeContainer ISynchronizeContainer;
+typedef struct ISynchronizeEvent ISynchronizeEvent;
+typedef struct ISynchronizeHandle ISynchronizeHandle;
+typedef struct ISynchronizeMutex ISynchronizeMutex;
+typedef struct IThumbnailExtractor IThumbnailExtractor;
+typedef struct ITimeAndNoticeControl ITimeAndNoticeControl;
+typedef struct ITimer ITimer;
+typedef struct ITimerService ITimerService;
+typedef struct ITimerSink ITimerSink;
+typedef struct ITypeChangeEvents ITypeChangeEvents;
+typedef struct ITypeComp ITypeComp;
+typedef struct ITypeFactory ITypeFactory;
+typedef struct ITypeInfo ITypeInfo;
+typedef struct ITypeInfo2 ITypeInfo2;
+typedef struct ITypeLib ITypeLib;
+typedef struct ITypeLib2 ITypeLib2;
+typedef struct ITypeMarshal ITypeMarshal;
+typedef struct IUnknown IUnknown;
+typedef struct IUrlHistoryNotify IUrlHistoryNotify;
+typedef struct IUrlHistoryStg IUrlHistoryStg;
+typedef struct IUrlHistoryStg2 IUrlHistoryStg2;
+typedef struct IUrlMon IUrlMon;
+typedef struct IVariantChangeType IVariantChangeType;
+typedef struct IViewObject IViewObject;
+typedef struct IViewObject2 IViewObject2;
+typedef struct IViewObjectEx IViewObjectEx;
+typedef struct IWaitMultiple IWaitMultiple;
+typedef struct IWebBrowser IWebBrowser;
+typedef struct IWebBrowser2 IWebBrowser2;
+typedef struct IWebBrowserApp IWebBrowserApp;
+typedef struct IWinInetHttpInfo IWinInetHttpInfo;
+typedef struct IWinInetInfo IWinInetInfo;
+typedef struct IWindowForBindingUI IWindowForBindingUI;
+typedef struct IWrappedProtocol IWrappedProtocol;
+typedef struct IXMLAttribute IXMLAttribute;
+typedef struct IXMLDOMAttribute IXMLDOMAttribute;
+typedef struct IXMLDOMCDATASection IXMLDOMCDATASection;
+typedef struct IXMLDOMCharacterData IXMLDOMCharacterData;
+typedef struct IXMLDOMComment IXMLDOMComment;
+typedef struct IXMLDOMDocument IXMLDOMDocument;
+typedef struct IXMLDOMDocumentFragment IXMLDOMDocumentFragment;
+typedef struct IXMLDOMDocumentType IXMLDOMDocumentType;
+typedef struct IXMLDOMElement IXMLDOMElement;
+typedef struct IXMLDOMEntity IXMLDOMEntity;
+typedef struct IXMLDOMEntityReference IXMLDOMEntityReference;
+typedef struct IXMLDOMImplementation IXMLDOMImplementation;
+typedef struct IXMLDOMNamedNodeMap IXMLDOMNamedNodeMap;
+typedef struct IXMLDOMNode IXMLDOMNode;
+typedef struct IXMLDOMNodeList IXMLDOMNodeList;
+typedef struct IXMLDOMNotation IXMLDOMNotation;
+typedef struct IXMLDOMParseError IXMLDOMParseError;
+typedef struct IXMLDOMProcessingInstruction IXMLDOMProcessingInstruction;
+typedef struct IXMLDOMText IXMLDOMText;
+typedef struct IXMLDSOControl IXMLDSOControl;
+typedef struct IXMLDocument IXMLDocument;
+typedef struct IXMLDocument2 IXMLDocument2;
+typedef struct IXMLElement IXMLElement;
+typedef struct IXMLElement2 IXMLElement2;
+typedef struct IXMLElementCollection IXMLElementCollection;
+typedef struct IXMLError IXMLError;
+typedef struct IXMLHttpRequest IXMLHttpRequest;
+typedef struct IXTLRuntime IXTLRuntime;
+typedef struct OLEDBSimpleProvider OLEDBSimpleProvider;
+typedef struct OLEDBSimpleProviderListener OLEDBSimpleProviderListener;
+typedef struct XMLDOMDocumentEvents XMLDOMDocumentEvents;
+
+typedef struct DOMDocument DOMDocument;
+typedef struct DOMFreeThreadedDocument DOMFreeThreadedDocument;
+typedef struct XMLDSOControl XMLDSOControl;
+typedef struct XMLDocument XMLDocument;
+typedef struct XMLHTTPRequest XMLHTTPRequest;
diff --git a/libmsi/winstubs/winuser.h b/libmsi/winstubs/winuser.h
new file mode 100644
index 0000000..2241efe
--- /dev/null
+++ b/libmsi/winstubs/winuser.h
@@ -0,0 +1,14 @@
+#ifndef _WINUSER_
+#define _WINUSER_
+
+#include <_mingw_unicode.h>
+
+#define wvsprintf __MINGW_NAME_AW(wvsprintf)
+#define wsprintf __MINGW_NAME_AW(wsprintf)
+
+int WINAPI wvsprintfA(LPSTR,LPCSTR,va_list arglist);
+int WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list arglist);
+int WINAPIV wsprintfA(LPSTR,LPCSTR,...);
+int WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
+
+#endif