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