2 * SHLWAPI.DLL functions
4 * Copyright (C) 2000 Juergen Schmied
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_SHLWAPI_H
22 #define __WINE_SHLWAPI_H
26 #endif /* defined(__cplusplus) */
28 #ifndef NO_SHLWAPI_REG
30 /* Registry functions */
32 DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
33 DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
34 #define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
36 DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
37 DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
38 #define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
40 DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
41 DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
42 #define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue)
44 DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
45 DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
46 #define SHGetValue WINELIB_NAME_AW(SHGetValue)
48 DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
49 DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
50 #define SHSetValue WINELIB_NAME_AW(SHSetValue)
52 DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
53 DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
54 #define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx)
56 LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
57 LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
58 #define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx)
60 LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
61 LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
62 #define SHEnumValue WINELIB_NAME_AW(SHEnumValue)
64 LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
65 LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
66 #define SHQueryInfoKey WINELIB_NAME_AW(SHQueryInfoKey)
68 DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
69 DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
70 #define SHRegGetPath WINELIB_NAME_AW(SHRegGetPath)
72 DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
73 DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
74 #define SHRegSetPath WINELIB_NAME_AW(SHRegSetPath)
76 DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
77 DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
78 #define SHCopyKey WINELIB_NAME_AW(SHCopyKey)
80 /* Undocumented registry functions */
82 HKEY WINAPI SHRegDuplicateHKey(HKEY hKey);
84 /* FIXME: SHDeleteOrphanKey */
87 /* User registry functions */
94 SHREGDEL_BOTH = SHREGDEL_HKLM | SHREGDEL_HKCU,
99 SHREGENUM_DEFAULT = 0,
100 SHREGENUM_HKCU = 0x1,
101 SHREGENUM_HKLM = 0x10,
102 SHREGENUM_BOTH = SHREGENUM_HKLM | SHREGENUM_HKCU,
105 #define SHREGSET_HKCU 0x1 /* Apply to HKCU if empty */
106 #define SHREGSET_FORCE_HKCU 0x2 /* Always apply to HKCU */
107 #define SHREGSET_HKLM 0x4 /* Apply to HKLM if empty */
108 #define SHREGSET_FORCE_HKLM 0x8 /* Always apply to HKLM */
109 #define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM)
111 typedef HANDLE HUSKEY;
112 typedef HUSKEY *PHUSKEY;
114 LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
115 LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
116 #define SHRegCreateUSKey WINELIB_NAME_AW(SHRegCreateUSKey)
118 LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
119 LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
120 #define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey)
122 LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,
124 LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
126 #define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue)
128 LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
129 LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
130 #define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue)
132 LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
133 LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
134 #define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue)
136 LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
137 LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
138 #define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey)
140 LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
141 LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
142 #define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey)
144 LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,
145 LPVOID,LPDWORD,SHREGENUM_FLAGS);
146 LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,
147 LPVOID,LPDWORD,SHREGENUM_FLAGS);
148 #define SHRegEnumUSValue WINELIB_NAME_AW(SHRegEnumUSValue)
150 LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
151 LPDWORD,SHREGENUM_FLAGS);
152 LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
153 LPDWORD,SHREGENUM_FLAGS);
154 #define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey)
156 LONG WINAPI SHRegCloseUSKey(HUSKEY);
158 LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,
160 LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
162 #define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue)
164 LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
165 LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
166 #define SHRegSetUSValue WINELIB_NAME_AW(SHRegSetUSValue)
168 BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
169 BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
170 #define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue)
172 #endif /* NO_SHLWAPI_REG */
176 #ifndef NO_SHLWAPI_PATH
178 /* GetPathCharType return flags */
179 #define GCT_INVALID 0x0
180 #define GCT_LFNCHAR 0x1
181 #define GCT_SHORTCHAR 0x2
183 #define GCT_SEPARATOR 0x8
185 LPSTR WINAPI PathAddBackslashA(LPSTR);
186 LPWSTR WINAPI PathAddBackslashW(LPWSTR);
187 #define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
189 BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
190 BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
191 #define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
193 BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
194 BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
195 #define PathAppend WINELIB_NAME_AW(PathAppend)
197 LPSTR WINAPI PathBuildRootA(LPSTR,int);
198 LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
199 #define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
201 BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
202 BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
203 #define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
205 LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
206 LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
207 #define PathCombine WINELIB_NAME_AW(PathCombine)
209 BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
210 BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
211 #define PathCompactPath WINELIB_NAME_AW(PathCompactPath)
213 BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
214 BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
215 #define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx)
217 int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
218 int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
219 #define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix)
221 BOOL WINAPI PathFileExistsA(LPCSTR);
222 BOOL WINAPI PathFileExistsW(LPCWSTR);
223 #define PathFileExists WINELIB_NAME_AW(PathFileExists)
225 LPSTR WINAPI PathFindExtensionA(LPCSTR);
226 LPWSTR WINAPI PathFindExtensionW(LPCWSTR);
227 #define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
229 LPSTR WINAPI PathFindFileNameA(LPCSTR);
230 LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
231 #define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
233 LPSTR WINAPI PathFindNextComponentA(LPCSTR);
234 LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
235 #define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
237 BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
238 BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
239 #define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
241 LPSTR WINAPI PathGetArgsA(LPCSTR);
242 LPWSTR WINAPI PathGetArgsW(LPCWSTR);
243 #define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
245 UINT WINAPI PathGetCharTypeA(UCHAR);
246 UINT WINAPI PathGetCharTypeW(WCHAR);
247 #define PathGetCharType WINELIB_NAME_AW(PathGetCharType)
249 int WINAPI PathGetDriveNumberA(LPCSTR);
250 int WINAPI PathGetDriveNumberW(LPCWSTR);
251 #define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
253 BOOL WINAPI PathIsDirectoryA(LPCSTR);
254 BOOL WINAPI PathIsDirectoryW(LPCWSTR);
255 #define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
257 BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
258 BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
259 #define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty)
261 BOOL WINAPI PathIsFileSpecA(LPCSTR);
262 BOOL WINAPI PathIsFileSpecW(LPCWSTR);
263 #define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec);
265 BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
266 BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
267 #define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix)
269 BOOL WINAPI PathIsRelativeA(LPCSTR);
270 BOOL WINAPI PathIsRelativeW(LPCWSTR);
271 #define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
273 BOOL WINAPI PathIsRootA(LPCSTR);
274 BOOL WINAPI PathIsRootW(LPCWSTR);
275 #define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
277 BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
278 BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
279 #define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
281 BOOL WINAPI PathIsUNCA(LPCSTR);
282 BOOL WINAPI PathIsUNCW(LPCWSTR);
283 #define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
285 BOOL WINAPI PathIsUNCServerA(LPCSTR);
286 BOOL WINAPI PathIsUNCServerW(LPCWSTR);
287 #define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer)
289 BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
290 BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
291 #define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare)
293 BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
294 BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
295 #define PathIsContentType WINELIB_NAME_AW(PathIsContentType)
297 BOOL WINAPI PathIsURLA(LPCSTR);
298 BOOL WINAPI PathIsURLW(LPCWSTR);
299 #define PathIsURL WINELIB_NAME_AW(PathIsURL)
301 BOOL WINAPI PathMakePrettyA(LPSTR);
302 BOOL WINAPI PathMakePrettyW(LPWSTR);
303 #define PathMakePretty WINELIB_NAME_AW(PathMakePretty)
305 BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
306 BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
307 #define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
309 int WINAPI PathParseIconLocationA(LPSTR);
310 int WINAPI PathParseIconLocationW(LPWSTR);
311 #define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
313 VOID WINAPI PathQuoteSpacesA(LPSTR);
314 VOID WINAPI PathQuoteSpacesW(LPWSTR);
315 #define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
317 BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD);
318 BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD);
319 #define PathRelativePathTo WINELIB_NAME_AW(PathRelativePathTo)
321 VOID WINAPI PathRemoveArgsA(LPSTR);
322 VOID WINAPI PathRemoveArgsW(LPWSTR);
323 #define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
325 LPSTR WINAPI PathRemoveBackslashA(LPSTR);
326 LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
327 #define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
329 VOID WINAPI PathRemoveBlanksA(LPSTR);
330 VOID WINAPI PathRemoveBlanksW(LPWSTR);
331 #define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
333 VOID WINAPI PathRemoveExtensionA(LPSTR);
334 VOID WINAPI PathRemoveExtensionW(LPWSTR);
335 #define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
337 BOOL WINAPI PathRemoveFileSpecA(LPSTR);
338 BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
339 #define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
341 BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
342 BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
343 #define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension)
345 BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
346 BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
347 #define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify)
349 VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
350 VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
351 #define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
353 LPSTR WINAPI PathSkipRootA(LPCSTR);
354 LPWSTR WINAPI PathSkipRootW(LPCWSTR);
355 #define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot)
357 VOID WINAPI PathStripPathA(LPSTR);
358 VOID WINAPI PathStripPathW(LPWSTR);
359 #define PathStripPath WINELIB_NAME_AW(PathStripPath)
361 BOOL WINAPI PathStripToRootA(LPSTR);
362 BOOL WINAPI PathStripToRootW(LPWSTR);
363 #define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
365 VOID WINAPI PathUnquoteSpacesA(LPSTR);
366 VOID WINAPI PathUnquoteSpacesW(LPWSTR);
367 #define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
369 BOOL WINAPI PathMakeSystemFolderA(LPCSTR);
370 BOOL WINAPI PathMakeSystemFolderW(LPCWSTR);
371 #define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder)
373 BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR);
374 BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR);
375 #define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder)
377 BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
378 BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
379 #define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder)
381 BOOL WINAPI PathIsNetworkPathA(LPCSTR);
382 BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
383 #define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath)
385 BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
386 BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
387 #define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec)
389 int WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int);
390 int WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int);
391 #define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray)
393 VOID WINAPI PathUndecorateA(LPSTR);
394 VOID WINAPI PathUndecorateW(LPWSTR);
395 #define PathUndecorate WINELIB_NAME_AW(PathUndecorate)
397 BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
398 BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
399 #define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings)
403 /* These are used by UrlGetPart routine */
414 #define URL_PARTFLAG_KEEPSCHEME 0x00000001
416 /* These are used by the UrlIs... routines */
427 /* This is used by the UrlApplyScheme... routines */
428 #define URL_APPLY_FORCEAPPLY 0x00000008
429 #define URL_APPLY_GUESSFILE 0x00000004
430 #define URL_APPLY_GUESSSCHEME 0x00000002
431 #define URL_APPLY_DEFAULT 0x00000001
433 /* The following are used by UrlEscape..., UrlUnEscape...,
434 * UrlCanonicalize..., and UrlCombine... routines
436 #define URL_WININET_COMPATIBILITY 0x80000000
437 #define URL_PLUGGABLE_PROTOCOL 0x40000000
438 #define URL_ESCAPE_UNSAFE 0x20000000
439 #define URL_UNESCAPE 0x10000000
441 #define URL_DONT_SIMPLIFY 0x08000000
442 #define URL_NO_META URL_DONT_SIMPLIFY
443 #define URL_ESCAPE_SPACES_ONLY 0x04000000
444 #define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000
445 #define URL_DONT_UNESCAPE_EXTRA_INFO URL_DONT_ESCAPE_EXTRA_INFO
446 #define URL_BROWSER_MODE URL_DONT_ESCAPE_EXTRA_INFO
448 #define URL_INTERNAL_PATH 0x00800000 /* Will escape #'s in paths */
449 #define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
450 #define URL_CONVERT_IF_DOSPATH 0x00200000
451 #define URL_UNESCAPE_INPLACE 0x00100000
453 #define URL_FILE_USE_PATHURL 0x00010000
455 #define URL_ESCAPE_SEGMENT_ONLY 0x00002000
456 #define URL_ESCAPE_PERCENT 0x00001000
458 HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
459 HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
460 #define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme)
462 HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
463 HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
464 #define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
466 HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
467 HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
468 #define UrlCombine WINELIB_NAME_AW(UrlCombine)
470 INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
471 INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
472 #define UrlCompare WINELIB_NAME_AW(UrlCompare)
474 HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
475 HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
476 #define UrlEscape WINELIB_NAME_AW(UrlEscape)
478 #define UrlEscapeSpacesA(x,y,z) UrlCanonicalizeA(x, y, z, \
479 URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
480 #define UrlEscapeSpacesW(x,y,z) UrlCanonicalizeW(x, y, z, \
481 URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
482 #define UrlEscapeSpaces WINELIB_NAME_AW(UrlEscapeSpaces)
484 LPCSTR WINAPI UrlGetLocationA(LPCSTR);
485 LPCWSTR WINAPI UrlGetLocationW(LPCWSTR);
486 #define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
488 HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
489 HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
490 #define UrlGetPart WINELIB_NAME_AW(UrlGetPart)
492 BOOL WINAPI HashData(const unsigned char *,INT,unsigned char *lpDest,INT);
494 HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,INT);
495 HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,INT);
496 #define UrlHash WINELIB_NAME_AW(UrlHash)
498 BOOL WINAPI UrlIsA(LPCSTR,URLIS);
499 BOOL WINAPI UrlIsW(LPCWSTR,URLIS);
500 #define UrlIs WINELIB_NAME_AW(UrlIs)
502 BOOL WINAPI UrlIsNoHistoryA(LPCSTR);
503 BOOL WINAPI UrlIsNoHistoryW(LPCWSTR);
504 #define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
506 BOOL WINAPI UrlIsOpaqueA(LPCSTR);
507 BOOL WINAPI UrlIsOpaqueW(LPCWSTR);
508 #define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
510 #define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL)
511 #define UrlIsFileUrlW(y) UrlIsW(x, URLIS_FILEURL)
512 #define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl)
514 HRESULT WINAPI UrlUnescapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
515 HRESULT WINAPI UrlUnescapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
516 #define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
518 #define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \
519 y | URL_UNESCAPE_INPLACE)
520 #define UrlUnescapeInPlaceW(x,y) UrlUnescapeW(x, NULL, NULL, \
521 y | URL_UNESCAPE_INPLACE)
522 #define UrlUnescapeInPlace WINELIB_AW_NAME(UrlUnescapeInPlace)
524 HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
525 HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
526 #define UrlCreateFromPath WINELIB_AW_NAME(UrlCreateFromPath)
528 #endif /* NO_SHLWAPI_PATH */
531 /* String functions */
532 #ifndef NO_SHLWAPI_STRFCNS
534 /* StrToIntEx flags */
535 #define STIF_DEFAULT 0x0L
536 #define STIF_SUPPORT_HEX 0x1L
538 BOOL WINAPI ChrCmpIA (WORD w1, WORD w2);
539 BOOL WINAPI ChrCmpIW (WCHAR w1, WCHAR w2);
540 #define ChrCmpI WINELIB_NAME_AW(ChrCmpI)
542 INT WINAPI StrCSpnA(LPCSTR,LPCSTR);
543 INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
544 #define StrCSpn WINELIB_NAME_AW(StrCSpn)
546 INT WINAPI StrCSpnIA(LPCSTR,LPCSTR);
547 INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
548 #define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
550 #define StrCatA lstrcatA
551 LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
552 #define StrCat WINELIB_NAME_AW(StrCat)
554 LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT);
555 LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT);
556 #define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
558 LPSTR WINAPI StrChrA(LPCSTR,WORD);
559 LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
560 #define StrChr WINELIB_NAME_AW(StrChr)
562 LPSTR WINAPI StrChrIA(LPCSTR,CHAR);
563 LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
564 #define StrChrI WINELIB_NAME_AW(StrChrI)
566 #define StrCmpA lstrcmpA
567 int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
568 #define StrCmp WINELIB_NAME_AW(StrCmp)
570 #define StrCmpIA lstrcmpiA
571 int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
572 #define StrCmpI WINELIB_NAME_AW(StrCmpI)
574 #define StrCpyA lstrcpyA
575 LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
576 #define StrCpy WINELIB_NAME_AW(StrCpy)
578 #define StrCpyNA lstrcpynA
579 LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int);
580 #define StrCpyN WINELIB_NAME_AW(StrCpyN)
581 #define StrNCpy WINELIB_NAME_AW(StrCpyN)
583 INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT);
584 INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT);
585 #define StrCmpN WINELIB_NAME_AW(StrCmpN)
586 #define StrNCmp WINELIB_NAME_AW(StrCmpN)
588 INT WINAPI StrCmpNIA(LPCSTR,LPCSTR,INT);
589 INT WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,INT);
590 #define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
591 #define StrNCmpI WINELIB_NAME_AW(StrCmpNI)
593 LPSTR WINAPI StrDupA(LPCSTR);
594 LPWSTR WINAPI StrDupW(LPCWSTR);
595 #define StrDup WINELIB_NAME_AW(StrDup)
597 LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT);
598 LPWSTR WINAPI StrFormatByteSizeW (DWORD,LPWSTR,UINT);
599 #define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize)
601 int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
602 int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
603 #define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval)
605 BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
606 BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
607 #define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual)
609 #define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c)
610 #define StrIntlEqNW(a,b,c) StrIsIntlEqualW(TRUE,a,b,c)
612 #define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c)
613 #define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c)
615 LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int);
616 LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int);
617 #define StrNCat WINELIB_NAME_AW(StrNCat)
618 #define StrCatN WINELIB_NAME_AW(StrNCat)
620 LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR);
621 LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
622 #define StrPBrk WINELIB_NAME_AW(StrPBrk)
624 LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
625 LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD);
626 #define StrRChr WINELIB_NAME_AW(StrRChr)
628 LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
629 LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD);
630 #define StrRChrI WINELIB_NAME_AW(StrRChrI)
632 LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
633 LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
634 #define StrRStrI WINELIB_NAME_AW(StrRStrI)
636 int WINAPI StrSpnA(LPCSTR,LPCSTR);
637 int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
638 #define StrSpn WINELIB_NAME_AW(StrSpn)
640 LPSTR WINAPI StrStrA(LPCSTR,LPCSTR);
641 LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
642 #define StrStr WINELIB_NAME_AW(StrStr)
644 LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR);
645 LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
646 #define StrStrI WINELIB_NAME_AW(StrStrI)
648 int WINAPI StrToIntA(LPCSTR);
649 int WINAPI StrToIntW(LPCWSTR);
650 #define StrToInt WINELIB_NAME_AW(StrToInt)
651 #define StrToLong WINELIB_NAME_AW(StrToInt)
653 BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
654 BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
655 #define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
657 BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
658 BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
659 #define StrTrim WINELIB_NAME_AW(StrTrim)
661 INT WINAPI wvnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, va_list arglist);
662 INT WINAPI wvnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, va_list arglist);
663 #define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
665 INT WINAPIV wnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, ...);
666 INT WINAPIV wnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, ...);
667 #define wnsprintf WINELIB_NAME_AW(wnsprintf)
672 HRESULT WINAPI StrRetToBufA(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPSTR dest, DWORD len);
673 HRESULT WINAPI StrRetToBufW(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPWSTR dest, DWORD len);
674 #define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
676 #endif /* NO_SHLWAPI_STRFCNS */
680 #ifndef NO_SHLWAPI_GDI
682 HPALETTE WINAPI SHCreateShellPalette(HDC);
684 COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
686 COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
688 VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD);
690 #endif /* NO_SHLWAPI_GDI */
693 /* Stream functions */
694 #ifndef NO_SHLWAPI_STREAM
696 IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
697 IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
698 #define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream)
700 IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
701 IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
702 #define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2)
704 #endif /* NO_SHLWAPI_STREAM */
707 /* Version Information */
709 typedef struct _DllVersionInfo {
711 DWORD dwMajorVersion;
712 DWORD dwMinorVersion;
717 #define DLLVER_PLATFORM_WINDOWS 0x01 /* Win9x */
718 #define DLLVER_PLATFORM_NT 0x02 /* WinNT */
720 typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *);
724 #endif /* defined(__cplusplus) */
726 #endif /* __WINE_SHLWAPI_H */