aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/w32api/ChangeLog112
-rw-r--r--winsup/w32api/include/lmcons.h4
-rw-r--r--winsup/w32api/include/nddeapi.h4
-rw-r--r--winsup/w32api/include/oaidl.h63
-rw-r--r--winsup/w32api/include/odbcinst.h4
-rw-r--r--winsup/w32api/include/raserror.h2
-rw-r--r--winsup/w32api/include/richedit.h10
-rw-r--r--winsup/w32api/include/setupapi.h1550
-rw-r--r--winsup/w32api/include/shlobj.h38
-rw-r--r--winsup/w32api/include/winbase.h1
-rw-r--r--winsup/w32api/include/winioctl.h6
-rw-r--r--winsup/w32api/include/winnt.h2
-rw-r--r--winsup/w32api/include/winsock2.h11
-rw-r--r--winsup/w32api/include/wtypes.h3
-rw-r--r--winsup/w32api/lib/setupapi.def375
-rw-r--r--winsup/w32api/lib/test.c2
16 files changed, 2133 insertions, 54 deletions
diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog
index a5750be..46c25dd 100644
--- a/winsup/w32api/ChangeLog
+++ b/winsup/w32api/ChangeLog
@@ -1,4 +1,76 @@
-2001-08-10 Danny Smith <dannysmith@users.sourceforge.net>
+2001-08-21 Earnie Boyd <earnie@SF.Net>
+
+ * include/setupapi.h: Formatting.
+
+2001-08-21 Earnie Boyd <earnie@SF.Net>
+
+ * include/shlobj.h: Remove \r from the line endings.
+
+2001-08-21 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/setupapi.h : New file.
+ * lib/setupapi.def:New file.
+ * lib/test.c: Include setupapi.h.
+
+2001-08-21 Danny Smith <dannysmith@users.sourceforge.net>
+ * include/winioctl.h (_DISK_PERFORMANCE): Correct typo.
+
+2001-08-21 Mattia Barbon <mbarbon@dsi.unive.it>
+
+ * include/richedit.h (ENLINK): Add structure definition.
+ (EM_AUTOURLDETECT, EN_LINK, ENM_LINK): Add defines.
+
+2001-08-21 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/shlobj.h (CMIC_*): Remove duplicate defines.
+ (CMDSTR_*): Remove duplicates; UNICODE string constants.
+ (GCS_*): Make UNICODE.
+ (CSIDL_*): Add more defines.
+ * include/winioctl.h (_MEDIA_TYPE): Add pointer typedef.
+ (_DISK_GEOMETRY): Ditto.
+ (_DISK_PERFORMANCE): Ditto.
+ * include/winbase.h (HasOverlappedIoCompleted): Add macro.
+
+2001-08-15 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/winnt.h: Move CHAR, SHORT and LONG typedefs outside
+ of block protected by #ifndef VOID.
+ (This reverts 1998-12-01 Anders Norlander change.)
+ * include/odbcinst.h: End file with newline.
+ * include/raserror.h: Ditto.
+
+2001-08-15 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/winsock2.h (#include <wtypes.h): Don't.
+ (_BLOB): Define instead, if not already done.
+ (__BLOB_T_DEFINED: New define for guarding _BLOB.
+ * include/wtypes.h (_BLOB): Guard against prior definition.
+
+2001-08-15 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/oaidl.h (tagVARIANT): Mark anonymous structs and unions
+ as __extension__.
+ (tagTYPEDESC): Ditto.
+ (_wireBRECORD): Add structure definition.
+ (_wireSAFEARR_BRECORD): Ditto.
+ (_wireSAFEARR_HAVEIID): Ditto.
+ (_wireSAFEARRAY_UNION.u): Add fields SAFEARR_BRECORD RecordStr,
+ SAFEARR_HAVEIID HaveIidStr.
+ (tagVariant): Add fields _VARIANT_BOOL bool,*pbool.
+ (_wireVARIANT): Change field parray to type wirePSAFEARRAY,
+ pparray to wirePSAFEARRAY*.
+ (_wireVARIANT): Add field wireBRECORD brecVal.
+ (wireVARIANT): Change typedef to struct _wireVariant*.
+ (IRecordInfo): Add interface definition.
+ (LPRECORDINFO): Add typedef for IRecordInfo*.
+ (IID_IRecordInfo): Add forward decalaration.
+
+2001-08-15 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/lmcons.h: Guard CNLEN and UNCLEN against prior definition.
+ * include/nddeapi.h: Likewise.
+
+2001-08-10 Danny Smith <dannysmith@users.sourceforge.net>
* lib/test.c (Win32_Winsock): Replace with __USE_W32_SOCKETS.
Add more includes of w32api headers.
@@ -8,26 +80,26 @@
* include/winnt.h (GetCurrentFiber): Change __inline to __inline__.
Swap asm code with that of GetFiberData.
(GetFiberData): Ditto.
- * lib/kernels.c: New file, containing library versions of
+ * lib/kernel32.c: New file, containing library versions of
GetCurrentFiber and GetFiberData.
* lib/makefile.in: Add kernel32.o as static object to libkernal32.a.
-2001-08-08 Danny Smith <dannysmith@users.sourceforge.net>
+2001-08-08 Danny Smith <dannysmith@users.sourceforge.net>
* include/winuser.h (GET_WHEEL_DELTA_WPARAM): Add macro.
Thanks to: Harold Hunt <Harold@compasstechnologies.com>.
-2001-08-08 Danny Smith <dannysmith@users.sourceforge.net>
+2001-08-08 Danny Smith <dannysmith@users.sourceforge.net>
* lib/oleaut32.def: Regenerate.
-2001-08-04 Danny Smith <dannysmith@users.sourceforge.net>
+2001-08-04 Danny Smith <dannysmith@users.sourceforge.net>
* include/wtypes.h (DECIMAL_SETZERO): Correct typo.
-2001-08-02 Danny Smith <dannysmith@users.sourceforge.net>
+2001-08-02 Danny Smith <dannysmith@users.sourceforge.net>
- Apply Dmitry Bely <dbely@mail.ru> patch 437834 (with additions).
+ Apply Dmitry Bely <dbely@mail.ru> patch 437834 (with additions).
* include/oleidl.h (ISupportErrorInfo, ICreateInfo): Move from here
* include/oaidl.h: ... to here.
* include/oaidl.h ICreateErrorInfo): Add interface definition.
@@ -35,16 +107,16 @@
(LPSUPPORTERRORINFO): Add typedef.
(IID_ISupportErrorInfo): Change forward decl. of type to IID.
-2001-08-02 Danny Smith <dannysmith@users.sourceforge.net>
+2001-08-02 Danny Smith <dannysmith@users.sourceforge.net>
* include/winsock2.h (WSAGET* and WSAMAKE*): Remove duplicate
defines.
-2001-07-30 Danny Smith <dannysmith@users.sourceforge.net>
+2001-07-30 Danny Smith <dannysmith@users.sourceforge.net>
* include/commctrl.h (TreeView_SetIndent): Correct typo.
-2001-07-30 Danny Smith <dannysmith@users.sourceforge.net>
+2001-07-30 Danny Smith <dannysmith@users.sourceforge.net>
* include/commctrl.h (TBSTYPE_FLAT): Remove define.
Thanks to: Jason Craig <jacraig@softhome.net>
@@ -60,37 +132,37 @@
(tagNMTVCUSTOMDRAW): Likewise.
(tagNMLVCACHEHINT): Likewise.
-2001-07-06 Danny Smith <dannysmith@users.sourceforge.net>
+2001-07-06 Danny Smith <dannysmith@users.sourceforge.net>
* include/basetsd.h (#include <_mingw.h>): Remove.
(__int64): Define.
-2001-06-28 Danny Smith <dannysmith@users.sourceforge.net>
+2001-06-28 Danny Smith <dannysmith@users.sourceforge.net>
* include/wingdi.h (AC_SRC_OVER): Add define.
(struct _BLENDFUNCTION): Add.
-2001-06-28 Danny Smith <dannysmith@users.sourceforge.net>
+2001-06-28 Danny Smith <dannysmith@users.sourceforge.net>
* include/shlobj.h: Add BIF_* defines.
-2001-06-27 Danny Smith <dannysmith@users.sourceforge.net>
+2001-06-27 Danny Smith <dannysmith@users.sourceforge.net>
* include/winerror.h (E_PENDING): Add error code define.
-2001-06-27 Danny Smith <dannysmith@users.sourceforge.net>
+2001-06-27 Danny Smith <dannysmith@users.sourceforge.net>
* include/basetsd.h (#include <_mingw.h>): Add directive.
-2001-06-25 Danny Smith <dannysmith@users.sourceforge.net>
+2001-06-25 Danny Smith <dannysmith@users.sourceforge.net>
- * include/winbase.h(InterlockedCompareExchange): Change args
+ * include/winbase.h (InterlockedCompareExchange): Change args
and return value from PVOID to LONG.
(InterlockedExchange): Change first arg to LPLONG.
(InterlockedCompareExchangePointer): New macro.
(InterlockedExchangePointer): New macro.
-2001-06-19 Danny Smith <dannysmith@users.sourceforge.net>
+2001-06-19 Danny Smith <dannysmith@users.sourceforge.net>
* lib/kernel32.def: Add LanguageGroup and UILanguage symbols.
Thanks to Kevin Chase <kevincha99@hotmail.com>.
@@ -100,7 +172,7 @@
* objidl.h (IMalloc::ReAlloc()): Correct declaration.
(IMalloc::Free()): Ditto.
-2001-06-11 Danny Smith <dannysmith@users.sourceforge.net>
+2001-06-11 Danny Smith <dannysmith@users.sourceforge.net>
* include/shlobj.h (REGSTR_PATH_EXPLORER): Unicode it.
(REGSTR_PATH_SPECIAL_FOLDERS): Ditto.
@@ -185,7 +257,7 @@ Mon Apr 23 13:17:32 2001 Christopher Faylor <cgf@cygnus.com>
* include/winnt.h: Ditto.
* include/wtypes.h: Ditto.
-2001-04-11 Danny Smith <dannysmith@users.sourceforge.net>
+2001-04-11 Danny Smith <dannysmith@users.sourceforge.net>
* include/windows.h (#include <winsock.h>): Include <winsock2.h>
instead if (_WIN32_WINNT >= 0x0400)&&(__W32API_MAJOR_VERSION > 0).
diff --git a/winsup/w32api/include/lmcons.h b/winsup/w32api/include/lmcons.h
index 1adde20..c82837f 100644
--- a/winsup/w32api/include/lmcons.h
+++ b/winsup/w32api/include/lmcons.h
@@ -8,7 +8,10 @@
#define API_RET_TYPE NET_API_STATUS
#define MIN_LANMAN_MESSAGE_ID NERR_BASE
#define MAX_LANMAN_MESSAGE_ID 5799
+#ifndef CNLEN /* also in nddeapi.h */
#define CNLEN 15
+#define UNCLEN (CNLEN + 2)
+#endif
#define DNLEN 15
#define LM20_CNLEN 15
#define LM20_DNLEN 15
@@ -17,7 +20,6 @@
#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
diff --git a/winsup/w32api/include/nddeapi.h b/winsup/w32api/include/nddeapi.h
index a4dc03b..1648b62 100644
--- a/winsup/w32api/include/nddeapi.h
+++ b/winsup/w32api/include/nddeapi.h
@@ -3,8 +3,10 @@
#ifdef __cplusplus
extern "C" {
#endif
+#ifndef CNLEN /* also in lmcons.h */
#define CNLEN 15
-#define UNCLEN 17
+#define UNCLEN (CNLEN + 2)
+#endif
#define SEP_CHAR ','
#define BAR_CHAR "|"
#define SEP_WCHAR L','
diff --git a/winsup/w32api/include/oaidl.h b/winsup/w32api/include/oaidl.h
index 2c71480..b42c3cd 100644
--- a/winsup/w32api/include/oaidl.h
+++ b/winsup/w32api/include/oaidl.h
@@ -61,6 +61,7 @@ typedef interface IDispatch *LPDISPATCH;
typedef interface IEnumVARIANT *LPENUMVARIANT;
typedef interface ICreateErrorInfo *LPCREATEERRORINFO;
typedef interface ISupportErrorInfo *LPSUPPORTERRORINFO;
+typedef interface IRecordInfo *LPRECORDINFO;
extern const IID IID_ITypeLib;
extern const IID IID_ICreateTypeInfo;
@@ -73,6 +74,7 @@ extern const IID IID_IDispatch;
extern const IID IID_IEnumVARIANT;
extern const IID IID_ICreateErrorInfo;
extern const IID IID_ISupportErrorInfo;
+extern const IID IID_IRecordInfo;
typedef enum tagSYSKIND {
SYS_WIN16,SYS_WIN32,SYS_MAC
@@ -122,6 +124,21 @@ typedef enum tagSF_TYPE {
SF_DISPATCH=VT_DISPATCH,
SF_VARIANT=VT_VARIANT
}SF_TYPE;
+typedef struct _wireBRECORD {
+ ULONG fFlags;
+ ULONG clSize;
+ LPRECORDINFO* pRecInfo;
+ byte* pRecord;
+} *wireBRECORD;
+typedef struct _wireSAFEARR_BRECORD {
+ ULONG Size;
+ wireBRECORD* aRecord;
+ } SAFEARR_BRECORD;
+typedef struct _wireSAFEARR_HAVEIID {
+ ULONG Size;
+ IUnknown** apUnknown;
+ IID iid;
+ } SAFEARR_HAVEIID;
typedef struct _wireSAFEARRAY_UNION {
ULONG sfType;
union {
@@ -129,6 +146,8 @@ typedef struct _wireSAFEARRAY_UNION {
SAFEARR_UNKNOWN UnknownStr;
SAFEARR_DISPATCH DispatchStr;
SAFEARR_VARIANT VariantStr;
+ SAFEARR_BRECORD RecordStr;
+ SAFEARR_HAVEIID HaveIidStr;
BYTE_SIZEDARR ByteStr;
WORD_SIZEDARR WordStr;
DWORD_SIZEDARR LongStr;
@@ -153,13 +172,13 @@ typedef struct tagSAFEARRAY {
SAFEARRAYBOUND rgsabound[1];
}SAFEARRAY,*LPSAFEARRAY;
typedef struct tagVARIANT {
- union {
- struct __tagVARIANT {
+ _ANONYMOUS_UNION union {
+ struct __tagVARIANT {
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
- union {
+ _ANONYMOUS_UNION union {
long lVal;
unsigned char bVal;
short iVal;
@@ -179,6 +198,7 @@ typedef struct tagVARIANT {
float *pfltVal;
double *pdblVal;
VARIANT_BOOL *pboolVal;
+ _VARIANT_BOOL *pbool;
SCODE *pscode;
CY *pcyVal;
DATE *pdate;
@@ -199,7 +219,7 @@ typedef struct tagVARIANT {
ULONG *pulVal;
INT *pintVal;
UINT *puintVal;
- struct {
+ _ANONYMOUS_STRUCT struct {
PVOID pvRecord;
struct IRecordInfo *pRecInfo;
} __VARIANT_NAME_4;
@@ -230,7 +250,8 @@ typedef struct _wireVARIANT {
wireBSTR bstrVal;
IUnknown *punkVal;
LPDISPATCH pdispVal;
- wireSAFEARRAY parray;
+ wirePSAFEARRAY parray;
+ wireBRECORD brecVal;
BYTE *pbVal;
SHORT *piVal;
LONG *plVal;
@@ -243,7 +264,7 @@ typedef struct _wireVARIANT {
wireBSTR *pbstrVal;
IUnknown **ppunkVal;
LPDISPATCH *ppdispVal;
- wireSAFEARRAY *pparray;
+ wirePSAFEARRAY *pparray;
struct _wireVARIANT *pvarVal;
CHAR cVal;
USHORT uiVal;
@@ -258,7 +279,7 @@ typedef struct _wireVARIANT {
INT *pintVal;
UINT *puintVal;
} DUMMYUNIONNAME;
-} wireVARIANT;
+} *wireVARIANT;
typedef LONG DISPID;
typedef DISPID MEMBERID;
typedef DWORD HREFTYPE;
@@ -267,7 +288,7 @@ typedef enum tagTYPEKIND {
TKIND_COCLASS,TKIND_ALIAS,TKIND_UNION,TKIND_MAX
}TYPEKIND;
typedef struct tagTYPEDESC {
- union {
+ _ANONYMOUS_UNION union {
struct tagTYPEDESC *lptdesc;
struct tagARRAYDESC *lpadesc;
HREFTYPE hreftype;
@@ -549,6 +570,32 @@ DECLARE_INTERFACE_(ISupportErrorInfo, IUnknown)
STDMETHOD(InterfaceSupportsErrorInfo)(THIS_ REFIID) PURE;
};
+EXTERN_C const IID IID_IRecordInfo;
+#undef INTERFACE
+#define INTERFACE IRecordInfo
+DECLARE_INTERFACE_(IRecordInfo, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(RecordInit)(THIS_ PVOID) PURE;
+ STDMETHOD(RecordClear)(THIS_ PVOID) PURE;
+ STDMETHOD(RecordCopy)(THIS_ PVOID, PVOID) PURE;
+ STDMETHOD(GetGuid)(THIS_ GUID*) PURE;
+ STDMETHOD(GetName)(THIS_ BSTR*) PURE;
+ STDMETHOD(GetSize)(THIS_ ULONG*) PURE;
+ STDMETHOD(GetTypeInfo)(THIS_ ITypeInfo**) PURE;
+ STDMETHOD(GetField)(THIS_ PVOID,LPCOLESTR,VARIANT*) PURE;
+ STDMETHOD(GetFieldNoCopy)(THIS_ PVOID,LPCOLESTR,VARIANT*,PVOID*) PURE;
+ STDMETHOD(PutField )(THIS_ ULONG,PVOID,LPCOLESTR, VARIANT*) PURE;
+ STDMETHOD(PutFieldNoCopy)(THIS_ ULONG,PVOID,LPCOLESTR,VARIANT*) PURE;
+ STDMETHOD(GetFieldNames)(THIS_ ULONG*,BSTR*) PURE;
+ STDMETHOD_(BOOL,IsMatchingType)(THIS_ THIS) PURE;
+ STDMETHOD_(PVOID,RecordCreate)(THIS) PURE;
+ STDMETHOD(RecordCreateCopy)(THIS_ PVOID,PVOID*) PURE;
+ STDMETHOD(RecordDestroy )(THIS_ PVOID) PURE;
+};
+
#ifdef __cplusplus
}
#endif
diff --git a/winsup/w32api/include/odbcinst.h b/winsup/w32api/include/odbcinst.h
index a62e8dd..449e781 100644
--- a/winsup/w32api/include/odbcinst.h
+++ b/winsup/w32api/include/odbcinst.h
@@ -141,5 +141,5 @@ BOOL INSTAPI SQLWriteFileDSNW(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR);
#endif /* RC_INVOKED */
#ifdef __cplusplus
}
-#endif
-#endif /* _ODBCINST_H */ \ No newline at end of file
+#endif
+#endif /* _ODBCINST_H */
diff --git a/winsup/w32api/include/raserror.h b/winsup/w32api/include/raserror.h
index a5f7fe8..54d11f7 100644
--- a/winsup/w32api/include/raserror.h
+++ b/winsup/w32api/include/raserror.h
@@ -203,4 +203,4 @@
#define ERROR_CONNECTING_DEVICE_NOT_FOUND (RASBASE+197)
#define ERROR_NO_EAPTLS_CERTIFICATE (RASBASE+198)
#define RASBASEEND (RASBASE+198)
-#endif /* _RASERROR_H */ \ No newline at end of file
+#endif /* _RASERROR_H */
diff --git a/winsup/w32api/include/richedit.h b/winsup/w32api/include/richedit.h
index 1bbac22..67c159b 100644
--- a/winsup/w32api/include/richedit.h
+++ b/winsup/w32api/include/richedit.h
@@ -132,6 +132,7 @@ extern "C" {
#define EM_GETREDONAME (WM_USER+87)
#define EM_STOPGROUPTYPING (WM_USER+88)
#define EM_GETTEXTLENGTHEX (WM_USER+95)
+#define EM_AUTOURLDETECT (WM_USER+91)
#define EM_SETLANGOPTIONS (WM_USER+120)
#define EM_GETLANGOPTIONS (WM_USER+121)
#define EM_GETIMECOMPMODE (WM_USER+122)
@@ -144,6 +145,7 @@ extern "C" {
#define EN_CORRECTTEXT 1797
#define EN_DROPFILES 1795
#define EN_IMECHANGE 1799
+#define EN_LINK 1803
#define EN_MSGFILTER 1792
#define EN_OLEOPFAILED 1801
#define EN_PROTECTED 1796
@@ -162,6 +164,7 @@ extern "C" {
#define ENM_SCROLL 4
#define ENM_SELCHANGE 524288
#define ENM_UPDATE 2
+#define ENM_LINK 67108864
#define ECO_AUTOWORDSELECTION 1
#define ECO_AUTOVSCROLL 64
#define ECO_AUTOHSCROLL 128
@@ -273,6 +276,13 @@ typedef struct _endropfiles {
LONG cp;
BOOL fProtected;
} ENDROPFILES;
+typedef struct _enlink {
+ NMHDR nmhdr;
+ UINT msg;
+ WPARAM wParam;
+ LPARAM lParam;
+ CHARRANGE chrg;
+} ENLINK;
typedef struct {
NMHDR nmhdr;
LONG iob;
diff --git a/winsup/w32api/include/setupapi.h b/winsup/w32api/include/setupapi.h
new file mode 100644
index 0000000..a40c75c
--- /dev/null
+++ b/winsup/w32api/include/setupapi.h
@@ -0,0 +1,1550 @@
+#ifndef _SETUPAPI_H_
+#define _SETUPAPI_H_
+
+#include <commctrl.h>
+#include <pshpack1.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define WINSETUPAPI DECLSPEC_IMPORT
+
+#define LINE_LEN 256
+#define MAX_INF_STRING_LENGTH 4096
+#define MAX_TITLE_LEN 60
+#define MAX_INSTRUCTION_LEN 256
+#define MAX_LABEL_LEN 30
+#define MAX_SERVICE_NAME_LEN 256
+#define MAX_SUBTITLE_LEN 256
+#define SP_MAX_MACHINENAME_LENGTH (MAX_PATH + 3)
+
+#define COPYFLG_WARN_IF_SKIP 0x00000001
+#define COPYFLG_NOSKIP 0x00000002
+#define COPYFLG_NOVERSIONCHECK 0x00000004
+#define COPYFLG_FORCE_FILE_IN_USE 0x00000008
+#define COPYFLG_NO_OVERWRITE 0x00000010
+#define COPYFLG_NO_VERSION_DIALOG 0x00000020
+#define COPYFLG_OVERWRITE_OLDER_ONLY 0x00000040
+#define COPYFLG_REPLACEONLY 0x00000400
+#define COPYFLG_NODECOMP 0x00000800
+#define COPYFLG_REPLACE_BOOT_FILE 0x00001000
+#define COPYFLG_NOPRUNE 0x00002000
+#define DELFLG_IN_USE 0x00000001
+#define DELFLG_IN_USE1 0x00010000
+#define DI_REMOVEDEVICE_GLOBAL 0x00000001
+#define DI_REMOVEDEVICE_CONFIGSPECIFIC 0x00000002
+#define DI_UNREMOVEDEVICE_CONFIGSPECIFIC 0x00000002
+#define DI_SHOWOEM 0x00000001
+#define DI_SHOWCOMPAT 0x00000002
+#define DI_SHOWCLASS 0x00000004
+#define DI_SHOWALL 0x00000007
+#define DI_NOVCP 0x00000008
+#define DI_DIDCOMPAT 0x00000010
+#define DI_DIDCLASS 0x00000020
+#define DI_AUTOASSIGNRES 0x00000040
+#define DI_NEEDRESTART 0x00000080
+#define DI_NEEDREBOOT 0x00000100
+#define DI_NOBROWSE 0x00000200
+#define DI_MULTMFGS 0x00000400
+#define DI_DISABLED 0x00000800
+#define DI_GENERALPAGE_ADDED 0x00001000
+#define DI_RESOURCEPAGE_ADDED 0x00002000
+#define DI_PROPERTIES_CHANGE 0x00004000
+#define DI_INF_IS_SORTED 0x00008000
+#define DI_ENUMSINGLEINF 0x00010000
+#define DI_DONOTCALLCONFIGMG 0x00020000
+#define DI_INSTALLDISABLED 0x00040000
+#define DI_COMPAT_FROM_CLASS 0x00080000
+#define DI_CLASSINSTALLPARAMS 0x00100000
+#define DI_NODI_DEFAULTACTION 0x00200000
+#define DI_QUIETINSTALL 0x00800000
+#define DI_NOFILECOPY 0x01000000
+#define DI_FORCECOPY 0x02000000
+#define DI_DRIVERPAGE_ADDED 0x04000000
+#define DI_USECI_SELECTSTRINGS 0x08000000
+#define DI_OVERRIDE_INFFLAGS 0x10000000
+#define DI_PROPS_NOCHANGEUSAGE 0x20000000
+#define DI_NOSELECTICONS 0x40000000
+#define DI_NOWRITE_IDS 0x80000000
+#define DI_FLAGSEX_USEOLDINFSEARCH 0x00000001
+#define DI_FLAGSEX_AUTOSELECTRANK0 0x00000002
+#define DI_FLAGSEX_CI_FAILED 0x00000004
+#define DI_FLAGSEX_DIDINFOLIST 0x00000010
+#define DI_FLAGSEX_DIDCOMPATINFO 0x00000020
+#define DI_FLAGSEX_FILTERCLASSES 0x00000040
+#define DI_FLAGSEX_SETFAILEDINSTALL 0x00000080
+#define DI_FLAGSEX_DEVICECHANGE 0x00000100
+#define DI_FLAGSEX_ALWAYSWRITEIDS 0x00000200
+#define DI_FLAGSEX_PROPCHANGE_PENDING 0x00000400
+#define DI_FLAGSEX_ALLOWEXCLUDEDDRVS 0x00000800
+#define DI_FLAGSEX_NOUIONQUERYREMOVE 0x00001000
+#define DI_FLAGSEX_USECLASSFORCOMPAT 0x00002000
+#define DI_FLAGSEX_OLDINF_IN_CLASSLIST 0x00004000
+#define DI_FLAGSEX_NO_DRVREG_MODIFY 0x00008000
+#define DI_FLAGSEX_IN_SYSTEM_SETUP 0x00010000
+#define DI_FLAGSEX_INET_DRIVER 0x00020000
+#define DI_FLAGSEX_APPENDDRIVERLIST 0x00040000
+#define DI_FLAGSEX_PREINSTALLBACKUP 0x00080000
+#define DI_FLAGSEX_BACKUPONREPLACE 0x00100000
+#define DI_FLAGSEX_DRIVERLIST_FROM_URL 0x00200000
+#define DI_FLAGSEX_RESERVED1 0x00400000
+#define DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS 0x00800000
+#define DI_FLAGSEX_POWERPAGE_ADDED 0x01000000
+#define DIBCI_NOINSTALLCLASS 0x00000001
+#define DIBCI_NODISPLAYCLASS 0x00000002
+#define DICD_GENERATE_ID 0x00000001
+#define DICD_INHERIT_CLASSDRVS 0x00000002
+#define DICS_ENABLE 1
+#define DICS_FLAG_GLOBAL 1
+#define DICS_DISABLE 2
+#define DICS_FLAG_CONFIGSPECIFIC 2
+#define DICS_PROPCHANGE 3
+#define DICS_START 4
+#define DICS_FLAG_CONFIGGENERAL 4
+#define DICS_STOP 5
+#define DIF_SELECTDEVICE 1
+#define DIF_INSTALLDEVICE 2
+#define DIF_ASSIGNRESOURCES 3
+#define DIF_PROPERTIES 4
+#define DIF_REMOVE 5
+#define DIF_FIRSTTIMESETUP 6
+#define DIF_FOUNDDEVICE 7
+#define DIF_SELECTCLASSDRIVERS 8
+#define DIF_VALIDATECLASSDRIVERS 9
+#define DIF_INSTALLCLASSDRIVERS 10
+#define DIF_CALCDISKSPACE 11
+#define DIF_DESTROYPRIVATEDATA 12
+#define DIF_VALIDATEDRIVER 13
+#define DIF_MOVEDEVICE 14
+#define DIF_DETECT 15
+#define DIF_INSTALLWIZARD 16
+#define DIF_DESTROYWIZARDDATA 17
+#define DIF_PROPERTYCHANGE 18
+#define DIF_ENABLECLASS 19
+#define DIF_DETECTVERIFY 20
+#define DIF_INSTALLDEVICEFILES 21
+#define DIF_UNREMOVE 22
+#define DIF_SELECTBESTCOMPATDRV 23
+#define DIF_ALLOW_INSTALL 24
+#define DIF_REGISTERDEVICE 25
+#define DIF_NEWDEVICEWIZARD_PRESELECT 26
+#define DIF_NEWDEVICEWIZARD_SELECT 27
+#define DIF_NEWDEVICEWIZARD_PREANALYZE 28
+#define DIF_NEWDEVICEWIZARD_POSTANALYZE 29
+#define DIF_NEWDEVICEWIZARD_FINISHINSTALL 30
+#define DIF_UNUSED1 31
+#define DIF_INSTALLINTERFACES 32
+#define DIF_DETECTCANCEL 33
+#define DIF_REGISTER_COINSTALLERS 34
+#define DIF_ADDPROPERTYPAGE_ADVANCED 35
+#define DIF_ADDPROPERTYPAGE_BASIC 36
+#define DIF_RESERVED1 37
+#define DIF_TROUBLESHOOTER 38
+#define DIF_POWERMESSAGEWAKE 39
+#define DIGCF_DEFAULT 0x00000001
+#define DIGCDP_FLAG_BASIC 0x00000001
+#define DIGCF_PRESENT 0x00000002
+#define DIGCDP_FLAG_ADVANCED 0x00000002
+#define DIGCF_ALLCLASSES 0x00000004
+#define DIGCF_PROFILE 0x00000008
+#define DIGCF_DEVICEINTERFACE 0x00000010
+#define DIGCF_INTERFACEDEVICE 0x00000010
+#define DIOCR_INSTALLER 0x00000001
+#define DIOCR_INTERFACE 0x00000002
+#define DIODI_NO_ADD 0x00000001
+#define DIOD_INHERIT_CLASSDRVS 0x00000002
+#define DIOD_CANCEL_REMOVE 0x00000004
+#define DIREG_DEV 0x00000001
+#define DIREG_DRV 0x00000002
+#define DIREG_BOTH 0x00000004
+#define DIRID_ABSOLUTE -1
+#define DIRID_NULL 0
+#define DIRID_SRCPATH 1
+#define DIRID_WINDOWS 10
+#define DIRID_SYSTEM 11
+#define DIRID_DRIVERS 12
+#define DIRID_INF 17
+#define DIRID_HELP 18
+#define DIRID_FONTS 20
+#define DIRID_VIEWERS 21
+#define DIRID_COLOR 23
+#define DIRID_APPS 24
+#define DIRID_SHARED 25
+#define DIRID_BOOT 30
+#define DIRID_SYSTEM16 50
+#define DIRID_SPOOL 51
+#define DIRID_SPOOLDRIVERS 52
+#define DIRID_USERPROFILE 53
+#define DIRID_LOADER 54
+#define DIRID_PRINTPROCESSOR 55
+#define DIRID_COMMON_STARTMENU 16406
+#define DIRID_COMMON_PROGRAMS 16407
+#define DIRID_COMMON_STARTUP 16408
+#define DIRID_COMMON_DESKTOPDIRECTORY 16409
+#define DIRID_COMMON_FAVORITES 16415
+#define DIRID_COMMON_APPDATA 16419
+#define DIRID_PROGRAM_FILES 16422
+#define DIRID_SYSTEM_X86 16425
+#define DIRID_PROGRAM_FILES_X86 16426
+#define DIRID_PROGRAM_FILES_COMMON 16427
+#define DIRID_PROGRAM_FILES_COMMONX86 16428
+#define DIRID_COMMON_TEMPLATES 16429
+#define DIRID_COMMON_DOCUMENTS 16430
+#define DIRID_USER 0x8000
+#define DIRID_ABSOLUTE_16BIT 0xffff
+#define DIRID_IOSUBSYS DIRID_DRIVERS
+#define DIRID_DEFAULT DIRID_SYSTEM
+#define DMI_MASK 0x00000001
+#define DMI_BKCOLOR 0x00000002
+#define DMI_USERECT 0x00000004
+#define DNF_DUPDESC 0x00000001
+#define DNF_OLDDRIVER 0x00000002
+#define DNF_EXCLUDEFROMLIST 0x00000004
+#define DNF_NODRIVER 0x00000008
+#define DNF_LEGACYINF 0x00000010
+#define DNF_CLASS_DRIVER 0x00000020
+#define DNF_COMPATIBLE_DRIVER 0x00000040
+#define DNF_INET_DRIVER 0x00000080
+#define DNF_UNUSED1 0x00000100
+#define DNF_INDEXED_DRIVER 0x00000200
+#define DNF_OLD_INET_DRIVER 0x00000400
+#define DNF_BAD_DRIVER 0x00000800
+#define DNF_DUPPROVIDER 0x00001000
+#define DPROMPT_SUCCESS 0
+#define DPROMPT_CANCEL 1
+#define DPROMPT_SKIPFILE 2
+#define DPROMPT_BUFFERTOOSMALL 3
+#define DPROMPT_OUTOFMEMORY 4
+#define DRIVER_HARDWAREID_RANK 0x00000FFF
+#define DYNAWIZ_FLAG_PAGESADDED 0x00000001
+#define DYNAWIZ_FLAG_INSTALLDET_NEXT 0x00000002
+#define DYNAWIZ_FLAG_INSTALLDET_PREV 0x00000004
+#define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT 0x00000008
+#define ENABLECLASS_QUERY 0
+#define ENABLECLASS_SUCCESS 1
+#define ENABLECLASS_FAILURE 2
+#define ERROR_EXPECTED_SECTION_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
+#define ERROR_BAD_SECTION_NAME_LINE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
+#define ERROR_SECTION_NAME_TOO_LONG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
+#define ERROR_GENERAL_SYNTAX (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
+#define ERROR_WRONG_INF_STYLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
+#define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
+#define ERROR_SECTION_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
+#define ERROR_LINE_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
+#define ERROR_NO_BACKUP (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
+#define ERROR_NO_ASSOCIATED_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
+#define ERROR_CLASS_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
+#define ERROR_DUPLICATE_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
+#define ERROR_NO_DRIVER_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
+#define ERROR_KEY_DOES_NOT_EXIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
+#define ERROR_INVALID_DEVINST_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
+#define ERROR_INVALID_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
+#define ERROR_DEVINST_ALREADY_EXISTS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
+#define ERROR_DEVINFO_NOT_REGISTERED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
+#define ERROR_INVALID_REG_PROPERTY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
+#define ERROR_NO_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
+#define ERROR_NO_SUCH_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
+#define ERROR_CANT_LOAD_CLASS_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
+#define ERROR_INVALID_CLASS_INSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
+#define ERROR_DI_DO_DEFAULT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
+#define ERROR_DI_NOFILECOPY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
+#define ERROR_INVALID_HWPROFILE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
+#define ERROR_NO_DEVICE_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
+#define ERROR_DEVINFO_LIST_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
+#define ERROR_DEVINFO_DATA_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
+#define ERROR_DI_BAD_PATH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
+#define ERROR_NO_CLASSINSTALL_PARAMS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
+#define ERROR_FILEQUEUE_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
+#define ERROR_BAD_SERVICE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
+#define ERROR_NO_CLASS_DRIVER_LIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
+#define ERROR_NO_ASSOCIATED_SERVICE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
+#define ERROR_NO_DEFAULT_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
+#define ERROR_DEVICE_INTERFACE_ACTIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
+#define ERROR_DEVICE_INTERFACE_REMOVED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
+#define ERROR_BAD_INTERFACE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
+#define ERROR_NO_SUCH_INTERFACE_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
+#define ERROR_INVALID_REFERENCE_STRING (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
+#define ERROR_INVALID_MACHINENAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
+#define ERROR_REMOTE_COMM_FAILURE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
+#define ERROR_MACHINE_UNAVAILABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
+#define ERROR_NO_CONFIGMGR_SERVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
+#define ERROR_INVALID_PROPPAGE_PROVIDER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
+#define ERROR_NO_SUCH_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
+#define ERROR_DI_POSTPROCESSING_REQUIRED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
+#define ERROR_INVALID_COINSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
+#define ERROR_NO_COMPAT_DRIVERS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
+#define ERROR_NO_DEVICE_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
+#define ERROR_INVALID_INF_LOGCONFIG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
+#define ERROR_DI_DONT_INSTALL (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
+#define ERROR_INVALID_FILTER_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
+#define ERROR_NON_WINDOWS_NT_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
+#define ERROR_NON_WINDOWS_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
+#define ERROR_NO_CATALOG_FOR_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
+#define ERROR_DEVINSTALL_QUEUE_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
+#define ERROR_NOT_DISABLEABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
+#define ERROR_CANT_REMOVE_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
+#define ERROR_INTERFACE_DEVICE_ACTIVE ERROR_DEVICE_INTERFACE_ACTIVE
+#define ERROR_INTERFACE_DEVICE_REMOVED ERROR_DEVICE_INTERFACE_REMOVED
+#define ERROR_NO_DEFAULT_INTERFACE_DEVICE ERROR_NO_DEFAULT_DEVICE_INTERFACE
+#define ERROR_NO_SUCH_INTERFACE_DEVICE ERROR_NO_SUCH_DEVICE_INTERFACE
+
+#define FILEOP_COPY 0
+#define FILEOP_ABORT 0
+#define FILE_COMPRESSION_NONE 0
+#define FILEOP_RENAME 1
+#define FILEOP_DOIT 1
+#define FILE_COMPRESSION_WINLZA 1
+#define FILEOP_DELETE 2
+#define FILEOP_SKIP 2
+#define FILE_COMPRESSION_MSZIP 2
+#define FILEOP_BACKUP 3
+#define FILE_COMPRESSION_NTCAB 3
+#define FILEOP_NEWPATH 4
+#define FILEOP_RETRY FILEOP_DOIT
+#define FLG_ADDREG_TYPE_SZ 0x00000000
+#define FLG_ADDREG_BINVALUETYPE 0x00000001
+#define FLG_ADDREG_NOCLOBBER 0x00000002
+#define FLG_ADDREG_DELVAL 0x00000004
+#define FLG_ADDREG_APPEND 0x00000008
+#define FLG_ADDREG_KEYONLY 0x00000010
+#define FLG_ADDREG_OVERWRITEONLY 0x00000020
+#define FLG_ADDREG_TYPE_MULTI_SZ 0x00010000
+#define FLG_ADDREG_TYPE_EXPAND_SZ 0x00020000
+#define FLG_ADDREG_TYPE_BINARY (0x00000000|FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_DWORD (0x00010000|FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_NONE (0x00020000|FLG_ADDREG_BINVALUETYPE)
+#define FLG_ADDREG_TYPE_MASK (0xFFFF0000|FLG_ADDREG_BINVALUETYPE)
+#define FLG_BITREG_CLEARBITS 0x00000000
+#define FLG_BITREG_SETBITS 0x00000001
+#define FLG_PROFITEM_CURRENTUSER 0x00000001
+#define FLG_PROFITEM_DELETE 0x00000002
+#define FLG_PROFITEM_GROUP 0x00000004
+#define FLG_PROFITEM_CSIDL 0x00000008
+#define FLG_REGSVR_DLLREGISTER 0x00000001
+#define FLG_REGSVR_DLLINSTALL 0x00000002
+#define MIN_IDD_DYNAWIZ_RESOURCE_ID 10000
+#define MAX_IDD_DYNAWIZ_RESOURCE_ID 11000
+#define IDD_DYNAWIZ_FIRSTPAGE 10000
+#define IDD_DYNAWIZ_SELECT_PREVPAGE 10001
+#define IDD_DYNAWIZ_SELECT_NEXTPAGE 10002
+#define IDD_DYNAWIZ_ANALYZE_PREVPAGE 10003
+#define IDD_DYNAWIZ_ANALYZE_NEXTPAGE 10004
+#define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE 10006
+#define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE 10007
+#define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS 10008
+#define IDD_DYNAWIZ_SELECTDEV_PAGE 10009
+#define IDD_DYNAWIZ_ANALYZEDEV_PAGE 10010
+#define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE 10011
+#define IDD_DYNAWIZ_SELECTCLASS_PAGE 10012
+#define IDF_NOBROWSE 0x00000001
+#define IDF_NOSKIP 0x00000002
+#define IDF_NODETAILS 0x00000004
+#define IDF_NOCOMPRESSED 0x00000008
+#define IDF_CHECKFIRST 0x00000100
+#define IDF_NOBEEP 0x00000200
+#define IDF_NOFOREGROUND 0x00000400
+#define IDF_WARNIFSKIP 0x00000800
+#define IDF_OEMDISK 0x80000000
+#define IDI_RESOURCEFIRST 159
+#define IDI_RESOURCE 159
+#define IDI_RESOURCELAST 161
+#define IDI_RESOURCEOVERLAYFIRST 161
+#define IDI_RESOURCEOVERLAYLAST 161
+#define IDI_CONFLICT 161
+#define IDI_PROBLEM_OVL 500
+#define IDI_DISABLED_OVL 501
+#define IDI_FORCED_OVL 502
+#define IDI_CLASSICON_OVERLAYFIRST 500
+#define IDI_CLASSICON_OVERLAYLAST 502
+#define INF_STYLE_NONE 0x00000000
+#define INF_STYLE_OLDNT 0x00000001
+#define INF_STYLE_WIN4 0x00000002
+#define INF_STYLE_CACHE_ENABLE 0x00000010
+#define INF_STYLE_CACHE_DISABLE 0x00000020
+#define INFINFO_INF_SPEC_IS_HINF 1
+#define INFINFO_INF_NAME_IS_ABSOLUTE 2
+#define INFINFO_DEFAULT_SEARCH 3
+#define INFINFO_REVERSE_DEFAULT_SEARCH 4
+#define INFINFO_INF_PATH_LIST_SEARCH 5
+#define LogSevInformation 0
+#define LogSevWarning 1
+#define LogSevError 2
+#define LogSevFatalError 3
+#define LogSevMaximum 4
+#define LogSeverity DWORD
+#define MAX_INSTALLWIZARD_DYNAPAGES 20
+#define NDW_INSTALLFLAG_DIDFACTDEFS 0x00000001
+#define NDW_INSTALLFLAG_HARDWAREALLREADYIN 0x00000002
+#define NDW_INSTALLFLAG_NEEDSHUTDOWN 0x00000200
+#define NDW_INSTALLFLAG_EXPRESSINTRO 0x00000400
+#define NDW_INSTALLFLAG_SKIPISDEVINSTALLED 0x00000800
+#define NDW_INSTALLFLAG_NODETECTEDDEVS 0x00001000
+#define NDW_INSTALLFLAG_INSTALLSPECIFIC 0x00002000
+#define NDW_INSTALLFLAG_SKIPCLASSLIST 0x00004000
+#define NDW_INSTALLFLAG_CI_PICKED_OEM 0x00008000
+#define NDW_INSTALLFLAG_PCMCIAMODE 0x00010000
+#define NDW_INSTALLFLAG_PCMCIADEVICE 0x00020000
+#define NDW_INSTALLFLAG_USERCANCEL 0x00040000
+#define NDW_INSTALLFLAG_KNOWNCLASS 0x00080000
+#define NDW_INSTALLFLAG_NEEDRESTART 0x00000080
+#define NDW_INSTALLFLAG_NEEDREBOOT 0x00000100
+#define SETDIRID_NOT_FULL_PATH 0x00000001
+#define SP_COPY_DELETESOURCE 0x0000001
+#define SP_COPY_REPLACEONLY 0x0000002
+#define SP_COPY_NEWER 0x0000004
+#define SP_COPY_NEWER_OR_SAME 0x0000004
+#define SP_COPY_NOOVERWRITE 0x0000008
+#define SP_COPY_NODECOMP 0x0000010
+#define SP_COPY_LANGUAGEAWARE 0x0000020
+#define SP_COPY_SOURCE_ABSOLUTE 0x0000040
+#define SP_COPY_SOURCEPATH_ABSOLUTE 0x0000080
+#define SP_COPY_IN_USE_NEEDS_REBOOT 0x0000100
+#define SP_COPY_FORCE_IN_USE 0x0000200
+#define SP_COPY_NOSKIP 0x0000400
+#define SP_COPY_FORCE_NOOVERWRITE 0x0001000
+#define SP_COPY_FORCE_NEWER 0x0002000
+#define SP_COPY_WARNIFSKIP 0x0004000
+#define SP_COPY_NOBROWSE 0x0008000
+#define SP_COPY_NEWER_ONLY 0x0010000
+#define SP_COPY_SOURCE_SIS_MASTER 0x0020000
+#define SP_COPY_OEMINF_CATALOG_ONLY 0x0040000
+#define SP_COPY_REPLACE_BOOT_FILE 0x0080000
+#define SP_COPY_NOPRUNE 0x0100000
+#define SP_FLAG_CABINETCONTINUATION 0x0000800
+#define SPCRP_SECURITY 23
+#define SPCRP_SECURITY_SDS 24
+#define SPCRP_DEVTYPE 25
+#define SPCRP_EXCLUSIVE 26
+#define SPCRP_CHARACTERISTICS 27
+#define SPCRP_MAXIMUM_PROPERTY 28
+#define SPDIT_NODRIVER 0
+#define SPDIT_CLASSDRIVER 1
+#define SPDIT_COMPATDRIVER 2
+#define SPDRP_DEVICEDESC 0
+#define SPDRP_HARDWAREID 1
+#define SPDRP_COMPATIBLEIDS 2
+#define SPDRP_UNUSED0 3
+#define SPDRP_SERVICE 4
+#define SPDRP_UNUSED1 5
+#define SPDRP_UNUSED2 6
+#define SPDRP_CLASS 7
+#define SPDRP_CLASSGUID 8
+#define SPDRP_DRIVER 9
+#define SPDRP_CONFIGFLAGS 10
+#define SPDRP_MFG 11
+#define SPDRP_FRIENDLYNAME 12
+#define SPDRP_LOCATION_INFORMATION 13
+#define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME 14
+#define SPDRP_CAPABILITIES 15
+#define SPDRP_UI_NUMBER 16
+#define SPDRP_UPPERFILTERS 17
+#define SPDRP_LOWERFILTERS 18
+#define SPDRP_BUSTYPEGUID 19
+#define SPDRP_LEGACYBUSTYPE 20
+#define SPDRP_BUSNUMBER 21
+#define SPDRP_ENUMERATOR_NAME 22
+#define SPDRP_SECURITY 23
+#define SPDRP_SECURITY_SDS 24
+#define SPDRP_DEVTYPE 25
+#define SPDRP_EXCLUSIVE 26
+#define SPDRP_CHARACTERISTICS 27
+#define SPDRP_ADDRESS 28
+#define SPDRP_UI_NUMBER_DESC_FORMAT 30
+#define SPDRP_MAXIMUM_PROPERTY 31
+#define SPDSL_IGNORE_DISK 1
+#define SPDSL_DISALLOW_NEGATIVE_ADJUST 2
+
+#define SPFILENOTIFY_STARTQUEUE 1
+#define SPFILENOTIFY_ENDQUEUE 2
+#define SPFILENOTIFY_STARTSUBQUEUE 3
+#define SPFILENOTIFY_ENDSUBQUEUE 4
+#define SPFILENOTIFY_STARTDELETE 5
+#define SPFILENOTIFY_ENDDELETE 6
+#define SPFILENOTIFY_DELETEERROR 7
+#define SPFILENOTIFY_STARTRENAME 8
+#define SPFILENOTIFY_ENDRENAME 9
+#define SPFILENOTIFY_RENAMEERROR 10
+#define SPFILENOTIFY_STARTCOPY 11
+#define SPFILENOTIFY_ENDCOPY 12
+#define SPFILENOTIFY_COPYERROR 13
+#define SPFILENOTIFY_NEEDMEDIA 14
+#define SPFILENOTIFY_QUEUESCAN 15
+#define SPFILENOTIFY_CABINETINFO 16
+#define SPFILENOTIFY_FILEINCABINET 17
+#define SPFILENOTIFY_NEEDNEWCABINET 18
+#define SPFILENOTIFY_FILEEXTRACTED 19
+#define SPFILENOTIFY_FILEOPDELAYED 20
+#define SPFILENOTIFY_STARTBACKUP 21
+#define SPFILENOTIFY_BACKUPERROR 22
+#define SPFILENOTIFY_ENDBACKUP 23
+#define SPFILENOTIFY_QUEUESCAN_EX 24
+#define SPFILENOTIFY_LANGMISMATCH 0x00010000
+#define SPFILENOTIFY_TARGETEXISTS 0x00020000
+#define SPFILENOTIFY_TARGETNEWER 0x00040000
+#define SPFILELOG_SYSTEMLOG 0x00000001
+#define SPFILELOG_OEMFILE 0x00000001
+#define SPFILELOG_FORCENEW 0x00000002
+#define SPFILELOG_QUERYONLY 0x00000004
+#define SPFILEQ_FILE_IN_USE 0x00000001
+#define SPFILEQ_REBOOT_RECOMMENDED 0x00000002
+#define SPFILEQ_REBOOT_IN_PROGRESS 0x00000004
+#define SPINT_ACTIVE 0x00000001
+#define SPINT_DEFAULT 0x00000002
+#define SPINT_REMOVED 0x00000004
+#define SPID_ACTIVE 0x00000001
+#define SPID_DEFAULT 0x00000002
+#define SPID_REMOVED 0x00000004
+#define SPINST_LOGCONFIG 0x00000001
+#define SPINST_INIFILES 0x00000002
+#define SPINST_REGISTRY 0x00000004
+#define SPINST_INI2REG 0x00000008
+#define SPINST_FILES 0x00000010
+#define SPINST_BITREG 0x00000020
+#define SPINST_REGSVR 0x00000040
+#define SPINST_UNREGSVR 0x00000080
+#define SPINST_PROFILEITEMS 0x00000100
+#define SPINST_ALL 0x000001ff
+#define SPINST_SINGLESECTION 0x00010000
+#define SPINST_LOGCONFIG_IS_FORCED 0x00020000
+#define SPINST_LOGCONFIGS_ARE_OVERRIDES 0x00040000
+#define SPOST_NONE 0
+#define SPOST_PATH 1
+#define SPOST_URL 2
+#define SPOST_MAX 3
+#define SPPSR_SELECT_DEVICE_RESOURCES 1
+#define SPPSR_ENUM_BASIC_DEVICE_PROPERTIES 2
+#define SPPSR_ENUM_ADV_DEVICE_PROPERTIES 3
+#define SPQ_SCAN_FILE_PRESENCE 0x00000001
+#define SPQ_DELAYED_COPY 0x00000001
+#define SPQ_SCAN_FILE_VALIDITY 0x00000002
+#define SPQ_SCAN_USE_CALLBACK 0x00000004
+#define SPQ_SCAN_USE_CALLBACKEX 0x00000008
+#define SPQ_SCAN_INFORM_USER 0x00000010
+#define SPQ_SCAN_PRUNE_COPY_QUEUE 0x00000020
+#define SPRDI_FIND_DUPS 0x00000001
+#define SPSVCINST_TAGTOFRONT 0x00000001
+#define SPSVCINST_ASSOCSERVICE 0x00000002
+#define SPSVCINST_DELETEEVENTLOGENTRY 0x00000004
+#define SPSVCINST_NOCLOBBER_DISPLAYNAME 0x00000008
+#define SPSVCINST_NOCLOBBER_STARTTYPE 0x00000010
+#define SPSVCINST_NOCLOBBER_ERRORCONTROL 0x00000020
+#define SPSVCINST_NOCLOBBER_LOADORDERGROUP 0x00000040
+#define SPSVCINST_NOCLOBBER_DEPENDENCIES 0x00000080
+#define SPSVCINST_NOCLOBBER_DESCRIPTION 0x00000100
+#define SPSVCINST_STOPSERVICE 0x00000200
+#define SPWPT_SELECTDEVICE 0x00000001
+#define SPWP_USE_DEVINFO_DATA 0x00000001
+#define SRCINFO_PATH 1
+#define SRCINFO_TAGFILE 2
+#define SRCINFO_DESCRIPTION 3
+#define SRCINFO_FLAGS 4
+#define SRCLIST_TEMPORARY 0x00000001
+#define SRCLIST_NOBROWSE 0x00000002
+#define SRCLIST_SYSTEM 0x00000010
+#define SRCLIST_USER 0x00000020
+#define SRCLIST_SYSIFADMIN 0x00000040
+#define SRCLIST_SUBDIRS 0x00000100
+#define SRCLIST_APPEND 0x00000200
+#define SRCLIST_NOSTRIPPLATFORM 0x00000400
+
+#ifndef RC_INVOKED
+typedef PVOID HINF;
+typedef PVOID HDSKSPC;
+typedef PVOID HDEVINFO;
+typedef PVOID HSPFILEQ;
+typedef PVOID HSPFILELOG;
+typedef UINT DI_FUNCTION;
+
+typedef enum {
+ SetupFileLogSourceFilename,
+ SetupFileLogChecksum,
+ SetupFileLogDiskTagfile,
+ SetupFileLogDiskDescription,
+ SetupFileLogOtherInfo,
+ SetupFileLogMax
+} SetupFileLogInfo;
+typedef struct _INFCONTEXT {
+ PVOID Inf;
+ PVOID CurrentInf;
+ UINT Section;
+ UINT Line;
+} INFCONTEXT, *PINFCONTEXT;
+typedef struct _SP_INF_INFORMATION {
+ DWORD InfStyle;
+ DWORD InfCount;
+ BYTE VersionData[ANYSIZE_ARRAY];
+} SP_INF_INFORMATION, *PSP_INF_INFORMATION;
+typedef struct _SP_ALTPLATFORM_INFO {
+ DWORD cbSize;
+ DWORD Platform;
+ DWORD MajorVersion;
+ DWORD MinorVersion;
+ WORD ProcessorArchitecture;
+ WORD Reserved;
+} SP_ALTPLATFORM_INFO, *PSP_ALTPLATFORM_INFO;
+typedef struct _SP_ORIGINAL_FILE_INFO_A {
+ DWORD cbSize;
+ CHAR OriginalInfName[MAX_PATH];
+ CHAR OriginalCatalogName[MAX_PATH];
+} SP_ORIGINAL_FILE_INFO_A, *PSP_ORIGINAL_FILE_INFO_A;
+typedef struct _SP_ORIGINAL_FILE_INFO_W {
+ DWORD cbSize;
+ WCHAR OriginalInfName[MAX_PATH];
+ WCHAR OriginalCatalogName[MAX_PATH];
+} SP_ORIGINAL_FILE_INFO_W, *PSP_ORIGINAL_FILE_INFO_W;
+typedef struct _FILEPATHS_A {
+ PCSTR Target;
+ PCSTR Source;
+ UINT Win32Error;
+ DWORD Flags;
+} FILEPATHS_A, *PFILEPATHS_A;
+typedef struct _FILEPATHS_W {
+ PCWSTR Target;
+ PCWSTR Source;
+ UINT Win32Error;
+ DWORD Flags;
+} FILEPATHS_W, *PFILEPATHS_W;
+typedef struct _SOURCE_MEDIA_A {
+ PCSTR Reserved;
+ PCSTR Tagfile;
+ PCSTR Description;
+ PCSTR SourcePath;
+ PCSTR SourceFile;
+ DWORD Flags;
+} SOURCE_MEDIA_A, *PSOURCE_MEDIA_A;
+typedef struct _SOURCE_MEDIA_W {
+ PCWSTR Reserved;
+ PCWSTR Tagfile;
+ PCWSTR Description;
+ PCWSTR SourcePath;
+ PCWSTR SourceFile;
+ DWORD Flags;
+} SOURCE_MEDIA_W, *PSOURCE_MEDIA_W;
+typedef struct _CABINET_INFO_A {
+ PCSTR CabinetPath;
+ PCSTR CabinetFile;
+ PCSTR DiskName;
+ USHORT SetId;
+ USHORT CabinetNumber;
+} CABINET_INFO_A, *PCABINET_INFO_A;
+typedef struct _CABINET_INFO_W {
+ PCWSTR CabinetPath;
+ PCWSTR CabinetFile;
+ PCWSTR DiskName;
+ USHORT SetId;
+ USHORT CabinetNumber;
+} CABINET_INFO_W, *PCABINET_INFO_W;
+typedef struct _FILE_IN_CABINET_INFO_A {
+ PCSTR NameInCabinet;
+ DWORD FileSize;
+ DWORD Win32Error;
+ WORD DosDate;
+ WORD DosTime;
+ WORD DosAttribs;
+ CHAR FullTargetName[MAX_PATH];
+} FILE_IN_CABINET_INFO_A, *PFILE_IN_CABINET_INFO_A;
+typedef struct _FILE_IN_CABINET_INFO_W {
+ PCWSTR NameInCabinet;
+ DWORD FileSize;
+ DWORD Win32Error;
+ WORD DosDate;
+ WORD DosTime;
+ WORD DosAttribs;
+ WCHAR FullTargetName[MAX_PATH];
+} FILE_IN_CABINET_INFO_W, *PFILE_IN_CABINET_INFO_W;
+typedef struct _SP_FILE_COPY_PARAMS_A {
+ DWORD cbSize;
+ HSPFILEQ QueueHandle;
+ PCSTR SourceRootPath;
+ PCSTR SourcePath;
+ PCSTR SourceFilename;
+ PCSTR SourceDescription;
+ PCSTR SourceTagfile;
+ PCSTR TargetDirectory;
+ PCSTR TargetFilename;
+ DWORD CopyStyle;
+ HINF LayoutInf;
+ PCSTR SecurityDescriptor;
+} SP_FILE_COPY_PARAMS_A, *PSP_FILE_COPY_PARAMS_A;
+typedef struct _SP_FILE_COPY_PARAMS_W {
+ DWORD cbSize;
+ HSPFILEQ QueueHandle;
+ PCWSTR SourceRootPath;
+ PCWSTR SourcePath;
+ PCWSTR SourceFilename;
+ PCWSTR SourceDescription;
+ PCWSTR SourceTagfile;
+ PCWSTR TargetDirectory;
+ PCWSTR TargetFilename;
+ DWORD CopyStyle;
+ HINF LayoutInf;
+ PCWSTR SecurityDescriptor;
+} SP_FILE_COPY_PARAMS_W, *PSP_FILE_COPY_PARAMS_W;
+typedef struct _SP_DEVINFO_DATA {
+ DWORD cbSize;
+ GUID ClassGuid;
+ DWORD DevInst;
+ ULONG_PTR Reserved;
+} SP_DEVINFO_DATA, *PSP_DEVINFO_DATA;
+typedef struct _SP_DEVICE_INTERFACE_DATA {
+ DWORD cbSize;
+ GUID InterfaceClassGuid;
+ DWORD Flags;
+ ULONG_PTR Reserved;
+} SP_DEVICE_INTERFACE_DATA, *PSP_DEVICE_INTERFACE_DATA;
+/* For backward compatability */
+typedef SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA, *PSP_INTERFACE_DEVICE_DATA;
+
+typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A {
+ DWORD cbSize;
+ CHAR DevicePath[ANYSIZE_ARRAY];
+} SP_DEVICE_INTERFACE_DETAIL_DATA_A, *PSP_DEVICE_INTERFACE_DETAIL_DATA_A;
+typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W {
+ DWORD cbSize;
+ WCHAR DevicePath[ANYSIZE_ARRAY];
+} SP_DEVICE_INTERFACE_DETAIL_DATA_W, *PSP_DEVICE_INTERFACE_DETAIL_DATA_W;
+/* For backward compatability */
+typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A,
+ *PSP_INTERFACE_DEVICE_DETAIL_DATA_A;
+typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W,
+ *PSP_INTERFACE_DEVICE_DETAIL_DATA_W;
+
+typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
+ DWORD cbSize;
+ GUID ClassGuid;
+ HANDLE RemoteMachineHandle;
+ CHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
+} SP_DEVINFO_LIST_DETAIL_DATA_A, *PSP_DEVINFO_LIST_DETAIL_DATA_A;
+typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
+ DWORD cbSize;
+ GUID ClassGuid;
+ HANDLE RemoteMachineHandle;
+ WCHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
+} SP_DEVINFO_LIST_DETAIL_DATA_W, *PSP_DEVINFO_LIST_DETAIL_DATA_W;
+
+typedef UINT (CALLBACK* PSP_FILE_CALLBACK_A)(PVOID,UINT,UINT_PTR,UINT_PTR);
+typedef UINT (CALLBACK* PSP_FILE_CALLBACK_W)(PVOID,UINT,UINT_PTR,UINT_PTR);
+typedef struct _SP_DEVINSTALL_PARAMS_A {
+ DWORD cbSize;
+ DWORD Flags;
+ DWORD FlagsEx;
+ HWND hwndParent;
+ PSP_FILE_CALLBACK_A InstallMsgHandler;
+ PVOID InstallMsgHandlerContext;
+ HSPFILEQ FileQueue;
+ ULONG_PTR ClassInstallReserved;
+ DWORD Reserved;
+ CHAR DriverPath[MAX_PATH];
+} SP_DEVINSTALL_PARAMS_A, *PSP_DEVINSTALL_PARAMS_A;
+typedef struct _SP_DEVINSTALL_PARAMS_W {
+ DWORD cbSize;
+ DWORD Flags;
+ DWORD FlagsEx;
+ HWND hwndParent;
+ PSP_FILE_CALLBACK_W InstallMsgHandler;
+ PVOID InstallMsgHandlerContext;
+ HSPFILEQ FileQueue;
+ ULONG_PTR ClassInstallReserved;
+ DWORD Reserved;
+ WCHAR DriverPath[MAX_PATH];
+} SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS_W;
+typedef struct _SP_CLASSINSTALL_HEADER {
+ DWORD cbSize;
+ DI_FUNCTION InstallFunction;
+} SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER;
+typedef struct _SP_ENABLECLASS_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ GUID ClassGuid;
+ DWORD EnableMessage;
+} SP_ENABLECLASS_PARAMS, *PSP_ENABLECLASS_PARAMS;
+typedef struct _SP_MOVEDEV_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ SP_DEVINFO_DATA SourceDeviceInfoData;
+} SP_MOVEDEV_PARAMS, *PSP_MOVEDEV_PARAMS;
+typedef struct _SP_PROPCHANGE_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ DWORD StateChange;
+ DWORD Scope;
+ DWORD HwProfile;
+} SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS;
+typedef struct _SP_REMOVEDEVICE_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ DWORD Scope;
+ DWORD HwProfile;
+} SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS;
+typedef struct _SP_UNREMOVEDEVICE_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ DWORD Scope;
+ DWORD HwProfile;
+} SP_UNREMOVEDEVICE_PARAMS, *PSP_UNREMOVEDEVICE_PARAMS;
+typedef struct _SP_SELECTDEVICE_PARAMS_A {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ CHAR Title[MAX_TITLE_LEN];
+ CHAR Instructions[MAX_INSTRUCTION_LEN];
+ CHAR ListLabel[MAX_LABEL_LEN];
+ CHAR SubTitle[MAX_SUBTITLE_LEN];
+ BYTE Reserved[2];
+} SP_SELECTDEVICE_PARAMS_A, *PSP_SELECTDEVICE_PARAMS_A;
+typedef struct _SP_SELECTDEVICE_PARAMS_W {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ WCHAR Title[MAX_TITLE_LEN];
+ WCHAR Instructions[MAX_INSTRUCTION_LEN];
+ WCHAR ListLabel[MAX_LABEL_LEN];
+ WCHAR SubTitle[MAX_SUBTITLE_LEN];
+} SP_SELECTDEVICE_PARAMS_W, *PSP_SELECTDEVICE_PARAMS_W;
+
+typedef BOOL (CALLBACK* PDETECT_PROGRESS_NOTIFY)(PVOID,DWORD);
+typedef struct _SP_DETECTDEVICE_PARAMS {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ PDETECT_PROGRESS_NOTIFY DetectProgressNotify;
+ PVOID ProgressNotifyParam;
+} SP_DETECTDEVICE_PARAMS, *PSP_DETECTDEVICE_PARAMS;
+typedef struct _SP_INSTALLWIZARD_DATA {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ DWORD Flags;
+ HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
+ DWORD NumDynamicPages;
+ DWORD DynamicPageFlags;
+ DWORD PrivateFlags;
+ LPARAM PrivateData;
+ HWND hwndWizardDlg;
+} SP_INSTALLWIZARD_DATA, *PSP_INSTALLWIZARD_DATA;
+typedef struct _SP_NEWDEVICEWIZARD_DATA {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ DWORD Flags;
+ HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
+ DWORD NumDynamicPages;
+ HWND hwndWizardDlg;
+} SP_NEWDEVICEWIZARD_DATA, *PSP_NEWDEVICEWIZARD_DATA;
+typedef SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA,
+ *PSP_ADDPROPERTYPAGE_DATA;
+typedef struct _SP_TROUBLESHOOTER_PARAMS_A {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ CHAR ChmFile[MAX_PATH];
+ CHAR HtmlTroubleShooter[MAX_PATH];
+} SP_TROUBLESHOOTER_PARAMS_A, *PSP_TROUBLESHOOTER_PARAMS_A;
+typedef struct _SP_TROUBLESHOOTER_PARAMS_W {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ WCHAR ChmFile[MAX_PATH];
+ WCHAR HtmlTroubleShooter[MAX_PATH];
+} SP_TROUBLESHOOTER_PARAMS_W, *PSP_TROUBLESHOOTER_PARAMS_W;
+typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ CHAR PowerMessageWake[LINE_LEN*2];
+} SP_POWERMESSAGEWAKE_PARAMS_A, *PSP_POWERMESSAGEWAKE_PARAMS_A;
+typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W {
+ SP_CLASSINSTALL_HEADER ClassInstallHeader;
+ WCHAR PowerMessageWake[LINE_LEN*2];
+} SP_POWERMESSAGEWAKE_PARAMS_W, *PSP_POWERMESSAGEWAKE_PARAMS_W;
+typedef struct _SP_DRVINFO_DATA_V2_A {
+ DWORD cbSize;
+ DWORD DriverType;
+ ULONG_PTR Reserved;
+ CHAR Description[LINE_LEN];
+ CHAR MfgName[LINE_LEN];
+ CHAR ProviderName[LINE_LEN];
+ FILETIME DriverDate;
+ DWORDLONG DriverVersion;
+} SP_DRVINFO_DATA_V2_A, *PSP_DRVINFO_DATA_V2_A;
+typedef struct _SP_DRVINFO_DATA_V2_W {
+ DWORD cbSize;
+ DWORD DriverType;
+ ULONG_PTR Reserved;
+ WCHAR Description[LINE_LEN];
+ WCHAR MfgName[LINE_LEN];
+ WCHAR ProviderName[LINE_LEN];
+ FILETIME DriverDate;
+ DWORDLONG DriverVersion;
+} SP_DRVINFO_DATA_V2_W, *PSP_DRVINFO_DATA_V2_W;
+typedef struct _SP_DRVINFO_DATA_V1_A {
+ DWORD cbSize;
+ DWORD DriverType;
+ ULONG_PTR Reserved;
+ CHAR Description[LINE_LEN];
+ CHAR MfgName[LINE_LEN];
+ CHAR ProviderName[LINE_LEN];
+} SP_DRVINFO_DATA_V1_A, *PSP_DRVINFO_DATA_V1_A;
+typedef struct _SP_DRVINFO_DATA_V1_W {
+ DWORD cbSize;
+ DWORD DriverType;
+ ULONG_PTR Reserved;
+ WCHAR Description[LINE_LEN];
+ WCHAR MfgName[LINE_LEN];
+ WCHAR ProviderName[LINE_LEN];
+} SP_DRVINFO_DATA_V1_W, *PSP_DRVINFO_DATA_V1_W;
+
+#ifdef UNICODE
+typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_V1, *PSP_DRVINFO_DATA_V1;
+typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_V2, *PSP_DRVINFO_DATA_V2;
+#else
+typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_V1, *PSP_DRVINFO_DATA_V1;
+typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_V2, *PSP_DRVINFO_DATA_V2;
+#endif
+
+#if USE_SP_DRVINFO_DATA_V1
+typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A;
+typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W;
+typedef SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA, *PSP_DRVINFO_DATA;
+#else
+typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A, *PSP_DRVINFO_DATA_A;
+typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W, *PSP_DRVINFO_DATA_W;
+typedef SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA, *PSP_DRVINFO_DATA;
+#endif
+
+typedef DWORD (CALLBACK* PSP_DETSIG_CMPPROC)(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINFO_DATA,PVOID);
+
+typedef struct _SP_DRVINFO_DETAIL_DATA_A {
+ DWORD cbSize;
+ FILETIME InfDate;
+ DWORD CompatIDsOffset;
+ DWORD CompatIDsLength;
+ ULONG_PTR Reserved;
+ CHAR SectionName[LINE_LEN];
+ CHAR InfFileName[MAX_PATH];
+ CHAR DrvDescription[LINE_LEN];
+ CHAR HardwareID[ANYSIZE_ARRAY];
+} SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;
+typedef struct _SP_DRVINFO_DETAIL_DATA_W {
+ DWORD cbSize;
+ FILETIME InfDate;
+ DWORD CompatIDsOffset;
+ DWORD CompatIDsLength;
+ ULONG_PTR Reserved;
+ WCHAR SectionName[LINE_LEN];
+ WCHAR InfFileName[MAX_PATH];
+ WCHAR DrvDescription[LINE_LEN];
+ WCHAR HardwareID[ANYSIZE_ARRAY];
+} SP_DRVINFO_DETAIL_DATA_W, *PSP_DRVINFO_DETAIL_DATA_W;
+typedef struct _SP_DRVINSTALL_PARAMS {
+ DWORD cbSize;
+ DWORD Rank;
+ DWORD Flags;
+ DWORD_PTR PrivateData;
+ DWORD Reserved;
+} SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS;
+
+
+typedef struct _COINSTALLER_CONTEXT_DATA {
+ BOOL PostProcessing;
+ DWORD InstallResult;
+ PVOID PrivateData;
+} COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA;
+typedef struct _SP_CLASSIMAGELIST_DATA {
+ DWORD cbSize;
+ HIMAGELIST ImageList;
+ ULONG_PTR Reserved;
+} SP_CLASSIMAGELIST_DATA, *PSP_CLASSIMAGELIST_DATA;
+typedef struct _SP_PROPSHEETPAGE_REQUEST {
+ DWORD cbSize;
+ DWORD PageRequested;
+ HDEVINFO DeviceInfoSet;
+ PSP_DEVINFO_DATA DeviceInfoData;
+} SP_PROPSHEETPAGE_REQUEST, *PSP_PROPSHEETPAGE_REQUEST;
+typedef struct _SP_BACKUP_QUEUE_PARAMS_A {
+ DWORD cbSize;
+ CHAR FullInfPath[MAX_PATH];
+ INT FilenameOffset;
+} SP_BACKUP_QUEUE_PARAMS_A, *PSP_BACKUP_QUEUE_PARAMS_A;
+typedef struct _SP_BACKUP_QUEUE_PARAMS_W {
+ DWORD cbSize;
+ WCHAR FullInfPath[MAX_PATH];
+ INT FilenameOffset;
+} SP_BACKUP_QUEUE_PARAMS_W, *PSP_BACKUP_QUEUE_PARAMS_W;
+
+
+#ifdef UNICODE
+typedef SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO;
+typedef FILEPATHS_W FILEPATHS, *PFILEPATHS;
+typedef SOURCE_MEDIA_W SOURCE_MEDIA, *PSOURCE_MEDIA;
+typedef CABINET_INFO_W CABINET_INFO, *PCABINET_INFO;
+typedef FILE_IN_CABINET_INFO_W FILE_IN_CABINET_INFO, *PFILE_IN_CABINET_INFO;
+typedef SP_FILE_COPY_PARAMS_W SP_FILE_COPY_PARAMS, PSP_FILE_COPY_PARAMS;
+typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_DEVICE_INTERFACE_DETAIL_DATA,
+ *PSP_DEVICE_INTERFACE_DETAIL_DATA;
+typedef SP_INTERFACE_DEVICE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA,
+ *PSP_INTERFACE_DEVICE_DETAIL_DATA; /* deprecated */
+typedef SP_DEVINFO_LIST_DETAIL_DATA_W SP_DEVINFO_LIST_DETAIL_DATA,
+ *PSP_DEVINFO_LIST_DETAIL_DATA;
+typedef SP_DEVINSTALL_PARAMS_W, *PSP_DEVINSTALL_PARAMS;
+typedef SP_SELECTDEVICE_PARAMS_W SP_SELECTDEVICE_PARAMS, *PSP_SELECTDEVICE_PARAMS;
+typedef SP_TROUBLESHOOTER_PARAMS_W SP_TROUBLESHOOTER_PARAMS,
+ *PSP_TROUBLESHOOTER_PARAMS;
+typedef SP_POWERMESSAGEWAKE_PARAMS_W SP_POWERMESSAGEWAKE_PARAMS,
+ *PSP_POWERMESSAGEWAKE_PARAMS;
+typedef SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA,
+ *PSP_DRVINFO_DETAIL_DATA;
+typedef SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS,
+ *PSP_BACKUP_QUEUE_PARAMS;
+#else
+typedef SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO;
+typedef FILEPATHS_A FILEPATHS, *PFILEPATHS;
+typedef SOURCE_MEDIA_A SOURCE_MEDIA, *PSOURCE_MEDIA;
+typedef CABINET_INFO_A CABINET_INFO, *PCABINET_INFO;
+typedef FILE_IN_CABINET_INFO_A FILE_IN_CABINET_INFO, *PFILE_IN_CABINET_INFO;
+typedef SP_FILE_COPY_PARAMS_A SP_FILE_COPY_PARAMS, *PSP_FILE_COPY_PARAMS;
+typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_DEVICE_INTERFACE_DETAIL_DATA,
+ *PSP_DEVICE_INTERFACE_DETAIL_DATA;
+typedef SP_INTERFACE_DEVICE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA,
+ *PSP_INTERFACE_DEVICE_DETAIL_DATA; /* deprecated */
+typedef SP_DEVINFO_LIST_DETAIL_DATA_A SP_DEVINFO_LIST_DETAIL_DATA,
+ *PSP_DEVINFO_LIST_DETAIL_DATA;
+typedef SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS, *PSP_DEVINSTALL_PARAMS;
+typedef SP_SELECTDEVICE_PARAMS_A SP_SELECTDEVICE_PARAMS,
+ *PSP_SELECTDEVICE_PARAMS;
+typedef SP_TROUBLESHOOTER_PARAMS_A SP_TROUBLESHOOTER_PARAMS,
+ *PSP_TROUBLESHOOTER_PARAMS;
+typedef SP_POWERMESSAGEWAKE_PARAMS_A SP_POWERMESSAGEWAKE_PARAMS,
+ *PSP_POWERMESSAGEWAKE_PARAMS;
+typedef SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA,
+ *PSP_DRVINFO_DETAIL_DATA;
+typedef SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS,
+ *PSP_BACKUP_QUEUE_PARAMS;
+#endif /* UNICODE */
+
+WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddToDiskSpaceListA(HDSKSPC,PCSTR,LONGLONG,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddToDiskSpaceListW(HDSKSPC,PCWSTR,LONGLONG,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAddToSourceListA(DWORD,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupAddToSourceListW(DWORD,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupAdjustDiskSpaceListA(HDSKSPC,LPCSTR,LONGLONG,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupAdjustDiskSpaceListW(HDSKSPC,LPCWSTR,LONGLONG,PVOID,UINT);
+WINSETUPAPI UINT WINAPI SetupBackupErrorA(HWND,PCSTR,PCSTR,PCSTR,UINT,DWORD);
+WINSETUPAPI UINT WINAPI SetupBackupErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD);
+WINSETUPAPI BOOL WINAPI SetupCancelTemporary(VOID);
+WINSETUPAPI BOOL WINAPI SetupCloseFileQueue(HSPFILEQ);
+WINSETUPAPI VOID WINAPI SetupCloseInfFile(HINF);
+WINSETUPAPI VOID WINAPI SetupCloseLog(VOID);
+WINSETUPAPI BOOL WINAPI SetupCommitFileQueueA(HWND,HSPFILEQ,PSP_FILE_CALLBACK_A,PVOID);
+WINSETUPAPI BOOL WINAPI SetupCommitFileQueueW(HWND,HSPFILEQ,PSP_FILE_CALLBACK_W,PVOID);
+WINSETUPAPI UINT WINAPI SetupCopyErrorA(HWND,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,UINT,DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI UINT WINAPI SetupCopyErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupCopyOEMInfA(PCSTR,PCSTR,DWORD,DWORD,PSTR,DWORD,PDWORD,PSTR*);
+WINSETUPAPI BOOL WINAPI SetupCopyOEMInfW(PCWSTR,PCWSTR,DWORD,DWORD,PWSTR,DWORD,PDWORD,PWSTR*);
+WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListA(PVOID,DWORD,UINT);
+WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListW(PVOID,DWORD,UINT);
+WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileA(PCSTR,PCSTR,PUINT);
+WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileW(PCWSTR,PCWSTR,PUINT);
+WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackA(PVOID,UINT,UINT_PTR,UINT_PTR);
+WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackW(PVOID,UINT,UINT_PTR,UINT_PTR);
+WINSETUPAPI UINT WINAPI SetupDeleteErrorA(HWND,PCSTR,PCSTR,UINT,DWORD);
+WINSETUPAPI UINT WINAPI SetupDeleteErrorW(HWND,PCWSTR,PCWSTR,UINT,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDestroyDiskSpaceList(HDSKSPC);
+WINSETUPAPI BOOL WINAPI SetupDiAskForOEMDisk(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoList(DWORD,LPGUID,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoListExA(DWORD,LPGUID,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiBuildClassInfoListExW(DWORD,LPGUID,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiBuildDriverInfoList(HDEVINFO,PSP_DEVINFO_DATA,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION,HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiCancelDriverInfoSearch(HDEVINFO);
+WINSETUPAPI BOOL WINAPI SetupDiChangeState(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameA(PCSTR,LPGUID,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameW(PCWSTR,LPGUID,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameExA(PCSTR,LPGUID,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiClassGuidsFromNameExW(PCWSTR,LPGUID,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidA(CONST GUID*,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidW(CONST GUID*,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidExA(CONST GUID*,PSTR,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiClassNameFromGuidExW(CONST GUID*,PWSTR,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInfoA(HDEVINFO,PCSTR,CONST GUID*,PCSTR,HWND,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInfoW(HDEVINFO,PCWSTR,CONST GUID*,PCWSTR,HWND,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoList(CONST GUID*,HWND);
+WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExA(CONST GUID*,HWND,PCSTR,PVOID);
+WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(CONST GUID*,HWND,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,PCSTR,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiCreateDeviceInterfaceW(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,PCWSTR,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegA(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM,HINF,PCSTR);
+WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegW(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM,HINF,PCWSTR);
+WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,HINF,PCSTR);
+WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,HINF,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInfo(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInterfaceData(HDEVINFO,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiDeleteDeviceInterfaceReg(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiDeleteDevReg(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO);
+WINSETUPAPI BOOL WINAPI SetupDiDestroyDriverInfoList(HDEVINFO,PSP_DEVINFO_DATA,DWORD);
+WINSETUPAPI INT WINAPI SetupDiDrawMiniIcon(HDC,RECT,INT,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA,CONST GUID*,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_A);
+WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_W);
+WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallA(HINF,PCSTR,PSTR,DWORD,PDWORD,PSTR*);
+WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallW(HINF,PCWSTR,PWSTR,DWORD,PDWORD,PWSTR*);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassBitmapIndex(CONST GUID*,PINT);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionA(CONST GUID*,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionW(CONST GUID*,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionExA(CONST GUID*,PSTR,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionExW(CONST GUID*,PWSTR,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDevPropertySheetsA(HDEVINFO,PSP_DEVINFO_DATA,LPPROPSHEETHEADERA,DWORD,PDWORD,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassDevPropertySheetsW(HDEVINFO,PSP_DEVINFO_DATA,LPPROPSHEETHEADERW,DWORD,PDWORD,DWORD);
+WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID*,PCSTR,HWND,DWORD);
+WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID*,PCWSTR,HWND,DWORD);
+WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExA(CONST GUID*,PCSTR,HWND,DWORD,HDEVINFO,PCSTR,PVOID);
+WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExW(CONST GUID*,PCWSTR,HWND,DWORD,HDEVINFO,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA,CONST GUID*,PINT);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassRegistryPropertyA(LPGUID,DWORD,PDWORD,PBYTE,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetClassRegistryPropertyW(LPGUID,DWORD,PDWORD,PBYTE,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListClass(HDEVINFO,LPGUID);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListDetailA(HDEVINFO,PSP_DEVINFO_LIST_DETAIL_DATA_A);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInfoListDetailW(HDEVINFO,PSP_DEVINFO_LIST_DETAIL_DATA_W);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_A);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_W);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO,PSP_DEVINFO_DATA,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInstanceIdW(HDEVINFO,PSP_DEVINFO_DATA,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceAlias(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,CONST GUID*,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,PSP_DEVICE_INTERFACE_DETAIL_DATA_A,DWORD,PDWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,PSP_DEVICE_INTERFACE_DETAIL_DATA_W,DWORD,PDWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PDWORD,PBYTE,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PDWORD,PBYTE,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDriverInfoDetailA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINFO_DETAIL_DATA_A,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDriverInfoDetailW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINFO_DETAIL_DATA_W,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetDriverInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINSTALL_PARAMS);
+WINSETUPAPI BOOL WINAPI SetupDiGetDriverInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINSTALL_PARAMS);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameA(DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameExA(DWORD,PSTR,DWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameExW(DWORD,PWSTR,DWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileFriendlyNameW(DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileList(PDWORD,DWORD,PDWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileListExA(PDWORD,DWORD,PDWORD,PDWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetHwProfileListExW(PDWORD,DWORD,PDWORD,PDWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetINFClassA(PCSTR,LPGUID,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetINFClassW(PCWSTR,LPGUID,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDriverA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A);
+WINSETUPAPI BOOL WINAPI SetupDiGetSelectedDriverW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W);
+WINSETUPAPI HPROPSHEETPAGE WINAPI SetupDiGetWizardage(HDEVINFO,PSP_DEVINFO_DATA,PSP_INSTALLWIZARD_DATA,DWORD,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiInstallClassA(HWND,PCSTR,DWORD,HSPFILEQ);
+WINSETUPAPI BOOL WINAPI SetupDiInstallClassW(HWND,PCWSTR,DWORD,HSPFILEQ);
+WINSETUPAPI BOOL WINAPI SetupDiInstallClassExA(HWND,PCSTR,DWORD,HSPFILEQ,CONST GUID*,PVOID,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiInstallClassExW(HWND,PCWSTR,DWORD,HSPFILEQ,CONST GUID*,PVOID,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiInstallDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiInstallDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiInstallDriverFiles(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiLoadClassIcon(CONST GUID*,HICON*,PINT);
+WINSETUPAPI BOOL WINAPI SetupDiMoveDuplicateDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI HKEY WINAPI SetupDiOpenClassReg(CONST GUID*,REGSAM);
+WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegExA(CONST GUID*,REGSAM,DWORD,PCSTR,PVOID);
+WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegExW(CONST GUID*,REGSAM,DWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInfoA(HDEVINFO,PCSTR,HWND,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInfoW(HDEVINFO,PCWSTR,HWND,DWORD,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInterfaceA(HDEVINFO,PCSTR,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiOpenDeviceInterfaceW(HDEVINFO,PCWSTR,DWORD,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI HKEY WINAPI SetupDiOpenDeviceInterfaceReg(HDEVINFO,PSP_DEVICE_INTERFACE_DATA,DWORD,REGSAM);
+WINSETUPAPI HKEY WINAPI SetupDiOpenDevReg(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,DWORD,REGSAM);
+WINSETUPAPI BOOL WINAPI SetupDiRegisterCoDeviceInstallers(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO,PSP_DEVINFO_DATA,DWORD,PSP_DETSIG_CMPPROC,PVOID,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiRemoveDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiRemoveDeviceInterface(HDEVINFO,PSP_DEVICE_INTERFACE_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSelectBestCompatDrv(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSelectDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSelectOEMDrv(HWND,HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSetClassInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiSetClassInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_CLASSINSTALL_HEADER,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiSetClassRegistryPropertyA(LPGUID,DWORD,CONST BYTE*,DWORD,PCSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiSetClassRegistryPropertyW(LPGUID,DWORD,CONST BYTE*,DWORD,PCWSTR,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiSetDeviceInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_A);
+WINSETUPAPI BOOL WINAPI SetupDiSetDeviceInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DEVINSTALL_PARAMS_W);
+WINSETUPAPI BOOL WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,CONST BYTE*,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,CONST BYTE*,DWORD);
+WINSETUPAPI BOOL WINAPI SetupDiSetDriverInstallParamsA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A,PSP_DRVINSTALL_PARAMS);
+WINSETUPAPI BOOL WINAPI SetupDiSetDriverInstallParamsW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W,PSP_DRVINSTALL_PARAMS);
+WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDriverA(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_A);
+WINSETUPAPI BOOL WINAPI SetupDiSetSelectedDriverW(HDEVINFO,PSP_DEVINFO_DATA,PSP_DRVINFO_DATA_W);
+WINSETUPAPI BOOL WINAPI SetupDiUnremoveDevice(HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListA(HDSKSPC,PVOID,DWORD,UINT);
+WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListW(HDSKSPC,PVOID,DWORD,UINT);
+WINSETUPAPI BOOL WINAPI SetupFindFirstLineA(HINF,PCSTR,PCSTR,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFindFirstLineW(HINF,PCWSTR,PCWSTR,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFindNextLine(PINFCONTEXT,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFindNextMatchLineA(PINFCONTEXT,PCSTR,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFindNextMatchLineW(PINFCONTEXT,PCWSTR,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupFreeA(PCSTR**,UINT);
+WINSETUPAPI BOOL WINAPI SetupFreeW(PCWSTR**,UINT);
+WINSETUPAPI BOOL WINAPI SetupGetBackupInformationA(HSPFILEQ,PSP_BACKUP_QUEUE_PARAMS_A);
+WINSETUPAPI BOOL WINAPI SetupGetBackupInformationW(HSPFILEQ,PSP_BACKUP_QUEUE_PARAMS_W);
+WINSETUPAPI BOOL WINAPI SetupGetBinaryField(PINFCONTEXT,DWORD,PBYTE,DWORD,LPDWORD);
+WINSETUPAPI DWORD WINAPI SetupGetFieldCount(PINFCONTEXT);
+WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoA(PCSTR,PSTR*,PDWORD,PDWORD,PUINT);
+WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoW(PCWSTR,PWSTR*,PDWORD,PDWORD,PUINT);
+WINSETUPAPI BOOL WINAPI SetupGetInfFileListA(PCSTR,DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetInfFileListW(PCWSTR,DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetInfInformationA(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetInfInformationW(LPCVOID,DWORD,PSP_INF_INFORMATION,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetIntField(PINFCONTEXT,DWORD,PINT);
+WINSETUPAPI BOOL WINAPI SetupGetLineByIndexA(HINF,PCSTR,DWORD,PINFCONTEXT);
+WINSETUPAPI BOOL WINAPI SetupGetLineByIndexW(HINF,PCWSTR,DWORD,PINFCONTEXT);
+WINSETUPAPI LONG WINAPI SetupGetLineCountA(HINF,PCSTR);
+WINSETUPAPI LONG WINAPI SetupGetLineCountW(HINF,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupGetLineTextA(PINFCONTEXT,HINF,PCSTR,PCSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetLineTextW(PINFCONTEXT,HINF,PCWSTR,PCWSTR,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetMultiSzFieldA(PINFCONTEXT,DWORD,PSTR,DWORD,LPDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetMultiSzFieldW(PINFCONTEXT,DWORD,PWSTR,DWORD,LPDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetSourceFileLocationA(HINF,PINFCONTEXT,PCSTR,PUINT,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetSourceFileLocationW(HINF,PINFCONTEXT,PCWSTR,PUINT,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetSourceFileSizeA(HINF,PINFCONTEXT,PCSTR,PCSTR,PDWORD,UINT);
+WINSETUPAPI BOOL WINAPI SetupGetSourceFileSizeW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PDWORD,UINT);
+WINSETUPAPI BOOL WINAPI SetupGetSourceInfoA(HINF,UINT,UINT,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetSourceInfoW(HINF,UINT,UINT,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetStringFieldA(PINFCONTEXT,DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetStringFieldW(PINFCONTEXT,DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetTargetPathA(HINF,PINFCONTEXT,PCSTR,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupGetTargetPathW(HINF,PINFCONTEXT,PCWSTR,PWSTR,DWORD,PDWORD);
+WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallback(HWND);
+WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallbackEx(HWND,HWND,UINT,DWORD,PVOID);
+WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogA(PCSTR,DWORD);
+WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogW(PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupInstallFileA(HINF,PINFCONTEXT,PCSTR,PCSTR,PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID);
+WINSETUPAPI BOOL WINAPI SetupInstallFileW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID);
+WINSETUPAPI BOOL WINAPI SetupInstallFileExA(HINF,PINFCONTEXT,PCSTR,PCSTR,PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID,PBOOL);
+WINSETUPAPI BOOL WINAPI SetupInstallFileExW(HINF,PINFCONTEXT,PCWSTR,PCWSTR,PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID,PBOOL);
+WINSETUPAPI BOOL WINAPI SetupInstallFilesFromInfSectionA(HINF,HINF,HSPFILEQ,PCSTR,PCSTR,UINT);
+WINSETUPAPI BOOL WINAPI SetupInstallFilesFromInfSectionW(HINF,HINF,HSPFILEQ,PCWSTR,PCWSTR,UINT);
+WINSETUPAPI BOOL WINAPI SetupInstallFromInfSectionA(HWND,HINF,PCSTR,UINT,HKEY,PCSTR,UINT,PSP_FILE_CALLBACK_A,PVOID,HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupInstallFromInfSectionW(HWND,HINF,PCWSTR,UINT,HKEY,PCWSTR,UINT,PSP_FILE_CALLBACK_W,PVOID,HDEVINFO,PSP_DEVINFO_DATA);
+WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionA(HINF,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionW(HINF,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionExA(HINF,PCSTR,DWORD,HDEVINFO,PSP_DEVINFO_DATA,PVOID,PVOID);
+WINSETUPAPI BOOL WINAPI SetupInstallServicesFromInfSectionExW(HINF,PCWSTR,DWORD,HDEVINFO,PSP_DEVINFO_DATA,PVOID,PVOID);
+WINSETUPAPI BOOL WINAPI SetupIterateCabinetA(PCSTR,DWORD,PSP_FILE_CALLBACK_A,PVOID);
+WINSETUPAPI BOOL WINAPI SetupIterateCabinetW(PCWSTR,DWORD,PSP_FILE_CALLBACK_W,PVOID);
+WINSETUPAPI BOOL WINAPI SetupLogErrorA(LPCSTR,LogSeverity);
+WINSETUPAPI BOOL WINAPI SetupLogErrorW(LPCWSTR,LogSeverity);
+WINSETUPAPI BOOL WINAPI SetupLogFileA(HSPFILELOG,PCSTR,PCSTR,PCSTR,DWORD,PCSTR,PCSTR,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupLogFileW(HSPFILELOG,PCWSTR,PCWSTR,PCWSTR,DWORD,PCWSTR,PCWSTR,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupOpenAppendInfFileA(PCSTR,HINF,PUINT);
+WINSETUPAPI BOOL WINAPI SetupOpenAppendInfFileW(PCWSTR,HINF,PUINT);
+WINSETUPAPI HSPFILEQ WINAPI SetupOpenFileQueue(VOID);
+WINSETUPAPI HINF WINAPI SetupOpenInfFileA(PCSTR,PCSTR,DWORD,PUINT);
+WINSETUPAPI HINF WINAPI SetupOpenInfFileW(PCWSTR,PCWSTR,DWORD,PUINT);
+WINSETUPAPI BOOL WINAPI SetupOpenLog(BOOL);
+WINSETUPAPI HINF WINAPI SetupOpenMasterInf(VOID);
+WINSETUPAPI UINT WINAPI SetupPromptForDiskA(HWND,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD,PSTR,DWORD,PDWORD);
+WINSETUPAPI UINT WINAPI SetupPromptForDiskW(HWND,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD,PWSTR,DWORD,PDWORD);
+WINSETUPAPI INT WINAPI SetupPromptReboot(HSPFILEQ,HWND,BOOL);
+WINSETUPAPI BOOL WINAPI SetupQueryA(DWORD,PCSTR**,PUINT);
+WINSETUPAPI BOOL WINAPI SetupQueryW(DWORD,PCWSTR**,PUINT);
+WINSETUPAPI BOOL WINAPI SetupQueryDrivesInDiskSpaceListA(HDSKSPC,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryDrivesInDiskSpaceListW(HDSKSPC,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryFileLogA(HSPFILELOG,PCSTR,PCSTR,SetupFileLogInfo,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryFileLogW(HSPFILELOG,PCWSTR,PCWSTR,SetupFileLogInfo,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryInfFileInformationA(PSP_INF_INFORMATION,UINT,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryInfFileInformationW(PSP_INF_INFORMATION,UINT,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION,UINT,PSP_ALTPLATFORM_INFO,PSP_ORIGINAL_FILE_INFO_A);
+WINSETUPAPI BOOL WINAPI SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION,UINT,PSP_ALTPLATFORM_INFO,PSP_ORIGINAL_FILE_INFO_W);
+WINSETUPAPI BOOL WINAPI SetupQueryInfVersionInformationA(PSP_INF_INFORMATION,UINT,PSTR,PSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQueryInfVersionInformationW(PSP_INF_INFORMATION,UINT,PCWSTR,PWSTR,DWORD,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupQuerySpaceRequiredOnDriveA(HDSKSPC,PCSTR,LONGLONG*,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupQuerySpaceRequiredOnDriveW(HDSKSPC,PCWSTR,LONGLONG*,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupQueueCopyA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueCopyW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A);
+WINSETUPAPI BOOL WINAPI SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W);
+WINSETUPAPI BOOL WINAPI SetupQueueCopySectionA(HSPFILEQ,PCSTR,HINF,HINF,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueCopySectionW(HSPFILEQ,PCWSTR,HINF,HINF,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueDefaultCopyA(HSPFILEQ,HINF,PCSTR,PCSTR,PCSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueDefaultCopyW(HSPFILEQ,HINF,PCWSTR,PCWSTR,PCWSTR,DWORD);
+WINSETUPAPI BOOL WINAPI SetupQueueDeleteA(HSPFILEQ,PCSTR,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueDeleteW(HSPFILEQ,PCWSTR,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueDeleteSectionA(HSPFILEQ,HINF,HINF,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueDeleteSectionW(HSPFILEQ,HINF,HINF,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueRenameA(HSPFILEQ,PCSTR,PCSTR,PCSTR,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueRenameW(HSPFILEQ,PCWSTR,PCWSTR,PCWSTR,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueRenameSectionA(HSPFILEQ,HINF,HINF,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupQueueRenameSectionW(HSPFILEQ,HINF,HINF,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveFileLogEntryA(HSPFILELOG,PCSTR,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveFileLogEntryW(HSPFILELOG,PCWSTR,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveFromDiskSpaceListA(HDSKSPC,PCSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveFromDiskSpaceListW(HDSKSPC,PCWSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveFromSourceListA(DWORD,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveFromSourceListW(DWORD,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveSectionFromDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,UINT,PVOID,UINT);
+WINSETUPAPI BOOL WINAPI SetupRemoveSectionFromDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,UINT,PVOID,UINT);
+WINSETUPAPI UINT WINAPI SetupRenameErrorA(HWND,PCSTR,PCSTR,PCSTR,UINT,DWORD);
+WINSETUPAPI UINT WINAPI SetupRenameErrorW(HWND,PCWSTR,PCWSTR,PCWSTR,UINT,DWORD);
+WINSETUPAPI BOOL WINAPI SetupScanFileQueueA(HSPFILEQ,DWORD,HWND,PSP_FILE_CALLBACK_A,PVOID,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupScanFileQueueW(HSPFILEQ,DWORD,HWND,PSP_FILE_CALLBACK_W,PVOID,PDWORD);
+WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdA(HINF,DWORD,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdW(HINF,DWORD,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdExA(HINF,DWORD,PCSTR,DWORD,DWORD,PVOID);
+WINSETUPAPI BOOL WINAPI SetupSetDirectoryIdExW(HINF,DWORD,PCWSTR,DWORD,DWORD,PVOID);
+WINSETUPAPI BOOL WINAPI SetupSetFileQueueAlternatePlatformA(HSPFILEQ,PSP_ALTPLATFORM_INFO,PCSTR);
+WINSETUPAPI BOOL WINAPI SetupSetFileQueueAlternatePlatformW(HSPFILEQ,PSP_ALTPLATFORM_INFO,PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupSetPlatformPathOverrideA(PCSTR);
+WINSETUPAPI BOOL WINAPI SetupSetPlatformPathOverrideW(PCWSTR);
+WINSETUPAPI BOOL WINAPI SetupSetSourceListA(DWORD,PCSTR*,UINT);
+WINSETUPAPI BOOL WINAPI SetupSetSourceListW(DWORD,PCWSTR*,UINT);
+WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(PVOID);
+WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG);
+
+/* for backward compatability */
+#define SetupDiCreateInterfaceDeviceW SetupDiCreateDeviceInterfaceW
+#define SetupDiCreateInterfaceDeviceRegKeyW SetupDiCreateDeviceInterfaceRegKeyW
+#define SetupDiOpenInterfaceDeviceW SetupDiOpenDeviceInterfaceW
+#define SetupDiGetInterfaceDeviceDetailW SetupDiGetDeviceInterfaceDetailW
+#define SetupDiCreateInterfaceDeviceA SetupDiCreateDeviceInterfaceA
+#define SetupDiCreateInterfaceDeviceRegKeyA SetupDiCreateDeviceInterfaceRegKeyA
+#define SetupDiOpenInterfaceDeviceA SetupDiOpenDeviceInterfaceA
+#define SetupDiGetInterfaceDeviceDetailA SetupDiGetDeviceInterfaceDetailA
+
+#ifdef UNICODE
+#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_W
+#define SetupAddInstallSectionToDiskSpaceList SetupAddInstallSectionToDiskSpaceListW
+#define SetupAddSectionToDiskSpaceList SetupAddSectionToDiskSpaceListW
+#define SetupAddToDiskSpaceList SetupAddToDiskSpaceListW
+#define SetupAddToSourceList SetupAddToSourceListW
+#define SetupAdjustDiskSpaceList SetupAdjustDiskSpaceListW
+#define SetupBackupError SetupBackupErrorW
+#define SetupCommitFileQueue SetupCommitFileQueueW
+#define SetupCopyError SetupCopyErrorW
+#define SetupCopyOEMInf SetupCopyOEMInfW
+#define SetupCreateDiskSpaceList SetupCreateDiskSpaceListW
+#define SetupDecompressOrCopyFile SetupDecompressOrCopyFileW
+#define SetupDefaultQueueCallback SetupDefaultQueueCallbackW
+#define SetupDeleteError SetupDeleteErrorW
+#define SetupDiBuildClassInfoListEx SetupDiBuildClassInfoListExW
+#define SetupDiClassGuidsFromNameEx SetupDiClassGuidsFromNameExW
+#define SetupDiClassGuidsFromName SetupDiClassGuidsFromNameW
+#define SetupDiClassNameFromGuidEx SetupDiClassNameFromGuidExW
+#define SetupDiClassNameFromGuid SetupDiClassNameFromGuidW
+#define SetupDiCreateDeviceInfoListEx SetupDiCreateDeviceInfoListExW
+#define SetupDiCreateDeviceInfo SetupDiCreateDeviceInfoW
+#define SetupDiCreateDeviceInterfaceRegKey SetupDiCreateDeviceInterfaceRegKeyW
+#define SetupDiCreateInterfaceDeviceRegKey SetupDiCreateDeviceInterfaceRegKeyW
+#define SetupDiCreateDeviceInterface SetupDiCreateDeviceInterfaceW
+#define SetupDiCreateInterfaceDevice SetupDiCreateDeviceInterfaceW
+#define SetupDiCreateDevRegKey SetupDiCreateDevRegKeyW
+#define SetupDiEnumDriverInfo SetupDiEnumDriverInfoW
+#define SetupDiGetActualSectionToInstall SetupDiGetActualSectionToInstallW
+#define SetupDiGetClassDescriptionEx SetupDiGetClassDescriptionExW
+#define SetupDiGetClassDescription SetupDiGetClassDescriptionW
+#define SetupDiGetClassDevPropertySheets SetupDiGetClassDevPropertySheetsW
+#define SetupDiGetClassDevsEx SetupDiGetClassDevsExW
+#define SetupDiGetClassDevs SetupDiGetClassDevsW
+#define SetupDiGetClassImageListEx SetupDiGetClassImageListExW
+#define SetupDiGetClassInstallParams SetupDiGetClassInstallParamsW
+#define SetupDiGetClassRegistryProperty SetupDiGetClassRegistryPropertyW
+#define SetupDiGetDeviceInfoListDetail SetupDiGetDeviceInfoListDetailW
+#define SetupDiGetDeviceInstallParams SetupDiGetDeviceInstallParamsW
+#define SetupDiGetDeviceInstanceId SetupDiGetDeviceInstanceIdW
+#define SetupDiGetDeviceInterfaceDetail SetupDiGetDeviceInterfaceDetailW
+#define SetupDiGetInterfaceDeviceDetail SetupDiGetDeviceInterfaceDetailW
+#define SetupDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryPropertyW
+#define SetupDiGetDriverInfoDetail SetupDiGetDriverInfoDetailW
+#define SetupDiGetDriverInstallParams SetupDiGetDriverInstallParamsW
+#define SetupDiGetHwProfileFriendlyNameEx SetupDiGetHwProfileFriendlyNameExW
+#define SetupDiGetHwProfileFriendlyName SetupDiGetHwProfileFriendlyNameW
+#define SetupDiGetHwProfileListEx SetupDiGetHwProfileListExW
+#define SetupDiGetINFClass SetupDiGetINFClassW
+#define SetupDiGetSelectedDriver SetupDiGetSelectedDriverW
+#define SetupDiInstallClassEx SetupDiInstallClassExW
+#define SetupDiInstallClass SetupDiInstallClassW
+#define SetupDiOpenClassRegKeyEx SetupDiOpenClassRegKeyExW
+#define SetupDiOpenDeviceInfo SetupDiOpenDeviceInfoW
+#define SetupDiOpenDeviceInterface SetupDiOpenDeviceInterfaceW
+#define SetupDiOpenInterfaceDevice SetupDiOpenDeviceInterfaceW
+#define SetupDiSetClassInstallParams SetupDiSetClassInstallParamsW
+#define SetupDiSetClassRegistryProperty SetupDiSetClassRegistryPropertyW
+#define SetupDiSetDeviceInstallParams SetupDiSetDeviceInstallParamsW
+#define SetupDiSetDeviceRegistryProperty SetupDiSetDeviceRegistryPropertyW
+#define SetupDiSetDriverInstallParams SetupDiSetDriverInstallParamsW
+#define SetupDiSetSelectedDriver SetupDiSetSelectedDriverW
+#define SetupDuplicateDiskSpaceList SetupDuplicateDiskSpaceListW
+#define SetupFindFirstLine SetupFindFirstLineW
+#define SetupFindNextMatchLine SetupFindNextMatchLineW
+#define SetupFreeSourceList SetupFreeSourceListW
+#define SetupGetBackupInformation SetupGetBackupInformationW
+#define SetupGetFileCompressionInfo SetupGetFileCompressionInfoW
+#define SetupGetInfFileList SetupGetInfFileListW
+#define SetupGetInfInformation SetupGetInfInformationW
+#define SetupGetLineByIndex SetupGetLineByIndexW
+#define SetupGetLineCount SetupGetLineCountW
+#define SetupGetLineText SetupGetLineTextW
+#define SetupGetMultiSzField SetupGetMultiSzFieldW
+#define SetupGetSourceFileLocation SetupGetSourceFileLocationW
+#define SetupGetSourceFileSize SetupGetSourceFileSizeW
+#define SetupGetSourceInfo SetupGetSourceInfoW
+#define SetupGetStringField SetupGetStringFieldW
+#define SetupGetTargetPath SetupGetTargetPathW
+#define SetupInitializeFileLog SetupInitializeFileLogW
+#define SetupInstallFileEx SetupInstallFileExW
+#define SetupInstallFilesFromInfSection SetupInstallFilesFromInfSectionW
+#define SetupInstallFile SetupInstallFileW
+#define SetupInstallFromInfSection SetupInstallFromInfSectionW
+#define SetupInstallServicesFromInfSectionEx SetupInstallServicesFromInfSectionExW
+#define SetupInstallServicesFromInfSection SetupInstallServicesFromInfSectionW
+#define SetupIterateCabinet SetupIterateCabinetW
+#define SetupLogError SetupLogErrorW
+#define SetupLogFile SetupLogFileW
+#define SetupOpenAppendInfFile SetupOpenAppendInfFileW
+#define SetupOpenInfFile SetupOpenInfFileW
+#define SetupPromptForDisk SetupPromptForDiskW
+#define SetupQueryDrivesInDiskSpaceList SetupQueryDrivesInDiskSpaceListW
+#define SetupQueryFileLog SetupQueryFileLogW
+#define SetupQueryInfFileInformation SetupQueryInfFileInformationW
+#define SetupQueryInfOriginalFileInformation SetupQueryInfOriginalFileInformationW
+#define SetupQueryInfVersionInformation SetupQueryInfVersionInformationW
+#define SetupQuerySourceList SetupQuerySourceListW
+#define SetupQuerySpaceRequiredOnDrive SetupQuerySpaceRequiredOnDriveW
+#define SetupQueueCopyIndirect SetupQueueCopyIndirectW
+#define SetupQueueCopySection SetupQueueCopySectionW
+#define SetupQueueCopy SetupQueueCopyW
+#define SetupQueueDefaultCopy SetupQueueDefaultCopyW
+#define SetupQueueDeleteSection SetupQueueDeleteSectionW
+#define SetupQueueDelete SetupQueueDeleteW
+#define SetupQueueRenameSection SetupQueueRenameSectionW
+#define SetupQueueRename SetupQueueRenameW
+#define SetupRemoveFileLogEntry SetupRemoveFileLogEntryW
+#define SetupRemoveFromDiskSpaceList SetupRemoveFromDiskSpaceListW
+#define SetupRemoveFromSourceList SetupRemoveFromSourceListW
+#define SetupRemoveInstallSectionFromDiskSpaceList SetupRemoveInstallSectionFromDiskSpaceListW
+#define SetupRemoveSectionFromDiskSpaceList SetupRemoveSectionFromDiskSpaceListW
+#define SetupRenameError SetupRenameErrorW
+#define SetupScanFileQueue SetupScanFileQueueW
+#define SetupSetDirectoryIdEx SetupSetDirectoryIdExW
+#define SetupSetDirectoryId SetupSetDirectoryIdW
+#define SetupSetFileQueueAlternatePlatform SetupSetFileQueueAlternatePlatformW
+#define SetupSetPlatformPathOverride SetupSetPlatformPathOverrideW
+#define SetupSetSourceList SetupSetSourceListW
+#else
+#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A
+#define SetupAddInstallSectionToDiskSpaceList SetupAddInstallSectionToDiskSpaceListA
+#define SetupAddSectionToDiskSpaceList SetupAddSectionToDiskSpaceListA
+#define SetupAddToDiskSpaceList SetupAddToDiskSpaceListA
+#define SetupAddToSourceList SetupAddToSourceListA
+#define SetupAdjustDiskSpaceList SetupAdjustDiskSpaceListA
+#define SetupBackupError SetupBackupErrorA
+#define SetupCommitFileQueue SetupCommitFileQueueA
+#define SetupCopyError SetupCopyErrorA
+#define SetupCopyOEMInf SetupCopyOEMInfA
+#define SetupCreateDiskSpaceList SetupCreateDiskSpaceListA
+#define SetupDecompressOrCopyFile SetupDecompressOrCopyFileA
+#define SetupDefaultQueueCallback SetupDefaultQueueCallbackA
+#define SetupDeleteError SetupDeleteErrorA
+#define SetupDiBuildClassInfoListEx SetupDiBuildClassInfoListExA
+#define SetupDiClassGuidsFromName SetupDiClassGuidsFromNameA
+#define SetupDiClassGuidsFromNameEx SetupDiClassGuidsFromNameExA
+#define SetupDiClassNameFromGuid SetupDiClassNameFromGuidA
+#define SetupDiClassNameFromGuidEx SetupDiClassNameFromGuidExA
+#define SetupDiCreateDeviceInfo SetupDiCreateDeviceInfoA
+#define SetupDiCreateDeviceInfoListEx SetupDiCreateDeviceInfoListExA
+#define SetupDiCreateDeviceInterface SetupDiCreateDeviceInterfaceA
+#define SetupDiCreateInterfaceDevice SetupDiCreateDeviceInterfaceA
+#define SetupDiCreateDeviceInterfaceRegKey SetupDiCreateDeviceInterfaceRegKeyA
+#define SetupDiCreateInterfaceDeviceRegKey SetupDiCreateDeviceInterfaceRegKeyA
+#define SetupDiCreateDevRegKey SetupDiCreateDevRegKeyA
+#define SetupDiDeleteInterfaceDeviceData SetupDiDeleteDeviceInterfaceData
+#define SetupDiEnumDriverInfo SetupDiEnumDriverInfoA
+#define SetupDiGetActualSectionToInstall SetupDiGetActualSectionToInstallA
+#define SetupDiGetClassDescription SetupDiGetClassDescriptionA
+#define SetupDiGetClassDescriptionEx SetupDiGetClassDescriptionExA
+#define SetupDiGetClassDevPropertySheets SetupDiGetClassDevPropertySheetsA
+#define SetupDiGetClassDevs SetupDiGetClassDevsA
+#define SetupDiGetClassDevsEx SetupDiGetClassDevsExA
+#define SetupDiGetClassImageListEx SetupDiGetClassImageListExA
+#define SetupDiGetClassInstallParams SetupDiGetClassInstallParamsA
+#define SetupDiGetClassRegistryProperty SetupDiGetClassRegistryPropertyA
+#define SetupDiGetDeviceInfoListDetail SetupDiGetDeviceInfoListDetailA
+#define SetupDiGetDeviceInstallParams SetupDiGetDeviceInstallParamsA
+#define SetupDiGetDeviceInstanceId SetupDiGetDeviceInstanceIdA
+#define SetupDiGetDeviceInterfaceDetail SetupDiGetDeviceInterfaceDetailA
+#define SetupDiGetInterfaceDeviceDetail SetupDiGetDeviceInterfaceDetailA
+#define SetupDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryPropertyA
+#define SetupDiGetDriverInfoDetail SetupDiGetDriverInfoDetailA
+#define SetupDiGetDriverInstallParams SetupDiGetDriverInstallParamsA
+#define SetupDiGetHwProfileFriendlyName SetupDiGetHwProfileFriendlyNameA
+#define SetupDiGetHwProfileFriendlyNameEx SetupDiGetHwProfileFriendlyNameExA
+#define SetupDiGetHwProfileListEx SetupDiGetHwProfileListExA
+#define SetupDiGetINFClass SetupDiGetINFClassA
+#define SetupDiGetSelectedDriver SetupDiGetSelectedDriverA
+#define SetupDiInstallClass SetupDiInstallClassA
+#define SetupDiInstallClassEx SetupDiInstallClassExA
+#define SetupDiOpenClassRegKeyEx SetupDiOpenClassRegKeyExA
+#define SetupDiOpenDeviceInfo SetupDiOpenDeviceInfoA
+#define SetupDiOpenDeviceInterface SetupDiOpenDeviceInterfaceA
+#define SetupDiOpenInterfaceDevice SetupDiOpenDeviceInterfaceA
+#define SetupDiSetClassInstallParams SetupDiSetClassInstallParamsA
+#define SetupDiSetClassRegistryProperty SetupDiSetClassRegistryPropertyA
+#define SetupDiSetDeviceInstallParams SetupDiSetDeviceInstallParamsA
+#define SetupDiSetDeviceRegistryProperty SetupDiSetDeviceRegistryPropertyA
+#define SetupDiSetDriverInstallParams SetupDiSetDriverInstallParamsA
+#define SetupDiSetSelectedDriver SetupDiSetSelectedDriverA
+#define SetupDuplicateDiskSpaceList SetupDuplicateDiskSpaceListA
+#define SetupFindFirstLine SetupFindFirstLineA
+#define SetupFindNextMatchLine SetupFindNextMatchLineA
+#define SetupFreeSourceList SetupFreeSourceListA
+#define SetupGetBackupInformation SetupGetBackupInformationA
+#define SetupGetFileCompressionInfo SetupGetFileCompressionInfoA
+#define SetupGetInfFileList SetupGetInfFileListA
+#define SetupGetInfInformation SetupGetInfInformationA
+#define SetupGetLineByIndex SetupGetLineByIndexA
+#define SetupGetLineCount SetupGetLineCountA
+#define SetupGetLineText SetupGetLineTextA
+#define SetupGetMultiSzField SetupGetMultiSzFieldA
+#define SetupGetSourceFileLocation SetupGetSourceFileLocationA
+#define SetupGetSourceFileSize SetupGetSourceFileSizeA
+#define SetupGetSourceInfo SetupGetSourceInfoA
+#define SetupGetStringField SetupGetStringFieldA
+#define SetupGetTargetPath SetupGetTargetPathA
+#define SetupInitializeFileLog SetupInitializeFileLogA
+#define SetupInstallFile SetupInstallFileA
+#define SetupInstallFileEx SetupInstallFileExA
+#define SetupInstallFilesFromInfSection SetupInstallFilesFromInfSectionA
+#define SetupInstallFromInfSection SetupInstallFromInfSectionA
+#define SetupInstallServicesFromInfSection SetupInstallServicesFromInfSectionA
+#define SetupInstallServicesFromInfSectionEx SetupInstallServicesFromInfSectionExA
+#define SetupIterateCabinet SetupIterateCabinetA
+#define SetupLogError SetupLogErrorA
+#define SetupLogFile SetupLogFileA
+#define SetupOpenAppendInfFile SetupOpenAppendInfFileA
+#define SetupOpenInfFile SetupOpenInfFileA
+#define SetupPromptForDisk SetupPromptForDiskA
+#define SetupQueryDrivesInDiskSpaceList SetupQueryDrivesInDiskSpaceListA
+#define SetupQueryFileLog SetupQueryFileLogA
+#define SetupQueryInfFileInformation SetupQueryInfFileInformationA
+#define SetupQueryInfOriginalFileInformation SetupQueryInfOriginalFileInformationA
+#define SetupQueryInfVersionInformation SetupQueryInfVersionInformationA
+#define SetupQuerySourceList SetupQuerySourceListA
+#define SetupQuerySpaceRequiredOnDrive SetupQuerySpaceRequiredOnDriveA
+#define SetupQueueCopy SetupQueueCopyA
+#define SetupQueueCopyIndirect SetupQueueCopyIndirectA
+#define SetupQueueCopySection SetupQueueCopySectionA
+#define SetupQueueDefaultCopy SetupQueueDefaultCopyA
+#define SetupQueueDelete SetupQueueDeleteA
+#define SetupQueueDeleteSection SetupQueueDeleteSectionA
+#define SetupQueueRename SetupQueueRenameA
+#define SetupQueueRenameSection SetupQueueRenameSectionA
+#define SetupRemoveFileLogEntry SetupRemoveFileLogEntryA
+#define SetupRemoveFromDiskSpaceList SetupRemoveFromDiskSpaceListA
+#define SetupRemoveFromSourceList SetupRemoveFromSourceListA
+#define SetupRemoveInstallSectionFromDiskSpaceList SetupRemoveInstallSectionFromDiskSpaceListA
+#define SetupRemoveSectionFromDiskSpaceList SetupRemoveSectionFromDiskSpaceListA
+#define SetupRenameError SetupRenameErrorA
+#define SetupScanFileQueue SetupScanFileQueueA
+#define SetupSetDirectoryId SetupSetDirectoryIdA
+#define SetupSetDirectoryIdEx SetupSetDirectoryIdExA
+#define SetupSetFileQueueAlternatePlatform SetupSetFileQueueAlternatePlatformA
+#define SetupSetPlatformPathOverride SetupSetPlatformPathOverrideA
+#define SetupSetSourceList SetupSetSourceListA
+#endif /* UNICODE */
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+#endif /* _SETUPAPI_H_ */
+
diff --git a/winsup/w32api/include/shlobj.h b/winsup/w32api/include/shlobj.h
index 44e0d4c..c22ef79 100644
--- a/winsup/w32api/include/shlobj.h
+++ b/winsup/w32api/include/shlobj.h
@@ -29,12 +29,6 @@ extern "C" {
#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
@@ -117,6 +111,7 @@ extern "C" {
#endif
#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
#define CSIDL_DESKTOP 0
+#define CSIDL_INTERNET 1
#define CSIDL_PROGRAMS 2
#define CSIDL_CONTROLS 3
#define CSIDL_PRINTERS 4
@@ -137,8 +132,14 @@ extern "C" {
#define CSIDL_COMMON_PROGRAMS 23
#define CSIDL_COMMON_STARTUP 24
#define CSIDL_COMMON_DESKTOPDIRECTORY 25
+#define CSIDL_APPDATA 26
+#define CSIDL_PRINTHOOD 27
+#define CSIDL_ALTSTARTUP 29
#define CSIDL_COMMON_ALTSTARTUP 30
#define CSIDL_COMMON_FAVORITES 31
+#define CSIDL_INTERNET_CACHE 32
+#define CSIDL_COOKIES 33
+#define CSIDL_HISTORY 34
#define CFSTR_SHELLIDLIST "Shell IDList Array"
#define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets"
#define CFSTR_NETRESOURCES "Net Resource"
@@ -152,12 +153,25 @@ extern "C" {
#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 GCS_VERBA 0
+#define GCS_HELPTEXTA 1
+#define GCS_VALIDATEA 2
+#define GCS_VERBW 4
+#define GCS_HELPTEXTW 5
+#define GCS_VALIDATEW 6
+#define GCS_UNICODE 4
+#ifdef UNICODE
+#define GCS_VERB GCS_VERBW
+#define GCS_HELPTEXT GCS_HELPTEXTW
+#define GCS_VALIDATE GCS_VALIDATEW
+#else
+#define GCS_VERB GCS_VERBA
+#define GCS_HELPTEXT GCS_HELPTEXTA
+#define GCS_VALIDATE GCS_VALIDATEA
+#endif
+#define CMDSTR_NEWFOLDER TEXT("NewFolder")
+#define CMDSTR_VIEWLIST TEXT("ViewList")
+#define CMDSTR_VIEWDETAILS TEXT("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
diff --git a/winsup/w32api/include/winbase.h b/winsup/w32api/include/winbase.h
index 0309788..86917e5 100644
--- a/winsup/w32api/include/winbase.h
+++ b/winsup/w32api/include/winbase.h
@@ -1291,6 +1291,7 @@ VOID WINAPI GlobalUnfix(HGLOBAL);
BOOL WINAPI GlobalUnlock(HGLOBAL);
BOOL WINAPI GlobalUnWire(HGLOBAL);
PVOID WINAPI GlobalWire(HGLOBAL);
+#define HasOverlappedIoCompleted(lpOverlapped) ((lpOverlapped)->Internal != STATUS_PENDING)
PVOID WINAPI HeapAlloc(HANDLE,DWORD,DWORD);
UINT WINAPI HeapCompact(HANDLE,DWORD);
HANDLE WINAPI HeapCreate(DWORD,DWORD,DWORD);
diff --git a/winsup/w32api/include/winioctl.h b/winsup/w32api/include/winioctl.h
index 7cc1be6..b017199 100644
--- a/winsup/w32api/include/winioctl.h
+++ b/winsup/w32api/include/winioctl.h
@@ -177,14 +177,14 @@ typedef enum _MEDIA_TYPE {
F5_160_512,
RemovableMedia,
FixedMedia
-} MEDIA_TYPE;
+} MEDIA_TYPE, *PMEDIA_TYPE ;
typedef struct _DISK_GEOMETRY {
LARGE_INTEGER Cylinders;
MEDIA_TYPE MediaType;
DWORD TracksPerCylinder;
DWORD SectorsPerTrack;
DWORD BytesPerSector;
-} DISK_GEOMETRY;
+} DISK_GEOMETRY, *PDISK_GEOMETRY;
typedef struct _DISK_PERFORMANCE {
LARGE_INTEGER BytesRead;
LARGE_INTEGER BytesWritten;
@@ -193,7 +193,7 @@ typedef struct _DISK_PERFORMANCE {
DWORD ReadCount;
DWORD WriteCount;
DWORD QueueDepth;
-} DISK_PERFORMANCE;
+} DISK_PERFORMANCE, *PDISK_PERFORMANCE;
typedef struct _DISK_RECORD {
LARGE_INTEGER ByteOffset;
LARGE_INTEGER StartTime;
diff --git a/winsup/w32api/include/winnt.h b/winsup/w32api/include/winnt.h
index 0fed6db..fd01ef5 100644
--- a/winsup/w32api/include/winnt.h
+++ b/winsup/w32api/include/winnt.h
@@ -41,10 +41,10 @@ extern "C" {
#ifndef VOID
#define VOID void
+#endif
typedef char CHAR;
typedef short SHORT;
typedef long LONG;
-#endif
typedef CHAR CCHAR;
typedef unsigned char UCHAR,*PUCHAR;
typedef unsigned short USHORT,*PUSHORT;
diff --git a/winsup/w32api/include/winsock2.h b/winsup/w32api/include/winsock2.h
index ca13028..83c48fa 100644
--- a/winsup/w32api/include/winsock2.h
+++ b/winsup/w32api/include/winsock2.h
@@ -17,10 +17,6 @@
#include <windows.h>
-#ifndef _WTYPES_H
-#include <wtypes.h> /* for BLOB */
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -709,6 +705,13 @@ typedef struct _WSAVersion
* but itself needs LPSOCKADDR which is defined earlier in this file
*/
#include <nspapi.h>
+#ifndef __BLOB_T_DEFINED /* also in wtypes.h */
+#define __BLOB_T_DEFINED
+typedef struct _BLOB {
+ ULONG cbSize;
+ BYTE *pBlobData;
+} BLOB,*PBLOB,*LPBLOB;
+#endif
typedef struct _WSAQuerySetA
{
diff --git a/winsup/w32api/include/wtypes.h b/winsup/w32api/include/wtypes.h
index 7bd929d..34aa7cd 100644
--- a/winsup/w32api/include/wtypes.h
+++ b/winsup/w32api/include/wtypes.h
@@ -11,10 +11,13 @@ extern "C" {
#define CBPCLIPDATA(d) ((d).cbSize-sizeof((d).ulClipFmt))
#define DECIMAL_NEG ((BYTE)0x80)
#define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;}
+#ifndef __BLOB_T_DEFINED /* also in winsock2.h */
+#define __BLOB_T_DEFINED
typedef struct _BLOB {
ULONG cbSize;
BYTE *pBlobData;
} BLOB,*PBLOB,*LPBLOB;
+#endif
typedef enum tagDVASPECT {
DVASPECT_CONTENT=1,
DVASPECT_THUMBNAIL=2,
diff --git a/winsup/w32api/lib/setupapi.def b/winsup/w32api/lib/setupapi.def
new file mode 100644
index 0000000..50eb3c9
--- /dev/null
+++ b/winsup/w32api/lib/setupapi.def
@@ -0,0 +1,375 @@
+LIBRARY setupapi.dll
+EXPORTS
+AcquireSCMLock@8
+AddMiniIconToList@8
+AddTagToGroupOrderListEntry@12
+AppendStringToMultiSz@24
+AssertFail@12
+CaptureAndConvertAnsiArg@8
+CaptureStringArg@8
+CenterWindowRelativeToParent@4
+ConcatenatePaths@16
+DelayedMove@8
+DelimStringToMultiSz@12
+DestroyTextFileReadBuffer@4
+DoInstallActionWithParams@24
+DoesUserHavePrivilege@4
+DuplicateString@4
+EnablePrivilege@8
+ExtensionPropSheetPageProc@12
+FileExists@8
+FreeStringArray@8
+GetCurrentDriverSigningPolicy@4
+GetSetFileTimestamp@20
+GetVersionInfoFromImage@12
+HandleFailedVerification@40
+InfIsFromOemLocation@8
+InstallCatalog@12
+InstallHinfSection@16
+InstallHinfSectionA@16
+InstallHinfSectionW@16
+InstallStop@4
+InstallStopEx@12
+IsUserAdmin@0
+LookUpStringInTable@12
+MemoryInitialize@4
+MultiByteToUnicode@8
+MultiSzFromSearchControl@16
+MyFree@4
+MyGetFileTitle@4
+MyMalloc@4
+MyRealloc@8
+OpenAndMapFileForRead@20
+OutOfMemory@4
+QueryMultiSzValueToArray@24
+QueryRegistryValue@20
+ReadAsciiOrUnicodeTextFile@8
+RegistryDelnode@8
+RetreiveFileSecurity@8
+RetrieveServiceConfig@8
+SearchForInfFile@24
+SetArrayToMultiSzValue@20
+SetupAddInstallSectionToDiskSpaceListA@24
+SetupAddInstallSectionToDiskSpaceListW@24
+SetupAddSectionToDiskSpaceListA@28
+SetupAddSectionToDiskSpaceListW@28
+SetupAddToDiskSpaceListA@28
+SetupAddToDiskSpaceListW@28
+SetupAddToSourceListA@8
+SetupAddToSourceListW@8
+SetupAdjustDiskSpaceListA@24
+SetupAdjustDiskSpaceListW@24
+SetupBackupErrorA@24
+SetupBackupErrorW@24
+SetupCancelTemporarySourceList@0
+SetupCloseFileQueue@4
+SetupCloseInfFile@4
+SetupCloseLog@0
+SetupCommitFileQueue@16
+SetupCommitFileQueueA@16
+SetupCommitFileQueueW@16
+SetupCopyErrorA@44
+SetupCopyErrorW@44
+SetupCopyOEMInfA@32
+SetupCopyOEMInfW@32
+SetupCreateDiskSpaceListA@12
+SetupCreateDiskSpaceListW@12
+SetupDecompressOrCopyFileA@12
+SetupDecompressOrCopyFileW@12
+SetupDefaultQueueCallback@16
+SetupDefaultQueueCallbackA@16
+SetupDefaultQueueCallbackW@16
+SetupDeleteErrorA@20
+SetupDeleteErrorW@20
+SetupDestroyDiskSpaceList@4
+SetupDiAskForOEMDisk@8
+SetupDiBuildClassInfoList@16
+SetupDiBuildClassInfoListExA@24
+SetupDiBuildClassInfoListExW@24
+SetupDiBuildDriverInfoList@12
+SetupDiCallClassInstaller@12
+SetupDiCancelDriverInfoSearch@4
+SetupDiChangeState@8
+SetupDiClassGuidsFromNameA@16
+SetupDiClassGuidsFromNameExA@24
+SetupDiClassGuidsFromNameExW@24
+SetupDiClassGuidsFromNameW@16
+SetupDiClassNameFromGuidA@16
+SetupDiClassNameFromGuidExA@24
+SetupDiClassNameFromGuidExW@24
+SetupDiClassNameFromGuidW@16
+SetupDiCreateDevRegKeyA@28
+SetupDiCreateDevRegKeyW@28
+SetupDiCreateDeviceInfoA@28
+SetupDiCreateDeviceInfoList@8
+SetupDiCreateDeviceInfoListExA@16
+SetupDiCreateDeviceInfoListExW@16
+SetupDiCreateDeviceInfoW@28
+SetupDiCreateDeviceInterfaceA@24
+SetupDiCreateDeviceInterfaceRegKeyA@24
+SetupDiCreateDeviceInterfaceRegKeyW@24
+SetupDiCreateDeviceInterfaceW@24
+SetupDiDeleteDevRegKey@20
+SetupDiDeleteDeviceInfo@8
+SetupDiDeleteDeviceInterfaceData@8
+SetupDiDeleteDeviceInterfaceRegKey@12
+SetupDiDestroyClassImageList@4
+SetupDiDestroyDeviceInfoList@4
+SetupDiDestroyDriverInfoList@12
+SetupDiDrawMiniIcon@28
+SetupDiEnumDeviceInfo@12
+SetupDiEnumDeviceInterfaces@20
+SetupDiEnumDriverInfoA@20
+SetupDiEnumDriverInfoW@20
+SetupDiGetActualSectionToInstallA@24
+SetupDiGetActualSectionToInstallW@24
+SetupDiGetClassBitmapIndex@8
+SetupDiGetClassDescriptionA@16
+SetupDiGetClassDescriptionExA@24
+SetupDiGetClassDescriptionExW@24
+SetupDiGetClassDescriptionW@16
+SetupDiGetClassDevPropertySheetsA@24
+SetupDiGetClassDevPropertySheetsW@24
+SetupDiGetClassDevsA@16
+SetupDiGetClassDevsExA@28
+SetupDiGetClassDevsExW@28
+SetupDiGetClassDevsW@16
+SetupDiGetClassImageIndex@12
+SetupDiGetClassImageList@4
+SetupDiGetClassImageListExA@12
+SetupDiGetClassImageListExW@12
+SetupDiGetClassInstallParamsA@20
+SetupDiGetClassInstallParamsW@20
+SetupDiGetDeviceInfoListClass@8
+SetupDiGetDeviceInfoListDetailA@8
+SetupDiGetDeviceInfoListDetailW@8
+SetupDiGetDeviceInstallParamsA@12
+SetupDiGetDeviceInstallParamsW@12
+SetupDiGetDeviceInstanceIdA@20
+SetupDiGetDeviceInstanceIdW@20
+SetupDiGetDeviceInterfaceAlias@16
+SetupDiGetDeviceInterfaceDetailA@24
+SetupDiGetDeviceInterfaceDetailW@24
+SetupDiGetDeviceRegistryPropertyA@28
+SetupDiGetDeviceRegistryPropertyW@28
+SetupDiGetDriverInfoDetailA@24
+SetupDiGetDriverInfoDetailW@24
+SetupDiGetDriverInstallParamsA@16
+SetupDiGetDriverInstallParamsW@16
+SetupDiGetHwProfileFriendlyNameA@16
+SetupDiGetHwProfileFriendlyNameExA@24
+SetupDiGetHwProfileFriendlyNameExW@24
+SetupDiGetHwProfileFriendlyNameW@16
+SetupDiGetHwProfileList@16
+SetupDiGetHwProfileListExA@24
+SetupDiGetHwProfileListExW@24
+SetupDiGetINFClassA@20
+SetupDiGetINFClassW@20
+SetupDiGetSelectedDevice@8
+SetupDiGetSelectedDriverA@12
+SetupDiGetSelectedDriverW@12
+SetupDiGetWizardPage@20
+SetupDiInstallClassA@16
+SetupDiInstallClassExA@28
+SetupDiInstallClassExW@28
+SetupDiInstallClassW@16
+SetupDiInstallDevice@8
+SetupDiInstallDeviceInterfaces@8
+SetupDiInstallDriverFiles@8
+SetupDiLoadClassIcon@12
+SetupDiMoveDuplicateDevice@8
+SetupDiOpenClassRegKey@8
+SetupDiOpenClassRegKeyExA@20
+SetupDiOpenClassRegKeyExW@20
+SetupDiOpenDevRegKey@24
+SetupDiOpenDeviceInfoA@20
+SetupDiOpenDeviceInfoW@20
+SetupDiOpenDeviceInterfaceA@16
+SetupDiOpenDeviceInterfaceRegKey@16
+SetupDiOpenDeviceInterfaceW@16
+SetupDiRegisterCoDeviceInstallers@8
+SetupDiRegisterDeviceInfo@24
+SetupDiRemoveDevice@8
+SetupDiRemoveDeviceInterface@8
+SetupDiSelectBestCompatDrv@8
+SetupDiSelectDevice@8
+SetupDiSelectOEMDrv@12
+SetupDiSetClassInstallParamsA@16
+SetupDiSetClassInstallParamsW@16
+SetupDiSetDeviceInstallParamsA@12
+SetupDiSetDeviceInstallParamsW@12
+SetupDiSetDeviceRegistryPropertyA@20
+SetupDiSetDeviceRegistryPropertyW@20
+SetupDiSetDriverInstallParamsA@16
+SetupDiSetDriverInstallParamsW@16
+SetupDiSetSelectedDevice@8
+SetupDiSetSelectedDriverA@12
+SetupDiSetSelectedDriverW@12
+SetupDiUnremoveDevice@8
+SetupDuplicateDiskSpaceListA@16
+SetupDuplicateDiskSpaceListW@16
+SetupFindFirstLineA@16
+SetupFindFirstLineW@16
+SetupFindNextLine@8
+SetupFindNextMatchLineA@12
+SetupFindNextMatchLineW@12
+SetupFreeSourceListA@8
+SetupFreeSourceListW@8
+SetupGetBackupInformationA@8
+SetupGetBackupInformationW@8
+SetupGetBinaryField@20
+SetupGetFieldCount@4
+SetupGetFileCompressionInfoA@20
+SetupGetFileCompressionInfoW@20
+SetupGetInfFileListA@20
+SetupGetInfFileListW@20
+SetupGetInfInformationA@20
+SetupGetInfInformationW@20
+SetupGetInfSections@16
+SetupGetIntField@12
+SetupGetLineByIndexA@16
+SetupGetLineByIndexW@16
+SetupGetLineCountA@8
+SetupGetLineCountW@8
+SetupGetLineTextA@28
+SetupGetLineTextW@28
+SetupGetMultiSzFieldA@20
+SetupGetMultiSzFieldW@20
+SetupGetSourceFileLocationA@28
+SetupGetSourceFileLocationW@28
+SetupGetSourceFileSizeA@24
+SetupGetSourceFileSizeW@24
+SetupGetSourceInfoA@24
+SetupGetSourceInfoW@24
+SetupGetStringFieldA@20
+SetupGetStringFieldW@20
+SetupGetTargetPathA@24
+SetupGetTargetPathW@24
+SetupInitDefaultQueueCallback@4
+SetupInitDefaultQueueCallbackEx@20
+SetupInitializeFileLogA@8
+SetupInitializeFileLogW@8
+SetupInstallFileA@32
+SetupInstallFileExA@36
+SetupInstallFileExW@36
+SetupInstallFileW@32
+SetupInstallFilesFromInfSectionA@24
+SetupInstallFilesFromInfSectionW@24
+SetupInstallFromInfSectionA@44
+SetupInstallFromInfSectionW@44
+SetupInstallServicesFromInfSectionA@12
+SetupInstallServicesFromInfSectionExA@28
+SetupInstallServicesFromInfSectionExW@28
+SetupInstallServicesFromInfSectionW@12
+SetupIterateCabinetA@16
+SetupIterateCabinetW@16
+SetupLogErrorA@8
+SetupLogErrorW@8
+SetupLogFileA@36
+SetupLogFileW@36
+SetupOpenAppendInfFileA@12
+SetupOpenAppendInfFileW@12
+SetupOpenFileQueue@0
+SetupOpenInfFileA@16
+SetupOpenInfFileW@16
+SetupOpenLog@4
+SetupOpenMasterInf@0
+SetupPromptForDiskA@40
+SetupPromptForDiskW@40
+SetupPromptReboot@12
+SetupQueryDrivesInDiskSpaceListA@16
+SetupQueryDrivesInDiskSpaceListW@16
+SetupQueryFileLogA@28
+SetupQueryFileLogW@28
+SetupQueryInfFileInformationA@20
+SetupQueryInfFileInformationW@20
+SetupQueryInfOriginalFileInformationA@16
+SetupQueryInfOriginalFileInformationW@16
+SetupQueryInfVersionInformationA@24
+SetupQueryInfVersionInformationW@24
+SetupQuerySourceListA@12
+SetupQuerySourceListW@12
+SetupQuerySpaceRequiredOnDriveA@20
+SetupQuerySpaceRequiredOnDriveW@20
+SetupQueueCopyA@36
+SetupQueueCopyIndirectA@4
+SetupQueueCopyIndirectW@4
+SetupQueueCopySectionA@24
+SetupQueueCopySectionW@24
+SetupQueueCopyW@36
+SetupQueueDefaultCopyA@24
+SetupQueueDefaultCopyW@24
+SetupQueueDeleteA@12
+SetupQueueDeleteSectionA@16
+SetupQueueDeleteSectionW@16
+SetupQueueDeleteW@12
+SetupQueueRenameA@20
+SetupQueueRenameSectionA@16
+SetupQueueRenameSectionW@16
+SetupQueueRenameW@20
+SetupRemoveFileLogEntryA@12
+SetupRemoveFileLogEntryW@12
+SetupRemoveFromDiskSpaceListA@20
+SetupRemoveFromDiskSpaceListW@20
+SetupRemoveFromSourceListA@8
+SetupRemoveFromSourceListW@8
+SetupRemoveInstallSectionFromDiskSpaceListA@24
+SetupRemoveInstallSectionFromDiskSpaceListW@24
+SetupRemoveSectionFromDiskSpaceListA@28
+SetupRemoveSectionFromDiskSpaceListW@28
+SetupRenameErrorA@24
+SetupRenameErrorW@24
+SetupScanFileQueue@24
+SetupScanFileQueueA@24
+SetupScanFileQueueW@24
+SetupSetDirectoryIdA@12
+SetupSetDirectoryIdExA@24
+SetupSetDirectoryIdExW@24
+SetupSetDirectoryIdW@12
+SetupSetFileQueueAlternatePlatformA@12
+SetupSetFileQueueAlternatePlatformW@12
+SetupSetPlatformPathOverrideA@4
+SetupSetPlatformPathOverrideW@4
+SetupSetSourceListA@12
+SetupSetSourceListW@12
+SetupTermDefaultQueueCallback@4
+SetupTerminateFileLog@4
+ShouldDeviceBeExcluded@12
+StampFileSecurity@8
+StringTableAddString@12
+StringTableAddStringEx@20
+StringTableDestroy@4
+StringTableDuplicate@4
+StringTableEnum@20
+StringTableGetExtraData@16
+StringTableInitialize@0
+StringTableInitializeEx@8
+StringTableLookUpString@12
+StringTableLookUpStringEx@20
+StringTableSetExtraData@16
+StringTableStringFromId@8
+StringTableStringFromIdEx@16
+StringTableTrim@4
+TakeOwnershipOfFile@4
+UnicodeToMultiByte@8
+UnmapAndCloseFile@12
+VerifyCatalogFile@4
+VerifyFile@48
+pSetupAccessRunOnceNodeList@0
+pSetupDestroyRunOnceNodeList@0
+pSetupDiGetDeviceInfoContext@12
+pSetupDiSetDeviceInfoContext@12
+pSetupDirectoryIdToPath@20
+pSetupGetField@8
+pSetupGetGlobalFlags@0
+pSetupGetOsLoaderDriveAndPath@16
+pSetupGetQueueFlags@4
+pSetupGetVersionDatum@8
+pSetupGuidFromString@8
+pSetupIsGuidNull@4
+pSetupMakeSurePathExists@4
+pSetupSetGlobalFlags@4
+pSetupSetQueueFlags@8
+pSetupSetSystemSourcePath@8
+pSetupStringFromGuid@12
+pSetupVerifyQueuedCatalogs@4
diff --git a/winsup/w32api/lib/test.c b/winsup/w32api/lib/test.c
index 8295aa0..b109629 100644
--- a/winsup/w32api/lib/test.c
+++ b/winsup/w32api/lib/test.c
@@ -55,7 +55,7 @@
#include <winresrc.h>
#include <winsock.h>
#include <ws2tcpip.h>
-
+#include <setupapi.h>
#ifndef __OBJC__ /* problems with BOOL */
#include <ole2.h>