Rewrote some headers from scratch to avoid EULA/patent concerns.
[wine] / include / shlwapi.h
1 /*
2  * SHLWAPI.DLL functions
3  *
4  * Copyright (C) 2000 Juergen Schmied
5  *
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.
10  *
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.
15  *
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
19  */
20
21 #ifndef __WINE_SHLWAPI_H
22 #define __WINE_SHLWAPI_H
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif /* defined(__cplusplus) */
27
28 #ifndef NO_SHLWAPI_REG
29
30 /* Registry functions */
31
32 DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
33 DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
34 #define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
35
36 DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
37 DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
38 #define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
39
40 DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
41 DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
42 #define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue)
43
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)
47
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)
51
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)
55
56 LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
57 LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
58 #define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx)
59
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)
63
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)
67
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)
71
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)
75
76 DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
77 DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
78 #define SHCopyKey WINELIB_NAME_AW(SHCopyKey)
79
80 /* Undocumented registry functions */
81
82 HKEY WINAPI SHRegDuplicateHKey(HKEY hKey);
83
84 /* FIXME: SHDeleteOrphanKey */
85
86
87 /* User registry functions */
88
89 typedef enum
90 {
91   SHREGDEL_DEFAULT = 0,
92   SHREGDEL_HKCU    = 0x1,
93   SHREGDEL_HKLM    = 0x10,
94   SHREGDEL_BOTH    = SHREGDEL_HKLM | SHREGDEL_HKCU,
95 } SHREGDEL_FLAGS;
96
97 typedef enum
98 {
99   SHREGENUM_DEFAULT = 0,
100   SHREGENUM_HKCU    = 0x1,
101   SHREGENUM_HKLM    = 0x10,
102   SHREGENUM_BOTH    = SHREGENUM_HKLM | SHREGENUM_HKCU,
103 } SHREGENUM_FLAGS;
104
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)
110
111 typedef HANDLE HUSKEY;
112 typedef HUSKEY *PHUSKEY;
113
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)
117
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)
121
122 LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,
123                                BOOL,LPVOID,DWORD);
124 LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
125                                BOOL,LPVOID,DWORD);
126 #define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue)
127
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)
131
132 LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
133 LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
134 #define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue)
135
136 LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
137 LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
138 #define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey)
139
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)
143
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)
149
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)
155
156 LONG WINAPI SHRegCloseUSKey(HUSKEY);
157
158 LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,
159                              BOOL,LPVOID,DWORD);
160 LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
161                              BOOL,LPVOID,DWORD);
162 #define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue)
163
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)
167
168 BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
169 BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
170 #define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue)
171
172 #endif /* NO_SHLWAPI_REG */
173
174
175 /* Path functions */
176 #ifndef NO_SHLWAPI_PATH
177
178 /* GetPathCharType return flags */
179 #define GCT_INVALID     0x0
180 #define GCT_LFNCHAR     0x1
181 #define GCT_SHORTCHAR   0x2
182 #define GCT_WILD        0x4
183 #define GCT_SEPARATOR   0x8
184
185 LPSTR  WINAPI PathAddBackslashA(LPSTR);
186 LPWSTR WINAPI PathAddBackslashW(LPWSTR);
187 #define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
188
189 BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
190 BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
191 #define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
192
193 BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
194 BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
195 #define PathAppend WINELIB_NAME_AW(PathAppend)
196
197 LPSTR  WINAPI PathBuildRootA(LPSTR,int);
198 LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
199 #define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
200
201 BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
202 BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
203 #define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
204
205 LPSTR  WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
206 LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
207 #define PathCombine WINELIB_NAME_AW(PathCombine)
208
209 BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
210 BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
211 #define PathCompactPath WINELIB_NAME_AW(PathCompactPath)
212
213 BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
214 BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
215 #define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx)
216
217 int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
218 int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
219 #define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix)
220
221 BOOL WINAPI PathFileExistsA(LPCSTR);
222 BOOL WINAPI PathFileExistsW(LPCWSTR);
223 #define PathFileExists WINELIB_NAME_AW(PathFileExists)
224
225 LPSTR  WINAPI PathFindExtensionA(LPCSTR);
226 LPWSTR WINAPI PathFindExtensionW(LPCWSTR);
227 #define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
228
229 LPSTR  WINAPI PathFindFileNameA(LPCSTR);
230 LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
231 #define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
232
233 LPSTR  WINAPI PathFindNextComponentA(LPCSTR);
234 LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
235 #define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
236
237 BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
238 BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
239 #define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
240
241 LPSTR  WINAPI PathGetArgsA(LPCSTR);
242 LPWSTR WINAPI PathGetArgsW(LPCWSTR);
243 #define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
244
245 UINT WINAPI PathGetCharTypeA(UCHAR);
246 UINT WINAPI PathGetCharTypeW(WCHAR);
247 #define PathGetCharType WINELIB_NAME_AW(PathGetCharType)
248
249 int WINAPI PathGetDriveNumberA(LPCSTR);
250 int WINAPI PathGetDriveNumberW(LPCWSTR);
251 #define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
252
253 BOOL WINAPI PathIsDirectoryA(LPCSTR);
254 BOOL WINAPI PathIsDirectoryW(LPCWSTR);
255 #define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
256
257 BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
258 BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
259 #define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty)
260
261 BOOL WINAPI PathIsFileSpecA(LPCSTR);
262 BOOL WINAPI PathIsFileSpecW(LPCWSTR);
263 #define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec);
264
265 BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
266 BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
267 #define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix)
268
269 BOOL WINAPI PathIsRelativeA(LPCSTR);
270 BOOL WINAPI PathIsRelativeW(LPCWSTR);
271 #define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
272
273 BOOL WINAPI PathIsRootA(LPCSTR);
274 BOOL WINAPI PathIsRootW(LPCWSTR);
275 #define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
276
277 BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
278 BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
279 #define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
280
281 BOOL WINAPI PathIsUNCA(LPCSTR);
282 BOOL WINAPI PathIsUNCW(LPCWSTR);
283 #define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
284
285 BOOL WINAPI PathIsUNCServerA(LPCSTR);
286 BOOL WINAPI PathIsUNCServerW(LPCWSTR);
287 #define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer)
288
289 BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
290 BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
291 #define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare)
292
293 BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
294 BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
295 #define PathIsContentType WINELIB_NAME_AW(PathIsContentType)
296
297 BOOL WINAPI PathIsURLA(LPCSTR);
298 BOOL WINAPI PathIsURLW(LPCWSTR);
299 #define PathIsURL WINELIB_NAME_AW(PathIsURL)
300
301 BOOL WINAPI PathMakePrettyA(LPSTR);
302 BOOL WINAPI PathMakePrettyW(LPWSTR);
303 #define PathMakePretty WINELIB_NAME_AW(PathMakePretty)
304
305 BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
306 BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
307 #define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
308
309 int WINAPI PathParseIconLocationA(LPSTR);
310 int WINAPI PathParseIconLocationW(LPWSTR);
311 #define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
312
313 VOID WINAPI PathQuoteSpacesA(LPSTR);
314 VOID WINAPI PathQuoteSpacesW(LPWSTR);
315 #define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
316
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)
320
321 VOID WINAPI PathRemoveArgsA(LPSTR);
322 VOID WINAPI PathRemoveArgsW(LPWSTR);
323 #define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
324
325 LPSTR  WINAPI PathRemoveBackslashA(LPSTR);
326 LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
327 #define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
328
329 VOID WINAPI PathRemoveBlanksA(LPSTR);
330 VOID WINAPI PathRemoveBlanksW(LPWSTR);
331 #define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
332
333 VOID WINAPI PathRemoveExtensionA(LPSTR);
334 VOID WINAPI PathRemoveExtensionW(LPWSTR);
335 #define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
336
337 BOOL WINAPI PathRemoveFileSpecA(LPSTR);
338 BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
339 #define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
340
341 BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
342 BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
343 #define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension)
344
345 BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
346 BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
347 #define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify)
348
349 VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
350 VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
351 #define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
352
353 LPSTR  WINAPI PathSkipRootA(LPCSTR);
354 LPWSTR WINAPI PathSkipRootW(LPCWSTR);
355 #define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot)
356
357 VOID WINAPI PathStripPathA(LPSTR);
358 VOID WINAPI PathStripPathW(LPWSTR);
359 #define PathStripPath WINELIB_NAME_AW(PathStripPath)
360
361 BOOL WINAPI PathStripToRootA(LPSTR);
362 BOOL WINAPI PathStripToRootW(LPWSTR);
363 #define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
364
365 VOID WINAPI PathUnquoteSpacesA(LPSTR);
366 VOID WINAPI PathUnquoteSpacesW(LPWSTR);
367 #define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
368
369 BOOL WINAPI PathMakeSystemFolderA(LPCSTR);
370 BOOL WINAPI PathMakeSystemFolderW(LPCWSTR);
371 #define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder)
372
373 BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR);
374 BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR);
375 #define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder)
376
377 BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
378 BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
379 #define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder)
380
381 BOOL WINAPI PathIsNetworkPathA(LPCSTR);
382 BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
383 #define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath)
384
385 BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
386 BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
387 #define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec)
388
389 int WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int);
390 int WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int);
391 #define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray)
392
393 VOID WINAPI PathUndecorateA(LPSTR);
394 VOID WINAPI PathUndecorateW(LPWSTR);
395 #define PathUndecorate WINELIB_NAME_AW(PathUndecorate)
396
397 BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
398 BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
399 #define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings)
400
401 /* Url functions */
402
403 /* These are used by UrlGetPart routine */
404 typedef enum {
405     URL_PART_NONE    = 0,
406     URL_PART_SCHEME  = 1,
407     URL_PART_HOSTNAME,
408     URL_PART_USERNAME,
409     URL_PART_PASSWORD,
410     URL_PART_PORT,
411     URL_PART_QUERY,
412 } URL_PART;
413
414 #define URL_PARTFLAG_KEEPSCHEME  0x00000001
415
416 /* These are used by the UrlIs... routines */
417 typedef enum {
418     URLIS_URL,
419     URLIS_OPAQUE,
420     URLIS_NOHISTORY,
421     URLIS_FILEURL,
422     URLIS_APPLIABLE,
423     URLIS_DIRECTORY,
424     URLIS_HASQUERY,
425 } URLIS;
426
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
432
433 /* The following are used by UrlEscape..., UrlUnEscape...,
434  * UrlCanonicalize..., and UrlCombine... routines
435  */
436 #define URL_WININET_COMPATIBILITY    0x80000000
437 #define URL_PLUGGABLE_PROTOCOL       0x40000000
438 #define URL_ESCAPE_UNSAFE            0x20000000
439 #define URL_UNESCAPE                 0x10000000
440
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
447
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
452
453 #define URL_FILE_USE_PATHURL         0x00010000
454
455 #define URL_ESCAPE_SEGMENT_ONLY      0x00002000
456 #define URL_ESCAPE_PERCENT           0x00001000
457
458 HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
459 HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
460 #define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme)
461
462 HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
463 HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
464 #define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
465
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)
469
470 INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
471 INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
472 #define UrlCompare WINELIB_NAME_AW(UrlCompare)
473
474 HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
475 HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
476 #define UrlEscape WINELIB_NAME_AW(UrlEscape)
477
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)
483
484 LPCSTR  WINAPI UrlGetLocationA(LPCSTR);
485 LPCWSTR WINAPI UrlGetLocationW(LPCWSTR);
486 #define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
487
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)
491
492 BOOL    WINAPI HashData(const unsigned char *,INT,unsigned char *lpDest,INT);
493
494 HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,INT);
495 HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,INT);
496 #define UrlHash WINELIB_NAME_AW(UrlHash)
497
498 BOOL    WINAPI UrlIsA(LPCSTR,URLIS);
499 BOOL    WINAPI UrlIsW(LPCWSTR,URLIS);
500 #define UrlIs WINELIB_NAME_AW(UrlIs)
501
502 BOOL    WINAPI UrlIsNoHistoryA(LPCSTR);
503 BOOL    WINAPI UrlIsNoHistoryW(LPCWSTR);
504 #define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
505
506 BOOL    WINAPI UrlIsOpaqueA(LPCSTR);
507 BOOL    WINAPI UrlIsOpaqueW(LPCWSTR);
508 #define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
509
510 #define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL)
511 #define UrlIsFileUrlW(y) UrlIsW(x, URLIS_FILEURL)
512 #define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl)
513
514 HRESULT WINAPI UrlUnescapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
515 HRESULT WINAPI UrlUnescapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
516 #define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
517
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)
523
524 HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
525 HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
526 #define UrlCreateFromPath WINELIB_AW_NAME(UrlCreateFromPath)
527
528 #endif /* NO_SHLWAPI_PATH */
529
530
531 /* String functions */
532 #ifndef NO_SHLWAPI_STRFCNS
533
534 /* StrToIntEx flags */
535 #define STIF_DEFAULT     0x0L
536 #define STIF_SUPPORT_HEX 0x1L
537
538 BOOL WINAPI ChrCmpIA (WORD w1, WORD w2);
539 BOOL WINAPI ChrCmpIW (WCHAR w1, WCHAR w2);
540 #define ChrCmpI WINELIB_NAME_AW(ChrCmpI)
541
542 INT WINAPI StrCSpnA(LPCSTR,LPCSTR);
543 INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
544 #define StrCSpn WINELIB_NAME_AW(StrCSpn)
545
546 INT WINAPI StrCSpnIA(LPCSTR,LPCSTR);
547 INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
548 #define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
549
550 #define StrCatA lstrcatA
551 LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
552 #define StrCat WINELIB_NAME_AW(StrCat)
553
554 LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT);
555 LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT);
556 #define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
557
558 LPSTR WINAPI StrChrA(LPCSTR,WORD);
559 LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
560 #define StrChr WINELIB_NAME_AW(StrChr)
561
562 LPSTR WINAPI StrChrIA(LPCSTR,CHAR);
563 LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
564 #define StrChrI WINELIB_NAME_AW(StrChrI)
565
566 #define StrCmpA lstrcmpA
567 int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
568 #define StrCmp WINELIB_NAME_AW(StrCmp)
569
570 #define StrCmpIA lstrcmpiA
571 int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
572 #define StrCmpI WINELIB_NAME_AW(StrCmpI)
573
574 #define StrCpyA lstrcpyA
575 LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
576 #define StrCpy WINELIB_NAME_AW(StrCpy)
577
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)
582
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)
587
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)
592
593 LPSTR WINAPI StrDupA(LPCSTR);
594 LPWSTR WINAPI StrDupW(LPCWSTR);
595 #define StrDup WINELIB_NAME_AW(StrDup)
596
597 LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT);
598 LPWSTR WINAPI StrFormatByteSizeW (DWORD,LPWSTR,UINT);
599 #define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize)
600
601 int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
602 int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
603 #define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval)
604
605 BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
606 BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
607 #define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual)
608
609 #define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c)
610 #define StrIntlEqNW(a,b,c) StrIsIntlEqualW(TRUE,a,b,c)
611
612 #define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c)
613 #define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c)
614
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)
619
620 LPSTR  WINAPI StrPBrkA(LPCSTR,LPCSTR);
621 LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
622 #define StrPBrk WINELIB_NAME_AW(StrPBrk)
623
624 LPSTR  WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
625 LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD);
626 #define StrRChr WINELIB_NAME_AW(StrRChr)
627
628 LPSTR  WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
629 LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD);
630 #define StrRChrI WINELIB_NAME_AW(StrRChrI)
631
632 LPSTR  WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
633 LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
634 #define StrRStrI WINELIB_NAME_AW(StrRStrI)
635
636 int WINAPI StrSpnA(LPCSTR,LPCSTR);
637 int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
638 #define StrSpn WINELIB_NAME_AW(StrSpn)
639
640 LPSTR  WINAPI StrStrA(LPCSTR,LPCSTR);
641 LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
642 #define StrStr WINELIB_NAME_AW(StrStr)
643
644 LPSTR  WINAPI StrStrIA(LPCSTR,LPCSTR);
645 LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
646 #define StrStrI WINELIB_NAME_AW(StrStrI)
647
648 int WINAPI StrToIntA(LPCSTR);
649 int WINAPI StrToIntW(LPCWSTR);
650 #define StrToInt WINELIB_NAME_AW(StrToInt)
651 #define StrToLong WINELIB_NAME_AW(StrToInt)
652
653 BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
654 BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
655 #define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
656
657 BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
658 BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
659 #define StrTrim WINELIB_NAME_AW(StrTrim)
660
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)
664
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)
668
669 /* Undocumented */
670 struct _STRRET;
671 struct _ITEMIDLIST;
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)
675
676 #endif /* NO_SHLWAPI_STRFCNS */
677
678
679 /* GDI functions */
680 #ifndef NO_SHLWAPI_GDI
681
682 HPALETTE WINAPI SHCreateShellPalette(HDC);
683
684 COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
685
686 COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
687
688 VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD);
689
690 #endif /* NO_SHLWAPI_GDI */
691
692
693 /* Stream functions */
694 #ifndef NO_SHLWAPI_STREAM
695
696 IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
697 IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
698 #define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream)
699
700 IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
701 IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
702 #define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2)
703
704 #endif /* NO_SHLWAPI_STREAM */
705
706
707 /* Version Information */
708
709 typedef struct _DllVersionInfo {
710     DWORD cbSize;
711     DWORD dwMajorVersion;
712     DWORD dwMinorVersion;
713     DWORD dwBuildNumber;
714     DWORD dwPlatformID;
715 } DLLVERSIONINFO;
716
717 #define DLLVER_PLATFORM_WINDOWS 0x01 /* Win9x */
718 #define DLLVER_PLATFORM_NT      0x02 /* WinNT */
719
720 typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *);
721
722 #ifdef __cplusplus
723 } /* extern "C" */
724 #endif /* defined(__cplusplus) */
725
726 #endif /* __WINE_SHLWAPI_H */