zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

setupapi.h (108076B) - Raw


      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _INC_SETUPAPI
      7 #define _INC_SETUPAPI
      8 
      9 #include <_mingw_unicode.h>
     10 
     11 #ifndef _SETUPAPI_
     12 #define WINSETUPAPI DECLSPEC_IMPORT
     13 #else
     14 #define WINSETUPAPI
     15 #endif
     16 
     17 #ifndef _SETUPAPI_VER
     18 #define _SETUPAPI_VER 0x0502
     19 #endif
     20 
     21 #ifndef __LPGUID_DEFINED__
     22 #define __LPGUID_DEFINED__
     23 typedef GUID *LPGUID;
     24 #endif
     25 
     26 /* FIXME: #include <spapidef.h> */
     27 #include <commctrl.h>
     28 #include <devpropdef.h>
     29 
     30 #ifdef _WIN64
     31 #include <pshpack8.h>
     32 #else
     33 #include <pshpack1.h>
     34 #endif
     35 
     36 #ifdef __cplusplus
     37 extern "C" {
     38 #endif
     39 
     40 #define LINE_LEN 256
     41 
     42 #define MAX_INF_STRING_LENGTH 4096
     43 #define MAX_INF_SECTION_NAME_LENGTH 255
     44 #define MAX_TITLE_LEN 60
     45 #define MAX_INSTRUCTION_LEN 256
     46 #define MAX_LABEL_LEN 30
     47 #define MAX_SERVICE_NAME_LEN 256
     48 #define MAX_SUBTITLE_LEN 256
     49 
     50 #define SP_MAX_MACHINENAME_LENGTH (MAX_PATH + 3)
     51 
     52   typedef PVOID HINF;
     53 
     54   typedef struct _INFCONTEXT {
     55     PVOID Inf;
     56     PVOID CurrentInf;
     57     UINT Section;
     58     UINT Line;
     59   } INFCONTEXT,*PINFCONTEXT;
     60 
     61   typedef struct _SP_INF_INFORMATION {
     62     DWORD InfStyle;
     63     DWORD InfCount;
     64     BYTE VersionData[ANYSIZE_ARRAY];
     65   } SP_INF_INFORMATION,*PSP_INF_INFORMATION;
     66 
     67   typedef struct _SP_ALTPLATFORM_INFO_V2 {
     68     DWORD cbSize;
     69     DWORD Platform;
     70     DWORD MajorVersion;
     71     DWORD MinorVersion;
     72     WORD ProcessorArchitecture;
     73     __C89_NAMELESS union {
     74       WORD Reserved;
     75       WORD Flags;
     76     };
     77     DWORD FirstValidatedMajorVersion;
     78     DWORD FirstValidatedMinorVersion;
     79   } SP_ALTPLATFORM_INFO_V2,*PSP_ALTPLATFORM_INFO_V2;
     80 
     81   typedef struct _SP_ALTPLATFORM_INFO_V1 {
     82     DWORD cbSize;
     83     DWORD Platform;
     84     DWORD MajorVersion;
     85     DWORD MinorVersion;
     86     WORD ProcessorArchitecture;
     87     WORD Reserved;
     88   } SP_ALTPLATFORM_INFO_V1,*PSP_ALTPLATFORM_INFO_V1;
     89 
     90 #if USE_SP_ALTPLATFORM_INFO_V1
     91 
     92   typedef SP_ALTPLATFORM_INFO_V1 SP_ALTPLATFORM_INFO;
     93   typedef PSP_ALTPLATFORM_INFO_V1 PSP_ALTPLATFORM_INFO;
     94 #else
     95 
     96   typedef SP_ALTPLATFORM_INFO_V2 SP_ALTPLATFORM_INFO;
     97   typedef PSP_ALTPLATFORM_INFO_V2 PSP_ALTPLATFORM_INFO;
     98 
     99 #define SP_ALTPLATFORM_FLAGS_VERSION_RANGE (0x0001)
    100 #endif
    101 
    102   typedef struct _SP_ORIGINAL_FILE_INFO_A {
    103     DWORD cbSize;
    104     CHAR OriginalInfName[MAX_PATH];
    105     CHAR OriginalCatalogName[MAX_PATH];
    106   } SP_ORIGINAL_FILE_INFO_A,*PSP_ORIGINAL_FILE_INFO_A;
    107 
    108   typedef struct _SP_ORIGINAL_FILE_INFO_W {
    109     DWORD cbSize;
    110     WCHAR OriginalInfName[MAX_PATH];
    111     WCHAR OriginalCatalogName[MAX_PATH];
    112   } SP_ORIGINAL_FILE_INFO_W,*PSP_ORIGINAL_FILE_INFO_W;
    113 
    114   __MINGW_TYPEDEF_UAW(SP_ORIGINAL_FILE_INFO)
    115   __MINGW_TYPEDEF_UAW(PSP_ORIGINAL_FILE_INFO)
    116 
    117 #define INF_STYLE_NONE 0x00000000
    118 #define INF_STYLE_OLDNT 0x00000001
    119 #define INF_STYLE_WIN4 0x00000002
    120 
    121 #define INF_STYLE_CACHE_ENABLE 0x00000010
    122 #define INF_STYLE_CACHE_DISABLE 0x00000020
    123 #define INF_STYLE_CACHE_IGNORE 0x00000040
    124 
    125 #define DIRID_ABSOLUTE -1
    126 #define DIRID_ABSOLUTE_16BIT 0xffff
    127 #define DIRID_NULL 0
    128 #define DIRID_SRCPATH 1
    129 #define DIRID_WINDOWS 10
    130 #define DIRID_SYSTEM 11
    131 #define DIRID_DRIVERS 12
    132 #define DIRID_IOSUBSYS DIRID_DRIVERS
    133 #define DIRID_INF 17
    134 #define DIRID_HELP 18
    135 #define DIRID_FONTS 20
    136 #define DIRID_VIEWERS 21
    137 #define DIRID_COLOR 23
    138 #define DIRID_APPS 24
    139 #define DIRID_SHARED 25
    140 #define DIRID_BOOT 30
    141 
    142 #define DIRID_SYSTEM16 50
    143 #define DIRID_SPOOL 51
    144 #define DIRID_SPOOLDRIVERS 52
    145 #define DIRID_USERPROFILE 53
    146 #define DIRID_LOADER 54
    147 #define DIRID_PRINTPROCESSOR 55
    148 
    149 #define DIRID_DEFAULT DIRID_SYSTEM
    150 
    151 #define DIRID_COMMON_STARTMENU 16406
    152 #define DIRID_COMMON_PROGRAMS 16407
    153 #define DIRID_COMMON_STARTUP 16408
    154 #define DIRID_COMMON_DESKTOPDIRECTORY 16409
    155 #define DIRID_COMMON_FAVORITES 16415
    156 #define DIRID_COMMON_APPDATA 16419
    157 
    158 #define DIRID_PROGRAM_FILES 16422
    159 #define DIRID_SYSTEM_X86 16425
    160 #define DIRID_PROGRAM_FILES_X86 16426
    161 #define DIRID_PROGRAM_FILES_COMMON 16427
    162 #define DIRID_PROGRAM_FILES_COMMONX86 16428
    163 
    164 #define DIRID_COMMON_TEMPLATES 16429
    165 #define DIRID_COMMON_DOCUMENTS 16430
    166 
    167 #define DIRID_USER 0x8000
    168 
    169   typedef UINT (CALLBACK *PSP_FILE_CALLBACK_A)(PVOID Context,UINT Notification,UINT_PTR Param1,UINT_PTR Param2);
    170   typedef UINT (CALLBACK *PSP_FILE_CALLBACK_W)(PVOID Context,UINT Notification,UINT_PTR Param1,UINT_PTR Param2);
    171 
    172 #define PSP_FILE_CALLBACK __MINGW_NAME_UAW(PSP_FILE_CALLBACK)
    173 
    174 #define SPFILENOTIFY_STARTQUEUE 0x00000001
    175 #define SPFILENOTIFY_ENDQUEUE 0x00000002
    176 #define SPFILENOTIFY_STARTSUBQUEUE 0x00000003
    177 #define SPFILENOTIFY_ENDSUBQUEUE 0x00000004
    178 #define SPFILENOTIFY_STARTDELETE 0x00000005
    179 #define SPFILENOTIFY_ENDDELETE 0x00000006
    180 #define SPFILENOTIFY_DELETEERROR 0x00000007
    181 #define SPFILENOTIFY_STARTRENAME 0x00000008
    182 #define SPFILENOTIFY_ENDRENAME 0x00000009
    183 #define SPFILENOTIFY_RENAMEERROR 0x0000000a
    184 #define SPFILENOTIFY_STARTCOPY 0x0000000b
    185 #define SPFILENOTIFY_ENDCOPY 0x0000000c
    186 #define SPFILENOTIFY_COPYERROR 0x0000000d
    187 #define SPFILENOTIFY_NEEDMEDIA 0x0000000e
    188 #define SPFILENOTIFY_QUEUESCAN 0x0000000f
    189 
    190 #define SPFILENOTIFY_CABINETINFO 0x00000010
    191 #define SPFILENOTIFY_FILEINCABINET 0x00000011
    192 #define SPFILENOTIFY_NEEDNEWCABINET 0x00000012
    193 #define SPFILENOTIFY_FILEEXTRACTED 0x00000013
    194 #define SPFILENOTIFY_FILEOPDELAYED 0x00000014
    195 
    196 #define SPFILENOTIFY_STARTBACKUP 0x00000015
    197 #define SPFILENOTIFY_BACKUPERROR 0x00000016
    198 #define SPFILENOTIFY_ENDBACKUP 0x00000017
    199 
    200 #define SPFILENOTIFY_QUEUESCAN_EX 0x00000018
    201 
    202 #define SPFILENOTIFY_STARTREGISTRATION 0x00000019
    203 #define SPFILENOTIFY_ENDREGISTRATION 0x00000020
    204 #define SPFILENOTIFY_QUEUESCAN_SIGNERINFO 0x00000040
    205 
    206 #define SPFILENOTIFY_LANGMISMATCH 0x00010000
    207 #define SPFILENOTIFY_TARGETEXISTS 0x00020000
    208 #define SPFILENOTIFY_TARGETNEWER 0x00040000
    209 
    210 #define FILEOP_COPY 0
    211 #define FILEOP_RENAME 1
    212 #define FILEOP_DELETE 2
    213 #define FILEOP_BACKUP 3
    214 
    215 #define FILEOP_ABORT 0
    216 #define FILEOP_DOIT 1
    217 #define FILEOP_SKIP 2
    218 #define FILEOP_RETRY FILEOP_DOIT
    219 #define FILEOP_NEWPATH 4
    220 
    221 #define COPYFLG_WARN_IF_SKIP 0x00000001
    222 #define COPYFLG_NOSKIP 0x00000002
    223 #define COPYFLG_NOVERSIONCHECK 0x00000004
    224 #define COPYFLG_FORCE_FILE_IN_USE 0x00000008
    225 #define COPYFLG_NO_OVERWRITE 0x00000010
    226 #define COPYFLG_NO_VERSION_DIALOG 0x00000020
    227 #define COPYFLG_OVERWRITE_OLDER_ONLY 0x00000040
    228 #define COPYFLG_REPLACEONLY 0x00000400
    229 #define COPYFLG_NODECOMP 0x00000800
    230 #define COPYFLG_REPLACE_BOOT_FILE 0x00001000
    231 
    232 #define COPYFLG_NOPRUNE 0x00002000
    233 
    234 #define DELFLG_IN_USE 0x00000001
    235 #define DELFLG_IN_USE1 0x00010000
    236 
    237   typedef struct _FILEPATHS_A {
    238     PCSTR Target;
    239     PCSTR Source;
    240     UINT Win32Error;
    241     DWORD Flags;
    242   } FILEPATHS_A,*PFILEPATHS_A;
    243 
    244   typedef struct _FILEPATHS_W {
    245     PCWSTR Target;
    246     PCWSTR Source;
    247     UINT Win32Error;
    248     DWORD Flags;
    249   } FILEPATHS_W,*PFILEPATHS_W;
    250 
    251   __MINGW_TYPEDEF_UAW(FILEPATHS)
    252   __MINGW_TYPEDEF_UAW(PFILEPATHS)
    253 
    254   typedef struct _FILEPATHS_SIGNERINFO_A {
    255     PCSTR Target;
    256     PCSTR Source;
    257     UINT Win32Error;
    258     DWORD Flags;
    259     PCSTR DigitalSigner;
    260     PCSTR Version;
    261     PCSTR CatalogFile;
    262   } FILEPATHS_SIGNERINFO_A,*PFILEPATHS_SIGNERINFO_A;
    263 
    264   typedef struct _FILEPATHS_SIGNERINFO_W {
    265     PCWSTR Target;
    266     PCWSTR Source;
    267     UINT Win32Error;
    268     DWORD Flags;
    269     PCWSTR DigitalSigner;
    270     PCWSTR Version;
    271     PCWSTR CatalogFile;
    272   } FILEPATHS_SIGNERINFO_W,*PFILEPATHS_SIGNERINFO_W;
    273 
    274   __MINGW_TYPEDEF_UAW(FILEPATHS_SIGNERINFO)
    275   __MINGW_TYPEDEF_UAW(PFILEPATHS_SIGNERINFO)
    276 
    277   typedef struct _SOURCE_MEDIA_A {
    278     PCSTR Reserved;
    279     PCSTR Tagfile;
    280     PCSTR Description;
    281     PCSTR SourcePath;
    282     PCSTR SourceFile;
    283     DWORD Flags;
    284   } SOURCE_MEDIA_A,*PSOURCE_MEDIA_A;
    285 
    286   typedef struct _SOURCE_MEDIA_W {
    287     PCWSTR Reserved;
    288     PCWSTR Tagfile;
    289     PCWSTR Description;
    290     PCWSTR SourcePath;
    291     PCWSTR SourceFile;
    292     DWORD Flags;
    293   } SOURCE_MEDIA_W,*PSOURCE_MEDIA_W;
    294 
    295   __MINGW_TYPEDEF_UAW(SOURCE_MEDIA)
    296   __MINGW_TYPEDEF_UAW(PSOURCE_MEDIA)
    297 
    298   typedef struct _CABINET_INFO_A {
    299     PCSTR CabinetPath;
    300     PCSTR CabinetFile;
    301     PCSTR DiskName;
    302     USHORT SetId;
    303     USHORT CabinetNumber;
    304   } CABINET_INFO_A,*PCABINET_INFO_A;
    305 
    306   typedef struct _CABINET_INFO_W {
    307     PCWSTR CabinetPath;
    308     PCWSTR CabinetFile;
    309     PCWSTR DiskName;
    310     USHORT SetId;
    311     USHORT CabinetNumber;
    312   } CABINET_INFO_W,*PCABINET_INFO_W;
    313 
    314   __MINGW_TYPEDEF_UAW(CABINET_INFO)
    315   __MINGW_TYPEDEF_UAW(PCABINET_INFO)
    316 
    317   typedef struct _FILE_IN_CABINET_INFO_A {
    318     PCSTR NameInCabinet;
    319     DWORD FileSize;
    320     DWORD Win32Error;
    321     WORD DosDate;
    322     WORD DosTime;
    323     WORD DosAttribs;
    324     CHAR FullTargetName[MAX_PATH];
    325   } FILE_IN_CABINET_INFO_A,*PFILE_IN_CABINET_INFO_A;
    326 
    327   typedef struct _FILE_IN_CABINET_INFO_W {
    328     PCWSTR NameInCabinet;
    329     DWORD FileSize;
    330     DWORD Win32Error;
    331     WORD DosDate;
    332     WORD DosTime;
    333     WORD DosAttribs;
    334     WCHAR FullTargetName[MAX_PATH];
    335   } FILE_IN_CABINET_INFO_W,*PFILE_IN_CABINET_INFO_W;
    336 
    337   __MINGW_TYPEDEF_UAW(FILE_IN_CABINET_INFO)
    338   __MINGW_TYPEDEF_UAW(PFILE_IN_CABINET_INFO)
    339 
    340   typedef struct _SP_REGISTER_CONTROL_STATUSA {
    341     DWORD cbSize;
    342     PCSTR FileName;
    343     DWORD Win32Error;
    344     DWORD FailureCode;
    345   } SP_REGISTER_CONTROL_STATUSA,*PSP_REGISTER_CONTROL_STATUSA;
    346 
    347   typedef struct _SP_REGISTER_CONTROL_STATUSW {
    348     DWORD cbSize;
    349     PCWSTR FileName;
    350     DWORD Win32Error;
    351     DWORD FailureCode;
    352   } SP_REGISTER_CONTROL_STATUSW,*PSP_REGISTER_CONTROL_STATUSW;
    353 
    354   __MINGW_TYPEDEF_AW(SP_REGISTER_CONTROL_STATUS)
    355   __MINGW_TYPEDEF_AW(PSP_REGISTER_CONTROL_STATUS)
    356 
    357 #define SPREG_SUCCESS 0x00000000
    358 #define SPREG_LOADLIBRARY 0x00000001
    359 #define SPREG_GETPROCADDR 0x00000002
    360 #define SPREG_REGSVR 0x00000003
    361 #define SPREG_DLLINSTALL 0x00000004
    362 #define SPREG_TIMEOUT 0x00000005
    363 #define SPREG_UNKNOWN 0xFFFFFFFF
    364 
    365   typedef PVOID HSPFILEQ;
    366 
    367   typedef struct _SP_FILE_COPY_PARAMS_A {
    368     DWORD cbSize;
    369     HSPFILEQ QueueHandle;
    370     PCSTR SourceRootPath;
    371     PCSTR SourcePath;
    372     PCSTR SourceFilename;
    373     PCSTR SourceDescription;
    374     PCSTR SourceTagfile;
    375     PCSTR TargetDirectory;
    376     PCSTR TargetFilename;
    377     DWORD CopyStyle;
    378     HINF LayoutInf;
    379     PCSTR SecurityDescriptor;
    380   } SP_FILE_COPY_PARAMS_A,*PSP_FILE_COPY_PARAMS_A;
    381 
    382   typedef struct _SP_FILE_COPY_PARAMS_W {
    383     DWORD cbSize;
    384     HSPFILEQ QueueHandle;
    385     PCWSTR SourceRootPath;
    386     PCWSTR SourcePath;
    387     PCWSTR SourceFilename;
    388     PCWSTR SourceDescription;
    389     PCWSTR SourceTagfile;
    390     PCWSTR TargetDirectory;
    391     PCWSTR TargetFilename;
    392     DWORD CopyStyle;
    393     HINF LayoutInf;
    394     PCWSTR SecurityDescriptor;
    395   } SP_FILE_COPY_PARAMS_W,*PSP_FILE_COPY_PARAMS_W;
    396 
    397   __MINGW_TYPEDEF_UAW(SP_FILE_COPY_PARAMS)
    398   __MINGW_TYPEDEF_UAW(PSP_FILE_COPY_PARAMS)
    399 
    400   typedef PVOID HDSKSPC;
    401   typedef PVOID HDEVINFO;
    402 
    403   typedef struct _SP_DEVINFO_DATA {
    404     DWORD cbSize;
    405     GUID ClassGuid;
    406     DWORD DevInst;
    407     ULONG_PTR Reserved;
    408   } SP_DEVINFO_DATA,*PSP_DEVINFO_DATA;
    409 
    410   typedef struct _SP_DEVICE_INTERFACE_DATA {
    411     DWORD cbSize;
    412     GUID InterfaceClassGuid;
    413     DWORD Flags;
    414     ULONG_PTR Reserved;
    415   } SP_DEVICE_INTERFACE_DATA,*PSP_DEVICE_INTERFACE_DATA;
    416 
    417 #define SPINT_ACTIVE 0x00000001
    418 #define SPINT_DEFAULT 0x00000002
    419 #define SPINT_REMOVED 0x00000004
    420 
    421   typedef SP_DEVICE_INTERFACE_DATA SP_INTERFACE_DEVICE_DATA;
    422   typedef PSP_DEVICE_INTERFACE_DATA PSP_INTERFACE_DEVICE_DATA;
    423 #define SPID_ACTIVE SPINT_ACTIVE
    424 #define SPID_DEFAULT SPINT_DEFAULT
    425 #define SPID_REMOVED SPINT_REMOVED
    426 
    427   typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A {
    428     DWORD cbSize;
    429     CHAR DevicePath[ANYSIZE_ARRAY];
    430   } SP_DEVICE_INTERFACE_DETAIL_DATA_A,*PSP_DEVICE_INTERFACE_DETAIL_DATA_A;
    431 
    432   typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W {
    433     DWORD cbSize;
    434     WCHAR DevicePath[ANYSIZE_ARRAY];
    435   } SP_DEVICE_INTERFACE_DETAIL_DATA_W,*PSP_DEVICE_INTERFACE_DETAIL_DATA_W;
    436 
    437   __MINGW_TYPEDEF_UAW(SP_DEVICE_INTERFACE_DETAIL_DATA)
    438   __MINGW_TYPEDEF_UAW(PSP_DEVICE_INTERFACE_DETAIL_DATA)
    439 
    440   typedef SP_DEVICE_INTERFACE_DETAIL_DATA_W SP_INTERFACE_DEVICE_DETAIL_DATA_W;
    441   typedef PSP_DEVICE_INTERFACE_DETAIL_DATA_W PSP_INTERFACE_DEVICE_DETAIL_DATA_W;
    442   typedef SP_DEVICE_INTERFACE_DETAIL_DATA_A SP_INTERFACE_DEVICE_DETAIL_DATA_A;
    443   typedef PSP_DEVICE_INTERFACE_DETAIL_DATA_A PSP_INTERFACE_DEVICE_DETAIL_DATA_A;
    444 
    445   __MINGW_TYPEDEF_UAW(SP_INTERFACE_DEVICE_DETAIL_DATA)
    446   __MINGW_TYPEDEF_UAW(PSP_INTERFACE_DEVICE_DETAIL_DATA)
    447 
    448   typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
    449     DWORD cbSize;
    450     GUID ClassGuid;
    451     HANDLE RemoteMachineHandle;
    452     CHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
    453   } SP_DEVINFO_LIST_DETAIL_DATA_A,*PSP_DEVINFO_LIST_DETAIL_DATA_A;
    454 
    455   typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
    456     DWORD cbSize;
    457     GUID ClassGuid;
    458     HANDLE RemoteMachineHandle;
    459     WCHAR RemoteMachineName[SP_MAX_MACHINENAME_LENGTH];
    460   } SP_DEVINFO_LIST_DETAIL_DATA_W,*PSP_DEVINFO_LIST_DETAIL_DATA_W;
    461 
    462   __MINGW_TYPEDEF_UAW(SP_DEVINFO_LIST_DETAIL_DATA)
    463   __MINGW_TYPEDEF_UAW(PSP_DEVINFO_LIST_DETAIL_DATA)
    464 
    465 #define DIF_SELECTDEVICE 0x00000001
    466 #define DIF_INSTALLDEVICE 0x00000002
    467 #define DIF_ASSIGNRESOURCES 0x00000003
    468 #define DIF_PROPERTIES 0x00000004
    469 #define DIF_REMOVE 0x00000005
    470 #define DIF_FIRSTTIMESETUP 0x00000006
    471 #define DIF_FOUNDDEVICE 0x00000007
    472 #define DIF_SELECTCLASSDRIVERS 0x00000008
    473 #define DIF_VALIDATECLASSDRIVERS 0x00000009
    474 #define DIF_INSTALLCLASSDRIVERS 0x0000000A
    475 #define DIF_CALCDISKSPACE 0x0000000B
    476 #define DIF_DESTROYPRIVATEDATA 0x0000000C
    477 #define DIF_VALIDATEDRIVER 0x0000000D
    478 #define DIF_DETECT 0x0000000F
    479 #define DIF_INSTALLWIZARD 0x00000010
    480 #define DIF_DESTROYWIZARDDATA 0x00000011
    481 #define DIF_PROPERTYCHANGE 0x00000012
    482 #define DIF_ENABLECLASS 0x00000013
    483 #define DIF_DETECTVERIFY 0x00000014
    484 #define DIF_INSTALLDEVICEFILES 0x00000015
    485 #define DIF_UNREMOVE 0x00000016
    486 #define DIF_SELECTBESTCOMPATDRV 0x00000017
    487 #define DIF_ALLOW_INSTALL 0x00000018
    488 #define DIF_REGISTERDEVICE 0x00000019
    489 #define DIF_NEWDEVICEWIZARD_PRESELECT 0x0000001A
    490 #define DIF_NEWDEVICEWIZARD_SELECT 0x0000001B
    491 #define DIF_NEWDEVICEWIZARD_PREANALYZE 0x0000001C
    492 #define DIF_NEWDEVICEWIZARD_POSTANALYZE 0x0000001D
    493 #define DIF_NEWDEVICEWIZARD_FINISHINSTALL 0x0000001E
    494 #define DIF_UNUSED1 0x0000001F
    495 #define DIF_INSTALLINTERFACES 0x00000020
    496 #define DIF_DETECTCANCEL 0x00000021
    497 #define DIF_REGISTER_COINSTALLERS 0x00000022
    498 #define DIF_ADDPROPERTYPAGE_ADVANCED 0x00000023
    499 #define DIF_ADDPROPERTYPAGE_BASIC 0x00000024
    500 #define DIF_RESERVED1 0x00000025
    501 #define DIF_TROUBLESHOOTER 0x00000026
    502 #define DIF_POWERMESSAGEWAKE 0x00000027
    503 #define DIF_ADDREMOTEPROPERTYPAGE_ADVANCED 0x00000028
    504 #define DIF_UPDATEDRIVER_UI 0x00000029
    505 #define DIF_RESERVED2 0x00000030
    506 
    507 #define DIF_MOVEDEVICE 0x0000000E
    508 
    509   typedef UINT DI_FUNCTION;
    510 
    511   typedef struct _SP_DEVINSTALL_PARAMS_A {
    512     DWORD cbSize;
    513     DWORD Flags;
    514     DWORD FlagsEx;
    515     HWND hwndParent;
    516     PSP_FILE_CALLBACK InstallMsgHandler;
    517     PVOID InstallMsgHandlerContext;
    518     HSPFILEQ FileQueue;
    519     ULONG_PTR ClassInstallReserved;
    520     DWORD Reserved;
    521     CHAR DriverPath[MAX_PATH];
    522   } SP_DEVINSTALL_PARAMS_A,*PSP_DEVINSTALL_PARAMS_A;
    523 
    524   typedef struct _SP_DEVINSTALL_PARAMS_W {
    525     DWORD cbSize;
    526     DWORD Flags;
    527     DWORD FlagsEx;
    528     HWND hwndParent;
    529     PSP_FILE_CALLBACK InstallMsgHandler;
    530     PVOID InstallMsgHandlerContext;
    531     HSPFILEQ FileQueue;
    532     ULONG_PTR ClassInstallReserved;
    533     DWORD Reserved;
    534     WCHAR DriverPath[MAX_PATH];
    535   } SP_DEVINSTALL_PARAMS_W,*PSP_DEVINSTALL_PARAMS_W;
    536 
    537   __MINGW_TYPEDEF_UAW(SP_DEVINSTALL_PARAMS)
    538   __MINGW_TYPEDEF_UAW(PSP_DEVINSTALL_PARAMS)
    539 
    540 #define DI_SHOWOEM __MSABI_LONG(0x00000001)
    541 #define DI_SHOWCOMPAT __MSABI_LONG(0x00000002)
    542 #define DI_SHOWCLASS __MSABI_LONG(0x00000004)
    543 #define DI_SHOWALL __MSABI_LONG(0x00000007)
    544 #define DI_NOVCP __MSABI_LONG(0x00000008)
    545 #define DI_DIDCOMPAT __MSABI_LONG(0x00000010)
    546 #define DI_DIDCLASS __MSABI_LONG(0x00000020)
    547 #define DI_AUTOASSIGNRES __MSABI_LONG(0x00000040)
    548 #define DI_NEEDRESTART __MSABI_LONG(0x00000080)
    549 #define DI_NEEDREBOOT __MSABI_LONG(0x00000100)
    550 #define DI_NOBROWSE __MSABI_LONG(0x00000200)
    551 #define DI_MULTMFGS __MSABI_LONG(0x00000400)
    552 #define DI_DISABLED __MSABI_LONG(0x00000800)
    553 #define DI_GENERALPAGE_ADDED __MSABI_LONG(0x00001000)
    554 #define DI_RESOURCEPAGE_ADDED __MSABI_LONG(0x00002000)
    555 #define DI_PROPERTIES_CHANGE __MSABI_LONG(0x00004000)
    556 #define DI_INF_IS_SORTED __MSABI_LONG(0x00008000)
    557 #define DI_ENUMSINGLEINF __MSABI_LONG(0x00010000)
    558 #define DI_DONOTCALLCONFIGMG __MSABI_LONG(0x00020000)
    559 #define DI_INSTALLDISABLED __MSABI_LONG(0x00040000)
    560 #define DI_COMPAT_FROM_CLASS __MSABI_LONG(0x00080000)
    561 #define DI_CLASSINSTALLPARAMS __MSABI_LONG(0x00100000)
    562 #define DI_NODI_DEFAULTACTION __MSABI_LONG(0x00200000)
    563 #define DI_QUIETINSTALL __MSABI_LONG(0x00800000)
    564 #define DI_NOFILECOPY __MSABI_LONG(0x01000000)
    565 #define DI_FORCECOPY __MSABI_LONG(0x02000000)
    566 #define DI_DRIVERPAGE_ADDED __MSABI_LONG(0x04000000)
    567 #define DI_USECI_SELECTSTRINGS __MSABI_LONG(0x08000000)
    568 #define DI_OVERRIDE_INFFLAGS __MSABI_LONG(0x10000000)
    569 #define DI_PROPS_NOCHANGEUSAGE __MSABI_LONG(0x20000000)
    570 #define DI_NOSELECTICONS __MSABI_LONG(0x40000000)
    571 #define DI_NOWRITE_IDS __MSABI_LONG(0x80000000)
    572 #define DI_FLAGSEX_USEOLDINFSEARCH __MSABI_LONG(0x00000001)
    573 #define DI_FLAGSEX_RESERVED2 __MSABI_LONG(0x00000002)
    574 #define DI_FLAGSEX_CI_FAILED __MSABI_LONG(0x00000004)
    575 #define DI_FLAGSEX_DIDINFOLIST __MSABI_LONG(0x00000010)
    576 #define DI_FLAGSEX_DIDCOMPATINFO __MSABI_LONG(0x00000020)
    577 #define DI_FLAGSEX_FILTERCLASSES __MSABI_LONG(0x00000040)
    578 #define DI_FLAGSEX_SETFAILEDINSTALL __MSABI_LONG(0x00000080)
    579 #define DI_FLAGSEX_DEVICECHANGE __MSABI_LONG(0x00000100)
    580 #define DI_FLAGSEX_ALWAYSWRITEIDS __MSABI_LONG(0x00000200)
    581 #define DI_FLAGSEX_PROPCHANGE_PENDING __MSABI_LONG(0x00000400)
    582 #define DI_FLAGSEX_ALLOWEXCLUDEDDRVS __MSABI_LONG(0x00000800)
    583 #define DI_FLAGSEX_NOUIONQUERYREMOVE __MSABI_LONG(0x00001000)
    584 #define DI_FLAGSEX_USECLASSFORCOMPAT __MSABI_LONG(0x00002000)
    585 #define DI_FLAGSEX_RESERVED3 __MSABI_LONG(0x00004000)
    586 #define DI_FLAGSEX_NO_DRVREG_MODIFY __MSABI_LONG(0x00008000)
    587 #define DI_FLAGSEX_IN_SYSTEM_SETUP __MSABI_LONG(0x00010000)
    588 #define DI_FLAGSEX_INET_DRIVER __MSABI_LONG(0x00020000)
    589 #define DI_FLAGSEX_APPENDDRIVERLIST __MSABI_LONG(0x00040000)
    590 #define DI_FLAGSEX_PREINSTALLBACKUP __MSABI_LONG(0x00080000)
    591 #define DI_FLAGSEX_BACKUPONREPLACE __MSABI_LONG(0x00100000)
    592 #define DI_FLAGSEX_DRIVERLIST_FROM_URL __MSABI_LONG(0x00200000)
    593 #define DI_FLAGSEX_RESERVED1 __MSABI_LONG(0x00400000)
    594 #define DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS __MSABI_LONG(0x00800000)
    595 #define DI_FLAGSEX_POWERPAGE_ADDED __MSABI_LONG(0x01000000)
    596 #define DI_FLAGSEX_FILTERSIMILARDRIVERS __MSABI_LONG(0x02000000)
    597 #define DI_FLAGSEX_INSTALLEDDRIVER __MSABI_LONG(0x04000000)
    598 #define DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE __MSABI_LONG(0x08000000)
    599 #define DI_FLAGSEX_ALTPLATFORM_DRVSEARCH __MSABI_LONG(0x10000000)
    600 #define DI_FLAGSEX_RESTART_DEVICE_ONLY __MSABI_LONG(0x20000000)
    601 
    602   typedef struct _SP_CLASSINSTALL_HEADER {
    603     DWORD cbSize;
    604     DI_FUNCTION InstallFunction;
    605   } SP_CLASSINSTALL_HEADER,*PSP_CLASSINSTALL_HEADER;
    606 
    607   typedef struct _SP_ENABLECLASS_PARAMS {
    608     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    609     GUID ClassGuid;
    610     DWORD EnableMessage;
    611   } SP_ENABLECLASS_PARAMS,*PSP_ENABLECLASS_PARAMS;
    612 
    613 #define ENABLECLASS_QUERY 0
    614 #define ENABLECLASS_SUCCESS 1
    615 #define ENABLECLASS_FAILURE 2
    616 
    617 #define DICS_ENABLE 0x00000001
    618 #define DICS_DISABLE 0x00000002
    619 #define DICS_PROPCHANGE 0x00000003
    620 #define DICS_START 0x00000004
    621 #define DICS_STOP 0x00000005
    622 
    623 #define DICS_FLAG_GLOBAL 0x00000001
    624 #define DICS_FLAG_CONFIGSPECIFIC 0x00000002
    625 #define DICS_FLAG_CONFIGGENERAL 0x00000004
    626 
    627   typedef struct _SP_PROPCHANGE_PARAMS {
    628     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    629     DWORD StateChange;
    630     DWORD Scope;
    631     DWORD HwProfile;
    632   } SP_PROPCHANGE_PARAMS,*PSP_PROPCHANGE_PARAMS;
    633 
    634   typedef struct _SP_REMOVEDEVICE_PARAMS {
    635     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    636     DWORD Scope;
    637     DWORD HwProfile;
    638   } SP_REMOVEDEVICE_PARAMS,*PSP_REMOVEDEVICE_PARAMS;
    639 
    640 #define DI_REMOVEDEVICE_GLOBAL 0x00000001
    641 #define DI_REMOVEDEVICE_CONFIGSPECIFIC 0x00000002
    642 
    643   typedef struct _SP_UNREMOVEDEVICE_PARAMS {
    644     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    645     DWORD Scope;
    646     DWORD HwProfile;
    647   } SP_UNREMOVEDEVICE_PARAMS,*PSP_UNREMOVEDEVICE_PARAMS;
    648 
    649 #define DI_UNREMOVEDEVICE_CONFIGSPECIFIC 0x00000002
    650 
    651   typedef struct _SP_SELECTDEVICE_PARAMS_A {
    652     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    653     CHAR Title[MAX_TITLE_LEN];
    654     CHAR Instructions[MAX_INSTRUCTION_LEN];
    655     CHAR ListLabel[MAX_LABEL_LEN];
    656     CHAR SubTitle[MAX_SUBTITLE_LEN];
    657     BYTE Reserved[2];
    658   } SP_SELECTDEVICE_PARAMS_A,*PSP_SELECTDEVICE_PARAMS_A;
    659 
    660   typedef struct _SP_SELECTDEVICE_PARAMS_W {
    661     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    662     WCHAR Title[MAX_TITLE_LEN];
    663     WCHAR Instructions[MAX_INSTRUCTION_LEN];
    664     WCHAR ListLabel[MAX_LABEL_LEN];
    665     WCHAR SubTitle[MAX_SUBTITLE_LEN];
    666   } SP_SELECTDEVICE_PARAMS_W,*PSP_SELECTDEVICE_PARAMS_W;
    667 
    668   __MINGW_TYPEDEF_UAW(SP_SELECTDEVICE_PARAMS)
    669   __MINGW_TYPEDEF_UAW(PSP_SELECTDEVICE_PARAMS)
    670 
    671   typedef WINBOOL (CALLBACK *PDETECT_PROGRESS_NOTIFY)(PVOID ProgressNotifyParam,DWORD DetectComplete);
    672 
    673   typedef struct _SP_DETECTDEVICE_PARAMS {
    674     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    675     PDETECT_PROGRESS_NOTIFY DetectProgressNotify;
    676     PVOID ProgressNotifyParam;
    677   } SP_DETECTDEVICE_PARAMS,*PSP_DETECTDEVICE_PARAMS;
    678 
    679 #define MAX_INSTALLWIZARD_DYNAPAGES 20
    680 
    681   typedef struct _SP_INSTALLWIZARD_DATA {
    682     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    683     DWORD Flags;
    684     HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
    685     DWORD NumDynamicPages;
    686     DWORD DynamicPageFlags;
    687     DWORD PrivateFlags;
    688     LPARAM PrivateData;
    689     HWND hwndWizardDlg;
    690   } SP_INSTALLWIZARD_DATA,*PSP_INSTALLWIZARD_DATA;
    691 
    692 #define NDW_INSTALLFLAG_DIDFACTDEFS 0x00000001
    693 #define NDW_INSTALLFLAG_HARDWAREALLREADYIN 0x00000002
    694 #define NDW_INSTALLFLAG_NEEDRESTART DI_NEEDRESTART
    695 #define NDW_INSTALLFLAG_NEEDREBOOT DI_NEEDREBOOT
    696 #define NDW_INSTALLFLAG_NEEDSHUTDOWN 0x00000200
    697 #define NDW_INSTALLFLAG_EXPRESSINTRO 0x00000400
    698 #define NDW_INSTALLFLAG_SKIPISDEVINSTALLED 0x00000800
    699 #define NDW_INSTALLFLAG_NODETECTEDDEVS 0x00001000
    700 #define NDW_INSTALLFLAG_INSTALLSPECIFIC 0x00002000
    701 #define NDW_INSTALLFLAG_SKIPCLASSLIST 0x00004000
    702 #define NDW_INSTALLFLAG_CI_PICKED_OEM 0x00008000
    703 #define NDW_INSTALLFLAG_PCMCIAMODE 0x00010000
    704 #define NDW_INSTALLFLAG_PCMCIADEVICE 0x00020000
    705 #define NDW_INSTALLFLAG_USERCANCEL 0x00040000
    706 #define NDW_INSTALLFLAG_KNOWNCLASS 0x00080000
    707 
    708 #define DYNAWIZ_FLAG_PAGESADDED 0x00000001
    709 #define DYNAWIZ_FLAG_ANALYZE_HANDLECONFLICT 0x00000008
    710 #define DYNAWIZ_FLAG_INSTALLDET_NEXT 0x00000002
    711 #define DYNAWIZ_FLAG_INSTALLDET_PREV 0x00000004
    712 
    713 #define MIN_IDD_DYNAWIZ_RESOURCE_ID 10000
    714 #define MAX_IDD_DYNAWIZ_RESOURCE_ID 11000
    715 
    716 #define IDD_DYNAWIZ_FIRSTPAGE 10000
    717 #define IDD_DYNAWIZ_SELECT_PREVPAGE 10001
    718 #define IDD_DYNAWIZ_SELECT_NEXTPAGE 10002
    719 #define IDD_DYNAWIZ_ANALYZE_PREVPAGE 10003
    720 #define IDD_DYNAWIZ_ANALYZE_NEXTPAGE 10004
    721 #define IDD_DYNAWIZ_SELECTDEV_PAGE 10009
    722 #define IDD_DYNAWIZ_ANALYZEDEV_PAGE 10010
    723 #define IDD_DYNAWIZ_INSTALLDETECTEDDEVS_PAGE 10011
    724 #define IDD_DYNAWIZ_SELECTCLASS_PAGE 10012
    725 #define IDD_DYNAWIZ_INSTALLDETECTED_PREVPAGE 10006
    726 #define IDD_DYNAWIZ_INSTALLDETECTED_NEXTPAGE 10007
    727 #define IDD_DYNAWIZ_INSTALLDETECTED_NODEVS 10008
    728 
    729   typedef struct _SP_NEWDEVICEWIZARD_DATA {
    730     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    731     DWORD Flags;
    732     HPROPSHEETPAGE DynamicPages[MAX_INSTALLWIZARD_DYNAPAGES];
    733     DWORD NumDynamicPages;
    734     HWND hwndWizardDlg;
    735   } SP_NEWDEVICEWIZARD_DATA,*PSP_NEWDEVICEWIZARD_DATA;
    736 
    737   typedef SP_NEWDEVICEWIZARD_DATA SP_ADDPROPERTYPAGE_DATA;
    738   typedef PSP_NEWDEVICEWIZARD_DATA PSP_ADDPROPERTYPAGE_DATA;
    739 
    740   typedef struct _SP_TROUBLESHOOTER_PARAMS_A {
    741     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    742     CHAR ChmFile[MAX_PATH];
    743     CHAR HtmlTroubleShooter[MAX_PATH];
    744   } SP_TROUBLESHOOTER_PARAMS_A,*PSP_TROUBLESHOOTER_PARAMS_A;
    745 
    746   typedef struct _SP_TROUBLESHOOTER_PARAMS_W {
    747     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    748     WCHAR ChmFile[MAX_PATH];
    749     WCHAR HtmlTroubleShooter[MAX_PATH];
    750   } SP_TROUBLESHOOTER_PARAMS_W,*PSP_TROUBLESHOOTER_PARAMS_W;
    751 
    752   __MINGW_TYPEDEF_UAW(SP_TROUBLESHOOTER_PARAMS)
    753   __MINGW_TYPEDEF_UAW(PSP_TROUBLESHOOTER_PARAMS)
    754 
    755   typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A {
    756     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    757     CHAR PowerMessageWake[LINE_LEN*2];
    758   } SP_POWERMESSAGEWAKE_PARAMS_A,*PSP_POWERMESSAGEWAKE_PARAMS_A;
    759 
    760   typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W {
    761     SP_CLASSINSTALL_HEADER ClassInstallHeader;
    762     WCHAR PowerMessageWake[LINE_LEN*2];
    763   } SP_POWERMESSAGEWAKE_PARAMS_W,*PSP_POWERMESSAGEWAKE_PARAMS_W;
    764 
    765   __MINGW_TYPEDEF_UAW(SP_POWERMESSAGEWAKE_PARAMS)
    766   __MINGW_TYPEDEF_UAW(PSP_POWERMESSAGEWAKE_PARAMS)
    767 
    768   typedef struct _SP_DRVINFO_DATA_V2_A {
    769     DWORD cbSize;
    770     DWORD DriverType;
    771     ULONG_PTR Reserved;
    772     CHAR Description[LINE_LEN];
    773     CHAR MfgName[LINE_LEN];
    774     CHAR ProviderName[LINE_LEN];
    775     FILETIME DriverDate;
    776     DWORDLONG DriverVersion;
    777   } SP_DRVINFO_DATA_V2_A,*PSP_DRVINFO_DATA_V2_A;
    778 
    779   typedef struct _SP_DRVINFO_DATA_V2_W {
    780     DWORD cbSize;
    781     DWORD DriverType;
    782     ULONG_PTR Reserved;
    783     WCHAR Description[LINE_LEN];
    784     WCHAR MfgName[LINE_LEN];
    785     WCHAR ProviderName[LINE_LEN];
    786     FILETIME DriverDate;
    787     DWORDLONG DriverVersion;
    788   } SP_DRVINFO_DATA_V2_W,*PSP_DRVINFO_DATA_V2_W;
    789 
    790   typedef struct _SP_DRVINFO_DATA_V1_A {
    791     DWORD cbSize;
    792     DWORD DriverType;
    793     ULONG_PTR Reserved;
    794     CHAR Description[LINE_LEN];
    795     CHAR MfgName[LINE_LEN];
    796     CHAR ProviderName[LINE_LEN];
    797   } SP_DRVINFO_DATA_V1_A,*PSP_DRVINFO_DATA_V1_A;
    798 
    799   typedef struct _SP_DRVINFO_DATA_V1_W {
    800     DWORD cbSize;
    801     DWORD DriverType;
    802     ULONG_PTR Reserved;
    803     WCHAR Description[LINE_LEN];
    804     WCHAR MfgName[LINE_LEN];
    805     WCHAR ProviderName[LINE_LEN];
    806   } SP_DRVINFO_DATA_V1_W,*PSP_DRVINFO_DATA_V1_W;
    807 
    808   __MINGW_TYPEDEF_UAW(SP_DRVINFO_DATA_V1)
    809   __MINGW_TYPEDEF_UAW(PSP_DRVINFO_DATA_V1)
    810   __MINGW_TYPEDEF_UAW(SP_DRVINFO_DATA_V2)
    811   __MINGW_TYPEDEF_UAW(PSP_DRVINFO_DATA_V2)
    812 
    813 #if USE_SP_DRVINFO_DATA_V1
    814 
    815   typedef SP_DRVINFO_DATA_V1_A SP_DRVINFO_DATA_A;
    816   typedef PSP_DRVINFO_DATA_V1_A PSP_DRVINFO_DATA_A;
    817   typedef SP_DRVINFO_DATA_V1_W SP_DRVINFO_DATA_W;
    818   typedef PSP_DRVINFO_DATA_V1_W PSP_DRVINFO_DATA_W;
    819   typedef SP_DRVINFO_DATA_V1 SP_DRVINFO_DATA;
    820   typedef PSP_DRVINFO_DATA_V1 PSP_DRVINFO_DATA;
    821 #else
    822 
    823   typedef SP_DRVINFO_DATA_V2_A SP_DRVINFO_DATA_A;
    824   typedef PSP_DRVINFO_DATA_V2_A PSP_DRVINFO_DATA_A;
    825   typedef SP_DRVINFO_DATA_V2_W SP_DRVINFO_DATA_W;
    826   typedef PSP_DRVINFO_DATA_V2_W PSP_DRVINFO_DATA_W;
    827   typedef SP_DRVINFO_DATA_V2 SP_DRVINFO_DATA;
    828   typedef PSP_DRVINFO_DATA_V2 PSP_DRVINFO_DATA;
    829 #endif
    830 
    831   typedef struct _SP_DRVINFO_DETAIL_DATA_A {
    832     DWORD cbSize;
    833     FILETIME InfDate;
    834     DWORD CompatIDsOffset;
    835     DWORD CompatIDsLength;
    836     ULONG_PTR Reserved;
    837     CHAR SectionName[LINE_LEN];
    838     CHAR InfFileName[MAX_PATH];
    839     CHAR DrvDescription[LINE_LEN];
    840     CHAR HardwareID[ANYSIZE_ARRAY];
    841   } SP_DRVINFO_DETAIL_DATA_A,*PSP_DRVINFO_DETAIL_DATA_A;
    842 
    843   typedef struct _SP_DRVINFO_DETAIL_DATA_W {
    844     DWORD cbSize;
    845     FILETIME InfDate;
    846     DWORD CompatIDsOffset;
    847     DWORD CompatIDsLength;
    848     ULONG_PTR Reserved;
    849     WCHAR SectionName[LINE_LEN];
    850     WCHAR InfFileName[MAX_PATH];
    851     WCHAR DrvDescription[LINE_LEN];
    852     WCHAR HardwareID[ANYSIZE_ARRAY];
    853   } SP_DRVINFO_DETAIL_DATA_W,*PSP_DRVINFO_DETAIL_DATA_W;
    854 
    855   __MINGW_TYPEDEF_UAW(SP_DRVINFO_DETAIL_DATA)
    856   __MINGW_TYPEDEF_UAW(PSP_DRVINFO_DETAIL_DATA)
    857 
    858   typedef struct _SP_DRVINSTALL_PARAMS {
    859     DWORD cbSize;
    860     DWORD Rank;
    861     DWORD Flags;
    862     DWORD_PTR PrivateData;
    863     DWORD Reserved;
    864   } SP_DRVINSTALL_PARAMS,*PSP_DRVINSTALL_PARAMS;
    865 
    866 #define DNF_DUPDESC 0x00000001
    867 #define DNF_OLDDRIVER 0x00000002
    868 #define DNF_EXCLUDEFROMLIST 0x00000004
    869 #define DNF_NODRIVER 0x00000008
    870 #define DNF_LEGACYINF 0x00000010
    871 #define DNF_CLASS_DRIVER 0x00000020
    872 #define DNF_COMPATIBLE_DRIVER 0x00000040
    873 #define DNF_INET_DRIVER 0x00000080
    874 #define DNF_UNUSED1 0x00000100
    875 #define DNF_INDEXED_DRIVER 0x00000200
    876 #define DNF_OLD_INET_DRIVER 0x00000400
    877 #define DNF_BAD_DRIVER 0x00000800
    878 #define DNF_DUPPROVIDER 0x00001000
    879 #define DNF_INF_IS_SIGNED 0x00002000
    880 #define DNF_OEM_F6_INF 0x00004000
    881 #define DNF_DUPDRIVERVER 0x00008000
    882 #define DNF_BASIC_DRIVER 0x00010000
    883 #define DNF_AUTHENTICODE_SIGNED 0x00020000
    884 
    885 #define DRIVER_HARDWAREID_RANK 0x00000FFF
    886 #define DRIVER_COMPATID_RANK 0x00003FFF
    887 #define DRIVER_UNTRUSTED_RANK 0x00008000
    888 #define DRIVER_UNTRUSTED_HARDWAREID_RANK 0x00008FFF
    889 #define DRIVER_UNTRUSTED_COMPATID_RANK 0x0000BFFF
    890 #define DRIVER_W9X_SUSPECT_RANK 0x0000C000
    891 #define DRIVER_W9X_SUSPECT_HARDWAREID_RANK 0x0000CFFF
    892 #define DRIVER_W9X_SUSPECT_COMPATID_RANK 0x0000FFFF
    893 
    894   typedef DWORD (CALLBACK *PSP_DETSIG_CMPPROC)(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA NewDeviceData,PSP_DEVINFO_DATA ExistingDeviceData,PVOID CompareContext);
    895 
    896   typedef struct _COINSTALLER_CONTEXT_DATA {
    897     WINBOOL PostProcessing;
    898     DWORD InstallResult;
    899     PVOID PrivateData;
    900   } COINSTALLER_CONTEXT_DATA,*PCOINSTALLER_CONTEXT_DATA;
    901 
    902   typedef struct _SP_CLASSIMAGELIST_DATA {
    903     DWORD cbSize;
    904     HIMAGELIST ImageList;
    905     ULONG_PTR Reserved;
    906   } SP_CLASSIMAGELIST_DATA,*PSP_CLASSIMAGELIST_DATA;
    907 
    908   typedef struct _SP_PROPSHEETPAGE_REQUEST {
    909     DWORD cbSize;
    910     DWORD PageRequested;
    911     HDEVINFO DeviceInfoSet;
    912     PSP_DEVINFO_DATA DeviceInfoData;
    913   } SP_PROPSHEETPAGE_REQUEST,*PSP_PROPSHEETPAGE_REQUEST;
    914 
    915 #define SPPSR_SELECT_DEVICE_RESOURCES 1
    916 #define SPPSR_ENUM_BASIC_DEVICE_PROPERTIES 2
    917 #define SPPSR_ENUM_ADV_DEVICE_PROPERTIES 3
    918 
    919   typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_A {
    920     DWORD cbSize;
    921     CHAR FullInfPath[MAX_PATH];
    922     INT FilenameOffset;
    923     CHAR ReinstallInstance[MAX_PATH];
    924   } SP_BACKUP_QUEUE_PARAMS_V2_A,*PSP_BACKUP_QUEUE_PARAMS_V2_A;
    925 
    926   typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_W {
    927     DWORD cbSize;
    928     WCHAR FullInfPath[MAX_PATH];
    929     INT FilenameOffset;
    930     WCHAR ReinstallInstance[MAX_PATH];
    931   } SP_BACKUP_QUEUE_PARAMS_V2_W,*PSP_BACKUP_QUEUE_PARAMS_V2_W;
    932 
    933   typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_A {
    934     DWORD cbSize;
    935     CHAR FullInfPath[MAX_PATH];
    936     INT FilenameOffset;
    937   } SP_BACKUP_QUEUE_PARAMS_V1_A,*PSP_BACKUP_QUEUE_PARAMS_V1_A;
    938 
    939   typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_W {
    940     DWORD cbSize;
    941     WCHAR FullInfPath[MAX_PATH];
    942     INT FilenameOffset;
    943   } SP_BACKUP_QUEUE_PARAMS_V1_W,*PSP_BACKUP_QUEUE_PARAMS_V1_W;
    944 
    945   __MINGW_TYPEDEF_UAW(SP_BACKUP_QUEUE_PARAMS_V1)
    946   __MINGW_TYPEDEF_UAW(PSP_BACKUP_QUEUE_PARAMS_V1)
    947   __MINGW_TYPEDEF_UAW(SP_BACKUP_QUEUE_PARAMS_V2)
    948   __MINGW_TYPEDEF_UAW(PSP_BACKUP_QUEUE_PARAMS_V2)
    949 
    950 #if USE_SP_BACKUP_QUEUE_PARAMS_V1
    951 
    952   typedef SP_BACKUP_QUEUE_PARAMS_V1_A SP_BACKUP_QUEUE_PARAMS_A;
    953   typedef PSP_BACKUP_QUEUE_PARAMS_V1_A PSP_BACKUP_QUEUE_PARAMS_A;
    954   typedef SP_BACKUP_QUEUE_PARAMS_V1_W SP_BACKUP_QUEUE_PARAMS_W;
    955   typedef PSP_BACKUP_QUEUE_PARAMS_V1_W PSP_BACKUP_QUEUE_PARAMS_W;
    956   typedef SP_BACKUP_QUEUE_PARAMS_V1 SP_BACKUP_QUEUE_PARAMS;
    957   typedef PSP_BACKUP_QUEUE_PARAMS_V1 PSP_BACKUP_QUEUE_PARAMS;
    958 #else
    959 
    960   typedef SP_BACKUP_QUEUE_PARAMS_V2_A SP_BACKUP_QUEUE_PARAMS_A;
    961   typedef PSP_BACKUP_QUEUE_PARAMS_V2_A PSP_BACKUP_QUEUE_PARAMS_A;
    962   typedef SP_BACKUP_QUEUE_PARAMS_V2_W SP_BACKUP_QUEUE_PARAMS_W;
    963   typedef PSP_BACKUP_QUEUE_PARAMS_V2_W PSP_BACKUP_QUEUE_PARAMS_W;
    964   typedef SP_BACKUP_QUEUE_PARAMS_V2 SP_BACKUP_QUEUE_PARAMS;
    965   typedef PSP_BACKUP_QUEUE_PARAMS_V2 PSP_BACKUP_QUEUE_PARAMS;
    966 #endif
    967 
    968 #ifndef _SPAPI_ERRORS
    969 #define _SPAPI_ERRORS
    970 
    971 #define ERROR_EXPECTED_SECTION_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0)
    972 #define ERROR_BAD_SECTION_NAME_LINE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|1)
    973 #define ERROR_SECTION_NAME_TOO_LONG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|2)
    974 #define ERROR_GENERAL_SYNTAX (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|3)
    975 #define ERROR_WRONG_INF_STYLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x100)
    976 #define ERROR_SECTION_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x101)
    977 #define ERROR_LINE_NOT_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x102)
    978 #define ERROR_NO_BACKUP (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x103)
    979 #define ERROR_NO_ASSOCIATED_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x200)
    980 #define ERROR_CLASS_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x201)
    981 #define ERROR_DUPLICATE_FOUND (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x202)
    982 #define ERROR_NO_DRIVER_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x203)
    983 #define ERROR_KEY_DOES_NOT_EXIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x204)
    984 #define ERROR_INVALID_DEVINST_NAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x205)
    985 #define ERROR_INVALID_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x206)
    986 #define ERROR_DEVINST_ALREADY_EXISTS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x207)
    987 #define ERROR_DEVINFO_NOT_REGISTERED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x208)
    988 #define ERROR_INVALID_REG_PROPERTY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x209)
    989 #define ERROR_NO_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20A)
    990 #define ERROR_NO_SUCH_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20B)
    991 #define ERROR_CANT_LOAD_CLASS_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20C)
    992 #define ERROR_INVALID_CLASS_INSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20D)
    993 #define ERROR_DI_DO_DEFAULT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20E)
    994 #define ERROR_DI_NOFILECOPY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x20F)
    995 #define ERROR_INVALID_HWPROFILE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x210)
    996 #define ERROR_NO_DEVICE_SELECTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x211)
    997 #define ERROR_DEVINFO_LIST_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x212)
    998 #define ERROR_DEVINFO_DATA_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x213)
    999 #define ERROR_DI_BAD_PATH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x214)
   1000 #define ERROR_NO_CLASSINSTALL_PARAMS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x215)
   1001 #define ERROR_FILEQUEUE_LOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x216)
   1002 #define ERROR_BAD_SERVICE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x217)
   1003 #define ERROR_NO_CLASS_DRIVER_LIST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x218)
   1004 #define ERROR_NO_ASSOCIATED_SERVICE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x219)
   1005 #define ERROR_NO_DEFAULT_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21A)
   1006 #define ERROR_DEVICE_INTERFACE_ACTIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21B)
   1007 #define ERROR_DEVICE_INTERFACE_REMOVED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21C)
   1008 #define ERROR_BAD_INTERFACE_INSTALLSECT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21D)
   1009 #define ERROR_NO_SUCH_INTERFACE_CLASS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21E)
   1010 #define ERROR_INVALID_REFERENCE_STRING (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x21F)
   1011 #define ERROR_INVALID_MACHINENAME (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x220)
   1012 #define ERROR_REMOTE_COMM_FAILURE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x221)
   1013 #define ERROR_MACHINE_UNAVAILABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x222)
   1014 #define ERROR_NO_CONFIGMGR_SERVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x223)
   1015 #define ERROR_INVALID_PROPPAGE_PROVIDER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x224)
   1016 #define ERROR_NO_SUCH_DEVICE_INTERFACE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x225)
   1017 #define ERROR_DI_POSTPROCESSING_REQUIRED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x226)
   1018 #define ERROR_INVALID_COINSTALLER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x227)
   1019 #define ERROR_NO_COMPAT_DRIVERS (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x228)
   1020 #define ERROR_NO_DEVICE_ICON (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x229)
   1021 #define ERROR_INVALID_INF_LOGCONFIG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22A)
   1022 #define ERROR_DI_DONT_INSTALL (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22B)
   1023 #define ERROR_INVALID_FILTER_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22C)
   1024 #define ERROR_NON_WINDOWS_NT_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22D)
   1025 #define ERROR_NON_WINDOWS_DRIVER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22E)
   1026 #define ERROR_NO_CATALOG_FOR_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x22F)
   1027 #define ERROR_DEVINSTALL_QUEUE_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x230)
   1028 #define ERROR_NOT_DISABLEABLE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x231)
   1029 #define ERROR_CANT_REMOVE_DEVINST (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x232)
   1030 #define ERROR_INVALID_TARGET (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x233)
   1031 #define ERROR_DRIVER_NONNATIVE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x234)
   1032 #define ERROR_IN_WOW64 (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x235)
   1033 #define ERROR_SET_SYSTEM_RESTORE_POINT (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x236)
   1034 #define ERROR_INCORRECTLY_COPIED_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x237)
   1035 #define ERROR_SCE_DISABLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x238)
   1036 #define ERROR_UNKNOWN_EXCEPTION (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x239)
   1037 #define ERROR_PNP_REGISTRY_ERROR (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23A)
   1038 #define ERROR_REMOTE_REQUEST_UNSUPPORTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23B)
   1039 #define ERROR_NOT_AN_INSTALLED_OEM_INF (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23C)
   1040 #define ERROR_INF_IN_USE_BY_DEVICES (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23D)
   1041 #define ERROR_DI_FUNCTION_OBSOLETE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23E)
   1042 #define ERROR_NO_AUTHENTICODE_CATALOG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x23F)
   1043 #define ERROR_AUTHENTICODE_DISALLOWED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x240)
   1044 #define ERROR_AUTHENTICODE_TRUSTED_PUBLISHER (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x241)
   1045 #define ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x242)
   1046 #define ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x243)
   1047 #define ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x244)
   1048 #define ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x245)
   1049 #define ERROR_DEVICE_INSTALLER_NOT_READY (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x246)
   1050 #define ERROR_DRIVER_STORE_ADD_FAILED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x247)
   1051 #define ERROR_DEVICE_INSTALL_BLOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x248)
   1052 #define ERROR_DRIVER_INSTALL_BLOCKED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x249)
   1053 #define ERROR_WRONG_INF_TYPE (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x24A)
   1054 #define ERROR_FILE_HASH_NOT_IN_CATALOG (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x24B)
   1055 #define ERROR_DRIVER_STORE_DELETE_FAILED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x24C)
   1056 #define ERROR_UNRECOVERABLE_STACK_OVERFLOW (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x300)
   1057 #define EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW ERROR_UNRECOVERABLE_STACK_OVERFLOW
   1058 #define ERROR_NO_DEFAULT_INTERFACE_DEVICE ERROR_NO_DEFAULT_DEVICE_INTERFACE
   1059 #define ERROR_INTERFACE_DEVICE_ACTIVE ERROR_DEVICE_INTERFACE_ACTIVE
   1060 #define ERROR_INTERFACE_DEVICE_REMOVED ERROR_DEVICE_INTERFACE_REMOVED
   1061 #define ERROR_NO_SUCH_INTERFACE_DEVICE ERROR_NO_SUCH_DEVICE_INTERFACE
   1062 #define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000)
   1063 
   1064 #endif /* _SPAPI_ERRORS */
   1065 
   1066   WINSETUPAPI WINBOOL WINAPI SetupGetInfInformationA(LPCVOID InfSpec,DWORD SearchControl,PSP_INF_INFORMATION ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1067   WINSETUPAPI WINBOOL WINAPI SetupGetInfInformationW(LPCVOID InfSpec,DWORD SearchControl,PSP_INF_INFORMATION ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1068 
   1069 #define INFINFO_INF_SPEC_IS_HINF 1
   1070 #define INFINFO_INF_NAME_IS_ABSOLUTE 2
   1071 #define INFINFO_DEFAULT_SEARCH 3
   1072 #define INFINFO_REVERSE_DEFAULT_SEARCH 4
   1073 #define INFINFO_INF_PATH_LIST_SEARCH 5
   1074 
   1075 #define SetupGetInfInformation __MINGW_NAME_AW(SetupGetInfInformation)
   1076 #define SetupQueryInfFileInformation __MINGW_NAME_AW(SetupQueryInfFileInformation)
   1077 #define SetupQueryInfOriginalFileInformation __MINGW_NAME_AW(SetupQueryInfOriginalFileInformation)
   1078 #define SetupQueryInfVersionInformation __MINGW_NAME_AW(SetupQueryInfVersionInformation)
   1079 #define SetupGetInfFileList __MINGW_NAME_AW(SetupGetInfFileList)
   1080 #define SetupOpenInfFile __MINGW_NAME_AW(SetupOpenInfFile)
   1081 #define SetupOpenAppendInfFile __MINGW_NAME_AW(SetupOpenAppendInfFile)
   1082 #define SetupFindFirstLine __MINGW_NAME_AW(SetupFindFirstLine)
   1083 #define SetupFindNextMatchLine __MINGW_NAME_AW(SetupFindNextMatchLine)
   1084 #define SetupGetLineByIndex __MINGW_NAME_AW(SetupGetLineByIndex)
   1085 #define SetupGetLineCount __MINGW_NAME_AW(SetupGetLineCount)
   1086 #define SetupGetLineText __MINGW_NAME_AW(SetupGetLineText)
   1087 #define SetupGetStringField __MINGW_NAME_AW(SetupGetStringField)
   1088 #define SetupGetMultiSzField __MINGW_NAME_AW(SetupGetMultiSzField)
   1089 #define SetupGetFileCompressionInfo __MINGW_NAME_AW(SetupGetFileCompressionInfo)
   1090 #define SetupGetFileCompressionInfoEx __MINGW_NAME_AW(SetupGetFileCompressionInfoEx)
   1091 #define SetupDecompressOrCopyFile __MINGW_NAME_AW(SetupDecompressOrCopyFile)
   1092 #define SetupGetSourceFileLocation __MINGW_NAME_AW(SetupGetSourceFileLocation)
   1093 #define SetupGetSourceFileSize __MINGW_NAME_AW(SetupGetSourceFileSize)
   1094 #define SetupGetTargetPath __MINGW_NAME_AW(SetupGetTargetPath)
   1095 #define SetupSetSourceList __MINGW_NAME_AW(SetupSetSourceList)
   1096 #define SetupAddToSourceList __MINGW_NAME_AW(SetupAddToSourceList)
   1097 #define SetupRemoveFromSourceList __MINGW_NAME_AW(SetupRemoveFromSourceList)
   1098 #define SetupQuerySourceList __MINGW_NAME_AW(SetupQuerySourceList)
   1099 #define SetupFreeSourceList __MINGW_NAME_AW(SetupFreeSourceList)
   1100 #define SetupPromptForDisk __MINGW_NAME_AW(SetupPromptForDisk)
   1101 #define SetupCopyError __MINGW_NAME_AW(SetupCopyError)
   1102 #define SetupRenameError __MINGW_NAME_AW(SetupRenameError)
   1103 #define SetupDeleteError __MINGW_NAME_AW(SetupDeleteError)
   1104 #define SetupBackupError __MINGW_NAME_AW(SetupBackupError)
   1105 
   1106 #define SRCLIST_TEMPORARY 0x00000001
   1107 #define SRCLIST_NOBROWSE 0x00000002
   1108 #define SRCLIST_SYSTEM 0x00000010
   1109 #define SRCLIST_USER 0x00000020
   1110 #define SRCLIST_SYSIFADMIN 0x00000040
   1111 #define SRCLIST_SUBDIRS 0x00000100
   1112 #define SRCLIST_APPEND 0x00000200
   1113 #define SRCLIST_NOSTRIPPLATFORM 0x00000400
   1114 
   1115 #define FILE_COMPRESSION_NONE 0
   1116 #define FILE_COMPRESSION_WINLZA 1
   1117 #define FILE_COMPRESSION_MSZIP 2
   1118 #define FILE_COMPRESSION_NTCAB 3
   1119 
   1120   WINSETUPAPI WINBOOL WINAPI SetupQueryInfFileInformationA(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1121   WINSETUPAPI WINBOOL WINAPI SetupQueryInfFileInformationW(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1122   WINSETUPAPI WINBOOL WINAPI SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PSP_ORIGINAL_FILE_INFO_A OriginalFileInfo);
   1123   WINSETUPAPI WINBOOL WINAPI SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PSP_ORIGINAL_FILE_INFO_W OriginalFileInfo);
   1124   WINSETUPAPI WINBOOL WINAPI SetupQueryInfVersionInformationA(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PCSTR Key,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1125   WINSETUPAPI WINBOOL WINAPI SetupQueryInfVersionInformationW(PSP_INF_INFORMATION InfInformation,UINT InfIndex,PCWSTR Key,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1126   WINSETUPAPI WINBOOL WINAPI SetupGetInfFileListA(PCSTR DirectoryPath,DWORD InfStyle,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1127   WINSETUPAPI WINBOOL WINAPI SetupGetInfFileListW(PCWSTR DirectoryPath,DWORD InfStyle,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1128   WINSETUPAPI HINF WINAPI SetupOpenInfFileW(PCWSTR FileName,PCWSTR InfClass,DWORD InfStyle,PUINT ErrorLine);
   1129   WINSETUPAPI HINF WINAPI SetupOpenInfFileA(PCSTR FileName,PCSTR InfClass,DWORD InfStyle,PUINT ErrorLine);
   1130   WINSETUPAPI HINF WINAPI SetupOpenMasterInf(VOID);
   1131   WINSETUPAPI WINBOOL WINAPI SetupOpenAppendInfFileW(PCWSTR FileName,HINF InfHandle,PUINT ErrorLine);
   1132   WINSETUPAPI WINBOOL WINAPI SetupOpenAppendInfFileA(PCSTR FileName,HINF InfHandle,PUINT ErrorLine);
   1133   WINSETUPAPI VOID WINAPI SetupCloseInfFile(HINF InfHandle);
   1134   WINSETUPAPI WINBOOL WINAPI SetupFindFirstLineA(HINF InfHandle,PCSTR Section,PCSTR Key,PINFCONTEXT Context);
   1135   WINSETUPAPI WINBOOL WINAPI SetupFindFirstLineW(HINF InfHandle,PCWSTR Section,PCWSTR Key,PINFCONTEXT Context);
   1136   WINSETUPAPI WINBOOL WINAPI SetupFindNextLine(PINFCONTEXT ContextIn,PINFCONTEXT ContextOut);
   1137   WINSETUPAPI WINBOOL WINAPI SetupFindNextMatchLineA(PINFCONTEXT ContextIn,PCSTR Key,PINFCONTEXT ContextOut);
   1138   WINSETUPAPI WINBOOL WINAPI SetupFindNextMatchLineW(PINFCONTEXT ContextIn,PCWSTR Key,PINFCONTEXT ContextOut);
   1139   WINSETUPAPI WINBOOL WINAPI SetupGetLineByIndexA(HINF InfHandle,PCSTR Section,DWORD Index,PINFCONTEXT Context);
   1140   WINSETUPAPI WINBOOL WINAPI SetupGetLineByIndexW(HINF InfHandle,PCWSTR Section,DWORD Index,PINFCONTEXT Context);
   1141   WINSETUPAPI LONG WINAPI SetupGetLineCountA(HINF InfHandle,PCSTR Section);
   1142   WINSETUPAPI LONG WINAPI SetupGetLineCountW(HINF InfHandle,PCWSTR Section);
   1143   WINSETUPAPI WINBOOL WINAPI SetupGetLineTextA(PINFCONTEXT Context,HINF InfHandle,PCSTR Section,PCSTR Key,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1144   WINSETUPAPI WINBOOL WINAPI SetupGetLineTextW(PINFCONTEXT Context,HINF InfHandle,PCWSTR Section,PCWSTR Key,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1145   WINSETUPAPI DWORD WINAPI SetupGetFieldCount(PINFCONTEXT Context);
   1146   WINSETUPAPI WINBOOL WINAPI SetupGetStringFieldA(PINFCONTEXT Context,DWORD FieldIndex,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1147   WINSETUPAPI WINBOOL WINAPI SetupGetStringFieldW(PINFCONTEXT Context,DWORD FieldIndex,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1148   WINSETUPAPI WINBOOL WINAPI SetupGetIntField(PINFCONTEXT Context,DWORD FieldIndex,PINT IntegerValue);
   1149   WINSETUPAPI WINBOOL WINAPI SetupGetMultiSzFieldA(PINFCONTEXT Context,DWORD FieldIndex,PSTR ReturnBuffer,DWORD ReturnBufferSize,LPDWORD RequiredSize);
   1150   WINSETUPAPI WINBOOL WINAPI SetupGetMultiSzFieldW(PINFCONTEXT Context,DWORD FieldIndex,PWSTR ReturnBuffer,DWORD ReturnBufferSize,LPDWORD RequiredSize);
   1151   WINSETUPAPI WINBOOL WINAPI SetupGetBinaryField(PINFCONTEXT Context,DWORD FieldIndex,PBYTE ReturnBuffer,DWORD ReturnBufferSize,LPDWORD RequiredSize);
   1152   WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoA(PCSTR SourceFileName,PSTR *ActualSourceFileName,PDWORD SourceFileSize,PDWORD TargetFileSize,PUINT CompressionType);
   1153   WINSETUPAPI DWORD WINAPI SetupGetFileCompressionInfoW(PCWSTR SourceFileName,PWSTR *ActualSourceFileName,PDWORD SourceFileSize,PDWORD TargetFileSize,PUINT CompressionType);
   1154   WINSETUPAPI WINBOOL WINAPI SetupGetFileCompressionInfoExA(PCSTR SourceFileName,PSTR ActualSourceFileNameBuffer,DWORD ActualSourceFileNameBufferLen,PDWORD RequiredBufferLen,PDWORD SourceFileSize,PDWORD TargetFileSize,PUINT CompressionType);
   1155   WINSETUPAPI WINBOOL WINAPI SetupGetFileCompressionInfoExW(PCWSTR SourceFileName,PWSTR ActualSourceFileNameBuffer,DWORD ActualSourceFileNameBufferLen,PDWORD RequiredBufferLen,PDWORD SourceFileSize,PDWORD TargetFileSize,PUINT CompressionType);
   1156   WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileA(PCSTR SourceFileName,PCSTR TargetFileName,PUINT CompressionType);
   1157   WINSETUPAPI DWORD WINAPI SetupDecompressOrCopyFileW(PCWSTR SourceFileName,PCWSTR TargetFileName,PUINT CompressionType);
   1158   WINSETUPAPI WINBOOL WINAPI SetupGetSourceFileLocationA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR FileName,PUINT SourceId,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1159   WINSETUPAPI WINBOOL WINAPI SetupGetSourceFileLocationW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR FileName,PUINT SourceId,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1160   WINSETUPAPI WINBOOL WINAPI SetupGetSourceFileSizeA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR FileName,PCSTR Section,PDWORD FileSize,UINT RoundingFactor);
   1161   WINSETUPAPI WINBOOL WINAPI SetupGetSourceFileSizeW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR FileName,PCWSTR Section,PDWORD FileSize,UINT RoundingFactor);
   1162   WINSETUPAPI WINBOOL WINAPI SetupGetTargetPathA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR Section,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1163   WINSETUPAPI WINBOOL WINAPI SetupGetTargetPathW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR Section,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1164   WINSETUPAPI WINBOOL WINAPI SetupSetSourceListA(DWORD Flags,PCSTR *SourceList,UINT SourceCount);
   1165   WINSETUPAPI WINBOOL WINAPI SetupSetSourceListW(DWORD Flags,PCWSTR *SourceList,UINT SourceCount);
   1166   WINSETUPAPI WINBOOL WINAPI SetupCancelTemporarySourceList(VOID);
   1167   WINSETUPAPI WINBOOL WINAPI SetupAddToSourceListA(DWORD Flags,PCSTR Source);
   1168   WINSETUPAPI WINBOOL WINAPI SetupAddToSourceListW(DWORD Flags,PCWSTR Source);
   1169   WINSETUPAPI WINBOOL WINAPI SetupRemoveFromSourceListA(DWORD Flags,PCSTR Source);
   1170   WINSETUPAPI WINBOOL WINAPI SetupRemoveFromSourceListW(DWORD Flags,PCWSTR Source);
   1171   WINSETUPAPI WINBOOL WINAPI SetupQuerySourceListA(DWORD Flags,PCSTR **List,PUINT Count);
   1172   WINSETUPAPI WINBOOL WINAPI SetupQuerySourceListW(DWORD Flags,PCWSTR **List,PUINT Count);
   1173   WINSETUPAPI WINBOOL WINAPI SetupFreeSourceListA(PCSTR **List,UINT Count);
   1174   WINSETUPAPI WINBOOL WINAPI SetupFreeSourceListW(PCWSTR **List,UINT Count);
   1175   WINSETUPAPI UINT WINAPI SetupPromptForDiskA(HWND hwndParent,PCSTR DialogTitle,PCSTR DiskName,PCSTR PathToSource,PCSTR FileSought,PCSTR TagFile,DWORD DiskPromptStyle,PSTR PathBuffer,DWORD PathBufferSize,PDWORD PathRequiredSize);
   1176   WINSETUPAPI UINT WINAPI SetupPromptForDiskW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR DiskName,PCWSTR PathToSource,PCWSTR FileSought,PCWSTR TagFile,DWORD DiskPromptStyle,PWSTR PathBuffer,DWORD PathBufferSize,PDWORD PathRequiredSize);
   1177   WINSETUPAPI UINT WINAPI SetupCopyErrorA(HWND hwndParent,PCSTR DialogTitle,PCSTR DiskName,PCSTR PathToSource,PCSTR SourceFile,PCSTR TargetPathFile,UINT Win32ErrorCode,DWORD Style,PSTR PathBuffer,DWORD PathBufferSize,PDWORD PathRequiredSize);
   1178   WINSETUPAPI UINT WINAPI SetupCopyErrorW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR DiskName,PCWSTR PathToSource,PCWSTR SourceFile,PCWSTR TargetPathFile,UINT Win32ErrorCode,DWORD Style,PWSTR PathBuffer,DWORD PathBufferSize,PDWORD PathRequiredSize);
   1179   WINSETUPAPI UINT WINAPI SetupRenameErrorA(HWND hwndParent,PCSTR DialogTitle,PCSTR SourceFile,PCSTR TargetFile,UINT Win32ErrorCode,DWORD Style);
   1180   WINSETUPAPI UINT WINAPI SetupRenameErrorW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR SourceFile,PCWSTR TargetFile,UINT Win32ErrorCode,DWORD Style);
   1181   WINSETUPAPI UINT WINAPI SetupDeleteErrorA(HWND hwndParent,PCSTR DialogTitle,PCSTR File,UINT Win32ErrorCode,DWORD Style);
   1182   WINSETUPAPI UINT WINAPI SetupDeleteErrorW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR File,UINT Win32ErrorCode,DWORD Style);
   1183   WINSETUPAPI UINT WINAPI SetupBackupErrorA(HWND hwndParent,PCSTR DialogTitle,PCSTR SourceFile,PCSTR TargetFile,UINT Win32ErrorCode,DWORD Style);
   1184   WINSETUPAPI UINT WINAPI SetupBackupErrorW(HWND hwndParent,PCWSTR DialogTitle,PCWSTR SourceFile,PCWSTR TargetFile,UINT Win32ErrorCode,DWORD Style);
   1185 
   1186 #define IDF_NOBROWSE 0x00000001
   1187 #define IDF_NOSKIP 0x00000002
   1188 #define IDF_NODETAILS 0x00000004
   1189 #define IDF_NOCOMPRESSED 0x00000008
   1190 #define IDF_CHECKFIRST 0x00000100
   1191 #define IDF_NOBEEP 0x00000200
   1192 #define IDF_NOFOREGROUND 0x00000400
   1193 #define IDF_WARNIFSKIP 0x00000800
   1194 
   1195 #define IDF_NOREMOVABLEMEDIAPROMPT 0x00001000
   1196 #define IDF_USEDISKNAMEASPROMPT 0x00002000
   1197 #define IDF_OEMDISK 0x80000000
   1198 
   1199 #define DPROMPT_SUCCESS 0
   1200 #define DPROMPT_CANCEL 1
   1201 #define DPROMPT_SKIPFILE 2
   1202 #define DPROMPT_BUFFERTOOSMALL 3
   1203 #define DPROMPT_OUTOFMEMORY 4
   1204 
   1205 #define SETDIRID_NOT_FULL_PATH 0x00000001
   1206 
   1207 #define SRCINFO_PATH 1
   1208 #define SRCINFO_TAGFILE 2
   1209 #define SRCINFO_DESCRIPTION 3
   1210 #define SRCINFO_FLAGS 4
   1211 #define SRCINFO_TAGFILE2 5
   1212 
   1213 #define SRC_FLAGS_CABFILE (0x0010)
   1214 
   1215 #define SetupSetDirectoryId __MINGW_NAME_AW(SetupSetDirectoryId)
   1216 #define SetupSetDirectoryIdEx __MINGW_NAME_AW(SetupSetDirectoryIdEx)
   1217 #define SetupGetSourceInfo __MINGW_NAME_AW(SetupGetSourceInfo)
   1218 #define SetupInstallFile __MINGW_NAME_AW(SetupInstallFile)
   1219 #define SetupInstallFileEx __MINGW_NAME_AW(SetupInstallFileEx)
   1220 
   1221   WINSETUPAPI WINBOOL WINAPI SetupSetDirectoryIdA(HINF InfHandle,DWORD Id,PCSTR Directory);
   1222   WINSETUPAPI WINBOOL WINAPI SetupSetDirectoryIdW(HINF InfHandle,DWORD Id,PCWSTR Directory);
   1223   WINSETUPAPI WINBOOL WINAPI SetupSetDirectoryIdExA(HINF InfHandle,DWORD Id,PCSTR Directory,DWORD Flags,DWORD Reserved1,PVOID Reserved2);
   1224   WINSETUPAPI WINBOOL WINAPI SetupSetDirectoryIdExW(HINF InfHandle,DWORD Id,PCWSTR Directory,DWORD Flags,DWORD Reserved1,PVOID Reserved2);
   1225   WINSETUPAPI WINBOOL WINAPI SetupGetSourceInfoA(HINF InfHandle,UINT SourceId,UINT InfoDesired,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1226   WINSETUPAPI WINBOOL WINAPI SetupGetSourceInfoW(HINF InfHandle,UINT SourceId,UINT InfoDesired,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1227   WINSETUPAPI WINBOOL WINAPI SetupInstallFileA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR SourceFile,PCSTR SourcePathRoot,PCSTR DestinationName,DWORD CopyStyle,PSP_FILE_CALLBACK_A CopyMsgHandler,PVOID Context);
   1228   WINSETUPAPI WINBOOL WINAPI SetupInstallFileW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR SourceFile,PCWSTR SourcePathRoot,PCWSTR DestinationName,DWORD CopyStyle,PSP_FILE_CALLBACK_W CopyMsgHandler,PVOID Context);
   1229   WINSETUPAPI WINBOOL WINAPI SetupInstallFileExA(HINF InfHandle,PINFCONTEXT InfContext,PCSTR SourceFile,PCSTR SourcePathRoot,PCSTR DestinationName,DWORD CopyStyle,PSP_FILE_CALLBACK_A CopyMsgHandler,PVOID Context,PBOOL FileWasInUse);
   1230   WINSETUPAPI WINBOOL WINAPI SetupInstallFileExW(HINF InfHandle,PINFCONTEXT InfContext,PCWSTR SourceFile,PCWSTR SourcePathRoot,PCWSTR DestinationName,DWORD CopyStyle,PSP_FILE_CALLBACK_W CopyMsgHandler,PVOID Context,PBOOL FileWasInUse);
   1231 
   1232 #define SP_COPY_DELETESOURCE 0x0000001
   1233 #define SP_COPY_REPLACEONLY 0x0000002
   1234 #define SP_COPY_NEWER 0x0000004
   1235 #define SP_COPY_NEWER_OR_SAME SP_COPY_NEWER
   1236 #define SP_COPY_NOOVERWRITE 0x0000008
   1237 #define SP_COPY_NODECOMP 0x0000010
   1238 #define SP_COPY_LANGUAGEAWARE 0x0000020
   1239 #define SP_COPY_SOURCE_ABSOLUTE 0x0000040
   1240 #define SP_COPY_SOURCEPATH_ABSOLUTE 0x0000080
   1241 #define SP_COPY_IN_USE_NEEDS_REBOOT 0x0000100
   1242 #define SP_COPY_FORCE_IN_USE 0x0000200
   1243 #define SP_COPY_NOSKIP 0x0000400
   1244 #define SP_FLAG_CABINETCONTINUATION 0x0000800
   1245 #define SP_COPY_FORCE_NOOVERWRITE 0x0001000
   1246 #define SP_COPY_FORCE_NEWER 0x0002000
   1247 #define SP_COPY_WARNIFSKIP 0x0004000
   1248 #define SP_COPY_NOBROWSE 0x0008000
   1249 #define SP_COPY_NEWER_ONLY 0x0010000
   1250 #define SP_COPY_SOURCE_SIS_MASTER 0x0020000
   1251 #define SP_COPY_OEMINF_CATALOG_ONLY 0x0040000
   1252 #define SP_COPY_REPLACE_BOOT_FILE 0x0080000
   1253 #define SP_COPY_NOPRUNE 0x0100000
   1254 #define SP_COPY_OEM_F6_INF 0x0200000
   1255 
   1256 #define SP_BACKUP_BACKUPPASS 0x00000001
   1257 #define SP_BACKUP_DEMANDPASS 0x00000002
   1258 #define SP_BACKUP_SPECIAL 0x00000004
   1259 #define SP_BACKUP_BOOTFILE 0x00000008
   1260 
   1261 #define SetupSetFileQueueAlternatePlatform __MINGW_NAME_AW(SetupSetFileQueueAlternatePlatform)
   1262 #define SetupQueueDeleteSection __MINGW_NAME_AW(SetupQueueDeleteSection)
   1263 #define SetupQueueRename __MINGW_NAME_AW(SetupQueueRename)
   1264 #define SetupQueueRenameSection __MINGW_NAME_AW(SetupQueueRenameSection)
   1265 #define SetupCommitFileQueue __MINGW_NAME_AW(SetupCommitFileQueue)
   1266 #define SetupScanFileQueue __MINGW_NAME_AW(SetupScanFileQueue)
   1267 #define SetupSetPlatformPathOverride __MINGW_NAME_AW(SetupSetPlatformPathOverride)
   1268 #define SetupQueueCopy __MINGW_NAME_AW(SetupQueueCopy)
   1269 #define SetupQueueCopyIndirect __MINGW_NAME_AW(SetupQueueCopyIndirect)
   1270 #define SetupQueueDefaultCopy __MINGW_NAME_AW(SetupQueueDefaultCopy)
   1271 #define SetupQueueCopySection __MINGW_NAME_AW(SetupQueueCopySection)
   1272 #define SetupQueueDelete __MINGW_NAME_AW(SetupQueueDelete)
   1273 
   1274   WINSETUPAPI HSPFILEQ WINAPI SetupOpenFileQueue(VOID);
   1275   WINSETUPAPI WINBOOL WINAPI SetupCloseFileQueue(HSPFILEQ QueueHandle);
   1276   WINSETUPAPI WINBOOL WINAPI SetupSetFileQueueAlternatePlatformA(HSPFILEQ QueueHandle,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PCSTR AlternateDefaultCatalogFile);
   1277   WINSETUPAPI WINBOOL WINAPI SetupSetFileQueueAlternatePlatformW(HSPFILEQ QueueHandle,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PCWSTR AlternateDefaultCatalogFile);
   1278   WINSETUPAPI WINBOOL WINAPI SetupSetPlatformPathOverrideA(PCSTR Override);
   1279   WINSETUPAPI WINBOOL WINAPI SetupSetPlatformPathOverrideW(PCWSTR Override);
   1280   WINSETUPAPI WINBOOL WINAPI SetupQueueCopyA(HSPFILEQ QueueHandle,PCSTR SourceRootPath,PCSTR SourcePath,PCSTR SourceFilename,PCSTR SourceDescription,PCSTR SourceTagfile,PCSTR TargetDirectory,PCSTR TargetFilename,DWORD CopyStyle);
   1281   WINSETUPAPI WINBOOL WINAPI SetupQueueCopyW(HSPFILEQ QueueHandle,PCWSTR SourceRootPath,PCWSTR SourcePath,PCWSTR SourceFilename,PCWSTR SourceDescription,PCWSTR SourceTagfile,PCWSTR TargetDirectory,PCWSTR TargetFilename,DWORD CopyStyle);
   1282   WINSETUPAPI WINBOOL WINAPI SetupQueueCopyIndirectA(PSP_FILE_COPY_PARAMS_A CopyParams);
   1283   WINSETUPAPI WINBOOL WINAPI SetupQueueCopyIndirectW(PSP_FILE_COPY_PARAMS_W CopyParams);
   1284   WINSETUPAPI WINBOOL WINAPI SetupQueueDefaultCopyA(HSPFILEQ QueueHandle,HINF InfHandle,PCSTR SourceRootPath,PCSTR SourceFilename,PCSTR TargetFilename,DWORD CopyStyle);
   1285   WINSETUPAPI WINBOOL WINAPI SetupQueueDefaultCopyW(HSPFILEQ QueueHandle,HINF InfHandle,PCWSTR SourceRootPath,PCWSTR SourceFilename,PCWSTR TargetFilename,DWORD CopyStyle);
   1286   WINSETUPAPI WINBOOL WINAPI SetupQueueCopySectionA(HSPFILEQ QueueHandle,PCSTR SourceRootPath,HINF InfHandle,HINF ListInfHandle,PCSTR Section,DWORD CopyStyle);
   1287   WINSETUPAPI WINBOOL WINAPI SetupQueueCopySectionW(HSPFILEQ QueueHandle,PCWSTR SourceRootPath,HINF InfHandle,HINF ListInfHandle,PCWSTR Section,DWORD CopyStyle);
   1288   WINSETUPAPI WINBOOL WINAPI SetupQueueDeleteA(HSPFILEQ QueueHandle,PCSTR PathPart1,PCSTR PathPart2);
   1289   WINSETUPAPI WINBOOL WINAPI SetupQueueDeleteW(HSPFILEQ QueueHandle,PCWSTR PathPart1,PCWSTR PathPart2);
   1290   WINSETUPAPI WINBOOL WINAPI SetupQueueDeleteSectionA(HSPFILEQ QueueHandle,HINF InfHandle,HINF ListInfHandle,PCSTR Section);
   1291   WINSETUPAPI WINBOOL WINAPI SetupQueueDeleteSectionW(HSPFILEQ QueueHandle,HINF InfHandle,HINF ListInfHandle,PCWSTR Section);
   1292   WINSETUPAPI WINBOOL WINAPI SetupQueueRenameA(HSPFILEQ QueueHandle,PCSTR SourcePath,PCSTR SourceFilename,PCSTR TargetPath,PCSTR TargetFilename);
   1293   WINSETUPAPI WINBOOL WINAPI SetupQueueRenameW(HSPFILEQ QueueHandle,PCWSTR SourcePath,PCWSTR SourceFilename,PCWSTR TargetPath,PCWSTR TargetFilename);
   1294   WINSETUPAPI WINBOOL WINAPI SetupQueueRenameSectionA(HSPFILEQ QueueHandle,HINF InfHandle,HINF ListInfHandle,PCSTR Section);
   1295   WINSETUPAPI WINBOOL WINAPI SetupQueueRenameSectionW(HSPFILEQ QueueHandle,HINF InfHandle,HINF ListInfHandle,PCWSTR Section);
   1296   WINSETUPAPI WINBOOL WINAPI SetupCommitFileQueueA(HWND Owner,HSPFILEQ QueueHandle,PSP_FILE_CALLBACK_A MsgHandler,PVOID Context);
   1297   WINSETUPAPI WINBOOL WINAPI SetupCommitFileQueueW(HWND Owner,HSPFILEQ QueueHandle,PSP_FILE_CALLBACK_W MsgHandler,PVOID Context);
   1298   WINSETUPAPI WINBOOL WINAPI SetupScanFileQueueA(HSPFILEQ FileQueue,DWORD Flags,HWND Window,PSP_FILE_CALLBACK_A CallbackRoutine,PVOID CallbackContext,PDWORD Result);
   1299   WINSETUPAPI WINBOOL WINAPI SetupScanFileQueueW(HSPFILEQ FileQueue,DWORD Flags,HWND Window,PSP_FILE_CALLBACK_W CallbackRoutine,PVOID CallbackContext,PDWORD Result);
   1300 
   1301 #define SPQ_SCAN_FILE_PRESENCE 0x00000001
   1302 #define SPQ_SCAN_FILE_VALIDITY 0x00000002
   1303 #define SPQ_SCAN_USE_CALLBACK 0x00000004
   1304 #define SPQ_SCAN_USE_CALLBACKEX 0x00000008
   1305 #define SPQ_SCAN_INFORM_USER 0x00000010
   1306 #define SPQ_SCAN_PRUNE_COPY_QUEUE 0x00000020
   1307 
   1308 #define SPQ_SCAN_USE_CALLBACK_SIGNERINFO 0x00000040
   1309 #define SPQ_SCAN_PRUNE_DELREN 0x00000080
   1310 
   1311 #define SPQ_DELAYED_COPY 0x00000001
   1312 
   1313   WINSETUPAPI WINBOOL WINAPI SetupGetFileQueueCount(HSPFILEQ FileQueue,UINT SubQueueFileOp,PUINT NumOperations);
   1314   WINSETUPAPI WINBOOL WINAPI SetupGetFileQueueFlags(HSPFILEQ FileQueue,PDWORD Flags);
   1315   WINSETUPAPI WINBOOL WINAPI SetupSetFileQueueFlags(HSPFILEQ FileQueue,DWORD FlagMask,DWORD Flags);
   1316 
   1317 #define SPQ_FLAG_BACKUP_AWARE 0x00000001
   1318 #define SPQ_FLAG_ABORT_IF_UNSIGNED 0x00000002
   1319 #define SPQ_FLAG_FILES_MODIFIED 0x00000004
   1320 #define SPQ_FLAG_VALID 0x00000007
   1321 
   1322 #define SPOST_NONE 0
   1323 #define SPOST_PATH 1
   1324 #define SPOST_URL 2
   1325 #define SPOST_MAX 3
   1326 
   1327 #define SetupCopyOEMInf __MINGW_NAME_AW(SetupCopyOEMInf)
   1328 
   1329   WINSETUPAPI WINBOOL WINAPI SetupCopyOEMInfA(PCSTR SourceInfFileName,PCSTR OEMSourceMediaLocation,DWORD OEMSourceMediaType,DWORD CopyStyle,PSTR DestinationInfFileName,DWORD DestinationInfFileNameSize,PDWORD RequiredSize,PSTR *DestinationInfFileNameComponent);
   1330   WINSETUPAPI WINBOOL WINAPI SetupCopyOEMInfW(PCWSTR SourceInfFileName,PCWSTR OEMSourceMediaLocation,DWORD OEMSourceMediaType,DWORD CopyStyle,PWSTR DestinationInfFileName,DWORD DestinationInfFileNameSize,PDWORD RequiredSize,PWSTR *DestinationInfFileNameComponent);
   1331 
   1332 #define SUOI_FORCEDELETE 0x00000001
   1333 
   1334 #define SetupUninstallOEMInf __MINGW_NAME_AW(SetupUninstallOEMInf)
   1335 #define SetupCreateDiskSpaceList __MINGW_NAME_AW(SetupCreateDiskSpaceList)
   1336 
   1337   WINSETUPAPI WINBOOL WINAPI SetupUninstallOEMInfA(PCSTR InfFileName,DWORD Flags,PVOID Reserved);
   1338   WINSETUPAPI WINBOOL WINAPI SetupUninstallOEMInfW(PCWSTR InfFileName,DWORD Flags,PVOID Reserved);
   1339   WINSETUPAPI WINBOOL WINAPI SetupUninstallNewlyCopiedInfs(HSPFILEQ FileQueue,DWORD Flags,PVOID Reserved);
   1340   WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListA(PVOID Reserved1,DWORD Reserved2,UINT Flags);
   1341   WINSETUPAPI HDSKSPC WINAPI SetupCreateDiskSpaceListW(PVOID Reserved1,DWORD Reserved2,UINT Flags);
   1342 
   1343 #define SPDSL_IGNORE_DISK 0x00000001
   1344 #define SPDSL_DISALLOW_NEGATIVE_ADJUST 0x00000002
   1345 
   1346 #define SetupDuplicateDiskSpaceList __MINGW_NAME_AW(SetupDuplicateDiskSpaceList)
   1347 #define SetupQueryDrivesInDiskSpaceList __MINGW_NAME_AW(SetupQueryDrivesInDiskSpaceList)
   1348 #define SetupQuerySpaceRequiredOnDrive __MINGW_NAME_AW(SetupQuerySpaceRequiredOnDrive)
   1349 #define SetupAdjustDiskSpaceList __MINGW_NAME_AW(SetupAdjustDiskSpaceList)
   1350 #define SetupAddToDiskSpaceList __MINGW_NAME_AW(SetupAddToDiskSpaceList)
   1351 #define SetupAddSectionToDiskSpaceList __MINGW_NAME_AW(SetupAddSectionToDiskSpaceList)
   1352 #define SetupAddInstallSectionToDiskSpaceList __MINGW_NAME_AW(SetupAddInstallSectionToDiskSpaceList)
   1353 #define SetupRemoveFromDiskSpaceList __MINGW_NAME_AW(SetupRemoveFromDiskSpaceList)
   1354 #define SetupRemoveSectionFromDiskSpaceList __MINGW_NAME_AW(SetupRemoveSectionFromDiskSpaceList)
   1355 #define SetupRemoveInstallSectionFromDiskSpaceList __MINGW_NAME_AW(SetupRemoveInstallSectionFromDiskSpaceList)
   1356 #define SetupIterateCabinet __MINGW_NAME_AW(SetupIterateCabinet)
   1357 
   1358   WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListA(HDSKSPC DiskSpace,PVOID Reserved1,DWORD Reserved2,UINT Flags);
   1359   WINSETUPAPI HDSKSPC WINAPI SetupDuplicateDiskSpaceListW(HDSKSPC DiskSpace,PVOID Reserved1,DWORD Reserved2,UINT Flags);
   1360   WINSETUPAPI WINBOOL WINAPI SetupDestroyDiskSpaceList(HDSKSPC DiskSpace);
   1361   WINSETUPAPI WINBOOL WINAPI SetupQueryDrivesInDiskSpaceListA(HDSKSPC DiskSpace,PSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1362   WINSETUPAPI WINBOOL WINAPI SetupQueryDrivesInDiskSpaceListW(HDSKSPC DiskSpace,PWSTR ReturnBuffer,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1363   WINSETUPAPI WINBOOL WINAPI SetupQuerySpaceRequiredOnDriveA(HDSKSPC DiskSpace,PCSTR DriveSpec,LONGLONG *SpaceRequired,PVOID Reserved1,UINT Reserved2);
   1364   WINSETUPAPI WINBOOL WINAPI SetupQuerySpaceRequiredOnDriveW(HDSKSPC DiskSpace,PCWSTR DriveSpec,LONGLONG *SpaceRequired,PVOID Reserved1,UINT Reserved2);
   1365   WINSETUPAPI WINBOOL WINAPI SetupAdjustDiskSpaceListA(HDSKSPC DiskSpace,LPCSTR DriveRoot,LONGLONG Amount,PVOID Reserved1,UINT Reserved2);
   1366   WINSETUPAPI WINBOOL WINAPI SetupAdjustDiskSpaceListW(HDSKSPC DiskSpace,LPCWSTR DriveRoot,LONGLONG Amount,PVOID Reserved1,UINT Reserved2);
   1367   WINSETUPAPI WINBOOL WINAPI SetupAddToDiskSpaceListA(HDSKSPC DiskSpace,PCSTR TargetFilespec,LONGLONG FileSize,UINT Operation,PVOID Reserved1,UINT Reserved2);
   1368   WINSETUPAPI WINBOOL WINAPI SetupAddToDiskSpaceListW(HDSKSPC DiskSpace,PCWSTR TargetFilespec,LONGLONG FileSize,UINT Operation,PVOID Reserved1,UINT Reserved2);
   1369   WINSETUPAPI WINBOOL WINAPI SetupAddSectionToDiskSpaceListA(HDSKSPC DiskSpace,HINF InfHandle,HINF ListInfHandle,PCSTR SectionName,UINT Operation,PVOID Reserved1,UINT Reserved2);
   1370   WINSETUPAPI WINBOOL WINAPI SetupAddSectionToDiskSpaceListW(HDSKSPC DiskSpace,HINF InfHandle,HINF ListInfHandle,PCWSTR SectionName,UINT Operation,PVOID Reserved1,UINT Reserved2);
   1371   WINSETUPAPI WINBOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(HDSKSPC DiskSpace,HINF InfHandle,HINF LayoutInfHandle,PCSTR SectionName,PVOID Reserved1,UINT Reserved2);
   1372   WINSETUPAPI WINBOOL WINAPI SetupAddInstallSectionToDiskSpaceListW(HDSKSPC DiskSpace,HINF InfHandle,HINF LayoutInfHandle,PCWSTR SectionName,PVOID Reserved1,UINT Reserved2);
   1373   WINSETUPAPI WINBOOL WINAPI SetupRemoveFromDiskSpaceListA(HDSKSPC DiskSpace,PCSTR TargetFilespec,UINT Operation,PVOID Reserved1,UINT Reserved2);
   1374   WINSETUPAPI WINBOOL WINAPI SetupRemoveFromDiskSpaceListW(HDSKSPC DiskSpace,PCWSTR TargetFilespec,UINT Operation,PVOID Reserved1,UINT Reserved2);
   1375   WINSETUPAPI WINBOOL WINAPI SetupRemoveSectionFromDiskSpaceListA(HDSKSPC DiskSpace,HINF InfHandle,HINF ListInfHandle,PCSTR SectionName,UINT Operation,PVOID Reserved1,UINT Reserved2);
   1376   WINSETUPAPI WINBOOL WINAPI SetupRemoveSectionFromDiskSpaceListW(HDSKSPC DiskSpace,HINF InfHandle,HINF ListInfHandle,PCWSTR SectionName,UINT Operation,PVOID Reserved1,UINT Reserved2);
   1377   WINSETUPAPI WINBOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListA(HDSKSPC DiskSpace,HINF InfHandle,HINF LayoutInfHandle,PCSTR SectionName,PVOID Reserved1,UINT Reserved2);
   1378   WINSETUPAPI WINBOOL WINAPI SetupRemoveInstallSectionFromDiskSpaceListW(HDSKSPC DiskSpace,HINF InfHandle,HINF LayoutInfHandle,PCWSTR SectionName,PVOID Reserved1,UINT Reserved2);
   1379   WINSETUPAPI WINBOOL WINAPI SetupIterateCabinetA(PCSTR CabinetFile,DWORD Reserved,PSP_FILE_CALLBACK_A MsgHandler,PVOID Context);
   1380   WINSETUPAPI WINBOOL WINAPI SetupIterateCabinetW(PCWSTR CabinetFile,DWORD Reserved,PSP_FILE_CALLBACK_W MsgHandler,PVOID Context);
   1381   WINSETUPAPI INT WINAPI SetupPromptReboot(HSPFILEQ FileQueue,HWND Owner,WINBOOL ScanOnly);
   1382 
   1383 #define SPFILEQ_FILE_IN_USE 0x00000001
   1384 #define SPFILEQ_REBOOT_RECOMMENDED 0x00000002
   1385 #define SPFILEQ_REBOOT_IN_PROGRESS 0x00000004
   1386 
   1387 #define SetupDefaultQueueCallback __MINGW_NAME_AW(SetupDefaultQueueCallback)
   1388 
   1389   WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallback(HWND OwnerWindow);
   1390   WINSETUPAPI PVOID WINAPI SetupInitDefaultQueueCallbackEx(HWND OwnerWindow,HWND AlternateProgressWindow,UINT ProgressMessage,DWORD Reserved1,PVOID Reserved2);
   1391   WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(PVOID Context);
   1392   WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackA(PVOID Context,UINT Notification,UINT_PTR Param1,UINT_PTR Param2);
   1393   WINSETUPAPI UINT WINAPI SetupDefaultQueueCallbackW(PVOID Context,UINT Notification,UINT_PTR Param1,UINT_PTR Param2);
   1394 
   1395 #define FLG_ADDREG_DELREG_BIT (0x00008000)
   1396 #define FLG_ADDREG_BINVALUETYPE (0x00000001)
   1397 #define FLG_ADDREG_NOCLOBBER (0x00000002)
   1398 #define FLG_ADDREG_DELVAL (0x00000004)
   1399 #define FLG_ADDREG_APPEND (0x00000008)
   1400 #define FLG_ADDREG_KEYONLY (0x00000010)
   1401 #define FLG_ADDREG_OVERWRITEONLY (0x00000020)
   1402 #define FLG_ADDREG_64BITKEY (0x00001000)
   1403 #define FLG_ADDREG_KEYONLY_COMMON (0x00002000)
   1404 #define FLG_ADDREG_32BITKEY (0x00004000)
   1405 #define FLG_ADDREG_TYPE_MASK (0xFFFF0000 | FLG_ADDREG_BINVALUETYPE)
   1406 #define FLG_ADDREG_TYPE_SZ (0x00000000)
   1407 #define FLG_ADDREG_TYPE_MULTI_SZ (0x00010000)
   1408 #define FLG_ADDREG_TYPE_EXPAND_SZ (0x00020000)
   1409 #define FLG_ADDREG_TYPE_BINARY (0x00000000 | FLG_ADDREG_BINVALUETYPE)
   1410 #define FLG_ADDREG_TYPE_DWORD (0x00010000 | FLG_ADDREG_BINVALUETYPE)
   1411 #define FLG_ADDREG_TYPE_NONE (0x00020000 | FLG_ADDREG_BINVALUETYPE)
   1412 
   1413 #define FLG_DELREG_VALUE (0x00000000)
   1414 
   1415 #define FLG_DELREG_TYPE_MASK FLG_ADDREG_TYPE_MASK
   1416 #define FLG_DELREG_TYPE_SZ FLG_ADDREG_TYPE_SZ
   1417 #define FLG_DELREG_TYPE_MULTI_SZ FLG_ADDREG_TYPE_MULTI_SZ
   1418 #define FLG_DELREG_TYPE_EXPAND_SZ FLG_ADDREG_TYPE_EXPAND_SZ
   1419 #define FLG_DELREG_TYPE_BINARY FLG_ADDREG_TYPE_BINARY
   1420 #define FLG_DELREG_TYPE_DWORD FLG_ADDREG_TYPE_DWORD
   1421 #define FLG_DELREG_TYPE_NONE FLG_ADDREG_TYPE_NONE
   1422 #define FLG_DELREG_64BITKEY FLG_ADDREG_64BITKEY
   1423 #define FLG_DELREG_KEYONLY_COMMON FLG_ADDREG_KEYONLY_COMMON
   1424 #define FLG_DELREG_32BITKEY FLG_ADDREG_32BITKEY
   1425 
   1426 #define FLG_DELREG_OPERATION_MASK (0x000000FE)
   1427 #define FLG_DELREG_MULTI_SZ_DELSTRING (FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT | 0x00000002)
   1428 
   1429 #define FLG_BITREG_CLEARBITS (0x00000000)
   1430 #define FLG_BITREG_SETBITS (0x00000001)
   1431 
   1432 #define FLG_BITREG_64BITKEY (0x00001000)
   1433 #define FLG_BITREG_32BITKEY (0x00004000)
   1434 #define FLG_INI2REG_64BITKEY (0x00001000)
   1435 #define FLG_INI2REG_32BITKEY (0x00004000)
   1436 #define FLG_REGSVR_DLLREGISTER (0x00000001)
   1437 #define FLG_REGSVR_DLLINSTALL (0x00000002)
   1438 
   1439 #define FLG_PROFITEM_CURRENTUSER (0x00000001)
   1440 #define FLG_PROFITEM_DELETE (0x00000002)
   1441 #define FLG_PROFITEM_GROUP (0x00000004)
   1442 #define FLG_PROFITEM_CSIDL (0x00000008)
   1443 
   1444 #define SetupInstallFromInfSection __MINGW_NAME_AW(SetupInstallFromInfSection)
   1445 
   1446   WINSETUPAPI WINBOOL WINAPI SetupInstallFromInfSectionA(HWND Owner,HINF InfHandle,PCSTR SectionName,UINT Flags,HKEY RelativeKeyRoot,PCSTR SourceRootPath,UINT CopyFlags,PSP_FILE_CALLBACK_A MsgHandler,PVOID Context,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1447   WINSETUPAPI WINBOOL WINAPI SetupInstallFromInfSectionW(HWND Owner,HINF InfHandle,PCWSTR SectionName,UINT Flags,HKEY RelativeKeyRoot,PCWSTR SourceRootPath,UINT CopyFlags,PSP_FILE_CALLBACK_W MsgHandler,PVOID Context,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1448 
   1449 #define SPINST_LOGCONFIG 0x00000001
   1450 #define SPINST_INIFILES 0x00000002
   1451 #define SPINST_REGISTRY 0x00000004
   1452 #define SPINST_INI2REG 0x00000008
   1453 #define SPINST_FILES 0x00000010
   1454 #define SPINST_BITREG 0x00000020
   1455 #define SPINST_REGSVR 0x00000040
   1456 #define SPINST_UNREGSVR 0x00000080
   1457 #define SPINST_PROFILEITEMS 0x00000100
   1458 #define SPINST_COPYINF 0x00000200
   1459 #define SPINST_ALL 0x000003ff
   1460 #define SPINST_SINGLESECTION 0x00010000
   1461 #define SPINST_LOGCONFIG_IS_FORCED 0x00020000
   1462 #define SPINST_LOGCONFIGS_ARE_OVERRIDES 0x00040000
   1463 #define SPINST_REGISTERCALLBACKAWARE 0x00080000
   1464 
   1465 #define SetupInstallFilesFromInfSection __MINGW_NAME_AW(SetupInstallFilesFromInfSection)
   1466 
   1467   WINSETUPAPI WINBOOL WINAPI SetupInstallFilesFromInfSectionA(HINF InfHandle,HINF LayoutInfHandle,HSPFILEQ FileQueue,PCSTR SectionName,PCSTR SourceRootPath,UINT CopyFlags);
   1468   WINSETUPAPI WINBOOL WINAPI SetupInstallFilesFromInfSectionW(HINF InfHandle,HINF LayoutInfHandle,HSPFILEQ FileQueue,PCWSTR SectionName,PCWSTR SourceRootPath,UINT CopyFlags);
   1469 
   1470 #define SPSVCINST_TAGTOFRONT (0x00000001)
   1471 #define SPSVCINST_ASSOCSERVICE (0x00000002)
   1472 #define SPSVCINST_DELETEEVENTLOGENTRY (0x00000004)
   1473 #define SPSVCINST_NOCLOBBER_DISPLAYNAME (0x00000008)
   1474 #define SPSVCINST_NOCLOBBER_STARTTYPE (0x00000010)
   1475 #define SPSVCINST_NOCLOBBER_ERRORCONTROL (0x00000020)
   1476 #define SPSVCINST_NOCLOBBER_LOADORDERGROUP (0x00000040)
   1477 #define SPSVCINST_NOCLOBBER_DEPENDENCIES (0x00000080)
   1478 #define SPSVCINST_NOCLOBBER_DESCRIPTION (0x00000100)
   1479 #define SPSVCINST_STOPSERVICE (0x00000200)
   1480 #define SPSVCINST_CLOBBER_SECURITY (0x00000400)
   1481 
   1482 #define SPFILELOG_SYSTEMLOG 0x00000001
   1483 #define SPFILELOG_FORCENEW 0x00000002
   1484 #define SPFILELOG_QUERYONLY 0x00000004
   1485 
   1486 #define SPFILELOG_OEMFILE 0x00000001
   1487 
   1488   typedef PVOID HSPFILELOG;
   1489 
   1490 #define SetupInstallServicesFromInfSection __MINGW_NAME_AW(SetupInstallServicesFromInfSection)
   1491 #define SetupInstallServicesFromInfSectionEx __MINGW_NAME_AW(SetupInstallServicesFromInfSectionEx)
   1492 #define InstallHinfSection __MINGW_NAME_AW(InstallHinfSection)
   1493 #define SetupInitializeFileLog __MINGW_NAME_AW(SetupInitializeFileLog)
   1494 #define SetupLogFile __MINGW_NAME_AW(SetupLogFile)
   1495 #define SetupRemoveFileLogEntry __MINGW_NAME_AW(SetupRemoveFileLogEntry)
   1496 
   1497   WINSETUPAPI WINBOOL WINAPI SetupInstallServicesFromInfSectionA(HINF InfHandle,PCSTR SectionName,DWORD Flags);
   1498   WINSETUPAPI WINBOOL WINAPI SetupInstallServicesFromInfSectionW(HINF InfHandle,PCWSTR SectionName,DWORD Flags);
   1499   WINSETUPAPI WINBOOL WINAPI SetupInstallServicesFromInfSectionExA(HINF InfHandle,PCSTR SectionName,DWORD Flags,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PVOID Reserved1,PVOID Reserved2);
   1500   WINSETUPAPI WINBOOL WINAPI SetupInstallServicesFromInfSectionExW(HINF InfHandle,PCWSTR SectionName,DWORD Flags,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PVOID Reserved1,PVOID Reserved2);
   1501   VOID WINAPI InstallHinfSectionA(HWND Window,HINSTANCE ModuleHandle,PCSTR CommandLine,INT ShowCommand);
   1502   VOID WINAPI InstallHinfSectionW(HWND Window,HINSTANCE ModuleHandle,PCWSTR CommandLine,INT ShowCommand);
   1503   WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogA(PCSTR LogFileName,DWORD Flags);
   1504   WINSETUPAPI HSPFILELOG WINAPI SetupInitializeFileLogW(PCWSTR LogFileName,DWORD Flags);
   1505   WINSETUPAPI WINBOOL WINAPI SetupTerminateFileLog(HSPFILELOG FileLogHandle);
   1506   WINSETUPAPI WINBOOL WINAPI SetupLogFileA(HSPFILELOG FileLogHandle,PCSTR LogSectionName,PCSTR SourceFilename,PCSTR TargetFilename,DWORD Checksum,PCSTR DiskTagfile,PCSTR DiskDescription,PCSTR OtherInfo,DWORD Flags);
   1507   WINSETUPAPI WINBOOL WINAPI SetupLogFileW(HSPFILELOG FileLogHandle,PCWSTR LogSectionName,PCWSTR SourceFilename,PCWSTR TargetFilename,DWORD Checksum,PCWSTR DiskTagfile,PCWSTR DiskDescription,PCWSTR OtherInfo,DWORD Flags);
   1508   WINSETUPAPI WINBOOL WINAPI SetupRemoveFileLogEntryA(HSPFILELOG FileLogHandle,PCSTR LogSectionName,PCSTR TargetFilename);
   1509   WINSETUPAPI WINBOOL WINAPI SetupRemoveFileLogEntryW(HSPFILELOG FileLogHandle,PCWSTR LogSectionName,PCWSTR TargetFilename);
   1510 
   1511   typedef enum {
   1512     SetupFileLogSourceFilename,SetupFileLogChecksum,SetupFileLogDiskTagfile,SetupFileLogDiskDescription,SetupFileLogOtherInfo,SetupFileLogMax
   1513   } SetupFileLogInfo;
   1514 
   1515 #define SetupQueryFileLog __MINGW_NAME_AW(SetupQueryFileLog)
   1516 
   1517   WINSETUPAPI WINBOOL WINAPI SetupQueryFileLogA(HSPFILELOG FileLogHandle,PCSTR LogSectionName,PCSTR TargetFilename,SetupFileLogInfo DesiredInfo,PSTR DataOut,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1518   WINSETUPAPI WINBOOL WINAPI SetupQueryFileLogW(HSPFILELOG FileLogHandle,PCWSTR LogSectionName,PCWSTR TargetFilename,SetupFileLogInfo DesiredInfo,PWSTR DataOut,DWORD ReturnBufferSize,PDWORD RequiredSize);
   1519 
   1520 #define LogSeverity DWORD
   1521 #define LogSevInformation 0x00000000
   1522 #define LogSevWarning 0x00000001
   1523 #define LogSevError 0x00000002
   1524 #define LogSevFatalError 0x00000003
   1525 #define LogSevMaximum 0x00000004
   1526 
   1527 #define DICD_GENERATE_ID 0x00000001
   1528 #define DICD_INHERIT_CLASSDRVS 0x00000002
   1529 
   1530 #define DIOD_INHERIT_CLASSDRVS 0x00000002
   1531 #define DIOD_CANCEL_REMOVE 0x00000004
   1532 
   1533 #define DIODI_NO_ADD 0x00000001
   1534 
   1535 #define SPRDI_FIND_DUPS 0x00000001
   1536 
   1537 #define SPDIT_NODRIVER 0x00000000
   1538 #define SPDIT_CLASSDRIVER 0x00000001
   1539 #define SPDIT_COMPATDRIVER 0x00000002
   1540 
   1541 #define SetupLogError __MINGW_NAME_AW(SetupLogError)
   1542 #define SetupGetBackupInformation __MINGW_NAME_AW(SetupGetBackupInformation)
   1543 #define SetupPrepareQueueForRestore __MINGW_NAME_AW(SetupPrepareQueueForRestore)
   1544 #define SetupDiCreateDeviceInfoListEx __MINGW_NAME_AW(SetupDiCreateDeviceInfoListEx)
   1545 #define SetupDiGetDeviceInfoListDetail __MINGW_NAME_AW(SetupDiGetDeviceInfoListDetail)
   1546 #define SetupDiCreateDeviceInfo __MINGW_NAME_AW(SetupDiCreateDeviceInfo)
   1547 #define SetupDiOpenDeviceInfo __MINGW_NAME_AW(SetupDiOpenDeviceInfo)
   1548 #define SetupDiGetDeviceInstanceId __MINGW_NAME_AW(SetupDiGetDeviceInstanceId)
   1549 #define SetupDiCreateDeviceInterface __MINGW_NAME_AW(SetupDiCreateDeviceInterface)
   1550 #define SetupDiCreateInterfaceDevice __MINGW_NAME_AW(SetupDiCreateDeviceInterface)
   1551 #define SetupDiOpenDeviceInterface __MINGW_NAME_AW(SetupDiOpenDeviceInterface)
   1552 
   1553   WINSETUPAPI WINBOOL WINAPI SetupOpenLog(WINBOOL Erase);
   1554   WINSETUPAPI WINBOOL WINAPI SetupLogErrorA(LPCSTR MessageString,LogSeverity Severity);
   1555   WINSETUPAPI WINBOOL WINAPI SetupLogErrorW(LPCWSTR MessageString,LogSeverity Severity);
   1556   WINSETUPAPI VOID WINAPI SetupCloseLog(VOID);
   1557   WINSETUPAPI WINBOOL WINAPI SetupGetBackupInformationA(HSPFILEQ QueueHandle,PSP_BACKUP_QUEUE_PARAMS_A BackupParams);
   1558   WINSETUPAPI WINBOOL WINAPI SetupGetBackupInformationW(HSPFILEQ QueueHandle,PSP_BACKUP_QUEUE_PARAMS_W BackupParams);
   1559   WINSETUPAPI WINBOOL WINAPI SetupPrepareQueueForRestoreA(HSPFILEQ QueueHandle,PCSTR BackupPath,DWORD RestoreFlags);
   1560   WINSETUPAPI WINBOOL WINAPI SetupPrepareQueueForRestoreW(HSPFILEQ QueueHandle,PCWSTR BackupPath,DWORD RestoreFlags);
   1561   WINSETUPAPI WINBOOL WINAPI SetupSetNonInteractiveMode(WINBOOL NonInteractiveFlag);
   1562   WINSETUPAPI WINBOOL WINAPI SetupGetNonInteractiveMode(VOID);
   1563   WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoList(CONST GUID *ClassGuid,HWND hwndParent);
   1564   WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExA(CONST GUID *ClassGuid,HWND hwndParent,PCSTR MachineName,PVOID Reserved);
   1565   WINSETUPAPI HDEVINFO WINAPI SetupDiCreateDeviceInfoListExW(CONST GUID *ClassGuid,HWND hwndParent,PCWSTR MachineName,PVOID Reserved);
   1566   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInfoListClass(HDEVINFO DeviceInfoSet,LPGUID ClassGuid);
   1567   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInfoListDetailA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_LIST_DETAIL_DATA_A DeviceInfoSetDetailData);
   1568   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInfoListDetailW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_LIST_DETAIL_DATA_W DeviceInfoSetDetailData);
   1569   WINSETUPAPI WINBOOL WINAPI SetupDiCreateDeviceInfoA(HDEVINFO DeviceInfoSet,PCSTR DeviceName,CONST GUID *ClassGuid,PCSTR DeviceDescription,HWND hwndParent,DWORD CreationFlags,PSP_DEVINFO_DATA DeviceInfoData);
   1570   WINSETUPAPI WINBOOL WINAPI SetupDiCreateDeviceInfoW(HDEVINFO DeviceInfoSet,PCWSTR DeviceName,CONST GUID *ClassGuid,PCWSTR DeviceDescription,HWND hwndParent,DWORD CreationFlags,PSP_DEVINFO_DATA DeviceInfoData);
   1571   WINSETUPAPI WINBOOL WINAPI SetupDiOpenDeviceInfoA(HDEVINFO DeviceInfoSet,PCSTR DeviceInstanceId,HWND hwndParent,DWORD OpenFlags,PSP_DEVINFO_DATA DeviceInfoData);
   1572   WINSETUPAPI WINBOOL WINAPI SetupDiOpenDeviceInfoW(HDEVINFO DeviceInfoSet,PCWSTR DeviceInstanceId,HWND hwndParent,DWORD OpenFlags,PSP_DEVINFO_DATA DeviceInfoData);
   1573   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInstanceIdA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSTR DeviceInstanceId,DWORD DeviceInstanceIdSize,PDWORD RequiredSize);
   1574   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInstanceIdW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PWSTR DeviceInstanceId,DWORD DeviceInstanceIdSize,PDWORD RequiredSize);
   1575   WINSETUPAPI WINBOOL WINAPI SetupDiDeleteDeviceInfo(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1576   WINSETUPAPI WINBOOL WINAPI SetupDiEnumDeviceInfo(HDEVINFO DeviceInfoSet,DWORD MemberIndex,PSP_DEVINFO_DATA DeviceInfoData);
   1577   WINSETUPAPI WINBOOL WINAPI SetupDiDestroyDeviceInfoList(HDEVINFO DeviceInfoSet);
   1578   WINSETUPAPI WINBOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,CONST GUID *InterfaceClassGuid,DWORD MemberIndex,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
   1579 #define SetupDiEnumInterfaceDevice SetupDiEnumDeviceInterfaces
   1580   WINSETUPAPI WINBOOL WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,CONST GUID *InterfaceClassGuid,PCSTR ReferenceString,DWORD CreationFlags,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
   1581   WINSETUPAPI WINBOOL WINAPI SetupDiCreateDeviceInterfaceW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,CONST GUID *InterfaceClassGuid,PCWSTR ReferenceString,DWORD CreationFlags,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
   1582 #define SetupDiCreateInterfaceDeviceW SetupDiCreateDeviceInterfaceW
   1583 #define SetupDiCreateInterfaceDeviceA SetupDiCreateDeviceInterfaceA
   1584   WINSETUPAPI WINBOOL WINAPI SetupDiOpenDeviceInterfaceA(HDEVINFO DeviceInfoSet,PCSTR DevicePath,DWORD OpenFlags,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
   1585   WINSETUPAPI WINBOOL WINAPI SetupDiOpenDeviceInterfaceW(HDEVINFO DeviceInfoSet,PCWSTR DevicePath,DWORD OpenFlags,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
   1586 #define SetupDiOpenInterfaceDeviceW SetupDiOpenDeviceInterfaceW
   1587 #define SetupDiOpenInterfaceDeviceA SetupDiOpenDeviceInterfaceA
   1588 
   1589 #define SetupDiOpenInterfaceDevice __MINGW_NAME_AW(SetupDiOpenDeviceInterface)
   1590 #define SetupDiGetDeviceInterfaceDetail __MINGW_NAME_AW(SetupDiGetDeviceInterfaceDetail)
   1591 #define SetupDiGetInterfaceDeviceDetail __MINGW_NAME_AW(SetupDiGetDeviceInterfaceDetail)
   1592 #define SetupDiEnumDriverInfo __MINGW_NAME_AW(SetupDiEnumDriverInfo)
   1593 #define SetupDiGetSelectedDriver __MINGW_NAME_AW(SetupDiGetSelectedDriver)
   1594 #define SetupDiSetSelectedDriver __MINGW_NAME_AW(SetupDiSetSelectedDriver)
   1595 #define SetupDiGetDriverInfoDetail __MINGW_NAME_AW(SetupDiGetDriverInfoDetail)
   1596 
   1597   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInterfaceAlias(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,CONST GUID *AliasInterfaceClassGuid,PSP_DEVICE_INTERFACE_DATA AliasDeviceInterfaceData);
   1598 #define SetupDiGetInterfaceDeviceAlias SetupDiGetDeviceInterfaceAlias
   1599   WINSETUPAPI WINBOOL WINAPI SetupDiDeleteDeviceInterfaceData(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
   1600 #define SetupDiDeleteInterfaceDeviceData SetupDiDeleteDeviceInterfaceData
   1601   WINSETUPAPI WINBOOL WINAPI SetupDiRemoveDeviceInterface(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);
   1602 #define SetupDiRemoveInterfaceDevice SetupDiRemoveDeviceInterface
   1603   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData,DWORD DeviceInterfaceDetailDataSize,PDWORD RequiredSize,PSP_DEVINFO_DATA DeviceInfoData);
   1604   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData,DWORD DeviceInterfaceDetailDataSize,PDWORD RequiredSize,PSP_DEVINFO_DATA DeviceInfoData);
   1605 #define SetupDiGetInterfaceDeviceDetailW SetupDiGetDeviceInterfaceDetailW
   1606 #define SetupDiGetInterfaceDeviceDetailA SetupDiGetDeviceInterfaceDetailA
   1607   WINSETUPAPI WINBOOL WINAPI SetupDiInstallDeviceInterfaces(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1608 #define SetupDiInstallInterfaceDevices SetupDiInstallDeviceInterfaces
   1609   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceInterfaceDefault(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Flags,PVOID Reserved);
   1610   WINSETUPAPI WINBOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Flags,PSP_DETSIG_CMPPROC CompareProc,PVOID CompareContext,PSP_DEVINFO_DATA DupDeviceInfoData);
   1611   WINSETUPAPI WINBOOL WINAPI SetupDiBuildDriverInfoList(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD DriverType);
   1612   WINSETUPAPI WINBOOL WINAPI SetupDiCancelDriverInfoSearch(HDEVINFO DeviceInfoSet);
   1613   WINSETUPAPI WINBOOL WINAPI SetupDiEnumDriverInfoA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD DriverType,DWORD MemberIndex,PSP_DRVINFO_DATA_A DriverInfoData);
   1614   WINSETUPAPI WINBOOL WINAPI SetupDiEnumDriverInfoW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD DriverType,DWORD MemberIndex,PSP_DRVINFO_DATA_W DriverInfoData);
   1615   WINSETUPAPI WINBOOL WINAPI SetupDiGetSelectedDriverA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData);
   1616   WINSETUPAPI WINBOOL WINAPI SetupDiGetSelectedDriverW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData);
   1617   WINSETUPAPI WINBOOL WINAPI SetupDiSetSelectedDriverA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData);
   1618   WINSETUPAPI WINBOOL WINAPI SetupDiSetSelectedDriverW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData);
   1619   WINSETUPAPI WINBOOL WINAPI SetupDiGetDriverInfoDetailA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData,PSP_DRVINFO_DETAIL_DATA_A DriverInfoDetailData,DWORD DriverInfoDetailDataSize,PDWORD RequiredSize);
   1620   WINSETUPAPI WINBOOL WINAPI SetupDiGetDriverInfoDetailW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData,PSP_DRVINFO_DETAIL_DATA_W DriverInfoDetailData,DWORD DriverInfoDetailDataSize,PDWORD RequiredSize);
   1621   WINSETUPAPI WINBOOL WINAPI SetupDiDestroyDriverInfoList(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD DriverType);
   1622 
   1623 #define DIGCF_DEFAULT 0x00000001
   1624 #define DIGCF_PRESENT 0x00000002
   1625 #define DIGCF_ALLCLASSES 0x00000004
   1626 #define DIGCF_PROFILE 0x00000008
   1627 #define DIGCF_DEVICEINTERFACE 0x00000010
   1628 
   1629 #define DIGCF_INTERFACEDEVICE DIGCF_DEVICEINTERFACE
   1630 
   1631 #define DIBCI_NOINSTALLCLASS 0x00000001
   1632 #define DIBCI_NODISPLAYCLASS 0x00000002
   1633 
   1634 #define SetupDiGetClassDevs __MINGW_NAME_AW(SetupDiGetClassDevs)
   1635 #define SetupDiGetClassDevsEx __MINGW_NAME_AW(SetupDiGetClassDevsEx)
   1636 #define SetupDiGetINFClass __MINGW_NAME_AW(SetupDiGetINFClass)
   1637 #define SetupDiBuildClassInfoListEx __MINGW_NAME_AW(SetupDiBuildClassInfoListEx)
   1638 #define SetupDiGetClassDescription __MINGW_NAME_AW(SetupDiGetClassDescription)
   1639 #define SetupDiGetClassDescriptionEx __MINGW_NAME_AW(SetupDiGetClassDescriptionEx)
   1640 #define SetupDiInstallClass __MINGW_NAME_AW(SetupDiInstallClass)
   1641 #define SetupDiInstallClassEx __MINGW_NAME_AW(SetupDiInstallClassEx)
   1642 #define SetupDiOpenClassRegKeyEx __MINGW_NAME_AW(SetupDiOpenClassRegKeyEx)
   1643 #define SetupDiCreateDeviceInterfaceRegKey __MINGW_NAME_AW(SetupDiCreateDeviceInterfaceRegKey)
   1644 #define SetupDiCreateInterfaceDeviceRegKey __MINGW_NAME_AW(SetupDiCreateDeviceInterfaceRegKey)
   1645 #define SetupDiCreateDevRegKey __MINGW_NAME_AW(SetupDiCreateDevRegKey)
   1646 #define SetupDiGetHwProfileListEx __MINGW_NAME_AW(SetupDiGetHwProfileListEx)
   1647 
   1648   WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsA(CONST GUID *ClassGuid,PCSTR Enumerator,HWND hwndParent,DWORD Flags);
   1649   WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsW(CONST GUID *ClassGuid,PCWSTR Enumerator,HWND hwndParent,DWORD Flags);
   1650   WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExA(CONST GUID *ClassGuid,PCSTR Enumerator,HWND hwndParent,DWORD Flags,HDEVINFO DeviceInfoSet,PCSTR MachineName,PVOID Reserved);
   1651   WINSETUPAPI HDEVINFO WINAPI SetupDiGetClassDevsExW(CONST GUID *ClassGuid,PCWSTR Enumerator,HWND hwndParent,DWORD Flags,HDEVINFO DeviceInfoSet,PCWSTR MachineName,PVOID Reserved);
   1652   WINSETUPAPI WINBOOL WINAPI SetupDiGetINFClassA(PCSTR InfName,LPGUID ClassGuid,PSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize);
   1653   WINSETUPAPI WINBOOL WINAPI SetupDiGetINFClassW(PCWSTR InfName,LPGUID ClassGuid,PWSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize);
   1654   WINSETUPAPI WINBOOL WINAPI SetupDiBuildClassInfoList(DWORD Flags,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize);
   1655   WINSETUPAPI WINBOOL WINAPI SetupDiBuildClassInfoListExA(DWORD Flags,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
   1656   WINSETUPAPI WINBOOL WINAPI SetupDiBuildClassInfoListExW(DWORD Flags,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
   1657   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDescriptionA(CONST GUID *ClassGuid,PSTR ClassDescription,DWORD ClassDescriptionSize,PDWORD RequiredSize);
   1658   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDescriptionW(CONST GUID *ClassGuid,PWSTR ClassDescription,DWORD ClassDescriptionSize,PDWORD RequiredSize);
   1659   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDescriptionExA(CONST GUID *ClassGuid,PSTR ClassDescription,DWORD ClassDescriptionSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
   1660   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDescriptionExW(CONST GUID *ClassGuid,PWSTR ClassDescription,DWORD ClassDescriptionSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
   1661   WINSETUPAPI WINBOOL WINAPI SetupDiCallClassInstaller(DI_FUNCTION InstallFunction,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1662   WINSETUPAPI WINBOOL WINAPI SetupDiSelectDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1663   WINSETUPAPI WINBOOL WINAPI SetupDiSelectBestCompatDrv(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1664   WINSETUPAPI WINBOOL WINAPI SetupDiInstallDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1665   WINSETUPAPI WINBOOL WINAPI SetupDiInstallDriverFiles(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1666   WINSETUPAPI WINBOOL WINAPI SetupDiRegisterCoDeviceInstallers(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1667   WINSETUPAPI WINBOOL WINAPI SetupDiRemoveDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1668   WINSETUPAPI WINBOOL WINAPI SetupDiUnremoveDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1669   WINSETUPAPI WINBOOL WINAPI SetupDiRestartDevices(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1670   WINSETUPAPI WINBOOL WINAPI SetupDiChangeState(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1671   WINSETUPAPI WINBOOL WINAPI SetupDiInstallClassA(HWND hwndParent,PCSTR InfFileName,DWORD Flags,HSPFILEQ FileQueue);
   1672   WINSETUPAPI WINBOOL WINAPI SetupDiInstallClassW(HWND hwndParent,PCWSTR InfFileName,DWORD Flags,HSPFILEQ FileQueue);
   1673   WINSETUPAPI WINBOOL WINAPI SetupDiInstallClassExA(HWND hwndParent,PCSTR InfFileName,DWORD Flags,HSPFILEQ FileQueue,CONST GUID *InterfaceClassGuid,PVOID Reserved1,PVOID Reserved2);
   1674   WINSETUPAPI WINBOOL WINAPI SetupDiInstallClassExW(HWND hwndParent,PCWSTR InfFileName,DWORD Flags,HSPFILEQ FileQueue,CONST GUID *InterfaceClassGuid,PVOID Reserved1,PVOID Reserved2);
   1675   WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKey(CONST GUID *ClassGuid,REGSAM samDesired);
   1676 
   1677 #define DIOCR_INSTALLER 0x00000001
   1678 #define DIOCR_INTERFACE 0x00000002
   1679 
   1680   WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExA(CONST GUID *ClassGuid,REGSAM samDesired,DWORD Flags,PCSTR MachineName,PVOID Reserved);
   1681   WINSETUPAPI HKEY WINAPI SetupDiOpenClassRegKeyExW(CONST GUID *ClassGuid,REGSAM samDesired,DWORD Flags,PCWSTR MachineName,PVOID Reserved);
   1682   WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Reserved,REGSAM samDesired,HINF InfHandle,PCSTR InfSectionName);
   1683   WINSETUPAPI HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Reserved,REGSAM samDesired,HINF InfHandle,PCWSTR InfSectionName);
   1684 
   1685 #define SetupDiCreateInterfaceDeviceRegKeyW SetupDiCreateDeviceInterfaceRegKeyW
   1686 #define SetupDiCreateInterfaceDeviceRegKeyA SetupDiCreateDeviceInterfaceRegKeyA
   1687 
   1688   WINSETUPAPI HKEY WINAPI SetupDiOpenDeviceInterfaceRegKey(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Reserved,REGSAM samDesired);
   1689 #define SetupDiOpenInterfaceDeviceRegKey SetupDiOpenDeviceInterfaceRegKey
   1690   WINSETUPAPI WINBOOL WINAPI SetupDiDeleteDeviceInterfaceRegKey(HDEVINFO DeviceInfoSet,PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData,DWORD Reserved);
   1691 #define SetupDiDeleteInterfaceDeviceRegKey SetupDiDeleteDeviceInterfaceRegKey
   1692 
   1693 #define DIREG_DEV 0x00000001
   1694 #define DIREG_DRV 0x00000002
   1695 #define DIREG_BOTH 0x00000004
   1696 
   1697   WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Scope,DWORD HwProfile,DWORD KeyType,HINF InfHandle,PCSTR InfSectionName);
   1698   WINSETUPAPI HKEY WINAPI SetupDiCreateDevRegKeyW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Scope,DWORD HwProfile,DWORD KeyType,HINF InfHandle,PCWSTR InfSectionName);
   1699   WINSETUPAPI HKEY WINAPI SetupDiOpenDevRegKey(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Scope,DWORD HwProfile,DWORD KeyType,REGSAM samDesired);
   1700   WINSETUPAPI WINBOOL WINAPI SetupDiDeleteDevRegKey(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Scope,DWORD HwProfile,DWORD KeyType);
   1701   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileList(PDWORD HwProfileList,DWORD HwProfileListSize,PDWORD RequiredSize,PDWORD CurrentlyActiveIndex);
   1702   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileListExA(PDWORD HwProfileList,DWORD HwProfileListSize,PDWORD RequiredSize,PDWORD CurrentlyActiveIndex,PCSTR MachineName,PVOID Reserved);
   1703   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileListExW(PDWORD HwProfileList,DWORD HwProfileListSize,PDWORD RequiredSize,PDWORD CurrentlyActiveIndex,PCWSTR MachineName,PVOID Reserved);
   1704 
   1705 #define SPDRP_DEVICEDESC (0x00000000)
   1706 #define SPDRP_HARDWAREID (0x00000001)
   1707 #define SPDRP_COMPATIBLEIDS (0x00000002)
   1708 #define SPDRP_UNUSED0 (0x00000003)
   1709 #define SPDRP_SERVICE (0x00000004)
   1710 #define SPDRP_UNUSED1 (0x00000005)
   1711 #define SPDRP_UNUSED2 (0x00000006)
   1712 #define SPDRP_CLASS (0x00000007)
   1713 #define SPDRP_CLASSGUID (0x00000008)
   1714 #define SPDRP_DRIVER (0x00000009)
   1715 #define SPDRP_CONFIGFLAGS (0x0000000A)
   1716 #define SPDRP_MFG (0x0000000B)
   1717 #define SPDRP_FRIENDLYNAME (0x0000000C)
   1718 #define SPDRP_LOCATION_INFORMATION (0x0000000D)
   1719 #define SPDRP_PHYSICAL_DEVICE_OBJECT_NAME (0x0000000E)
   1720 #define SPDRP_CAPABILITIES (0x0000000F)
   1721 #define SPDRP_UI_NUMBER (0x00000010)
   1722 #define SPDRP_UPPERFILTERS (0x00000011)
   1723 #define SPDRP_LOWERFILTERS (0x00000012)
   1724 #define SPDRP_BUSTYPEGUID (0x00000013)
   1725 #define SPDRP_LEGACYBUSTYPE (0x00000014)
   1726 #define SPDRP_BUSNUMBER (0x00000015)
   1727 #define SPDRP_ENUMERATOR_NAME (0x00000016)
   1728 #define SPDRP_SECURITY (0x00000017)
   1729 #define SPDRP_SECURITY_SDS (0x00000018)
   1730 #define SPDRP_DEVTYPE (0x00000019)
   1731 #define SPDRP_EXCLUSIVE (0x0000001A)
   1732 #define SPDRP_CHARACTERISTICS (0x0000001B)
   1733 #define SPDRP_ADDRESS (0x0000001C)
   1734 #define SPDRP_UI_NUMBER_DESC_FORMAT (0X0000001D)
   1735 #define SPDRP_DEVICE_POWER_DATA (0x0000001E)
   1736 #define SPDRP_REMOVAL_POLICY (0x0000001F)
   1737 #define SPDRP_REMOVAL_POLICY_HW_DEFAULT (0x00000020)
   1738 #define SPDRP_REMOVAL_POLICY_OVERRIDE (0x00000021)
   1739 #define SPDRP_INSTALL_STATE (0x00000022)
   1740 #define SPDRP_LOCATION_PATHS (0x00000023)
   1741 #define SPDRP_MAXIMUM_PROPERTY (0x00000024)
   1742 #define SPCRP_SECURITY (0x00000017)
   1743 #define SPCRP_SECURITY_SDS (0x00000018)
   1744 #define SPCRP_DEVTYPE (0x00000019)
   1745 #define SPCRP_EXCLUSIVE (0x0000001A)
   1746 #define SPCRP_CHARACTERISTICS (0x0000001B)
   1747 #define SPCRP_MAXIMUM_PROPERTY (0x0000001C)
   1748 
   1749 #define SetupDiGetDeviceRegistryProperty __MINGW_NAME_AW(SetupDiGetDeviceRegistryProperty)
   1750 #define SetupDiGetClassRegistryProperty __MINGW_NAME_AW(SetupDiGetClassRegistryProperty)
   1751 #define SetupDiSetDeviceRegistryProperty __MINGW_NAME_AW(SetupDiSetDeviceRegistryProperty)
   1752 #define SetupDiSetClassRegistryProperty __MINGW_NAME_AW(SetupDiSetClassRegistryProperty)
   1753 #define SetupDiGetDeviceInstallParams __MINGW_NAME_AW(SetupDiGetDeviceInstallParams)
   1754 #define SetupDiGetClassInstallParams __MINGW_NAME_AW(SetupDiGetClassInstallParams)
   1755 #define SetupDiSetDeviceInstallParams __MINGW_NAME_AW(SetupDiSetDeviceInstallParams)
   1756 #define SetupDiSetClassInstallParams __MINGW_NAME_AW(SetupDiSetClassInstallParams)
   1757 #define SetupDiGetDriverInstallParams __MINGW_NAME_AW(SetupDiGetDriverInstallParams)
   1758 #define SetupDiSetDriverInstallParams __MINGW_NAME_AW(SetupDiSetDriverInstallParams)
   1759 #define SetupDiGetClassImageListEx __MINGW_NAME_AW(SetupDiGetClassImageListEx)
   1760 #define SetupDiGetClassDevPropertySheets __MINGW_NAME_AW(SetupDiGetClassDevPropertySheets)
   1761 #define SetupDiClassNameFromGuid __MINGW_NAME_AW(SetupDiClassNameFromGuid)
   1762 #define SetupDiClassNameFromGuidEx __MINGW_NAME_AW(SetupDiClassNameFromGuidEx)
   1763 #define SetupDiClassGuidsFromName __MINGW_NAME_AW(SetupDiClassGuidsFromName)
   1764 #define SetupDiClassGuidsFromNameEx __MINGW_NAME_AW(SetupDiClassGuidsFromNameEx)
   1765 #define SetupDiGetHwProfileFriendlyName __MINGW_NAME_AW(SetupDiGetHwProfileFriendlyName)
   1766 #define SetupDiGetHwProfileFriendlyNameEx __MINGW_NAME_AW(SetupDiGetHwProfileFriendlyNameEx)
   1767 #define SetupDiGetActualModelsSection __MINGW_NAME_AW(SetupDiGetActualModelsSection)
   1768 #define SetupDiGetActualSectionToInstall __MINGW_NAME_AW(SetupDiGetActualSectionToInstall)
   1769 #define SetupDiGetActualSectionToInstallEx __MINGW_NAME_AW(SetupDiGetActualSectionToInstallEx)
   1770 #define SetupEnumInfSections __MINGW_NAME_AW(SetupEnumInfSections)
   1771 
   1772   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Property,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize);
   1773   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Property,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize);
   1774   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassRegistryPropertyA(CONST GUID *ClassGuid,DWORD Property,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
   1775   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassRegistryPropertyW(CONST GUID *ClassGuid,DWORD Property,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
   1776   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Property,CONST BYTE *PropertyBuffer,DWORD PropertyBufferSize);
   1777   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,DWORD Property,CONST BYTE *PropertyBuffer,DWORD PropertyBufferSize);
   1778   WINSETUPAPI WINBOOL WINAPI SetupDiSetClassRegistryPropertyA(CONST GUID *ClassGuid,DWORD Property,CONST BYTE *PropertyBuffer,DWORD PropertyBufferSize,PCSTR MachineName,PVOID Reserved);
   1779   WINSETUPAPI WINBOOL WINAPI SetupDiSetClassRegistryPropertyW(CONST GUID *ClassGuid,DWORD Property,CONST BYTE *PropertyBuffer,DWORD PropertyBufferSize,PCWSTR MachineName,PVOID Reserved);
   1780   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DEVINSTALL_PARAMS_A DeviceInstallParams);
   1781   WINSETUPAPI WINBOOL WINAPI SetupDiGetDeviceInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DEVINSTALL_PARAMS_W DeviceInstallParams);
   1782   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_CLASSINSTALL_HEADER ClassInstallParams,DWORD ClassInstallParamsSize,PDWORD RequiredSize);
   1783   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_CLASSINSTALL_HEADER ClassInstallParams,DWORD ClassInstallParamsSize,PDWORD RequiredSize);
   1784   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DEVINSTALL_PARAMS_A DeviceInstallParams);
   1785   WINSETUPAPI WINBOOL WINAPI SetupDiSetDeviceInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DEVINSTALL_PARAMS_W DeviceInstallParams);
   1786   WINSETUPAPI WINBOOL WINAPI SetupDiSetClassInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_CLASSINSTALL_HEADER ClassInstallParams,DWORD ClassInstallParamsSize);
   1787   WINSETUPAPI WINBOOL WINAPI SetupDiSetClassInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_CLASSINSTALL_HEADER ClassInstallParams,DWORD ClassInstallParamsSize);
   1788   WINSETUPAPI WINBOOL WINAPI SetupDiGetDriverInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData,PSP_DRVINSTALL_PARAMS DriverInstallParams);
   1789   WINSETUPAPI WINBOOL WINAPI SetupDiGetDriverInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData,PSP_DRVINSTALL_PARAMS DriverInstallParams);
   1790   WINSETUPAPI WINBOOL WINAPI SetupDiSetDriverInstallParamsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_A DriverInfoData,PSP_DRVINSTALL_PARAMS DriverInstallParams);
   1791   WINSETUPAPI WINBOOL WINAPI SetupDiSetDriverInstallParamsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_DRVINFO_DATA_W DriverInfoData,PSP_DRVINSTALL_PARAMS DriverInstallParams);
   1792   WINSETUPAPI WINBOOL WINAPI SetupDiLoadClassIcon(CONST GUID *ClassGuid,HICON *LargeIcon,PINT MiniIconIndex);
   1793 
   1794 #define DMI_MASK 0x00000001
   1795 #define DMI_BKCOLOR 0x00000002
   1796 #define DMI_USERECT 0x00000004
   1797 
   1798   WINSETUPAPI INT WINAPI SetupDiDrawMiniIcon(HDC hdc,RECT rc,INT MiniIconIndex,DWORD Flags);
   1799   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassBitmapIndex(CONST GUID *ClassGuid,PINT MiniIconIndex);
   1800   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassImageList(PSP_CLASSIMAGELIST_DATA ClassImageListData);
   1801   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassImageListExA(PSP_CLASSIMAGELIST_DATA ClassImageListData,PCSTR MachineName,PVOID Reserved);
   1802   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassImageListExW(PSP_CLASSIMAGELIST_DATA ClassImageListData,PCWSTR MachineName,PVOID Reserved);
   1803   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassImageIndex(PSP_CLASSIMAGELIST_DATA ClassImageListData,CONST GUID *ClassGuid,PINT ImageIndex);
   1804   WINSETUPAPI WINBOOL WINAPI SetupDiDestroyClassImageList(PSP_CLASSIMAGELIST_DATA ClassImageListData);
   1805 
   1806 #define DIGCDP_FLAG_BASIC 0x00000001
   1807 #define DIGCDP_FLAG_ADVANCED 0x00000002
   1808 #define DIGCDP_FLAG_REMOTE_BASIC 0x00000003
   1809 #define DIGCDP_FLAG_REMOTE_ADVANCED 0x00000004
   1810 
   1811   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDevPropertySheetsA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,LPPROPSHEETHEADERA PropertySheetHeader,DWORD PropertySheetHeaderPageListSize,PDWORD RequiredSize,DWORD PropertySheetType);
   1812   WINSETUPAPI WINBOOL WINAPI SetupDiGetClassDevPropertySheetsW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,LPPROPSHEETHEADERW PropertySheetHeader,DWORD PropertySheetHeaderPageListSize,PDWORD RequiredSize,DWORD PropertySheetType);
   1813 
   1814 #define IDI_RESOURCEFIRST 159
   1815 #define IDI_RESOURCE 159
   1816 #define IDI_RESOURCELAST 161
   1817 #define IDI_RESOURCEOVERLAYFIRST 161
   1818 #define IDI_RESOURCEOVERLAYLAST 161
   1819 #define IDI_CONFLICT 161
   1820 
   1821 #define IDI_CLASSICON_OVERLAYFIRST 500
   1822 #define IDI_CLASSICON_OVERLAYLAST 502
   1823 #define IDI_PROBLEM_OVL 500
   1824 #define IDI_DISABLED_OVL 501
   1825 #define IDI_FORCED_OVL 502
   1826 
   1827   WINSETUPAPI WINBOOL WINAPI SetupDiAskForOEMDisk(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1828   WINSETUPAPI WINBOOL WINAPI SetupDiSelectOEMDrv(HWND hwndParent,HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1829   WINSETUPAPI WINBOOL WINAPI SetupDiClassNameFromGuidA(CONST GUID *ClassGuid,PSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize);
   1830   WINSETUPAPI WINBOOL WINAPI SetupDiClassNameFromGuidW(CONST GUID *ClassGuid,PWSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize);
   1831   WINSETUPAPI WINBOOL WINAPI SetupDiClassNameFromGuidExA(CONST GUID *ClassGuid,PSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
   1832   WINSETUPAPI WINBOOL WINAPI SetupDiClassNameFromGuidExW(CONST GUID *ClassGuid,PWSTR ClassName,DWORD ClassNameSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
   1833   WINSETUPAPI WINBOOL WINAPI SetupDiClassGuidsFromNameA(PCSTR ClassName,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize);
   1834   WINSETUPAPI WINBOOL WINAPI SetupDiClassGuidsFromNameW(PCWSTR ClassName,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize);
   1835   WINSETUPAPI WINBOOL WINAPI SetupDiClassGuidsFromNameExA(PCSTR ClassName,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
   1836   WINSETUPAPI WINBOOL WINAPI SetupDiClassGuidsFromNameExW(PCWSTR ClassName,LPGUID ClassGuidList,DWORD ClassGuidListSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
   1837   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileFriendlyNameA(DWORD HwProfile,PSTR FriendlyName,DWORD FriendlyNameSize,PDWORD RequiredSize);
   1838   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileFriendlyNameW(DWORD HwProfile,PWSTR FriendlyName,DWORD FriendlyNameSize,PDWORD RequiredSize);
   1839   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileFriendlyNameExA(DWORD HwProfile,PSTR FriendlyName,DWORD FriendlyNameSize,PDWORD RequiredSize,PCSTR MachineName,PVOID Reserved);
   1840   WINSETUPAPI WINBOOL WINAPI SetupDiGetHwProfileFriendlyNameExW(DWORD HwProfile,PWSTR FriendlyName,DWORD FriendlyNameSize,PDWORD RequiredSize,PCWSTR MachineName,PVOID Reserved);
   1841 
   1842 #define SPWPT_SELECTDEVICE 0x00000001
   1843 #define SPWP_USE_DEVINFO_DATA 0x00000001
   1844 
   1845   WINSETUPAPI HPROPSHEETPAGE WINAPI SetupDiGetWizardPage(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PSP_INSTALLWIZARD_DATA InstallWizardData,DWORD PageType,DWORD Flags);
   1846   WINSETUPAPI WINBOOL WINAPI SetupDiGetSelectedDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1847   WINSETUPAPI WINBOOL WINAPI SetupDiSetSelectedDevice(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData);
   1848   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualModelsSectionA(PINFCONTEXT Context,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PVOID Reserved);
   1849   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualModelsSectionW(PINFCONTEXT Context,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PWSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PVOID Reserved);
   1850   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualSectionToInstallA(HINF InfHandle,PCSTR InfSectionName,PSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PSTR *Extension);
   1851   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualSectionToInstallW(HINF InfHandle,PCWSTR InfSectionName,PWSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PWSTR *Extension);
   1852   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualSectionToInstallExA(HINF InfHandle,PCSTR InfSectionName,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PSTR *Extension,PVOID Reserved);
   1853   WINSETUPAPI WINBOOL WINAPI SetupDiGetActualSectionToInstallExW(HINF InfHandle,PCWSTR InfSectionName,PSP_ALTPLATFORM_INFO AlternatePlatformInfo,PWSTR InfSectionWithExt,DWORD InfSectionWithExtSize,PDWORD RequiredSize,PWSTR *Extension,PVOID Reserved);
   1854   WINSETUPAPI WINBOOL WINAPI SetupEnumInfSectionsA (HINF InfHandle,UINT Index,PSTR Buffer,UINT Size,UINT *SizeNeeded);
   1855   WINSETUPAPI WINBOOL WINAPI SetupEnumInfSectionsW (HINF InfHandle,UINT Index,PWSTR Buffer,UINT Size,UINT *SizeNeeded);
   1856 
   1857   typedef struct _SP_INF_SIGNER_INFO_A {
   1858     DWORD cbSize;
   1859     CHAR CatalogFile[MAX_PATH];
   1860     CHAR DigitalSigner[MAX_PATH];
   1861     CHAR DigitalSignerVersion[MAX_PATH];
   1862   } SP_INF_SIGNER_INFO_A,*PSP_INF_SIGNER_INFO_A;
   1863 
   1864   typedef struct _SP_INF_SIGNER_INFO_W {
   1865     DWORD cbSize;
   1866     WCHAR CatalogFile[MAX_PATH];
   1867     WCHAR DigitalSigner[MAX_PATH];
   1868     WCHAR DigitalSignerVersion[MAX_PATH];
   1869   } SP_INF_SIGNER_INFO_W,*PSP_INF_SIGNER_INFO_W;
   1870 
   1871   __MINGW_TYPEDEF_UAW(SP_INF_SIGNER_INFO)
   1872   __MINGW_TYPEDEF_UAW(PSP_INF_SIGNER_INFO)
   1873 
   1874 #define SetupVerifyInfFile __MINGW_NAME_AW(SetupVerifyInfFile)
   1875 #define SetupDiGetCustomDeviceProperty __MINGW_NAME_AW(SetupDiGetCustomDeviceProperty)
   1876 #define SetupConfigureWmiFromInfSection __MINGW_NAME_AW(SetupConfigureWmiFromInfSection)
   1877 
   1878   WINSETUPAPI WINBOOL WINAPI SetupVerifyInfFileA(PCSTR InfName,PSP_ALTPLATFORM_INFO AltPlatformInfo,PSP_INF_SIGNER_INFO_A InfSignerInfo);
   1879   WINSETUPAPI WINBOOL WINAPI SetupVerifyInfFileW(PCWSTR InfName,PSP_ALTPLATFORM_INFO AltPlatformInfo,PSP_INF_SIGNER_INFO_W InfSignerInfo);
   1880 
   1881 #define DICUSTOMDEVPROP_MERGE_MULTISZ 0x00000001
   1882 
   1883   WINSETUPAPI WINBOOL WINAPI SetupDiGetCustomDevicePropertyA(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PCSTR CustomPropertyName,DWORD Flags,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize);
   1884   WINSETUPAPI WINBOOL WINAPI SetupDiGetCustomDevicePropertyW(HDEVINFO DeviceInfoSet,PSP_DEVINFO_DATA DeviceInfoData,PCWSTR CustomPropertyName,DWORD Flags,PDWORD PropertyRegDataType,PBYTE PropertyBuffer,DWORD PropertyBufferSize,PDWORD RequiredSize);
   1885 
   1886 #define SCWMI_CLOBBER_SECURITY 0x00000001
   1887 
   1888   WINSETUPAPI WINBOOL WINAPI SetupConfigureWmiFromInfSectionA(HINF InfHandle,PCSTR SectionName,DWORD Flags);
   1889   WINSETUPAPI WINBOOL WINAPI SetupConfigureWmiFromInfSectionW(HINF InfHandle,PCWSTR SectionName,DWORD Flags);
   1890 
   1891 #if _WIN32_WINNT >= 0x0600
   1892   WINSETUPAPI WINBOOL WINAPI SetupDiGetDevicePropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, const DEVPROPKEY *PropertyKey, DEVPROPTYPE *PropertyType, PBYTE PropertyBuffer, DWORD PropertyBufferSize, PDWORD RequiredSize, DWORD Flags);
   1893   WINSETUPAPI WINBOOL WINAPI SetupDiGetDevicePropertyKeys(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DEVPROPKEY *PropertyKeyArray, DWORD PropertyKeyCount, PDWORD RequiredPropertyKeyCount, DWORD Flags);
   1894 
   1895 #ifdef UNICODE
   1896 #define SetupDiGetDeviceProperty SetupDiGetDevicePropertyW
   1897 #endif
   1898 #endif
   1899 
   1900 #ifdef __cplusplus
   1901 }
   1902 #endif
   1903 
   1904 #include <poppack.h>
   1905 #endif