blob: fb0f3f0c0f38698420694f60cd8a583c5dc74662 [file] [log] [blame]
Jon Griffiths603f20f2001-12-11 00:30:17 +00001/*
2 * SHLWAPI.DLL functions
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00003 *
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
Jon Griffiths603f20f2001-12-11 00:30:17 +000019 */
Alexandre Julliard0799c1a2002-03-09 23:29:33 +000020
Juergen Schmied51c74d82000-04-28 20:23:46 +000021#ifndef __WINE_SHLWAPI_H
22#define __WINE_SHLWAPI_H
23
Alexandre Julliard5cdda822002-07-24 01:57:22 +000024#include "objbase.h"
25
Juergen Schmied51c74d82000-04-28 20:23:46 +000026#ifdef __cplusplus
27extern "C" {
28#endif /* defined(__cplusplus) */
29
Patrik Stridvallced69a92002-11-12 01:05:00 +000030#include "pshpack1.h"
31
Jon Griffiths603f20f2001-12-11 00:30:17 +000032#ifndef NO_SHLWAPI_REG
Huw D M Daviesf6c72222001-01-05 22:22:57 +000033
Jon Griffiths603f20f2001-12-11 00:30:17 +000034/* Registry functions */
Marcus Meissner784fd592001-05-29 20:51:53 +000035
Jon Griffiths603f20f2001-12-11 00:30:17 +000036DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
37DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
38#define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
39
40DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
41DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
42#define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
43
44DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
45DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
46#define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue)
47
48DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
49DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
50#define SHGetValue WINELIB_NAME_AW(SHGetValue)
51
52DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
53DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
54#define SHSetValue WINELIB_NAME_AW(SHSetValue)
55
Jon Griffithsde51f612001-12-17 21:21:29 +000056DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
57DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
Jon Griffiths603f20f2001-12-11 00:30:17 +000058#define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx)
59
60LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
61LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
62#define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx)
63
64LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
65LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
66#define SHEnumValue WINELIB_NAME_AW(SHEnumValue)
67
68LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
69LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
70#define SHQueryInfoKey WINELIB_NAME_AW(SHQueryInfoKey)
71
72DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
73DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
74#define SHRegGetPath WINELIB_NAME_AW(SHRegGetPath)
75
76DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
77DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
78#define SHRegSetPath WINELIB_NAME_AW(SHRegSetPath)
79
80DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
81DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
82#define SHCopyKey WINELIB_NAME_AW(SHCopyKey)
83
84/* Undocumented registry functions */
85
Jon Griffithsab9bb9c2003-03-15 19:41:03 +000086HKEY WINAPI SHRegDuplicateHKey(HKEY);
Jon Griffiths603f20f2001-12-11 00:30:17 +000087
Jon Griffithsab9bb9c2003-03-15 19:41:03 +000088DWORD WINAPI SHDeleteOrphanKeyA(HKEY,LPCSTR);
89DWORD WINAPI SHDeleteOrphanKeyW(HKEY,LPCWSTR);
90#define SHDeleteOrphanKey WINELIB_NAME_AW(SHDeleteOrphanKey)
Jon Griffiths603f20f2001-12-11 00:30:17 +000091
92
93/* User registry functions */
94
95typedef enum
96{
97 SHREGDEL_DEFAULT = 0,
98 SHREGDEL_HKCU = 0x1,
99 SHREGDEL_HKLM = 0x10,
Gregg Mattinson5837e8b2002-07-03 01:15:32 +0000100 SHREGDEL_BOTH = SHREGDEL_HKLM | SHREGDEL_HKCU
Jon Griffiths603f20f2001-12-11 00:30:17 +0000101} SHREGDEL_FLAGS;
102
103typedef enum
104{
105 SHREGENUM_DEFAULT = 0,
106 SHREGENUM_HKCU = 0x1,
107 SHREGENUM_HKLM = 0x10,
Gregg Mattinson5837e8b2002-07-03 01:15:32 +0000108 SHREGENUM_BOTH = SHREGENUM_HKLM | SHREGENUM_HKCU
Jon Griffiths603f20f2001-12-11 00:30:17 +0000109} SHREGENUM_FLAGS;
110
111#define SHREGSET_HKCU 0x1 /* Apply to HKCU if empty */
112#define SHREGSET_FORCE_HKCU 0x2 /* Always apply to HKCU */
113#define SHREGSET_HKLM 0x4 /* Apply to HKLM if empty */
114#define SHREGSET_FORCE_HKLM 0x8 /* Always apply to HKLM */
115#define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM)
116
117typedef HANDLE HUSKEY;
118typedef HUSKEY *PHUSKEY;
119
120LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
121LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
122#define SHRegCreateUSKey WINELIB_NAME_AW(SHRegCreateUSKey)
123
124LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
125LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
126#define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey)
127
128LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,
129 BOOL,LPVOID,DWORD);
130LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
131 BOOL,LPVOID,DWORD);
132#define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue)
133
134LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
135LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
136#define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue)
137
138LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
139LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
140#define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue)
141
142LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
143LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
144#define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey)
145
146LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
147LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
148#define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey)
149
150LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,
151 LPVOID,LPDWORD,SHREGENUM_FLAGS);
152LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,
153 LPVOID,LPDWORD,SHREGENUM_FLAGS);
154#define SHRegEnumUSValue WINELIB_NAME_AW(SHRegEnumUSValue)
155
156LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
157 LPDWORD,SHREGENUM_FLAGS);
158LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
159 LPDWORD,SHREGENUM_FLAGS);
160#define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey)
161
162LONG WINAPI SHRegCloseUSKey(HUSKEY);
163
164LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,
165 BOOL,LPVOID,DWORD);
166LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
167 BOOL,LPVOID,DWORD);
168#define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue)
169
170LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
171LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
172#define SHRegSetUSValue WINELIB_NAME_AW(SHRegSetUSValue)
173
174BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
175BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
176#define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue)
177
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000178int WINAPI SHRegGetIntW(HKEY,LPCWSTR,int);
179
180/* IQueryAssociation and helpers */
181enum
182{
183 ASSOCF_INIT_NOREMAPCLSID = 0x001, /* Don't map clsid->progid */
184 ASSOCF_INIT_BYEXENAME = 0x002, /* .exe name given */
185 ASSOCF_OPEN_BYEXENAME = 0x002, /* Synonym */
186 ASSOCF_INIT_DEFAULTTOSTAR = 0x004, /* Use * as base */
187 ASSOCF_INIT_DEFAULTTOFOLDER = 0x008, /* Use folder as base */
188 ASSOCF_NOUSERSETTINGS = 0x010, /* No HKCU reads */
189 ASSOCF_NOTRUNCATE = 0x020, /* Don't truncate return */
190 ASSOCF_VERIFY = 0x040, /* Verify data */
191 ASSOCF_REMAPRUNDLL = 0x080, /* Get rundll args */
192 ASSOCF_NOFIXUPS = 0x100, /* Don't fixup errors */
193 ASSOCF_IGNOREBASECLASS = 0x200, /* Dont read baseclass */
194};
195
196typedef DWORD ASSOCF;
197
198typedef enum
199{
200 ASSOCSTR_COMMAND = 1, /* Verb command */
201 ASSOCSTR_EXECUTABLE, /* .exe from command string */
202 ASSOCSTR_FRIENDLYDOCNAME, /* Friendly doc type name */
203 ASSOCSTR_FRIENDLYAPPNAME, /* Friendly .exe name */
204 ASSOCSTR_NOOPEN, /* noopen value */
205 ASSOCSTR_SHELLNEWVALUE, /* Use shellnew key */
206 ASSOCSTR_DDECOMMAND, /* DDE command template */
207 ASSOCSTR_DDEIFEXEC, /* DDE command for process create */
208 ASSOCSTR_DDEAPPLICATION, /* DDE app name */
209 ASSOCSTR_DDETOPIC, /* DDE topic */
210 ASSOCSTR_INFOTIP, /* Infotip */
211 ASSOCSTR_QUICKTIP, /* Quick infotip */
212 ASSOCSTR_TILEINFO, /* Properties for tileview */
213 ASSOCSTR_CONTENTTYPE, /* Mimetype */
214 ASSOCSTR_DEFAULTICON, /* Icon */
215 ASSOCSTR_SHELLEXTENSION, /* GUID for shell extension handler */
216 ASSOCSTR_MAX
217} ASSOCSTR;
218
219typedef enum
220{
221 ASSOCKEY_SHELLEXECCLASS = 1, /* Key for ShellExec */
222 ASSOCKEY_APP, /* Application */
223 ASSOCKEY_CLASS, /* Progid or class */
224 ASSOCKEY_BASECLASS, /* Base class */
225 ASSOCKEY_MAX
226} ASSOCKEY;
227
228typedef enum
229{
230 ASSOCDATA_MSIDESCRIPTOR = 1, /* Component descriptor */
231 ASSOCDATA_NOACTIVATEHANDLER, /* Don't activate */
232 ASSOCDATA_QUERYCLASSSTORE, /* Look in Class Store */
233 ASSOCDATA_HASPERUSERASSOC, /* Use user association */
234 ASSOCDATA_EDITFLAGS, /* Edit flags */
235 ASSOCDATA_VALUE, /* pszExtra is value */
236 ASSOCDATA_MAX
237} ASSOCDATA;
238
239typedef enum
240{
241 ASSOCENUM_NONE
242} ASSOCENUM;
243
Alexandre Julliard5cdda822002-07-24 01:57:22 +0000244typedef struct IQueryAssociations IQueryAssociations,*LPQUERYASSOCIATIONS;
245
Alexandre Julliardf00c46f2003-04-10 00:19:24 +0000246#define INTERFACE IQueryAssociations
Alexandre Julliard5cdda822002-07-24 01:57:22 +0000247#define IQueryAssociations_METHODS \
Alexandre Julliardaae3cb62003-04-11 00:31:02 +0000248 IUnknown_METHODS \
Alexandre Julliardf00c46f2003-04-10 00:19:24 +0000249 STDMETHOD(Init)(THIS_ ASSOCF flags, LPCWSTR pszAssoc, HKEY hkProgid, HWND hwnd) PURE; \
250 STDMETHOD(GetString)(THIS_ ASSOCF flags, ASSOCSTR str, LPCWSTR pszExtra, LPWSTR pszOut, DWORD * pcchOut) PURE; \
251 STDMETHOD(GetKey)(THIS_ ASSOCF flags, ASSOCKEY key, LPCWSTR pszExtra, HKEY * phkeyOut) PURE; \
252 STDMETHOD(GetData)(THIS_ ASSOCF flags, ASSOCDATA data, LPCWSTR pszExtra, LPVOID pvOut, DWORD * pcbOut) PURE; \
253 STDMETHOD(GetEnum)(THIS_ ASSOCF flags, ASSOCENUM assocenum, LPCWSTR pszExtra, REFIID riid, LPVOID * ppvOut) PURE;
Alexandre Julliard5cdda822002-07-24 01:57:22 +0000254ICOM_DEFINE(IQueryAssociations,IUnknown)
Alexandre Julliardf00c46f2003-04-10 00:19:24 +0000255#undef INTERFACE
Alexandre Julliard5cdda822002-07-24 01:57:22 +0000256
Alexandre Julliard55379112003-04-10 21:13:58 +0000257#ifdef COBJMACROS
258#define IQueryAssociations_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
259#define IQueryAssociations_AddRef(p) (p)->lpVtbl->AddRef(p)
260#define IQueryAssociations_Release(p) (p)->lpVtbl->Release(p)
261#define IQueryAssociations_Init(p,a,b,c,d) (p)->lpVtbl->Init(p,a,b,c,d)
262#define IQueryAssociations_GetString(p,a,b,c,d,e) (p)->lpVtbl->GetString(p,a,b,c,d,e)
263#define IQueryAssociations_GetKey(p,a,b,c,d) (p)->lpVtbl->GetKey(p,a,b,c,d)
264#define IQueryAssociations_GetData(p,a,b,c,d,e) (p)->lpVtbl->GetData(p,a,b,c,d,e)
265#define IQueryAssociations_GetEnum(p,a,b,c,d,e) (p)->lpVtbl->GetEnum(p,a,b,c,d,e)
266#endif
Alexandre Julliard5cdda822002-07-24 01:57:22 +0000267
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000268HRESULT WINAPI AssocCreate(CLSID,REFIID,LPVOID*);
269
270HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD);
271HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD);
272#define AssocQueryString WINELIB_NAME_AW(AssocQueryString)
273
274HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,LPDWORD);
275HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,LPDWORD);
276#define AssocQueryStringByKey WINELIB_NAME_AW(AssocQueryStringByKey)
277
278HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,PHKEY);
279HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,PHKEY);
280#define AssocQueryKey WINELIB_NAME_AW(AssocQueryKey)
281
Jon Griffiths603f20f2001-12-11 00:30:17 +0000282#endif /* NO_SHLWAPI_REG */
283
284
285/* Path functions */
286#ifndef NO_SHLWAPI_PATH
287
288/* GetPathCharType return flags */
289#define GCT_INVALID 0x0
290#define GCT_LFNCHAR 0x1
291#define GCT_SHORTCHAR 0x2
292#define GCT_WILD 0x4
293#define GCT_SEPARATOR 0x8
294
295LPSTR WINAPI PathAddBackslashA(LPSTR);
296LPWSTR WINAPI PathAddBackslashW(LPWSTR);
297#define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
298
299BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
300BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
301#define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
302
303BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
304BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
305#define PathAppend WINELIB_NAME_AW(PathAppend)
306
307LPSTR WINAPI PathBuildRootA(LPSTR,int);
308LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
309#define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
310
311BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
312BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
313#define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
314
315LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
316LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
317#define PathCombine WINELIB_NAME_AW(PathCombine)
318
319BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
320BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
321#define PathCompactPath WINELIB_NAME_AW(PathCompactPath)
322
323BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
324BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
325#define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx)
326
327int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
328int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
329#define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix)
330
331BOOL WINAPI PathFileExistsA(LPCSTR);
332BOOL WINAPI PathFileExistsW(LPCWSTR);
333#define PathFileExists WINELIB_NAME_AW(PathFileExists)
334
335LPSTR WINAPI PathFindExtensionA(LPCSTR);
336LPWSTR WINAPI PathFindExtensionW(LPCWSTR);
337#define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
338
339LPSTR WINAPI PathFindFileNameA(LPCSTR);
340LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
341#define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
342
343LPSTR WINAPI PathFindNextComponentA(LPCSTR);
344LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
345#define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
346
347BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
348BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
349#define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
350
351LPSTR WINAPI PathGetArgsA(LPCSTR);
352LPWSTR WINAPI PathGetArgsW(LPCWSTR);
353#define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
354
355UINT WINAPI PathGetCharTypeA(UCHAR);
356UINT WINAPI PathGetCharTypeW(WCHAR);
357#define PathGetCharType WINELIB_NAME_AW(PathGetCharType)
358
359int WINAPI PathGetDriveNumberA(LPCSTR);
360int WINAPI PathGetDriveNumberW(LPCWSTR);
361#define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
362
363BOOL WINAPI PathIsDirectoryA(LPCSTR);
364BOOL WINAPI PathIsDirectoryW(LPCWSTR);
365#define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
366
367BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
368BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
369#define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty)
370
371BOOL WINAPI PathIsFileSpecA(LPCSTR);
372BOOL WINAPI PathIsFileSpecW(LPCWSTR);
373#define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec);
374
375BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
376BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
377#define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix)
378
379BOOL WINAPI PathIsRelativeA(LPCSTR);
380BOOL WINAPI PathIsRelativeW(LPCWSTR);
381#define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
382
383BOOL WINAPI PathIsRootA(LPCSTR);
384BOOL WINAPI PathIsRootW(LPCWSTR);
385#define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
386
387BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
388BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
389#define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
390
391BOOL WINAPI PathIsUNCA(LPCSTR);
392BOOL WINAPI PathIsUNCW(LPCWSTR);
393#define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
394
395BOOL WINAPI PathIsUNCServerA(LPCSTR);
396BOOL WINAPI PathIsUNCServerW(LPCWSTR);
397#define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer)
398
399BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
400BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
401#define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare)
402
403BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
404BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
405#define PathIsContentType WINELIB_NAME_AW(PathIsContentType)
406
407BOOL WINAPI PathIsURLA(LPCSTR);
408BOOL WINAPI PathIsURLW(LPCWSTR);
409#define PathIsURL WINELIB_NAME_AW(PathIsURL)
410
411BOOL WINAPI PathMakePrettyA(LPSTR);
412BOOL WINAPI PathMakePrettyW(LPWSTR);
413#define PathMakePretty WINELIB_NAME_AW(PathMakePretty)
414
415BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
416BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
417#define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
418
419int WINAPI PathParseIconLocationA(LPSTR);
420int WINAPI PathParseIconLocationW(LPWSTR);
421#define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
422
Jon Griffiths4e75d122002-03-20 01:33:19 +0000423VOID WINAPI PathQuoteSpacesA(LPSTR);
424VOID WINAPI PathQuoteSpacesW(LPWSTR);
Jon Griffiths603f20f2001-12-11 00:30:17 +0000425#define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
426
427BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD);
428BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD);
429#define PathRelativePathTo WINELIB_NAME_AW(PathRelativePathTo)
430
431VOID WINAPI PathRemoveArgsA(LPSTR);
432VOID WINAPI PathRemoveArgsW(LPWSTR);
433#define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
434
435LPSTR WINAPI PathRemoveBackslashA(LPSTR);
436LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
437#define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
438
439VOID WINAPI PathRemoveBlanksA(LPSTR);
440VOID WINAPI PathRemoveBlanksW(LPWSTR);
441#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
442
443VOID WINAPI PathRemoveExtensionA(LPSTR);
444VOID WINAPI PathRemoveExtensionW(LPWSTR);
445#define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
446
447BOOL WINAPI PathRemoveFileSpecA(LPSTR);
448BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
449#define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
450
451BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
452BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
453#define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension)
454
455BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
456BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
457#define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify)
458
Jon Griffiths4e75d122002-03-20 01:33:19 +0000459VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
460VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
Jon Griffiths603f20f2001-12-11 00:30:17 +0000461#define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
462
463LPSTR WINAPI PathSkipRootA(LPCSTR);
464LPWSTR WINAPI PathSkipRootW(LPCWSTR);
465#define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot)
466
467VOID WINAPI PathStripPathA(LPSTR);
468VOID WINAPI PathStripPathW(LPWSTR);
469#define PathStripPath WINELIB_NAME_AW(PathStripPath)
470
471BOOL WINAPI PathStripToRootA(LPSTR);
472BOOL WINAPI PathStripToRootW(LPWSTR);
473#define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
474
475VOID WINAPI PathUnquoteSpacesA(LPSTR);
476VOID WINAPI PathUnquoteSpacesW(LPWSTR);
477#define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
478
479BOOL WINAPI PathMakeSystemFolderA(LPCSTR);
480BOOL WINAPI PathMakeSystemFolderW(LPCWSTR);
481#define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder)
482
483BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR);
484BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR);
485#define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder)
486
487BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
488BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
489#define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder)
490
491BOOL WINAPI PathIsNetworkPathA(LPCSTR);
492BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
493#define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath)
494
495BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
496BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
497#define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec)
498
Jon Griffiths4e75d122002-03-20 01:33:19 +0000499int WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int);
500int WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int);
Jon Griffiths603f20f2001-12-11 00:30:17 +0000501#define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray)
502
503VOID WINAPI PathUndecorateA(LPSTR);
504VOID WINAPI PathUndecorateW(LPWSTR);
505#define PathUndecorate WINELIB_NAME_AW(PathUndecorate)
506
507BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
508BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
509#define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings)
510
511/* Url functions */
Guy L. Albertelliad381592001-11-13 21:28:21 +0000512
513/* These are used by UrlGetPart routine */
514typedef enum {
515 URL_PART_NONE = 0,
516 URL_PART_SCHEME = 1,
517 URL_PART_HOSTNAME,
518 URL_PART_USERNAME,
519 URL_PART_PASSWORD,
520 URL_PART_PORT,
Gregg Mattinson5837e8b2002-07-03 01:15:32 +0000521 URL_PART_QUERY
Guy L. Albertelliad381592001-11-13 21:28:21 +0000522} URL_PART;
Jon Griffiths603f20f2001-12-11 00:30:17 +0000523
Guy L. Albertelliad381592001-11-13 21:28:21 +0000524#define URL_PARTFLAG_KEEPSCHEME 0x00000001
525
526/* These are used by the UrlIs... routines */
527typedef enum {
528 URLIS_URL,
529 URLIS_OPAQUE,
530 URLIS_NOHISTORY,
531 URLIS_FILEURL,
532 URLIS_APPLIABLE,
533 URLIS_DIRECTORY,
Gregg Mattinson5837e8b2002-07-03 01:15:32 +0000534 URLIS_HASQUERY
Guy L. Albertelliad381592001-11-13 21:28:21 +0000535} URLIS;
536
Guy L. Albertelli905f04a2001-12-01 00:36:18 +0000537/* This is used by the UrlApplyScheme... routines */
538#define URL_APPLY_FORCEAPPLY 0x00000008
539#define URL_APPLY_GUESSFILE 0x00000004
540#define URL_APPLY_GUESSSCHEME 0x00000002
541#define URL_APPLY_DEFAULT 0x00000001
542
Guy L. Albertelli905f04a2001-12-01 00:36:18 +0000543/* The following are used by UrlEscape..., UrlUnEscape...,
544 * UrlCanonicalize..., and UrlCombine... routines
545 */
Guy Albertelliaafec982001-11-06 22:31:19 +0000546#define URL_WININET_COMPATIBILITY 0x80000000
547#define URL_PLUGGABLE_PROTOCOL 0x40000000
Huw D M Daviesf6c72222001-01-05 22:22:57 +0000548#define URL_ESCAPE_UNSAFE 0x20000000
Guy Albertelliaafec982001-11-06 22:31:19 +0000549#define URL_UNESCAPE 0x10000000
550
551#define URL_DONT_SIMPLIFY 0x08000000
552#define URL_NO_META URL_DONT_SIMPLIFY
553#define URL_ESCAPE_SPACES_ONLY 0x04000000
554#define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000
555#define URL_DONT_UNESCAPE_EXTRA_INFO URL_DONT_ESCAPE_EXTRA_INFO
556#define URL_BROWSER_MODE URL_DONT_ESCAPE_EXTRA_INFO
557
558#define URL_INTERNAL_PATH 0x00800000 /* Will escape #'s in paths */
559#define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
560#define URL_CONVERT_IF_DOSPATH 0x00200000
561#define URL_UNESCAPE_INPLACE 0x00100000
562
563#define URL_FILE_USE_PATHURL 0x00010000
564
565#define URL_ESCAPE_SEGMENT_ONLY 0x00002000
566#define URL_ESCAPE_PERCENT 0x00001000
Huw D M Daviesf6c72222001-01-05 22:22:57 +0000567
Jon Griffiths603f20f2001-12-11 00:30:17 +0000568HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
569HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
570#define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme)
Juergen Schmied51c74d82000-04-28 20:23:46 +0000571
Jon Griffiths603f20f2001-12-11 00:30:17 +0000572HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
573HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
574#define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
Juergen Schmied0d18aad2000-06-01 23:25:44 +0000575
Jon Griffiths603f20f2001-12-11 00:30:17 +0000576HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
577HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
578#define UrlCombine WINELIB_NAME_AW(UrlCombine)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000579
Jon Griffiths603f20f2001-12-11 00:30:17 +0000580INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
581INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
582#define UrlCompare WINELIB_NAME_AW(UrlCompare)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000583
Jon Griffiths603f20f2001-12-11 00:30:17 +0000584HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
585HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
586#define UrlEscape WINELIB_NAME_AW(UrlEscape)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000587
Jon Griffiths603f20f2001-12-11 00:30:17 +0000588#define UrlEscapeSpacesA(x,y,z) UrlCanonicalizeA(x, y, z, \
589 URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
590#define UrlEscapeSpacesW(x,y,z) UrlCanonicalizeW(x, y, z, \
591 URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
592#define UrlEscapeSpaces WINELIB_NAME_AW(UrlEscapeSpaces)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000593
Jon Griffiths603f20f2001-12-11 00:30:17 +0000594LPCSTR WINAPI UrlGetLocationA(LPCSTR);
595LPCWSTR WINAPI UrlGetLocationW(LPCWSTR);
596#define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000597
Jon Griffiths603f20f2001-12-11 00:30:17 +0000598HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
599HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
600#define UrlGetPart WINELIB_NAME_AW(UrlGetPart)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000601
Jon Griffiths603f20f2001-12-11 00:30:17 +0000602BOOL WINAPI HashData(const unsigned char *,INT,unsigned char *lpDest,INT);
Huw D M Davies62519ab2001-01-07 21:50:52 +0000603
Jon Griffiths603f20f2001-12-11 00:30:17 +0000604HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,INT);
605HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,INT);
606#define UrlHash WINELIB_NAME_AW(UrlHash)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000607
Jon Griffiths603f20f2001-12-11 00:30:17 +0000608BOOL WINAPI UrlIsA(LPCSTR,URLIS);
609BOOL WINAPI UrlIsW(LPCWSTR,URLIS);
610#define UrlIs WINELIB_NAME_AW(UrlIs)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000611
Jon Griffiths603f20f2001-12-11 00:30:17 +0000612BOOL WINAPI UrlIsNoHistoryA(LPCSTR);
613BOOL WINAPI UrlIsNoHistoryW(LPCWSTR);
614#define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000615
Jon Griffiths603f20f2001-12-11 00:30:17 +0000616BOOL WINAPI UrlIsOpaqueA(LPCSTR);
617BOOL WINAPI UrlIsOpaqueW(LPCWSTR);
618#define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000619
Jon Griffiths603f20f2001-12-11 00:30:17 +0000620#define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL)
621#define UrlIsFileUrlW(y) UrlIsW(x, URLIS_FILEURL)
622#define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000623
Jon Griffiths603f20f2001-12-11 00:30:17 +0000624HRESULT WINAPI UrlUnescapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
625HRESULT WINAPI UrlUnescapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
626#define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000627
Jon Griffiths603f20f2001-12-11 00:30:17 +0000628#define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \
629 y | URL_UNESCAPE_INPLACE)
630#define UrlUnescapeInPlaceW(x,y) UrlUnescapeW(x, NULL, NULL, \
631 y | URL_UNESCAPE_INPLACE)
632#define UrlUnescapeInPlace WINELIB_AW_NAME(UrlUnescapeInPlace)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000633
Jon Griffiths603f20f2001-12-11 00:30:17 +0000634HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
635HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
636#define UrlCreateFromPath WINELIB_AW_NAME(UrlCreateFromPath)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000637
Jon Griffiths603f20f2001-12-11 00:30:17 +0000638#endif /* NO_SHLWAPI_PATH */
Huw D M Davies62519ab2001-01-07 21:50:52 +0000639
Huw D M Davies62519ab2001-01-07 21:50:52 +0000640
Jon Griffiths603f20f2001-12-11 00:30:17 +0000641/* String functions */
642#ifndef NO_SHLWAPI_STRFCNS
Huw D M Davies62519ab2001-01-07 21:50:52 +0000643
Jon Griffiths603f20f2001-12-11 00:30:17 +0000644/* StrToIntEx flags */
645#define STIF_DEFAULT 0x0L
646#define STIF_SUPPORT_HEX 0x1L
Huw D M Davies62519ab2001-01-07 21:50:52 +0000647
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000648BOOL WINAPI ChrCmpIA (WORD,WORD);
649BOOL WINAPI ChrCmpIW (WCHAR,WCHAR);
Guy L. Albertelli905f04a2001-12-01 00:36:18 +0000650#define ChrCmpI WINELIB_NAME_AW(ChrCmpI)
651
Jon Griffiths603f20f2001-12-11 00:30:17 +0000652INT WINAPI StrCSpnA(LPCSTR,LPCSTR);
653INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000654#define StrCSpn WINELIB_NAME_AW(StrCSpn)
655
Jon Griffiths603f20f2001-12-11 00:30:17 +0000656INT WINAPI StrCSpnIA(LPCSTR,LPCSTR);
657INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000658#define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
659
660#define StrCatA lstrcatA
Jon Griffiths603f20f2001-12-11 00:30:17 +0000661LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000662#define StrCat WINELIB_NAME_AW(StrCat)
663
Jon Griffiths603f20f2001-12-11 00:30:17 +0000664LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT);
665LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000666#define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
667
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000668DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR);
669
Jon Griffiths603f20f2001-12-11 00:30:17 +0000670LPSTR WINAPI StrChrA(LPCSTR,WORD);
671LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
Juergen Schmied13d74c52000-06-13 03:45:52 +0000672#define StrChr WINELIB_NAME_AW(StrChr)
673
Jon Griffiths18176e32002-08-19 23:57:27 +0000674LPSTR WINAPI StrChrIA(LPCSTR,WORD);
Jon Griffiths603f20f2001-12-11 00:30:17 +0000675LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000676#define StrChrI WINELIB_NAME_AW(StrChrI)
677
Jon Griffiths603f20f2001-12-11 00:30:17 +0000678#define StrCmpA lstrcmpA
679int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
680#define StrCmp WINELIB_NAME_AW(StrCmp)
Guy L. Albertelliad381592001-11-13 21:28:21 +0000681
Jon Griffiths603f20f2001-12-11 00:30:17 +0000682#define StrCmpIA lstrcmpiA
683int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
684#define StrCmpI WINELIB_NAME_AW(StrCmpI)
685
686#define StrCpyA lstrcpyA
687LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
688#define StrCpy WINELIB_NAME_AW(StrCpy)
689
690#define StrCpyNA lstrcpynA
691LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int);
692#define StrCpyN WINELIB_NAME_AW(StrCpyN)
693#define StrNCpy WINELIB_NAME_AW(StrCpyN)
694
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000695INT WINAPI StrCmpLogicalW(LPCWSTR,LPCWSTR);
696
Jon Griffiths603f20f2001-12-11 00:30:17 +0000697INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT);
698INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000699#define StrCmpN WINELIB_NAME_AW(StrCmpN)
Jon Griffiths603f20f2001-12-11 00:30:17 +0000700#define StrNCmp WINELIB_NAME_AW(StrCmpN)
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000701
Jon Griffiths603f20f2001-12-11 00:30:17 +0000702INT WINAPI StrCmpNIA(LPCSTR,LPCSTR,INT);
703INT WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,INT);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000704#define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
Jon Griffiths603f20f2001-12-11 00:30:17 +0000705#define StrNCmpI WINELIB_NAME_AW(StrCmpNI)
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000706
Jon Griffiths603f20f2001-12-11 00:30:17 +0000707LPSTR WINAPI StrDupA(LPCSTR);
708LPWSTR WINAPI StrDupW(LPCWSTR);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000709#define StrDup WINELIB_NAME_AW(StrDup)
710
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000711HRESULT WINAPI SHStrDupA(LPCSTR,WCHAR**);
712HRESULT WINAPI SHStrDupW(LPCWSTR,WCHAR**);
713#define SHStrDup WINELIB_NAME_AW(SHStrDup)
714
Jon Griffiths603f20f2001-12-11 00:30:17 +0000715LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT);
Jon Griffiths91ec8e12002-09-20 19:41:08 +0000716
717/* A/W Pairing is broken for this function */
718LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT);
719LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT);
Dimitrie O. Paun8b366812003-01-04 00:52:18 +0000720#ifndef __WINESRC__
Jon Griffiths91ec8e12002-09-20 19:41:08 +0000721#ifdef UNICODE
722#define StrFormatByteSize StrFormatByteSizeW
723#else
724#define StrFormatByteSize StrFormatByteSize64A
725#endif
726#endif
Huw D M Davies62519ab2001-01-07 21:50:52 +0000727
Jon Griffiths603f20f2001-12-11 00:30:17 +0000728int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
729int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
730#define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval)
Guy L. Albertelliad381592001-11-13 21:28:21 +0000731
Jon Griffiths603f20f2001-12-11 00:30:17 +0000732BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
733BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
734#define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual)
735
736#define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c)
737#define StrIntlEqNW(a,b,c) StrIsIntlEqualW(TRUE,a,b,c)
738
739#define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c)
740#define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c)
741
742LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int);
743LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int);
744#define StrNCat WINELIB_NAME_AW(StrNCat)
745#define StrCatN WINELIB_NAME_AW(StrNCat)
746
747LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR);
748LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
749#define StrPBrk WINELIB_NAME_AW(StrPBrk)
750
751LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
752LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD);
Guy L. Albertelliad381592001-11-13 21:28:21 +0000753#define StrRChr WINELIB_NAME_AW(StrRChr)
754
Jon Griffiths603f20f2001-12-11 00:30:17 +0000755LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
756LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD);
Guy L. Albertelliad381592001-11-13 21:28:21 +0000757#define StrRChrI WINELIB_NAME_AW(StrRChrI)
758
Jon Griffiths603f20f2001-12-11 00:30:17 +0000759LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
760LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
761#define StrRStrI WINELIB_NAME_AW(StrRStrI)
762
763int WINAPI StrSpnA(LPCSTR,LPCSTR);
764int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
765#define StrSpn WINELIB_NAME_AW(StrSpn)
766
767LPSTR WINAPI StrStrA(LPCSTR,LPCSTR);
768LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
Guy L. Albertelliad381592001-11-13 21:28:21 +0000769#define StrStr WINELIB_NAME_AW(StrStr)
770
Jon Griffiths603f20f2001-12-11 00:30:17 +0000771LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR);
772LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
Guy L. Albertelliad381592001-11-13 21:28:21 +0000773#define StrStrI WINELIB_NAME_AW(StrStrI)
774
Jon Griffiths603f20f2001-12-11 00:30:17 +0000775int WINAPI StrToIntA(LPCSTR);
776int WINAPI StrToIntW(LPCWSTR);
Guy L. Albertelliad381592001-11-13 21:28:21 +0000777#define StrToInt WINELIB_NAME_AW(StrToInt)
Jon Griffiths603f20f2001-12-11 00:30:17 +0000778#define StrToLong WINELIB_NAME_AW(StrToInt)
Guy L. Albertelliad381592001-11-13 21:28:21 +0000779
Jon Griffiths603f20f2001-12-11 00:30:17 +0000780BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
781BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
Guy L. Albertelliad381592001-11-13 21:28:21 +0000782#define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
783
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000784BOOL WINAPI StrToInt64ExA(LPCSTR,DWORD,LONGLONG*);
785BOOL WINAPI StrToInt64ExW(LPCWSTR,DWORD,LONGLONG*);
786#define StrToIntEx64 WINELIB_NAME_AW(StrToIntEx64)
787
Jon Griffiths603f20f2001-12-11 00:30:17 +0000788BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
789BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
Guy L. Albertelliad381592001-11-13 21:28:21 +0000790#define StrTrim WINELIB_NAME_AW(StrTrim)
791
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000792INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,va_list);
793INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,va_list);
Peter Hunnisettd50a5b32001-07-10 19:12:40 +0000794#define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
795
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000796INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...);
797INT WINAPIV wnsprintfW(LPWSTR,INT,LPCWSTR, ...);
Peter Hunnisettd50a5b32001-07-10 19:12:40 +0000798#define wnsprintf WINELIB_NAME_AW(wnsprintf)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000799
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000800HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*);
801
802BOOL IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
803BOOL IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
804#define IntlStrEqWorker WINELIB_NAME_AW(IntlStrEqWorker)
805
806#define IntlStrEqNA(s1,s2,n) IntlStrEqWorkerA(TRUE,s1,s2,n)
807#define IntlStrEqNW(s1,s2,n) IntlStrEqWorkerW(TRUE,s1,s2,n)
808#define IntlStrEqN WINELIB_NAME_AW(IntlStrEqN)
809
810#define IntlStrEqNIA(s1,s2,n) IntlStrEqWorkerA(FALSE,s1,s2,n)
811#define IntlStrEqNIW(s1,s2,n) IntlStrEqWorkerW(FALSE,s1,s2,n)
812#define IntlStrEqNI WINELIB_NAME_AW(IntlStrEqNI)
813
Jon Griffiths603f20f2001-12-11 00:30:17 +0000814/* Undocumented */
Alexandre Julliard74af67e2000-09-26 00:00:55 +0000815struct _STRRET;
816struct _ITEMIDLIST;
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000817
818HRESULT WINAPI StrRetToStrA(struct _STRRET*,const struct _ITEMIDLIST*,LPSTR*);
819HRESULT WINAPI StrRetToStrW(struct _STRRET*,const struct _ITEMIDLIST*,LPWSTR*);
820#define StrRetToStr WINELIB_NAME_AW(StrRetToStr)
821
822HRESULT WINAPI StrRetToBufA(struct _STRRET*,const struct _ITEMIDLIST*,LPSTR,DWORD);
823HRESULT WINAPI StrRetToBufW(struct _STRRET*,const struct _ITEMIDLIST*,LPWSTR,DWORD);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000824#define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
825
Jon Griffiths603f20f2001-12-11 00:30:17 +0000826#endif /* NO_SHLWAPI_STRFCNS */
Guy Albertelliaafec982001-11-06 22:31:19 +0000827
828
Jon Griffiths603f20f2001-12-11 00:30:17 +0000829/* GDI functions */
830#ifndef NO_SHLWAPI_GDI
Guy L. Albertelli06fb2132001-10-21 15:09:36 +0000831
Jon Griffiths603f20f2001-12-11 00:30:17 +0000832HPALETTE WINAPI SHCreateShellPalette(HDC);
Guy L. Albertelli06fb2132001-10-21 15:09:36 +0000833
Jon Griffiths603f20f2001-12-11 00:30:17 +0000834COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
Guy L. Albertelli06fb2132001-10-21 15:09:36 +0000835
Jon Griffiths603f20f2001-12-11 00:30:17 +0000836COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
Guy L. Albertelli06fb2132001-10-21 15:09:36 +0000837
Jon Griffiths603f20f2001-12-11 00:30:17 +0000838VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD);
Guy L. Albertelli06fb2132001-10-21 15:09:36 +0000839
Jon Griffiths603f20f2001-12-11 00:30:17 +0000840#endif /* NO_SHLWAPI_GDI */
Guy Albertelliaafec982001-11-06 22:31:19 +0000841
Guy Albertelliaafec982001-11-06 22:31:19 +0000842
Jon Griffiths603f20f2001-12-11 00:30:17 +0000843/* Stream functions */
Alexandre Julliardaae3cb62003-04-11 00:31:02 +0000844#if !defined(NO_SHLWAPI_STREAM) && defined(IStream_METHODS)
Guy Albertelliaafec982001-11-06 22:31:19 +0000845
Jon Griffiths603f20f2001-12-11 00:30:17 +0000846IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
847IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000848#define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream2) /* Uses version 2 */
Guy Albertelliaafec982001-11-06 22:31:19 +0000849
Jon Griffiths603f20f2001-12-11 00:30:17 +0000850IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
851IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
852#define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2)
Guy Albertelliaafec982001-11-06 22:31:19 +0000853
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000854HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,IStream**);
855HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,IStream**);
856#define SHCreateStreamOnFile WINELIB_NAME_AW(SHCreateStreamOnFile)
857
858HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,IStream*,IStream**);
859
Jon Griffithsab9bb9c2003-03-15 19:41:03 +0000860HRESULT WINAPI SHCreateStreamWrapper(LPBYTE,DWORD,DWORD,IStream**);
861
Jon Griffiths603f20f2001-12-11 00:30:17 +0000862#endif /* NO_SHLWAPI_STREAM */
Guy Albertelliaafec982001-11-06 22:31:19 +0000863
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000864/* SHAutoComplete flags */
865#define SHACF_DEFAULT 0x00000000
866#define SHACF_FILESYSTEM 0x00000001
867#define SHACF_URLHISTORY 0x00000002
868#define SHACF_URLMRU 0x00000004
869#define SHACF_URLALL (SHACF_URLHISTORY|SHACF_URLMRU)
870#define SHACF_USETAB 0x00000008
871#define SHACF_FILESYS_ONLY 0x00000010
872#define SHACF_FILESYS_DIRS 0x00000020
873#define SHACF_AUTOSUGGEST_FORCE_ON 0x10000000
874#define SHACF_AUTOSUGGEST_FORCE_OFF 0x20000000
875#define SHACF_AUTOAPPEND_FORCE_ON 0x40000000
876#define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000
877
878HRESULT WINAPI SHAutoComplete(HWND,DWORD);
879
880/* Threads */
Alexandre Julliardaae3cb62003-04-11 00:31:02 +0000881#if defined(IUnknown_METHODS)
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000882HRESULT WINAPI SHGetThreadRef(IUnknown**);
883HRESULT WINAPI SHSetThreadRef(IUnknown*);
884#endif
885HRESULT WINAPI SHReleaseThreadRef();
886
887/* SHCreateThread flags */
888#define CTF_INSIST 0x01 /* Allways call */
889#define CTF_THREAD_REF 0x02 /* Hold thread ref */
890#define CTF_PROCESS_REF 0x04 /* Hold process ref */
891#define CTF_COINIT 0x08 /* Startup COM first */
892#define CTF_FREELIBANDEXIT 0x10 /* Hold DLL ref */
893#define CTF_REF_COUNTED 0x20 /* Thread is ref counted */
894#define CTF_WAIT_ALLOWCOM 0x40 /* Allow marshalling */
895
896BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE);
897
Alexandre Julliardaae3cb62003-04-11 00:31:02 +0000898#if defined(IBindCtx_METHODS)
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000899BOOL WINAPI SHSkipJunction(IBindCtx*,const CLSID*);
900#endif
Guy Albertelliaafec982001-11-06 22:31:19 +0000901
Jon Griffiths603f20f2001-12-11 00:30:17 +0000902/* Version Information */
Huw D M Daviesf6c72222001-01-05 22:22:57 +0000903
Francois Gouget8aa79fb2000-09-29 01:03:30 +0000904typedef struct _DllVersionInfo {
905 DWORD cbSize;
906 DWORD dwMajorVersion;
907 DWORD dwMinorVersion;
908 DWORD dwBuildNumber;
909 DWORD dwPlatformID;
910} DLLVERSIONINFO;
911
Jon Griffiths603f20f2001-12-11 00:30:17 +0000912#define DLLVER_PLATFORM_WINDOWS 0x01 /* Win9x */
913#define DLLVER_PLATFORM_NT 0x02 /* WinNT */
Francois Gouget8aa79fb2000-09-29 01:03:30 +0000914
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000915typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *);
Francois Gouget8aa79fb2000-09-29 01:03:30 +0000916
Jon Griffithsb8a70d82002-07-22 20:30:58 +0000917typedef struct _DLLVERSIONINFO2 {
918 DLLVERSIONINFO info1;
919 DWORD dwFlags; /* Reserved */
920 ULONGLONG ullVersion; /* 16 bits each for Major, Minor, Build, QFE */
921} DLLVERSIONINFO2;
922
923#define DLLVER_MAJOR_MASK 0xFFFF000000000000
924#define DLLVER_MINOR_MASK 0x0000FFFF00000000
925#define DLLVER_BUILD_MASK 0x00000000FFFF0000
926#define DLLVER_QFE_MASK 0x000000000000FFFF
927
928#define MAKEDLLVERULL(mjr, mnr, bld, qfe) (((ULONGLONG)(mjr)<< 48)| \
929 ((ULONGLONG)(mnr)<< 32) | ((ULONGLONG)(bld)<< 16) | (ULONGLONG)(qfe))
930
931HRESULT WINAPI DllInstall(BOOL,LPCWSTR);
932
Patrik Stridvallced69a92002-11-12 01:05:00 +0000933#include "poppack.h"
934
Juergen Schmied51c74d82000-04-28 20:23:46 +0000935#ifdef __cplusplus
936} /* extern "C" */
937#endif /* defined(__cplusplus) */
938
939#endif /* __WINE_SHLWAPI_H */