/*
* Copyright (C) 2000 James Hatheway
* Copyright (C) 2007 Juan Lang
*
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef _INC_SETUPAPI
#define _INC_SETUPAPI
#include <commctrl.h>
#include <devpropdef.h>
#ifdef _WIN64
#include <pshpack8.h>
#else
#include <pshpack1.h>
#endif
/* setupapi doesn't use the normal convention, it adds an underscore before A/W */
#ifdef WINE_NO_UNICODE_MACROS
#else
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Define type for handle to a loaded inf file */
/* Define type for handle to a device information set */
/* Define type for handle to a setup log file */
/* Define type for setup file queue */
/* inf structure. */
typedef struct _INFCONTEXT
{
typedef struct _SP_ALTPLATFORM_INFO_V2
{
union
{
typedef struct _SP_ALTPLATFORM_INFO_V1
{
typedef struct _SP_FILE_COPY_PARAMS_A
{
typedef struct _SP_FILE_COPY_PARAMS_W
{
typedef struct _SP_REGISTER_CONTROL_STATUSA
{
typedef struct _SP_REGISTER_CONTROL_STATUSW
{
typedef struct _SP_CLASSINSTALL_HEADER
{
typedef struct _SP_ENABLECLASS_PARAMS
{
/* SP_ENABLECLASS_PARAMS EnableMessage values */
#define ENABLECLASS_QUERY 0
typedef struct _SP_PROPCHANGE_PARAMS
{
/* SP_PROPCHANGE_PARAMS StateChange values */
/* SP_PROPCHANGE_PARAMS Scope values */
typedef struct _SP_DEVINSTALL_PARAMS_A
{
typedef struct _SP_DEVINSTALL_PARAMS_W
{
/* SP_DEVINSTALL_PARAMS Flags values */
/* SP_DEVINSTALL_PARAMS FlagsEx values */
typedef struct _SP_REMOVEDEVICE_PARAMS
{
/* SP_REMOVEDEVICE_PARAMS Scope values */
typedef struct _SP_UNREMOVEDEVICE_PARAMS
{
/* SP_UNREMOVEDEVICE_PARAMS Scope values */
typedef struct _SP_SELECTDEVICE_PARAMS_A
{
typedef struct _SP_SELECTDEVICE_PARAMS_W
{
typedef struct _SP_DETECTDEVICE_PARAMS
{
typedef struct _SP_INSTALLWIZARD_DATA
{
/* SP_INSTALLWIZARD_DATA Flags values */
/* SP_INSTALLWIZARD_DATA DynamicPageFlags values */
/* Resource IDs */
typedef struct _SP_NEWDEVICEWIZARD_DATA
{
typedef struct _SP_TROUBLESHOOTER_PARAMS_A
{
typedef struct _SP_TROUBLESHOOTER_PARAMS_W
{
typedef struct _SP_POWERMESSAGEWAKE_PARAMS_A
{
typedef struct _SP_POWERMESSAGEWAKE_PARAMS_W
{
typedef struct _SP_DRVINFO_DATA_V1_A
{
typedef struct _SP_DRVINFO_DATA_V1_W
{
typedef struct _SP_DRVINFO_DATA_V2_A
{
typedef struct _SP_DRVINFO_DATA_V2_W
{
typedef struct _SP_DRVINFO_DETAIL_DATA_A
{
typedef struct _SP_DRVINFO_DETAIL_DATA_W
{
typedef struct _SP_DRVINSTALL_PARAMS
{
/* SP_DRVINSTALL_PARAMS Flags values */
/* SP_DRVINSTALL_PARAMS Rank values */
/* Device Information structure (references a device instance that is a member
of a device information set) */
typedef struct _SP_DEVINFO_DATA
{
typedef struct _SP_DEVICE_INTERFACE_DATA
{
typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_A
{
typedef struct _SP_DEVICE_INTERFACE_DETAIL_DATA_W
{
typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_A {
typedef struct _SP_DEVINFO_LIST_DETAIL_DATA_W {
typedef struct _COINSTALLER_CONTEXT_DATA
{
typedef struct _SP_CLASSIMAGELIST_DATA
{
typedef struct _SP_PROPSHEETPAGE_REQUEST
{
/* SP_PROPSHEETPAGE_REQUEST PageRequested values */
typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_A
{
typedef struct _SP_BACKUP_QUEUE_PARAMS_V1_W
{
typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_A
{
typedef struct _SP_BACKUP_QUEUE_PARAMS_V2_W
{
typedef struct _FILE_IN_CABINET_INFO_A {
typedef struct _FILE_IN_CABINET_INFO_W {
typedef struct _CABINET_INFO_A {
typedef struct _CABINET_INFO_W {
typedef struct _SP_INF_INFORMATION {
#define FILEOP_COPY 0
#define FILEOP_ABORT 0
typedef struct _FILEPATHS_A
{
typedef struct _FILEPATHS_W
{
typedef struct _FILEPATHS_SIGNERINFO_A
{
typedef struct _FILEPATHS_SIGNERINFO_W
{
typedef struct _SOURCE_MEDIA_A
{
typedef struct _SOURCE_MEDIA_W
{
typedef struct _SP_ORIGINAL_FILE_INFO_A
{
typedef struct _SP_ORIGINAL_FILE_INFO_W
{
typedef struct _SP_INF_SIGNER_INFO_A
{
typedef struct _SP_INF_SIGNER_INFO_W
{
#define SPOST_NONE 0
#define FLG_DELREG_MULTI_SZ_DELSTRING (FLG_DELREG_TYPE_MULTI_SZ | FLG_ADDREG_DELREG_BIT | 0x00000002)
/* Class installer function codes */
/* Directory ids */
#define DIRID_NULL 0
/* Error code */
/* flags for SetupDiGetClassDevs */
/* Flags for SetupDiOpenClassRegKeyEx */
/* Flags for SetupDiBuildClassInfoList(Ex) */
/* Flags for SetupDiCreateDeviceInfo */
/* Flags for SetupDiOpenDeviceInfo */
/* Flags for SetupDiOpenDeviceInterface */
/* Flags for SetupDiRegisterDeviceInfo */
/* Values for SetupDi*Info* DriverType */
/* setup device registry property codes */
#define DPROMPT_SUCCESS 0
#define FILE_COMPRESSION_NONE 0
/* SetupInitializeFileLog Flags values */
/* SetupLogFile Flags values */
/* SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey
* KeyType values
*/
/* SetupDiDrawMiniIcon Flags values */
/* SetupDiGetClassDevPropertySheets PropertySheetType values */
typedef enum {
/* SetupDiGetWizardPage PageType values */
/* SetupDiGetWizardPage Flags values */
/* SetupDiGetCustomDeviceProperty Flags values */
/* SetupConfigureWmiFromInfSection Flags values */
/* SetupUninstallOEMInf Flags values */
/* RetreiveFileSecurity is not a typo, as per Microsoft's dlls */
void WINAPI SetupCloseLog(void);
UINT WINAPI SetupCopyErrorA( HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, UINT, DWORD, PSTR, DWORD, PDWORD );
UINT WINAPI SetupCopyErrorW( HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, UINT, DWORD, PWSTR, DWORD, PDWORD );
BOOL WINAPI SetupDiCreateDeviceInfoA(HDEVINFO, PCSTR, const GUID*, PCSTR, HWND, DWORD,PSP_DEVINFO_DATA);
BOOL WINAPI SetupDiCreateDeviceInfoW(HDEVINFO, PCWSTR, const GUID*, PCWSTR, HWND, DWORD,PSP_DEVINFO_DATA);
BOOL WINAPI SetupDiCreateDeviceInterfaceA(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, PCSTR, DWORD, PSP_DEVICE_INTERFACE_DATA);
BOOL WINAPI SetupDiCreateDeviceInterfaceW(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, PCWSTR, DWORD, PSP_DEVICE_INTERFACE_DATA);
HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCSTR);
HKEY WINAPI SetupDiCreateDeviceInterfaceRegKeyW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, DWORD, REGSAM, HINF, PCWSTR);
BOOL WINAPI SetupDiEnumDeviceInterfaces(HDEVINFO, PSP_DEVINFO_DATA, const GUID *, DWORD, PSP_DEVICE_INTERFACE_DATA);
BOOL WINAPI SetupDiGetActualModelsSectionA(PINFCONTEXT, PSP_ALTPLATFORM_INFO, PSTR, DWORD, PDWORD, PVOID);
BOOL WINAPI SetupDiGetActualModelsSectionW(PINFCONTEXT, PSP_ALTPLATFORM_INFO, PWSTR, DWORD, PDWORD, PVOID);
BOOL WINAPI SetupDiGetActualSectionToInstallExW(HINF, PCWSTR, PWSTR, DWORD, PDWORD, PWSTR *, PVOID);
BOOL WINAPI SetupDiGetClassDevPropertySheetsA(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERA, DWORD, PDWORD, DWORD);
BOOL WINAPI SetupDiGetClassDevPropertySheetsW(HDEVINFO, PSP_DEVINFO_DATA, LPPROPSHEETHEADERW, DWORD, PDWORD, DWORD);
BOOL WINAPI SetupDiGetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD);
BOOL WINAPI SetupDiGetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD, PDWORD);
BOOL WINAPI SetupDiGetClassRegistryPropertyA(const GUID *, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCSTR, PVOID);
BOOL WINAPI SetupDiGetClassRegistryPropertyW(const GUID *, DWORD, PDWORD, PBYTE, DWORD, PDWORD, PCWSTR, PVOID);
BOOL WINAPI SetupDiGetCustomDevicePropertyA(HDEVINFO, PSP_DEVINFO_DATA, PCSTR, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
BOOL WINAPI SetupDiGetCustomDevicePropertyW(HDEVINFO, PSP_DEVINFO_DATA, PCWSTR, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
BOOL WINAPI SetupDiGetDeviceInterfaceAlias(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, const GUID *, PSP_DEVICE_INTERFACE_DATA);
BOOL WINAPI SetupDiGetDeviceInterfaceDetailA(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_A,
BOOL WINAPI SetupDiGetDeviceInterfaceDetailW(HDEVINFO, PSP_DEVICE_INTERFACE_DATA, PSP_DEVICE_INTERFACE_DETAIL_DATA_W,
BOOL WINAPI SetupDiGetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
BOOL WINAPI SetupDiGetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD);
BOOL WINAPI SetupDiGetDriverInfoDetailA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINFO_DETAIL_DATA_A, DWORD, PDWORD);
BOOL WINAPI SetupDiGetDriverInfoDetailW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINFO_DETAIL_DATA_W, DWORD, PDWORD);
BOOL WINAPI SetupDiGetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS);
BOOL WINAPI SetupDiGetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS);
HPROPSHEETPAGE WINAPI SetupDiGetWizardPage(HDEVINFO, PSP_DEVINFO_DATA, PSP_INSTALLWIZARD_DATA, DWORD, DWORD);
BOOL WINAPI SetupDiRegisterDeviceInfo(HDEVINFO, PSP_DEVINFO_DATA, DWORD, PSP_DETSIG_CMPPROC, PVOID, PSP_DEVINFO_DATA);
BOOL WINAPI SetupDiSetClassInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD);
BOOL WINAPI SetupDiSetClassInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_CLASSINSTALL_HEADER, DWORD);
BOOL WINAPI SetupDiSetClassRegistryPropertyA(const GUID *, DWORD, const BYTE *, DWORD, PCSTR, PVOID);
BOOL WINAPI SetupDiSetClassRegistryPropertyW(const GUID *, DWORD, const BYTE *, DWORD, PCWSTR, PVOID);
BOOL WINAPI SetupDiSetDeviceRegistryPropertyA(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const BYTE *, DWORD);
BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO, PSP_DEVINFO_DATA, DWORD, const BYTE *, DWORD);
BOOL WINAPI SetupDiSetDriverInstallParamsA(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_A, PSP_DRVINSTALL_PARAMS);
BOOL WINAPI SetupDiSetDriverInstallParamsW(HDEVINFO, PSP_DEVINFO_DATA, PSP_DRVINFO_DATA_W, PSP_DRVINSTALL_PARAMS);
BOOL WINAPI SetupGetBinaryField( PINFCONTEXT context, DWORD index, BYTE *buffer, DWORD size, LPDWORD required );
BOOL WINAPI SetupGetLineTextA( PINFCONTEXT context, HINF hinf, PCSTR section_name,PCSTR key_name, PSTR buffer, DWORD size, PDWORD required );
BOOL WINAPI SetupGetLineTextW( PINFCONTEXT context, HINF hinf, PCWSTR section_name, PCWSTR key_name, PWSTR buffer, DWORD size, PDWORD required );
BOOL WINAPI SetupGetMultiSzFieldA( PINFCONTEXT context, DWORD index, PSTR buffer, DWORD size, LPDWORD required );
BOOL WINAPI SetupGetMultiSzFieldW( PINFCONTEXT context, DWORD index, PWSTR buffer, DWORD size, LPDWORD required );
BOOL WINAPI SetupGetSourceFileLocationA( HINF hinf, PINFCONTEXT context, PCSTR filename, PUINT source_id, PSTR buffer, DWORD buffer_size, PDWORD required_size );
BOOL WINAPI SetupGetSourceFileLocationW( HINF hinf, PINFCONTEXT context, PCWSTR filename, PUINT source_id, PWSTR buffer, DWORD buffer_size, PDWORD required_size );
BOOL WINAPI SetupGetSourceInfoA( HINF hinf, UINT source_id, UINT info, PSTR buffer, DWORD buffer_size, LPDWORD required_size );
BOOL WINAPI SetupGetSourceInfoW( HINF hinf, UINT source_id, UINT info, PWSTR buffer, DWORD buffer_size, LPDWORD required_size );
BOOL WINAPI SetupGetStringFieldA( PINFCONTEXT context, DWORD index, PSTR buffer, DWORD size, PDWORD required );
BOOL WINAPI SetupGetStringFieldW( PINFCONTEXT context, DWORD index, PWSTR buffer, DWORD size, PDWORD required );
BOOL WINAPI SetupGetTargetPathA( HINF hinf, PINFCONTEXT context, PCSTR section, PSTR buffer, DWORD buffer_size, PDWORD required_size );
BOOL WINAPI SetupGetTargetPathW( HINF hinf, PINFCONTEXT context, PCWSTR section, PWSTR buffer, DWORD buffer_size, PDWORD required_size );
BOOL WINAPI SetupInstallFileA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID);
BOOL WINAPI SetupInstallFileW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID);
BOOL WINAPI SetupInstallFileExA(HINF, PINFCONTEXT, PCSTR, PCSTR, PCSTR, DWORD, PSP_FILE_CALLBACK_A, PVOID, PBOOL);
BOOL WINAPI SetupInstallFileExW(HINF, PINFCONTEXT, PCWSTR, PCWSTR, PCWSTR, DWORD, PSP_FILE_CALLBACK_W, PVOID, PBOOL);
BOOL WINAPI SetupInstallServicesFromInfSectionExA(HINF, PCSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID);
BOOL WINAPI SetupInstallServicesFromInfSectionExW(HINF, PCWSTR, DWORD, HDEVINFO, PSP_DEVINFO_DATA, PVOID, PVOID);
BOOL WINAPI SetupLogFileW(HSPFILELOG, PCWSTR, PCWSTR, PCWSTR, DWORD, PCWSTR, PCWSTR, PCWSTR, DWORD);
UINT WINAPI SetupPromptForDiskA(HWND, PCSTR, PCSTR, PCSTR, PCSTR, PCSTR, DWORD, PSTR, DWORD, PDWORD);
UINT WINAPI SetupPromptForDiskW(HWND, PCWSTR, PCWSTR, PCWSTR, PCWSTR, PCWSTR, DWORD, PWSTR, DWORD, PDWORD);
BOOL WINAPI SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_A);
BOOL WINAPI SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION, UINT, PSP_ALTPLATFORM_INFO, PSP_ORIGINAL_FILE_INFO_W);
BOOL WINAPI SetupQueryInfVersionInformationA(PSP_INF_INFORMATION, UINT, PCSTR, PSTR, DWORD, PDWORD);
BOOL WINAPI SetupQueryInfVersionInformationW(PSP_INF_INFORMATION, UINT, PCWSTR, PWSTR, DWORD, PDWORD);
#define SetupRemoveInstallSectionFromDiskSpaceList WINELIB_NAME_AW(SetupRemoveInstallSectionFromDiskSpaceList)
#ifdef __cplusplus
}
#endif
#include <poppack.h>
#endif /* _INC_SETUPAPI */