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 #if !defined(NO_SHLWAPI_STREAM) && defined(IStream_IMETHODS)
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 */