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