Reactos
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
25extern "C" {
26#endif
27
28#ifndef S_ASYNCHRONOUS
29#define S_ASYNCHRONOUS _HRESULT_TYPEDEF_(0x401E8L)
30#endif
31
32typedef struct _CabInfoA
33{
34 LPSTR pszCab;
35 LPSTR pszInf;
36 LPSTR pszSection;
37 CHAR szSrcPath[MAX_PATH];
38 DWORD dwFlags;
39} CABINFOA, *PCABINFOA;
40
41typedef struct _CabInfoW
42{
43 LPWSTR pszCab;
44 LPWSTR pszInf;
45 LPWSTR pszSection;
46 WCHAR szSrcPath[MAX_PATH];
47 DWORD dwFlags;
48} CABINFOW, *PCABINFOW;
49
50DECL_WINELIB_TYPE_AW(CABINFO)
51DECL_WINELIB_TYPE_AW(PCABINFO)
52
53typedef 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
65typedef 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
77DECL_WINELIB_TYPE_AW(PERUSERSECTION)
78DECL_WINELIB_TYPE_AW(PPERUSERSECTION)
79
80typedef struct _StrEntryA
81{
82 LPSTR pszName;
83 LPSTR pszValue;
84} STRENTRYA, *LPSTRENTRYA;
85
86typedef struct _StrEntryW
87{
88 LPWSTR pszName;
89 LPWSTR pszValue;
90} STRENTRYW, *LPSTRENTRYW;
91
92DECL_WINELIB_TYPE_AW(STRENTRY)
93DECL_WINELIB_TYPE_AW(LPSTRENTRY)
94
95typedef struct _StrTableA
96{
97 DWORD cEntries;
98 STRENTRYA* pse;
99} STRTABLEA, *LPSTRTABLEA;
100typedef const STRTABLEA CSTRTABLEA, *LPCSTRTABLEA;
101
102typedef struct _StrTableW
103{
104 DWORD cEntries;
105 STRENTRYW* pse;
106} STRTABLEW, *LPSTRTABLEW;
107typedef const STRTABLEW CSTRTABLEW, *LPCSTRTABLEW;
108
109DECL_WINELIB_TYPE_AW(STRTABLE)
110DECL_WINELIB_TYPE_AW(CSTRTABLE)
111DECL_WINELIB_TYPE_AW(LPSTRTABLE)
112DECL_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
172HRESULT WINAPI AddDelBackupEntryA(LPCSTR lpcszFileList, LPCSTR lpcszBackupDir,
173 LPCSTR lpcszBaseName, DWORD dwFlags);
174HRESULT WINAPI AddDelBackupEntryW(LPCWSTR lpcszFileList, LPCWSTR lpcszBackupDir,
175 LPCWSTR lpcszBaseName, DWORD dwFlags);
176#define AddDelBackupEntry WINELIB_NAME_AW(AddDelBackupEntry)
177HRESULT WINAPI AdvInstallFileA(HWND hwnd, LPCSTR lpszSourceDir,
178 LPCSTR lpszSourceFile, LPCSTR lpszDestDir, LPCSTR lpszDestFile,
179 DWORD dwFlags, DWORD dwReserved);
180HRESULT 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)
184HRESULT WINAPI CloseINFEngine(HINF hInf);
185HRESULT WINAPI DelNodeA(LPCSTR pszFileOrDirName, DWORD dwFlags);
186HRESULT WINAPI DelNodeW(LPCWSTR pszFileOrDirName, DWORD dwFlags);
187#define DelNode WINELIB_NAME_AW(DelNode)
188HRESULT WINAPI DelNodeRunDLL32A(HWND,HINSTANCE,LPSTR,INT);
189HRESULT WINAPI DelNodeRunDLL32W(HWND,HINSTANCE,LPWSTR,INT);
190#define DelNodeRunDLL32 WINELIB_NAME_AW(DelNodeRunDLL32)
191HRESULT WINAPI ExecuteCabA( HWND hwnd, CABINFOA* pCab, LPVOID pReserved );
192HRESULT WINAPI ExecuteCabW( HWND hwnd, CABINFOW* pCab, LPVOID pReserved );
193#define ExecuteCab WINELIB_NAME_AW(ExecuteCab)
194HRESULT WINAPI ExtractFilesA(LPCSTR,LPCSTR,DWORD,LPCSTR,LPVOID,DWORD);
195HRESULT WINAPI ExtractFilesW(LPCWSTR,LPCWSTR,DWORD,LPCWSTR,LPVOID,DWORD);
196#define ExtractFiles WINELIB_NAME_AW(ExtractFiles)
197
198HRESULT
199WINAPI
200FileSaveMarkNotExistA(
201 _In_opt_ LPSTR pszFileList,
202 _In_opt_ LPSTR pszDir,
203 _In_opt_ LPSTR pszBaseName);
204
205HRESULT
206WINAPI
207FileSaveMarkNotExistW(
208 _In_opt_ LPWSTR pszFileList,
209 _In_opt_ LPWSTR pszDir,
210 _In_opt_ LPWSTR pszBaseName);
211
212#define FileSaveMarkNotExist WINELIB_NAME_AW(FileSaveMarkNotExist)
213
214HRESULT WINAPI FileSaveRestoreA(HWND hDlg, LPSTR pszFileList, LPSTR pszDir,
215 LPSTR pszBaseName, DWORD dwFlags);
216HRESULT WINAPI FileSaveRestoreW(HWND hDlg, LPWSTR pszFileList, LPWSTR pszDir,
217 LPWSTR pszBaseName, DWORD dwFlags);
218#define FileSaveRestore WINELIB_NAME_AW(FileSaveRestore)
219HRESULT WINAPI FileSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF,
220 LPCSTR pszSection, LPCSTR pszBackupDir, LPCSTR pszBaseBackupFile, DWORD dwFlags);
221HRESULT WINAPI FileSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF,
222 LPCWSTR pszSection, LPCWSTR pszBackupDir, LPCWSTR pszBaseBackupFile, DWORD dwFlags);
223#define FileSaveRestoreOnINF WINELIB_NAME_AW(FileSaveRestoreOnINF)
224HRESULT WINAPI GetVersionFromFileA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
225HRESULT WINAPI GetVersionFromFileW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
226#define GetVersionFromFile WINELIB_NAME_AW(GetVersionFromFile)
227HRESULT WINAPI GetVersionFromFileExA(LPCSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
228HRESULT WINAPI GetVersionFromFileExW(LPCWSTR lpszFilename, LPDWORD pdwMSVer, LPDWORD pdwLSVer, BOOL bVersion);
229#define GetVersionFromFileEx WINELIB_NAME_AW(GetVersionFromFileEx)
230BOOL WINAPI IsNTAdmin(DWORD,LPDWORD);
231INT WINAPI LaunchINFSectionA(HWND,HINSTANCE,LPSTR,INT);
232INT WINAPI LaunchINFSectionW(HWND,HINSTANCE,LPWSTR,INT);
233#define LaunchINFSection WINELIB_NAME_AW(LaunchINFSection)
234
235HRESULT
236WINAPI
237LaunchINFSectionExA(
238 _In_opt_ HWND,
239 _In_opt_ HINSTANCE,
240 _In_ LPSTR,
241 _In_ INT);
242
243HRESULT
244WINAPI
245LaunchINFSectionExW(
246 _In_opt_ HWND,
247 _In_opt_ HINSTANCE,
248 _In_ LPWSTR,
249 _In_ INT);
250
251#define LaunchINFSectionEx WINELIB_NAME_AW(LaunchINFSectionEx)
252
253DWORD WINAPI NeedRebootInit(VOID);
254BOOL WINAPI NeedReboot(DWORD dwRebootCheck);
255HRESULT WINAPI OpenINFEngineA(LPCSTR pszInfFilename, LPCSTR pszInstallSection,
256 DWORD dwFlags, HINF *phInf, PVOID pvReserved);
257HRESULT WINAPI OpenINFEngineW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection,
258 DWORD dwFlags, HINF *phInf, PVOID pvReserved);
259#define OpenINFEngine WINELIB_NAME_AW(OpenINFEngine)
260HRESULT WINAPI RebootCheckOnInstallA(HWND hWnd, LPCSTR pszINF, LPCSTR pszSec, DWORD dwReserved);
261HRESULT WINAPI RebootCheckOnInstallW(HWND hWnd, LPCWSTR pszINF, LPCWSTR pszSec, DWORD dwReserved);
262#define RebootCheckOnInstall WINELIB_NAME_AW(RebootCheckOnInstall)
263HRESULT WINAPI RegInstallA(HMODULE hm, LPCSTR pszSection, const STRTABLEA* pstTable);
264HRESULT WINAPI RegInstallW(HMODULE hm, LPCWSTR pszSection, const STRTABLEW* pstTable);
265#define RegInstall WINELIB_NAME_AW(RegInstall)
266
267HRESULT
268WINAPI
269RegRestoreAllA(
270 _In_opt_ HWND hWnd,
271 _In_opt_ LPSTR pszTitleString,
272 _In_ HKEY hkBackupKey);
273
274HRESULT
275WINAPI
276RegRestoreAllW(
277 _In_opt_ HWND hWnd,
278 _In_opt_ LPWSTR pszTitleString,
279 _In_ HKEY hkBackupKey);
280
281#define RegRestoreAll WINELIB_NAME_AW(RegRestoreAll)
282
283HRESULT WINAPI RegSaveRestoreA(HWND hWnd, LPCSTR pszTitleString, HKEY hkBackupKey,
284 LPCSTR pcszRootKey, LPCSTR pcszSubKey, LPCSTR pcszValueName, DWORD dwFlags);
285HRESULT WINAPI RegSaveRestoreW(HWND hWnd, LPCWSTR pszTitleString, HKEY hkBackupKey,
286 LPCWSTR pcszRootKey, LPCWSTR pcszSubKey, LPCWSTR pcszValueName, DWORD dwFlags);
287#define RegSaveRestore WINELIB_NAME_AW(RegSaveRestore)
288HRESULT WINAPI RegSaveRestoreOnINFA(HWND hWnd, LPCSTR pszTitle, LPCSTR pszINF,
289 LPCSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags);
290HRESULT WINAPI RegSaveRestoreOnINFW(HWND hWnd, LPCWSTR pszTitle, LPCWSTR pszINF,
291 LPCWSTR pszSection, HKEY hHKLMBackKey, HKEY hHKCUBackKey, DWORD dwFlags);
292#define RegSaveRestoreOnINF WINELIB_NAME_AW(RegSaveRestoreOnINF)
293HRESULT WINAPI RunSetupCommandA(HWND hWnd,
294 LPCSTR szCmdName, LPCSTR szInfSection, LPCSTR szDir, LPCSTR lpszTitle,
295 HANDLE *phEXE, DWORD dwFlags, LPVOID pvReserved);
296HRESULT 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)
300HRESULT WINAPI SetPerUserSecValuesA(PERUSERSECTIONA* pPerUser);
301HRESULT WINAPI SetPerUserSecValuesW(PERUSERSECTIONW* pPerUser);
302#define SetPerUserSecValues WINELIB_NAME_AW(SetPerUserSecValues)
303
304HRESULT
305WINAPI
306TranslateInfStringA(
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
316HRESULT
317WINAPI
318TranslateInfStringW(
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)
329HRESULT WINAPI TranslateInfStringExA(HINF hInf, LPCSTR pszInfFilename,
330 LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer,
331 DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved);
332HRESULT 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)
336HRESULT WINAPI UserInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow);
337HRESULT WINAPI UserInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow);
338#define UserInstStubWrapper WINELIB_NAME_AW(UserInstStubWrapper)
339HRESULT WINAPI UserUnInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow);
340HRESULT 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 */