OSDN Git Service

* include/setupapi.h : New file.
authorearnie <earnie>
Tue, 21 Aug 2001 13:58:51 +0000 (13:58 +0000)
committerearnie <earnie>
Tue, 21 Aug 2001 13:58:51 +0000 (13:58 +0000)
* lib/setupapi.def:New file.
* lib/test.c: Include setupapi.h.
* include/winioctl.h (_DISK_PERFORMANCE): Correct typo.
* include/richedit.h (ENLINK): Add structure definition.
(EM_AUTOURLDETECT, EN_LINK, ENM_LINK): Add defines.
* 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.
* 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.
* 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.
* 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.
* include/lmcons.h: Guard CNLEN and UNCLEN against prior definition.
* include/nddeapi.h: Likewise.
* ChangeLog: Formatting and typo fixes.

16 files changed:
winsup/w32api/ChangeLog
winsup/w32api/include/lmcons.h
winsup/w32api/include/nddeapi.h
winsup/w32api/include/oaidl.h
winsup/w32api/include/odbcinst.h
winsup/w32api/include/raserror.h
winsup/w32api/include/richedit.h
winsup/w32api/include/setupapi.h [new file with mode: 0644]
winsup/w32api/include/shlobj.h
winsup/w32api/include/winbase.h
winsup/w32api/include/winioctl.h
winsup/w32api/include/winnt.h
winsup/w32api/include/winsock2.h
winsup/w32api/include/wtypes.h
winsup/w32api/lib/setupapi.def [new file with mode: 0644]
winsup/w32api/lib/test.c

index a5750be..46c25dd 100644 (file)
@@ -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.
        * 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.
        (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>
        (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>. 
        * 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).
index 1adde20..c82837f 100644 (file)
@@ -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
index a4dc03b..1648b62 100644 (file)
@@ -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','
index 2c71480..b42c3cd 100644 (file)
@@ -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
index a62e8dd..449e781 100644 (file)
@@ -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 */
index a5f7fe8..54d11f7 100644 (file)
 #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 */
index 1bbac22..67c159b 100644 (file)
@@ -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 (file)
index 0000000..a40c75c
--- /dev/null
@@ -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_ */
+
index 44e0d4c..c22ef79 100644 (file)
@@ -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
index 0309788..86917e5 100644 (file)
@@ -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);
index 7cc1be6..b017199 100644 (file)
@@ -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;
index 0fed6db..fd01ef5 100644 (file)
@@ -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;
index ca13028..83c48fa 100644 (file)
 
 #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
 {
index 7bd929d..34aa7cd 100644 (file)
@@ -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 (file)
index 0000000..50eb3c9
--- /dev/null
@@ -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
index 8295aa0..b109629 100644 (file)
@@ -55,7 +55,7 @@
 #include <winresrc.h>
 #include <winsock.h>
 #include <ws2tcpip.h>
-
+#include <setupapi.h>
 
 #ifndef __OBJC__  /* problems with BOOL */
 #include <ole2.h>