Implement SetupDiGetActualSectionToInstallExA/W
[reactos.git] / reactos / w32api / include / setupapi.h
index 90e0cf7..028001b 100644 (file)
 extern "C" {
 #endif
 
+#ifndef _SETUPAPI_
 #define WINSETUPAPI DECLSPEC_IMPORT
+#else
+#define WINSETUPAPI
+#endif
 
 #define LINE_LEN       256
 #define MAX_INF_STRING_LENGTH  4096
@@ -106,49 +110,56 @@ extern "C" {
 #define DICS_START     4
 #define DICS_FLAG_CONFIGGENERAL        4
 #define DICS_STOP      5
-#define DIF_SELECTDEVICE       1
-#define DIF_INSTALLDEVICE      2
-#define DIF_ASSIGNRESOURCES    3
-#define DIF_PROPERTIES 4
-#define DIF_REMOVE     5
-#define DIF_FIRSTTIMESETUP     6
-#define DIF_FOUNDDEVICE        7
-#define DIF_SELECTCLASSDRIVERS 8
-#define DIF_VALIDATECLASSDRIVERS       9
-#define DIF_INSTALLCLASSDRIVERS        10
-#define DIF_CALCDISKSPACE      11
-#define DIF_DESTROYPRIVATEDATA 12
-#define DIF_VALIDATEDRIVER     13
-#define DIF_MOVEDEVICE 14
-#define DIF_DETECT     15
-#define DIF_INSTALLWIZARD      16
-#define DIF_DESTROYWIZARDDATA  17
-#define DIF_PROPERTYCHANGE     18
-#define DIF_ENABLECLASS        19
-#define DIF_DETECTVERIFY       20
-#define DIF_INSTALLDEVICEFILES 21
-#define DIF_UNREMOVE   22
-#define DIF_SELECTBESTCOMPATDRV        23
-#define DIF_ALLOW_INSTALL      24
-#define DIF_REGISTERDEVICE     25
-#define DIF_NEWDEVICEWIZARD_PRESELECT  26
-#define DIF_NEWDEVICEWIZARD_SELECT     27
-#define DIF_NEWDEVICEWIZARD_PREANALYZE 28
-#define DIF_NEWDEVICEWIZARD_POSTANALYZE        29
-#define DIF_NEWDEVICEWIZARD_FINISHINSTALL      30
-#define DIF_UNUSED1    31
-#define DIF_INSTALLINTERFACES  32
-#define DIF_DETECTCANCEL       33
-#define DIF_REGISTER_COINSTALLERS      34
-#define DIF_ADDPROPERTYPAGE_ADVANCED   35
-#define DIF_ADDPROPERTYPAGE_BASIC      36
-#define DIF_RESERVED1  37
-#define DIF_TROUBLESHOOTER     38
-#define DIF_POWERMESSAGEWAKE   39
-#define DIGCF_DEFAULT  0x00000001
+#define DIF_SELECTDEVICE                    1
+#define DIF_INSTALLDEVICE                   2
+#define DIF_ASSIGNRESOURCES                 3
+#define DIF_PROPERTIES                      4
+#define DIF_REMOVE                          5
+#define DIF_FIRSTTIMESETUP                  6
+#define DIF_FOUNDDEVICE                     7
+#define DIF_SELECTCLASSDRIVERS              8
+#define DIF_VALIDATECLASSDRIVERS            9
+#define DIF_INSTALLCLASSDRIVERS            10
+#define DIF_CALCDISKSPACE                  11
+#define DIF_DESTROYPRIVATEDATA             12
+#define DIF_VALIDATEDRIVER                 13
+#define DIF_MOVEDEVICE                     14
+#define DIF_DETECT                         15
+#define DIF_INSTALLWIZARD                  16
+#define DIF_DESTROYWIZARDDATA              17
+#define DIF_PROPERTYCHANGE                 18
+#define DIF_ENABLECLASS                    19
+#define DIF_DETECTVERIFY                   20
+#define DIF_INSTALLDEVICEFILES             21
+#define DIF_UNREMOVE                       22
+#define DIF_SELECTBESTCOMPATDRV            23
+#define DIF_ALLOW_INSTALL                  24
+#define DIF_REGISTERDEVICE                 25
+#define DIF_NEWDEVICEWIZARD_PRESELECT      26
+#define DIF_NEWDEVICEWIZARD_SELECT         27
+#define DIF_NEWDEVICEWIZARD_PREANALYZE     28
+#define DIF_NEWDEVICEWIZARD_POSTANALYZE    29
+#define DIF_NEWDEVICEWIZARD_FINISHINSTALL  30
+#define DIF_UNUSED1                        31
+#define DIF_INSTALLINTERFACES              32
+#define DIF_DETECTCANCEL                   33
+#define DIF_REGISTER_COINSTALLERS          34
+#define DIF_ADDPROPERTYPAGE_ADVANCED       35
+#define DIF_ADDPROPERTYPAGE_BASIC          36
+#define DIF_RESERVED1                      37
+#define DIF_TROUBLESHOOTER                 38
+#define DIF_POWERMESSAGEWAKE               39
+#define DIF_ADDREMOTEPROPERTYPAGE_ADVANCED 40
+#define DIF_UPDATEDRIVER_UI                41
+#define DIF_RESERVED2                      42
 #define DIGCDP_FLAG_BASIC      0x00000001
-#define DIGCF_PRESENT  0x00000002
 #define DIGCDP_FLAG_ADVANCED   0x00000002
+#if (_SETUPAPI_VER >= 0x0501)
+#define DIGCDP_FLAG_REMOTE_BASIC    0x00000003
+#define DIGCDP_FLAG_REMOTE_ADVANCED 0x00000004
+#endif
+#define DIGCF_DEFAULT  0x00000001
+#define DIGCF_PRESENT  0x00000002
 #define DIGCF_ALLCLASSES       0x00000004
 #define DIGCF_PROFILE  0x00000008
 #define DIGCF_DEVICEINTERFACE  0x00000010
@@ -201,6 +212,38 @@ extern "C" {
 #define DMI_MASK       0x00000001
 #define DMI_BKCOLOR    0x00000002
 #define DMI_USERECT    0x00000004
+#define DN_ROOT_ENUMERATED     0x00000001
+#define DN_DRIVER_LOADED       0x00000002
+#define DN_ENUM_LOADED 0x00000004
+#define DN_STARTED     0x00000008
+#define DN_MANUAL      0x00000010
+#define DN_NEED_TO_ENUM        0x00000020
+#define DN_NOT_FIRST_TIME      0x00000040
+#define DN_HARDWARE_ENUM       0x00000080
+#define DN_LIAR        0x00000100
+#define DN_HAS_MARK    0x00000200
+#define DN_HAS_PROBLEM 0x00000400
+#define DN_FILTERED    0x00000800
+#define DN_MOVED       0x00001000
+#define DN_DISABLEABLE 0x00002000
+#define DN_REMOVABLE   0x00004000
+#define DN_PRIVATE_PROBLEM     0x00008000
+#define DN_MF_PARENT   0x00010000
+#define DN_MF_CHILD    0x00020000
+#define DN_WILL_BE_REMOVED     0x00040000
+#define DN_NOT_FIRST_TIMEE     0x00080000
+#define DN_STOP_FREE_RES       0x00100000
+#define DN_REBAL_CANDIDATE     0x00200000
+#define DN_BAD_PARTIAL 0x00400000
+#define DN_NT_ENUMERATOR       0x00800000
+#define DN_NT_DRIVER   0x01000000
+#define DN_NEEDS_LOCKING       0x02000000
+#define DN_ARM_WAKEUP  0x04000000
+#define DN_APM_ENUMERATOR      0x08000000
+#define DN_APM_DRIVER  0x10000000
+#define DN_SILENT_INSTALL      0x20000000
+#define DN_NO_SHOW_IN_DM       0x40000000
+#define DN_BOOT_LOG_PROB       0x80000000
 #define DNF_DUPDESC    0x00000001
 #define DNF_OLDDRIVER  0x00000002
 #define DNF_EXCLUDEFROMLIST    0x00000004
@@ -503,6 +546,8 @@ extern "C" {
 #define SPFILENOTIFY_BACKUPERROR       22
 #define SPFILENOTIFY_ENDBACKUP 23
 #define SPFILENOTIFY_QUEUESCAN_EX      24
+#define SPFILENOTIFY_STARTREGISTRATION 25
+#define SPFILENOTIFY_ENDREGISTRATION   26
 #define SPFILENOTIFY_LANGMISMATCH      0x00010000
 #define SPFILENOTIFY_TARGETEXISTS      0x00020000
 #define SPFILENOTIFY_TARGETNEWER       0x00040000
@@ -537,6 +582,9 @@ extern "C" {
 #define SPINST_SINGLESECTION   0x00010000
 #define SPINST_LOGCONFIG_IS_FORCED     0x00020000
 #define SPINST_LOGCONFIGS_ARE_OVERRIDES        0x00040000
+#if (_SETUPAPI_VER >= 0x0501)
+#define SPINST_REGISTERCALLBACKAWARE   0x00080000
+#endif
 #define SPOST_NONE     0
 #define SPOST_PATH     1
 #define SPOST_URL      2
@@ -576,6 +624,16 @@ extern "C" {
 #define SRCLIST_SUBDIRS        0x00000100
 #define SRCLIST_APPEND 0x00000200
 #define SRCLIST_NOSTRIPPLATFORM        0x00000400
+#define SPREG_SUCCESS  0x00000000
+#define SPREG_LOADLIBRARY      0x00000001
+#define SPREG_GETPROCADDR      0x00000002
+#define SPREG_REGSVR   0x00000003
+#define SPREG_DLLINSTALL       0x00000004
+#define SPREG_TIMEOUT  0x00000005
+#define SPREG_UNKNOWN  0xFFFFFFFF
+
+/* Flags for StringTableAddString and StringTableLookUpString */
+#define ST_CASE_SENSITIVE_COMPARE      0x00000001
 
 #ifndef RC_INVOKED
 typedef PVOID HINF;
@@ -585,6 +643,8 @@ typedef PVOID HSPFILEQ;
 typedef PVOID HSPFILELOG;
 typedef UINT DI_FUNCTION;
 
+typedef PVOID HSTRING_TABLE;
+
 typedef enum {
     SetupFileLogSourceFilename,
     SetupFileLogChecksum,
@@ -822,6 +882,18 @@ typedef struct _SP_SELECTDEVICE_PARAMS_W {
     WCHAR                  ListLabel[MAX_LABEL_LEN];
     WCHAR                  SubTitle[MAX_SUBTITLE_LEN];
 } SP_SELECTDEVICE_PARAMS_W, *PSP_SELECTDEVICE_PARAMS_W;
+typedef struct _SP_REGISTER_CONTROL_STATUSA {
+    DWORD                  cbSize;
+    PCSTR                  FileName;
+    DWORD                  Win32Error;
+    DWORD                  FailureCode;
+} SP_REGISTER_CONTROL_STATUSA, *PSP_REGISTER_CONTROL_STATUSA;
+typedef struct _SP_REGISTER_CONTROL_STATUSW {
+    DWORD                  cbSize;
+    PCWSTR                 FileName;
+    DWORD                  Win32Error;
+    DWORD                  FailureCode;
+} SP_REGISTER_CONTROL_STATUSW, *PSP_REGISTER_CONTROL_STATUSW;
 
 typedef BOOL (CALLBACK* PDETECT_PROGRESS_NOTIFY)(PVOID,DWORD);
 typedef struct _SP_DETECTDEVICE_PARAMS {
@@ -1005,6 +1077,7 @@ typedef SP_DRVINFO_DETAIL_DATA_W SP_DRVINFO_DETAIL_DATA,
      *PSP_DRVINFO_DETAIL_DATA;
 typedef SP_BACKUP_QUEUE_PARAMS_W SP_BACKUP_QUEUE_PARAMS,
     *PSP_BACKUP_QUEUE_PARAMS;
+typedef SP_REGISTER_CONTROL_STATUSW SP_REGISTER_CONTROL_STATUS, *PSP_REGISTER_CONTROL_STATUS;
 #else
 typedef SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO, *PSP_ORIGINAL_FILE_INFO;
 typedef FILEPATHS_A FILEPATHS, *PFILEPATHS;
@@ -1029,16 +1102,32 @@ typedef SP_DRVINFO_DETAIL_DATA_A SP_DRVINFO_DETAIL_DATA,
     *PSP_DRVINFO_DETAIL_DATA;
 typedef SP_BACKUP_QUEUE_PARAMS_A SP_BACKUP_QUEUE_PARAMS,
     *PSP_BACKUP_QUEUE_PARAMS;
+typedef SP_REGISTER_CONTROL_STATUSA SP_REGISTER_CONTROL_STATUS, *PSP_REGISTER_CONTROL_STATUS;
 #endif /* UNICODE */
 
 
 WINSETUPAPI LONG WINAPI AddTagToGroupOrderList(PCWSTR, DWORD, DWORD);
+WINSETUPAPI VOID WINAPI AssertFail(LPSTR, UINT, LPSTR);
+WINSETUPAPI DWORD WINAPI CaptureAndConvertAnsiArg(PCSTR, PWSTR*);
+WINSETUPAPI DWORD WINAPI CaptureStringArg(PCWSTR, PWSTR*);
+WINSETUPAPI VOID WINAPI CenterWindowRelativeToParent(HWND);
+WINSETUPAPI BOOL WINAPI ConcatenatePaths(LPWSTR, LPCWSTR, DWORD, LPDWORD);
+WINSETUPAPI BOOL WINAPI DelayedMove(PCWSTR, PCWSTR);
+WINSETUPAPI BOOL WINAPI DoesUserHavePrivilege(PCWSTR);
 WINSETUPAPI PWSTR WINAPI DuplicateString(PCWSTR);
+WINSETUPAPI BOOL WINAPI EnablePrivilege(PCWSTR, BOOL);
+WINSETUPAPI BOOL WINAPI FileExists(PCWSTR, PWIN32_FIND_DATAW);
+WINSETUPAPI DWORD WINAPI GetSetFileTimestamp(PCWSTR, PFILETIME, PFILETIME, PFILETIME, BOOLEAN);
+WINSETUPAPI BOOL WINAPI GetVersionInfoFromImage(LPWSTR, PULARGE_INTEGER, LPWORD);
 WINSETUPAPI BOOL WINAPI IsUserAdmin(VOID);
+WINSETUPAPI PWSTR WINAPI MultiByteToUnicode(PCSTR, UINT);
 WINSETUPAPI VOID WINAPI MyFree(PVOID);
+WINSETUPAPI PWSTR WINAPI MyGetFileTitle(PCWSTR);
 WINSETUPAPI PVOID WINAPI MyMalloc(DWORD);
 WINSETUPAPI PVOID WINAPI MyRealloc(PVOID, DWORD);
+WINSETUPAPI DWORD WINAPI OpenAndMapForRead(PCWSTR, PDWORD, PHANDLE, PHANDLE, PVOID*);
 WINSETUPAPI LONG WINAPI QueryRegistryValue(HKEY, PCWSTR, PBYTE*, PDWORD, PDWORD);
+WINSETUPAPI DWORD WINAPI RetreiveFileSecurity(PCWSTR, PSECURITY_DESCRIPTOR*);
 
 WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(HDSKSPC,HINF,HINF,PCSTR,PVOID,UINT);
 WINSETUPAPI BOOL WINAPI SetupAddInstallSectionToDiskSpaceListW(HDSKSPC,HINF,HINF,PCWSTR,PVOID,UINT);
@@ -1111,6 +1200,8 @@ WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO,PSP_DEVINFO_DATA,CO
 WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoA(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_A);
 WINSETUPAPI BOOL WINAPI SetupDiEnumDriverInfoW(HDEVINFO,PSP_DEVINFO_DATA,DWORD,DWORD,PSP_DRVINFO_DATA_W);
 WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallA(HINF,PCSTR,PSTR,DWORD,PDWORD,PSTR*);
+WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallExA(HINF,PCSTR,PSP_ALTPLATFORM_INFO,PSTR,DWORD,PDWORD,PSTR*,PVOID);
+WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallExW(HINF,PCWSTR,PSP_ALTPLATFORM_INFO,PWSTR,DWORD,PDWORD,PWSTR*,PVOID);
 WINSETUPAPI BOOL WINAPI SetupDiGetActualSectionToInstallW(HINF,PCWSTR,PWSTR,DWORD,PDWORD,PWSTR*);
 WINSETUPAPI BOOL WINAPI SetupDiGetClassBitmapIndex(CONST GUID*,PINT);
 WINSETUPAPI BOOL WINAPI SetupDiGetClassDescriptionA(CONST GUID*,PSTR,DWORD,PDWORD);
@@ -1326,6 +1417,27 @@ WINSETUPAPI BOOL WINAPI SetupSetSourceListW(DWORD,PCWSTR*,UINT);
 WINSETUPAPI VOID WINAPI SetupTermDefaultQueueCallback(PVOID);
 WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG);
 
+WINSETUPAPI DWORD WINAPI StampFileSecurity(PCWSTR, PSECURITY_DESCRIPTOR);
+
+WINSETUPAPI DWORD  WINAPI StringTableAddString(HSTRING_TABLE, LPWSTR, DWORD);
+WINSETUPAPI DWORD  WINAPI StringTableAddStringEx(HSTRING_TABLE, LPWSTR, DWORD, LPVOID, DWORD);
+WINSETUPAPI VOID   WINAPI StringTableDestroy(HSTRING_TABLE);
+WINSETUPAPI HSTRING_TABLE WINAPI StringTableDuplicate(HSTRING_TABLE);
+WINSETUPAPI BOOL   WINAPI StringTableGetExtraData(HSTRING_TABLE, DWORD, LPVOID, DWORD);
+WINSETUPAPI HSTRING_TABLE WINAPI StringTableInitialize(VOID);
+WINSETUPAPI HSTRING_TABLE WINAPI StringTableInitializeEx(DWORD, DWORD);
+WINSETUPAPI DWORD  WINAPI StringTableLookUpString(HSTRING_TABLE, LPWSTR, DWORD);
+WINSETUPAPI DWORD  WINAPI StringTableLookUpStringEx(HSTRING_TABLE, LPWSTR, DWORD, LPVOID, LPDWORD);
+WINSETUPAPI BOOL   WINAPI StringTableSetExtraData(HSTRING_TABLE, DWORD, LPVOID, DWORD);
+WINSETUPAPI LPWSTR WINAPI StringTableStringFromId(HSTRING_TABLE, DWORD);
+WINSETUPAPI BOOL   WINAPI StringTableStringFromIdEx(HSTRING_TABLE, DWORD, LPWSTR, LPDWORD);
+WINSETUPAPI VOID   WINAPI StringTableTrim(HSTRING_TABLE);
+
+WINSETUPAPI DWORD WINAPI TakeOwnershipOfFile(PCWSTR);
+WINSETUPAPI PSTR WINAPI UnicodeToMultiByte(PCWSTR lpUnicodeStr, UINT uCodePage);
+WINSETUPAPI BOOL WINAPI UnmapAndCloseFile(HANDLE, HANDLE, PVOID);
+
+
 /* for backward compatability */
 #define SetupDiCreateInterfaceDeviceW  SetupDiCreateDeviceInterfaceW
 #define SetupDiCreateInterfaceDeviceRegKeyW    SetupDiCreateDeviceInterfaceRegKeyW
@@ -1336,7 +1448,7 @@ WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG);
 #define SetupDiOpenInterfaceDeviceA    SetupDiOpenDeviceInterfaceA
 #define SetupDiGetInterfaceDeviceDetailA       SetupDiGetDeviceInterfaceDetailA
 
-#ifdef UNICODE         
+#ifdef UNICODE
 #define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_W
 #define SetupAddInstallSectionToDiskSpaceList  SetupAddInstallSectionToDiskSpaceListW
 #define SetupAddSectionToDiskSpaceList SetupAddSectionToDiskSpaceListW
@@ -1365,6 +1477,7 @@ WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG);
 #define SetupDiCreateDevRegKey SetupDiCreateDevRegKeyW
 #define SetupDiEnumDriverInfo  SetupDiEnumDriverInfoW
 #define SetupDiGetActualSectionToInstall       SetupDiGetActualSectionToInstallW
+#define SetupDiGetActualSectionToInstallEx     SetupDiGetActualSectionToInstallExW
 #define SetupDiGetClassDescriptionEx   SetupDiGetClassDescriptionExW
 #define SetupDiGetClassDescription     SetupDiGetClassDescriptionW
 #define SetupDiGetClassDevPropertySheets       SetupDiGetClassDevPropertySheetsW
@@ -1455,7 +1568,7 @@ WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG);
 #define SetupSetFileQueueAlternatePlatform     SetupSetFileQueueAlternatePlatformW
 #define SetupSetPlatformPathOverride   SetupSetPlatformPathOverrideW
 #define SetupSetSourceList     SetupSetSourceListW
-#else          
+#else
 #define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A
 #define SetupAddInstallSectionToDiskSpaceList  SetupAddInstallSectionToDiskSpaceListA
 #define SetupAddSectionToDiskSpaceList SetupAddSectionToDiskSpaceListA
@@ -1485,6 +1598,7 @@ WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG);
 #define SetupDiDeleteInterfaceDeviceData       SetupDiDeleteDeviceInterfaceData
 #define SetupDiEnumDriverInfo  SetupDiEnumDriverInfoA
 #define SetupDiGetActualSectionToInstall       SetupDiGetActualSectionToInstallA
+#define SetupDiGetActualSectionToInstallEx     SetupDiGetActualSectionToInstallExA
 #define SetupDiGetClassDescription     SetupDiGetClassDescriptionA
 #define SetupDiGetClassDescriptionEx   SetupDiGetClassDescriptionExA
 #define SetupDiGetClassDevPropertySheets       SetupDiGetClassDevPropertySheetsA
@@ -1575,7 +1689,7 @@ WINSETUPAPI BOOL WINAPI SetupTerminateFileLog(HSPFILELOG);
 #define SetupSetFileQueueAlternatePlatform     SetupSetFileQueueAlternatePlatformA
 #define SetupSetPlatformPathOverride   SetupSetPlatformPathOverrideA
 #define SetupSetSourceList     SetupSetSourceListA
-#endif /* UNICODE */   
+#endif /* UNICODE */
 
 #endif /* RC_INVOKED */