1 /* 2 * Copyright 2004 Huw D M Davies 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 #ifndef __WINE_ADVPUB_H 19 #define __WINE_ADVPUB_H 20 21 #include <setupapi.h> 22 /* FIXME: #include <cfgmgr32.h> */ 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 #ifndef S_ASYNCHRONOUS 29 #define S_ASYNCHRONOUS _HRESULT_TYPEDEF_(0x401E8L) 30 #endif 31 32 typedef struct _CabInfoA 33 { 34 LPSTR pszCab; 35 LPSTR pszInf; 36 LPSTR pszSection; 37 CHAR szSrcPath[MAX_PATH]; 38 DWORD dwFlags; 39 } CABINFOA, *PCABINFOA; 40 41 typedef struct _CabInfoW 42 { 43 LPWSTR pszCab; 44 LPWSTR pszInf; 45 LPWSTR pszSection; 46 WCHAR szSrcPath[MAX_PATH]; 47 DWORD dwFlags; 48 } CABINFOW, *PCABINFOW; 49 50 DECL_WINELIB_TYPE_AW(CABINFO) 51 DECL_WINELIB_TYPE_AW(PCABINFO) 52 53 typedef struct _PERUSERSECTIONA 54 { 55 CHAR szGUID[39 /*MAX_GUID_STRING_LEN*/ + 20]; 56 CHAR szDispName[128]; 57 CHAR szLocale[10]; 58 CHAR szStub[MAX_PATH * 4]; 59 CHAR szVersion[32]; 60 CHAR szCompID[128]; 61 DWORD dwIsInstalled; 62 BOOL bRollback; 63 } PERUSERSECTIONA, *PPERUSERSECTIONA; 64 65 typedef struct _PERUSERSECTIONW 66 { 67 WCHAR szGUID[39 /*MAX_GUID_STRING_LEN*/ + 20]; 68 WCHAR szDispName[128]; 69 WCHAR szLocale[10]; 70 WCHAR szStub[MAX_PATH * 4]; 71 WCHAR szVersion[32]; 72 WCHAR szCompID[128]; 73 DWORD dwIsInstalled; 74 BOOL bRollback; 75 } PERUSERSECTIONW, *PPERUSERSECTIONW; 76 77 DECL_WINELIB_TYPE_AW(PERUSERSECTION) 78 DECL_WINELIB_TYPE_AW(PPERUSERSECTION) 79 80 typedef struct _StrEntryA 81 { 82 LPSTR pszName; 83 LPSTR pszValue; 84 } STRENTRYA, *LPSTRENTRYA; 85 86 typedef struct _StrEntryW 87 { 88 LPWSTR pszName; 89 LPWSTR pszValue; 90 } STRENTRYW, *LPSTRENTRYW; 91 92 DECL_WINELIB_TYPE_AW(STRENTRY) 93 DECL_WINELIB_TYPE_AW(LPSTRENTRY) 94 95 typedef struct _StrTableA 96 { 97 DWORD cEntries; 98 STRENTRYA* pse; 99 } STRTABLEA, *LPSTRTABLEA; 100 typedef const STRTABLEA CSTRTABLEA, *LPCSTRTABLEA; 101 102 typedef struct _StrTableW 103 { 104 DWORD cEntries; 105 STRENTRYW* pse; 106 } STRTABLEW, *LPSTRTABLEW; 107 typedef const STRTABLEW CSTRTABLEW, *LPCSTRTABLEW; 108 109 DECL_WINELIB_TYPE_AW(STRTABLE) 110 DECL_WINELIB_TYPE_AW(CSTRTABLE) 111 DECL_WINELIB_TYPE_AW(LPSTRTABLE) 112 DECL_WINELIB_TYPE_AW(LPCSTRTABLE) 113 114 /* Flags for AddDelBackupEntry */ 115 #define AADBE_ADD_ENTRY 0x01 116 #define AADBE_DEL_ENTRY 0x02 117 118 /* Flags for AdvInstallFile */ 119 #define AIF_WARNIFSKIP 0x00000001 120 #define AIF_NOSKIP 0x00000002 121 #define AIF_NOVERSIONCHECK 0x00000004 122 #define AIF_FORCE_FILE_IN_USE 0x00000008 123 #define AIF_NOOVERWRITE 0x00000010 124 #define AIF_NO_VERSION_DIALOG 0x00000020 125 #define AIF_REPLACEONLY 0x00000400 126 #define AIF_NOLANGUAGECHECK 0x10000000 127 #define AIF_QUIET 0x20000000 128 129 /* Flags for RunSetupCommand */ 130 #define RSC_FLAG_INF 0x00000001 131 #define RSC_FLAG_SKIPDISKSPACECHECK 0x00000002 132 #define RSC_FLAG_QUIET 0x00000004 133 #define RSC_FLAG_NGCONV 0x00000008 134 #define RSC_FLAG_UPDHLPDLLS 0x00000010 135 #define RSC_FLAG_DELAYREGISTEROCX 0x00000200 136 #define RSC_FLAG_SETUPAPI 0x00000400 137 138 /* Flags for LaunchINFSection */ 139 #define LIS_QUIET 0x00000001 140 #define LIS_NOGRPCONV 0x00000002 141 142 /* Flags for DelNode */ 143 #define ADN_DEL_IF_EMPTY 0x00000001 144 #define ADN_DONT_DEL_SUBDIRS 0x00000002 145 #define ADN_DONT_DEL_DIR 0x00000004 146 #define ADN_DEL_UNC_PATHS 0x00000008 147 148 /* Flags for RegRestoreAll, RegSaveRestore, RegSaveRestoreOnINF */ 149 #define IE4_RESTORE 0x00000001 150 #define IE4_BACKNEW 0x00000002 151 #define IE4_NODELETENEW 0x00000004 152 #define IE4_NOMESSAGES 0x00000008 153 #define IE4_NOPROGRESS 0x00000010 154 #define IE4_NOENUMKEY 0x00000020 155 #define IE4_NO_CRC_MAPPING 0x00000040 156 #define IE4_REGSECTION 0x00000080 157 #define IE4_FRDOALL 0x00000100 158 #define IE4_UPDREFCNT 0x00000200 159 #define IE4_USEREFCNT 0x00000400 160 #define IE4_EXTRAINCREFCNT 0x00000800 161 162 /* Flags for file save and restore functions */ 163 #define AFSR_RESTORE IE4_RESTORE 164 #define AFSR_BACKNEW IE4_BACKNEW 165 #define AFSR_NODELETENEW IE4_NODELETENEW 166 #define AFSR_NOMESSAGES IE4_NOMESSAGES 167 #define AFSR_NOPROGRESS IE4_NOPROGRESS 168 #define AFSR_UPDREFCNT IE4_UPDREFCNT 169 #define AFSR_USEREFCNT IE4_USEREFCNT 170 #define AFSR_EXTRAINCREFCNT IE4_EXTRAINCREFCNT 171 172 HRESULT WINAPI AddDelBackupEntryA(LPCSTR lpcszFileList, LPCSTR lpcszBackupDir, 173 LPCSTR lpcszBaseName, DWORD dwFlags); 174 HRESULT WINAPI AddDelBackupEntryW(LPCWSTR lpcszFileList, LPCWSTR lpcszBackupDir, 175 LPCWSTR lpcszBaseName, DWORD dwFlags); 176 #define AddDelBackupEntry WINELIB_NAME_AW(AddDelBackupEntry) 177 HRESULT WINAPI AdvInstallFileA(HWND hwnd, LPCSTR lpszSourceDir, 178 LPCSTR lpszSourceFile, LPCSTR lpszDestDir, LPCSTR lpszDestFile, 179 DWORD dwFlags, DWORD dwReserved); 180 HRESULT WINAPI AdvInstallFileW(HWND hwnd, LPCWSTR lpszSourceDir, 181 LPCWSTR lpszSourceFile, LPCWSTR lpszDestDir, LPCWSTR lpszDestFile, 182 DWORD dwFlags, DWORD dwReserved); 183 #define AdvInstallFile WINELIB_NAME_AW(AdvInstallFile) 184 HRESULT WINAPI CloseINFEngine(HINF hInf); 185 HRESULT WINAPI DelNodeA(LPCSTR pszFileOrDirName, DWORD dwFlags); 186 HRESULT WINAPI DelNodeW(LPCWSTR pszFileOrDirName, DWORD dwFlags); 187 #define DelNode WINELIB_NAME_AW(DelNode) 188 HRESULT WINAPI DelNodeRunDLL32A(HWND,HINSTANCE,LPSTR,INT); 189 HRESULT WINAPI DelNodeRunDLL32W(HWND,HINSTANCE,LPWSTR,INT); 190 #define DelNodeRunDLL32 WINELIB_NAME_AW(DelNodeRunDLL32) 191 HRESULT WINAPI ExecuteCabA( HWND hwnd, CABINFOA* pCab, LPVOID pReserved ); 192 HRESULT WINAPI ExecuteCabW( HWND hwnd, CABINFOW* pCab, LPVOID pReserved ); 193 #define ExecuteCab WINELIB_NAME_AW(ExecuteCab) 194 HRESULT WINAPI ExtractFilesA(LPCSTR,LPCSTR,DWORD,LPCSTR,LPVOID,DWORD); 195 HRESULT WINAPI ExtractFilesW(LPCWSTR,LPCWSTR,DWORD,LPCWSTR,LPVOID,DWORD); 196 #define ExtractFiles WINELIB_NAME_AW(ExtractFiles) 197 198 HRESULT 199 WINAPI 200 FileSaveMarkNotExistA( 201 _In_opt_ LPSTR pszFileList, 202 _In_opt_ LPSTR pszDir, 203 _In_opt_ LPSTR pszBaseName); 204 205 HRESULT 206 WINAPI 207 FileSaveMarkNotExistW( 208 _In_opt_ LPWSTR pszFileList, 209 _In_opt_ LPWSTR pszDir, 210 _In_opt_ LPWSTR pszBaseName); 211 212 #define FileSaveMarkNotExist WINELIB_NAME_AW(FileSaveMarkNotExist) 213 214 HRESULT WINAPI FileSaveRestoreA(HWND hDlg, LPSTR pszFileList, LPSTR pszDir, 215 LPSTR pszBaseName, DWORD dwFlags); 216 HRESULT WINAPI FileSaveRestoreW(HWND hDlg, LPWSTR pszFileList, LPWSTR pszDir, 217 LPWSTR pszBaseName, DWORD dwFlags); 218 #define FileSaveRestore WINELIB_NAME_AW(FileSaveRestore) 219 HRESULT WINAPI FileSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF, 220 LPCSTR pszSection, LPCSTR pszBackupDir, LPCSTR pszBaseBackupFile, DWORD dwFlags); 221 HRESULT WINAPI FileSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF, 222 LPCWSTR pszSection, LPCWSTR pszBackupDir, LPCWSTR pszBaseBackupFile, DWORD dwFlags); 223 #define FileSaveRestoreOnINF WINELIB_NAME_AW(FileSaveRestoreOnINF) 224 HRESULT WINAPI GetVersionFromFileA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); 225 HRESULT WINAPI GetVersionFromFileW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); 226 #define GetVersionFromFile WINELIB_NAME_AW(GetVersionFromFile) 227 HRESULT WINAPI GetVersionFromFileExA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); 228 HRESULT WINAPI GetVersionFromFileExW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); 229 #define GetVersionFromFileEx WINELIB_NAME_AW(GetVersionFromFileEx) 230 BOOL WINAPI IsNTAdmin(DWORD,LPDWORD); 231 INT WINAPI LaunchINFSectionA(HWND,HINSTANCE,LPSTR,INT); 232 INT WINAPI LaunchINFSectionW(HWND,HINSTANCE,LPWSTR,INT); 233 #define LaunchINFSection WINELIB_NAME_AW(LaunchINFSection) 234 235 HRESULT 236 WINAPI 237 LaunchINFSectionExA( 238 _In_opt_ HWND, 239 _In_opt_ HINSTANCE, 240 _In_ LPSTR, 241 _In_ INT); 242 243 HRESULT 244 WINAPI 245 LaunchINFSectionExW( 246 _In_opt_ HWND, 247 _In_opt_ HINSTANCE, 248 _In_ LPWSTR, 249 _In_ INT); 250 251 #define LaunchINFSectionEx WINELIB_NAME_AW(LaunchINFSectionEx) 252 253 DWORD WINAPI NeedRebootInit(VOID); 254 BOOL WINAPI NeedReboot(DWORD dwRebootCheck); 255 HRESULT WINAPI OpenINFEngineA(LPCSTR pszInfFilename, LPCSTR pszInstallSection, 256 DWORD dwFlags, HINF *phInf, PVOID pvReserved); 257 HRESULT WINAPI OpenINFEngineW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection, 258 DWORD dwFlags, HINF *phInf, PVOID pvReserved); 259 #define OpenINFEngine WINELIB_NAME_AW(OpenINFEngine) 260 HRESULT WINAPI RebootCheckOnInstallA(HWND hWnd, LPCSTR pszINF, LPCSTR pszSec, DWORD dwReserved); 261 HRESULT WINAPI RebootCheckOnInstallW(HWND hWnd, LPCWSTR pszINF, LPCWSTR pszSec, DWORD dwReserved); 262 #define RebootCheckOnInstall WINELIB_NAME_AW(RebootCheckOnInstall) 263 HRESULT WINAPI RegInstallA(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable); 264 HRESULT WINAPI RegInstallW(HMODULE hm, LPCWSTR pszSection, const STRTABLEW* pstTable); 265 #define RegInstall WINELIB_NAME_AW(RegInstall) 266 267 HRESULT 268 WINAPI 269 RegRestoreAllA( 270 _In_opt_ HWND hWnd, 271 _In_opt_ LPSTR pszTitleString, 272 _In_ HKEY hkBackupKey); 273 274 HRESULT 275 WINAPI 276 RegRestoreAllW( 277 _In_opt_ HWND hWnd, 278 _In_opt_ LPWSTR pszTitleString, 279 _In_ HKEY hkBackupKey); 280 281 #define RegRestoreAll WINELIB_NAME_AW(RegRestoreAll) 282 283 HRESULT WINAPI RegSaveRestoreA(HWND hWnd, LPCSTR pszTitleString, HKEY hkBackupKey, 284 LPCSTR pcszRootKey, LPCSTR pcszSubKey, LPCSTR pcszValueName, DWORD dwFlags); 285 HRESULT WINAPI RegSaveRestoreW(HWND hWnd, LPCWSTR pszTitleString, HKEY hkBackupKey, 286 LPCWSTR pcszRootKey, LPCWSTR pcszSubKey, LPCWSTR pcszValueName, DWORD dwFlags); 287 #define RegSaveRestore WINELIB_NAME_AW(RegSaveRestore) 288 HRESULT WINAPI RegSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF, 289 LPCSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags); 290 HRESULT WINAPI RegSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF, 291 LPCWSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags); 292 #define RegSaveRestoreOnINF WINELIB_NAME_AW(RegSaveRestoreOnINF) 293 HRESULT WINAPI RunSetupCommandA(HWND hWnd, 294 LPCSTR szCmdName, LPCSTR szInfSection, LPCSTR szDir, LPCSTR lpszTitle, 295 HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved); 296 HRESULT WINAPI RunSetupCommandW(HWND hWnd, 297 LPCWSTR szCmdName, LPCWSTR szInfSection, LPCWSTR szDir, LPCWSTR lpszTitle, 298 HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved); 299 #define RunSetupCommand WINELIB_NAME_AW(RunSetupCommand) 300 HRESULT WINAPI SetPerUserSecValuesA(PERUSERSECTIONA* pPerUser); 301 HRESULT WINAPI SetPerUserSecValuesW(PERUSERSECTIONW* pPerUser); 302 #define SetPerUserSecValues WINELIB_NAME_AW(SetPerUserSecValues) 303 304 HRESULT 305 WINAPI 306 TranslateInfStringA( 307 _In_ LPCSTR pszInfFilename, 308 _In_ LPCSTR pszInstallSection, 309 _In_ LPCSTR pszTranslateSection, 310 _In_ LPCSTR pszTranslateKey, 311 _Out_writes_opt_(dwBufferSize) LPSTR pszBuffer, 312 _In_ DWORD dwBufferSize, 313 _Out_ PDWORD pdwRequiredSize, 314 _Reserved_ PVOID pvReserved); 315 316 HRESULT 317 WINAPI 318 TranslateInfStringW( 319 _In_ LPCWSTR pszInfFilename, 320 _In_ LPCWSTR pszInstallSection, 321 _In_ LPCWSTR pszTranslateSection, 322 _In_ LPCWSTR pszTranslateKey, 323 _Out_writes_opt_(dwBufferSize) LPWSTR pszBuffer, 324 _In_ DWORD dwBufferSize, 325 _Out_ PDWORD pdwRequiredSize, 326 _Reserved_ PVOID pvReserved); 327 328 #define TranslateInfString WINELIB_NAME_AW(TranslateInfString) 329 HRESULT WINAPI TranslateInfStringExA(HINF hInf, LPCSTR pszInfFilename, 330 LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer, 331 DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); 332 HRESULT WINAPI TranslateInfStringExW(HINF hInf, LPCWSTR pszInfFilename, 333 LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer, 334 DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); 335 #define TranslateInfStringEx WINELIB_NAME_AW(TranslateInfStringEx) 336 HRESULT WINAPI UserInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow); 337 HRESULT WINAPI UserInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow); 338 #define UserInstStubWrapper WINELIB_NAME_AW(UserInstStubWrapper) 339 HRESULT WINAPI UserUnInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow); 340 HRESULT WINAPI UserUnInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow); 341 #define UserUnInstStubWrapper WINELIB_NAME_AW(UserUnInstStubWrapper) 342 343 #ifdef __cplusplus 344 } 345 #endif 346 347 #endif /* __WINE_ADVPUB_H */ 348