source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/shlwapi.h

Last change on this file was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 59.1 KB
Line 
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _INC_SHLWAPI
7#define _INC_SHLWAPI
8
9#include <_mingw_unicode.h>
10#include <winapifamily.h>
11
12#ifndef NOSHLWAPI
13
14#include <objbase.h>
15#include <shtypes.h>
16
17#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM)
18#ifndef WINSHLWAPI
19#if !defined(_SHLWAPI_)
20#define LWSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
21#define LWSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
22#define LWSTDAPIV EXTERN_C DECLSPEC_IMPORT HRESULT STDAPIVCALLTYPE
23#define LWSTDAPIV_(type) EXTERN_C DECLSPEC_IMPORT type STDAPIVCALLTYPE
24#else
25#define LWSTDAPI STDAPI
26#define LWSTDAPI_(type) STDAPI_(type)
27#define LWSTDAPIV STDAPIV
28#define LWSTDAPIV_(type) STDAPIV_(type)
29#endif
30#endif
31
32#ifndef _WINRESRC_
33#ifndef _WIN32_IE
34#define _WIN32_IE 0x0601
35#endif
36#endif
37
38#include <pshpack8.h>
39
40#ifndef __IBindCtx_FWD_DEFINED__
41#define __IBindCtx_FWD_DEFINED__
42 typedef interface IBindCtx IBindCtx;
43#endif
44
45#ifdef __cplusplus
46extern "C" {
47#endif
48
49#ifndef NO_SHLWAPI_STRFCNS
50 LWSTDAPI_(LPSTR) StrChrA(LPCSTR lpStart,WORD wMatch);
51 LWSTDAPI_(LPWSTR) StrChrW(LPCWSTR lpStart,WCHAR wMatch);
52 LWSTDAPI_(LPSTR) StrChrIA(LPCSTR lpStart,WORD wMatch);
53 LWSTDAPI_(LPWSTR) StrChrIW(LPCWSTR lpStart,WCHAR wMatch);
54 LWSTDAPI_(PCWSTR) StrChrNW(PCWSTR pszStart, WCHAR wMatch, UINT cchMax);
55 LWSTDAPI_(PCWSTR) StrChrNIW(PCWSTR pszStart, WCHAR wMatch, UINT cchMax);
56 LWSTDAPI_(int) StrCmpNA(LPCSTR lpStr1,LPCSTR lpStr2,int nChar);
57 LWSTDAPI_(int) StrCmpNW(LPCWSTR lpStr1,LPCWSTR lpStr2,int nChar);
58 LWSTDAPI_(int) StrCmpNIA(LPCSTR lpStr1,LPCSTR lpStr2,int nChar);
59 LWSTDAPI_(int) StrCmpNIW(LPCWSTR lpStr1,LPCWSTR lpStr2,int nChar);
60
61 LWSTDAPI_(int) StrCmpNCA(LPCSTR pszStr1, LPCSTR pszStr2, int nChar);
62 LWSTDAPI_(int) StrCmpNCW(LPCWSTR pszStr1, LPCWSTR pszStr2, int nChar);
63
64#define StrCmpNC __MINGW_NAME_AW(StrCmpNC)
65
66 LWSTDAPI_(int) StrCmpNICA(LPCSTR pszStr1, LPCSTR pszStr2, int nChar);
67 LWSTDAPI_(int) StrCmpNICW(LPCWSTR pszStr1, LPCWSTR pszStr2, int nChar);
68
69#define StrCmpNIC __MINGW_NAME_AW(StrCmpNIC)
70
71 LWSTDAPI_(int) StrCSpnA(LPCSTR lpStr,LPCSTR lpSet);
72 LWSTDAPI_(int) StrCSpnW(LPCWSTR lpStr,LPCWSTR lpSet);
73 LWSTDAPI_(int) StrCSpnIA(LPCSTR lpStr,LPCSTR lpSet);
74 LWSTDAPI_(int) StrCSpnIW(LPCWSTR lpStr,LPCWSTR lpSet);
75 LWSTDAPI_(LPSTR) StrDupA(LPCSTR lpSrch);
76 LWSTDAPI_(LPWSTR) StrDupW(LPCWSTR lpSrch);
77 LWSTDAPI_(LPSTR) StrFormatByteSizeA(DWORD dw,LPSTR szBuf,UINT uiBufSize);
78 LWSTDAPI_(LPSTR) StrFormatByteSize64A(LONGLONG qdw,LPSTR szBuf,UINT uiBufSize);
79 LWSTDAPI_(LPWSTR) StrFormatByteSizeW(LONGLONG qdw,LPWSTR szBuf,UINT uiBufSize);
80 LWSTDAPI_(LPWSTR) StrFormatKBSizeW(LONGLONG qdw,LPWSTR szBuf,UINT uiBufSize);
81 LWSTDAPI_(LPSTR) StrFormatKBSizeA(LONGLONG qdw,LPSTR szBuf,UINT uiBufSize);
82 LWSTDAPI_(int) StrFromTimeIntervalA(LPSTR pszOut,UINT cchMax,DWORD dwTimeMS,int digits);
83 LWSTDAPI_(int) StrFromTimeIntervalW(LPWSTR pszOut,UINT cchMax,DWORD dwTimeMS,int digits);
84 LWSTDAPI_(WINBOOL) StrIsIntlEqualA(WINBOOL fCaseSens,LPCSTR lpString1,LPCSTR lpString2,int nChar);
85 LWSTDAPI_(WINBOOL) StrIsIntlEqualW(WINBOOL fCaseSens,LPCWSTR lpString1,LPCWSTR lpString2,int nChar);
86 LWSTDAPI_(LPSTR) StrNCatA(LPSTR psz1,LPCSTR psz2,int cchMax);
87 LWSTDAPI_(LPWSTR) StrNCatW(LPWSTR psz1,LPCWSTR psz2,int cchMax);
88 LWSTDAPI_(LPSTR) StrPBrkA(LPCSTR psz,LPCSTR pszSet);
89 LWSTDAPI_(LPWSTR) StrPBrkW(LPCWSTR psz,LPCWSTR pszSet);
90 LWSTDAPI_(LPSTR) StrRChrA(LPCSTR lpStart,LPCSTR lpEnd,WORD wMatch);
91 LWSTDAPI_(LPWSTR) StrRChrW(LPCWSTR lpStart,LPCWSTR lpEnd,WCHAR wMatch);
92 LWSTDAPI_(LPSTR) StrRChrIA(LPCSTR lpStart,LPCSTR lpEnd,WORD wMatch);
93 LWSTDAPI_(LPWSTR) StrRChrIW(LPCWSTR lpStart,LPCWSTR lpEnd,WCHAR wMatch);
94 LWSTDAPI_(LPSTR) StrRStrIA(LPCSTR lpSource,LPCSTR lpLast,LPCSTR lpSrch);
95 LWSTDAPI_(LPWSTR) StrRStrIW(LPCWSTR lpSource,LPCWSTR lpLast,LPCWSTR lpSrch);
96 LWSTDAPI_(int) StrSpnA(LPCSTR psz,LPCSTR pszSet);
97 LWSTDAPI_(int) StrSpnW(LPCWSTR psz,LPCWSTR pszSet);
98 LWSTDAPI_(LPSTR) StrStrA(LPCSTR lpFirst,LPCSTR lpSrch);
99 LWSTDAPI_(LPWSTR) StrStrW(LPCWSTR lpFirst,LPCWSTR lpSrch);
100 LWSTDAPI_(LPSTR) StrStrIA(LPCSTR lpFirst,LPCSTR lpSrch);
101 LWSTDAPI_(LPWSTR) StrStrIW(LPCWSTR lpFirst,LPCWSTR lpSrch);
102 LWSTDAPI_(PCWSTR) StrStrNW(PCWSTR pszFirst, PCWSTR pszSrch, UINT cchMax);
103 LWSTDAPI_(PCWSTR) StrStrNIW(PCWSTR pszFirst, PCWSTR pszSrch, UINT cchMax);
104 LWSTDAPI_(int) StrToIntA(LPCSTR lpSrc);
105 LWSTDAPI_(int) StrToIntW(LPCWSTR lpSrc);
106
107#define STIF_DEFAULT __MSABI_LONG(0x00000000)
108#define STIF_SUPPORT_HEX __MSABI_LONG(0x00000001)
109 typedef int STIF_FLAGS;
110
111 LWSTDAPI_(WINBOOL) StrToIntExA(LPCSTR pszString,STIF_FLAGS dwFlags,int *piRet);
112 LWSTDAPI_(WINBOOL) StrToIntExW(LPCWSTR pszString,STIF_FLAGS dwFlags,int *piRet);
113#if (_WIN32_IE >= 0x0600)
114 LWSTDAPI_(WINBOOL) StrToInt64ExA(LPCSTR pszString,STIF_FLAGS dwFlags,LONGLONG *pllRet);
115 LWSTDAPI_(WINBOOL) StrToInt64ExW(LPCWSTR pszString,STIF_FLAGS dwFlags,LONGLONG *pllRet);
116#endif
117 LWSTDAPI_(WINBOOL) StrTrimA(LPSTR psz,LPCSTR pszTrimChars);
118 LWSTDAPI_(WINBOOL) StrTrimW(LPWSTR psz,LPCWSTR pszTrimChars);
119 LWSTDAPI_(LPWSTR) StrCatW(LPWSTR psz1,LPCWSTR psz2);
120 LWSTDAPI_(int) StrCmpW(LPCWSTR psz1,LPCWSTR psz2);
121 LWSTDAPI_(int) StrCmpIW(LPCWSTR psz1,LPCWSTR psz2);
122 LWSTDAPI_(LPWSTR) StrCpyW(LPWSTR psz1,LPCWSTR psz2);
123 LWSTDAPI_(LPWSTR) StrCpyNW(LPWSTR psz1,LPCWSTR psz2,int cchMax);
124 LWSTDAPI_(LPWSTR) StrCatBuffW(LPWSTR pszDest,LPCWSTR pszSrc,int cchDestBuffSize);
125 LWSTDAPI_(LPSTR) StrCatBuffA(LPSTR pszDest,LPCSTR pszSrc,int cchDestBuffSize);
126 LWSTDAPI_(WINBOOL) ChrCmpIA(WORD w1,WORD w2);
127 LWSTDAPI_(WINBOOL) ChrCmpIW(WCHAR w1,WCHAR w2);
128 LWSTDAPI_(int) wvnsprintfA(LPSTR lpOut,int cchLimitIn,LPCSTR lpFmt,va_list arglist);
129 LWSTDAPI_(int) wvnsprintfW(LPWSTR lpOut,int cchLimitIn,LPCWSTR lpFmt,va_list arglist);
130 LWSTDAPIV_(int) wnsprintfA(LPSTR lpOut,int cchLimitIn,LPCSTR lpFmt,...);
131 LWSTDAPIV_(int) wnsprintfW(LPWSTR lpOut,int cchLimitIn,LPCWSTR lpFmt,...);
132
133#define StrIntlEqNA(s1,s2,nChar) StrIsIntlEqualA(TRUE,s1,s2,nChar)
134#define StrIntlEqNW(s1,s2,nChar) StrIsIntlEqualW(TRUE,s1,s2,nChar)
135#define StrIntlEqNIA(s1,s2,nChar) StrIsIntlEqualA(FALSE,s1,s2,nChar)
136#define StrIntlEqNIW(s1,s2,nChar) StrIsIntlEqualW(FALSE,s1,s2,nChar)
137
138#define StrRetToStr __MINGW_NAME_AW(StrRetToStr)
139#define StrRetToBuf __MINGW_NAME_AW(StrRetToBuf)
140#define SHStrDup __MINGW_NAME_AW(SHStrDup)
141
142 LWSTDAPI StrRetToStrA(STRRET *pstr,LPCITEMIDLIST pidl,LPSTR *ppsz);
143 LWSTDAPI StrRetToStrW(STRRET *pstr,LPCITEMIDLIST pidl,LPWSTR *ppsz);
144 LWSTDAPI StrRetToBufA(STRRET *pstr,LPCITEMIDLIST pidl,LPSTR pszBuf,UINT cchBuf);
145 LWSTDAPI StrRetToBufW(STRRET *pstr,LPCITEMIDLIST pidl,LPWSTR pszBuf,UINT cchBuf);
146 LWSTDAPI StrRetToBSTR(STRRET *pstr,LPCITEMIDLIST pidl,BSTR *pbstr);
147 LWSTDAPI SHStrDupA(LPCSTR psz,WCHAR **ppwsz);
148 LWSTDAPI SHStrDupW(LPCWSTR psz,WCHAR **ppwsz);
149
150#ifdef __cplusplus
151 inline HRESULT SHLocalStrDupW(PCWSTR psz, PWSTR *ppsz) {
152 *ppsz = StrDupW(psz);
153 return *ppsz ? S_OK : E_OUTOFMEMORY;
154 }
155
156 inline HRESULT SHLocalStrDupA(PCSTR psz, PSTR *ppsz) {
157 *ppsz = StrDupA(psz);
158 return *ppsz ? S_OK : E_OUTOFMEMORY;
159 }
160
161#define SHLocalStrDup __MINGW_NAME_AW(SHLocalStrDup)
162#endif
163
164 LWSTDAPI_(int) StrCmpLogicalW(LPCWSTR psz1,LPCWSTR psz2);
165 LWSTDAPI_(DWORD) StrCatChainW(LPWSTR pszDst,DWORD cchDst,DWORD ichAt,LPCWSTR pszSrc);
166 LWSTDAPI SHLoadIndirectString(LPCWSTR pszSource,LPWSTR pszOutBuf,UINT cchOutBuf,void **ppvReserved);
167
168#if (_WIN32_IE >= 0x0603)
169 LWSTDAPI_(WINBOOL) IsCharSpaceA(CHAR wch);
170 LWSTDAPI_(WINBOOL) IsCharSpaceW(WCHAR wch);
171
172#define IsCharSpace __MINGW_NAME_AW(IsCharSpace)
173
174 LWSTDAPI_(int) StrCmpCA(LPCSTR pszStr1,LPCSTR pszStr2);
175 LWSTDAPI_(int) StrCmpCW(LPCWSTR pszStr1,LPCWSTR pszStr2);
176
177#define StrCmpC __MINGW_NAME_AW(StrCmpC)
178
179 LWSTDAPI_(int) StrCmpICA(LPCSTR pszStr1,LPCSTR pszStr2);
180 LWSTDAPI_(int) StrCmpICW(LPCWSTR pszStr1,LPCWSTR pszStr2);
181
182#define StrCmpIC __MINGW_NAME_AW(StrCmpIC)
183#endif
184
185#define StrChr __MINGW_NAME_AW(StrChr)
186#define StrRChr __MINGW_NAME_AW(StrRChr)
187#define StrChrI __MINGW_NAME_AW(StrChrI)
188#define StrRChrI __MINGW_NAME_AW(StrRChrI)
189#define StrCmpN __MINGW_NAME_AW(StrCmpN)
190#define StrCmpNI __MINGW_NAME_AW(StrCmpNI)
191#define StrStr __MINGW_NAME_AW(StrStr)
192
193#define StrStrI __MINGW_NAME_AW(StrStrI)
194#define StrDup __MINGW_NAME_AW(StrDup)
195#define StrRStrI __MINGW_NAME_AW(StrRStrI)
196#define StrCSpn __MINGW_NAME_AW(StrCSpn)
197#define StrCSpnI __MINGW_NAME_AW(StrCSpnI)
198#define StrSpn __MINGW_NAME_AW(StrSpn)
199#define StrToInt __MINGW_NAME_AW(StrToInt)
200#define StrPBrk __MINGW_NAME_AW(StrPBrk)
201#define StrToIntEx __MINGW_NAME_AW(StrToIntEx)
202
203#if (_WIN32_IE >= 0x0600)
204#define StrToInt64Ex __MINGW_NAME_AW(StrToInt64Ex)
205#endif
206
207#define StrFromTimeInterval __MINGW_NAME_AW(StrFromTimeInterval)
208#define StrIntlEqN __MINGW_NAME_AW(StrIntlEqN)
209#define StrIntlEqNI __MINGW_NAME_AW(StrIntlEqNI)
210#define StrFormatByteSize __MINGW_NAME_AW(StrFormatByteSize)
211#define StrFormatKBSize __MINGW_NAME_AW(StrFormatKBSize)
212
213#define StrNCat __MINGW_NAME_AW(StrNCat)
214#define StrTrim __MINGW_NAME_AW(StrTrim)
215#define StrCatBuff __MINGW_NAME_AW(StrCatBuff)
216#define ChrCmpI __MINGW_NAME_AW(ChrCmpI)
217#define wvnsprintf __MINGW_NAME_AW(wvnsprintf)
218#define wnsprintf __MINGW_NAME_AW(wnsprintf)
219#define StrIsIntlEqual __MINGW_NAME_AW(StrIsIntlEqual)
220
221#if defined(UNICODE)
222#define StrFormatByteSize64 StrFormatByteSizeW
223#else
224#define StrFormatByteSize64 StrFormatByteSize64A
225#endif
226
227 LWSTDAPI_(WINBOOL) IntlStrEqWorkerA(WINBOOL fCaseSens,LPCSTR lpString1,LPCSTR lpString2,int nChar);
228 LWSTDAPI_(WINBOOL) IntlStrEqWorkerW(WINBOOL fCaseSens,LPCWSTR lpString1,LPCWSTR lpString2,int nChar);
229
230#define IntlStrEqNA(s1,s2,nChar) IntlStrEqWorkerA(TRUE,s1,s2,nChar)
231#define IntlStrEqNW(s1,s2,nChar) IntlStrEqWorkerW(TRUE,s1,s2,nChar)
232#define IntlStrEqNIA(s1,s2,nChar) IntlStrEqWorkerA(FALSE,s1,s2,nChar)
233#define IntlStrEqNIW(s1,s2,nChar) IntlStrEqWorkerW(FALSE,s1,s2,nChar)
234
235#define IntlStrEqN __MINGW_NAME_AW(IntlStrEqN)
236#define IntlStrEqNI __MINGW_NAME_AW(IntlStrEqNI)
237
238#define SZ_CONTENTTYPE_HTMLA "text/html"
239#define SZ_CONTENTTYPE_HTMLW L"text/html"
240#define SZ_CONTENTTYPE_CDFA "application/x-cdf"
241#define SZ_CONTENTTYPE_CDFW L"application/x-cdf"
242
243#define SZ_CONTENTTYPE_HTML __MINGW_NAME_AW(SZ_CONTENTTYPE_HTML)
244#define SZ_CONTENTTYPE_CDF __MINGW_NAME_AW(SZ_CONTENTTYPE_CDF)
245
246#define PathIsHTMLFileA(pszPath) PathIsContentTypeA(pszPath,SZ_CONTENTTYPE_HTMLA)
247#define PathIsHTMLFileW(pszPath) PathIsContentTypeW(pszPath,SZ_CONTENTTYPE_HTMLW)
248
249#define StrCatA lstrcatA
250#define StrCmpA lstrcmpA
251#define StrCmpIA lstrcmpiA
252#define StrCpyA lstrcpyA
253#define StrCpyNA lstrcpynA
254
255#define StrToLong StrToInt
256#define StrNCmp StrCmpN
257#define StrNCmpI StrCmpNI
258#define StrNCpy StrCpyN
259#define StrCatN StrNCat
260
261#define StrCatBuff __MINGW_NAME_AW(StrCatBuff)
262
263#if defined(UNICODE)
264#define StrCat StrCatW
265#define StrCmp StrCmpW
266#define StrCmpI StrCmpIW
267#define StrCpy StrCpyW
268#define StrCpyN StrCpyNW
269#else
270#define StrCat lstrcatA
271#define StrCmp lstrcmpA
272#define StrCmpI lstrcmpiA
273#define StrCpy lstrcpyA
274#define StrCpyN lstrcpynA
275#endif
276
277#endif
278
279#if (NTDDI_VERSION >= NTDDI_VISTASP1)
280 enum tagSFBS_FLAGS {
281 SFBS_FLAGS_ROUND_TO_NEAREST_DISPLAYED_DIGIT = 0x0001,
282 SFBS_FLAGS_TRUNCATE_UNDISPLAYED_DECIMAL_DIGITS = 0x0002
283 };
284
285 typedef int SFBS_FLAGS;
286
287 LWSTDAPI StrFormatByteSizeEx(ULONGLONG ull, SFBS_FLAGS flags, PWSTR pszBuf, UINT cchBuf);
288#endif
289
290#ifndef NO_SHLWAPI_PATH
291
292 LWSTDAPI_(LPSTR) PathAddBackslashA(LPSTR pszPath);
293 LWSTDAPI_(LPWSTR) PathAddBackslashW(LPWSTR pszPath);
294
295#define PathAddBackslash __MINGW_NAME_AW(PathAddBackslash)
296
297 LWSTDAPI_(WINBOOL) PathAddExtensionA(LPSTR pszPath,LPCSTR pszExt);
298 LWSTDAPI_(WINBOOL) PathAddExtensionW(LPWSTR pszPath,LPCWSTR pszExt);
299
300#define PathAddExtension __MINGW_NAME_AW(PathAddExtension)
301
302 LWSTDAPI_(WINBOOL) PathAppendA(LPSTR pszPath,LPCSTR pMore);
303 LWSTDAPI_(WINBOOL) PathAppendW(LPWSTR pszPath,LPCWSTR pMore);
304 LWSTDAPI_(LPSTR) PathBuildRootA(LPSTR pszRoot,int iDrive);
305 LWSTDAPI_(LPWSTR) PathBuildRootW(LPWSTR pszRoot,int iDrive);
306
307#define PathBuildRoot __MINGW_NAME_AW(PathBuildRoot)
308
309 LWSTDAPI_(WINBOOL) PathCanonicalizeA(LPSTR pszBuf,LPCSTR pszPath);
310 LWSTDAPI_(WINBOOL) PathCanonicalizeW(LPWSTR pszBuf,LPCWSTR pszPath);
311 LWSTDAPI_(LPSTR) PathCombineA(LPSTR pszDest,LPCSTR pszDir,LPCSTR pszFile);
312 LWSTDAPI_(LPWSTR) PathCombineW(LPWSTR pszDest,LPCWSTR pszDir,LPCWSTR pszFile);
313
314#define PathCombine __MINGW_NAME_AW(PathCombine)
315
316 LWSTDAPI_(WINBOOL) PathCompactPathA(HDC hDC,LPSTR pszPath,UINT dx);
317 LWSTDAPI_(WINBOOL) PathCompactPathW(HDC hDC,LPWSTR pszPath,UINT dx);
318 LWSTDAPI_(WINBOOL) PathCompactPathExA(LPSTR pszOut,LPCSTR pszSrc,UINT cchMax,DWORD dwFlags);
319 LWSTDAPI_(WINBOOL) PathCompactPathExW(LPWSTR pszOut,LPCWSTR pszSrc,UINT cchMax,DWORD dwFlags);
320 LWSTDAPI_(int) PathCommonPrefixA(LPCSTR pszFile1,LPCSTR pszFile2,LPSTR achPath);
321 LWSTDAPI_(int) PathCommonPrefixW(LPCWSTR pszFile1,LPCWSTR pszFile2,LPWSTR achPath);
322 LWSTDAPI_(WINBOOL) PathFileExistsA(LPCSTR pszPath);
323 LWSTDAPI_(WINBOOL) PathFileExistsW(LPCWSTR pszPath);
324
325#define PathFileExists __MINGW_NAME_AW(PathFileExists)
326
327 LWSTDAPI_(LPSTR) PathFindExtensionA(LPCSTR pszPath);
328 LWSTDAPI_(LPWSTR) PathFindExtensionW(LPCWSTR pszPath);
329
330#define PathFindExtension __MINGW_NAME_AW(PathFindExtension)
331
332 LWSTDAPI_(LPSTR) PathFindFileNameA(LPCSTR pszPath);
333 LWSTDAPI_(LPWSTR) PathFindFileNameW(LPCWSTR pszPath);
334
335#define PathFindFileName __MINGW_NAME_AW(PathFindFileName)
336
337 LWSTDAPI_(LPSTR) PathFindNextComponentA(LPCSTR pszPath);
338 LWSTDAPI_(LPWSTR) PathFindNextComponentW(LPCWSTR pszPath);
339
340#define PathFindNextComponent __MINGW_NAME_AW(PathFindNextComponent)
341
342 LWSTDAPI_(WINBOOL) PathFindOnPathA(LPSTR pszPath,LPCSTR *ppszOtherDirs);
343 LWSTDAPI_(WINBOOL) PathFindOnPathW(LPWSTR pszPath,LPCWSTR *ppszOtherDirs);
344 LWSTDAPI_(LPSTR) PathGetArgsA(LPCSTR pszPath);
345 LWSTDAPI_(LPWSTR) PathGetArgsW(LPCWSTR pszPath);
346
347#define PathGetArgs __MINGW_NAME_AW(PathGetArgs)
348
349 LWSTDAPI_(LPCSTR) PathFindSuffixArrayA(LPCSTR pszPath,const LPCSTR *apszSuffix,int iArraySize);
350 LWSTDAPI_(LPCWSTR) PathFindSuffixArrayW(LPCWSTR pszPath,const LPCWSTR *apszSuffix,int iArraySize);
351
352#define PathFindSuffixArray __MINGW_NAME_AW(PathFindSuffixArray)
353
354 LWSTDAPI_(WINBOOL) PathIsLFNFileSpecA(LPCSTR lpName);
355 LWSTDAPI_(WINBOOL) PathIsLFNFileSpecW(LPCWSTR lpName);
356
357#define PathIsLFNFileSpec __MINGW_NAME_AW(PathIsLFNFileSpec)
358
359 LWSTDAPI_(UINT) PathGetCharTypeA(UCHAR ch);
360 LWSTDAPI_(UINT) PathGetCharTypeW(WCHAR ch);
361
362#define GCT_INVALID 0x0000
363#define GCT_LFNCHAR 0x0001
364#define GCT_SHORTCHAR 0x0002
365#define GCT_WILD 0x0004
366#define GCT_SEPARATOR 0x0008
367
368 LWSTDAPI_(int) PathGetDriveNumberA(LPCSTR pszPath);
369 LWSTDAPI_(int) PathGetDriveNumberW(LPCWSTR pszPath);
370
371#define PathGetDriveNumber __MINGW_NAME_AW(PathGetDriveNumber)
372
373 LWSTDAPI_(WINBOOL) PathIsDirectoryA(LPCSTR pszPath);
374 LWSTDAPI_(WINBOOL) PathIsDirectoryW(LPCWSTR pszPath);
375
376#define PathIsDirectory __MINGW_NAME_AW(PathIsDirectory)
377
378 LWSTDAPI_(WINBOOL) PathIsDirectoryEmptyA(LPCSTR pszPath);
379 LWSTDAPI_(WINBOOL) PathIsDirectoryEmptyW(LPCWSTR pszPath);
380
381#define PathIsDirectoryEmpty __MINGW_NAME_AW(PathIsDirectoryEmpty)
382
383 LWSTDAPI_(WINBOOL) PathIsFileSpecA(LPCSTR pszPath);
384 LWSTDAPI_(WINBOOL) PathIsFileSpecW(LPCWSTR pszPath);
385
386#define PathIsFileSpec __MINGW_NAME_AW(PathIsFileSpec)
387
388 LWSTDAPI_(WINBOOL) PathIsPrefixA(LPCSTR pszPrefix,LPCSTR pszPath);
389 LWSTDAPI_(WINBOOL) PathIsPrefixW(LPCWSTR pszPrefix,LPCWSTR pszPath);
390
391#define PathIsPrefix __MINGW_NAME_AW(PathIsPrefix)
392
393 LWSTDAPI_(WINBOOL) PathIsRelativeA(LPCSTR pszPath);
394 LWSTDAPI_(WINBOOL) PathIsRelativeW(LPCWSTR pszPath);
395
396#define PathIsRelative __MINGW_NAME_AW(PathIsRelative)
397
398 LWSTDAPI_(WINBOOL) PathIsRootA(LPCSTR pszPath);
399 LWSTDAPI_(WINBOOL) PathIsRootW(LPCWSTR pszPath);
400
401#define PathIsRoot __MINGW_NAME_AW(PathIsRoot)
402
403 LWSTDAPI_(WINBOOL) PathIsSameRootA(LPCSTR pszPath1,LPCSTR pszPath2);
404 LWSTDAPI_(WINBOOL) PathIsSameRootW(LPCWSTR pszPath1,LPCWSTR pszPath2);
405
406#define PathIsSameRoot __MINGW_NAME_AW(PathIsSameRoot)
407
408 LWSTDAPI_(WINBOOL) PathIsUNCA(LPCSTR pszPath);
409 LWSTDAPI_(WINBOOL) PathIsUNCW(LPCWSTR pszPath);
410
411#define PathIsUNC __MINGW_NAME_AW(PathIsUNC)
412
413 LWSTDAPI_(WINBOOL) PathIsNetworkPathA(LPCSTR pszPath);
414 LWSTDAPI_(WINBOOL) PathIsNetworkPathW(LPCWSTR pszPath);
415
416#define PathIsNetworkPath __MINGW_NAME_AW(PathIsNetworkPath)
417
418 LWSTDAPI_(WINBOOL) PathIsUNCServerA(LPCSTR pszPath);
419 LWSTDAPI_(WINBOOL) PathIsUNCServerW(LPCWSTR pszPath);
420
421#define PathIsUNCServer __MINGW_NAME_AW(PathIsUNCServer)
422
423 LWSTDAPI_(WINBOOL) PathIsUNCServerShareA(LPCSTR pszPath);
424 LWSTDAPI_(WINBOOL) PathIsUNCServerShareW(LPCWSTR pszPath);
425
426#define PathIsUNCServerShare __MINGW_NAME_AW(PathIsUNCServerShare)
427
428 LWSTDAPI_(WINBOOL) PathIsContentTypeA(LPCSTR pszPath,LPCSTR pszContentType);
429 LWSTDAPI_(WINBOOL) PathIsContentTypeW(LPCWSTR pszPath,LPCWSTR pszContentType);
430 LWSTDAPI_(WINBOOL) PathIsURLA(LPCSTR pszPath);
431 LWSTDAPI_(WINBOOL) PathIsURLW(LPCWSTR pszPath);
432
433#define PathIsURL __MINGW_NAME_AW(PathIsURL)
434
435 LWSTDAPI_(WINBOOL) PathMakePrettyA(LPSTR pszPath);
436 LWSTDAPI_(WINBOOL) PathMakePrettyW(LPWSTR pszPath);
437 LWSTDAPI_(WINBOOL) PathMatchSpecA(LPCSTR pszFile,LPCSTR pszSpec);
438 LWSTDAPI_(WINBOOL) PathMatchSpecW(LPCWSTR pszFile,LPCWSTR pszSpec);
439 LWSTDAPI_(int) PathParseIconLocationA(LPSTR pszIconFile);
440 LWSTDAPI_(int) PathParseIconLocationW(LPWSTR pszIconFile);
441 LWSTDAPI_(void) PathQuoteSpacesA(LPSTR lpsz);
442 LWSTDAPI_(void) PathQuoteSpacesW(LPWSTR lpsz);
443 LWSTDAPI_(WINBOOL) PathRelativePathToA(LPSTR pszPath,LPCSTR pszFrom,DWORD dwAttrFrom,LPCSTR pszTo,DWORD dwAttrTo);
444 LWSTDAPI_(WINBOOL) PathRelativePathToW(LPWSTR pszPath,LPCWSTR pszFrom,DWORD dwAttrFrom,LPCWSTR pszTo,DWORD dwAttrTo);
445 LWSTDAPI_(void) PathRemoveArgsA(LPSTR pszPath);
446 LWSTDAPI_(void) PathRemoveArgsW(LPWSTR pszPath);
447 LWSTDAPI_(LPSTR) PathRemoveBackslashA(LPSTR pszPath);
448 LWSTDAPI_(LPWSTR) PathRemoveBackslashW(LPWSTR pszPath);
449
450#define PathRemoveBackslash __MINGW_NAME_AW(PathRemoveBackslash)
451
452 LWSTDAPI_(void) PathRemoveBlanksA(LPSTR pszPath);
453 LWSTDAPI_(void) PathRemoveBlanksW(LPWSTR pszPath);
454 LWSTDAPI_(void) PathRemoveExtensionA(LPSTR pszPath);
455 LWSTDAPI_(void) PathRemoveExtensionW(LPWSTR pszPath);
456 LWSTDAPI_(WINBOOL) PathRemoveFileSpecA(LPSTR pszPath);
457 LWSTDAPI_(WINBOOL) PathRemoveFileSpecW(LPWSTR pszPath);
458 LWSTDAPI_(WINBOOL) PathRenameExtensionA(LPSTR pszPath,LPCSTR pszExt);
459 LWSTDAPI_(WINBOOL) PathRenameExtensionW(LPWSTR pszPath,LPCWSTR pszExt);
460 LWSTDAPI_(WINBOOL) PathSearchAndQualifyA(LPCSTR pszPath,LPSTR pszBuf,UINT cchBuf);
461 LWSTDAPI_(WINBOOL) PathSearchAndQualifyW(LPCWSTR pszPath,LPWSTR pszBuf,UINT cchBuf);
462 LWSTDAPI_(void) PathSetDlgItemPathA(HWND hDlg,int id,LPCSTR pszPath);
463 LWSTDAPI_(void) PathSetDlgItemPathW(HWND hDlg,int id,LPCWSTR pszPath);
464 LWSTDAPI_(LPSTR) PathSkipRootA(LPCSTR pszPath);
465 LWSTDAPI_(LPWSTR) PathSkipRootW(LPCWSTR pszPath);
466
467#define PathSkipRoot __MINGW_NAME_AW(PathSkipRoot)
468
469 LWSTDAPI_(void) PathStripPathA(LPSTR pszPath);
470 LWSTDAPI_(void) PathStripPathW(LPWSTR pszPath);
471
472#define PathStripPath __MINGW_NAME_AW(PathStripPath)
473
474 LWSTDAPI_(WINBOOL) PathStripToRootA(LPSTR pszPath);
475 LWSTDAPI_(WINBOOL) PathStripToRootW(LPWSTR pszPath);
476
477#define PathStripToRoot __MINGW_NAME_AW(PathStripToRoot)
478
479 LWSTDAPI_(void) PathUnquoteSpacesA(LPSTR lpsz);
480 LWSTDAPI_(void) PathUnquoteSpacesW(LPWSTR lpsz);
481 LWSTDAPI_(WINBOOL) PathMakeSystemFolderA(LPCSTR pszPath);
482 LWSTDAPI_(WINBOOL) PathMakeSystemFolderW(LPCWSTR pszPath);
483
484#define PathMakeSystemFolder __MINGW_NAME_AW(PathMakeSystemFolder)
485
486 LWSTDAPI_(WINBOOL) PathUnmakeSystemFolderA(LPCSTR pszPath);
487 LWSTDAPI_(WINBOOL) PathUnmakeSystemFolderW(LPCWSTR pszPath);
488
489#define PathUnmakeSystemFolder __MINGW_NAME_AW(PathUnmakeSystemFolder)
490
491 LWSTDAPI_(WINBOOL) PathIsSystemFolderA(LPCSTR pszPath,DWORD dwAttrb);
492 LWSTDAPI_(WINBOOL) PathIsSystemFolderW(LPCWSTR pszPath,DWORD dwAttrb);
493
494#define PathIsSystemFolder __MINGW_NAME_AW(PathIsSystemFolder)
495
496 LWSTDAPI_(void) PathUndecorateA(LPSTR pszPath);
497 LWSTDAPI_(void) PathUndecorateW(LPWSTR pszPath);
498
499#define PathUndecorate __MINGW_NAME_AW(PathUndecorate)
500
501 LWSTDAPI_(WINBOOL) PathUnExpandEnvStringsA(LPCSTR pszPath,LPSTR pszBuf,UINT cchBuf);
502 LWSTDAPI_(WINBOOL) PathUnExpandEnvStringsW(LPCWSTR pszPath,LPWSTR pszBuf,UINT cchBuf);
503
504#define PathUnExpandEnvStrings __MINGW_NAME_AW(PathUnExpandEnvStrings)
505
506#if (_WIN32_IE >= _WIN32_IE_IE70)
507#define PMSF_NORMAL 0x00000000
508#define PMSF_MULTIPLE 0x00000001
509#define PMSF_DONT_STRIP_SPACES 0x00010000
510LWSTDAPI PathMatchSpecExA(LPCSTR pszFile, LPCSTR pszSpec, DWORD dwFlags);
511LWSTDAPI PathMatchSpecExW(LPCWSTR pszFile, LPCWSTR pszSpec, DWORD dwFlags);
512#endif
513
514#define PathMatchSpecEx __MINGW_NAME_AW(PathMatchSpecEx)
515
516#define PathParseIconLocation __MINGW_NAME_AW(PathParseIconLocation)
517#define PathAppend __MINGW_NAME_AW(PathAppend)
518#define PathCanonicalize __MINGW_NAME_AW(PathCanonicalize)
519#define PathCompactPath __MINGW_NAME_AW(PathCompactPath)
520#define PathCompactPathEx __MINGW_NAME_AW(PathCompactPathEx)
521#define PathCommonPrefix __MINGW_NAME_AW(PathCommonPrefix)
522#define PathFindOnPath __MINGW_NAME_AW(PathFindOnPath)
523#define PathGetCharType __MINGW_NAME_AW(PathGetCharType)
524#define PathIsContentType __MINGW_NAME_AW(PathIsContentType)
525#define PathIsHTMLFile __MINGW_NAME_AW(PathIsHTMLFile)
526#define PathMakePretty __MINGW_NAME_AW(PathMakePretty)
527#define PathMatchSpec __MINGW_NAME_AW(PathMatchSpec)
528#define PathQuoteSpaces __MINGW_NAME_AW(PathQuoteSpaces)
529#define PathRelativePathTo __MINGW_NAME_AW(PathRelativePathTo)
530#define PathRemoveArgs __MINGW_NAME_AW(PathRemoveArgs)
531#define PathRemoveBlanks __MINGW_NAME_AW(PathRemoveBlanks)
532#define PathRemoveExtension __MINGW_NAME_AW(PathRemoveExtension)
533#define PathRemoveFileSpec __MINGW_NAME_AW(PathRemoveFileSpec)
534#define PathRenameExtension __MINGW_NAME_AW(PathRenameExtension)
535#define PathSearchAndQualify __MINGW_NAME_AW(PathSearchAndQualify)
536#define PathSetDlgItemPath __MINGW_NAME_AW(PathSetDlgItemPath)
537#define PathUnquoteSpaces __MINGW_NAME_AW(PathUnquoteSpaces)
538
539 typedef enum {
540 URL_SCHEME_INVALID = -1,
541 URL_SCHEME_UNKNOWN = 0,
542 URL_SCHEME_FTP,
543 URL_SCHEME_HTTP,
544 URL_SCHEME_GOPHER,
545 URL_SCHEME_MAILTO,
546 URL_SCHEME_NEWS,
547 URL_SCHEME_NNTP,
548 URL_SCHEME_TELNET,
549 URL_SCHEME_WAIS,
550 URL_SCHEME_FILE,
551 URL_SCHEME_MK,
552 URL_SCHEME_HTTPS,
553 URL_SCHEME_SHELL,
554 URL_SCHEME_SNEWS,
555 URL_SCHEME_LOCAL,
556 URL_SCHEME_JAVASCRIPT,
557 URL_SCHEME_VBSCRIPT,
558 URL_SCHEME_ABOUT,
559 URL_SCHEME_RES,
560#if (_WIN32_IE >= _WIN32_IE_IE60)
561 URL_SCHEME_MSSHELLROOTED,
562 URL_SCHEME_MSSHELLIDLIST,
563 URL_SCHEME_MSHELP,
564#endif
565#if (_WIN32_IE >= _WIN32_IE_IE70)
566 URL_SCHEME_MSSHELLDEVICE,
567 URL_SCHEME_WILDCARD,
568#endif
569#if (NTDDI_VERSION >= NTDDI_VISTA)
570 URL_SCHEME_SEARCH_MS,
571#endif
572#if (NTDDI_VERSION >= NTDDI_VISTASP1)
573 URL_SCHEME_SEARCH,
574#endif
575#if (NTDDI_VERSION >= NTDDI_WIN7)
576 URL_SCHEME_KNOWNFOLDER,
577#endif
578 URL_SCHEME_MAXVALUE
579 } URL_SCHEME;
580
581 typedef enum {
582 URL_PART_NONE = 0,URL_PART_SCHEME = 1,URL_PART_HOSTNAME,URL_PART_USERNAME,URL_PART_PASSWORD,URL_PART_PORT,URL_PART_QUERY
583 } URL_PART;
584
585 typedef enum {
586 URLIS_URL,URLIS_OPAQUE,URLIS_NOHISTORY,URLIS_FILEURL,URLIS_APPLIABLE,URLIS_DIRECTORY,URLIS_HASQUERY
587 } URLIS;
588
589#define URL_UNESCAPE 0x10000000
590#define URL_ESCAPE_UNSAFE 0x20000000
591#define URL_PLUGGABLE_PROTOCOL 0x40000000
592#define URL_WININET_COMPATIBILITY 0x80000000
593#define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000
594#define URL_DONT_UNESCAPE_EXTRA_INFO URL_DONT_ESCAPE_EXTRA_INFO
595#define URL_BROWSER_MODE URL_DONT_ESCAPE_EXTRA_INFO
596#define URL_ESCAPE_SPACES_ONLY 0x04000000
597#define URL_DONT_SIMPLIFY 0x08000000
598#define URL_NO_META URL_DONT_SIMPLIFY
599#define URL_UNESCAPE_INPLACE 0x00100000
600#define URL_CONVERT_IF_DOSPATH 0x00200000
601#define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
602#define URL_INTERNAL_PATH 0x00800000
603#define URL_FILE_USE_PATHURL 0x00010000
604#if _WIN32_IE >= _WIN32_IE_IE60SP2
605#define URL_DONT_UNESCAPE 0x00020000
606#endif
607#if NTDDI_VERSION >= NTDDI_WIN7
608#define URL_ESCAPE_AS_UTF8 0x00040000
609#endif
610#if NTDDI_VERSION >= NTDDI_WIN8
611#define URL_UNESCAPE_AS_UTF8 URL_ESCAPE_AS_UTF8
612#define URL_ESCAPE_ASCII_URI_COMPONENT 0x00080000
613#define URL_ESCAPE_URI_COMPONENT (URL_ESCAPE_ASCII_URI_COMPONENT | URL_ESCAPE_AS_UTF8)
614#define URL_UNESCAPE_URI_COMPONENT URL_UNESCAPE_AS_UTF8
615#endif
616#define URL_ESCAPE_PERCENT 0x00001000
617#define URL_ESCAPE_SEGMENT_ONLY 0x00002000
618
619#define URL_PARTFLAG_KEEPSCHEME 0x00000001
620
621#define URL_APPLY_DEFAULT 0x00000001
622#define URL_APPLY_GUESSSCHEME 0x00000002
623#define URL_APPLY_GUESSFILE 0x00000004
624#define URL_APPLY_FORCEAPPLY 0x00000008
625
626 LWSTDAPI_(int) UrlCompareA(LPCSTR psz1,LPCSTR psz2,WINBOOL fIgnoreSlash);
627 LWSTDAPI_(int) UrlCompareW(LPCWSTR psz1,LPCWSTR psz2,WINBOOL fIgnoreSlash);
628 LWSTDAPI UrlCombineA(LPCSTR pszBase,LPCSTR pszRelative,LPSTR pszCombined,LPDWORD pcchCombined,DWORD dwFlags);
629 LWSTDAPI UrlCombineW(LPCWSTR pszBase,LPCWSTR pszRelative,LPWSTR pszCombined,LPDWORD pcchCombined,DWORD dwFlags);
630 LWSTDAPI UrlCanonicalizeA(LPCSTR pszUrl,LPSTR pszCanonicalized,LPDWORD pcchCanonicalized,DWORD dwFlags);
631 LWSTDAPI UrlCanonicalizeW(LPCWSTR pszUrl,LPWSTR pszCanonicalized,LPDWORD pcchCanonicalized,DWORD dwFlags);
632 LWSTDAPI_(WINBOOL) UrlIsOpaqueA(LPCSTR pszURL);
633 LWSTDAPI_(WINBOOL) UrlIsOpaqueW(LPCWSTR pszURL);
634 LWSTDAPI_(WINBOOL) UrlIsNoHistoryA(LPCSTR pszURL);
635 LWSTDAPI_(WINBOOL) UrlIsNoHistoryW(LPCWSTR pszURL);
636#define UrlIsFileUrlA(pszURL) UrlIsA(pszURL,URLIS_FILEURL)
637#define UrlIsFileUrlW(pszURL) UrlIsW(pszURL,URLIS_FILEURL)
638 LWSTDAPI_(WINBOOL) UrlIsA(LPCSTR pszUrl,URLIS UrlIs);
639 LWSTDAPI_(WINBOOL) UrlIsW(LPCWSTR pszUrl,URLIS UrlIs);
640 LWSTDAPI_(LPCSTR) UrlGetLocationA(LPCSTR psz1);
641 LWSTDAPI_(LPCWSTR) UrlGetLocationW(LPCWSTR psz1);
642 LWSTDAPI UrlUnescapeA(LPSTR pszUrl,LPSTR pszUnescaped,LPDWORD pcchUnescaped,DWORD dwFlags);
643 LWSTDAPI UrlUnescapeW(LPWSTR pszUrl,LPWSTR pszUnescaped,LPDWORD pcchUnescaped,DWORD dwFlags);
644 LWSTDAPI UrlEscapeA(LPCSTR pszUrl,LPSTR pszEscaped,LPDWORD pcchEscaped,DWORD dwFlags);
645 LWSTDAPI UrlEscapeW(LPCWSTR pszUrl,LPWSTR pszEscaped,LPDWORD pcchEscaped,DWORD dwFlags);
646 LWSTDAPI UrlCreateFromPathA(LPCSTR pszPath,LPSTR pszUrl,LPDWORD pcchUrl,DWORD dwFlags);
647 LWSTDAPI UrlCreateFromPathW(LPCWSTR pszPath,LPWSTR pszUrl,LPDWORD pcchUrl,DWORD dwFlags);
648 LWSTDAPI PathCreateFromUrlA(LPCSTR pszUrl,LPSTR pszPath,LPDWORD pcchPath,DWORD dwFlags);
649 LWSTDAPI PathCreateFromUrlW(LPCWSTR pszUrl,LPWSTR pszPath,LPDWORD pcchPath,DWORD dwFlags);
650#if (_WIN32_IE >= _WIN32_IE_IE70)
651 LWSTDAPI PathCreateFromUrlAlloc(PCWSTR pszIn, PWSTR *ppszOut, DWORD dwFlags);
652#endif
653 LWSTDAPI UrlHashA(LPCSTR pszUrl,LPBYTE pbHash,DWORD cbHash);
654 LWSTDAPI UrlHashW(LPCWSTR pszUrl,LPBYTE pbHash,DWORD cbHash);
655 LWSTDAPI UrlGetPartW(LPCWSTR pszIn,LPWSTR pszOut,LPDWORD pcchOut,DWORD dwPart,DWORD dwFlags);
656 LWSTDAPI UrlGetPartA(LPCSTR pszIn,LPSTR pszOut,LPDWORD pcchOut,DWORD dwPart,DWORD dwFlags);
657 LWSTDAPI UrlApplySchemeA(LPCSTR pszIn,LPSTR pszOut,LPDWORD pcchOut,DWORD dwFlags);
658 LWSTDAPI UrlApplySchemeW(LPCWSTR pszIn,LPWSTR pszOut,LPDWORD pcchOut,DWORD dwFlags);
659 LWSTDAPI HashData(LPBYTE pbData,DWORD cbData,LPBYTE pbHash,DWORD cbHash);
660 LWSTDAPI UrlFixupW(PCWSTR pcszUrl, PWSTR pszTranslatedUrl, DWORD cchMax);
661#if defined(UNICODE)
662#define UrlFixup UrlFixupW
663#endif
664
665#define UrlCompare __MINGW_NAME_AW(UrlCompare)
666#define UrlCombine __MINGW_NAME_AW(UrlCombine)
667#define UrlCanonicalize __MINGW_NAME_AW(UrlCanonicalize)
668#define UrlIsOpaque __MINGW_NAME_AW(UrlIsOpaque)
669#define UrlIsFileUrl __MINGW_NAME_AW(UrlIsFileUrl)
670#define UrlGetLocation __MINGW_NAME_AW(UrlGetLocation)
671#define UrlUnescape __MINGW_NAME_AW(UrlUnescape)
672#define UrlEscape __MINGW_NAME_AW(UrlEscape)
673#define UrlCreateFromPath __MINGW_NAME_AW(UrlCreateFromPath)
674#define PathCreateFromUrl __MINGW_NAME_AW(PathCreateFromUrl)
675#define UrlHash __MINGW_NAME_AW(UrlHash)
676#define UrlGetPart __MINGW_NAME_AW(UrlGetPart)
677#define UrlApplyScheme __MINGW_NAME_AW(UrlApplyScheme)
678#define UrlIs __MINGW_NAME_AW(UrlIs)
679
680#define UrlEscapeSpaces(pszUrl,pszEscaped,pcchEscaped) UrlCanonicalize(pszUrl,pszEscaped,pcchEscaped,URL_ESCAPE_SPACES_ONLY |URL_DONT_ESCAPE_EXTRA_INFO)
681#define UrlUnescapeInPlace(pszUrl,dwFlags) UrlUnescape(pszUrl,NULL,NULL,dwFlags | URL_UNESCAPE_INPLACE)
682
683 typedef struct tagPARSEDURLA {
684 DWORD cbSize;
685 LPCSTR pszProtocol;
686 UINT cchProtocol;
687 LPCSTR pszSuffix;
688 UINT cchSuffix;
689 UINT nScheme;
690 } PARSEDURLA, *PPARSEDURLA;
691
692 typedef struct tagPARSEDURLW {
693 DWORD cbSize;
694 LPCWSTR pszProtocol;
695 UINT cchProtocol;
696 LPCWSTR pszSuffix;
697 UINT cchSuffix;
698 UINT nScheme;
699 } PARSEDURLW, *PPARSEDURLW;
700
701 LWSTDAPI ParseURLA(LPCSTR pcszURL, PARSEDURLA *ppu);
702 LWSTDAPI ParseURLW(LPCWSTR pcszURL, PARSEDURLW *ppu);
703
704#if defined(UNICODE)
705#define ParseURL ParseURLW
706 typedef PARSEDURLW PARSEDURL;
707 typedef PPARSEDURLW PPARSEDURL;
708#else
709#define ParseURL ParseURLA
710 typedef PARSEDURLA PARSEDURL;
711 typedef PPARSEDURLA PPARSEDURL;
712#endif
713
714#endif
715
716#ifndef NO_SHLWAPI_REG
717
718 LWSTDAPI_(DWORD) SHDeleteEmptyKeyA(HKEY hkey,LPCSTR pszSubKey);
719 LWSTDAPI_(DWORD) SHDeleteEmptyKeyW(HKEY hkey,LPCWSTR pszSubKey);
720
721#define SHDeleteEmptyKey __MINGW_NAME_AW(SHDeleteEmptyKey)
722
723 LWSTDAPI_(DWORD) SHDeleteKeyA(HKEY hkey,LPCSTR pszSubKey);
724 LWSTDAPI_(DWORD) SHDeleteKeyW(HKEY hkey,LPCWSTR pszSubKey);
725
726#define SHDeleteKey __MINGW_NAME_AW(SHDeleteKey)
727
728 LWSTDAPI_(HKEY) SHRegDuplicateHKey(HKEY hkey);
729
730 LWSTDAPI_(DWORD) SHDeleteValueA(HKEY hkey,LPCSTR pszSubKey,LPCSTR pszValue);
731 LWSTDAPI_(DWORD) SHDeleteValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue);
732
733#define SHDeleteValue __MINGW_NAME_AW(SHDeleteValue)
734
735 LWSTDAPI_(DWORD) SHGetValueA(HKEY hkey,LPCSTR pszSubKey,LPCSTR pszValue,DWORD *pdwType,void *pvData,DWORD *pcbData);
736 LWSTDAPI_(DWORD) SHGetValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue,DWORD *pdwType,void *pvData,DWORD *pcbData);
737
738#define SHGetValue __MINGW_NAME_AW(SHGetValue)
739
740 LWSTDAPI_(DWORD) SHSetValueA(HKEY hkey,LPCSTR pszSubKey,LPCSTR pszValue,DWORD dwType,LPCVOID pvData,DWORD cbData);
741 LWSTDAPI_(DWORD) SHSetValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue,DWORD dwType,LPCVOID pvData,DWORD cbData);
742
743#define SHSetValue __MINGW_NAME_AW(SHSetValue)
744
745#if (_WIN32_IE >= 0x0602)
746
747 typedef DWORD SRRF;
748
749#define SRRF_RT_REG_NONE 0x00000001
750#define SRRF_RT_REG_SZ 0x00000002
751#define SRRF_RT_REG_EXPAND_SZ 0x00000004
752#define SRRF_RT_REG_BINARY 0x00000008
753#define SRRF_RT_REG_DWORD 0x00000010
754#define SRRF_RT_REG_MULTI_SZ 0x00000020
755#define SRRF_RT_REG_QWORD 0x00000040
756
757#define SRRF_RT_DWORD (SRRF_RT_REG_BINARY | SRRF_RT_REG_DWORD)
758#define SRRF_RT_QWORD (SRRF_RT_REG_BINARY | SRRF_RT_REG_QWORD)
759#define SRRF_RT_ANY 0x0000ffff
760
761#define SRRF_RM_ANY 0x00000000
762#define SRRF_RM_NORMAL 0x00010000
763#define SRRF_RM_SAFE 0x00020000
764#define SRRF_RM_SAFENETWORK 0x00040000
765
766#define SRRF_NOEXPAND 0x10000000
767#define SRRF_ZEROONFAILURE 0x20000000
768#define SRRF_NOVIRT 0x40000000
769
770 LWSTDAPI_(LONG) SHRegGetValueA(HKEY hkey,LPCSTR pszSubKey,LPCSTR pszValue,SRRF dwFlags,DWORD *pdwType,void *pvData,DWORD *pcbData);
771 LWSTDAPI_(LONG) SHRegGetValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue,SRRF dwFlags,DWORD *pdwType,void *pvData,DWORD *pcbData);
772
773#define SHRegGetValue __MINGW_NAME_AW(SHRegGetValue)
774
775 LWSTDAPI_(LSTATUS) SHRegSetValue(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszValue, SRRF srrfFlags,
776 DWORD dwType, LPCVOID pvData, DWORD cbData);
777
778 LWSTDAPI_(LSTATUS) SHRegGetValueFromHKCUHKLM(PCWSTR pwszKey, PCWSTR pwszValue, SRRF srrfFlags,
779 DWORD *pdwType, void *pvData, DWORD * pcbData);
780 STDAPI_(WINBOOL) SHRegGetBoolValueFromHKCUHKLM(PCWSTR pszKey, PCWSTR pszValue, WINBOOL fDefault);
781#endif
782
783#define SHQueryValueEx __MINGW_NAME_AW(SHQueryValueEx)
784#define SHEnumKeyEx __MINGW_NAME_AW(SHEnumKeyEx)
785#define SHEnumValue __MINGW_NAME_AW(SHEnumValue)
786#define SHQueryInfoKey __MINGW_NAME_AW(SHQueryInfoKey)
787#define SHCopyKey __MINGW_NAME_AW(SHCopyKey)
788#define SHRegGetPath __MINGW_NAME_AW(SHRegGetPath)
789#define SHRegSetPath __MINGW_NAME_AW(SHRegSetPath)
790
791 LWSTDAPI_(DWORD) SHQueryValueExA(HKEY hkey,LPCSTR pszValue,DWORD *pdwReserved,DWORD *pdwType,void *pvData,DWORD *pcbData);
792 LWSTDAPI_(DWORD) SHQueryValueExW(HKEY hkey,LPCWSTR pszValue,DWORD *pdwReserved,DWORD *pdwType,void *pvData,DWORD *pcbData);
793 LWSTDAPI_(LONG) SHEnumKeyExA(HKEY hkey,DWORD dwIndex,LPSTR pszName,LPDWORD pcchName);
794 LWSTDAPI_(LONG) SHEnumKeyExW(HKEY hkey,DWORD dwIndex,LPWSTR pszName,LPDWORD pcchName);
795 LWSTDAPI_(LONG) SHEnumValueA(HKEY hkey,DWORD dwIndex,LPSTR pszValueName,LPDWORD pcchValueName,LPDWORD pdwType,void *pvData,LPDWORD pcbData);
796 LWSTDAPI_(LONG) SHEnumValueW(HKEY hkey,DWORD dwIndex,LPWSTR pszValueName,LPDWORD pcchValueName,LPDWORD pdwType,void *pvData,LPDWORD pcbData);
797 LWSTDAPI_(LONG) SHQueryInfoKeyA(HKEY hkey,LPDWORD pcSubKeys,LPDWORD pcchMaxSubKeyLen,LPDWORD pcValues,LPDWORD pcchMaxValueNameLen);
798 LWSTDAPI_(LONG) SHQueryInfoKeyW(HKEY hkey,LPDWORD pcSubKeys,LPDWORD pcchMaxSubKeyLen,LPDWORD pcValues,LPDWORD pcchMaxValueNameLen);
799 LWSTDAPI_(DWORD) SHCopyKeyA(HKEY hkeySrc,LPCSTR szSrcSubKey,HKEY hkeyDest,DWORD fReserved);
800 LWSTDAPI_(DWORD) SHCopyKeyW(HKEY hkeySrc,LPCWSTR wszSrcSubKey,HKEY hkeyDest,DWORD fReserved);
801 LWSTDAPI_(DWORD) SHRegGetPathA(HKEY hKey,LPCSTR pcszSubKey,LPCSTR pcszValue,LPSTR pszPath,DWORD dwFlags);
802 LWSTDAPI_(DWORD) SHRegGetPathW(HKEY hKey,LPCWSTR pcszSubKey,LPCWSTR pcszValue,LPWSTR pszPath,DWORD dwFlags);
803 LWSTDAPI_(DWORD) SHRegSetPathA(HKEY hKey,LPCSTR pcszSubKey,LPCSTR pcszValue,LPCSTR pcszPath,DWORD dwFlags);
804 LWSTDAPI_(DWORD) SHRegSetPathW(HKEY hKey,LPCWSTR pcszSubKey,LPCWSTR pcszValue,LPCWSTR pcszPath,DWORD dwFlags);
805
806 typedef enum {
807 SHREGDEL_DEFAULT = 0x00000000,SHREGDEL_HKCU = 0x00000001,SHREGDEL_HKLM = 0x00000010,SHREGDEL_BOTH = 0x00000011
808 } SHREGDEL_FLAGS;
809
810 typedef enum {
811 SHREGENUM_DEFAULT = 0x00000000,SHREGENUM_HKCU = 0x00000001,SHREGENUM_HKLM = 0x00000010,SHREGENUM_BOTH = 0x00000011
812 } SHREGENUM_FLAGS;
813
814#define SHREGSET_HKCU 0x00000001
815#define SHREGSET_FORCE_HKCU 0x00000002
816#define SHREGSET_HKLM 0x00000004
817#define SHREGSET_FORCE_HKLM 0x00000008
818#define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM)
819
820 typedef HANDLE HUSKEY;
821 typedef HUSKEY *PHUSKEY;
822
823 LWSTDAPI_(LONG) SHRegCreateUSKeyA(LPCSTR pszPath,REGSAM samDesired,HUSKEY hRelativeUSKey,PHUSKEY phNewUSKey,DWORD dwFlags);
824 LWSTDAPI_(LONG) SHRegCreateUSKeyW(LPCWSTR pwzPath,REGSAM samDesired,HUSKEY hRelativeUSKey,PHUSKEY phNewUSKey,DWORD dwFlags);
825 LWSTDAPI_(LONG) SHRegOpenUSKeyA(LPCSTR pszPath,REGSAM samDesired,HUSKEY hRelativeUSKey,PHUSKEY phNewUSKey,WINBOOL fIgnoreHKCU);
826 LWSTDAPI_(LONG) SHRegOpenUSKeyW(LPCWSTR pwzPath,REGSAM samDesired,HUSKEY hRelativeUSKey,PHUSKEY phNewUSKey,WINBOOL fIgnoreHKCU);
827 LWSTDAPI_(LONG) SHRegQueryUSValueA(HUSKEY hUSKey,LPCSTR pszValue,LPDWORD pdwType,void *pvData,LPDWORD pcbData,WINBOOL fIgnoreHKCU,void *pvDefaultData,DWORD dwDefaultDataSize);
828 LWSTDAPI_(LONG) SHRegQueryUSValueW(HUSKEY hUSKey,LPCWSTR pwzValue,LPDWORD pdwType,void *pvData,LPDWORD pcbData,WINBOOL fIgnoreHKCU,void *pvDefaultData,DWORD dwDefaultDataSize);
829 LWSTDAPI_(LONG) SHRegWriteUSValueA(HUSKEY hUSKey,LPCSTR pszValue,DWORD dwType,const void *pvData,DWORD cbData,DWORD dwFlags);
830 LWSTDAPI_(LONG) SHRegWriteUSValueW(HUSKEY hUSKey,LPCWSTR pwzValue,DWORD dwType,const void *pvData,DWORD cbData,DWORD dwFlags);
831 LWSTDAPI_(LONG) SHRegDeleteUSValueA(HUSKEY hUSKey,LPCSTR pszValue,SHREGDEL_FLAGS delRegFlags);
832 LWSTDAPI_(LONG) SHRegDeleteEmptyUSKeyW(HUSKEY hUSKey,LPCWSTR pwzSubKey,SHREGDEL_FLAGS delRegFlags);
833 LWSTDAPI_(LONG) SHRegDeleteEmptyUSKeyA(HUSKEY hUSKey,LPCSTR pszSubKey,SHREGDEL_FLAGS delRegFlags);
834 LWSTDAPI_(LONG) SHRegDeleteUSValueW(HUSKEY hUSKey,LPCWSTR pwzValue,SHREGDEL_FLAGS delRegFlags);
835 LWSTDAPI_(LONG) SHRegEnumUSKeyA(HUSKEY hUSKey,DWORD dwIndex,LPSTR pszName,LPDWORD pcchName,SHREGENUM_FLAGS enumRegFlags);
836 LWSTDAPI_(LONG) SHRegEnumUSKeyW(HUSKEY hUSKey,DWORD dwIndex,LPWSTR pwzName,LPDWORD pcchName,SHREGENUM_FLAGS enumRegFlags);
837 LWSTDAPI_(LONG) SHRegEnumUSValueA(HUSKEY hUSkey,DWORD dwIndex,LPSTR pszValueName,LPDWORD pcchValueName,LPDWORD pdwType,void *pvData,LPDWORD pcbData,SHREGENUM_FLAGS enumRegFlags);
838 LWSTDAPI_(LONG) SHRegEnumUSValueW(HUSKEY hUSkey,DWORD dwIndex,LPWSTR pszValueName,LPDWORD pcchValueName,LPDWORD pdwType,void *pvData,LPDWORD pcbData,SHREGENUM_FLAGS enumRegFlags);
839 LWSTDAPI_(LONG) SHRegQueryInfoUSKeyA(HUSKEY hUSKey,LPDWORD pcSubKeys,LPDWORD pcchMaxSubKeyLen,LPDWORD pcValues,LPDWORD pcchMaxValueNameLen,SHREGENUM_FLAGS enumRegFlags);
840 LWSTDAPI_(LONG) SHRegQueryInfoUSKeyW(HUSKEY hUSKey,LPDWORD pcSubKeys,LPDWORD pcchMaxSubKeyLen,LPDWORD pcValues,LPDWORD pcchMaxValueNameLen,SHREGENUM_FLAGS enumRegFlags);
841 LWSTDAPI_(LONG) SHRegCloseUSKey(HUSKEY hUSKey);
842 LWSTDAPI_(LONG) SHRegGetUSValueA(LPCSTR pszSubKey,LPCSTR pszValue,LPDWORD pdwType,void *pvData,LPDWORD pcbData,WINBOOL fIgnoreHKCU,void *pvDefaultData,DWORD dwDefaultDataSize);
843 LWSTDAPI_(LONG) SHRegGetUSValueW(LPCWSTR pwzSubKey,LPCWSTR pwzValue,LPDWORD pdwType,void *pvData,LPDWORD pcbData,WINBOOL fIgnoreHKCU,void *pvDefaultData,DWORD dwDefaultDataSize);
844 LWSTDAPI_(LONG) SHRegSetUSValueA(LPCSTR pszSubKey,LPCSTR pszValue,DWORD dwType,const void *pvData,DWORD cbData,DWORD dwFlags);
845 LWSTDAPI_(LONG) SHRegSetUSValueW(LPCWSTR pwzSubKey,LPCWSTR pwzValue,DWORD dwType,const void *pvData,DWORD cbData,DWORD dwFlags);
846 LWSTDAPI_(int) SHRegGetIntW(HKEY hk,LPCWSTR pwzKey,int iDefault);
847
848#define SHRegCreateUSKey __MINGW_NAME_AW(SHRegCreateUSKey)
849#define SHRegOpenUSKey __MINGW_NAME_AW(SHRegOpenUSKey)
850#define SHRegQueryUSValue __MINGW_NAME_AW(SHRegQueryUSValue)
851#define SHRegWriteUSValue __MINGW_NAME_AW(SHRegWriteUSValue)
852#define SHRegDeleteUSValue __MINGW_NAME_AW(SHRegDeleteUSValue)
853#define SHRegDeleteEmptyUSKey __MINGW_NAME_AW(SHRegDeleteEmptyUSKey)
854#define SHRegEnumUSKey __MINGW_NAME_AW(SHRegEnumUSKey)
855#define SHRegEnumUSValue __MINGW_NAME_AW(SHRegEnumUSValue)
856#define SHRegQueryInfoUSKey __MINGW_NAME_AW(SHRegQueryInfoUSKey)
857#define SHRegGetUSValue __MINGW_NAME_AW(SHRegGetUSValue)
858#define SHRegSetUSValue __MINGW_NAME_AW(SHRegSetUSValue)
859#define SHRegGetInt __MINGW_NAME_AW(SHRegGetInt)
860#define SHRegGetBoolUSValue __MINGW_NAME_AW(SHRegGetBoolUSValue)
861
862 LWSTDAPI_(WINBOOL) SHRegGetBoolUSValueA(LPCSTR pszSubKey,LPCSTR pszValue,WINBOOL fIgnoreHKCU,WINBOOL fDefault);
863 LWSTDAPI_(WINBOOL) SHRegGetBoolUSValueW(LPCWSTR pszSubKey,LPCWSTR pszValue,WINBOOL fIgnoreHKCU,WINBOOL fDefault);
864
865 enum {
866 ASSOCF_NONE = 0x00000000,
867 ASSOCF_INIT_NOREMAPCLSID = 0x00000001,
868 ASSOCF_INIT_BYEXENAME = 0x00000002,
869 ASSOCF_OPEN_BYEXENAME = 0x00000002,
870 ASSOCF_INIT_DEFAULTTOSTAR = 0x00000004,
871 ASSOCF_INIT_DEFAULTTOFOLDER = 0x00000008,
872 ASSOCF_NOUSERSETTINGS = 0x00000010,
873 ASSOCF_NOTRUNCATE = 0x00000020,
874 ASSOCF_VERIFY = 0x00000040,
875 ASSOCF_REMAPRUNDLL = 0x00000080,
876 ASSOCF_NOFIXUPS = 0x00000100,
877 ASSOCF_IGNOREBASECLASS = 0x00000200,
878 ASSOCF_INIT_IGNOREUNKNOWN = 0x00000400
879#if NTDDI_VERSION >= NTDDI_WIN8
880 ,ASSOCF_INIT_FIXED_PROGID = 0x00000800
881 ,ASSOCF_IS_PROTOCOL = 0x00001000
882 ,ASSOCF_INIT_FOR_FILE = 0x00002000
883#endif
884#if NTDDI_VERSION >= NTDDI_WIN10_RS1
885 ,ASSOCF_IS_FULL_URI = 0x00004000
886 ,ASSOCF_PER_MACHINE_ONLY = 0x00008000
887#endif
888#if NTDDI_VERSION >= NTDDI_WIN10_RS4
889 ,ASSOCF_APP_TO_APP = 0x00010000
890#endif
891 };
892
893 typedef DWORD ASSOCF;
894
895 typedef enum {
896 ASSOCSTR_COMMAND = 1,
897 ASSOCSTR_EXECUTABLE,
898 ASSOCSTR_FRIENDLYDOCNAME,
899 ASSOCSTR_FRIENDLYAPPNAME,
900 ASSOCSTR_NOOPEN,
901 ASSOCSTR_SHELLNEWVALUE,
902 ASSOCSTR_DDECOMMAND,
903 ASSOCSTR_DDEIFEXEC,
904 ASSOCSTR_DDEAPPLICATION,
905 ASSOCSTR_DDETOPIC,
906 ASSOCSTR_INFOTIP,
907 ASSOCSTR_QUICKTIP,
908 ASSOCSTR_TILEINFO,
909 ASSOCSTR_CONTENTTYPE,
910 ASSOCSTR_DEFAULTICON,
911 ASSOCSTR_SHELLEXTENSION,
912#if _WIN32_WINNT >= 0x601
913 ASSOCSTR_DROPTARGET,
914 ASSOCSTR_DELEGATEEXECUTE,
915#endif
916 ASSOCSTR_SUPPORTED_URI_PROTOCOLS,
917#if (NTDDI_VERSION >= NTDDI_WIN10)
918 ASSOCSTR_PROGID,
919 ASSOCSTR_APPID,
920 ASSOCSTR_APPPUBLISHER,
921 ASSOCSTR_APPICONREFERENCE,
922#endif
923 ASSOCSTR_MAX
924 } ASSOCSTR;
925
926 typedef enum {
927 ASSOCKEY_SHELLEXECCLASS = 1,
928 ASSOCKEY_APP,
929 ASSOCKEY_CLASS,
930 ASSOCKEY_BASECLASS,
931 ASSOCKEY_MAX
932 } ASSOCKEY;
933
934 typedef enum {
935 ASSOCDATA_MSIDESCRIPTOR = 1,
936 ASSOCDATA_NOACTIVATEHANDLER,
937 ASSOCDATA_QUERYCLASSSTORE,
938 ASSOCDATA_HASPERUSERASSOC,
939 ASSOCDATA_EDITFLAGS,
940 ASSOCDATA_VALUE,
941 ASSOCDATA_MAX
942 } ASSOCDATA;
943
944 typedef enum {
945 ASSOCENUM_NONE
946 } ASSOCENUM;
947
948 typedef enum {
949 FTA_None = 0x00000000,
950 FTA_Exclude = 0x00000001,
951 FTA_Show = 0x00000002,
952 FTA_HasExtension = 0x00000004,
953 FTA_NoEdit = 0x00000008,
954 FTA_NoRemove = 0x00000010,
955 FTA_NoNewVerb = 0x00000020,
956 FTA_NoEditVerb = 0x00000040,
957 FTA_NoRemoveVerb = 0x00000080,
958 FTA_NoEditDesc = 0x00000100,
959 FTA_NoEditIcon = 0x00000200,
960 FTA_NoEditDflt = 0x00000400,
961 FTA_NoEditVerbCmd = 0x00000800,
962 FTA_NoEditVerbExe = 0x00001000,
963 FTA_NoDDE = 0x00002000,
964
965 FTA_NoEditMIME = 0x00008000,
966 FTA_OpenIsSafe = 0x00010000,
967 FTA_AlwaysUnsafe = 0x00020000,
968
969 FTA_NoRecentDocs = 0x00100000,
970 FTA_SafeForElevation = 0x00200000,
971 FTA_AlwaysUseDirectInvoke = 0x00400000
972 } FILETYPEATTRIBUTEFLAGS;
973
974 DEFINE_ENUM_FLAG_OPERATORS(FILETYPEATTRIBUTEFLAGS)
975
976#undef INTERFACE
977#define INTERFACE IQueryAssociations
978 DECLARE_INTERFACE_(IQueryAssociations,IUnknown) {
979 BEGIN_INTERFACE
980
981 STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
982 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
983 STDMETHOD_(ULONG,Release) (THIS) PURE;
984 STDMETHOD (Init)(THIS_ ASSOCF flags,LPCWSTR pszAssoc,HKEY hkProgid,HWND hwnd) PURE;
985 STDMETHOD (GetString)(THIS_ ASSOCF flags,ASSOCSTR str,LPCWSTR pszExtra,LPWSTR pszOut,DWORD *pcchOut) PURE;
986 STDMETHOD (GetKey)(THIS_ ASSOCF flags,ASSOCKEY key,LPCWSTR pszExtra,HKEY *phkeyOut) PURE;
987 STDMETHOD (GetData)(THIS_ ASSOCF flags,ASSOCDATA data,LPCWSTR pszExtra,LPVOID pvOut,DWORD *pcbOut) PURE;
988 STDMETHOD (GetEnum)(THIS_ ASSOCF flags,ASSOCENUM assocenum,LPCWSTR pszExtra,REFIID riid,LPVOID *ppvOut) PURE;
989
990 END_INTERFACE
991 };
992
993#define AssocQueryString __MINGW_NAME_AW(AssocQueryString)
994#define AssocQueryStringByKey __MINGW_NAME_AW(AssocQueryStringByKey)
995#define AssocQueryKey __MINGW_NAME_AW(AssocQueryKey)
996
997 LWSTDAPI AssocCreate(CLSID clsid,REFIID riid,LPVOID *ppv);
998 STDAPI_(DWORD) SHGetAssocKeys(IQueryAssociations *pqa, HKEY *rgKeys, DWORD cKeys);
999 LWSTDAPI AssocQueryStringA(ASSOCF flags,ASSOCSTR str,LPCSTR pszAssoc,LPCSTR pszExtra,LPSTR pszOut,DWORD *pcchOut);
1000 LWSTDAPI AssocQueryStringW(ASSOCF flags,ASSOCSTR str,LPCWSTR pszAssoc,LPCWSTR pszExtra,LPWSTR pszOut,DWORD *pcchOut);
1001 LWSTDAPI AssocQueryStringByKeyA(ASSOCF flags,ASSOCSTR str,HKEY hkAssoc,LPCSTR pszExtra,LPSTR pszOut,DWORD *pcchOut);
1002 LWSTDAPI AssocQueryStringByKeyW(ASSOCF flags,ASSOCSTR str,HKEY hkAssoc,LPCWSTR pszExtra,LPWSTR pszOut,DWORD *pcchOut);
1003 LWSTDAPI AssocQueryKeyA(ASSOCF flags,ASSOCKEY key,LPCSTR pszAssoc,LPCSTR pszExtra,HKEY *phkeyOut);
1004 LWSTDAPI AssocQueryKeyW(ASSOCF flags,ASSOCKEY key,LPCWSTR pszAssoc,LPCWSTR pszExtra,HKEY *phkeyOut);
1005
1006#if (_WIN32_IE >= 0x0601)
1007 LWSTDAPI_(WINBOOL) AssocIsDangerous(LPCWSTR pszAssoc);
1008#endif
1009
1010#if (_WIN32_IE >= 0x0603)
1011 LWSTDAPI AssocGetPerceivedType(LPCWSTR pszExt,PERCEIVED *ptype,PERCEIVEDFLAG *pflag,LPWSTR *ppszType);
1012#endif
1013
1014#endif
1015
1016#ifndef NO_SHLWAPI_STREAM
1017#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
1018
1019#ifndef __IStream_FWD_DEFINED__
1020#define __IStream_FWD_DEFINED__
1021 typedef interface IStream IStream;
1022#endif
1023
1024#define SHOpenRegStream __MINGW_NAME_AW(SHOpenRegStream)
1025#define SHOpenRegStream2 __MINGW_NAME_AW(SHOpenRegStream2)
1026#define SHCreateStreamOnFile __MINGW_NAME_AW(SHCreateStreamOnFile)
1027
1028 LWSTDAPI_(struct IStream *) SHOpenRegStreamA(HKEY hkey,LPCSTR pszSubkey,LPCSTR pszValue,DWORD grfMode);
1029 LWSTDAPI_(struct IStream *) SHOpenRegStreamW(HKEY hkey,LPCWSTR pszSubkey,LPCWSTR pszValue,DWORD grfMode);
1030 LWSTDAPI_(struct IStream *) SHOpenRegStream2A(HKEY hkey,LPCSTR pszSubkey,LPCSTR pszValue,DWORD grfMode);
1031 LWSTDAPI_(struct IStream *) SHOpenRegStream2W(HKEY hkey,LPCWSTR pszSubkey,LPCWSTR pszValue,DWORD grfMode);
1032
1033#undef SHOpenRegStream
1034#define SHOpenRegStream SHOpenRegStream2
1035 LWSTDAPI SHCreateStreamOnFileA(LPCSTR pszFile,DWORD grfMode,struct IStream **ppstm);
1036 LWSTDAPI SHCreateStreamOnFileW(LPCWSTR pszFile,DWORD grfMode,struct IStream **ppstm);
1037
1038#if (_WIN32_IE >= 0x0600)
1039 LWSTDAPI SHCreateStreamOnFileEx(LPCWSTR pszFile,DWORD grfMode,DWORD dwAttributes,WINBOOL fCreate,struct IStream *pstmTemplate,struct IStream **ppstm);
1040#endif
1041
1042 LWSTDAPI_(IStream *) SHCreateMemStream(const BYTE *pInit, UINT cbInit);
1043
1044#endif
1045#endif
1046
1047#if !defined(NO_SHLWAPI_ISOS)
1048#define OS_WINDOWS 0
1049#define OS_NT 1
1050#define OS_WIN95ORGREATER 2
1051#define OS_NT4ORGREATER 3
1052#define OS_WIN98ORGREATER 5
1053#define OS_WIN98_GOLD 6
1054#define OS_WIN2000ORGREATER 7
1055#define OS_WIN2000PRO 8
1056#define OS_WIN2000SERVER 9
1057#define OS_WIN2000ADVSERVER 10
1058#define OS_WIN2000DATACENTER 11
1059#define OS_WIN2000TERMINAL 12
1060#define OS_EMBEDDED 13
1061#define OS_TERMINALCLIENT 14
1062#define OS_TERMINALREMOTEADMIN 15
1063#define OS_WIN95_GOLD 16
1064#define OS_MEORGREATER 17
1065#define OS_XPORGREATER 18
1066#define OS_HOME 19
1067#define OS_PROFESSIONAL 20
1068#define OS_DATACENTER 21
1069#define OS_ADVSERVER 22
1070#define OS_SERVER 23
1071#define OS_TERMINALSERVER 24
1072#define OS_PERSONALTERMINALSERVER 25
1073#define OS_FASTUSERSWITCHING 26
1074#define OS_WELCOMELOGONUI 27
1075#define OS_DOMAINMEMBER 28
1076#define OS_ANYSERVER 29
1077#define OS_WOW6432 30
1078#define OS_WEBSERVER 31
1079#define OS_SMALLBUSINESSSERVER 32
1080#define OS_TABLETPC 33
1081#define OS_SERVERADMINUI 34
1082#define OS_MEDIACENTER 35
1083#define OS_APPLIANCE 36
1084
1085 LWSTDAPI_(WINBOOL) IsOS(DWORD dwOS);
1086#endif
1087
1088 typedef enum {
1089 GLOBALCOUNTER_SEARCHMANAGER,
1090 GLOBALCOUNTER_SEARCHOPTIONS,
1091 GLOBALCOUNTER_FOLDERSETTINGSCHANGE,
1092 GLOBALCOUNTER_RATINGS,
1093 GLOBALCOUNTER_APPROVEDSITES,
1094 GLOBALCOUNTER_RESTRICTIONS,
1095 GLOBALCOUNTER_SHELLSETTINGSCHANGED,
1096 GLOBALCOUNTER_SYSTEMPIDLCHANGE,
1097 GLOBALCOUNTER_OVERLAYMANAGER,
1098 GLOBALCOUNTER_QUERYASSOCIATIONS,
1099 GLOBALCOUNTER_IESESSIONS,
1100 GLOBALCOUNTER_IEONLY_SESSIONS,
1101 GLOBALCOUNTER_APPLICATION_DESTINATIONS,
1102 __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_CSCSYNCINPROGRESS,
1103 GLOBALCOUNTER_BITBUCKETNUMDELETERS,
1104 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_SHARES,
1105 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_A,
1106 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_B,
1107 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_C,
1108 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_D,
1109 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_E,
1110 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_F,
1111 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_G,
1112 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_H,
1113 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_I,
1114 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_J,
1115 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_K,
1116 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_L,
1117 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_M,
1118 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_N,
1119 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_O,
1120 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_P,
1121 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Q,
1122 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_R,
1123 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_S,
1124 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_T,
1125 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_U,
1126 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_V,
1127 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_W,
1128 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_X,
1129 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Y,
1130 GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Z,
1131 __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_RECYCLEDIRTYCOUNT_SERVERDRIVE,
1132 __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_RECYCLEGLOBALDIRTYCOUNT,
1133 GLOBALCOUNTER_RECYCLEBINENUM,
1134 GLOBALCOUNTER_RECYCLEBINCORRUPTED,
1135 GLOBALCOUNTER_RATINGS_STATECOUNTER,
1136 GLOBALCOUNTER_PRIVATE_PROFILE_CACHE,
1137 GLOBALCOUNTER_INTERNETTOOLBAR_LAYOUT,
1138 GLOBALCOUNTER_FOLDERDEFINITION_CACHE,
1139 GLOBALCOUNTER_COMMONPLACES_LIST_CACHE,
1140 GLOBALCOUNTER_PRIVATE_PROFILE_CACHE_MACHINEWIDE,
1141 GLOBALCOUNTER_ASSOCCHANGED,
1142#if (NTDDI_VERSION >= NTDDI_WIN8)
1143 GLOBALCOUNTER_APP_ITEMS_STATE_STORE_CACHE,
1144 GLOBALCOUNTER_SETTINGSYNC_ENABLED,
1145 GLOBALCOUNTER_APPSFOLDER_FILETYPEASSOCIATION_COUNTER,
1146 GLOBALCOUNTER_USERINFOCHANGED,
1147#if (NTDDI_VERSION >= NTDDI_WINBLUE)
1148 GLOBALCOUNTER_SYNC_ENGINE_INFORMATION_CACHE_MACHINEWIDE,
1149#endif
1150#endif
1151#if (NTDDI_VERSION >= NTDDI_WIN10_RS1)
1152 GLOBALCOUNTER_BANNERS_DATAMODEL_CACHE_MACHINEWIDE,
1153#endif
1154 GLOBALCOUNTER_MAXIMUMVALUE
1155 } SHGLOBALCOUNTER;
1156
1157#if (NTDDI_VERSION >= NTDDI_WIN7)
1158 LWSTDAPI_(long) SHGlobalCounterGetValue(const SHGLOBALCOUNTER id);
1159 LWSTDAPI_(long) SHGlobalCounterIncrement(const SHGLOBALCOUNTER id);
1160 LWSTDAPI_(long) SHGlobalCounterDecrement(const SHGLOBALCOUNTER id);
1161#endif
1162
1163#if (_WIN32_IE >= 0x0603)
1164 LWSTDAPI_(HANDLE) SHAllocShared(const void *pvData,DWORD dwSize,DWORD dwProcessId);
1165 LWSTDAPI_(WINBOOL) SHFreeShared(HANDLE hData,DWORD dwProcessId);
1166 LWSTDAPI_(void *) SHLockShared(HANDLE hData,DWORD dwProcessId);
1167 LWSTDAPI_(WINBOOL) SHUnlockShared(void *pvData);
1168#endif
1169
1170#if (_WIN32_IE >= 0x0501)
1171#define PLATFORM_UNKNOWN 0
1172#define PLATFORM_IE3 1
1173#define PLATFORM_BROWSERONLY 1
1174#define PLATFORM_INTEGRATED 2
1175
1176 LWSTDAPI WhichPlatform(void);
1177
1178typedef struct {
1179 const IID *piid;
1180 int dwOffset;
1181} QITAB, *LPQITAB;
1182typedef const QITAB *LPCQITAB;
1183
1184#ifndef OFFSETOFCLASS
1185#define OFFSETOFCLASS(base, derived) ((DWORD)(DWORD_PTR)(static_cast<base*>((derived*)8))-8)
1186#endif
1187
1188#ifdef __cplusplus
1189#define QITABENTMULTI(Cthis, Ifoo, Iimpl) { &__uuidof(Ifoo), OFFSETOFCLASS(Iimpl, Cthis) }
1190#else
1191#define QITABENTMULTI(Cthis, Ifoo, Iimpl) { (IID*) &IID_##Ifoo, OFFSETOFCLASS(Iimpl, Cthis) }
1192#endif
1193#define QITABENTMULTI2(Cthis, Ifoo, Iimpl) { (IID*) &Ifoo, OFFSETOFCLASS(Iimpl, Cthis) }
1194#define QITABENT(Cthis, Ifoo) QITABENTMULTI(Cthis, Ifoo, Ifoo)
1195
1196 STDAPI QISearch(void *that, LPCQITAB pqit, REFIID riid, void **ppv);
1197
1198#define ILMM_IE4 0
1199 LWSTDAPI_(WINBOOL) SHIsLowMemoryMachine(DWORD dwType);
1200 LWSTDAPI_(int) GetMenuPosFromID(HMENU hMenu, UINT id);
1201 LWSTDAPI SHGetInverseCMAP(BYTE *pbMap, ULONG cbMap);
1202#endif
1203
1204#define SHACF_DEFAULT 0x00000000
1205#define SHACF_FILESYSTEM 0x00000001
1206#define SHACF_URLALL (SHACF_URLHISTORY | SHACF_URLMRU)
1207#define SHACF_URLHISTORY 0x00000002
1208#define SHACF_URLMRU 0x00000004
1209#define SHACF_USETAB 0x00000008
1210#define SHACF_FILESYS_ONLY 0x00000010
1211
1212#if (_WIN32_IE >= 0x0600)
1213#define SHACF_FILESYS_DIRS 0x00000020
1214#endif
1215
1216#if (_WIN32_IE >= 0x0700)
1217#define SHACF_VIRTUAL_NAMESPACE 0x00000040
1218#endif
1219
1220#define SHACF_AUTOSUGGEST_FORCE_ON 0x10000000
1221#define SHACF_AUTOSUGGEST_FORCE_OFF 0x20000000
1222#define SHACF_AUTOAPPEND_FORCE_ON 0x40000000
1223#define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000
1224
1225 LWSTDAPI SHAutoComplete(HWND hwndEdit,DWORD dwFlags);
1226 LWSTDAPI SHSetThreadRef(IUnknown *punk);
1227 LWSTDAPI SHGetThreadRef(IUnknown **ppunk);
1228 LWSTDAPI_(WINBOOL) SHSkipJunction(struct IBindCtx *pbc,const CLSID *pclsid);
1229
1230#if (_WIN32_IE >= 0x0603)
1231 LWSTDAPI SHCreateThreadRef(LONG *pcRef,IUnknown **ppunk);
1232#endif
1233
1234#define CTF_INSIST 0x00000001
1235#define CTF_THREAD_REF 0x00000002
1236#define CTF_PROCESS_REF 0x00000004
1237#define CTF_COINIT_STA 0x00000008
1238#define CTF_COINIT 0x00000008
1239#if (_WIN32_IE >= _WIN32_IE_IE60)
1240#define CTF_FREELIBANDEXIT 0x00000010
1241#define CTF_REF_COUNTED 0x00000020
1242#define CTF_WAIT_ALLOWCOM 0x00000040
1243#endif
1244#if (_WIN32_IE >= _WIN32_IE_IE70)
1245#define CTF_UNUSED 0x00000080
1246#define CTF_INHERITWOW64 0x00000100
1247#endif
1248#if (NTDDI_VERSION >= NTDDI_VISTA)
1249#define CTF_WAIT_NO_REENTRANCY 0x00000200
1250#endif
1251#if (NTDDI_VERSION >= NTDDI_WIN7)
1252#define CTF_KEYBOARD_LOCALE 0x00000400
1253#define CTF_OLEINITIALIZE 0x00000800
1254#define CTF_COINIT_MTA 0x00001000
1255#define CTF_NOADDREFLIB 0x00002000
1256#endif
1257
1258 typedef DWORD SHCT_FLAGS;
1259
1260 LWSTDAPI_(WINBOOL) SHCreateThread(LPTHREAD_START_ROUTINE pfnThreadProc,void *pData, SHCT_FLAGS dwFlags,LPTHREAD_START_ROUTINE pfnCallback);
1261 LWSTDAPI_(WINBOOL) SHCreateThreadWithHandle(LPTHREAD_START_ROUTINE pfnThreadProc, void *pData, SHCT_FLAGS dwflags, LPTHREAD_START_ROUTINE pfnCallback, HANDLE *pHandle);
1262
1263#if (NTDDI_VERSION >= NTDDI_WIN8)
1264 LWSTDAPI_(void) SetProcessReference(IUnknown *punk);
1265 LWSTDAPI GetProcessReference(IUnknown **punk);
1266#endif
1267
1268#if (_WIN32_IE >= _WIN32_IE_IE60)
1269 LWSTDAPI SHReleaseThreadRef(void);
1270#endif
1271
1272#ifndef NO_SHLWAPI_GDI
1273 LWSTDAPI_(HPALETTE) SHCreateShellPalette(HDC hdc);
1274 LWSTDAPI_(void) ColorRGBToHLS(COLORREF clrRGB,WORD *pwHue,WORD *pwLuminance,WORD *pwSaturation);
1275 LWSTDAPI_(COLORREF) ColorHLSToRGB(WORD wHue,WORD wLuminance,WORD wSaturation);
1276 LWSTDAPI_(COLORREF) ColorAdjustLuma(COLORREF clrRGB,int n,WINBOOL fScale);
1277#endif
1278
1279 typedef struct _DLLVERSIONINFO {
1280 DWORD cbSize;
1281 DWORD dwMajorVersion;
1282 DWORD dwMinorVersion;
1283 DWORD dwBuildNumber;
1284 DWORD dwPlatformID;
1285 } DLLVERSIONINFO;
1286
1287#define DLLVER_PLATFORM_WINDOWS 0x00000001
1288#define DLLVER_PLATFORM_NT 0x00000002
1289
1290 typedef struct _DLLVERSIONINFO2 {
1291 DLLVERSIONINFO info1;
1292 DWORD dwFlags;
1293 ULONGLONG ullVersion;
1294
1295 } DLLVERSIONINFO2;
1296
1297#define DLLVER_MAJOR_MASK 0xFFFF000000000000
1298#define DLLVER_MINOR_MASK 0x0000FFFF00000000
1299#define DLLVER_BUILD_MASK 0x00000000FFFF0000
1300#define DLLVER_QFE_MASK 0x000000000000FFFF
1301
1302#define MAKEDLLVERULL(major,minor,build,qfe) (((ULONGLONG)(major) << 48) | ((ULONGLONG)(minor) << 32) | ((ULONGLONG)(build) << 16) | ((ULONGLONG)(qfe) << 0))
1303
1304 typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *);
1305
1306 STDAPI DllInstall(WINBOOL bInstall,LPCWSTR pszCmdLine);
1307
1308#if (_WIN32_IE >= 0x0602)
1309 LWSTDAPI_(WINBOOL) IsInternetESCEnabled(void);
1310#endif
1311
1312#ifndef NO_SHLWAPI_HTTP
1313
1314#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
1315
1316#if (_WIN32_IE >= 0x0603)
1317#define GetAcceptLanguages __MINGW_NAME_AW(GetAcceptLanguages)
1318 LWSTDAPI GetAcceptLanguagesA(LPSTR psz,DWORD *pcch);
1319 LWSTDAPI GetAcceptLanguagesW(LPWSTR psz,DWORD *pcch);
1320#endif
1321
1322#endif
1323
1324#endif
1325
1326#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
1327
1328#if (_WIN32_IE < _WIN32_IE_IE70) && !defined(NO_SHLWAPI_STOPWATCH)
1329#define SPMODE_SHELL 0x00000001
1330#define SPMODE_DEBUGOUT 0x00000002
1331#define SPMODE_TEST 0x00000004
1332#define SPMODE_BROWSER 0x00000008
1333#define SPMODE_FLUSH 0x00000010
1334#define SPMODE_EVENT 0x00000020
1335#define SPMODE_MSVM 0x00000040
1336#define SPMODE_FORMATTEXT 0x00000080
1337#define SPMODE_PROFILE 0x00000100
1338#define SPMODE_DEBUGBREAK 0x00000200
1339#define SPMODE_MSGTRACE 0x00000400
1340#define SPMODE_PERFTAGS 0x00000800
1341#define SPMODE_MEMWATCH 0x00001000
1342#define SPMODE_DBMON 0x00002000
1343#define SPMODE_MULTISTOP 0x00004000
1344#if !defined(NO_ETW_TRACING)
1345#define SPMODE_EVENTTRACE 0x00008000
1346#endif
1347
1348 DWORD WINAPI StopWatchMode(void);
1349 DWORD WINAPI StopWatchFlush(void);
1350#endif
1351
1352 LWSTDAPI_(void) IUnknown_Set(IUnknown **ppunk, IUnknown *punk);
1353 LWSTDAPI_(void) IUnknown_AtomicRelease(void **ppunk);
1354 LWSTDAPI IUnknown_GetWindow(IUnknown *punk, HWND *phwnd);
1355 LWSTDAPI IUnknown_SetSite(IUnknown *punk, IUnknown *punkSite);
1356 LWSTDAPI IUnknown_GetSite(IUnknown *punk, REFIID riid, void **ppv);
1357 LWSTDAPI IUnknown_QueryService(IUnknown *punk, REFGUID guidService, REFIID riid, void **ppvOut);
1358#ifndef COBJMACROS
1359 LWSTDAPI IStream_Read(IStream *pstm, void *pv, ULONG cb);
1360 LWSTDAPI IStream_Write(IStream *pstm, const void *pv, ULONG cb);
1361#endif
1362 LWSTDAPI IStream_Reset(IStream *pstm);
1363 LWSTDAPI IStream_Size(IStream *pstm, ULARGE_INTEGER *pui);
1364
1365#ifndef __IConnectionPoint_FWD_DEFINED__
1366#define __IConnectionPoint_FWD_DEFINED__
1367 typedef interface IConnectionPoint IConnectionPoint;
1368#endif
1369
1370 LWSTDAPI ConnectToConnectionPoint(IUnknown *punk, REFIID riidEvent, WINBOOL fConnect, IUnknown *punkTarget, DWORD *pdwCookie, IConnectionPoint **ppcpOut);
1371
1372#if (NTDDI_VERSION >= NTDDI_VISTA)
1373 LWSTDAPI IStream_ReadPidl(IStream *pstm, PIDLIST_RELATIVE *ppidlOut);
1374 LWSTDAPI IStream_WritePidl(IStream *pstm, PCUIDLIST_RELATIVE pidlWrite);
1375#endif
1376
1377#if (_WIN32_IE >= _WIN32_IE_IE70)
1378 LWSTDAPI IStream_ReadStr(IStream *pstm, PWSTR *ppsz);
1379 LWSTDAPI IStream_WriteStr(IStream *pstm, PCWSTR psz);
1380 LWSTDAPI IStream_Copy(IStream *pstmFrom, IStream *pstmTo, DWORD cb);
1381#endif
1382
1383#if (_WIN32_IE >= 0x0601)
1384#define SHGVSPB_PERUSER 0x00000001
1385#define SHGVSPB_ALLUSERS 0x00000002
1386#define SHGVSPB_PERFOLDER 0x00000004
1387#define SHGVSPB_ALLFOLDERS 0x00000008
1388#define SHGVSPB_INHERIT 0x00000010
1389#define SHGVSPB_ROAM 0x00000020
1390#define SHGVSPB_NOAUTODEFAULTS 0x80000000
1391
1392#define SHGVSPB_FOLDER (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER)
1393#define SHGVSPB_FOLDERNODEFAULTS (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER | SHGVSPB_NOAUTODEFAULTS)
1394#define SHGVSPB_USERDEFAULTS (SHGVSPB_PERUSER | SHGVSPB_ALLFOLDERS)
1395#define SHGVSPB_GLOBALDEFAULTS (SHGVSPB_ALLUSERS | SHGVSPB_ALLFOLDERS)
1396
1397 LWSTDAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl,LPCWSTR pszBagName,DWORD dwFlags,REFIID riid,void **ppv);
1398#endif
1399
1400#define FDTF_SHORTTIME 0x00000001
1401#define FDTF_SHORTDATE 0x00000002
1402#define FDTF_DEFAULT (FDTF_SHORTDATE | FDTF_SHORTTIME)
1403#define FDTF_LONGDATE 0x00000004
1404#define FDTF_LONGTIME 0x00000008
1405#define FDTF_RELATIVE 0x00000010
1406#define FDTF_LTRDATE 0x00000100
1407#define FDTF_RTLDATE 0x00000200
1408#define FDTF_NOAUTOREADINGORDER 0x00000400
1409
1410 LWSTDAPI_(int) SHFormatDateTimeA(const FILETIME UNALIGNED *pft, DWORD *pdwFlags, LPSTR pszBuf, UINT cchBuf);
1411 LWSTDAPI_(int) SHFormatDateTimeW(const FILETIME UNALIGNED *pft, DWORD *pdwFlags, LPWSTR pszBuf, UINT cchBuf);
1412
1413#define SHFormatDateTime __MINGW_NAME_AW(SHFormatDateTime)
1414
1415#endif
1416
1417#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
1418
1419 LWSTDAPI_(int) SHAnsiToUnicode(PCSTR pszSrc, PWSTR pwszDst, int cwchBuf);
1420 LWSTDAPI_(int) SHAnsiToAnsi(PCSTR pszSrc, PSTR pszDst, int cchBuf);
1421 LWSTDAPI_(int) SHUnicodeToAnsi(PCWSTR pwszSrc, PSTR pszDst, int cchBuf);
1422 LWSTDAPI_(int) SHUnicodeToUnicode(PCWSTR pwzSrc, PWSTR pwzDst, int cwchBuf);
1423
1424#if defined(UNICODE)
1425#define SHTCharToUnicode(wzSrc, wzDest, cchSize) SHUnicodeToUnicode(wzSrc, wzDest, cchSize)
1426#define SHTCharToAnsi(wzSrc, szDest, cchSize) SHUnicodeToAnsi(wzSrc, szDest, cchSize)
1427#define SHUnicodeToTChar(wzSrc, wzDest, cchSize) SHUnicodeToUnicode(wzSrc, wzDest, cchSize)
1428#define SHAnsiToTChar(szSrc, wzDest, cchSize) SHAnsiToUnicode(szSrc, wzDest, cchSize)
1429#else
1430#define SHTCharToUnicode(szSrc, wzDest, cchSize) SHAnsiToUnicode(szSrc, wzDest, cchSize)
1431#define SHTCharToAnsi(szSrc, szDest, cchSize) SHAnsiToAnsi(szSrc, szDest, cchSize)
1432#define SHUnicodeToTChar(wzSrc, szDest, cchSize) SHUnicodeToAnsi(wzSrc, szDest, cchSize)
1433#define SHAnsiToTChar(szSrc, szDest, cchSize) SHAnsiToAnsi(szSrc, szDest, cchSize)
1434#endif
1435
1436#endif
1437
1438#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
1439
1440 LWSTDAPI_(int) SHMessageBoxCheckA(HWND hwnd, LPCSTR pszText, LPCSTR pszCaption, UINT uType, int iDefault, LPCSTR pszRegVal);
1441 LWSTDAPI_(int) SHMessageBoxCheckW(HWND hwnd, LPCWSTR pszText, LPCWSTR pszCaption, UINT uType, int iDefault, LPCWSTR pszRegVal);
1442
1443#define SHMessageBoxCheck __MINGW_NAME_AW(SHMessageBoxCheck)
1444
1445 LWSTDAPI_(LRESULT) SHSendMessageBroadcastA(UINT uMsg, WPARAM wParam, LPARAM lParam);
1446 LWSTDAPI_(LRESULT) SHSendMessageBroadcastW(UINT uMsg, WPARAM wParam, LPARAM lParam);
1447
1448#define SHSendMessageBroadcast __MINGW_NAME_AW(SHSendMessageBroadcast)
1449
1450 LWSTDAPI_(CHAR) SHStripMneumonicA(LPSTR pszMenu);
1451 LWSTDAPI_(WCHAR) SHStripMneumonicW(LPWSTR pszMenu);
1452
1453#define SHStripMneumonic __MINGW_NAME_AW(SHStripMneumonic)
1454
1455#endif
1456
1457#if defined(__cplusplus)
1458}
1459#endif
1460
1461#include <poppack.h>
1462
1463#endif
1464
1465#endif
1466
1467#endif
Note: See TracBrowser for help on using the repository browser.