- Stub routines for _164, _208, _210, _211, _239, _356, _413, _437,
[wine] / include / shlwapi.h
1 #ifndef __WINE_SHLWAPI_H
2 #define __WINE_SHLWAPI_H
3
4 #include "objbase.h"
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif /* defined(__cplusplus) */
9
10
11 /* Mask returned by GetPathCharType */
12 #define GCT_INVALID     0x0000
13 #define GCT_LFNCHAR     0x0001
14 #define GCT_SHORTCHAR   0x0002
15 #define GCT_WILD        0x0004
16 #define GCT_SEPARATOR   0x0008
17
18
19 /* These are used by UrlGetPart routine */
20 typedef enum {
21     URL_PART_NONE    = 0,
22     URL_PART_SCHEME  = 1,
23     URL_PART_HOSTNAME,
24     URL_PART_USERNAME,
25     URL_PART_PASSWORD,
26     URL_PART_PORT,
27     URL_PART_QUERY,
28 } URL_PART;
29 #define URL_PARTFLAG_KEEPSCHEME  0x00000001
30
31 /* These are used by the UrlIs... routines */
32 typedef enum {
33     URLIS_URL,
34     URLIS_OPAQUE,
35     URLIS_NOHISTORY,
36     URLIS_FILEURL,
37     URLIS_APPLIABLE,
38     URLIS_DIRECTORY,
39     URLIS_HASQUERY,
40 } URLIS;
41
42 /* This is used by the UrlApplyScheme... routines */
43 #define URL_APPLY_FORCEAPPLY         0x00000008
44 #define URL_APPLY_GUESSFILE          0x00000004
45 #define URL_APPLY_GUESSSCHEME        0x00000002
46 #define URL_APPLY_DEFAULT            0x00000001
47
48 /* This is used by shlwapi ordinal.1 & .2 */
49 typedef enum {
50     URL_SCHEME_INVALID     = -1,
51     URL_SCHEME_UNKNOWN     =  0,
52     URL_SCHEME_FTP,
53     URL_SCHEME_HTTP,
54     URL_SCHEME_GOPHER,
55     URL_SCHEME_MAILTO,
56     URL_SCHEME_NEWS,
57     URL_SCHEME_NNTP,
58     URL_SCHEME_TELNET,
59     URL_SCHEME_WAIS,
60     URL_SCHEME_FILE,
61     URL_SCHEME_MK,
62     URL_SCHEME_HTTPS,
63     URL_SCHEME_SHELL,
64     URL_SCHEME_SNEWS,
65     URL_SCHEME_LOCAL,
66     URL_SCHEME_JAVASCRIPT,
67     URL_SCHEME_VBSCRIPT,
68     URL_SCHEME_ABOUT,
69     URL_SCHEME_RES,
70     URL_SCHEME_MAXVALUE
71 } URL_SCHEME;
72
73 /* The following are used by UrlEscape..., UrlUnEscape...,
74  * UrlCanonicalize..., and UrlCombine... routines
75  */
76 #define URL_WININET_COMPATIBILITY    0x80000000
77 #define URL_PLUGGABLE_PROTOCOL       0x40000000
78 #define URL_ESCAPE_UNSAFE            0x20000000
79 #define URL_UNESCAPE                 0x10000000
80
81 #define URL_DONT_SIMPLIFY            0x08000000
82 #define URL_NO_META                  URL_DONT_SIMPLIFY
83 #define URL_ESCAPE_SPACES_ONLY       0x04000000
84 #define URL_DONT_ESCAPE_EXTRA_INFO   0x02000000
85 #define URL_DONT_UNESCAPE_EXTRA_INFO URL_DONT_ESCAPE_EXTRA_INFO
86 #define URL_BROWSER_MODE             URL_DONT_ESCAPE_EXTRA_INFO
87
88 #define URL_INTERNAL_PATH            0x00800000  /* Will escape #'s in paths */
89 #define URL_UNESCAPE_HIGH_ANSI_ONLY  0x00400000
90 #define URL_CONVERT_IF_DOSPATH       0x00200000
91 #define URL_UNESCAPE_INPLACE         0x00100000
92
93 #define URL_FILE_USE_PATHURL         0x00010000
94
95 #define URL_ESCAPE_SEGMENT_ONLY      0x00002000
96 #define URL_ESCAPE_PERCENT           0x00001000
97
98 LPSTR  WINAPI PathAddBackslashA(LPSTR path);    
99 LPWSTR WINAPI PathAddBackslashW(LPWSTR path);   
100 #define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
101
102 BOOL WINAPI PathAddExtensionA(LPSTR pszPath, LPCSTR pszExt);
103 BOOL WINAPI PathAddExtensionW(LPWSTR pszPath, LPCWSTR pszExt);
104 #define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
105
106 BOOL WINAPI PathAppendA(LPSTR lpszPath1,LPCSTR lpszPath2);
107 BOOL WINAPI PathAppendW(LPWSTR lpszPath1,LPCWSTR lpszPath2);
108 #define PathAppend WINELIB_NAME_AW(PathAppend)
109
110 LPSTR WINAPI PathBuildRootA(LPSTR lpszPath, int drive);
111 LPWSTR WINAPI PathBuildRootW(LPWSTR lpszPath, int drive);
112 #define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
113
114 BOOL WINAPI PathCanonicalizeA(LPSTR lpszDst, LPCSTR lpszSrc);
115 BOOL WINAPI PathCanonicalizeW(LPWSTR lpszDst, LPCWSTR lpszSrc);
116 #define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
117
118 LPSTR  WINAPI PathCombineA(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
119 LPWSTR WINAPI PathCombineW(LPWSTR szDest, LPCWSTR lpszDir, LPCWSTR lpszFile);
120 #define PathCombine WINELIB_NAME_AW(PathCombine)
121
122 BOOL WINAPI PathFileExistsA(LPCSTR lpszPath);
123 BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath);
124 #define PathFileExists WINELIB_NAME_AW(PathFileExists)
125
126 LPSTR WINAPI PathFindExtensionA(LPCSTR path);
127 LPWSTR WINAPI PathFindExtensionW(LPCWSTR path);
128 #define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
129
130 LPSTR WINAPI PathFindFileNameA(LPCSTR pPath);
131 LPWSTR WINAPI PathFindFileNameW(LPCWSTR pPath);
132 #define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
133
134 LPSTR WINAPI PathFindNextComponentA(LPCSTR pszPath);
135 LPWSTR WINAPI PathFindNextComponentW(LPCWSTR pszPath);
136 #define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
137
138 BOOL WINAPI PathFindOnPathA(LPSTR sFile, LPCSTR sOtherDirs);
139 BOOL WINAPI PathFindOnPathW(LPWSTR sFile, LPCWSTR sOtherDirs);
140 #define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
141
142 LPSTR WINAPI PathGetArgsA(LPCSTR lpszPath);
143 LPWSTR WINAPI PathGetArgsW(LPCWSTR lpszPath);
144 #define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
145
146 int WINAPI PathGetDriveNumberA(LPCSTR lpszPath);
147 int WINAPI PathGetDriveNumberW(LPCWSTR lpszPath);
148 #define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
149
150 BOOL WINAPI PathIsDirectoryA(LPCSTR lpszPath);
151 BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath);
152 #define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
153
154 BOOL WINAPI PathIsRelativeA(LPCSTR lpszPath);
155 BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath);
156 #define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
157
158 BOOL WINAPI PathIsRootA(LPCSTR x);
159 BOOL WINAPI PathIsRootW(LPCWSTR x);
160 #define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
161
162 BOOL WINAPI PathIsSameRootA(LPCSTR lpszPath1, LPCSTR lpszPath2);
163 BOOL WINAPI PathIsSameRootW(LPCWSTR lpszPath1, LPCWSTR lpszPath2);
164 #define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
165
166 BOOL WINAPI PathIsUNCA(LPCSTR lpszPath);
167 BOOL WINAPI PathIsUNCW(LPCWSTR lpszPath);
168 #define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
169
170 BOOL WINAPI PathIsURLA(LPCSTR pszPath);
171 BOOL WINAPI PathIsURLW(LPCWSTR pszPath);
172 #define PathIsURL WINELIB_NAME_AW(PathIsURL)
173
174 BOOL WINAPI PathMatchSpecA(LPCSTR lpszPath, LPCSTR lpszSpec);
175 BOOL WINAPI PathMatchSpecW(LPCWSTR lpszPath, LPCWSTR lpszSpec);
176 #define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
177
178 int WINAPI PathParseIconLocationA(LPSTR lpszPath);
179 int WINAPI PathParseIconLocationW(LPWSTR lpszPath);
180 #define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
181
182 LPSTR  WINAPI PathQuoteSpacesA(LPSTR path);     
183 LPWSTR WINAPI PathQuoteSpacesW(LPWSTR path);    
184 #define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
185
186 void WINAPI PathRemoveArgsA(LPSTR lpszPath);
187 void WINAPI PathRemoveArgsW(LPWSTR lpszPath);
188 #define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
189
190 LPSTR WINAPI PathRemoveBackslashA(LPSTR lpszPath);
191 LPWSTR WINAPI PathRemoveBackslashW(LPWSTR lpszPath);
192 #define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
193
194 void WINAPI PathRemoveBlanksA(LPSTR lpszPath);
195 void WINAPI PathRemoveBlanksW(LPWSTR lpszPath);
196 #define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
197
198 void WINAPI PathRemoveExtensionA(LPSTR lpszPath);
199 void WINAPI PathRemoveExtensionW(LPWSTR lpszPath);
200 #define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
201
202 BOOL WINAPI PathRemoveFileSpecA(LPSTR lpszPath);
203 BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath);
204 #define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
205
206 BOOL WINAPI PathRenameExtensionA(LPSTR pszPath, LPCSTR pszExt);
207 BOOL WINAPI PathRenameExtensionW(LPWSTR pszPath, LPCWSTR pszExt);
208 #define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension)
209
210 BOOL WINAPI PathSetDlgItemPathA(HWND hDlg, int id, LPCSTR pszPath);
211 BOOL WINAPI PathSetDlgItemPathW(HWND hDlg, int id, LPCWSTR pszPath);
212 #define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
213
214 void WINAPI PathStripPathA(LPSTR lpszPath);
215 void WINAPI PathStripPathW(LPWSTR lpszPath);
216 #define PathStripPath WINELIB_NAME_AW(PathStripPath)
217
218 BOOL WINAPI PathStripToRootA(LPSTR pszPath);
219 BOOL WINAPI PathStripToRootW(LPWSTR pszPath);
220 #define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
221
222 void WINAPI PathUnquoteSpacesA(LPSTR str);
223 void WINAPI PathUnquoteSpacesW(LPWSTR str);
224 #define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
225
226
227 BOOL WINAPI ChrCmpIA (WORD w1, WORD w2);
228 BOOL WINAPI ChrCmpIW (WCHAR w1, WCHAR w2);
229 #define ChrCmpI WINELIB_NAME_AW(ChrCmpI)
230
231 INT WINAPI StrCSpnA(LPCSTR lpStr, LPCSTR lpSet);
232 INT WINAPI StrCSpnW(LPCWSTR lpStr, LPCWSTR lpSet);
233 #define StrCSpn WINELIB_NAME_AW(StrCSpn)
234
235 INT WINAPI StrCSpnIA(LPCSTR lpStr, LPCSTR lpSet);
236 INT WINAPI StrCSpnIW(LPCWSTR lpStr, LPCWSTR lpSet);
237 #define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
238
239 #define StrCatA lstrcatA
240 LPWSTR WINAPI StrCatW(LPWSTR front, LPCWSTR back);
241 #define StrCat WINELIB_NAME_AW(StrCat)
242
243 LPSTR WINAPI StrCatBuffA(LPSTR front, LPCSTR back, INT size);
244 LPWSTR WINAPI StrCatBuffW(LPWSTR front, LPCWSTR back, INT size);
245 #define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
246
247 LPSTR WINAPI StrChrA(LPCSTR lpStart, WORD wMatch);
248 LPWSTR WINAPI StrChrW(LPCWSTR lpStart, WCHAR wMatch); 
249 #define StrChr WINELIB_NAME_AW(StrChr)
250
251 LPSTR WINAPI StrChrIA(LPCSTR lpStart, WORD wMatch);
252 LPWSTR WINAPI StrChrIW(LPCWSTR lpStart, WCHAR wMatch); 
253 #define StrChrI WINELIB_NAME_AW(StrChrI)
254
255 INT WINAPI StrCmpIW(LPCWSTR lpStr1, LPCWSTR lpStr2);
256
257 INT WINAPI StrCmpNA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar);
258 INT WINAPI StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar);
259 #define StrCmpN WINELIB_NAME_AW(StrCmpN)
260
261 INT WINAPI StrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar);
262 INT WINAPI StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar);
263 #define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
264
265 INT WINAPI StrCmpW(LPCWSTR lpStr1, LPCWSTR lpStr2);
266
267 LPWSTR WINAPI StrCpyW(LPWSTR lpStr1, LPCWSTR lpStr2);
268
269 LPWSTR WINAPI StrCpyNW(LPWSTR lpStr1, LPCWSTR lpStr2, int n);
270
271 LPSTR WINAPI StrDupA(LPCSTR lpSrc);
272 LPWSTR WINAPI StrDupW(LPCWSTR lpSrc);
273 #define StrDup WINELIB_NAME_AW(StrDup)
274
275 LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf );
276 LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf );
277 #define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize)
278
279 LPSTR WINAPI StrNCatA(LPSTR front, LPCSTR back, INT cchMax);
280 LPWSTR WINAPI StrNCatW(LPWSTR front, LPCWSTR back, INT cchMax);
281 #define StrNCat WINELIB_NAME_AW(StrNCat)
282
283 LPSTR WINAPI StrRChrA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch);
284 LPWSTR WINAPI StrRChrW(LPCWSTR lpStart, LPCWSTR lpEnd, WCHAR wMatch); 
285 #define StrRChr WINELIB_NAME_AW(StrRChr)
286
287 LPSTR WINAPI StrRChrIA(LPCSTR lpStart, LPCSTR lpEnd, WORD wMatch);
288 LPWSTR WINAPI StrRChrIW(LPCWSTR lpStart, LPCWSTR lpEnd, WCHAR wMatch); 
289 #define StrRChrI WINELIB_NAME_AW(StrRChrI)
290
291 LPSTR WINAPI StrStrA(LPCSTR lpFirst, LPCSTR lpSrch);
292 LPWSTR WINAPI StrStrW(LPCWSTR lpFirst, LPCWSTR lpSrch);
293 #define StrStr WINELIB_NAME_AW(StrStr)
294
295 LPSTR WINAPI StrStrIA(LPCSTR lpFirst, LPCSTR lpSrch);
296 LPWSTR WINAPI StrStrIW(LPCWSTR lpFirst, LPCWSTR lpSrch);
297 #define StrStrI WINELIB_NAME_AW(StrStrI)
298
299 int WINAPI StrToIntA(LPCSTR lpSrc);
300 int WINAPI StrToIntW(LPCWSTR lpSrc);
301 #define StrToInt WINELIB_NAME_AW(StrToInt)
302
303 int WINAPI StrToIntExA(LPCSTR lpSrc, DWORD dwFlags, LPINT piRet);
304 int WINAPI StrToIntExW(LPCWSTR lpSrc, DWORD dwFlags, LPINT piRet);
305 #define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
306
307 BOOL WINAPI StrTrimA(LPSTR pszSrc, LPCSTR pszTrimChars);
308 BOOL WINAPI StrTrimW(LPWSTR pszSrc, LPCWSTR pszTrimChars);
309 #define StrTrim WINELIB_NAME_AW(StrTrim)
310
311 INT WINAPI wvnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, va_list arglist);
312 INT WINAPI wvnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, va_list arglist);
313 #define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
314
315 INT WINAPIV wnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, ...);
316 INT WINAPIV wnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, ...);
317 #define wnsprintf WINELIB_NAME_AW(wnsprintf)
318
319
320 struct _STRRET;
321 struct _ITEMIDLIST;
322 HRESULT WINAPI StrRetToBufA(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPSTR dest, DWORD len);
323 HRESULT WINAPI StrRetToBufW(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPWSTR dest, DWORD len);
324 #define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
325
326
327 /* Shell Registry interfaces */
328
329 HRESULT WINAPI SHQueryValueExA(HKEY hkey, LPSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);
330 HRESULT WINAPI SHQueryValueExW(HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved, LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData);
331 #define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx)
332
333 HRESULT WINAPI SHDeleteKeyA(HKEY hKey, LPCSTR lpszSubKey);
334 HRESULT WINAPI SHDeleteKeyW(HKEY hkey, LPCWSTR pszSubKey);
335 #define  SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
336
337 HRESULT WINAPI SHDeleteValueA(HKEY hKey, LPCSTR lpszSubKey, LPCSTR pszValue);
338 HRESULT WINAPI SHDeleteValueW(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszValue);
339 #define  SHDeleteValue WINELIB_NAME_AW(SHDeleteValue)
340
341 DWORD WINAPI SHDeleteEmptyKeyA(HKEY hKey, LPCSTR lpszSubKey);
342 DWORD WINAPI SHDeleteEmptyKeyW(HKEY hKey, LPCWSTR lpszSubKey);
343 #define  SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
344
345 HKEY WINAPI SHRegDuplicateHKey(HKEY hKey);
346
347 DWORD WINAPI SHRegGetPathA(HKEY hKey, LPCSTR pcszSubKey,
348                            LPCSTR pcszValue, LPSTR pszPath, DWORD dwFlags);
349 DWORD WINAPI SHRegGetPathW(HKEY hKey, LPCWSTR pcszSubKey,
350                            LPCWSTR pcszValue, LPWSTR pszPath, DWORD dwFlags);
351 #define  SHRegGetPath WINELIB_NAME_AW(SHRegGetPath)
352
353 DWORD WINAPI SHGetValueA(HKEY hKey, LPCSTR pSubKey, LPCSTR pValue,
354                          LPDWORD pwType, LPVOID pvData, LPDWORD pbData);
355 DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR pSubKey, LPCWSTR pValue,
356                          LPDWORD pwType, LPVOID pvData, LPDWORD pbData);
357 #define  SHGetValue WINELIB_NAME_AW(SHGetValue)
358
359 HRESULT WINAPI SHSetValueA(HKEY hKey, LPCSTR pszSubKey, LPCSTR pszValue,
360                          DWORD dwType, LPCVOID pvData, DWORD cbData);
361 HRESULT WINAPI SHSetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue,
362                          DWORD dwType, LPCVOID pvData, DWORD cbData);
363 #define  SHSetValue WINELIB_NAME_AW(SHSetValue)
364
365
366
367 typedef HANDLE HUSKEY;
368 typedef HUSKEY *PHUSKEY;
369
370 typedef enum {
371     SHREGDEL_DEFAULT = 0,   /* delete HKCU if found or HKLM if not */
372     SHREGDEL_HKCU = 0x01,   /* delete HKCU */
373     SHREGDEL_HKLM = 0x10,   /* delete HKLM */
374     SHREGDEL_BOTH = 0x11,   /* delete HKCU *and* HKLM */
375 } SHREGDEL_FLAGS; 
376
377 typedef enum {
378     SHREGENUM_DEFAULT = 0,  /* do HKCU or HKLM if not found */
379     SHREGENUM_HKCU = 0x01,  /* do HKCU only  */
380     SHREGENUM_HKLM = 0x10,  /* do HKLM only  */
381     SHREGENUM_BOTH = 0x11,  /* do both HKCU and HKLM without dups */
382 } SHREGENUM_FLAGS; 
383
384 #define SHREGSET_HKCU        0x00000001  /* Write to HKCU if empty */
385 #define SHREGSET_FORCE_HKCU  0x00000002  /* Write to HKCU          */
386 #define SHREGSET_HKLM        0x00000004  /* Write to HKLM if empty */
387 #define SHREGSET_FORCE_HKLM  0x00000008  /* Write to HKLM          */
388 #define SHREGSET_DEFAULT  (SHREGSET_FORCE_HKCU | SHREGSET_HKLM)
389
390 /* Shell User Key Registry interfaces */
391
392 LONG  WINAPI SHRegOpenUSKeyA(LPCSTR Path, REGSAM AccessType, 
393                              HUSKEY hRelativeUSKey, PHUSKEY phNewUSKey,
394                              BOOL fIgnoreHKCU);
395 LONG  WINAPI SHRegOpenUSKeyW(LPCWSTR Path, REGSAM AccessType, 
396                              HUSKEY hRelativeUSKey, PHUSKEY phNewUSKey,
397                              BOOL fIgnoreHKCU);
398 #define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey)
399
400 LONG  WINAPI SHRegCloseUSKey(HUSKEY hUSKey);
401
402 LONG  WINAPI SHRegGetUSValueA(LPCSTR pszSubKey, LPCSTR pszValue, 
403                               LPDWORD pdwType, LPVOID pvData,
404                               LPDWORD pcbData, BOOL fIgnoreHKCU,
405                               LPVOID pvDefaultData, DWORD dwDefaultDataSize);
406 LONG  WINAPI SHRegGetUSValueW(LPCWSTR pszSubKey, LPCWSTR pszValue, 
407                               LPDWORD pdwType, LPVOID pvData,
408                               LPDWORD pcbData, BOOL fIgnoreHKCU, 
409                               LPVOID pvDefaultData, DWORD dwDefaultDataSize);
410 #define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue)
411
412 BOOL  WINAPI SHRegGetBoolUSValueA(LPCSTR pszSubKey, LPCSTR pszValue, 
413                                   BOOL fIgnoreHKCU, BOOL fDefault);
414 BOOL  WINAPI SHRegGetBoolUSValueW(LPCWSTR pszSubKey, LPCWSTR pszValue, 
415                                   BOOL fIgnoreHKCU, BOOL fDefault);
416 #define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue)
417
418 LONG  WINAPI SHRegQueryUSValueA(HUSKEY hUSKey, LPCSTR pszValue, 
419                                 LPDWORD pdwType, LPVOID pvData,
420                                 LPDWORD pcbData, BOOL fIgnoreHKCU, 
421                                 LPVOID pvDefaultData, DWORD dwDefaultDataSize);
422 LONG  WINAPI SHRegQueryUSValueW(HUSKEY hUSKey, LPCWSTR pszValue, 
423                                 LPDWORD pdwType, LPVOID pvData,
424                                 LPDWORD pcbData, BOOL fIgnoreHKCU, 
425                                 LPVOID pvDefaultData, DWORD dwDefaultDataSize);
426 #define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue)
427
428 DWORD  WINAPI SHRegQueryInfoUSKeyA(HUSKEY hUSKey, LPDWORD pcSubKeys,
429                                   LPDWORD pcchMaxSubKeyLen,
430                                   LPDWORD pcValues,
431                                   LPDWORD pcchMaxValueNameLen,
432                                   SHREGENUM_FLAGS enumRegFlags);
433 DWORD  WINAPI SHRegQueryInfoUSKeyW(HUSKEY hUSKey, LPDWORD pcSubKeys,
434                                   LPDWORD pcchMaxSubKeyLen,
435                                   LPDWORD pcValues,
436                                   LPDWORD pcchMaxValueNameLen,
437                                   SHREGENUM_FLAGS enumRegFlags);
438 #define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey)
439
440 LONG  WINAPI SHRegEnumUSKeyA(HUSKEY hUSKey, DWORD dwIndex, LPSTR pszName,
441                              LPDWORD pcchValueNameLen,
442                              SHREGENUM_FLAGS enumRegFlags);
443 LONG  WINAPI SHRegEnumUSKeyW(HUSKEY hUSKey, DWORD dwIndex, LPWSTR pszName,
444                              LPDWORD pcchValueNameLen,
445                              SHREGENUM_FLAGS enumRegFlags);
446 #define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey)
447
448 LONG  WINAPI SHRegWriteUSValueA(HUSKEY hUSKey, LPCSTR pszValue, DWORD dwType,
449                                 LPVOID pvData, DWORD cbData, DWORD dwFlags);
450 LONG  WINAPI SHRegWriteUSValueW(HUSKEY hUSKey, LPCWSTR pszValue, DWORD dwType,
451                                 LPVOID pvData, DWORD cbData, DWORD dwFlags);
452 #define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue)
453
454 /* Shell URL interfaces */
455
456 HRESULT WINAPI UrlApplySchemeA(LPCSTR pszIn, LPSTR pszOut, 
457                                LPDWORD pcchOut, DWORD dwFlags);
458 HRESULT WINAPI UrlApplySchemeW(LPCWSTR pszIn, LPWSTR pszOut, 
459                                LPDWORD pcchOut, DWORD dwFlags);
460 #define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme)
461
462 HRESULT WINAPI UrlCanonicalizeA(LPCSTR pszUrl, LPSTR pszCanonicalized, 
463                                 LPDWORD pcchCanonicalized, DWORD dwFlags);
464 HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized, 
465                                 LPDWORD pcchCanonicalized, DWORD dwFlags);
466 #define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
467
468 HRESULT WINAPI UrlCombineA(LPCSTR pszBase, LPCSTR pszRelative,
469                            LPSTR pszCombined, LPDWORD pcchCombined,
470                            DWORD dwFlags);
471 HRESULT WINAPI UrlCombineW(LPCWSTR pszBase, LPCWSTR pszRelative,
472                            LPWSTR pszCombined, LPDWORD pcchCombined,
473                            DWORD dwFlags);
474 #define UrlCombine WINELIB_NAME_AW(UrlCombine)
475
476 INT WINAPI UrlCompareA(LPCSTR pszUrl1, LPCSTR pszUrl2, BOOL fIgnoreSlash);
477 INT WINAPI UrlCompareW(LPCWSTR pszUrl1, LPCWSTR pszUrl2, BOOL fIgnoreSlash);
478 #define UrlCompare WINELIB_NAME_AW(UrlCompare)
479
480 HRESULT WINAPI UrlEscapeA(LPCSTR pszUrl, LPSTR pszEscaped, LPDWORD pcchEscaped,
481                           DWORD dwFlags);
482 HRESULT WINAPI UrlEscapeW(LPCWSTR pszUrl, LPWSTR pszEscaped,
483                           LPDWORD pcchEscaped, DWORD dwFlags);
484 #define UrlEscape WINELIB_NAME_AW(UrlEscape)
485
486 LPCSTR  WINAPI UrlGetLocationA(LPCSTR pszUrl);
487 LPCWSTR WINAPI UrlGetLocationW(LPCWSTR pszUrl);
488 #define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
489
490 HRESULT WINAPI UrlGetPartA(LPCSTR pszIn, LPSTR pszOut, LPDWORD pcchOut, 
491                            DWORD dwPart, DWORD dwFlags);
492 HRESULT WINAPI UrlGetPartW(LPCWSTR pszIn, LPWSTR pszOut, LPDWORD pcchOut, 
493                            DWORD dwPart, DWORD dwFlags);
494 #define UrlGetPart WINELIB_NAME_AW(UrlGetPart)
495
496 BOOL    WINAPI HashData(const unsigned char *lpSrc, INT nSrcLen,
497                         unsigned char *lpDest, INT nDestLen);
498 HRESULT WINAPI UrlHashA(LPCSTR pszUrl, unsigned char *lpDest, INT nDestlen);
499 HRESULT WINAPI UrlHashW(LPCWSTR pszUrl, unsigned char *lpDest, INT nDestlen);
500 #define UrlHash WINELIB_NAME_AW(UrlHash)
501
502 BOOL    WINAPI UrlIsA(LPCSTR pszUrl, URLIS UrlIs);
503 BOOL    WINAPI UrlIsW(LPCWSTR pszUrl, URLIS UrlIs);
504 #define UrlIs WINELIB_NAME_AW(UrlIs)
505
506 BOOL    WINAPI UrlIsNoHistoryA(LPCSTR pszUrl);
507 BOOL    WINAPI UrlIsNoHistoryW(LPCWSTR pszUrl);
508 #define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
509
510 BOOL    WINAPI UrlIsOpaqueA(LPCSTR pszUrl);
511 BOOL    WINAPI UrlIsOpaqueW(LPCWSTR pszUrl);
512 #define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
513
514 HRESULT WINAPI UrlUnescapeA(LPCSTR pszUrl, LPSTR pszUnescaped,
515                             LPDWORD pcchUnescaped, DWORD dwFlags);
516 HRESULT WINAPI UrlUnescapeW(LPCWSTR pszUrl, LPWSTR pszUnescaped,
517                             LPDWORD pcchUnescaped, DWORD dwFlags);
518 #define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
519
520 typedef struct _DllVersionInfo {
521     DWORD cbSize;
522     DWORD dwMajorVersion;
523     DWORD dwMinorVersion;
524     DWORD dwBuildNumber;
525     DWORD dwPlatformID;
526 } DLLVERSIONINFO;
527
528 #define DLLVER_PLATFORM_WINDOWS         0x00000001      // Windows 9x
529 #define DLLVER_PLATFORM_NT              0x00000002      // Windows NT
530
531 typedef HRESULT CALLBACK (*DLLGETVERSIONPROC)(DLLVERSIONINFO *);
532
533 #ifdef __cplusplus
534 } /* extern "C" */
535 #endif /* defined(__cplusplus) */
536
537 #endif /* __WINE_SHLWAPI_H */