blob: 6368beb92064cc2d2930602db0f27badae21ecf9 [file] [log] [blame]
Juergen Schmied51c74d82000-04-28 20:23:46 +00001#ifndef __WINE_SHLWAPI_H
2#define __WINE_SHLWAPI_H
3
Alexandre Julliard74af67e2000-09-26 00:00:55 +00004#include "objbase.h"
Juergen Schmied51c74d82000-04-28 20:23:46 +00005
6#ifdef __cplusplus
7extern "C" {
8#endif /* defined(__cplusplus) */
9
Huw D M Daviesf6c72222001-01-05 22:22:57 +000010
Marcus Meissner784fd592001-05-29 20:51:53 +000011/* Mask returned by GetPathCharType */
12#define GCT_INVALID 0x0000
13#define GCT_LFNCHAR 0x0001
14#define GCT_SHORTCHAR 0x0002
15#define GCT_WILD 0x0004
16#define GCT_SEPARATOR 0x0008
17
Huw D M Daviesf6c72222001-01-05 22:22:57 +000018/*
19 * The URL_ defines were determined by trial and error. If they become
20 * documented please check them and add the missing ones including:
21 *
22 * URL_ESCAPE_PERCENT
23 * URL_PLUGGABLE_PROTOCOL
24 * URL_DONT_ESCAPE_EXTRA_INFO
25 * URL_ESCAPE_SEGMENT_ONLY
26 */
27
28#define URL_UNESCAPE_INPLACE 0x00100000
29#define URL_DONT_UNESCAPE_EXTRA_INFO 0x02000000
30
31#define URL_ESCAPE_SPACES_ONLY 0x04000000
32
33#define URL_UNESCAPE 0x10000000
34#define URL_ESCAPE_UNSAFE 0x20000000
35#define URL_DONT_SIMPLIFY 0x40000000
36
Huw D M Davies62519ab2001-01-07 21:50:52 +000037LPSTR WINAPI PathAddBackslashA(LPSTR path);
38LPWSTR WINAPI PathAddBackslashW(LPWSTR path);
39#define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
Juergen Schmied51c74d82000-04-28 20:23:46 +000040
Juergen Schmied0d18aad2000-06-01 23:25:44 +000041BOOL WINAPI PathAddExtensionA(LPSTR pszPath, LPCSTR pszExt);
42BOOL WINAPI PathAddExtensionW(LPWSTR pszPath, LPCWSTR pszExt);
43#define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
44
Huw D M Davies62519ab2001-01-07 21:50:52 +000045BOOL WINAPI PathAppendA(LPSTR lpszPath1,LPCSTR lpszPath2);
46BOOL WINAPI PathAppendW(LPWSTR lpszPath1,LPCWSTR lpszPath2);
47#define PathAppend WINELIB_NAME_AW(PathAppend)
48
49LPSTR WINAPI PathBuildRootA(LPSTR lpszPath, int drive);
50LPWSTR WINAPI PathBuildRootW(LPWSTR lpszPath, int drive);
51#define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
52
53BOOL WINAPI PathCanonicalizeA(LPSTR lpszDst, LPCSTR lpszSrc);
54BOOL WINAPI PathCanonicalizeW(LPWSTR lpszDst, LPCWSTR lpszSrc);
55#define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
56
57LPSTR WINAPI PathCombineA(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
58LPWSTR WINAPI PathCombineW(LPWSTR szDest, LPCWSTR lpszDir, LPCWSTR lpszFile);
59#define PathCombine WINELIB_NAME_AW(PathCombine)
60
61BOOL WINAPI PathFileExistsA(LPCSTR lpszPath);
62BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath);
63#define PathFileExists WINELIB_NAME_AW(PathFileExists)
64
65LPSTR WINAPI PathFindExtensionA(LPCSTR path);
66LPWSTR WINAPI PathFindExtensionW(LPCWSTR path);
67#define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
68
69LPSTR WINAPI PathFindFileNameA(LPCSTR pPath);
70LPWSTR WINAPI PathFindFileNameW(LPCWSTR pPath);
71#define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
72
73LPSTR WINAPI PathFindNextComponentA(LPCSTR pszPath);
74LPWSTR WINAPI PathFindNextComponentW(LPCWSTR pszPath);
75#define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
76
77BOOL WINAPI PathFindOnPathA(LPSTR sFile, LPCSTR sOtherDirs);
78BOOL WINAPI PathFindOnPathW(LPWSTR sFile, LPCWSTR sOtherDirs);
79#define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
80
81LPSTR WINAPI PathGetArgsA(LPCSTR lpszPath);
82LPWSTR WINAPI PathGetArgsW(LPCWSTR lpszPath);
83#define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
84
85int WINAPI PathGetDriveNumberA(LPCSTR lpszPath);
86int WINAPI PathGetDriveNumberW(LPCWSTR lpszPath);
87#define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
88
89BOOL WINAPI PathIsDirectoryA(LPCSTR lpszPath);
90BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath);
91#define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
92
93BOOL WINAPI PathIsRelativeA(LPCSTR lpszPath);
94BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath);
95#define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
96
97BOOL WINAPI PathIsRootA(LPCSTR x);
98BOOL WINAPI PathIsRootW(LPCWSTR x);
99#define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
100
101BOOL WINAPI PathIsSameRootA(LPCSTR lpszPath1, LPCSTR lpszPath2);
102BOOL WINAPI PathIsSameRootW(LPCWSTR lpszPath1, LPCWSTR lpszPath2);
103#define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
104
105BOOL WINAPI PathIsUNCA(LPCSTR lpszPath);
106BOOL WINAPI PathIsUNCW(LPCWSTR lpszPath);
107#define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
108
109BOOL WINAPI PathIsURLA(LPCSTR pszPath);
110BOOL WINAPI PathIsURLW(LPCWSTR pszPath);
111#define PathIsURL WINELIB_NAME_AW(PathIsURL)
112
113BOOL WINAPI PathMatchSpecA(LPCSTR lpszPath, LPCSTR lpszSpec);
114BOOL WINAPI PathMatchSpecW(LPCWSTR lpszPath, LPCWSTR lpszSpec);
115#define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
116
117int WINAPI PathParseIconLocationA(LPSTR lpszPath);
118int WINAPI PathParseIconLocationW(LPWSTR lpszPath);
119#define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
120
121LPSTR WINAPI PathQuoteSpacesA(LPSTR path);
122LPWSTR WINAPI PathQuoteSpacesW(LPWSTR path);
123#define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
124
125void WINAPI PathRemoveArgsA(LPSTR lpszPath);
126void WINAPI PathRemoveArgsW(LPWSTR lpszPath);
127#define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
128
129LPSTR WINAPI PathRemoveBackslashA(LPSTR lpszPath);
130LPWSTR WINAPI PathRemoveBackslashW(LPWSTR lpszPath);
131#define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
132
133void WINAPI PathRemoveBlanksA(LPSTR lpszPath);
134void WINAPI PathRemoveBlanksW(LPWSTR lpszPath);
135#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
136
137void WINAPI PathRemoveExtensionA(LPSTR lpszPath);
138void WINAPI PathRemoveExtensionW(LPWSTR lpszPath);
139#define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
140
141BOOL WINAPI PathRemoveFileSpecA(LPSTR lpszPath);
142BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath);
143#define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
144
145BOOL WINAPI PathSetDlgItemPathA(HWND hDlg, int id, LPCSTR pszPath);
146BOOL WINAPI PathSetDlgItemPathW(HWND hDlg, int id, LPCWSTR pszPath);
147#define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
148
149void WINAPI PathStripPathA(LPSTR lpszPath);
150void WINAPI PathStripPathW(LPWSTR lpszPath);
151#define PathStripPath WINELIB_NAME_AW(PathStripPath)
152
Juergen Schmied0d18aad2000-06-01 23:25:44 +0000153BOOL WINAPI PathStripToRootA(LPSTR pszPath);
154BOOL WINAPI PathStripToRootW(LPWSTR pszPath);
155#define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
156
Huw D M Davies62519ab2001-01-07 21:50:52 +0000157void WINAPI PathUnquoteSpacesA(LPSTR str);
158void WINAPI PathUnquoteSpacesW(LPWSTR str);
159#define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
160
161
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000162INT WINAPI StrCSpnA(LPCSTR lpStr, LPCSTR lpSet);
163INT WINAPI StrCSpnW(LPCWSTR lpStr, LPCWSTR lpSet);
164#define StrCSpn WINELIB_NAME_AW(StrCSpn)
165
166INT WINAPI StrCSpnIA(LPCSTR lpStr, LPCSTR lpSet);
167INT WINAPI StrCSpnIW(LPCWSTR lpStr, LPCWSTR lpSet);
168#define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
169
170#define StrCatA lstrcatA
171LPWSTR WINAPI StrCatW(LPWSTR front, LPCWSTR back);
172#define StrCat WINELIB_NAME_AW(StrCat)
173
174LPSTR WINAPI StrCatBuffA(LPSTR front, LPCSTR back, INT size);
175LPWSTR WINAPI StrCatBuffW(LPWSTR front, LPCWSTR back, INT size);
176#define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
177
Juergen Schmied13d74c52000-06-13 03:45:52 +0000178LPSTR WINAPI StrChrA(LPCSTR lpStart, WORD wMatch);
179LPWSTR WINAPI StrChrW(LPCWSTR lpStart, WCHAR wMatch);
180#define StrChr WINELIB_NAME_AW(StrChr)
181
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000182LPSTR WINAPI StrChrIA(LPCSTR lpStart, WORD wMatch);
183LPWSTR WINAPI StrChrIW(LPCWSTR lpStart, WCHAR wMatch);
184#define StrChrI WINELIB_NAME_AW(StrChrI)
185
186INT WINAPI StrCmpNA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar);
187INT WINAPI StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar);
188#define StrCmpN WINELIB_NAME_AW(StrCmpN)
189
190INT WINAPI StrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, INT nChar);
191INT WINAPI StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, INT nChar);
192#define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
193
194LPSTR WINAPI StrDupA(LPCSTR lpSrc);
195LPWSTR WINAPI StrDupW(LPCWSTR lpSrc);
196#define StrDup WINELIB_NAME_AW(StrDup)
197
Huw D M Davies62519ab2001-01-07 21:50:52 +0000198LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf );
199LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf );
200#define StrFormatByteSize WINELIB_NAME_AW(StrFormatByteSize)
201
Peter Hunnisettd50a5b32001-07-10 19:12:40 +0000202INT WINAPI wvnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, va_list arglist);
203INT WINAPI wvnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, va_list arglist);
204#define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
205
206INT WINAPIV wnsprintfA(LPSTR lpOut, INT cchLimitIn, LPCSTR lpFmt, ...);
207INT WINAPIV wnsprintfW(LPWSTR lpOut, INT cchLimitIn, LPCWSTR lpFmt, ...);
208#define wnsprintf WINELIB_NAME_AW(wnsprintf)
Huw D M Davies62519ab2001-01-07 21:50:52 +0000209
210
Alexandre Julliard74af67e2000-09-26 00:00:55 +0000211struct _STRRET;
212struct _ITEMIDLIST;
213HRESULT WINAPI StrRetToBufA(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPSTR dest, DWORD len);
214HRESULT WINAPI StrRetToBufW(struct _STRRET *src, const struct _ITEMIDLIST *pidl, LPWSTR dest, DWORD len);
Huw D M Davies52b2d2c2000-09-13 20:28:31 +0000215#define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
216
Mike McCormack3112fd22000-09-29 00:25:56 +0000217HRESULT WINAPI SHDeleteKeyA(HKEY hKey, LPCSTR lpszSubKey);
218HRESULT WINAPI SHDeleteKeyW(HKEY hkey, LPCWSTR pszSubKey);
219#define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
220
221DWORD WINAPI SHDeleteEmptyKeyA(HKEY hKey, LPCSTR lpszSubKey);
222DWORD WINAPI SHDeleteEmptyKeyW(HKEY hKey, LPCWSTR lpszSubKey);
223#define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
224
Huw D M Daviesf6c72222001-01-05 22:22:57 +0000225HRESULT WINAPI UrlCanonicalizeA(LPCSTR pszUrl, LPSTR pszCanonicalized,
226 LPDWORD pcchCanonicalized, DWORD dwFlags);
227HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized,
228 LPDWORD pcchCanonicalized, DWORD dwFlags);
229#define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
230
231HRESULT WINAPI UrlEscapeA(LPCSTR pszUrl, LPSTR pszEscaped, LPDWORD pcchEscaped,
232 DWORD dwFlags);
233HRESULT WINAPI UrlEscapeW(LPCWSTR pszUrl, LPWSTR pszEscaped,
234 LPDWORD pcchEscaped, DWORD dwFlags);
235#define UrlEscape WINELIB_NAME_AW(UrlEscape)
236
237HRESULT WINAPI UrlUnescapeA(LPCSTR pszUrl, LPSTR pszUnescaped,
238 LPDWORD pcchUnescaped, DWORD dwFlags);
239HRESULT WINAPI UrlUnescapeW(LPCWSTR pszUrl, LPWSTR pszUnescaped,
240 LPDWORD pcchUnescaped, DWORD dwFlags);
241#define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
242
Francois Gouget8aa79fb2000-09-29 01:03:30 +0000243typedef struct _DllVersionInfo {
244 DWORD cbSize;
245 DWORD dwMajorVersion;
246 DWORD dwMinorVersion;
247 DWORD dwBuildNumber;
248 DWORD dwPlatformID;
249} DLLVERSIONINFO;
250
251#define DLLVER_PLATFORM_WINDOWS 0x00000001 // Windows 9x
252#define DLLVER_PLATFORM_NT 0x00000002 // Windows NT
253
Francois Gouget40774c32001-02-12 01:29:08 +0000254typedef HRESULT CALLBACK (*DLLGETVERSIONPROC)(DLLVERSIONINFO *);
Francois Gouget8aa79fb2000-09-29 01:03:30 +0000255
Juergen Schmied51c74d82000-04-28 20:23:46 +0000256#ifdef __cplusplus
257} /* extern "C" */
258#endif /* defined(__cplusplus) */
259
260#endif /* __WINE_SHLWAPI_H */