comparison fuhtark_test/include/winapi/shlwapi.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef _INC_SHLWAPI
7 #define _INC_SHLWAPI
8
9 #ifndef NOSHLWAPI
10
11 #include <objbase.h>
12 #include <shtypes.h>
13
14 #ifndef _WINRESRC_
15 #ifndef _WIN32_IE
16 #define _WIN32_IE 0x0601
17 #endif
18 #endif
19
20 #ifndef WINSHLWAPI
21 #if !defined(_SHLWAPI_)
22 #define LWSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
23 #define LWSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
24 #define LWSTDAPIV EXTERN_C DECLSPEC_IMPORT HRESULT STDAPIVCALLTYPE
25 #define LWSTDAPIV_(type) EXTERN_C DECLSPEC_IMPORT type STDAPIVCALLTYPE
26 #else
27 #define LWSTDAPI STDAPI
28 #define LWSTDAPI_(type) STDAPI_(type)
29 #define LWSTDAPIV STDAPIV
30 #define LWSTDAPIV_(type) STDAPIV_(type)
31 #endif
32 #endif
33
34 #include <pshpack8.h>
35
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39
40 #ifndef NO_SHLWAPI_STRFCNS
41 LWSTDAPI_(LPSTR) StrChrA(LPCSTR lpStart,WORD wMatch);
42 LWSTDAPI_(LPWSTR) StrChrW(LPCWSTR lpStart,WCHAR wMatch);
43 LWSTDAPI_(LPSTR) StrChrIA(LPCSTR lpStart,WORD wMatch);
44 LWSTDAPI_(LPWSTR) StrChrIW(LPCWSTR lpStart,WCHAR wMatch);
45 LWSTDAPI_(int) StrCmpNA(LPCSTR lpStr1,LPCSTR lpStr2,int nChar);
46 LWSTDAPI_(int) StrCmpNW(LPCWSTR lpStr1,LPCWSTR lpStr2,int nChar);
47 LWSTDAPI_(int) StrCmpNIA(LPCSTR lpStr1,LPCSTR lpStr2,int nChar);
48 LWSTDAPI_(int) StrCmpNIW(LPCWSTR lpStr1,LPCWSTR lpStr2,int nChar);
49 LWSTDAPI_(int) StrCSpnA(LPCSTR lpStr,LPCSTR lpSet);
50 LWSTDAPI_(int) StrCSpnW(LPCWSTR lpStr,LPCWSTR lpSet);
51 LWSTDAPI_(int) StrCSpnIA(LPCSTR lpStr,LPCSTR lpSet);
52 LWSTDAPI_(int) StrCSpnIW(LPCWSTR lpStr,LPCWSTR lpSet);
53 LWSTDAPI_(LPSTR) StrDupA(LPCSTR lpSrch);
54 LWSTDAPI_(LPWSTR) StrDupW(LPCWSTR lpSrch);
55 LWSTDAPI_(LPSTR) StrFormatByteSizeA(DWORD dw,LPSTR szBuf,UINT uiBufSize);
56 LWSTDAPI_(LPSTR) StrFormatByteSize64A(LONGLONG qdw,LPSTR szBuf,UINT uiBufSize);
57 LWSTDAPI_(LPWSTR) StrFormatByteSizeW(LONGLONG qdw,LPWSTR szBuf,UINT uiBufSize);
58 LWSTDAPI_(LPWSTR) StrFormatKBSizeW(LONGLONG qdw,LPWSTR szBuf,UINT uiBufSize);
59 LWSTDAPI_(LPSTR) StrFormatKBSizeA(LONGLONG qdw,LPSTR szBuf,UINT uiBufSize);
60 LWSTDAPI_(int) StrFromTimeIntervalA(LPSTR pszOut,UINT cchMax,DWORD dwTimeMS,int digits);
61 LWSTDAPI_(int) StrFromTimeIntervalW(LPWSTR pszOut,UINT cchMax,DWORD dwTimeMS,int digits);
62 LWSTDAPI_(WINBOOL) StrIsIntlEqualA(WINBOOL fCaseSens,LPCSTR lpString1,LPCSTR lpString2,int nChar);
63 LWSTDAPI_(WINBOOL) StrIsIntlEqualW(WINBOOL fCaseSens,LPCWSTR lpString1,LPCWSTR lpString2,int nChar);
64 LWSTDAPI_(LPSTR) StrNCatA(LPSTR psz1,LPCSTR psz2,int cchMax);
65 LWSTDAPI_(LPWSTR) StrNCatW(LPWSTR psz1,LPCWSTR psz2,int cchMax);
66 LWSTDAPI_(LPSTR) StrPBrkA(LPCSTR psz,LPCSTR pszSet);
67 LWSTDAPI_(LPWSTR) StrPBrkW(LPCWSTR psz,LPCWSTR pszSet);
68 LWSTDAPI_(LPSTR) StrRChrA(LPCSTR lpStart,LPCSTR lpEnd,WORD wMatch);
69 LWSTDAPI_(LPWSTR) StrRChrW(LPCWSTR lpStart,LPCWSTR lpEnd,WCHAR wMatch);
70 LWSTDAPI_(LPSTR) StrRChrIA(LPCSTR lpStart,LPCSTR lpEnd,WORD wMatch);
71 LWSTDAPI_(LPWSTR) StrRChrIW(LPCWSTR lpStart,LPCWSTR lpEnd,WCHAR wMatch);
72 LWSTDAPI_(LPSTR) StrRStrIA(LPCSTR lpSource,LPCSTR lpLast,LPCSTR lpSrch);
73 LWSTDAPI_(LPWSTR) StrRStrIW(LPCWSTR lpSource,LPCWSTR lpLast,LPCWSTR lpSrch);
74 LWSTDAPI_(int) StrSpnA(LPCSTR psz,LPCSTR pszSet);
75 LWSTDAPI_(int) StrSpnW(LPCWSTR psz,LPCWSTR pszSet);
76 LWSTDAPI_(LPSTR) StrStrA(LPCSTR lpFirst,LPCSTR lpSrch);
77 LWSTDAPI_(LPWSTR) StrStrW(LPCWSTR lpFirst,LPCWSTR lpSrch);
78 LWSTDAPI_(LPSTR) StrStrIA(LPCSTR lpFirst,LPCSTR lpSrch);
79 LWSTDAPI_(LPWSTR) StrStrIW(LPCWSTR lpFirst,LPCWSTR lpSrch);
80 LWSTDAPI_(int) StrToIntA(LPCSTR lpSrc);
81 LWSTDAPI_(int) StrToIntW(LPCWSTR lpSrc);
82 LWSTDAPI_(WINBOOL) StrToIntExA(LPCSTR pszString,DWORD dwFlags,int *piRet);
83 LWSTDAPI_(WINBOOL) StrToIntExW(LPCWSTR pszString,DWORD dwFlags,int *piRet);
84 #if (_WIN32_IE >= 0x0600)
85 LWSTDAPI_(WINBOOL) StrToInt64ExA(LPCSTR pszString,DWORD dwFlags,LONGLONG *pllRet);
86 LWSTDAPI_(WINBOOL) StrToInt64ExW(LPCWSTR pszString,DWORD dwFlags,LONGLONG *pllRet);
87 #endif
88 LWSTDAPI_(WINBOOL) StrTrimA(LPSTR psz,LPCSTR pszTrimChars);
89 LWSTDAPI_(WINBOOL) StrTrimW(LPWSTR psz,LPCWSTR pszTrimChars);
90 LWSTDAPI_(LPWSTR) StrCatW(LPWSTR psz1,LPCWSTR psz2);
91 LWSTDAPI_(int) StrCmpW(LPCWSTR psz1,LPCWSTR psz2);
92 LWSTDAPI_(int) StrCmpIW(LPCWSTR psz1,LPCWSTR psz2);
93 LWSTDAPI_(LPWSTR) StrCpyW(LPWSTR psz1,LPCWSTR psz2);
94 LWSTDAPI_(LPWSTR) StrCpyNW(LPWSTR psz1,LPCWSTR psz2,int cchMax);
95 LWSTDAPI_(LPWSTR) StrCatBuffW(LPWSTR pszDest,LPCWSTR pszSrc,int cchDestBuffSize);
96 LWSTDAPI_(LPSTR) StrCatBuffA(LPSTR pszDest,LPCSTR pszSrc,int cchDestBuffSize);
97 LWSTDAPI_(WINBOOL) ChrCmpIA(WORD w1,WORD w2);
98 LWSTDAPI_(WINBOOL) ChrCmpIW(WCHAR w1,WCHAR w2);
99 LWSTDAPI_(int) wvnsprintfA(LPSTR lpOut,int cchLimitIn,LPCSTR lpFmt,va_list arglist);
100 LWSTDAPI_(int) wvnsprintfW(LPWSTR lpOut,int cchLimitIn,LPCWSTR lpFmt,va_list arglist);
101 LWSTDAPIV_(int) wnsprintfA(LPSTR lpOut,int cchLimitIn,LPCSTR lpFmt,...);
102 LWSTDAPIV_(int) wnsprintfW(LPWSTR lpOut,int cchLimitIn,LPCWSTR lpFmt,...);
103
104 #define StrIntlEqNA(s1,s2,nChar) StrIsIntlEqualA(TRUE,s1,s2,nChar)
105 #define StrIntlEqNW(s1,s2,nChar) StrIsIntlEqualW(TRUE,s1,s2,nChar)
106 #define StrIntlEqNIA(s1,s2,nChar) StrIsIntlEqualA(FALSE,s1,s2,nChar)
107 #define StrIntlEqNIW(s1,s2,nChar) StrIsIntlEqualW(FALSE,s1,s2,nChar)
108
109 #ifdef UNICODE
110 #define StrRetToStr StrRetToStrW
111 #define StrRetToBuf StrRetToBufW
112 #define SHStrDup SHStrDupW
113 #else
114 #define StrRetToStr StrRetToStrA
115 #define StrRetToBuf StrRetToBufA
116 #define SHStrDup SHStrDupA
117 #endif
118
119 LWSTDAPI StrRetToStrA(STRRET *pstr,LPCITEMIDLIST pidl,LPSTR *ppsz);
120 LWSTDAPI StrRetToStrW(STRRET *pstr,LPCITEMIDLIST pidl,LPWSTR *ppsz);
121 LWSTDAPI StrRetToBufA(STRRET *pstr,LPCITEMIDLIST pidl,LPSTR pszBuf,UINT cchBuf);
122 LWSTDAPI StrRetToBufW(STRRET *pstr,LPCITEMIDLIST pidl,LPWSTR pszBuf,UINT cchBuf);
123 LWSTDAPI StrRetToBSTR(STRRET *pstr,LPCITEMIDLIST pidl,BSTR *pbstr);
124 LWSTDAPI SHStrDupA(LPCSTR psz,WCHAR **ppwsz);
125 LWSTDAPI SHStrDupW(LPCWSTR psz,WCHAR **ppwsz);
126 LWSTDAPI_(int) StrCmpLogicalW(LPCWSTR psz1,LPCWSTR psz2);
127 LWSTDAPI_(DWORD) StrCatChainW(LPWSTR pszDst,DWORD cchDst,DWORD ichAt,LPCWSTR pszSrc);
128 LWSTDAPI SHLoadIndirectString(LPCWSTR pszSource,LPWSTR pszOutBuf,UINT cchOutBuf,void **ppvReserved);
129 #if (_WIN32_IE >= 0x0603)
130 LWSTDAPI_(WINBOOL) IsCharSpaceA(CHAR wch);
131 LWSTDAPI_(WINBOOL) IsCharSpaceW(WCHAR wch);
132 #ifdef UNICODE
133 #define IsCharSpace IsCharSpaceW
134 #else
135 #define IsCharSpace IsCharSpaceA
136 #endif
137
138 LWSTDAPI_(int) StrCmpCA(LPCSTR pszStr1,LPCSTR pszStr2);
139 LWSTDAPI_(int) StrCmpCW(LPCWSTR pszStr1,LPCWSTR pszStr2);
140 #ifdef UNICODE
141 #define StrCmpC StrCmpCW
142 #else
143 #define StrCmpC StrCmpCA
144 #endif
145
146 LWSTDAPI_(int) StrCmpICA(LPCSTR pszStr1,LPCSTR pszStr2);
147 LWSTDAPI_(int) StrCmpICW(LPCWSTR pszStr1,LPCWSTR pszStr2);
148 #ifdef UNICODE
149 #define StrCmpIC StrCmpICW
150 #else
151 #define StrCmpIC StrCmpICA
152 #endif
153 #endif
154
155 #ifdef UNICODE
156 #define StrChr StrChrW
157 #define StrRChr StrRChrW
158 #define StrChrI StrChrIW
159 #define StrRChrI StrRChrIW
160 #define StrCmpN StrCmpNW
161 #define StrCmpNI StrCmpNIW
162 #define StrStr StrStrW
163 #define StrStrI StrStrIW
164 #define StrDup StrDupW
165 #define StrRStrI StrRStrIW
166 #define StrCSpn StrCSpnW
167 #define StrCSpnI StrCSpnIW
168 #define StrSpn StrSpnW
169 #define StrToInt StrToIntW
170 #define StrPBrk StrPBrkW
171 #define StrToIntEx StrToIntExW
172 #if (_WIN32_IE >= 0x0600)
173 #define StrToInt64Ex StrToInt64ExW
174 #endif
175 #define StrFromTimeInterval StrFromTimeIntervalW
176 #define StrIntlEqN StrIntlEqNW
177 #define StrIntlEqNI StrIntlEqNIW
178 #define StrFormatByteSize StrFormatByteSizeW
179 #define StrFormatByteSize64 StrFormatByteSizeW
180 #define StrFormatKBSize StrFormatKBSizeW
181 #define StrNCat StrNCatW
182 #define StrTrim StrTrimW
183 #define StrCatBuff StrCatBuffW
184 #define ChrCmpI ChrCmpIW
185 #define wvnsprintf wvnsprintfW
186 #define wnsprintf wnsprintfW
187 #define StrIsIntlEqual StrIsIntlEqualW
188 #else
189 #define StrChr StrChrA
190 #define StrRChr StrRChrA
191 #define StrChrI StrChrIA
192 #define StrRChrI StrRChrIA
193 #define StrCmpN StrCmpNA
194 #define StrCmpNI StrCmpNIA
195 #define StrStr StrStrA
196 #define StrStrI StrStrIA
197 #define StrDup StrDupA
198 #define StrRStrI StrRStrIA
199 #define StrCSpn StrCSpnA
200 #define StrCSpnI StrCSpnIA
201 #define StrSpn StrSpnA
202 #define StrToInt StrToIntA
203 #define StrPBrk StrPBrkA
204 #define StrToIntEx StrToIntExA
205 #if (_WIN32_IE >= 0x0600)
206 #define StrToInt64Ex StrToInt64ExA
207 #endif
208 #define StrFromTimeInterval StrFromTimeIntervalA
209 #define StrIntlEqN StrIntlEqNA
210 #define StrIntlEqNI StrIntlEqNIA
211 #define StrFormatByteSize StrFormatByteSizeA
212 #define StrFormatByteSize64 StrFormatByteSize64A
213 #define StrFormatKBSize StrFormatKBSizeA
214 #define StrNCat StrNCatA
215 #define StrTrim StrTrimA
216 #define StrCatBuff StrCatBuffA
217 #define ChrCmpI ChrCmpIA
218 #define wvnsprintf wvnsprintfA
219 #define wnsprintf wnsprintfA
220 #define StrIsIntlEqual StrIsIntlEqualA
221 #endif
222
223 LWSTDAPI_(WINBOOL) IntlStrEqWorkerA(WINBOOL fCaseSens,LPCSTR lpString1,LPCSTR lpString2,int nChar);
224 LWSTDAPI_(WINBOOL) IntlStrEqWorkerW(WINBOOL fCaseSens,LPCWSTR lpString1,LPCWSTR lpString2,int nChar);
225
226 #define IntlStrEqNA(s1,s2,nChar) IntlStrEqWorkerA(TRUE,s1,s2,nChar)
227 #define IntlStrEqNW(s1,s2,nChar) IntlStrEqWorkerW(TRUE,s1,s2,nChar)
228 #define IntlStrEqNIA(s1,s2,nChar) IntlStrEqWorkerA(FALSE,s1,s2,nChar)
229 #define IntlStrEqNIW(s1,s2,nChar) IntlStrEqWorkerW(FALSE,s1,s2,nChar)
230
231 #ifdef UNICODE
232 #define IntlStrEqN IntlStrEqNW
233 #define IntlStrEqNI IntlStrEqNIW
234 #else
235 #define IntlStrEqN IntlStrEqNA
236 #define IntlStrEqNI IntlStrEqNIA
237 #endif
238
239 #define SZ_CONTENTTYPE_HTMLA "text/html"
240 #define SZ_CONTENTTYPE_HTMLW L"text/html"
241 #define SZ_CONTENTTYPE_CDFA "application/x-cdf"
242 #define SZ_CONTENTTYPE_CDFW L"application/x-cdf"
243
244 #ifdef UNICODE
245 #define SZ_CONTENTTYPE_HTML SZ_CONTENTTYPE_HTMLW
246 #define SZ_CONTENTTYPE_CDF SZ_CONTENTTYPE_CDFW
247 #else
248 #define SZ_CONTENTTYPE_HTML SZ_CONTENTTYPE_HTMLA
249 #define SZ_CONTENTTYPE_CDF SZ_CONTENTTYPE_CDFA
250 #endif
251
252 #define PathIsHTMLFileA(pszPath) PathIsContentTypeA(pszPath,SZ_CONTENTTYPE_HTMLA)
253 #define PathIsHTMLFileW(pszPath) PathIsContentTypeW(pszPath,SZ_CONTENTTYPE_HTMLW)
254
255 #define STIF_DEFAULT 0x00000000L
256 #define STIF_SUPPORT_HEX 0x00000001L
257
258 #define StrCatA lstrcatA
259 #define StrCmpA lstrcmpA
260 #define StrCmpIA lstrcmpiA
261 #define StrCpyA lstrcpyA
262 #define StrCpyNA lstrcpynA
263
264 #define StrToLong StrToInt
265 #define StrNCmp StrCmpN
266 #define StrNCmpI StrCmpNI
267 #define StrNCpy StrCpyN
268 #define StrCatN StrNCat
269
270 #ifdef UNICODE
271 #define StrCat StrCatW
272 #define StrCmp StrCmpW
273 #define StrCmpI StrCmpIW
274 #define StrCpy StrCpyW
275 #define StrCpyN StrCpyNW
276 #define StrCatBuff StrCatBuffW
277 #else
278 #define StrCat lstrcatA
279 #define StrCmp lstrcmpA
280 #define StrCmpI lstrcmpiA
281 #define StrCpy lstrcpyA
282 #define StrCpyN lstrcpynA
283 #define StrCatBuff StrCatBuffA
284 #endif
285 #endif
286
287 #ifndef NO_SHLWAPI_PATH
288
289 LWSTDAPI_(LPSTR) PathAddBackslashA(LPSTR pszPath);
290 LWSTDAPI_(LPWSTR) PathAddBackslashW(LPWSTR pszPath);
291 #ifdef UNICODE
292 #define PathAddBackslash PathAddBackslashW
293 #else
294 #define PathAddBackslash PathAddBackslashA
295 #endif
296 LWSTDAPI_(WINBOOL) PathAddExtensionA(LPSTR pszPath,LPCSTR pszExt);
297 LWSTDAPI_(WINBOOL) PathAddExtensionW(LPWSTR pszPath,LPCWSTR pszExt);
298 #ifdef UNICODE
299 #define PathAddExtension PathAddExtensionW
300 #else
301 #define PathAddExtension PathAddExtensionA
302 #endif
303 LWSTDAPI_(WINBOOL) PathAppendA(LPSTR pszPath,LPCSTR pMore);
304 LWSTDAPI_(WINBOOL) PathAppendW(LPWSTR pszPath,LPCWSTR pMore);
305 LWSTDAPI_(LPSTR) PathBuildRootA(LPSTR pszRoot,int iDrive);
306 LWSTDAPI_(LPWSTR) PathBuildRootW(LPWSTR pszRoot,int iDrive);
307 #ifdef UNICODE
308 #define PathBuildRoot PathBuildRootW
309 #else
310 #define PathBuildRoot PathBuildRootA
311 #endif
312 LWSTDAPI_(WINBOOL) PathCanonicalizeA(LPSTR pszBuf,LPCSTR pszPath);
313 LWSTDAPI_(WINBOOL) PathCanonicalizeW(LPWSTR pszBuf,LPCWSTR pszPath);
314 LWSTDAPI_(LPSTR) PathCombineA(LPSTR pszDest,LPCSTR pszDir,LPCSTR pszFile);
315 LWSTDAPI_(LPWSTR) PathCombineW(LPWSTR pszDest,LPCWSTR pszDir,LPCWSTR pszFile);
316 #ifdef UNICODE
317 #define PathCombine PathCombineW
318 #else
319 #define PathCombine PathCombineA
320 #endif
321 LWSTDAPI_(WINBOOL) PathCompactPathA(HDC hDC,LPSTR pszPath,UINT dx);
322 LWSTDAPI_(WINBOOL) PathCompactPathW(HDC hDC,LPWSTR pszPath,UINT dx);
323 LWSTDAPI_(WINBOOL) PathCompactPathExA(LPSTR pszOut,LPCSTR pszSrc,UINT cchMax,DWORD dwFlags);
324 LWSTDAPI_(WINBOOL) PathCompactPathExW(LPWSTR pszOut,LPCWSTR pszSrc,UINT cchMax,DWORD dwFlags);
325 LWSTDAPI_(int) PathCommonPrefixA(LPCSTR pszFile1,LPCSTR pszFile2,LPSTR achPath);
326 LWSTDAPI_(int) PathCommonPrefixW(LPCWSTR pszFile1,LPCWSTR pszFile2,LPWSTR achPath);
327 LWSTDAPI_(WINBOOL) PathFileExistsA(LPCSTR pszPath);
328 LWSTDAPI_(WINBOOL) PathFileExistsW(LPCWSTR pszPath);
329 #ifdef UNICODE
330 #define PathFileExists PathFileExistsW
331 #else
332 #define PathFileExists PathFileExistsA
333 #endif
334 LWSTDAPI_(LPSTR) PathFindExtensionA(LPCSTR pszPath);
335 LWSTDAPI_(LPWSTR) PathFindExtensionW(LPCWSTR pszPath);
336 #ifdef UNICODE
337 #define PathFindExtension PathFindExtensionW
338 #else
339 #define PathFindExtension PathFindExtensionA
340 #endif
341 LWSTDAPI_(LPSTR) PathFindFileNameA(LPCSTR pszPath);
342 LWSTDAPI_(LPWSTR) PathFindFileNameW(LPCWSTR pszPath);
343 #ifdef UNICODE
344 #define PathFindFileName PathFindFileNameW
345 #else
346 #define PathFindFileName PathFindFileNameA
347 #endif
348 LWSTDAPI_(LPSTR) PathFindNextComponentA(LPCSTR pszPath);
349 LWSTDAPI_(LPWSTR) PathFindNextComponentW(LPCWSTR pszPath);
350 #ifdef UNICODE
351 #define PathFindNextComponent PathFindNextComponentW
352 #else
353 #define PathFindNextComponent PathFindNextComponentA
354 #endif
355 LWSTDAPI_(WINBOOL) PathFindOnPathA(LPSTR pszPath,LPCSTR *ppszOtherDirs);
356 LWSTDAPI_(WINBOOL) PathFindOnPathW(LPWSTR pszPath,LPCWSTR *ppszOtherDirs);
357 LWSTDAPI_(LPSTR) PathGetArgsA(LPCSTR pszPath);
358 LWSTDAPI_(LPWSTR) PathGetArgsW(LPCWSTR pszPath);
359 #ifdef UNICODE
360 #define PathGetArgs PathGetArgsW
361 #else
362 #define PathGetArgs PathGetArgsA
363 #endif
364 LWSTDAPI_(LPCSTR) PathFindSuffixArrayA(LPCSTR pszPath,const LPCSTR *apszSuffix,int iArraySize);
365 LWSTDAPI_(LPCWSTR) PathFindSuffixArrayW(LPCWSTR pszPath,const LPCWSTR *apszSuffix,int iArraySize);
366 #ifdef UNICODE
367 #define PathFindSuffixArray PathFindSuffixArrayW
368 #else
369 #define PathFindSuffixArray PathFindSuffixArrayA
370 #endif
371 LWSTDAPI_(WINBOOL) PathIsLFNFileSpecA(LPCSTR lpName);
372 LWSTDAPI_(WINBOOL) PathIsLFNFileSpecW(LPCWSTR lpName);
373 #ifdef UNICODE
374 #define PathIsLFNFileSpec PathIsLFNFileSpecW
375 #else
376 #define PathIsLFNFileSpec PathIsLFNFileSpecA
377 #endif
378
379 LWSTDAPI_(UINT) PathGetCharTypeA(UCHAR ch);
380 LWSTDAPI_(UINT) PathGetCharTypeW(WCHAR ch);
381
382 #define GCT_INVALID 0x0000
383 #define GCT_LFNCHAR 0x0001
384 #define GCT_SHORTCHAR 0x0002
385 #define GCT_WILD 0x0004
386 #define GCT_SEPARATOR 0x0008
387
388 LWSTDAPI_(int) PathGetDriveNumberA(LPCSTR pszPath);
389 LWSTDAPI_(int) PathGetDriveNumberW(LPCWSTR pszPath);
390 #ifdef UNICODE
391 #define PathGetDriveNumber PathGetDriveNumberW
392 #else
393 #define PathGetDriveNumber PathGetDriveNumberA
394 #endif
395 LWSTDAPI_(WINBOOL) PathIsDirectoryA(LPCSTR pszPath);
396 LWSTDAPI_(WINBOOL) PathIsDirectoryW(LPCWSTR pszPath);
397 #ifdef UNICODE
398 #define PathIsDirectory PathIsDirectoryW
399 #else
400 #define PathIsDirectory PathIsDirectoryA
401 #endif
402 LWSTDAPI_(WINBOOL) PathIsDirectoryEmptyA(LPCSTR pszPath);
403 LWSTDAPI_(WINBOOL) PathIsDirectoryEmptyW(LPCWSTR pszPath);
404 #ifdef UNICODE
405 #define PathIsDirectoryEmpty PathIsDirectoryEmptyW
406 #else
407 #define PathIsDirectoryEmpty PathIsDirectoryEmptyA
408 #endif
409 LWSTDAPI_(WINBOOL) PathIsFileSpecA(LPCSTR pszPath);
410 LWSTDAPI_(WINBOOL) PathIsFileSpecW(LPCWSTR pszPath);
411 #ifdef UNICODE
412 #define PathIsFileSpec PathIsFileSpecW
413 #else
414 #define PathIsFileSpec PathIsFileSpecA
415 #endif
416 LWSTDAPI_(WINBOOL) PathIsPrefixA(LPCSTR pszPrefix,LPCSTR pszPath);
417 LWSTDAPI_(WINBOOL) PathIsPrefixW(LPCWSTR pszPrefix,LPCWSTR pszPath);
418 #ifdef UNICODE
419 #define PathIsPrefix PathIsPrefixW
420 #else
421 #define PathIsPrefix PathIsPrefixA
422 #endif
423 LWSTDAPI_(WINBOOL) PathIsRelativeA(LPCSTR pszPath);
424 LWSTDAPI_(WINBOOL) PathIsRelativeW(LPCWSTR pszPath);
425 #ifdef UNICODE
426 #define PathIsRelative PathIsRelativeW
427 #else
428 #define PathIsRelative PathIsRelativeA
429 #endif
430 LWSTDAPI_(WINBOOL) PathIsRootA(LPCSTR pszPath);
431 LWSTDAPI_(WINBOOL) PathIsRootW(LPCWSTR pszPath);
432 #ifdef UNICODE
433 #define PathIsRoot PathIsRootW
434 #else
435 #define PathIsRoot PathIsRootA
436 #endif
437 LWSTDAPI_(WINBOOL) PathIsSameRootA(LPCSTR pszPath1,LPCSTR pszPath2);
438 LWSTDAPI_(WINBOOL) PathIsSameRootW(LPCWSTR pszPath1,LPCWSTR pszPath2);
439 #ifdef UNICODE
440 #define PathIsSameRoot PathIsSameRootW
441 #else
442 #define PathIsSameRoot PathIsSameRootA
443 #endif
444 LWSTDAPI_(WINBOOL) PathIsUNCA(LPCSTR pszPath);
445 LWSTDAPI_(WINBOOL) PathIsUNCW(LPCWSTR pszPath);
446 #ifdef UNICODE
447 #define PathIsUNC PathIsUNCW
448 #else
449 #define PathIsUNC PathIsUNCA
450 #endif
451 LWSTDAPI_(WINBOOL) PathIsNetworkPathA(LPCSTR pszPath);
452 LWSTDAPI_(WINBOOL) PathIsNetworkPathW(LPCWSTR pszPath);
453 #ifdef UNICODE
454 #define PathIsNetworkPath PathIsNetworkPathW
455 #else
456 #define PathIsNetworkPath PathIsNetworkPathA
457 #endif
458 LWSTDAPI_(WINBOOL) PathIsUNCServerA(LPCSTR pszPath);
459 LWSTDAPI_(WINBOOL) PathIsUNCServerW(LPCWSTR pszPath);
460 #ifdef UNICODE
461 #define PathIsUNCServer PathIsUNCServerW
462 #else
463 #define PathIsUNCServer PathIsUNCServerA
464 #endif
465 LWSTDAPI_(WINBOOL) PathIsUNCServerShareA(LPCSTR pszPath);
466 LWSTDAPI_(WINBOOL) PathIsUNCServerShareW(LPCWSTR pszPath);
467 #ifdef UNICODE
468 #define PathIsUNCServerShare PathIsUNCServerShareW
469 #else
470 #define PathIsUNCServerShare PathIsUNCServerShareA
471 #endif
472 LWSTDAPI_(WINBOOL) PathIsContentTypeA(LPCSTR pszPath,LPCSTR pszContentType);
473 LWSTDAPI_(WINBOOL) PathIsContentTypeW(LPCWSTR pszPath,LPCWSTR pszContentType);
474 LWSTDAPI_(WINBOOL) PathIsURLA(LPCSTR pszPath);
475 LWSTDAPI_(WINBOOL) PathIsURLW(LPCWSTR pszPath);
476 #ifdef UNICODE
477 #define PathIsURL PathIsURLW
478 #else
479 #define PathIsURL PathIsURLA
480 #endif
481 LWSTDAPI_(WINBOOL) PathMakePrettyA(LPSTR pszPath);
482 LWSTDAPI_(WINBOOL) PathMakePrettyW(LPWSTR pszPath);
483 LWSTDAPI_(WINBOOL) PathMatchSpecA(LPCSTR pszFile,LPCSTR pszSpec);
484 LWSTDAPI_(WINBOOL) PathMatchSpecW(LPCWSTR pszFile,LPCWSTR pszSpec);
485 LWSTDAPI_(int) PathParseIconLocationA(LPSTR pszIconFile);
486 LWSTDAPI_(int) PathParseIconLocationW(LPWSTR pszIconFile);
487 LWSTDAPI_(void) PathQuoteSpacesA(LPSTR lpsz);
488 LWSTDAPI_(void) PathQuoteSpacesW(LPWSTR lpsz);
489 LWSTDAPI_(WINBOOL) PathRelativePathToA(LPSTR pszPath,LPCSTR pszFrom,DWORD dwAttrFrom,LPCSTR pszTo,DWORD dwAttrTo);
490 LWSTDAPI_(WINBOOL) PathRelativePathToW(LPWSTR pszPath,LPCWSTR pszFrom,DWORD dwAttrFrom,LPCWSTR pszTo,DWORD dwAttrTo);
491 LWSTDAPI_(void) PathRemoveArgsA(LPSTR pszPath);
492 LWSTDAPI_(void) PathRemoveArgsW(LPWSTR pszPath);
493 LWSTDAPI_(LPSTR) PathRemoveBackslashA(LPSTR pszPath);
494 LWSTDAPI_(LPWSTR) PathRemoveBackslashW(LPWSTR pszPath);
495 #ifdef UNICODE
496 #define PathRemoveBackslash PathRemoveBackslashW
497 #else
498 #define PathRemoveBackslash PathRemoveBackslashA
499 #endif
500 LWSTDAPI_(void) PathRemoveBlanksA(LPSTR pszPath);
501 LWSTDAPI_(void) PathRemoveBlanksW(LPWSTR pszPath);
502 LWSTDAPI_(void) PathRemoveExtensionA(LPSTR pszPath);
503 LWSTDAPI_(void) PathRemoveExtensionW(LPWSTR pszPath);
504 LWSTDAPI_(WINBOOL) PathRemoveFileSpecA(LPSTR pszPath);
505 LWSTDAPI_(WINBOOL) PathRemoveFileSpecW(LPWSTR pszPath);
506 LWSTDAPI_(WINBOOL) PathRenameExtensionA(LPSTR pszPath,LPCSTR pszExt);
507 LWSTDAPI_(WINBOOL) PathRenameExtensionW(LPWSTR pszPath,LPCWSTR pszExt);
508 LWSTDAPI_(WINBOOL) PathSearchAndQualifyA(LPCSTR pszPath,LPSTR pszBuf,UINT cchBuf);
509 LWSTDAPI_(WINBOOL) PathSearchAndQualifyW(LPCWSTR pszPath,LPWSTR pszBuf,UINT cchBuf);
510 LWSTDAPI_(void) PathSetDlgItemPathA(HWND hDlg,int id,LPCSTR pszPath);
511 LWSTDAPI_(void) PathSetDlgItemPathW(HWND hDlg,int id,LPCWSTR pszPath);
512 LWSTDAPI_(LPSTR) PathSkipRootA(LPCSTR pszPath);
513 LWSTDAPI_(LPWSTR) PathSkipRootW(LPCWSTR pszPath);
514 #ifdef UNICODE
515 #define PathSkipRoot PathSkipRootW
516 #else
517 #define PathSkipRoot PathSkipRootA
518 #endif
519 LWSTDAPI_(void) PathStripPathA(LPSTR pszPath);
520 LWSTDAPI_(void) PathStripPathW(LPWSTR pszPath);
521 #ifdef UNICODE
522 #define PathStripPath PathStripPathW
523 #else
524 #define PathStripPath PathStripPathA
525 #endif
526 LWSTDAPI_(WINBOOL) PathStripToRootA(LPSTR pszPath);
527 LWSTDAPI_(WINBOOL) PathStripToRootW(LPWSTR pszPath);
528 #ifdef UNICODE
529 #define PathStripToRoot PathStripToRootW
530 #else
531 #define PathStripToRoot PathStripToRootA
532 #endif
533 LWSTDAPI_(void) PathUnquoteSpacesA(LPSTR lpsz);
534 LWSTDAPI_(void) PathUnquoteSpacesW(LPWSTR lpsz);
535 LWSTDAPI_(WINBOOL) PathMakeSystemFolderA(LPCSTR pszPath);
536 LWSTDAPI_(WINBOOL) PathMakeSystemFolderW(LPCWSTR pszPath);
537 #ifdef UNICODE
538 #define PathMakeSystemFolder PathMakeSystemFolderW
539 #else
540 #define PathMakeSystemFolder PathMakeSystemFolderA
541 #endif
542 LWSTDAPI_(WINBOOL) PathUnmakeSystemFolderA(LPCSTR pszPath);
543 LWSTDAPI_(WINBOOL) PathUnmakeSystemFolderW(LPCWSTR pszPath);
544 #ifdef UNICODE
545 #define PathUnmakeSystemFolder PathUnmakeSystemFolderW
546 #else
547 #define PathUnmakeSystemFolder PathUnmakeSystemFolderA
548 #endif
549 LWSTDAPI_(WINBOOL) PathIsSystemFolderA(LPCSTR pszPath,DWORD dwAttrb);
550 LWSTDAPI_(WINBOOL) PathIsSystemFolderW(LPCWSTR pszPath,DWORD dwAttrb);
551 #ifdef UNICODE
552 #define PathIsSystemFolder PathIsSystemFolderW
553 #else
554 #define PathIsSystemFolder PathIsSystemFolderA
555 #endif
556 LWSTDAPI_(void) PathUndecorateA(LPSTR pszPath);
557 LWSTDAPI_(void) PathUndecorateW(LPWSTR pszPath);
558 #ifdef UNICODE
559 #define PathUndecorate PathUndecorateW
560 #else
561 #define PathUndecorate PathUndecorateA
562 #endif
563 LWSTDAPI_(WINBOOL) PathUnExpandEnvStringsA(LPCSTR pszPath,LPSTR pszBuf,UINT cchBuf);
564 LWSTDAPI_(WINBOOL) PathUnExpandEnvStringsW(LPCWSTR pszPath,LPWSTR pszBuf,UINT cchBuf);
565 #ifdef UNICODE
566 #define PathUnExpandEnvStrings PathUnExpandEnvStringsW
567 #else
568 #define PathUnExpandEnvStrings PathUnExpandEnvStringsA
569 #endif
570
571 #ifdef UNICODE
572 #define PathAppend PathAppendW
573 #define PathCanonicalize PathCanonicalizeW
574 #define PathCompactPath PathCompactPathW
575 #define PathCompactPathEx PathCompactPathExW
576 #define PathCommonPrefix PathCommonPrefixW
577 #define PathFindOnPath PathFindOnPathW
578 #define PathGetCharType PathGetCharTypeW
579 #define PathIsContentType PathIsContentTypeW
580 #define PathIsHTMLFile PathIsHTMLFileW
581 #define PathMakePretty PathMakePrettyW
582 #define PathMatchSpec PathMatchSpecW
583 #define PathParseIconLocation PathParseIconLocationW
584 #define PathQuoteSpaces PathQuoteSpacesW
585 #define PathRelativePathTo PathRelativePathToW
586 #define PathRemoveArgs PathRemoveArgsW
587 #define PathRemoveBlanks PathRemoveBlanksW
588 #define PathRemoveExtension PathRemoveExtensionW
589 #define PathRemoveFileSpec PathRemoveFileSpecW
590 #define PathRenameExtension PathRenameExtensionW
591 #define PathSearchAndQualify PathSearchAndQualifyW
592 #define PathSetDlgItemPath PathSetDlgItemPathW
593 #define PathUnquoteSpaces PathUnquoteSpacesW
594 #else
595 #define PathAppend PathAppendA
596 #define PathCanonicalize PathCanonicalizeA
597 #define PathCompactPath PathCompactPathA
598 #define PathCompactPathEx PathCompactPathExA
599 #define PathCommonPrefix PathCommonPrefixA
600 #define PathFindOnPath PathFindOnPathA
601 #define PathGetCharType PathGetCharTypeA
602 #define PathIsContentType PathIsContentTypeA
603 #define PathIsHTMLFile PathIsHTMLFileA
604 #define PathMakePretty PathMakePrettyA
605 #define PathMatchSpec PathMatchSpecA
606 #define PathParseIconLocation PathParseIconLocationA
607 #define PathQuoteSpaces PathQuoteSpacesA
608 #define PathRelativePathTo PathRelativePathToA
609 #define PathRemoveArgs PathRemoveArgsA
610 #define PathRemoveBlanks PathRemoveBlanksA
611 #define PathRemoveExtension PathRemoveExtensionA
612 #define PathRemoveFileSpec PathRemoveFileSpecA
613 #define PathRenameExtension PathRenameExtensionA
614 #define PathSearchAndQualify PathSearchAndQualifyA
615 #define PathSetDlgItemPath PathSetDlgItemPathA
616 #define PathUnquoteSpaces PathUnquoteSpacesA
617 #endif
618
619 typedef enum {
620 URL_SCHEME_INVALID = -1,URL_SCHEME_UNKNOWN = 0,URL_SCHEME_FTP,URL_SCHEME_HTTP,URL_SCHEME_GOPHER,URL_SCHEME_MAILTO,URL_SCHEME_NEWS,URL_SCHEME_NNTP,URL_SCHEME_TELNET,URL_SCHEME_WAIS,URL_SCHEME_FILE,URL_SCHEME_MK,URL_SCHEME_HTTPS,URL_SCHEME_SHELL,URL_SCHEME_SNEWS,URL_SCHEME_LOCAL,URL_SCHEME_JAVASCRIPT,URL_SCHEME_VBSCRIPT,URL_SCHEME_ABOUT,URL_SCHEME_RES,URL_SCHEME_MSSHELLROOTED,URL_SCHEME_MSSHELLIDLIST,URL_SCHEME_MSHELP,URL_SCHEME_MAXVALUE
621 } URL_SCHEME;
622
623 typedef enum {
624 URL_PART_NONE = 0,URL_PART_SCHEME = 1,URL_PART_HOSTNAME,URL_PART_USERNAME,URL_PART_PASSWORD,URL_PART_PORT,URL_PART_QUERY
625 } URL_PART;
626
627 typedef enum {
628 URLIS_URL,URLIS_OPAQUE,URLIS_NOHISTORY,URLIS_FILEURL,URLIS_APPLIABLE,URLIS_DIRECTORY,URLIS_HASQUERY
629 } URLIS;
630
631 #define URL_UNESCAPE 0x10000000
632 #define URL_ESCAPE_UNSAFE 0x20000000
633 #define URL_PLUGGABLE_PROTOCOL 0x40000000
634 #define URL_WININET_COMPATIBILITY 0x80000000
635 #define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000
636 #define URL_DONT_UNESCAPE_EXTRA_INFO URL_DONT_ESCAPE_EXTRA_INFO
637 #define URL_BROWSER_MODE URL_DONT_ESCAPE_EXTRA_INFO
638 #define URL_ESCAPE_SPACES_ONLY 0x04000000
639 #define URL_DONT_SIMPLIFY 0x08000000
640 #define URL_NO_META URL_DONT_SIMPLIFY
641 #define URL_UNESCAPE_INPLACE 0x00100000
642 #define URL_CONVERT_IF_DOSPATH 0x00200000
643 #define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
644 #define URL_INTERNAL_PATH 0x00800000
645 #define URL_FILE_USE_PATHURL 0x00010000
646 #define URL_DONT_UNESCAPE 0x00020000
647 #define URL_ESCAPE_PERCENT 0x00001000
648 #define URL_ESCAPE_SEGMENT_ONLY 0x00002000
649
650 #define URL_PARTFLAG_KEEPSCHEME 0x00000001
651
652 #define URL_APPLY_DEFAULT 0x00000001
653 #define URL_APPLY_GUESSSCHEME 0x00000002
654 #define URL_APPLY_GUESSFILE 0x00000004
655 #define URL_APPLY_FORCEAPPLY 0x00000008
656
657 LWSTDAPI_(int) UrlCompareA(LPCSTR psz1,LPCSTR psz2,WINBOOL fIgnoreSlash);
658 LWSTDAPI_(int) UrlCompareW(LPCWSTR psz1,LPCWSTR psz2,WINBOOL fIgnoreSlash);
659 LWSTDAPI UrlCombineA(LPCSTR pszBase,LPCSTR pszRelative,LPSTR pszCombined,LPDWORD pcchCombined,DWORD dwFlags);
660 LWSTDAPI UrlCombineW(LPCWSTR pszBase,LPCWSTR pszRelative,LPWSTR pszCombined,LPDWORD pcchCombined,DWORD dwFlags);
661 LWSTDAPI UrlCanonicalizeA(LPCSTR pszUrl,LPSTR pszCanonicalized,LPDWORD pcchCanonicalized,DWORD dwFlags);
662 LWSTDAPI UrlCanonicalizeW(LPCWSTR pszUrl,LPWSTR pszCanonicalized,LPDWORD pcchCanonicalized,DWORD dwFlags);
663 LWSTDAPI_(WINBOOL) UrlIsOpaqueA(LPCSTR pszURL);
664 LWSTDAPI_(WINBOOL) UrlIsOpaqueW(LPCWSTR pszURL);
665 LWSTDAPI_(WINBOOL) UrlIsNoHistoryA(LPCSTR pszURL);
666 LWSTDAPI_(WINBOOL) UrlIsNoHistoryW(LPCWSTR pszURL);
667 #define UrlIsFileUrlA(pszURL) UrlIsA(pszURL,URLIS_FILEURL)
668 #define UrlIsFileUrlW(pszURL) UrlIsW(pszURL,URLIS_FILEURL)
669 LWSTDAPI_(WINBOOL) UrlIsA(LPCSTR pszUrl,URLIS UrlIs);
670 LWSTDAPI_(WINBOOL) UrlIsW(LPCWSTR pszUrl,URLIS UrlIs);
671 LWSTDAPI_(LPCSTR) UrlGetLocationA(LPCSTR psz1);
672 LWSTDAPI_(LPCWSTR) UrlGetLocationW(LPCWSTR psz1);
673 LWSTDAPI UrlUnescapeA(LPSTR pszUrl,LPSTR pszUnescaped,LPDWORD pcchUnescaped,DWORD dwFlags);
674 LWSTDAPI UrlUnescapeW(LPWSTR pszUrl,LPWSTR pszUnescaped,LPDWORD pcchUnescaped,DWORD dwFlags);
675 LWSTDAPI UrlEscapeA(LPCSTR pszUrl,LPSTR pszEscaped,LPDWORD pcchEscaped,DWORD dwFlags);
676 LWSTDAPI UrlEscapeW(LPCWSTR pszUrl,LPWSTR pszEscaped,LPDWORD pcchEscaped,DWORD dwFlags);
677 LWSTDAPI UrlCreateFromPathA(LPCSTR pszPath,LPSTR pszUrl,LPDWORD pcchUrl,DWORD dwFlags);
678 LWSTDAPI UrlCreateFromPathW(LPCWSTR pszPath,LPWSTR pszUrl,LPDWORD pcchUrl,DWORD dwFlags);
679 LWSTDAPI PathCreateFromUrlA(LPCSTR pszUrl,LPSTR pszPath,LPDWORD pcchPath,DWORD dwFlags);
680 LWSTDAPI PathCreateFromUrlW(LPCWSTR pszUrl,LPWSTR pszPath,LPDWORD pcchPath,DWORD dwFlags);
681 LWSTDAPI UrlHashA(LPCSTR pszUrl,LPBYTE pbHash,DWORD cbHash);
682 LWSTDAPI UrlHashW(LPCWSTR pszUrl,LPBYTE pbHash,DWORD cbHash);
683 LWSTDAPI UrlGetPartW(LPCWSTR pszIn,LPWSTR pszOut,LPDWORD pcchOut,DWORD dwPart,DWORD dwFlags);
684 LWSTDAPI UrlGetPartA(LPCSTR pszIn,LPSTR pszOut,LPDWORD pcchOut,DWORD dwPart,DWORD dwFlags);
685 LWSTDAPI UrlApplySchemeA(LPCSTR pszIn,LPSTR pszOut,LPDWORD pcchOut,DWORD dwFlags);
686 LWSTDAPI UrlApplySchemeW(LPCWSTR pszIn,LPWSTR pszOut,LPDWORD pcchOut,DWORD dwFlags);
687 LWSTDAPI HashData(LPBYTE pbData,DWORD cbData,LPBYTE pbHash,DWORD cbHash);
688
689 #ifdef UNICODE
690 #define UrlCompare UrlCompareW
691 #define UrlCombine UrlCombineW
692 #define UrlCanonicalize UrlCanonicalizeW
693 #define UrlIsOpaque UrlIsOpaqueW
694 #define UrlIsFileUrl UrlIsFileUrlW
695 #define UrlGetLocation UrlGetLocationW
696 #define UrlUnescape UrlUnescapeW
697 #define UrlEscape UrlEscapeW
698 #define UrlCreateFromPath UrlCreateFromPathW
699 #define PathCreateFromUrl PathCreateFromUrlW
700 #define UrlHash UrlHashW
701 #define UrlGetPart UrlGetPartW
702 #define UrlApplyScheme UrlApplySchemeW
703 #define UrlIs UrlIsW
704 #else
705 #define UrlCompare UrlCompareA
706 #define UrlCombine UrlCombineA
707 #define UrlCanonicalize UrlCanonicalizeA
708 #define UrlIsOpaque UrlIsOpaqueA
709 #define UrlIsFileUrl UrlIsFileUrlA
710 #define UrlGetLocation UrlGetLocationA
711 #define UrlUnescape UrlUnescapeA
712 #define UrlEscape UrlEscapeA
713 #define UrlCreateFromPath UrlCreateFromPathA
714 #define PathCreateFromUrl PathCreateFromUrlA
715 #define UrlHash UrlHashA
716 #define UrlGetPart UrlGetPartA
717 #define UrlApplyScheme UrlApplySchemeA
718 #define UrlIs UrlIsA
719 #endif
720
721 #define UrlEscapeSpaces(pszUrl,pszEscaped,pcchEscaped) UrlCanonicalize(pszUrl,pszEscaped,pcchEscaped,URL_ESCAPE_SPACES_ONLY |URL_DONT_ESCAPE_EXTRA_INFO)
722 #define UrlUnescapeInPlace(pszUrl,dwFlags) UrlUnescape(pszUrl,NULL,NULL,dwFlags | URL_UNESCAPE_INPLACE)
723 #endif
724
725 #ifndef NO_SHLWAPI_REG
726
727 LWSTDAPI_(DWORD) SHDeleteEmptyKeyA(HKEY hkey,LPCSTR pszSubKey);
728 LWSTDAPI_(DWORD) SHDeleteEmptyKeyW(HKEY hkey,LPCWSTR pszSubKey);
729 #ifdef UNICODE
730 #define SHDeleteEmptyKey SHDeleteEmptyKeyW
731 #else
732 #define SHDeleteEmptyKey SHDeleteEmptyKeyA
733 #endif
734 LWSTDAPI_(DWORD) SHDeleteKeyA(HKEY hkey,LPCSTR pszSubKey);
735 LWSTDAPI_(DWORD) SHDeleteKeyW(HKEY hkey,LPCWSTR pszSubKey);
736 #ifdef UNICODE
737 #define SHDeleteKey SHDeleteKeyW
738 #else
739 #define SHDeleteKey SHDeleteKeyA
740 #endif
741 LWSTDAPI_(HKEY) SHRegDuplicateHKey(HKEY hkey);
742
743 LWSTDAPI_(DWORD) SHDeleteValueA(HKEY hkey,LPCSTR pszSubKey,LPCSTR pszValue);
744 LWSTDAPI_(DWORD) SHDeleteValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue);
745 #ifdef UNICODE
746 #define SHDeleteValue SHDeleteValueW
747 #else
748 #define SHDeleteValue SHDeleteValueA
749 #endif
750 LWSTDAPI_(DWORD) SHGetValueA(HKEY hkey,LPCSTR pszSubKey,LPCSTR pszValue,DWORD *pdwType,void *pvData,DWORD *pcbData);
751 LWSTDAPI_(DWORD) SHGetValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue,DWORD *pdwType,void *pvData,DWORD *pcbData);
752 #ifdef UNICODE
753 #define SHGetValue SHGetValueW
754 #else
755 #define SHGetValue SHGetValueA
756 #endif
757 LWSTDAPI_(DWORD) SHSetValueA(HKEY hkey,LPCSTR pszSubKey,LPCSTR pszValue,DWORD dwType,LPCVOID pvData,DWORD cbData);
758 LWSTDAPI_(DWORD) SHSetValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue,DWORD dwType,LPCVOID pvData,DWORD cbData);
759 #ifdef UNICODE
760 #define SHSetValue SHSetValueW
761 #else
762 #define SHSetValue SHSetValueA
763 #endif
764
765 #if (_WIN32_IE >= 0x0602)
766
767 typedef DWORD SRRF;
768
769 #define SRRF_RT_REG_NONE 0x00000001
770 #define SRRF_RT_REG_SZ 0x00000002
771 #define SRRF_RT_REG_EXPAND_SZ 0x00000004
772 #define SRRF_RT_REG_BINARY 0x00000008
773 #define SRRF_RT_REG_DWORD 0x00000010
774 #define SRRF_RT_REG_MULTI_SZ 0x00000020
775 #define SRRF_RT_REG_QWORD 0x00000040
776
777 #define SRRF_RT_DWORD (SRRF_RT_REG_BINARY | SRRF_RT_REG_DWORD)
778 #define SRRF_RT_QWORD (SRRF_RT_REG_BINARY | SRRF_RT_REG_QWORD)
779 #define SRRF_RT_ANY 0x0000ffff
780
781 #define SRRF_RM_ANY 0x00000000
782 #define SRRF_RM_NORMAL 0x00010000
783 #define SRRF_RM_SAFE 0x00020000
784 #define SRRF_RM_SAFENETWORK 0x00040000
785
786 #define SRRF_NOEXPAND 0x10000000
787 #define SRRF_ZEROONFAILURE 0x20000000
788
789 LWSTDAPI_(LONG) SHRegGetValueA(HKEY hkey,LPCSTR pszSubKey,LPCSTR pszValue,SRRF dwFlags,DWORD *pdwType,void *pvData,DWORD *pcbData);
790 LWSTDAPI_(LONG) SHRegGetValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue,SRRF dwFlags,DWORD *pdwType,void *pvData,DWORD *pcbData);
791 #ifdef UNICODE
792 #define SHRegGetValue SHRegGetValueW
793 #else
794 #define SHRegGetValue SHRegGetValueA
795 #endif
796 #endif
797
798 #ifdef UNICODE
799 #define SHQueryValueEx SHQueryValueExW
800 #define SHEnumKeyEx SHEnumKeyExW
801 #define SHEnumValue SHEnumValueW
802 #define SHQueryInfoKey SHQueryInfoKeyW
803 #define SHCopyKey SHCopyKeyW
804 #define SHRegGetPath SHRegGetPathW
805 #define SHRegSetPath SHRegSetPathW
806 #else
807 #define SHQueryValueEx SHQueryValueExA
808 #define SHEnumKeyEx SHEnumKeyExA
809 #define SHEnumValue SHEnumValueA
810 #define SHQueryInfoKey SHQueryInfoKeyA
811 #define SHCopyKey SHCopyKeyA
812 #define SHRegGetPath SHRegGetPathA
813 #define SHRegSetPath SHRegSetPathA
814 #endif
815
816 LWSTDAPI_(DWORD) SHQueryValueExA(HKEY hkey,LPCSTR pszValue,DWORD *pdwReserved,DWORD *pdwType,void *pvData,DWORD *pcbData);
817 LWSTDAPI_(DWORD) SHQueryValueExW(HKEY hkey,LPCWSTR pszValue,DWORD *pdwReserved,DWORD *pdwType,void *pvData,DWORD *pcbData);
818 LWSTDAPI_(LONG) SHEnumKeyExA(HKEY hkey,DWORD dwIndex,LPSTR pszName,LPDWORD pcchName);
819 LWSTDAPI_(LONG) SHEnumKeyExW(HKEY hkey,DWORD dwIndex,LPWSTR pszName,LPDWORD pcchName);
820 LWSTDAPI_(LONG) SHEnumValueA(HKEY hkey,DWORD dwIndex,LPSTR pszValueName,LPDWORD pcchValueName,LPDWORD pdwType,void *pvData,LPDWORD pcbData);
821 LWSTDAPI_(LONG) SHEnumValueW(HKEY hkey,DWORD dwIndex,LPWSTR pszValueName,LPDWORD pcchValueName,LPDWORD pdwType,void *pvData,LPDWORD pcbData);
822 LWSTDAPI_(LONG) SHQueryInfoKeyA(HKEY hkey,LPDWORD pcSubKeys,LPDWORD pcchMaxSubKeyLen,LPDWORD pcValues,LPDWORD pcchMaxValueNameLen);
823 LWSTDAPI_(LONG) SHQueryInfoKeyW(HKEY hkey,LPDWORD pcSubKeys,LPDWORD pcchMaxSubKeyLen,LPDWORD pcValues,LPDWORD pcchMaxValueNameLen);
824 LWSTDAPI_(DWORD) SHCopyKeyA(HKEY hkeySrc,LPCSTR szSrcSubKey,HKEY hkeyDest,DWORD fReserved);
825 LWSTDAPI_(DWORD) SHCopyKeyW(HKEY hkeySrc,LPCWSTR wszSrcSubKey,HKEY hkeyDest,DWORD fReserved);
826 LWSTDAPI_(DWORD) SHRegGetPathA(HKEY hKey,LPCSTR pcszSubKey,LPCSTR pcszValue,LPSTR pszPath,DWORD dwFlags);
827 LWSTDAPI_(DWORD) SHRegGetPathW(HKEY hKey,LPCWSTR pcszSubKey,LPCWSTR pcszValue,LPWSTR pszPath,DWORD dwFlags);
828 LWSTDAPI_(DWORD) SHRegSetPathA(HKEY hKey,LPCSTR pcszSubKey,LPCSTR pcszValue,LPCSTR pcszPath,DWORD dwFlags);
829 LWSTDAPI_(DWORD) SHRegSetPathW(HKEY hKey,LPCWSTR pcszSubKey,LPCWSTR pcszValue,LPCWSTR pcszPath,DWORD dwFlags);
830
831 typedef enum {
832 SHREGDEL_DEFAULT = 0x00000000,SHREGDEL_HKCU = 0x00000001,SHREGDEL_HKLM = 0x00000010,SHREGDEL_BOTH = 0x00000011
833 } SHREGDEL_FLAGS;
834
835 typedef enum {
836 SHREGENUM_DEFAULT = 0x00000000,SHREGENUM_HKCU = 0x00000001,SHREGENUM_HKLM = 0x00000010,SHREGENUM_BOTH = 0x00000011
837 } SHREGENUM_FLAGS;
838
839 #define SHREGSET_HKCU 0x00000001
840 #define SHREGSET_FORCE_HKCU 0x00000002
841 #define SHREGSET_HKLM 0x00000004
842 #define SHREGSET_FORCE_HKLM 0x00000008
843 #define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM)
844
845 typedef HANDLE HUSKEY;
846 typedef HUSKEY *PHUSKEY;
847
848 LWSTDAPI_(LONG) SHRegCreateUSKeyA(LPCSTR pszPath,REGSAM samDesired,HUSKEY hRelativeUSKey,PHUSKEY phNewUSKey,DWORD dwFlags);
849 LWSTDAPI_(LONG) SHRegCreateUSKeyW(LPCWSTR pwzPath,REGSAM samDesired,HUSKEY hRelativeUSKey,PHUSKEY phNewUSKey,DWORD dwFlags);
850 LWSTDAPI_(LONG) SHRegOpenUSKeyA(LPCSTR pszPath,REGSAM samDesired,HUSKEY hRelativeUSKey,PHUSKEY phNewUSKey,WINBOOL fIgnoreHKCU);
851 LWSTDAPI_(LONG) SHRegOpenUSKeyW(LPCWSTR pwzPath,REGSAM samDesired,HUSKEY hRelativeUSKey,PHUSKEY phNewUSKey,WINBOOL fIgnoreHKCU);
852 LWSTDAPI_(LONG) SHRegQueryUSValueA(HUSKEY hUSKey,LPCSTR pszValue,LPDWORD pdwType,void *pvData,LPDWORD pcbData,WINBOOL fIgnoreHKCU,void *pvDefaultData,DWORD dwDefaultDataSize);
853 LWSTDAPI_(LONG) SHRegQueryUSValueW(HUSKEY hUSKey,LPCWSTR pwzValue,LPDWORD pdwType,void *pvData,LPDWORD pcbData,WINBOOL fIgnoreHKCU,void *pvDefaultData,DWORD dwDefaultDataSize);
854 LWSTDAPI_(LONG) SHRegWriteUSValueA(HUSKEY hUSKey,LPCSTR pszValue,DWORD dwType,const void *pvData,DWORD cbData,DWORD dwFlags);
855 LWSTDAPI_(LONG) SHRegWriteUSValueW(HUSKEY hUSKey,LPCWSTR pwzValue,DWORD dwType,const void *pvData,DWORD cbData,DWORD dwFlags);
856 LWSTDAPI_(LONG) SHRegDeleteUSValueA(HUSKEY hUSKey,LPCSTR pszValue,SHREGDEL_FLAGS delRegFlags);
857 LWSTDAPI_(LONG) SHRegDeleteEmptyUSKeyW(HUSKEY hUSKey,LPCWSTR pwzSubKey,SHREGDEL_FLAGS delRegFlags);
858 LWSTDAPI_(LONG) SHRegDeleteEmptyUSKeyA(HUSKEY hUSKey,LPCSTR pszSubKey,SHREGDEL_FLAGS delRegFlags);
859 LWSTDAPI_(LONG) SHRegDeleteUSValueW(HUSKEY hUSKey,LPCWSTR pwzValue,SHREGDEL_FLAGS delRegFlags);
860 LWSTDAPI_(LONG) SHRegEnumUSKeyA(HUSKEY hUSKey,DWORD dwIndex,LPSTR pszName,LPDWORD pcchName,SHREGENUM_FLAGS enumRegFlags);
861 LWSTDAPI_(LONG) SHRegEnumUSKeyW(HUSKEY hUSKey,DWORD dwIndex,LPWSTR pwzName,LPDWORD pcchName,SHREGENUM_FLAGS enumRegFlags);
862 LWSTDAPI_(LONG) SHRegEnumUSValueA(HUSKEY hUSkey,DWORD dwIndex,LPSTR pszValueName,LPDWORD pcchValueName,LPDWORD pdwType,void *pvData,LPDWORD pcbData,SHREGENUM_FLAGS enumRegFlags);
863 LWSTDAPI_(LONG) SHRegEnumUSValueW(HUSKEY hUSkey,DWORD dwIndex,LPWSTR pszValueName,LPDWORD pcchValueName,LPDWORD pdwType,void *pvData,LPDWORD pcbData,SHREGENUM_FLAGS enumRegFlags);
864 LWSTDAPI_(LONG) SHRegQueryInfoUSKeyA(HUSKEY hUSKey,LPDWORD pcSubKeys,LPDWORD pcchMaxSubKeyLen,LPDWORD pcValues,LPDWORD pcchMaxValueNameLen,SHREGENUM_FLAGS enumRegFlags);
865 LWSTDAPI_(LONG) SHRegQueryInfoUSKeyW(HUSKEY hUSKey,LPDWORD pcSubKeys,LPDWORD pcchMaxSubKeyLen,LPDWORD pcValues,LPDWORD pcchMaxValueNameLen,SHREGENUM_FLAGS enumRegFlags);
866 LWSTDAPI_(LONG) SHRegCloseUSKey(HUSKEY hUSKey);
867 LWSTDAPI_(LONG) SHRegGetUSValueA(LPCSTR pszSubKey,LPCSTR pszValue,LPDWORD pdwType,void *pvData,LPDWORD pcbData,WINBOOL fIgnoreHKCU,void *pvDefaultData,DWORD dwDefaultDataSize);
868 LWSTDAPI_(LONG) SHRegGetUSValueW(LPCWSTR pwzSubKey,LPCWSTR pwzValue,LPDWORD pdwType,void *pvData,LPDWORD pcbData,WINBOOL fIgnoreHKCU,void *pvDefaultData,DWORD dwDefaultDataSize);
869 LWSTDAPI_(LONG) SHRegSetUSValueA(LPCSTR pszSubKey,LPCSTR pszValue,DWORD dwType,const void *pvData,DWORD cbData,DWORD dwFlags);
870 LWSTDAPI_(LONG) SHRegSetUSValueW(LPCWSTR pwzSubKey,LPCWSTR pwzValue,DWORD dwType,const void *pvData,DWORD cbData,DWORD dwFlags);
871 LWSTDAPI_(int) SHRegGetIntW(HKEY hk,LPCWSTR pwzKey,int iDefault);
872
873 #ifdef UNICODE
874 #define SHRegCreateUSKey SHRegCreateUSKeyW
875 #define SHRegOpenUSKey SHRegOpenUSKeyW
876 #define SHRegQueryUSValue SHRegQueryUSValueW
877 #define SHRegWriteUSValue SHRegWriteUSValueW
878 #define SHRegDeleteUSValue SHRegDeleteUSValueW
879 #define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyW
880 #define SHRegEnumUSKey SHRegEnumUSKeyW
881 #define SHRegEnumUSValue SHRegEnumUSValueW
882 #define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyW
883 #define SHRegGetUSValue SHRegGetUSValueW
884 #define SHRegSetUSValue SHRegSetUSValueW
885 #define SHRegGetInt SHRegGetIntW
886 #define SHRegGetBoolUSValue SHRegGetBoolUSValueW
887 #else
888 #define SHRegCreateUSKey SHRegCreateUSKeyA
889 #define SHRegOpenUSKey SHRegOpenUSKeyA
890 #define SHRegQueryUSValue SHRegQueryUSValueA
891 #define SHRegWriteUSValue SHRegWriteUSValueA
892 #define SHRegDeleteUSValue SHRegDeleteUSValueA
893 #define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyA
894 #define SHRegEnumUSKey SHRegEnumUSKeyA
895 #define SHRegEnumUSValue SHRegEnumUSValueA
896 #define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyA
897 #define SHRegGetUSValue SHRegGetUSValueA
898 #define SHRegSetUSValue SHRegSetUSValueA
899 #define SHRegGetBoolUSValue SHRegGetBoolUSValueA
900 #endif
901
902 LWSTDAPI_(WINBOOL) SHRegGetBoolUSValueA(LPCSTR pszSubKey,LPCSTR pszValue,WINBOOL fIgnoreHKCU,WINBOOL fDefault);
903 LWSTDAPI_(WINBOOL) SHRegGetBoolUSValueW(LPCWSTR pszSubKey,LPCWSTR pszValue,WINBOOL fIgnoreHKCU,WINBOOL fDefault);
904
905 enum {
906 ASSOCF_INIT_NOREMAPCLSID = 0x00000001,ASSOCF_INIT_BYEXENAME = 0x00000002,ASSOCF_OPEN_BYEXENAME = 0x00000002,ASSOCF_INIT_DEFAULTTOSTAR = 0x00000004,
907 ASSOCF_INIT_DEFAULTTOFOLDER = 0x00000008,ASSOCF_NOUSERSETTINGS = 0x00000010,ASSOCF_NOTRUNCATE = 0x00000020,ASSOCF_VERIFY = 0x00000040,
908 ASSOCF_REMAPRUNDLL = 0x00000080,ASSOCF_NOFIXUPS = 0x00000100,ASSOCF_IGNOREBASECLASS = 0x00000200
909 };
910
911 typedef DWORD ASSOCF;
912
913 typedef enum {
914 ASSOCSTR_COMMAND = 1,ASSOCSTR_EXECUTABLE,ASSOCSTR_FRIENDLYDOCNAME,ASSOCSTR_FRIENDLYAPPNAME,ASSOCSTR_NOOPEN,ASSOCSTR_SHELLNEWVALUE,
915 ASSOCSTR_DDECOMMAND,ASSOCSTR_DDEIFEXEC,ASSOCSTR_DDEAPPLICATION,ASSOCSTR_DDETOPIC,ASSOCSTR_INFOTIP,ASSOCSTR_QUICKTIP,ASSOCSTR_TILEINFO,
916 ASSOCSTR_CONTENTTYPE,ASSOCSTR_DEFAULTICON,ASSOCSTR_SHELLEXTENSION,ASSOCSTR_MAX
917 } ASSOCSTR;
918
919 typedef enum {
920 ASSOCKEY_SHELLEXECCLASS = 1,ASSOCKEY_APP,ASSOCKEY_CLASS,ASSOCKEY_BASECLASS,ASSOCKEY_MAX
921 } ASSOCKEY;
922
923 typedef enum {
924 ASSOCDATA_MSIDESCRIPTOR = 1,ASSOCDATA_NOACTIVATEHANDLER,ASSOCDATA_QUERYCLASSSTORE,ASSOCDATA_HASPERUSERASSOC,ASSOCDATA_EDITFLAGS,
925 ASSOCDATA_VALUE,ASSOCDATA_MAX
926 } ASSOCDATA;
927
928 typedef enum {
929 ASSOCENUM_NONE
930 } ASSOCENUM;
931
932 #undef INTERFACE
933 #define INTERFACE IQueryAssociations
934 DECLARE_INTERFACE_(IQueryAssociations,IUnknown) {
935 STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
936 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
937 STDMETHOD_(ULONG,Release) (THIS) PURE;
938 STDMETHOD (Init)(THIS_ ASSOCF flags,LPCWSTR pszAssoc,HKEY hkProgid,HWND hwnd) PURE;
939 STDMETHOD (GetString)(THIS_ ASSOCF flags,ASSOCSTR str,LPCWSTR pszExtra,LPWSTR pszOut,DWORD *pcchOut) PURE;
940 STDMETHOD (GetKey)(THIS_ ASSOCF flags,ASSOCKEY key,LPCWSTR pszExtra,HKEY *phkeyOut) PURE;
941 STDMETHOD (GetData)(THIS_ ASSOCF flags,ASSOCDATA data,LPCWSTR pszExtra,LPVOID pvOut,DWORD *pcbOut) PURE;
942 STDMETHOD (GetEnum)(THIS_ ASSOCF flags,ASSOCENUM assocenum,LPCWSTR pszExtra,REFIID riid,LPVOID *ppvOut) PURE;
943 };
944
945 #ifdef UNICODE
946 #define AssocQueryString AssocQueryStringW
947 #define AssocQueryStringByKey AssocQueryStringByKeyW
948 #define AssocQueryKey AssocQueryKeyW
949 #else
950 #define AssocQueryString AssocQueryStringA
951 #define AssocQueryStringByKey AssocQueryStringByKeyA
952 #define AssocQueryKey AssocQueryKeyA
953 #endif
954
955 LWSTDAPI AssocCreate(CLSID clsid,REFIID riid,LPVOID *ppv);
956 LWSTDAPI AssocQueryStringA(ASSOCF flags,ASSOCSTR str,LPCSTR pszAssoc,LPCSTR pszExtra,LPSTR pszOut,DWORD *pcchOut);
957 LWSTDAPI AssocQueryStringW(ASSOCF flags,ASSOCSTR str,LPCWSTR pszAssoc,LPCWSTR pszExtra,LPWSTR pszOut,DWORD *pcchOut);
958 LWSTDAPI AssocQueryStringByKeyA(ASSOCF flags,ASSOCSTR str,HKEY hkAssoc,LPCSTR pszExtra,LPSTR pszOut,DWORD *pcchOut);
959 LWSTDAPI AssocQueryStringByKeyW(ASSOCF flags,ASSOCSTR str,HKEY hkAssoc,LPCWSTR pszExtra,LPWSTR pszOut,DWORD *pcchOut);
960 LWSTDAPI AssocQueryKeyA(ASSOCF flags,ASSOCKEY key,LPCSTR pszAssoc,LPCSTR pszExtra,HKEY *phkeyOut);
961 LWSTDAPI AssocQueryKeyW(ASSOCF flags,ASSOCKEY key,LPCWSTR pszAssoc,LPCWSTR pszExtra,HKEY *phkeyOut);
962
963 #if (_WIN32_IE >= 0x0601)
964 LWSTDAPI_(WINBOOL) AssocIsDangerous(LPCWSTR pszAssoc);
965 #endif
966
967 #if (_WIN32_IE >= 0x0603)
968 typedef enum {
969 PERCEIVED_TYPE_CUSTOM = -3,PERCEIVED_TYPE_UNSPECIFIED = -2,PERCEIVED_TYPE_FOLDER = -1,PERCEIVED_TYPE_UNKNOWN = 0,
970 PERCEIVED_TYPE_TEXT,PERCEIVED_TYPE_IMAGE,PERCEIVED_TYPE_AUDIO,PERCEIVED_TYPE_VIDEO,PERCEIVED_TYPE_COMPRESSED,PERCEIVED_TYPE_DOCUMENT,
971 PERCEIVED_TYPE_SYSTEM,PERCEIVED_TYPE_APPLICATION
972 } PERCEIVED;
973
974 #define PERCEIVEDFLAG_UNDEFINED 0x0000
975 #define PERCEIVEDFLAG_SOFTCODED 0x0001
976 #define PERCEIVEDFLAG_HARDCODED 0x0002
977 #define PERCEIVEDFLAG_NATIVESUPPORT 0x0004
978 #define PERCEIVEDFLAG_GDIPLUS 0x0010
979 #define PERCEIVEDFLAG_WMSDK 0x0020
980 #define PERCEIVEDFLAG_ZIPFOLDER 0x0040
981
982 typedef DWORD PERCEIVEDFLAG;
983
984 LWSTDAPI AssocGetPerceivedType(LPCWSTR pszExt,PERCEIVED *ptype,PERCEIVEDFLAG *pflag,LPWSTR *ppszType);
985 #endif
986 #endif
987
988 #ifndef NO_SHLWAPI_STREAM
989 #ifdef UNICODE
990 #define SHOpenRegStream SHOpenRegStreamW
991 #define SHOpenRegStream2 SHOpenRegStream2W
992 #define SHCreateStreamOnFile SHCreateStreamOnFileW
993 #else
994 #define SHOpenRegStream SHOpenRegStreamA
995 #define SHOpenRegStream2 SHOpenRegStream2A
996 #define SHCreateStreamOnFile SHCreateStreamOnFileA
997 #endif
998
999 LWSTDAPI_(struct IStream *) SHOpenRegStreamA(HKEY hkey,LPCSTR pszSubkey,LPCSTR pszValue,DWORD grfMode);
1000 LWSTDAPI_(struct IStream *) SHOpenRegStreamW(HKEY hkey,LPCWSTR pszSubkey,LPCWSTR pszValue,DWORD grfMode);
1001 LWSTDAPI_(struct IStream *) SHOpenRegStream2A(HKEY hkey,LPCSTR pszSubkey,LPCSTR pszValue,DWORD grfMode);
1002 LWSTDAPI_(struct IStream *) SHOpenRegStream2W(HKEY hkey,LPCWSTR pszSubkey,LPCWSTR pszValue,DWORD grfMode);
1003
1004 #undef SHOpenRegStream
1005 #define SHOpenRegStream SHOpenRegStream2
1006 LWSTDAPI SHCreateStreamOnFileA(LPCSTR pszFile,DWORD grfMode,struct IStream **ppstm);
1007 LWSTDAPI SHCreateStreamOnFileW(LPCWSTR pszFile,DWORD grfMode,struct IStream **ppstm);
1008
1009 #if (_WIN32_IE >= 0x0600)
1010 LWSTDAPI SHCreateStreamOnFileEx(LPCWSTR pszFile,DWORD grfMode,DWORD dwAttributes,WINBOOL fCreate,struct IStream *pstmTemplate,struct IStream **ppstm);
1011 #endif
1012 #endif
1013
1014 #ifndef NO_SHLWAPI_HTTP
1015 #if (_WIN32_IE >= 0x0603)
1016 #ifdef UNICODE
1017 #define GetAcceptLanguages GetAcceptLanguagesW
1018 #else
1019 #define GetAcceptLanguages GetAcceptLanguagesA
1020 #endif
1021
1022 LWSTDAPI GetAcceptLanguagesA(LPSTR psz,DWORD *pcch);
1023 LWSTDAPI GetAcceptLanguagesW(LPWSTR psz,DWORD *pcch);
1024 #endif
1025 #endif
1026
1027 #if (_WIN32_IE >= 0x0601)
1028 #define SHGVSPB_PERUSER 0x00000001
1029 #define SHGVSPB_ALLUSERS 0x00000002
1030 #define SHGVSPB_PERFOLDER 0x00000004
1031 #define SHGVSPB_ALLFOLDERS 0x00000008
1032 #define SHGVSPB_INHERIT 0x00000010
1033 #define SHGVSPB_ROAM 0x00000020
1034 #define SHGVSPB_NOAUTODEFAULTS 0x80000000
1035
1036 #define SHGVSPB_FOLDER (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER)
1037 #define SHGVSPB_FOLDERNODEFAULTS (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER | SHGVSPB_NOAUTODEFAULTS)
1038 #define SHGVSPB_USERDEFAULTS (SHGVSPB_PERUSER | SHGVSPB_ALLFOLDERS)
1039 #define SHGVSPB_GLOBALDEAFAULTS (SHGVSPB_ALLUSERS | SHGVSPB_ALLFOLDERS)
1040
1041 LWSTDAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl,LPCWSTR pszBagName,DWORD dwFlags,REFIID riid,void **ppv);
1042 #endif
1043
1044 #if (_WIN32_IE >= 0x0603)
1045 LWSTDAPI_(HANDLE) SHAllocShared(const void *pvData,DWORD dwSize,DWORD dwProcessId);
1046 LWSTDAPI_(WINBOOL) SHFreeShared(HANDLE hData,DWORD dwProcessId);
1047 LWSTDAPI_(void *) SHLockShared(HANDLE hData,DWORD dwProcessId);
1048 LWSTDAPI_(WINBOOL) SHUnlockShared(void *pvData);
1049 #endif
1050
1051 #define SHACF_DEFAULT 0x00000000
1052 #define SHACF_FILESYSTEM 0x00000001
1053 #define SHACF_URLALL (SHACF_URLHISTORY | SHACF_URLMRU)
1054 #define SHACF_URLHISTORY 0x00000002
1055 #define SHACF_URLMRU 0x00000004
1056 #define SHACF_USETAB 0x00000008
1057 #define SHACF_FILESYS_ONLY 0x00000010
1058
1059 #if (_WIN32_IE >= 0x0600)
1060 #define SHACF_FILESYS_DIRS 0x00000020
1061 #endif
1062
1063 #define SHACF_AUTOSUGGEST_FORCE_ON 0x10000000
1064 #define SHACF_AUTOSUGGEST_FORCE_OFF 0x20000000
1065 #define SHACF_AUTOAPPEND_FORCE_ON 0x40000000
1066 #define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000
1067
1068 LWSTDAPI SHAutoComplete(HWND hwndEdit,DWORD dwFlags);
1069 LWSTDAPI SHSetThreadRef(IUnknown *punk);
1070 LWSTDAPI SHGetThreadRef(IUnknown **ppunk);
1071 LWSTDAPI_(WINBOOL) SHSkipJunction(struct IBindCtx *pbc,const CLSID *pclsid);
1072
1073 #if (_WIN32_IE >= 0x0603)
1074 LWSTDAPI SHCreateThreadRef(LONG *pcRef,IUnknown **ppunk);
1075 #endif
1076
1077 #define CTF_INSIST 0x00000001
1078 #define CTF_THREAD_REF 0x00000002
1079 #define CTF_PROCESS_REF 0x00000004
1080 #define CTF_COINIT 0x00000008
1081 #define CTF_FREELIBANDEXIT 0x00000010
1082 #define CTF_REF_COUNTED 0x00000020
1083 #define CTF_WAIT_ALLOWCOM 0x00000040
1084
1085 LWSTDAPI_(WINBOOL) SHCreateThread(LPTHREAD_START_ROUTINE pfnThreadProc,void *pData,DWORD dwFlags,LPTHREAD_START_ROUTINE pfnCallback);
1086 LWSTDAPI SHReleaseThreadRef();
1087
1088 #ifndef NO_SHLWAPI_GDI
1089 LWSTDAPI_(HPALETTE) SHCreateShellPalette(HDC hdc);
1090 LWSTDAPI_(void) ColorRGBToHLS(COLORREF clrRGB,WORD *pwHue,WORD *pwLuminance,WORD *pwSaturation);
1091 LWSTDAPI_(COLORREF) ColorHLSToRGB(WORD wHue,WORD wLuminance,WORD wSaturation);
1092 LWSTDAPI_(COLORREF) ColorAdjustLuma(COLORREF clrRGB,int n,WINBOOL fScale);
1093 #endif
1094
1095 typedef struct _DLLVERSIONINFO {
1096 DWORD cbSize;
1097 DWORD dwMajorVersion;
1098 DWORD dwMinorVersion;
1099 DWORD dwBuildNumber;
1100 DWORD dwPlatformID;
1101 } DLLVERSIONINFO;
1102
1103 #define DLLVER_PLATFORM_WINDOWS 0x00000001
1104 #define DLLVER_PLATFORM_NT 0x00000002
1105
1106 typedef struct _DLLVERSIONINFO2 {
1107 DLLVERSIONINFO info1;
1108 DWORD dwFlags;
1109 ULONGLONG ullVersion;
1110
1111 } DLLVERSIONINFO2;
1112
1113 #define DLLVER_MAJOR_MASK 0xFFFF000000000000
1114 #define DLLVER_MINOR_MASK 0x0000FFFF00000000
1115 #define DLLVER_BUILD_MASK 0x00000000FFFF0000
1116 #define DLLVER_QFE_MASK 0x000000000000FFFF
1117
1118 #define MAKEDLLVERULL(major,minor,build,qfe) (((ULONGLONG)(major) << 48) | ((ULONGLONG)(minor) << 32) | ((ULONGLONG)(build) << 16) | ((ULONGLONG)(qfe) << 0))
1119
1120 typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *);
1121
1122 STDAPI DllInstall(WINBOOL bInstall,LPCWSTR pszCmdLine);
1123
1124 #if (_WIN32_IE >= 0x0602)
1125 LWSTDAPI_(WINBOOL) IsInternetESCEnabled();
1126 #endif
1127
1128 #ifdef __cplusplus
1129 }
1130 #endif
1131
1132 #include <poppack.h>
1133 #endif
1134 #endif