shlwapi.h 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045
  1. /*
  2. * SHLWAPI.DLL functions
  3. *
  4. * Copyright (C) 2000 Juergen Schmied
  5. *
  6. * This library is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU Lesser General Public
  8. * License as published by the Free Software Foundation; either
  9. * version 2.1 of the License, or (at your option) any later version.
  10. *
  11. * This library is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. * Lesser General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Lesser General Public
  17. * License along with this library; if not, write to the Free Software
  18. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  19. */
  20. #ifndef __WINE_SHLWAPI_H
  21. #define __WINE_SHLWAPI_H
  22. #include <objbase.h>
  23. #include <shtypes.h>
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif /* defined(__cplusplus) */
  27. #include <pshpack8.h>
  28. #ifndef NO_SHLWAPI_REG
  29. /* Registry functions */
  30. DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
  31. DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
  32. #define SHDeleteEmptyKey WINELIB_NAME_AW(SHDeleteEmptyKey)
  33. DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
  34. DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
  35. #define SHDeleteKey WINELIB_NAME_AW(SHDeleteKey)
  36. DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
  37. DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
  38. #define SHDeleteValue WINELIB_NAME_AW(SHDeleteValue)
  39. DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
  40. DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
  41. #define SHGetValue WINELIB_NAME_AW(SHGetValue)
  42. DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
  43. DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
  44. #define SHSetValue WINELIB_NAME_AW(SHSetValue)
  45. DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
  46. DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
  47. #define SHQueryValueEx WINELIB_NAME_AW(SHQueryValueEx)
  48. LONG WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
  49. LONG WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
  50. #define SHEnumKeyEx WINELIB_NAME_AW(SHEnumKeyEx)
  51. LONG WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
  52. LONG WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
  53. #define SHEnumValue WINELIB_NAME_AW(SHEnumValue)
  54. LONG WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
  55. LONG WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
  56. #define SHQueryInfoKey WINELIB_NAME_AW(SHQueryInfoKey)
  57. DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
  58. DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
  59. #define SHRegGetPath WINELIB_NAME_AW(SHRegGetPath)
  60. DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
  61. DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
  62. #define SHRegSetPath WINELIB_NAME_AW(SHRegSetPath)
  63. DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
  64. DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
  65. #define SHCopyKey WINELIB_NAME_AW(SHCopyKey)
  66. /* Undocumented registry functions */
  67. HKEY WINAPI SHRegDuplicateHKey(HKEY);
  68. DWORD WINAPI SHDeleteOrphanKeyA(HKEY,LPCSTR);
  69. DWORD WINAPI SHDeleteOrphanKeyW(HKEY,LPCWSTR);
  70. #define SHDeleteOrphanKey WINELIB_NAME_AW(SHDeleteOrphanKey)
  71. /* User registry functions */
  72. typedef enum
  73. {
  74. SHREGDEL_DEFAULT = 0,
  75. SHREGDEL_HKCU = 0x1,
  76. SHREGDEL_HKLM = 0x10,
  77. SHREGDEL_BOTH = SHREGDEL_HKLM | SHREGDEL_HKCU
  78. } SHREGDEL_FLAGS;
  79. typedef enum
  80. {
  81. SHREGENUM_DEFAULT = 0,
  82. SHREGENUM_HKCU = 0x1,
  83. SHREGENUM_HKLM = 0x10,
  84. SHREGENUM_BOTH = SHREGENUM_HKLM | SHREGENUM_HKCU
  85. } SHREGENUM_FLAGS;
  86. #define SHREGSET_HKCU 0x1 /* Apply to HKCU if empty */
  87. #define SHREGSET_FORCE_HKCU 0x2 /* Always apply to HKCU */
  88. #define SHREGSET_HKLM 0x4 /* Apply to HKLM if empty */
  89. #define SHREGSET_FORCE_HKLM 0x8 /* Always apply to HKLM */
  90. #define SHREGSET_DEFAULT (SHREGSET_FORCE_HKCU | SHREGSET_HKLM)
  91. typedef HANDLE HUSKEY;
  92. typedef HUSKEY *PHUSKEY;
  93. LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
  94. LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
  95. #define SHRegCreateUSKey WINELIB_NAME_AW(SHRegCreateUSKey)
  96. LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
  97. LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
  98. #define SHRegOpenUSKey WINELIB_NAME_AW(SHRegOpenUSKey)
  99. LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,
  100. BOOL,LPVOID,DWORD);
  101. LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
  102. BOOL,LPVOID,DWORD);
  103. #define SHRegQueryUSValue WINELIB_NAME_AW(SHRegQueryUSValue)
  104. LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
  105. LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
  106. #define SHRegWriteUSValue WINELIB_NAME_AW(SHRegWriteUSValue)
  107. LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
  108. LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
  109. #define SHRegDeleteUSValue WINELIB_NAME_AW(SHRegDeleteUSValue)
  110. LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
  111. LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
  112. #define SHRegDeleteEmptyUSKey WINELIB_NAME_AW(SHRegDeleteEmptyUSKey)
  113. LONG WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
  114. LONG WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
  115. #define SHRegEnumUSKey WINELIB_NAME_AW(SHRegEnumUSKey)
  116. LONG WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,
  117. LPVOID,LPDWORD,SHREGENUM_FLAGS);
  118. LONG WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,
  119. LPVOID,LPDWORD,SHREGENUM_FLAGS);
  120. #define SHRegEnumUSValue WINELIB_NAME_AW(SHRegEnumUSValue)
  121. LONG WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
  122. LPDWORD,SHREGENUM_FLAGS);
  123. LONG WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,
  124. LPDWORD,SHREGENUM_FLAGS);
  125. #define SHRegQueryInfoUSKey WINELIB_NAME_AW(SHRegQueryInfoUSKey)
  126. LONG WINAPI SHRegCloseUSKey(HUSKEY);
  127. LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,
  128. BOOL,LPVOID,DWORD);
  129. LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,
  130. BOOL,LPVOID,DWORD);
  131. #define SHRegGetUSValue WINELIB_NAME_AW(SHRegGetUSValue)
  132. LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
  133. LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
  134. #define SHRegSetUSValue WINELIB_NAME_AW(SHRegSetUSValue)
  135. BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
  136. BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
  137. #define SHRegGetBoolUSValue WINELIB_NAME_AW(SHRegGetBoolUSValue)
  138. int WINAPI SHRegGetIntW(HKEY,LPCWSTR,int);
  139. /* IQueryAssociation and helpers */
  140. enum
  141. {
  142. ASSOCF_INIT_NOREMAPCLSID = 0x001, /* Don't map clsid->progid */
  143. ASSOCF_INIT_BYEXENAME = 0x002, /* .exe name given */
  144. ASSOCF_OPEN_BYEXENAME = 0x002, /* Synonym */
  145. ASSOCF_INIT_DEFAULTTOSTAR = 0x004, /* Use * as base */
  146. ASSOCF_INIT_DEFAULTTOFOLDER = 0x008, /* Use folder as base */
  147. ASSOCF_NOUSERSETTINGS = 0x010, /* No HKCU reads */
  148. ASSOCF_NOTRUNCATE = 0x020, /* Don't truncate return */
  149. ASSOCF_VERIFY = 0x040, /* Verify data */
  150. ASSOCF_REMAPRUNDLL = 0x080, /* Get rundll args */
  151. ASSOCF_NOFIXUPS = 0x100, /* Don't fixup errors */
  152. ASSOCF_IGNOREBASECLASS = 0x200, /* Don't read baseclass */
  153. };
  154. typedef DWORD ASSOCF;
  155. typedef enum
  156. {
  157. ASSOCSTR_COMMAND = 1, /* Verb command */
  158. ASSOCSTR_EXECUTABLE, /* .exe from command string */
  159. ASSOCSTR_FRIENDLYDOCNAME, /* Friendly doc type name */
  160. ASSOCSTR_FRIENDLYAPPNAME, /* Friendly .exe name */
  161. ASSOCSTR_NOOPEN, /* noopen value */
  162. ASSOCSTR_SHELLNEWVALUE, /* Use shellnew key */
  163. ASSOCSTR_DDECOMMAND, /* DDE command template */
  164. ASSOCSTR_DDEIFEXEC, /* DDE command for process create */
  165. ASSOCSTR_DDEAPPLICATION, /* DDE app name */
  166. ASSOCSTR_DDETOPIC, /* DDE topic */
  167. ASSOCSTR_INFOTIP, /* Infotip */
  168. ASSOCSTR_QUICKTIP, /* Quick infotip */
  169. ASSOCSTR_TILEINFO, /* Properties for tileview */
  170. ASSOCSTR_CONTENTTYPE, /* Mimetype */
  171. ASSOCSTR_DEFAULTICON, /* Icon */
  172. ASSOCSTR_SHELLEXTENSION, /* GUID for shell extension handler */
  173. ASSOCSTR_MAX
  174. } ASSOCSTR;
  175. typedef enum
  176. {
  177. ASSOCKEY_SHELLEXECCLASS = 1, /* Key for ShellExec */
  178. ASSOCKEY_APP, /* Application */
  179. ASSOCKEY_CLASS, /* Progid or class */
  180. ASSOCKEY_BASECLASS, /* Base class */
  181. ASSOCKEY_MAX
  182. } ASSOCKEY;
  183. typedef enum
  184. {
  185. ASSOCDATA_MSIDESCRIPTOR = 1, /* Component descriptor */
  186. ASSOCDATA_NOACTIVATEHANDLER, /* Don't activate */
  187. ASSOCDATA_QUERYCLASSSTORE, /* Look in Class Store */
  188. ASSOCDATA_HASPERUSERASSOC, /* Use user association */
  189. ASSOCDATA_EDITFLAGS, /* Edit flags */
  190. ASSOCDATA_VALUE, /* pszExtra is value */
  191. ASSOCDATA_MAX
  192. } ASSOCDATA;
  193. typedef enum
  194. {
  195. ASSOCENUM_NONE
  196. } ASSOCENUM;
  197. typedef struct IQueryAssociations IQueryAssociations,*LPQUERYASSOCIATIONS;
  198. #define INTERFACE IQueryAssociations
  199. DECLARE_INTERFACE_(IQueryAssociations,IUnknown)
  200. {
  201. /*** IUnknown methods ***/
  202. STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
  203. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  204. STDMETHOD_(ULONG,Release)(THIS) PURE;
  205. /*** IQueryAssociations methods ***/
  206. STDMETHOD(Init)(THIS_ ASSOCF flags, LPCWSTR pszAssoc, HKEY hkProgid, HWND hwnd) PURE;
  207. STDMETHOD(GetString)(THIS_ ASSOCF flags, ASSOCSTR str, LPCWSTR pszExtra, LPWSTR pszOut, DWORD * pcchOut) PURE;
  208. STDMETHOD(GetKey)(THIS_ ASSOCF flags, ASSOCKEY key, LPCWSTR pszExtra, HKEY * phkeyOut) PURE;
  209. STDMETHOD(GetData)(THIS_ ASSOCF flags, ASSOCDATA data, LPCWSTR pszExtra, LPVOID pvOut, DWORD * pcbOut) PURE;
  210. STDMETHOD(GetEnum)(THIS_ ASSOCF flags, ASSOCENUM assocenum, LPCWSTR pszExtra, REFIID riid, LPVOID * ppvOut) PURE;
  211. };
  212. #undef INTERFACE
  213. #if !defined(__cplusplus) || defined(CINTERFACE)
  214. #define IQueryAssociations_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  215. #define IQueryAssociations_AddRef(p) (p)->lpVtbl->AddRef(p)
  216. #define IQueryAssociations_Release(p) (p)->lpVtbl->Release(p)
  217. #define IQueryAssociations_Init(p,a,b,c,d) (p)->lpVtbl->Init(p,a,b,c,d)
  218. #define IQueryAssociations_GetString(p,a,b,c,d,e) (p)->lpVtbl->GetString(p,a,b,c,d,e)
  219. #define IQueryAssociations_GetKey(p,a,b,c,d) (p)->lpVtbl->GetKey(p,a,b,c,d)
  220. #define IQueryAssociations_GetData(p,a,b,c,d,e) (p)->lpVtbl->GetData(p,a,b,c,d,e)
  221. #define IQueryAssociations_GetEnum(p,a,b,c,d,e) (p)->lpVtbl->GetEnum(p,a,b,c,d,e)
  222. #endif
  223. HRESULT WINAPI AssocCreate(CLSID,REFIID,LPVOID*);
  224. HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,LPDWORD);
  225. HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,LPDWORD);
  226. #define AssocQueryString WINELIB_NAME_AW(AssocQueryString)
  227. HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,LPDWORD);
  228. HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,LPDWORD);
  229. #define AssocQueryStringByKey WINELIB_NAME_AW(AssocQueryStringByKey)
  230. HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,PHKEY);
  231. HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,PHKEY);
  232. #define AssocQueryKey WINELIB_NAME_AW(AssocQueryKey)
  233. BOOL WINAPI AssocIsDangerous(LPCWSTR);
  234. #endif /* NO_SHLWAPI_REG */
  235. /* Path functions */
  236. #ifndef NO_SHLWAPI_PATH
  237. /* GetPathCharType return flags */
  238. #define GCT_INVALID 0x0
  239. #define GCT_LFNCHAR 0x1
  240. #define GCT_SHORTCHAR 0x2
  241. #define GCT_WILD 0x4
  242. #define GCT_SEPARATOR 0x8
  243. LPSTR WINAPI PathAddBackslashA(LPSTR);
  244. LPWSTR WINAPI PathAddBackslashW(LPWSTR);
  245. #define PathAddBackslash WINELIB_NAME_AW(PathAddBackslash)
  246. BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
  247. BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
  248. #define PathAddExtension WINELIB_NAME_AW(PathAddExtension)
  249. BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
  250. BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
  251. #define PathAppend WINELIB_NAME_AW(PathAppend)
  252. LPSTR WINAPI PathBuildRootA(LPSTR,int);
  253. LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
  254. #define PathBuildRoot WINELIB_NAME_AW(PathBuiltRoot)
  255. BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
  256. BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
  257. #define PathCanonicalize WINELIB_NAME_AW(PathCanonicalize)
  258. LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
  259. LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
  260. #define PathCombine WINELIB_NAME_AW(PathCombine)
  261. BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
  262. BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
  263. #define PathCompactPath WINELIB_NAME_AW(PathCompactPath)
  264. BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
  265. BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
  266. #define PathCompactPathEx WINELIB_NAME_AW(PathCompactPathEx)
  267. int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
  268. int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
  269. #define PathCommonPrefix WINELIB_NAME_AW(PathCommonPrefix)
  270. HRESULT WINAPI PathCreateFromUrlA(LPCSTR pszUrl, LPSTR pszPath, LPDWORD pcchPath, DWORD dwReserved);
  271. HRESULT WINAPI PathCreateFromUrlW(LPCWSTR pszUrl, LPWSTR pszPath, LPDWORD pcchPath, DWORD dwReserved);
  272. #define PathCreateFromUrl WINELIB_NANE_AW(PathCreateFromUrl)
  273. BOOL WINAPI PathFileExistsA(LPCSTR);
  274. BOOL WINAPI PathFileExistsW(LPCWSTR);
  275. #define PathFileExists WINELIB_NAME_AW(PathFileExists)
  276. BOOL WINAPI PathFileExistsAndAttributesA(LPCSTR lpszPath, DWORD *dwAttr);
  277. BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr);
  278. #define PathFileExistsAndAttributes WINELIB_NAME_AW(PathFileExistsAndAttributes)
  279. LPSTR WINAPI PathFindExtensionA(LPCSTR);
  280. LPWSTR WINAPI PathFindExtensionW(LPCWSTR);
  281. #define PathFindExtension WINELIB_NAME_AW(PathFindExtension)
  282. LPSTR WINAPI PathFindFileNameA(LPCSTR);
  283. LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
  284. #define PathFindFileName WINELIB_NAME_AW(PathFindFileName)
  285. LPSTR WINAPI PathFindNextComponentA(LPCSTR);
  286. LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
  287. #define PathFindNextComponent WINELIB_NAME_AW(PathFindNextComponent)
  288. BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
  289. BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
  290. #define PathFindOnPath WINELIB_NAME_AW(PathFindOnPath)
  291. LPSTR WINAPI PathGetArgsA(LPCSTR);
  292. LPWSTR WINAPI PathGetArgsW(LPCWSTR);
  293. #define PathGetArgs WINELIB_NAME_AW(PathGetArgs)
  294. UINT WINAPI PathGetCharTypeA(UCHAR);
  295. UINT WINAPI PathGetCharTypeW(WCHAR);
  296. #define PathGetCharType WINELIB_NAME_AW(PathGetCharType)
  297. int WINAPI PathGetDriveNumberA(LPCSTR);
  298. int WINAPI PathGetDriveNumberW(LPCWSTR);
  299. #define PathGetDriveNumber WINELIB_NAME_AW(PathGetDriveNumber)
  300. BOOL WINAPI PathIsDirectoryA(LPCSTR);
  301. BOOL WINAPI PathIsDirectoryW(LPCWSTR);
  302. #define PathIsDirectory WINELIB_NAME_AW(PathIsDirectory)
  303. BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
  304. BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
  305. #define PathIsDirectoryEmpty WINELIB_NAME_AW(PathIsDirectoryEmpty)
  306. BOOL WINAPI PathIsFileSpecA(LPCSTR);
  307. BOOL WINAPI PathIsFileSpecW(LPCWSTR);
  308. #define PathIsFileSpec WINELIB_NAME_AW(PathIsFileSpec);
  309. BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
  310. BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
  311. #define PathIsPrefix WINELIB_NAME_AW(PathIsPrefix)
  312. BOOL WINAPI PathIsRelativeA(LPCSTR);
  313. BOOL WINAPI PathIsRelativeW(LPCWSTR);
  314. #define PathIsRelative WINELIB_NAME_AW(PathIsRelative)
  315. BOOL WINAPI PathIsRootA(LPCSTR);
  316. BOOL WINAPI PathIsRootW(LPCWSTR);
  317. #define PathIsRoot WINELIB_NAME_AW(PathIsRoot)
  318. BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
  319. BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
  320. #define PathIsSameRoot WINELIB_NAME_AW(PathIsSameRoot)
  321. BOOL WINAPI PathIsUNCA(LPCSTR);
  322. BOOL WINAPI PathIsUNCW(LPCWSTR);
  323. #define PathIsUNC WINELIB_NAME_AW(PathIsUNC)
  324. BOOL WINAPI PathIsUNCServerA(LPCSTR);
  325. BOOL WINAPI PathIsUNCServerW(LPCWSTR);
  326. #define PathIsUNCServer WINELIB_NAME_AW(PathIsUNCServer)
  327. BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
  328. BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
  329. #define PathIsUNCServerShare WINELIB_NAME_AW(PathIsUNCServerShare)
  330. BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
  331. BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
  332. #define PathIsContentType WINELIB_NAME_AW(PathIsContentType)
  333. BOOL WINAPI PathIsURLA(LPCSTR);
  334. BOOL WINAPI PathIsURLW(LPCWSTR);
  335. #define PathIsURL WINELIB_NAME_AW(PathIsURL)
  336. BOOL WINAPI PathMakePrettyA(LPSTR);
  337. BOOL WINAPI PathMakePrettyW(LPWSTR);
  338. #define PathMakePretty WINELIB_NAME_AW(PathMakePretty)
  339. BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
  340. BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
  341. #define PathMatchSpec WINELIB_NAME_AW(PathMatchSpec)
  342. int WINAPI PathParseIconLocationA(LPSTR);
  343. int WINAPI PathParseIconLocationW(LPWSTR);
  344. #define PathParseIconLocation WINELIB_NAME_AW(PathParseIconLocation)
  345. VOID WINAPI PathQuoteSpacesA(LPSTR);
  346. VOID WINAPI PathQuoteSpacesW(LPWSTR);
  347. #define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
  348. BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCSTR,DWORD);
  349. BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCWSTR,DWORD);
  350. #define PathRelativePathTo WINELIB_NAME_AW(PathRelativePathTo)
  351. VOID WINAPI PathRemoveArgsA(LPSTR);
  352. VOID WINAPI PathRemoveArgsW(LPWSTR);
  353. #define PathRemoveArgs WINELIB_NAME_AW(PathRemoveArgs)
  354. LPSTR WINAPI PathRemoveBackslashA(LPSTR);
  355. LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
  356. #define PathRemoveBackslash WINELIB_NAME_AW(PathRemoveBackslash)
  357. VOID WINAPI PathRemoveBlanksA(LPSTR);
  358. VOID WINAPI PathRemoveBlanksW(LPWSTR);
  359. #define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
  360. VOID WINAPI PathRemoveExtensionA(LPSTR);
  361. VOID WINAPI PathRemoveExtensionW(LPWSTR);
  362. #define PathRemoveExtension WINELIB_NAME_AW(PathRemoveExtension)
  363. BOOL WINAPI PathRemoveFileSpecA(LPSTR);
  364. BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
  365. #define PathRemoveFileSpec WINELIB_NAME_AW(PathRemoveFileSpec)
  366. BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
  367. BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
  368. #define PathRenameExtension WINELIB_NAME_AW(PathRenameExtension)
  369. BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
  370. BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
  371. #define PathSearchAndQualify WINELIB_NAME_AW(PathSearchAndQualify)
  372. VOID WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
  373. VOID WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
  374. #define PathSetDlgItemPath WINELIB_NAME_AW(PathSetDlgItemPath)
  375. LPSTR WINAPI PathSkipRootA(LPCSTR);
  376. LPWSTR WINAPI PathSkipRootW(LPCWSTR);
  377. #define PathSkipRoot WINELIB_NAME_AW(PathSkipRoot)
  378. VOID WINAPI PathStripPathA(LPSTR);
  379. VOID WINAPI PathStripPathW(LPWSTR);
  380. #define PathStripPath WINELIB_NAME_AW(PathStripPath)
  381. BOOL WINAPI PathStripToRootA(LPSTR);
  382. BOOL WINAPI PathStripToRootW(LPWSTR);
  383. #define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
  384. VOID WINAPI PathUnquoteSpacesA(LPSTR);
  385. VOID WINAPI PathUnquoteSpacesW(LPWSTR);
  386. #define PathUnquoteSpaces WINELIB_NAME_AW(PathUnquoteSpaces)
  387. BOOL WINAPI PathMakeSystemFolderA(LPCSTR);
  388. BOOL WINAPI PathMakeSystemFolderW(LPCWSTR);
  389. #define PathMakeSystemFolder WINELIB_NAME_AW(PathMakeSystemFolder)
  390. BOOL WINAPI PathUnmakeSystemFolderA(LPCSTR);
  391. BOOL WINAPI PathUnmakeSystemFolderW(LPCWSTR);
  392. #define PathUnmakeSystemFolder WINELIB_NAME_AW(PathUnmakeSystemFolder)
  393. BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
  394. BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
  395. #define PathIsSystemFolder WINELIB_NAME_AW(PathIsSystemFolder)
  396. BOOL WINAPI PathIsNetworkPathA(LPCSTR);
  397. BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
  398. #define PathIsNetworkPath WINELIB_NAME_AW(PathIsNetworkPath)
  399. BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
  400. BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
  401. #define PathIsLFNFileSpec WINELIB_NAME_AW(PathIsLFNFileSpec)
  402. LPCSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR *,int);
  403. LPCWSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR *,int);
  404. #define PathFindSuffixArray WINELIB_NAME_AW(PathFindSuffixArray)
  405. VOID WINAPI PathUndecorateA(LPSTR);
  406. VOID WINAPI PathUndecorateW(LPWSTR);
  407. #define PathUndecorate WINELIB_NAME_AW(PathUndecorate)
  408. BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
  409. BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
  410. #define PathUnExpandEnvStrings WINELIB_NAME_AW(PathUnExpandEnvStrings)
  411. /* Url functions */
  412. typedef enum {
  413. URL_SCHEME_INVALID = -1,
  414. URL_SCHEME_UNKNOWN = 0,
  415. URL_SCHEME_FTP,
  416. URL_SCHEME_HTTP,
  417. URL_SCHEME_GOPHER,
  418. URL_SCHEME_MAILTO,
  419. URL_SCHEME_NEWS,
  420. URL_SCHEME_NNTP,
  421. URL_SCHEME_TELNET,
  422. URL_SCHEME_WAIS,
  423. URL_SCHEME_FILE,
  424. URL_SCHEME_MK,
  425. URL_SCHEME_HTTPS,
  426. URL_SCHEME_SHELL,
  427. URL_SCHEME_SNEWS,
  428. URL_SCHEME_LOCAL,
  429. URL_SCHEME_JAVASCRIPT,
  430. URL_SCHEME_VBSCRIPT,
  431. URL_SCHEME_ABOUT,
  432. URL_SCHEME_RES,
  433. URL_SCHEME_MSSHELLROOTED,
  434. URL_SCHEME_MSSHELLIDLIST,
  435. URL_SCHEME_MSHELP,
  436. URL_SCHEME_MAXVALUE
  437. } URL_SCHEME;
  438. /* These are used by UrlGetPart routine */
  439. typedef enum {
  440. URL_PART_NONE = 0,
  441. URL_PART_SCHEME = 1,
  442. URL_PART_HOSTNAME,
  443. URL_PART_USERNAME,
  444. URL_PART_PASSWORD,
  445. URL_PART_PORT,
  446. URL_PART_QUERY
  447. } URL_PART;
  448. #define URL_PARTFLAG_KEEPSCHEME 0x00000001
  449. /* These are used by the UrlIs... routines */
  450. typedef enum {
  451. URLIS_URL,
  452. URLIS_OPAQUE,
  453. URLIS_NOHISTORY,
  454. URLIS_FILEURL,
  455. URLIS_APPLIABLE,
  456. URLIS_DIRECTORY,
  457. URLIS_HASQUERY
  458. } URLIS;
  459. /* This is used by the UrlApplyScheme... routines */
  460. #define URL_APPLY_FORCEAPPLY 0x00000008
  461. #define URL_APPLY_GUESSFILE 0x00000004
  462. #define URL_APPLY_GUESSSCHEME 0x00000002
  463. #define URL_APPLY_DEFAULT 0x00000001
  464. /* The following are used by UrlEscape..., UrlUnEscape...,
  465. * UrlCanonicalize..., and UrlCombine... routines
  466. */
  467. #define URL_WININET_COMPATIBILITY 0x80000000
  468. #define URL_PLUGGABLE_PROTOCOL 0x40000000
  469. #define URL_ESCAPE_UNSAFE 0x20000000
  470. #define URL_UNESCAPE 0x10000000
  471. #define URL_DONT_SIMPLIFY 0x08000000
  472. #define URL_NO_META URL_DONT_SIMPLIFY
  473. #define URL_ESCAPE_SPACES_ONLY 0x04000000
  474. #define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000
  475. #define URL_DONT_UNESCAPE_EXTRA_INFO URL_DONT_ESCAPE_EXTRA_INFO
  476. #define URL_BROWSER_MODE URL_DONT_ESCAPE_EXTRA_INFO
  477. #define URL_INTERNAL_PATH 0x00800000 /* Will escape #'s in paths */
  478. #define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
  479. #define URL_CONVERT_IF_DOSPATH 0x00200000
  480. #define URL_UNESCAPE_INPLACE 0x00100000
  481. #define URL_FILE_USE_PATHURL 0x00010000
  482. #define URL_ESCAPE_SEGMENT_ONLY 0x00002000
  483. #define URL_ESCAPE_PERCENT 0x00001000
  484. HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
  485. HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
  486. #define UrlApplyScheme WINELIB_NAME_AW(UrlApplyScheme)
  487. HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
  488. HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
  489. #define UrlCanonicalize WINELIB_NAME_AW(UrlCanoncalize)
  490. HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
  491. HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
  492. #define UrlCombine WINELIB_NAME_AW(UrlCombine)
  493. INT WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
  494. INT WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
  495. #define UrlCompare WINELIB_NAME_AW(UrlCompare)
  496. HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
  497. HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
  498. #define UrlEscape WINELIB_NAME_AW(UrlEscape)
  499. #define UrlEscapeSpacesA(x,y,z) UrlCanonicalizeA(x, y, z, \
  500. URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
  501. #define UrlEscapeSpacesW(x,y,z) UrlCanonicalizeW(x, y, z, \
  502. URL_DONT_ESCAPE_EXTRA_INFO|URL_ESCAPE_SPACES_ONLY)
  503. #define UrlEscapeSpaces WINELIB_NAME_AW(UrlEscapeSpaces)
  504. LPCSTR WINAPI UrlGetLocationA(LPCSTR);
  505. LPCWSTR WINAPI UrlGetLocationW(LPCWSTR);
  506. #define UrlGetLocation WINELIB_NAME_AW(UrlGetLocation)
  507. HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
  508. HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
  509. #define UrlGetPart WINELIB_NAME_AW(UrlGetPart)
  510. HRESULT WINAPI HashData(const unsigned char *,DWORD,unsigned char *lpDest,DWORD);
  511. HRESULT WINAPI UrlHashA(LPCSTR,unsigned char *,DWORD);
  512. HRESULT WINAPI UrlHashW(LPCWSTR,unsigned char *,DWORD);
  513. #define UrlHash WINELIB_NAME_AW(UrlHash)
  514. BOOL WINAPI UrlIsA(LPCSTR,URLIS);
  515. BOOL WINAPI UrlIsW(LPCWSTR,URLIS);
  516. #define UrlIs WINELIB_NAME_AW(UrlIs)
  517. BOOL WINAPI UrlIsNoHistoryA(LPCSTR);
  518. BOOL WINAPI UrlIsNoHistoryW(LPCWSTR);
  519. #define UrlIsNoHistory WINELIB_NAME_AW(UrlIsNoHistory)
  520. BOOL WINAPI UrlIsOpaqueA(LPCSTR);
  521. BOOL WINAPI UrlIsOpaqueW(LPCWSTR);
  522. #define UrlIsOpaque WINELIB_NAME_AW(UrlIsOpaque)
  523. #define UrlIsFileUrlA(x) UrlIsA(x, URLIS_FILEURL)
  524. #define UrlIsFileUrlW(y) UrlIsW(x, URLIS_FILEURL)
  525. #define UrlIsFileUrl WINELIB_NAME_AW(UrlIsFileUrl)
  526. HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD);
  527. HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
  528. #define UrlUnescape WINELIB_AW_NAME(UrlUnescape)
  529. #define UrlUnescapeInPlaceA(x,y) UrlUnescapeA(x, NULL, NULL, \
  530. y | URL_UNESCAPE_INPLACE)
  531. #define UrlUnescapeInPlaceW(x,y) UrlUnescapeW(x, NULL, NULL, \
  532. y | URL_UNESCAPE_INPLACE)
  533. #define UrlUnescapeInPlace WINELIB_AW_NAME(UrlUnescapeInPlace)
  534. HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
  535. HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
  536. #define UrlCreateFromPath WINELIB_AW_NAME(UrlCreateFromPath)
  537. typedef struct tagPARSEDURLA {
  538. DWORD cbSize;
  539. LPCSTR pszProtocol;
  540. UINT cchProtocol;
  541. LPCSTR pszSuffix;
  542. UINT cchSuffix;
  543. UINT nScheme;
  544. } PARSEDURLA, *PPARSEDURLA;
  545. typedef struct tagPARSEDURLW {
  546. DWORD cbSize;
  547. LPCWSTR pszProtocol;
  548. UINT cchProtocol;
  549. LPCWSTR pszSuffix;
  550. UINT cchSuffix;
  551. UINT nScheme;
  552. } PARSEDURLW, *PPARSEDURLW;
  553. HRESULT WINAPI ParseURLA(LPCSTR pszUrl, PARSEDURLA *ppu);
  554. HRESULT WINAPI ParseURLW(LPCWSTR pszUrl, PARSEDURLW *ppu);
  555. #define ParseURL WINELIB_AW_NAME(ParseUrl)
  556. #endif /* NO_SHLWAPI_PATH */
  557. /* String functions */
  558. #ifndef NO_SHLWAPI_STRFCNS
  559. /* StrToIntEx flags */
  560. #define STIF_DEFAULT 0x0L
  561. #define STIF_SUPPORT_HEX 0x1L
  562. BOOL WINAPI ChrCmpIA (WORD,WORD);
  563. BOOL WINAPI ChrCmpIW (WCHAR,WCHAR);
  564. #define ChrCmpI WINELIB_NAME_AW(ChrCmpI)
  565. INT WINAPI StrCSpnA(LPCSTR,LPCSTR);
  566. INT WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
  567. #define StrCSpn WINELIB_NAME_AW(StrCSpn)
  568. INT WINAPI StrCSpnIA(LPCSTR,LPCSTR);
  569. INT WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
  570. #define StrCSpnI WINELIB_NAME_AW(StrCSpnI)
  571. #define StrCatA lstrcatA
  572. LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
  573. #define StrCat WINELIB_NAME_AW(StrCat)
  574. LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,INT);
  575. LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,INT);
  576. #define StrCatBuff WINELIB_NAME_AW(StrCatBuff)
  577. DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR);
  578. LPSTR WINAPI StrChrA(LPCSTR,WORD);
  579. LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
  580. #define StrChr WINELIB_NAME_AW(StrChr)
  581. LPSTR WINAPI StrChrIA(LPCSTR,WORD);
  582. LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
  583. #define StrChrI WINELIB_NAME_AW(StrChrI)
  584. #define StrCmpA lstrcmpA
  585. int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
  586. #define StrCmp WINELIB_NAME_AW(StrCmp)
  587. #define StrCmpIA lstrcmpiA
  588. int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
  589. #define StrCmpI WINELIB_NAME_AW(StrCmpI)
  590. #define StrCpyA lstrcpyA
  591. LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
  592. #define StrCpy WINELIB_NAME_AW(StrCpy)
  593. #define StrCpyNA lstrcpynA
  594. LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int);
  595. #define StrCpyN WINELIB_NAME_AW(StrCpyN)
  596. #define StrNCpy WINELIB_NAME_AW(StrCpyN)
  597. INT WINAPI StrCmpLogicalW(LPCWSTR,LPCWSTR);
  598. INT WINAPI StrCmpNA(LPCSTR,LPCSTR,INT);
  599. INT WINAPI StrCmpNW(LPCWSTR,LPCWSTR,INT);
  600. #define StrCmpN WINELIB_NAME_AW(StrCmpN)
  601. #define StrNCmp WINELIB_NAME_AW(StrCmpN)
  602. INT WINAPI StrCmpNIA(LPCSTR,LPCSTR,INT);
  603. INT WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,INT);
  604. #define StrCmpNI WINELIB_NAME_AW(StrCmpNI)
  605. #define StrNCmpI WINELIB_NAME_AW(StrCmpNI)
  606. LPSTR WINAPI StrDupA(LPCSTR);
  607. LPWSTR WINAPI StrDupW(LPCWSTR);
  608. #define StrDup WINELIB_NAME_AW(StrDup)
  609. HRESULT WINAPI SHStrDupA(LPCSTR,WCHAR**);
  610. HRESULT WINAPI SHStrDupW(LPCWSTR,WCHAR**);
  611. #define SHStrDup WINELIB_NAME_AW(SHStrDup)
  612. LPSTR WINAPI StrFormatByteSizeA (DWORD,LPSTR,UINT);
  613. /* A/W Pairing is broken for this function */
  614. LPSTR WINAPI StrFormatByteSize64A (LONGLONG,LPSTR,UINT);
  615. LPWSTR WINAPI StrFormatByteSizeW (LONGLONG,LPWSTR,UINT);
  616. #ifndef __WINESRC__
  617. #ifdef UNICODE
  618. #define StrFormatByteSize StrFormatByteSizeW
  619. #else
  620. #define StrFormatByteSize StrFormatByteSize64A
  621. #endif
  622. #endif
  623. LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT);
  624. LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT);
  625. #define StrFormatKBSize WINELIB_NAME_AW(StrFormatKBSize)
  626. int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
  627. int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
  628. #define StrFromTimeInterval WINELIB_NAME_AW(StrFromTimeInterval)
  629. BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
  630. BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
  631. #define StrIsIntlEqual WINELIB_NAME_AW(StrIsIntlEqual)
  632. #define StrIntlEqNA(a,b,c) StrIsIntlEqualA(TRUE,a,b,c)
  633. #define StrIntlEqNW(a,b,c) StrIsIntlEqualW(TRUE,a,b,c)
  634. #define StrIntlEqNIA(a,b,c) StrIsIntlEqualA(FALSE,a,b,c)
  635. #define StrIntlEqNIW(a,b,c) StrIsIntlEqualW(FALSE,a,b,c)
  636. LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int);
  637. LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int);
  638. #define StrNCat WINELIB_NAME_AW(StrNCat)
  639. #define StrCatN WINELIB_NAME_AW(StrNCat)
  640. LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR);
  641. LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
  642. #define StrPBrk WINELIB_NAME_AW(StrPBrk)
  643. LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
  644. LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WORD);
  645. #define StrRChr WINELIB_NAME_AW(StrRChr)
  646. LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
  647. LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WORD);
  648. #define StrRChrI WINELIB_NAME_AW(StrRChrI)
  649. LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
  650. LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
  651. #define StrRStrI WINELIB_NAME_AW(StrRStrI)
  652. int WINAPI StrSpnA(LPCSTR,LPCSTR);
  653. int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
  654. #define StrSpn WINELIB_NAME_AW(StrSpn)
  655. LPSTR WINAPI StrStrA(LPCSTR,LPCSTR);
  656. LPWSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
  657. #define StrStr WINELIB_NAME_AW(StrStr)
  658. LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR);
  659. LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
  660. #define StrStrI WINELIB_NAME_AW(StrStrI)
  661. int WINAPI StrToIntA(LPCSTR);
  662. int WINAPI StrToIntW(LPCWSTR);
  663. #define StrToInt WINELIB_NAME_AW(StrToInt)
  664. #define StrToLong WINELIB_NAME_AW(StrToInt)
  665. BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
  666. BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
  667. #define StrToIntEx WINELIB_NAME_AW(StrToIntEx)
  668. BOOL WINAPI StrToInt64ExA(LPCSTR,DWORD,LONGLONG*);
  669. BOOL WINAPI StrToInt64ExW(LPCWSTR,DWORD,LONGLONG*);
  670. #define StrToIntEx64 WINELIB_NAME_AW(StrToIntEx64)
  671. BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
  672. BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
  673. #define StrTrim WINELIB_NAME_AW(StrTrim)
  674. INT WINAPI wvnsprintfA(LPSTR,INT,LPCSTR,va_list);
  675. INT WINAPI wvnsprintfW(LPWSTR,INT,LPCWSTR,va_list);
  676. #define wvnsprintf WINELIB_NAME_AW(wvnsprintf)
  677. INT WINAPIV wnsprintfA(LPSTR,INT,LPCSTR, ...);
  678. INT WINAPIV wnsprintfW(LPWSTR,INT,LPCWSTR, ...);
  679. #define wnsprintf WINELIB_NAME_AW(wnsprintf)
  680. HRESULT WINAPI SHLoadIndirectString(LPCWSTR,LPWSTR,UINT,PVOID*);
  681. BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
  682. BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
  683. #define IntlStrEqWorker WINELIB_NAME_AW(IntlStrEqWorker)
  684. #define IntlStrEqNA(s1,s2,n) IntlStrEqWorkerA(TRUE,s1,s2,n)
  685. #define IntlStrEqNW(s1,s2,n) IntlStrEqWorkerW(TRUE,s1,s2,n)
  686. #define IntlStrEqN WINELIB_NAME_AW(IntlStrEqN)
  687. #define IntlStrEqNIA(s1,s2,n) IntlStrEqWorkerA(FALSE,s1,s2,n)
  688. #define IntlStrEqNIW(s1,s2,n) IntlStrEqWorkerW(FALSE,s1,s2,n)
  689. #define IntlStrEqNI WINELIB_NAME_AW(IntlStrEqNI)
  690. HRESULT WINAPI StrRetToStrA(STRRET*,LPCITEMIDLIST,LPSTR*);
  691. HRESULT WINAPI StrRetToStrW(STRRET*,LPCITEMIDLIST,LPWSTR*);
  692. #define StrRetToStr WINELIB_NAME_AW(StrRetToStr)
  693. HRESULT WINAPI StrRetToBufA(STRRET*,LPCITEMIDLIST,LPSTR,UINT);
  694. HRESULT WINAPI StrRetToBufW(STRRET*,LPCITEMIDLIST,LPWSTR,UINT);
  695. #define StrRetToBuf WINELIB_NAME_AW(StrRetToBuf)
  696. HRESULT WINAPI StrRetToBSTR(STRRET*,LPCITEMIDLIST,BSTR*);
  697. #endif /* NO_SHLWAPI_STRFCNS */
  698. /* GDI functions */
  699. #ifndef NO_SHLWAPI_GDI
  700. HPALETTE WINAPI SHCreateShellPalette(HDC);
  701. COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
  702. COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
  703. VOID WINAPI ColorRGBToHLS(COLORREF,LPWORD,LPWORD,LPWORD);
  704. #endif /* NO_SHLWAPI_GDI */
  705. /* Stream functions */
  706. #ifndef NO_SHLWAPI_STREAM
  707. struct IStream * WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
  708. struct IStream * WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
  709. #define SHOpenRegStream WINELIB_NAME_AW(SHOpenRegStream2) /* Uses version 2 */
  710. struct IStream * WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
  711. struct IStream * WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
  712. #define SHOpenRegStream2 WINELIB_NAME_AW(SHOpenRegStream2)
  713. HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**);
  714. HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**);
  715. #define SHCreateStreamOnFile WINELIB_NAME_AW(SHCreateStreamOnFile)
  716. HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR,DWORD,DWORD,BOOL,struct IStream*,struct IStream**);
  717. HRESULT WINAPI SHCreateStreamWrapper(LPBYTE,DWORD,DWORD,struct IStream**);
  718. #endif /* NO_SHLWAPI_STREAM */
  719. /* SHAutoComplete flags */
  720. #define SHACF_DEFAULT 0x00000000
  721. #define SHACF_FILESYSTEM 0x00000001
  722. #define SHACF_URLHISTORY 0x00000002
  723. #define SHACF_URLMRU 0x00000004
  724. #define SHACF_URLALL (SHACF_URLHISTORY|SHACF_URLMRU)
  725. #define SHACF_USETAB 0x00000008
  726. #define SHACF_FILESYS_ONLY 0x00000010
  727. #define SHACF_FILESYS_DIRS 0x00000020
  728. #define SHACF_AUTOSUGGEST_FORCE_ON 0x10000000
  729. #define SHACF_AUTOSUGGEST_FORCE_OFF 0x20000000
  730. #define SHACF_AUTOAPPEND_FORCE_ON 0x40000000
  731. #define SHACF_AUTOAPPEND_FORCE_OFF 0x80000000
  732. HRESULT WINAPI SHAutoComplete(HWND,DWORD);
  733. /* Threads */
  734. HRESULT WINAPI SHGetThreadRef(IUnknown**);
  735. HRESULT WINAPI SHSetThreadRef(IUnknown*);
  736. HRESULT WINAPI SHReleaseThreadRef(void);
  737. /* SHCreateThread flags */
  738. #define CTF_INSIST 0x01 /* Always call */
  739. #define CTF_THREAD_REF 0x02 /* Hold thread ref */
  740. #define CTF_PROCESS_REF 0x04 /* Hold process ref */
  741. #define CTF_COINIT 0x08 /* Startup COM first */
  742. #define CTF_FREELIBANDEXIT 0x10 /* Hold DLL ref */
  743. #define CTF_REF_COUNTED 0x20 /* Thread is ref counted */
  744. #define CTF_WAIT_ALLOWCOM 0x40 /* Allow marshalling */
  745. BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE);
  746. BOOL WINAPI SHSkipJunction(struct IBindCtx*,const CLSID*);
  747. /* Version Information */
  748. typedef struct _DllVersionInfo {
  749. DWORD cbSize;
  750. DWORD dwMajorVersion;
  751. DWORD dwMinorVersion;
  752. DWORD dwBuildNumber;
  753. DWORD dwPlatformID;
  754. } DLLVERSIONINFO;
  755. #define DLLVER_PLATFORM_WINDOWS 0x01 /* Win9x */
  756. #define DLLVER_PLATFORM_NT 0x02 /* WinNT */
  757. typedef HRESULT (CALLBACK *DLLGETVERSIONPROC)(DLLVERSIONINFO *);
  758. typedef struct _DLLVERSIONINFO2 {
  759. DLLVERSIONINFO info1;
  760. DWORD dwFlags; /* Reserved */
  761. ULONGLONG DECLSPEC_ALIGN(8) ullVersion; /* 16 bits each for Major, Minor, Build, QFE */
  762. } DLLVERSIONINFO2;
  763. #define DLLVER_MAJOR_MASK 0xFFFF000000000000
  764. #define DLLVER_MINOR_MASK 0x0000FFFF00000000
  765. #define DLLVER_BUILD_MASK 0x00000000FFFF0000
  766. #define DLLVER_QFE_MASK 0x000000000000FFFF
  767. #define MAKEDLLVERULL(mjr, mnr, bld, qfe) (((ULONGLONG)(mjr)<< 48)| \
  768. ((ULONGLONG)(mnr)<< 32) | ((ULONGLONG)(bld)<< 16) | (ULONGLONG)(qfe))
  769. HRESULT WINAPI DllInstall(BOOL,LPCWSTR);
  770. /* IsOS definitions */
  771. #define OS_WIN32SORGREATER 0x00
  772. #define OS_NT 0x01
  773. #define OS_WIN95ORGREATER 0x02
  774. #define OS_NT4ORGREATER 0x03
  775. #define OS_WIN2000ORGREATER_ALT 0x04
  776. #define OS_WIN98ORGREATER 0x05
  777. #define OS_WIN98_GOLD 0x06
  778. #define OS_WIN2000ORGREATER 0x07
  779. #define OS_WIN2000PRO 0x08
  780. #define OS_WIN2000SERVER 0x09
  781. #define OS_WIN2000ADVSERVER 0x0A
  782. #define OS_WIN2000DATACENTER 0x0B
  783. #define OS_WIN2000TERMINAL 0x0C
  784. #define OS_EMBEDDED 0x0D
  785. #define OS_TERMINALCLIENT 0x0E
  786. #define OS_TERMINALREMOTEADMIN 0x0F
  787. #define OS_WIN95_GOLD 0x10
  788. #define OS_MEORGREATER 0x11
  789. #define OS_XPORGREATER 0x12
  790. #define OS_HOME 0x13
  791. #define OS_PROFESSIONAL 0x14
  792. #define OS_DATACENTER 0x15
  793. #define OS_ADVSERVER 0x16
  794. #define OS_SERVER 0x17
  795. #define OS_TERMINALSERVER 0x18
  796. #define OS_PERSONALTERMINALSERVER 0x19
  797. #define OS_FASTUSERSWITCHING 0x1A
  798. #define OS_WELCOMELOGONUI 0x1B
  799. #define OS_DOMAINMEMBER 0x1C
  800. #define OS_ANYSERVER 0x1D
  801. #define OS_WOW6432 0x1E
  802. #define OS_WEBSERVER 0x1F
  803. #define OS_SMALLBUSINESSSERVER 0x20
  804. #define OS_TABLETPC 0x21
  805. #define OS_SERVERADMINUI 0x22
  806. #define OS_MEDIACENTER 0x23
  807. #define OS_APPLIANCE 0x24
  808. BOOL WINAPI IsOS(DWORD);
  809. #include <poppack.h>
  810. #ifdef __cplusplus
  811. } /* extern "C" */
  812. #endif /* defined(__cplusplus) */
  813. #endif /* __WINE_SHLWAPI_H */