xref: /reactos/sdk/include/psdk/advpub.h (revision c2c66aff)
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