master
   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__
  23typedef 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
  37extern "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