| /* | 
 |  * Copyright 2004 Huw D M Davies | 
 |  * | 
 |  * This library is free software; you can redistribute it and/or | 
 |  * 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 | 
 |  */ | 
 | #ifndef __WINE_ADVPUB_H | 
 | #define __WINE_ADVPUB_H | 
 |  | 
 | #include <setupapi.h> | 
 | #include <cfgmgr32.h> | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | #ifndef S_ASYNCHRONOUS | 
 | #define S_ASYNCHRONOUS  _HRESULT_TYPEDEF_(0x401E8) | 
 | #endif | 
 |  | 
 | typedef struct _CabInfoA | 
 | { | 
 |     LPSTR  pszCab; | 
 |     LPSTR  pszInf; | 
 |     LPSTR  pszSection; | 
 |     CHAR   szSrcPath[MAX_PATH]; | 
 |     DWORD  dwFlags; | 
 | } CABINFOA, *PCABINFOA; | 
 |  | 
 | typedef struct _CabInfoW | 
 | { | 
 |     LPWSTR pszCab; | 
 |     LPWSTR pszInf; | 
 |     LPWSTR pszSection; | 
 |     WCHAR  szSrcPath[MAX_PATH]; | 
 |     DWORD  dwFlags; | 
 | } CABINFOW, *PCABINFOW; | 
 |  | 
 | DECL_WINELIB_TYPE_AW(CABINFO) | 
 | DECL_WINELIB_TYPE_AW(PCABINFO) | 
 |  | 
 | typedef struct _PERUSERSECTIONA | 
 | { | 
 |     CHAR  szGUID[39 /*MAX_GUID_STRING_LEN*/ + 20]; | 
 |     CHAR  szDispName[128]; | 
 |     CHAR  szLocale[10]; | 
 |     CHAR  szStub[MAX_PATH * 4]; | 
 |     CHAR  szVersion[32]; | 
 |     CHAR  szCompID[128]; | 
 |     DWORD dwIsInstalled; | 
 |     BOOL  bRollback; | 
 | } PERUSERSECTIONA, *PPERUSERSECTIONA; | 
 |  | 
 | typedef struct _PERUSERSECTIONW | 
 | { | 
 |     WCHAR szGUID[39 /*MAX_GUID_STRING_LEN*/ + 20]; | 
 |     WCHAR szDispName[128]; | 
 |     WCHAR szLocale[10]; | 
 |     WCHAR szStub[MAX_PATH * 4]; | 
 |     WCHAR szVersion[32]; | 
 |     WCHAR szCompID[128]; | 
 |     DWORD dwIsInstalled; | 
 |     BOOL  bRollback; | 
 | } PERUSERSECTIONW, *PPERUSERSECTIONW; | 
 |  | 
 | DECL_WINELIB_TYPE_AW(PERUSERSECTION) | 
 | DECL_WINELIB_TYPE_AW(PPERUSERSECTION) | 
 |  | 
 | typedef struct _StrEntryA | 
 | { | 
 |     LPSTR pszName; | 
 |     LPSTR pszValue; | 
 | } STRENTRYA, *LPSTRENTRYA; | 
 |  | 
 | typedef struct _StrEntryW | 
 | { | 
 |     LPWSTR pszName; | 
 |     LPWSTR pszValue; | 
 | } STRENTRYW, *LPSTRENTRYW; | 
 |  | 
 | DECL_WINELIB_TYPE_AW(STRENTRY) | 
 | DECL_WINELIB_TYPE_AW(LPSTRENTRY) | 
 |  | 
 | typedef struct _StrTableA | 
 | { | 
 |     DWORD cEntries; | 
 |     STRENTRYA* pse; | 
 | } STRTABLEA, *LPSTRTABLEA; | 
 | typedef const STRTABLEA CSTRTABLEA, *LPCSTRTABLEA; | 
 |  | 
 | typedef struct _StrTableW | 
 | { | 
 |     DWORD cEntries; | 
 |     STRENTRYW* pse; | 
 | } STRTABLEW, *LPSTRTABLEW; | 
 | typedef const STRTABLEW CSTRTABLEW, *LPCSTRTABLEW; | 
 |  | 
 | DECL_WINELIB_TYPE_AW(STRTABLE) | 
 | DECL_WINELIB_TYPE_AW(CSTRTABLE) | 
 | DECL_WINELIB_TYPE_AW(LPSTRTABLE) | 
 | DECL_WINELIB_TYPE_AW(LPCSTRTABLE) | 
 |  | 
 | /* Flags for AddDelBackupEntry */ | 
 | #define AADBE_ADD_ENTRY             0x01 | 
 | #define AADBE_DEL_ENTRY             0x02 | 
 |  | 
 | /* Flags for AdvInstallFile */ | 
 | #define AIF_WARNIFSKIP              0x00000001 | 
 | #define AIF_NOSKIP                  0x00000002 | 
 | #define AIF_NOVERSIONCHECK          0x00000004 | 
 | #define AIF_FORCE_FILE_IN_USE       0x00000008 | 
 | #define AIF_NOOVERWRITE             0x00000010 | 
 | #define AIF_NO_VERSION_DIALOG       0x00000020 | 
 | #define AIF_REPLACEONLY             0x00000400 | 
 | #define AIF_NOLANGUAGECHECK         0x10000000 | 
 | #define AIF_QUIET                   0x20000000 | 
 |  | 
 | /* Flags for RunSetupCommand */ | 
 | #define RSC_FLAG_INF                0x00000001 | 
 | #define RSC_FLAG_SKIPDISKSPACECHECK 0x00000002 | 
 | #define RSC_FLAG_QUIET              0x00000004 | 
 | #define RSC_FLAG_NGCONV             0x00000008 | 
 | #define RSC_FLAG_UPDHLPDLLS         0x00000010 | 
 | #define RSC_FLAG_DELAYREGISTEROCX   0x00000200 | 
 | #define RSC_FLAG_SETUPAPI           0x00000400 | 
 |  | 
 | /* Flags for DelNode */ | 
 | #define ADN_DEL_IF_EMPTY            0x00000001 | 
 | #define ADN_DONT_DEL_SUBDIRS        0x00000002 | 
 | #define ADN_DONT_DEL_DIR            0x00000004 | 
 | #define ADN_DEL_UNC_PATHS           0x00000008 | 
 |  | 
 | /* Flags for RegRestoreAll, RegSaveRestore, RegSaveRestoreOnINF */ | 
 | #define  IE4_RESTORE                0x00000001 | 
 | #define  IE4_BACKNEW                0x00000002 | 
 | #define  IE4_NODELETENEW            0x00000004 | 
 | #define  IE4_NOMESSAGES             0x00000008 | 
 | #define  IE4_NOPROGRESS             0x00000010 | 
 | #define  IE4_NOENUMKEY              0x00000020 | 
 | #define  IE4_NO_CRC_MAPPING         0x00000040 | 
 | #define  IE4_REGSECTION             0x00000080 | 
 | #define  IE4_FRDOALL                0x00000100 | 
 | #define  IE4_UPDREFCNT              0x00000200 | 
 | #define  IE4_USEREFCNT              0x00000400 | 
 | #define  IE4_EXTRAINCREFCNT         0x00000800 | 
 |  | 
 | /* Flags for file save and restore functions */ | 
 | #define  AFSR_RESTORE               IE4_RESTORE | 
 | #define  AFSR_BACKNEW               IE4_BACKNEW | 
 | #define  AFSR_NODELETENEW           IE4_NODELETENEW | 
 | #define  AFSR_NOMESSAGES            IE4_NOMESSAGES | 
 | #define  AFSR_NOPROGRESS            IE4_NOPROGRESS | 
 | #define  AFSR_UPDREFCNT             IE4_UPDREFCNT | 
 | #define  AFSR_USEREFCNT             IE4_USEREFCNT | 
 | #define  AFSR_EXTRAINCREFCNT        IE4_EXTRAINCREFCNT | 
 |  | 
 | HRESULT WINAPI AddDelBackupEntryA(LPCSTR lpcszFileList, LPCSTR lpcszBackupDir, | 
 |      LPCSTR lpcszBaseName, DWORD dwFlags); | 
 | HRESULT WINAPI AddDelBackupEntryW(LPCWSTR lpcszFileList, LPCWSTR lpcszBackupDir, | 
 |      LPCWSTR lpcszBaseName, DWORD dwFlags); | 
 | #define AddDelBackupEntry WINELIB_NAME_AW(AddDelBackupEntry) | 
 | HRESULT WINAPI AdvInstallFileA(HWND hwnd, LPCSTR lpszSourceDir, | 
 |      LPCSTR lpszSourceFile, LPCSTR lpszDestDir, LPCSTR lpszDestFile, | 
 |      DWORD dwFlags, DWORD dwReserved); | 
 | HRESULT WINAPI AdvInstallFileW(HWND hwnd, LPCWSTR lpszSourceDir, | 
 |      LPCWSTR lpszSourceFile, LPCWSTR lpszDestDir, LPCWSTR lpszDestFile, | 
 |      DWORD dwFlags, DWORD dwReserved); | 
 | #define AdvInstallFile WINELIB_NAME_AW(AdvInstallFile) | 
 | HRESULT WINAPI CloseINFEngine(HINF hInf); | 
 | HRESULT WINAPI DelNodeA(LPCSTR pszFileOrDirName, DWORD dwFlags); | 
 | HRESULT WINAPI DelNodeW(LPCWSTR pszFileOrDirName, DWORD dwFlags); | 
 | #define DelNode WINELIB_NAME_AW(DelNode) | 
 | HRESULT WINAPI DelNodeRunDLL32A(HWND,HINSTANCE,LPSTR,INT); | 
 | HRESULT WINAPI DelNodeRunDLL32W(HWND,HINSTANCE,LPWSTR,INT); | 
 | #define DelNodeRunDLL32 WINELIB_NAME_AW(DelNodeRunDLL32) | 
 | HRESULT WINAPI ExecuteCabA( HWND hwnd, CABINFOA* pCab, LPVOID pReserved ); | 
 | HRESULT WINAPI ExecuteCabW( HWND hwnd, CABINFOW* pCab, LPVOID pReserved ); | 
 | #define ExecuteCab WINELIB_NAME_AW(ExecuteCab) | 
 | HRESULT WINAPI ExtractFilesA(LPCSTR,LPCSTR,DWORD,LPCSTR,LPVOID,DWORD); | 
 | HRESULT WINAPI ExtractFilesW(LPCWSTR,LPCWSTR,DWORD,LPCWSTR,LPVOID,DWORD); | 
 | #define ExtractFiles WINELIB_NAME_AW(ExtractFiles) | 
 | HRESULT WINAPI FileSaveMarkNotExistA(LPSTR pszFileList, LPSTR pszDir, LPSTR pszBaseName); | 
 | HRESULT WINAPI FileSaveMarkNotExistW(LPWSTR pszFileList, LPWSTR pszDir, LPWSTR pszBaseName); | 
 | #define FileSaveMarkNotExist WINELIB_NAME_AW(FileSaveMarkNotExist) | 
 | HRESULT WINAPI FileSaveRestoreA(HWND hDlg, LPSTR pszFileList, LPSTR pszDir, | 
 |      LPSTR pszBaseName, DWORD dwFlags); | 
 | HRESULT WINAPI FileSaveRestoreW(HWND hDlg, LPWSTR pszFileList, LPWSTR pszDir, | 
 |      LPWSTR pszBaseName, DWORD dwFlags); | 
 | #define FileSaveRestore WINELIB_NAME_AW(FileSaveRestore) | 
 | HRESULT WINAPI FileSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF, | 
 |      LPCSTR pszSection, LPCSTR pszBackupDir, LPCSTR pszBaseBackupFile, DWORD dwFlags); | 
 | HRESULT WINAPI FileSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF, | 
 |      LPCWSTR pszSection, LPCWSTR pszBackupDir, LPCWSTR pszBaseBackupFile, DWORD dwFlags); | 
 | #define FileSaveRestoreOnINF WINELIB_NAME_AW(FileSaveRestoreOnINF) | 
 | HRESULT WINAPI GetVersionFromFileA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); | 
 | HRESULT WINAPI GetVersionFromFileW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); | 
 | #define GetVersionFromFile WINELIB_NAME_AW(GetVersionFromFile) | 
 | HRESULT WINAPI GetVersionFromFileExA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); | 
 | HRESULT WINAPI GetVersionFromFileExW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion); | 
 | #define GetVersionFromFileEx WINELIB_NAME_AW(GetVersionFromFileEx) | 
 | BOOL WINAPI IsNTAdmin(DWORD,LPDWORD); | 
 | INT WINAPI LaunchINFSectionA(HWND,HINSTANCE,LPSTR,INT); | 
 | INT WINAPI LaunchINFSectionW(HWND,HINSTANCE,LPWSTR,INT); | 
 | #define LaunchINFSection WINELIB_NAME_AW(LaunchINFSection) | 
 | HRESULT WINAPI LaunchINFSectionExA(HWND,HINSTANCE,LPSTR,INT); | 
 | HRESULT WINAPI LaunchINFSectionExW(HWND,HINSTANCE,LPWSTR,INT); | 
 | #define LaunchINFSectionEx WINELIB_NAME_AW(LaunchINFSectionEx) | 
 | DWORD WINAPI NeedRebootInit(VOID); | 
 | BOOL WINAPI NeedReboot(DWORD dwRebootCheck); | 
 | HRESULT WINAPI OpenINFEngineA(LPCSTR pszInfFilename, LPCSTR pszInstallSection, | 
 |      DWORD dwFlags, HINF *phInf, PVOID pvReserved); | 
 | HRESULT WINAPI OpenINFEngineW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection, | 
 |      DWORD dwFlags, HINF *phInf, PVOID pvReserved); | 
 | #define OpenINFEngine WINELIB_NAME_AW(OpenINFEngine) | 
 | HRESULT WINAPI RebootCheckOnInstallA(HWND hWnd, LPCSTR pszINF, LPCSTR pszSec, DWORD dwReserved); | 
 | HRESULT WINAPI RebootCheckOnInstallW(HWND hWnd, LPCWSTR pszINF, LPCWSTR pszSec, DWORD dwReserved); | 
 | #define RebootCheckOnInstall WINELIB_NAME_AW(RebootCheckOnInstall) | 
 | HRESULT WINAPI RegInstallA(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable); | 
 | HRESULT WINAPI RegInstallW(HMODULE hm, LPCWSTR pszSection, const STRTABLEW* pstTable); | 
 | #define RegInstall WINELIB_NAME_AW(RegInstall) | 
 | HRESULT WINAPI RegRestoreAllA(HWND hWnd, LPSTR pszTitleString, HKEY hkBackupKey); | 
 | HRESULT WINAPI RegRestoreAllW(HWND hWnd, LPWSTR pszTitleString, HKEY hkBackupKey); | 
 | #define RegRestoreAll WINELIB_NAME_AW(RegRestoreAll) | 
 | HRESULT WINAPI RegSaveRestoreA(HWND hWnd, LPCSTR pszTitleString, HKEY hkBackupKey, | 
 |      LPCSTR pcszRootKey, LPCSTR pcszSubKey, LPCSTR pcszValueName, DWORD dwFlags); | 
 | HRESULT WINAPI RegSaveRestoreW(HWND hWnd, LPCWSTR pszTitleString, HKEY hkBackupKey, | 
 |      LPCWSTR pcszRootKey, LPCWSTR pcszSubKey, LPCWSTR pcszValueName, DWORD dwFlags); | 
 | #define RegSaveRestore WINELIB_NAME_AW(RegSaveRestore) | 
 | HRESULT WINAPI RegSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF, | 
 |      LPCSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags); | 
 | HRESULT WINAPI RegSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF, | 
 |      LPCWSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags); | 
 | #define RegSaveRestoreOnINF WINELIB_NAME_AW(RegSaveRestoreOnINF) | 
 | HRESULT WINAPI RunSetupCommandA(HWND hWnd, | 
 |      LPCSTR szCmdName, LPCSTR szInfSection, LPCSTR szDir, LPCSTR lpszTitle, | 
 |      HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved); | 
 | HRESULT WINAPI RunSetupCommandW(HWND hWnd, | 
 |      LPCWSTR szCmdName, LPCWSTR szInfSection, LPCWSTR szDir, LPCWSTR lpszTitle, | 
 |      HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved); | 
 | #define RunSetupCommand WINELIB_NAME_AW(RunSetupCommand) | 
 | HRESULT WINAPI SetPerUserSecValuesA(PERUSERSECTIONA* pPerUser); | 
 | HRESULT WINAPI SetPerUserSecValuesW(PERUSERSECTIONW* pPerUser); | 
 | #define SetPerUserSecValues WINELIB_NAME_AW(SetPerUserSecValues) | 
 | HRESULT WINAPI TranslateInfStringA(LPCSTR pszInfFilename, LPCSTR pszInstallSection, | 
 |      LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer, | 
 |      DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); | 
 | HRESULT WINAPI TranslateInfStringW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection, | 
 |      LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer, | 
 |      DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); | 
 | #define TranslateInfString WINELIB_NAME_AW(TranslateInfString) | 
 | HRESULT WINAPI TranslateInfStringExA(HINF hInf, LPCSTR pszInfFilename, | 
 |     LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer, | 
 |     DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); | 
 | HRESULT WINAPI TranslateInfStringExW(HINF hInf, LPCWSTR pszInfFilename, | 
 |     LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer, | 
 |     DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved); | 
 | #define TranslateInfStringEx WINELIB_NAME_AW(TranslateInfStringEx) | 
 | HRESULT WINAPI UserInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow); | 
 | HRESULT WINAPI UserInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow); | 
 | #define UserInstStubWrapper WINELIB_NAME_AW(UserInstStubWrapper) | 
 | HRESULT WINAPI UserUnInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow); | 
 | HRESULT WINAPI UserUnInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow); | 
 | #define UserUnInstStubWrapper WINELIB_NAME_AW(UserUnInstStubWrapper) | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 |  | 
 | #endif /* __WINE_ADVPUB_H */ |