shlwapi.h 59 KB

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