Thanks for the feedback. Regarding points 1 and 2: While changing the #ifdefs and adding comments (actually just labels) was not necessary, keeping track of the unlabelled #ifdefs and #ifs gave me headaches. The labels helped. Anyway, all labels are now removed.
Regarding point 3: I have changed the code to C89 style and added a check for C89 conformance to my tests. An updated patch is attached. -- David May On Wed, 28 Apr 2021 01:13 Biswapriyo Nath, <nathbap...@gmail.com <mailto:nathbap...@gmail.com>> wrote: 1. Does changing all `#ifndef` to `#if !defined()` make any difference? 2. It is not necessary to comment every #ifdef...#endif sections. If you want comment use C89 comment style like this /*...*/ 3. Remove comma from last element in enum. C89 :( _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net <mailto:Mingw-w64-public@lists.sourceforge.net> https://lists.sourceforge.net/lists/listinfo/mingw-w64-public <https://lists.sourceforge.net/lists/listinfo/mingw-w64-public>
--- /mingw64/x86_64-w64-mingw32/include/shlwapi.h 2021-04-28 12:05:23.395469400 +0800 +++ ./shlwapi.h 2021-04-28 11:55:54.444212500 +0800 @@ -3,19 +3,21 @@ * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ -#ifndef _INC_SHLWAPI + +#if !defined(_INC_SHLWAPI) #define _INC_SHLWAPI #include <_mingw_unicode.h> #include <winapifamily.h> -#ifndef NOSHLWAPI +#if !defined(NOSHLWAPI) #include <objbase.h> #include <shtypes.h> -#ifndef WINSHLWAPI -#if !defined(_SHLWAPI_) +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) +#if !defined(WINSHLWAPI) +#if !defined(_SHLWAPI_) #define LWSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI #define LWSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI #define LWSTDAPIV EXTERN_C DECLSPEC_IMPORT HRESULT STDAPIVCALLTYPE @@ -25,32 +27,48 @@ #define LWSTDAPI_(type) STDAPI_(type) #define LWSTDAPIV STDAPIV #define LWSTDAPIV_(type) STDAPIV_(type) -#endif -#endif - -#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) +#endif +#endif -#ifndef _WINRESRC_ -#ifndef _WIN32_IE +#if !defined(_WINRESRC_) +#if !defined(_WIN32_IE) #define _WIN32_IE 0x0601 -#endif -#endif +#endif +#endif #include <pshpack8.h> -#ifdef __cplusplus +#if !defined(__IBindCtx_FWD_DEFINED__) +#define __IBindCtx_FWD_DEFINED__ +typedef interface IBindCtx IBindCtx; +#endif + +#if defined(__cplusplus) extern "C" { -#endif +#endif -#ifndef NO_SHLWAPI_STRFCNS +#if !defined(NO_SHLWAPI_STRFCNS) LWSTDAPI_(LPSTR) StrChrA(LPCSTR lpStart,WORD wMatch); LWSTDAPI_(LPWSTR) StrChrW(LPCWSTR lpStart,WCHAR wMatch); LWSTDAPI_(LPSTR) StrChrIA(LPCSTR lpStart,WORD wMatch); LWSTDAPI_(LPWSTR) StrChrIW(LPCWSTR lpStart,WCHAR wMatch); + LWSTDAPI_(PCWSTR) StrChrNW(PCWSTR pszStart, WCHAR wMatch, UINT cchMax); + LWSTDAPI_(PCWSTR) StrChrNIW(PCWSTR pszStart, WCHAR wMatch, UINT cchMax); LWSTDAPI_(int) StrCmpNA(LPCSTR lpStr1,LPCSTR lpStr2,int nChar); LWSTDAPI_(int) StrCmpNW(LPCWSTR lpStr1,LPCWSTR lpStr2,int nChar); LWSTDAPI_(int) StrCmpNIA(LPCSTR lpStr1,LPCSTR lpStr2,int nChar); LWSTDAPI_(int) StrCmpNIW(LPCWSTR lpStr1,LPCWSTR lpStr2,int nChar); + + LWSTDAPI_(int) StrCmpNCA(LPCSTR pszStr1, LPCSTR pszStr2, int nChar); + LWSTDAPI_(int) StrCmpNCW(LPCWSTR pszStr1, LPCWSTR pszStr2, int nChar); + +#define StrCmpNC __MINGW_NAME_AW(StrCmpNC) + + LWSTDAPI_(int) StrCmpNICA(LPCSTR pszStr1, LPCSTR pszStr2, int nChar); + LWSTDAPI_(int) StrCmpNICW(LPCWSTR pszStr1, LPCWSTR pszStr2, int nChar); + +#define StrCmpNIC __MINGW_NAME_AW(StrCmpNIC) + LWSTDAPI_(int) StrCSpnA(LPCSTR lpStr,LPCSTR lpSet); LWSTDAPI_(int) StrCSpnW(LPCWSTR lpStr,LPCWSTR lpSet); LWSTDAPI_(int) StrCSpnIA(LPCSTR lpStr,LPCSTR lpSet); @@ -82,14 +100,16 @@ LWSTDAPI_(LPWSTR) StrStrW(LPCWSTR lpFirst,LPCWSTR lpSrch); LWSTDAPI_(LPSTR) StrStrIA(LPCSTR lpFirst,LPCSTR lpSrch); LWSTDAPI_(LPWSTR) StrStrIW(LPCWSTR lpFirst,LPCWSTR lpSrch); + LWSTDAPI_(PCWSTR) StrStrNW(PCWSTR pszFirst, PCWSTR pszSrch, UINT cchMax); + LWSTDAPI_(PCWSTR) StrStrNIW(PCWSTR pszFirst, PCWSTR pszSrch, UINT cchMax); LWSTDAPI_(int) StrToIntA(LPCSTR lpSrc); LWSTDAPI_(int) StrToIntW(LPCWSTR lpSrc); LWSTDAPI_(WINBOOL) StrToIntExA(LPCSTR pszString,DWORD dwFlags,int *piRet); LWSTDAPI_(WINBOOL) StrToIntExW(LPCWSTR pszString,DWORD dwFlags,int *piRet); -#if (_WIN32_IE >= 0x0600) +#if (_WIN32_IE >= 0x0600) LWSTDAPI_(WINBOOL) StrToInt64ExA(LPCSTR pszString,DWORD dwFlags,LONGLONG *pllRet); LWSTDAPI_(WINBOOL) StrToInt64ExW(LPCWSTR pszString,DWORD dwFlags,LONGLONG *pllRet); -#endif +#endif LWSTDAPI_(WINBOOL) StrTrimA(LPSTR psz,LPCSTR pszTrimChars); LWSTDAPI_(WINBOOL) StrTrimW(LPWSTR psz,LPCWSTR pszTrimChars); LWSTDAPI_(LPWSTR) StrCatW(LPWSTR psz1,LPCWSTR psz2); @@ -122,10 +142,26 @@ LWSTDAPI StrRetToBSTR(STRRET *pstr,LPCITEMIDLIST pidl,BSTR *pbstr); LWSTDAPI SHStrDupA(LPCSTR psz,WCHAR **ppwsz); LWSTDAPI SHStrDupW(LPCWSTR psz,WCHAR **ppwsz); + +#if defined(__cplusplus) + inline HRESULT SHLocalStrDupW(PCWSTR psz, PWSTR *ppsz) { + *ppsz = StrDupW(psz); + return *ppsz ? S_OK : E_OUTOFMEMORY; + } + + inline HRESULT SHLocalStrDupA(PCSTR psz, PSTR *ppsz) { + *ppsz = StrDupA(psz); + return *ppsz ? S_OK : E_OUTOFMEMORY; + } + +#define SHLocalStrDup __MINGW_NAME_AW(SHLocalStrDup) +#endif + LWSTDAPI_(int) StrCmpLogicalW(LPCWSTR psz1,LPCWSTR psz2); LWSTDAPI_(DWORD) StrCatChainW(LPWSTR pszDst,DWORD cchDst,DWORD ichAt,LPCWSTR pszSrc); LWSTDAPI SHLoadIndirectString(LPCWSTR pszSource,LPWSTR pszOutBuf,UINT cchOutBuf,void **ppvReserved); -#if (_WIN32_IE >= 0x0603) + +#if (_WIN32_IE >= 0x0603) LWSTDAPI_(WINBOOL) IsCharSpaceA(CHAR wch); LWSTDAPI_(WINBOOL) IsCharSpaceW(WCHAR wch); @@ -140,7 +176,7 @@ LWSTDAPI_(int) StrCmpICW(LPCWSTR pszStr1,LPCWSTR pszStr2); #define StrCmpIC __MINGW_NAME_AW(StrCmpIC) -#endif +#endif #define StrChr __MINGW_NAME_AW(StrChr) #define StrRChr __MINGW_NAME_AW(StrRChr) @@ -160,9 +196,9 @@ #define StrPBrk __MINGW_NAME_AW(StrPBrk) #define StrToIntEx __MINGW_NAME_AW(StrToIntEx) -#if (_WIN32_IE >= 0x0600) +#if (_WIN32_IE >= 0x0600) #define StrToInt64Ex __MINGW_NAME_AW(StrToInt64Ex) -#endif +#endif #define StrFromTimeInterval __MINGW_NAME_AW(StrFromTimeInterval) #define StrIntlEqN __MINGW_NAME_AW(StrIntlEqN) @@ -178,11 +214,11 @@ #define wnsprintf __MINGW_NAME_AW(wnsprintf) #define StrIsIntlEqual __MINGW_NAME_AW(StrIsIntlEqual) -#if defined(UNICODE) +#if defined(UNICODE) #define StrFormatByteSize64 StrFormatByteSizeW #else #define StrFormatByteSize64 StrFormatByteSize64A -#endif +#endif LWSTDAPI_(WINBOOL) IntlStrEqWorkerA(WINBOOL fCaseSens,LPCSTR lpString1,LPCSTR lpString2,int nChar); LWSTDAPI_(WINBOOL) IntlStrEqWorkerW(WINBOOL fCaseSens,LPCWSTR lpString1,LPCWSTR lpString2,int nChar); @@ -223,7 +259,7 @@ #define StrCatBuff __MINGW_NAME_AW(StrCatBuff) -#if defined(UNICODE) +#if defined(UNICODE) #define StrCat StrCatW #define StrCmp StrCmpW #define StrCmpI StrCmpIW @@ -235,11 +271,22 @@ #define StrCmpI lstrcmpiA #define StrCpy lstrcpyA #define StrCpyN lstrcpynA -#endif +#endif -#endif +#endif + +#if (NTDDI_VERSION >= NTDDI_VISTASP1) + enum tagSFBS_FLAGS { + SFBS_FLAGS_ROUND_TO_NEAREST_DISPLAYED_DIGIT = 0x0001, + SFBS_FLAGS_TRUNCATE_UNDISPLAYED_DECIMAL_DIGITS = 0x0002 + }; + + typedef int SFBS_FLAGS; -#ifndef NO_SHLWAPI_PATH + LWSTDAPI StrFormatByteSizeEx(ULONGLONG ull, SFBS_FLAGS flags, PWSTR pszBuf, UINT cchBuf); +#endif + +#if !defined(NO_SHLWAPI_PATH) LWSTDAPI_(LPSTR) PathAddBackslashA(LPSTR pszPath); LWSTDAPI_(LPWSTR) PathAddBackslashW(LPWSTR pszPath); @@ -454,6 +501,18 @@ LWSTDAPI_(WINBOOL) PathUnExpandEnvStringsW(LPCWSTR pszPath,LPWSTR pszBuf,UINT cchBuf); #define PathUnExpandEnvStrings __MINGW_NAME_AW(PathUnExpandEnvStrings) + +#if (_WIN32_IE >= _WIN32_IE_IE70) +#define PMSF_NORMAL 0x00000000 +#define PMSF_MULTIPLE 0x00000001 +#define PMSF_DONT_STRIP_SPACES 0x00010000 +LWSTDAPI PathMatchSpecExA(LPCSTR pszFile, LPCSTR pszSpec, DWORD dwFlags); +LWSTDAPI PathMatchSpecExW(LPCWSTR pszFile, LPCWSTR pszSpec, DWORD dwFlags); +#endif + +#define PathMatchSpecEx __MINGW_NAME_AW(PathMatchSpecEx) + +#define PathParseIconLocation __MINGW_NAME_AW(PathParseIconLocation) #define PathAppend __MINGW_NAME_AW(PathAppend) #define PathCanonicalize __MINGW_NAME_AW(PathCanonicalize) #define PathCompactPath __MINGW_NAME_AW(PathCompactPath) @@ -465,7 +524,6 @@ #define PathIsHTMLFile __MINGW_NAME_AW(PathIsHTMLFile) #define PathMakePretty __MINGW_NAME_AW(PathMakePretty) #define PathMatchSpec __MINGW_NAME_AW(PathMatchSpec) -#define PathParseIconLocation __MINGW_NAME_AW(PathParseIconLocation) #define PathQuoteSpaces __MINGW_NAME_AW(PathQuoteSpaces) #define PathRelativePathTo __MINGW_NAME_AW(PathRelativePathTo) #define PathRemoveArgs __MINGW_NAME_AW(PathRemoveArgs) @@ -478,7 +536,45 @@ #define PathUnquoteSpaces __MINGW_NAME_AW(PathUnquoteSpaces) typedef enum { - URL_SCHEME_INVALID = -1,URL_SCHEME_UNKNOWN = 0,URL_SCHEME_FTP,URL_SCHEME_HTTP,URL_SCHEME_GOPHER,URL_SCHEME_MAILTO,URL_SCHEME_NEWS,URL_SCHEME_NNTP,URL_SCHEME_TELNET,URL_SCHEME_WAIS,URL_SCHEME_FILE,URL_SCHEME_MK,URL_SCHEME_HTTPS,URL_SCHEME_SHELL,URL_SCHEME_SNEWS,URL_SCHEME_LOCAL,URL_SCHEME_JAVASCRIPT,URL_SCHEME_VBSCRIPT,URL_SCHEME_ABOUT,URL_SCHEME_RES,URL_SCHEME_MSSHELLROOTED,URL_SCHEME_MSSHELLIDLIST,URL_SCHEME_MSHELP,URL_SCHEME_MAXVALUE + URL_SCHEME_INVALID = -1, + URL_SCHEME_UNKNOWN = 0, + URL_SCHEME_FTP, + URL_SCHEME_HTTP, + URL_SCHEME_GOPHER, + URL_SCHEME_MAILTO, + URL_SCHEME_NEWS, + URL_SCHEME_NNTP, + URL_SCHEME_TELNET, + URL_SCHEME_WAIS, + URL_SCHEME_FILE, + URL_SCHEME_MK, + URL_SCHEME_HTTPS, + URL_SCHEME_SHELL, + URL_SCHEME_SNEWS, + URL_SCHEME_LOCAL, + URL_SCHEME_JAVASCRIPT, + URL_SCHEME_VBSCRIPT, + URL_SCHEME_ABOUT, + URL_SCHEME_RES, +#if (_WIN32_IE >= _WIN32_IE_IE60) + URL_SCHEME_MSSHELLROOTED, + URL_SCHEME_MSSHELLIDLIST, + URL_SCHEME_MSHELP, +#endif +#if (_WIN32_IE >= _WIN32_IE_IE70) + URL_SCHEME_MSSHELLDEVICE, + URL_SCHEME_WILDCARD, +#endif +#if (NTDDI_VERSION >= NTDDI_VISTA) + URL_SCHEME_SEARCH_MS, +#endif +#if (NTDDI_VERSION >= NTDDI_VISTASP1) + URL_SCHEME_SEARCH, +#endif +#if (NTDDI_VERSION >= NTDDI_WIN7) + URL_SCHEME_KNOWNFOLDER, +#endif + URL_SCHEME_MAXVALUE } URL_SCHEME; typedef enum { @@ -539,6 +635,9 @@ LWSTDAPI UrlCreateFromPathW(LPCWSTR pszPath,LPWSTR pszUrl,LPDWORD pcchUrl,DWORD dwFlags); LWSTDAPI PathCreateFromUrlA(LPCSTR pszUrl,LPSTR pszPath,LPDWORD pcchPath,DWORD dwFlags); LWSTDAPI PathCreateFromUrlW(LPCWSTR pszUrl,LPWSTR pszPath,LPDWORD pcchPath,DWORD dwFlags); +#if (_WIN32_IE >= _WIN32_IE_IE70) + LWSTDAPI PathCreateFromUrlAlloc(PCWSTR pszIn, PWSTR *ppszOut, DWORD dwFlags); +#endif LWSTDAPI UrlHashA(LPCSTR pszUrl,LPBYTE pbHash,DWORD cbHash); LWSTDAPI UrlHashW(LPCWSTR pszUrl,LPBYTE pbHash,DWORD cbHash); LWSTDAPI UrlGetPartW(LPCWSTR pszIn,LPWSTR pszOut,LPDWORD pcchOut,DWORD dwPart,DWORD dwFlags); @@ -546,6 +645,10 @@ LWSTDAPI UrlApplySchemeA(LPCSTR pszIn,LPSTR pszOut,LPDWORD pcchOut,DWORD dwFlags); LWSTDAPI UrlApplySchemeW(LPCWSTR pszIn,LPWSTR pszOut,LPDWORD pcchOut,DWORD dwFlags); LWSTDAPI HashData(LPBYTE pbData,DWORD cbData,LPBYTE pbHash,DWORD cbHash); + LWSTDAPI UrlFixupW(PCWSTR pcszUrl, PWSTR pszTranslatedUrl, DWORD cchMax); +#if defined(UNICODE) +#define UrlFixup UrlFixupW +#endif #define UrlCompare __MINGW_NAME_AW(UrlCompare) #define UrlCombine __MINGW_NAME_AW(UrlCombine) @@ -564,17 +667,49 @@ #define UrlEscapeSpaces(pszUrl,pszEscaped,pcchEscaped) UrlCanonicalize(pszUrl,pszEscaped,pcchEscaped,URL_ESCAPE_SPACES_ONLY |URL_DONT_ESCAPE_EXTRA_INFO) #define UrlUnescapeInPlace(pszUrl,dwFlags) UrlUnescape(pszUrl,NULL,NULL,dwFlags | URL_UNESCAPE_INPLACE) -#endif -#ifndef NO_SHLWAPI_REG + typedef struct tagPARSEDURLA { + DWORD cbSize; + LPCSTR pszProtocol; + UINT cchProtocol; + LPCSTR pszSuffix; + UINT cchSuffix; + UINT nScheme; + } PARSEDURLA, *PPARSEDURLA; + + typedef struct tagPARSEDURLW { + DWORD cbSize; + LPCWSTR pszProtocol; + UINT cchProtocol; + LPCWSTR pszSuffix; + UINT cchSuffix; + UINT nScheme; + } PARSEDURLW, *PPARSEDURLW; + + LWSTDAPI ParseURLA(LPCSTR pcszURL, PARSEDURLA *ppu); + LWSTDAPI ParseURLW(LPCWSTR pcszURL, PARSEDURLW *ppu); + +#if defined(UNICODE) +#define ParseURL ParseURLW + typedef PARSEDURLW PARSEDURL; + typedef PPARSEDURLW PPARSEDURL; +#else +#define ParseURL ParseURLA + typedef PARSEDURLA PARSEDURL; + typedef PPARSEDURLA PPARSEDURL; +#endif + +#endif + +#if !defined(NO_SHLWAPI_REG) - LWSTDAPI_(DWORD) SHDeleteEmptyKeyA(HKEY hkey,LPCSTR pszSubKey); - LWSTDAPI_(DWORD) SHDeleteEmptyKeyW(HKEY hkey,LPCWSTR pszSubKey); + LWSTDAPI_(DWORD) SHDeleteEmptyKeyA(HKEY hkey, LPCSTR pszSubKey); + LWSTDAPI_(DWORD) SHDeleteEmptyKeyW(HKEY hkey, LPCWSTR pszSubKey); #define SHDeleteEmptyKey __MINGW_NAME_AW(SHDeleteEmptyKey) - LWSTDAPI_(DWORD) SHDeleteKeyA(HKEY hkey,LPCSTR pszSubKey); - LWSTDAPI_(DWORD) SHDeleteKeyW(HKEY hkey,LPCWSTR pszSubKey); + LWSTDAPI_(DWORD) SHDeleteKeyA(HKEY hkey, LPCSTR pszSubKey); + LWSTDAPI_(DWORD) SHDeleteKeyW(HKEY hkey, LPCWSTR pszSubKey); #define SHDeleteKey __MINGW_NAME_AW(SHDeleteKey) @@ -595,7 +730,7 @@ #define SHSetValue __MINGW_NAME_AW(SHSetValue) -#if (_WIN32_IE >= 0x0602) +#if (_WIN32_IE >= 0x0602) typedef DWORD SRRF; @@ -623,7 +758,14 @@ LWSTDAPI_(LONG) SHRegGetValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR pszValue,SRRF dwFlags,DWORD *pdwType,void *pvData,DWORD *pcbData); #define SHRegGetValue __MINGW_NAME_AW(SHRegGetValue) -#endif + + LWSTDAPI_(LSTATUS) SHRegSetValue(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszValue, SRRF srrfFlags, + DWORD dwType, LPCVOID pvData, DWORD cbData); + + LWSTDAPI_(LSTATUS) SHRegGetValueFromHKCUHKLM(PCWSTR pwszKey, PCWSTR pwszValue, SRRF srrfFlags, + DWORD *pdwType, void *pvData, DWORD * pcbData); + STDAPI_(BOOL) SHRegGetBoolValueFromHKCUHKLM(PCWSTR pszKey, PCWSTR pszValue, BOOL fDefault); +#endif #define SHQueryValueEx __MINGW_NAME_AW(SHQueryValueEx) #define SHEnumKeyEx __MINGW_NAME_AW(SHEnumKeyEx) @@ -745,10 +887,17 @@ ASSOCSTR_CONTENTTYPE, ASSOCSTR_DEFAULTICON, ASSOCSTR_SHELLEXTENSION, -#if _WIN32_WINNT >= 0x601 +#if _WIN32_WINNT >= 0x601 ASSOCSTR_DROPTARGET, ASSOCSTR_DELEGATEEXECUTE, -#endif +#endif + ASSOCSTR_SUPPORTED_URI_PROTOCOLS, +#if (NTDDI_VERSION >= NTDDI_WIN10) + ASSOCSTR_PROGID, + ASSOCSTR_APPID, + ASSOCSTR_APPPUBLISHER, + ASSOCSTR_APPICONREFERENCE, +#endif ASSOCSTR_MAX } ASSOCSTR; @@ -774,9 +923,40 @@ ASSOCENUM_NONE } ASSOCENUM; + typedef enum { + FTA_None = 0x00000000, + FTA_Exclude = 0x00000001, + FTA_Show = 0x00000002, + FTA_HasExtension = 0x00000004, + FTA_NoEdit = 0x00000008, + FTA_NoRemove = 0x00000010, + FTA_NoNewVerb = 0x00000020, + FTA_NoEditVerb = 0x00000040, + FTA_NoRemoveVerb = 0x00000080, + FTA_NoEditDesc = 0x00000100, + FTA_NoEditIcon = 0x00000200, + FTA_NoEditDflt = 0x00000400, + FTA_NoEditVerbCmd = 0x00000800, + FTA_NoEditVerbExe = 0x00001000, + FTA_NoDDE = 0x00002000, + + FTA_NoEditMIME = 0x00008000, + FTA_OpenIsSafe = 0x00010000, + FTA_AlwaysUnsafe = 0x00020000, + + FTA_NoRecentDocs = 0x00100000, + FTA_SafeForElevation = 0x00200000, + FTA_AlwaysUseDirectInvoke = 0x00400000 + } FILETYPEATTRIBUTEFLAGS; + + DEFINE_ENUM_FLAG_OPERATORS(FILETYPEATTRIBUTEFLAGS) + #undef INTERFACE #define INTERFACE IQueryAssociations - DECLARE_INTERFACE_(IQueryAssociations,IUnknown) { + DECLARE_INTERFACE_(IQueryAssociations, IUnknown) + { + BEGIN_INTERFACE + STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; @@ -785,6 +965,8 @@ STDMETHOD (GetKey)(THIS_ ASSOCF flags,ASSOCKEY key,LPCWSTR pszExtra,HKEY *phkeyOut) PURE; STDMETHOD (GetData)(THIS_ ASSOCF flags,ASSOCDATA data,LPCWSTR pszExtra,LPVOID pvOut,DWORD *pcbOut) PURE; STDMETHOD (GetEnum)(THIS_ ASSOCF flags,ASSOCENUM assocenum,LPCWSTR pszExtra,REFIID riid,LPVOID *ppvOut) PURE; + + END_INTERFACE }; #define AssocQueryString __MINGW_NAME_AW(AssocQueryString) @@ -792,6 +974,7 @@ #define AssocQueryKey __MINGW_NAME_AW(AssocQueryKey) LWSTDAPI AssocCreate(CLSID clsid,REFIID riid,LPVOID *ppv); + STDAPI_(DWORD) SHGetAssocKeys(IQueryAssociations *pqa, HKEY *rgKeys, DWORD cKeys); LWSTDAPI AssocQueryStringA(ASSOCF flags,ASSOCSTR str,LPCSTR pszAssoc,LPCSTR pszExtra,LPSTR pszOut,DWORD *pcchOut); LWSTDAPI AssocQueryStringW(ASSOCF flags,ASSOCSTR str,LPCWSTR pszAssoc,LPCWSTR pszExtra,LPWSTR pszOut,DWORD *pcchOut); LWSTDAPI AssocQueryStringByKeyA(ASSOCF flags,ASSOCSTR str,HKEY hkAssoc,LPCSTR pszExtra,LPSTR pszOut,DWORD *pcchOut); @@ -799,60 +982,171 @@ LWSTDAPI AssocQueryKeyA(ASSOCF flags,ASSOCKEY key,LPCSTR pszAssoc,LPCSTR pszExtra,HKEY *phkeyOut); LWSTDAPI AssocQueryKeyW(ASSOCF flags,ASSOCKEY key,LPCWSTR pszAssoc,LPCWSTR pszExtra,HKEY *phkeyOut); -#if (_WIN32_IE >= 0x0601) +#if (_WIN32_IE >= 0x0601) LWSTDAPI_(WINBOOL) AssocIsDangerous(LPCWSTR pszAssoc); -#endif +#endif -#if (_WIN32_IE >= 0x0603) - LWSTDAPI AssocGetPerceivedType(LPCWSTR pszExt,PERCEIVED *ptype,PERCEIVEDFLAG *pflag,LPWSTR *ppszType); -#endif -#endif +#if (_WIN32_IE >= 0x0603) + LWSTDAPI AssocGetPerceivedType(LPCWSTR pszExt, PERCEIVED *ptype, PERCEIVEDFLAG *pflag, LPWSTR *ppszType); +#endif + +#endif + +#if !defined(NO_SHLWAPI_STREAM) +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + +#if !defined(__IStream_FWD_DEFINED__) +#define __IStream_FWD_DEFINED__ + typedef interface IStream IStream; +#endif -#ifndef NO_SHLWAPI_STREAM #define SHOpenRegStream __MINGW_NAME_AW(SHOpenRegStream) #define SHOpenRegStream2 __MINGW_NAME_AW(SHOpenRegStream2) #define SHCreateStreamOnFile __MINGW_NAME_AW(SHCreateStreamOnFile) - LWSTDAPI_(struct IStream *) SHOpenRegStreamA(HKEY hkey,LPCSTR pszSubkey,LPCSTR pszValue,DWORD grfMode); - LWSTDAPI_(struct IStream *) SHOpenRegStreamW(HKEY hkey,LPCWSTR pszSubkey,LPCWSTR pszValue,DWORD grfMode); - LWSTDAPI_(struct IStream *) SHOpenRegStream2A(HKEY hkey,LPCSTR pszSubkey,LPCSTR pszValue,DWORD grfMode); - LWSTDAPI_(struct IStream *) SHOpenRegStream2W(HKEY hkey,LPCWSTR pszSubkey,LPCWSTR pszValue,DWORD grfMode); + LWSTDAPI_(struct IStream *) SHOpenRegStreamA(HKEY hkey, LPCSTR pszSubkey, LPCSTR pszValue, DWORD grfMode); + LWSTDAPI_(struct IStream *) SHOpenRegStreamW(HKEY hkey, LPCWSTR pszSubkey, LPCWSTR pszValue, DWORD grfMode); + LWSTDAPI_(struct IStream *) SHOpenRegStream2A(HKEY hkey, LPCSTR pszSubkey, LPCSTR pszValue, DWORD grfMode); + LWSTDAPI_(struct IStream *) SHOpenRegStream2W(HKEY hkey, LPCWSTR pszSubkey, LPCWSTR pszValue, DWORD grfMode); #undef SHOpenRegStream #define SHOpenRegStream SHOpenRegStream2 - LWSTDAPI SHCreateStreamOnFileA(LPCSTR pszFile,DWORD grfMode,struct IStream **ppstm); - LWSTDAPI SHCreateStreamOnFileW(LPCWSTR pszFile,DWORD grfMode,struct IStream **ppstm); + LWSTDAPI SHCreateStreamOnFileA(LPCSTR pszFile, DWORD grfMode, struct IStream **ppstm); + LWSTDAPI SHCreateStreamOnFileW(LPCWSTR pszFile, DWORD grfMode, struct IStream **ppstm); -#if (_WIN32_IE >= 0x0600) - LWSTDAPI SHCreateStreamOnFileEx(LPCWSTR pszFile,DWORD grfMode,DWORD dwAttributes,WINBOOL fCreate,struct IStream *pstmTemplate,struct IStream **ppstm); -#endif -#endif +#if (_WIN32_IE >= 0x0600) + LWSTDAPI SHCreateStreamOnFileEx(LPCWSTR pszFile,DWORD grfMode, DWORD dwAttributes, WINBOOL fCreate,struct IStream *pstmTemplate, struct IStream **ppstm); +#endif + + LWSTDAPI_(IStream *) SHCreateMemStream(const BYTE *pInit, UINT cbInit); + +#endif +#endif + +#if !defined(NO_SHLWAPI_ISOS) +#define OS_WINDOWS 0 +#define OS_NT 1 +#define OS_WIN95ORGREATER 2 +#define OS_NT4ORGREATER 3 +#define OS_WIN98ORGREATER 5 +#define OS_WIN98_GOLD 6 +#define OS_WIN2000ORGREATER 7 +#define OS_WIN2000PRO 8 +#define OS_WIN2000SERVER 9 +#define OS_WIN2000ADVSERVER 10 +#define OS_WIN2000DATACENTER 11 +#define OS_WIN2000TERMINAL 12 +#define OS_EMBEDDED 13 +#define OS_TERMINALCLIENT 14 +#define OS_TERMINALREMOTEADMIN 15 +#define OS_WIN95_GOLD 16 +#define OS_MEORGREATER 17 +#define OS_XPORGREATER 18 +#define OS_HOME 19 +#define OS_PROFESSIONAL 20 +#define OS_DATACENTER 21 +#define OS_ADVSERVER 22 +#define OS_SERVER 23 +#define OS_TERMINALSERVER 24 +#define OS_PERSONALTERMINALSERVER 25 +#define OS_FASTUSERSWITCHING 26 +#define OS_WELCOMELOGONUI 27 +#define OS_DOMAINMEMBER 28 +#define OS_ANYSERVER 29 +#define OS_WOW6432 30 +#define OS_WEBSERVER 31 +#define OS_SMALLBUSINESSSERVER 32 +#define OS_TABLETPC 33 +#define OS_SERVERADMINUI 34 +#define OS_MEDIACENTER 35 +#define OS_APPLIANCE 36 -#if (_WIN32_IE >= 0x0601) -#define SHGVSPB_PERUSER 0x00000001 -#define SHGVSPB_ALLUSERS 0x00000002 -#define SHGVSPB_PERFOLDER 0x00000004 -#define SHGVSPB_ALLFOLDERS 0x00000008 -#define SHGVSPB_INHERIT 0x00000010 -#define SHGVSPB_ROAM 0x00000020 -#define SHGVSPB_NOAUTODEFAULTS 0x80000000 +LWSTDAPI_(BOOL) IsOS(DWORD dwOS); +#endif -#define SHGVSPB_FOLDER (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER) -#define SHGVSPB_FOLDERNODEFAULTS (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER | SHGVSPB_NOAUTODEFAULTS) -#define SHGVSPB_USERDEFAULTS (SHGVSPB_PERUSER | SHGVSPB_ALLFOLDERS) -#define SHGVSPB_GLOBALDEAFAULTS (SHGVSPB_ALLUSERS | SHGVSPB_ALLFOLDERS) - - LWSTDAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl,LPCWSTR pszBagName,DWORD dwFlags,REFIID riid,void **ppv); -#endif + typedef enum { + GLOBALCOUNTER_SEARCHMANAGER, + GLOBALCOUNTER_SEARCHOPTIONS, + GLOBALCOUNTER_FOLDERSETTINGSCHANGE, + GLOBALCOUNTER_RATINGS, + GLOBALCOUNTER_APPROVEDSITES, + GLOBALCOUNTER_RESTRICTIONS, + GLOBALCOUNTER_SHELLSETTINGSCHANGED, + GLOBALCOUNTER_SYSTEMPIDLCHANGE, + GLOBALCOUNTER_OVERLAYMANAGER, + GLOBALCOUNTER_QUERYASSOCIATIONS, + GLOBALCOUNTER_IESESSIONS, + GLOBALCOUNTER_IEONLY_SESSIONS, + GLOBALCOUNTER_APPLICATION_DESTINATIONS, + __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_CSCSYNCINPROGRESS, + GLOBALCOUNTER_BITBUCKETNUMDELETERS, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_SHARES, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_A, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_B, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_C, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_D, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_E, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_F, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_G, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_H, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_I, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_J, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_K, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_L, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_M, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_N, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_O, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_P, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Q, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_R, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_S, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_T, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_U, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_V, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_W, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_X, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Y, + GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Z, + __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_RECYCLEDIRTYCOUNT_SERVERDRIVE, + __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_RECYCLEGLOBALDIRTYCOUNT, + GLOBALCOUNTER_RECYCLEBINENUM, + GLOBALCOUNTER_RECYCLEBINCORRUPTED, + GLOBALCOUNTER_RATINGS_STATECOUNTER, + GLOBALCOUNTER_PRIVATE_PROFILE_CACHE, + GLOBALCOUNTER_INTERNETTOOLBAR_LAYOUT, + GLOBALCOUNTER_FOLDERDEFINITION_CACHE, + GLOBALCOUNTER_COMMONPLACES_LIST_CACHE, + GLOBALCOUNTER_PRIVATE_PROFILE_CACHE_MACHINEWIDE, + GLOBALCOUNTER_ASSOCCHANGED, +#if (NTDDI_VERSION >= NTDDI_WIN8) + GLOBALCOUNTER_APP_ITEMS_STATE_STORE_CACHE, + GLOBALCOUNTER_SETTINGSYNC_ENABLED, + GLOBALCOUNTER_APPSFOLDER_FILETYPEASSOCIATION_COUNTER, + GLOBALCOUNTER_USERINFOCHANGED, +#if (NTDDI_VERSION >= NTDDI_WINBLUE) + GLOBALCOUNTER_SYNC_ENGINE_INFORMATION_CACHE_MACHINEWIDE, +#endif +#endif +#if (NTDDI_VERSION >= NTDDI_WIN10_RS1) + GLOBALCOUNTER_BANNERS_DATAMODEL_CACHE_MACHINEWIDE, +#endif + GLOBALCOUNTER_MAXIMUMVALUE + } SHGLOBALCOUNTER; + +#if (NTDDI_VERSION >= NTDDI_WIN7) + LWSTDAPI_(long) SHGlobalCounterGetValue(const SHGLOBALCOUNTER id); + LWSTDAPI_(long) SHGlobalCounterIncrement(const SHGLOBALCOUNTER id); + LWSTDAPI_(long) SHGlobalCounterDecrement(const SHGLOBALCOUNTER id); +#endif -#if (_WIN32_IE >= 0x0603) +#if (_WIN32_IE >= 0x0603) LWSTDAPI_(HANDLE) SHAllocShared(const void *pvData,DWORD dwSize,DWORD dwProcessId); LWSTDAPI_(WINBOOL) SHFreeShared(HANDLE hData,DWORD dwProcessId); LWSTDAPI_(void *) SHLockShared(HANDLE hData,DWORD dwProcessId); LWSTDAPI_(WINBOOL) SHUnlockShared(void *pvData); -#endif +#endif -#if (_WIN32_IE >= 0x0501) +#if (_WIN32_IE >= 0x0501) #define PLATFORM_UNKNOWN 0 #define PLATFORM_IE3 1 #define PLATFORM_BROWSERONLY 1 @@ -860,21 +1154,22 @@ LWSTDAPI WhichPlatform(void); -typedef struct { - const IID *piid; - int dwOffset; -} QITAB, *LPQITAB; -typedef const QITAB *LPCQITAB; + typedef struct { + const IID *piid; + int dwOffset; + } QITAB, *LPQITAB; + + typedef const QITAB *LPCQITAB; -#ifndef OFFSETOFCLASS +#if !defined(OFFSETOFCLASS) #define OFFSETOFCLASS(base, derived) ((DWORD)(DWORD_PTR)(static_cast<base*>((derived*)8))-8) -#endif +#endif -#ifdef __cplusplus +#if defined(__cplusplus) #define QITABENTMULTI(Cthis, Ifoo, Iimpl) { &__uuidof(Ifoo), OFFSETOFCLASS(Iimpl, Cthis) } #else #define QITABENTMULTI(Cthis, Ifoo, Iimpl) { (IID*) &IID_##Ifoo, OFFSETOFCLASS(Iimpl, Cthis) } -#endif +#endif #define QITABENTMULTI2(Cthis, Ifoo, Iimpl) { (IID*) &Ifoo, OFFSETOFCLASS(Iimpl, Cthis) } #define QITABENT(Cthis, Ifoo) QITABENTMULTI(Cthis, Ifoo, Ifoo) @@ -882,9 +1177,9 @@ #define ILMM_IE4 0 LWSTDAPI_(BOOL) SHIsLowMemoryMachine(DWORD dwType); - LWSTDAPI_(int) GetMenuPosFromId(HMENU hMenu, UINT id); - LWSTDAPI SHGetInverseCMAP(__out_bcount(cbMap) BYTE *pbMap, ULONG cbMap); -#endif + LWSTDAPI_(int) GetMenuPosFromID(HMENU hMenu, UINT id); + LWSTDAPI SHGetInverseCMAP(BYTE *pbMap, ULONG cbMap); +#endif #define SHACF_DEFAULT 0x00000000 #define SHACF_FILESYSTEM 0x00000001 @@ -894,13 +1189,13 @@ #define SHACF_USETAB 0x00000008 #define SHACF_FILESYS_ONLY 0x00000010 -#if (_WIN32_IE >= 0x0600) +#if (_WIN32_IE >= 0x0600) #define SHACF_FILESYS_DIRS 0x00000020 -#endif +#endif -#if (_WIN32_IE >= 0x0700) +#if (_WIN32_IE >= 0x0700) #define SHACF_VIRTUAL_NAMESPACE 0x00000040 -#endif +#endif #define SHACF_AUTOSUGGEST_FORCE_ON 0x10000000 #define SHACF_AUTOSUGGEST_FORCE_OFF 0x20000000 @@ -912,27 +1207,53 @@ LWSTDAPI SHGetThreadRef(IUnknown **ppunk); LWSTDAPI_(WINBOOL) SHSkipJunction(struct IBindCtx *pbc,const CLSID *pclsid); -#if (_WIN32_IE >= 0x0603) +#if (_WIN32_IE >= 0x0603) LWSTDAPI SHCreateThreadRef(LONG *pcRef,IUnknown **ppunk); -#endif +#endif #define CTF_INSIST 0x00000001 #define CTF_THREAD_REF 0x00000002 #define CTF_PROCESS_REF 0x00000004 #define CTF_COINIT 0x00000008 +#if (_WIN32_IE >= _WIN32_IE_IE60) #define CTF_FREELIBANDEXIT 0x00000010 #define CTF_REF_COUNTED 0x00000020 #define CTF_WAIT_ALLOWCOM 0x00000040 +#endif +#if (_WIN32_IE >= _WIN32_IE_IE70) +#define CTF_UNUSED 0x00000080 +#define CTF_INHERITWOW64 0x00000100 +#endif +#if (NTDDI_VERSION >= NTDDI_VISTA) +#define CTF_WAIT_NO_REENTRANCY 0x00000200 +#endif +#if (NTDDI_VERSION >= NTDDI_WIN7) +#define CTF_KEYBOARD_LOCALE 0x00000400 +#define CTF_OLEINITIALIZE 0x00000800 +#define CTF_COINIT_MTA 0x00001000 +#define CTF_NOADDREFLIB 0x00002000 +#endif + + typedef DWORD SHCT_FLAGS; + + LWSTDAPI_(WINBOOL) SHCreateThread(LPTHREAD_START_ROUTINE pfnThreadProc,void *pData, SHCT_FLAGS dwFlags,LPTHREAD_START_ROUTINE pfnCallback); + LWSTDAPI_(BOOL) SHCreateThreadWithHandle(LPTHREAD_START_ROUTINE pfnThreadProc, void *pData, SHCT_FLAGS dwflags, LPTHREAD_START_ROUTINE pfnCallback, HANDLE *pHandle); + +#if (NTDDI_VERSION >= NTDDI_WIN8) + LWSTDAPI_(void) SetProcessReference(IUnknown *punk); + LWSTDAPI GetProcessReference(IUnknown **punk); +#endif - LWSTDAPI_(WINBOOL) SHCreateThread(LPTHREAD_START_ROUTINE pfnThreadProc,void *pData,DWORD dwFlags,LPTHREAD_START_ROUTINE pfnCallback); +#if (_WIN32_IE >= _WIN32_IE_IE60) LWSTDAPI SHReleaseThreadRef(void); +#endif -#ifndef NO_SHLWAPI_GDI +#if !defined(NO_SHLWAPI_GDI) LWSTDAPI_(HPALETTE) SHCreateShellPalette(HDC hdc); LWSTDAPI_(void) ColorRGBToHLS(COLORREF clrRGB,WORD *pwHue,WORD *pwLuminance,WORD *pwSaturation); LWSTDAPI_(COLORREF) ColorHLSToRGB(WORD wHue,WORD wLuminance,WORD wSaturation); LWSTDAPI_(COLORREF) ColorAdjustLuma(COLORREF clrRGB,int n,WINBOOL fScale); -#endif +#endif typedef struct _DLLVERSIONINFO { DWORD cbSize; @@ -963,31 +1284,163 @@ STDAPI DllInstall(WINBOOL bInstall,LPCWSTR pszCmdLine); -#if (_WIN32_IE >= 0x0602) +#if (_WIN32_IE >= 0x0602) LWSTDAPI_(WINBOOL) IsInternetESCEnabled(void); -#endif +#endif -LWSTDAPI_(IStream *) SHCreateMemStream(const BYTE *pInit, _In_ UINT cbInit); +#if !defined(NO_SHLWAPI_HTTP) -#ifdef __cplusplus -} -#endif - -#include <poppack.h> -#endif - -#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) -#ifndef NO_SHLWAPI_HTTP -#if (_WIN32_IE >= 0x0603) +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +#if (_WIN32_IE >= 0x0603) #define GetAcceptLanguages __MINGW_NAME_AW(GetAcceptLanguages) - LWSTDAPI GetAcceptLanguagesA(LPSTR psz,DWORD *pcch); LWSTDAPI GetAcceptLanguagesW(LPWSTR psz,DWORD *pcch); -#endif -#endif +#endif + +#endif + +#endif + +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + +#if (_WIN32_IE < _WIN32_IE_IE70) && !defined(NO_SHLWAPI_STOPWATCH) +#define SPMODE_SHELL 0x00000001 +#define SPMODE_DEBUGOUT 0x00000002 +#define SPMODE_TEST 0x00000004 +#define SPMODE_BROWSER 0x00000008 +#define SPMODE_FLUSH 0x00000010 +#define SPMODE_EVENT 0x00000020 +#define SPMODE_MSVM 0x00000040 +#define SPMODE_FORMATTEXT 0x00000080 +#define SPMODE_PROFILE 0x00000100 +#define SPMODE_DEBUGBREAK 0x00000200 +#define SPMODE_MSGTRACE 0x00000400 +#define SPMODE_PERFTAGS 0x00000800 +#define SPMODE_MEMWATCH 0x00001000 +#define SPMODE_DBMON 0x00002000 +#define SPMODE_MULTISTOP 0x00004000 +#if !defined(NO_ETW_TRACING) +#define SPMODE_EVENTTRACE 0x00008000 +#endif + + DWORD WINAPI StopWatchMode(void); + DWORD WINAPI StopWatchFlush(void); +#endif + + LWSTDAPI_(void) IUnknown_Set(IUnknown **ppunk, IUnknown *punk); + LWSTDAPI_(void) IUnknown_AtomicRelease(void **ppunk); + LWSTDAPI IUnknown_GetWindow(IUnknown *punk, HWND *phwnd); + LWSTDAPI IUnknown_SetSite(IUnknown *punk, IUnknown *punkSite); + LWSTDAPI IUnknown_GetSite(IUnknown *punk, REFIID riid, void **ppv); + LWSTDAPI IUnknown_QueryService(IUnknown *punk, REFGUID guidService, REFIID riid, void **ppvOut); +#ifndef COBJMACROS + LWSTDAPI IStream_Read(IStream *pstm, void *pv, ULONG cb); + LWSTDAPI IStream_Write(IStream *pstm, const void *pv, ULONG cb); +#endif + LWSTDAPI IStream_Reset(IStream *pstm); + LWSTDAPI IStream_Size(IStream *pstm, ULARGE_INTEGER *pui); + +#if !defined(__IConnectionPoint_FWD_DEFINED__) +#define __IConnectionPoint_FWD_DEFINED__ + typedef interface IConnectionPoint IConnectionPoint; +#endif + + LWSTDAPI ConnectToConnectionPoint(IUnknown *punk, REFIID riidEvent, BOOL fConnect, IUnknown *punkTarget, DWORD *pdwCookie, IConnectionPoint **ppcpOut); + +#if (NTDDI_VERSION >= NTDDI_VISTA) + LWSTDAPI IStream_ReadPidl(IStream *pstm, PIDLIST_RELATIVE *ppidlOut); + LWSTDAPI IStream_WritePidl(IStream *pstm, PCUIDLIST_RELATIVE pidlWrite); +#endif + +#if (_WIN32_IE >= _WIN32_IE_IE70) + LWSTDAPI IStream_ReadStr(IStream *pstm, PWSTR *ppsz); + LWSTDAPI IStream_WriteStr(IStream *pstm, PCWSTR psz); + LWSTDAPI IStream_Copy(IStream *pstmFrom, IStream *pstmTo, DWORD cb); +#endif + +#if (_WIN32_IE >= 0x0601) +#define SHGVSPB_PERUSER 0x00000001 +#define SHGVSPB_ALLUSERS 0x00000002 +#define SHGVSPB_PERFOLDER 0x00000004 +#define SHGVSPB_ALLFOLDERS 0x00000008 +#define SHGVSPB_INHERIT 0x00000010 +#define SHGVSPB_ROAM 0x00000020 +#define SHGVSPB_NOAUTODEFAULTS 0x80000000 + +#define SHGVSPB_FOLDER (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER) +#define SHGVSPB_FOLDERNODEFAULTS (SHGVSPB_PERUSER | SHGVSPB_PERFOLDER | SHGVSPB_NOAUTODEFAULTS) +#define SHGVSPB_USERDEFAULTS (SHGVSPB_PERUSER | SHGVSPB_ALLFOLDERS) +#define SHGVSPB_GLOBALDEAFAULTS (SHGVSPB_ALLUSERS | SHGVSPB_ALLFOLDERS) + + LWSTDAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl,LPCWSTR pszBagName,DWORD dwFlags,REFIID riid,void **ppv); +#endif + +#define FDTF_SHORTTIME 0x00000001 +#define FDTF_SHORTDATE 0x00000002 +#define FDTF_DEFAULT (FDTF_SHORTDATE | FDTF_SHORTTIME) +#define FDTF_LONGDATE 0x00000004 +#define FDTF_LONGTIME 0x00000008 +#define FDTF_RELATIVE 0x00000010 +#define FDTF_LTRDATE 0x00000100 +#define FDTF_RTLDATE 0x00000200 +#define FDTF_NOAUTOREADINGORDER 0x00000400 + + LWSTDAPI_(int) SHFormatDateTimeA(const FILETIME UNALIGNED *pft, DWORD *pdwFlags, LPSTR pszBuf, UINT cchBuf); + LWSTDAPI_(int) SHFormatDateTimeW(const FILETIME UNALIGNED *pft, DWORD *pdwFlags, LPWSTR pszBuf, UINT cchBuf); + +#define SHFormatDateTime __MINGW_NAME_AW(SHFormatDateTime) + +#endif + +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) + + LWSTDAPI_(int) SHAnsiToUnicode(PCSTR pszSrc, PWSTR pwszDst, int cwchBuf); + LWSTDAPI_(int) SHAnsiToAnsi(PCSTR pszSrc, PSTR pszDst, int cchBuf); + LWSTDAPI_(int) SHUnicodeToAnsi(PCWSTR pwszSrc, PSTR pszDst, int cchBuf); + LWSTDAPI_(int) SHUnicodeToUnicode(PCWSTR pwzSrc, PWSTR pwzDst, int cwchBuf); + +#if defined(UNICODE) +#define SHTCharToUnicode(wzSrc, wzDest, cchSize) SHUnicodeToUnicode(wzSrc, wzDest, cchSize) +#define SHTCharToAnsi(wzSrc, szDest, cchSize) SHUnicodeToAnsi(wzSrc, szDest, cchSize) +#define SHUnicodeToTChar(wzSrc, wzDest, cchSize) SHUnicodeToUnicode(wzSrc, wzDest, cchSize) +#define SHAnsiToTChar(szSrc, wzDest, cchSize) SHAnsiToUnicode(szSrc, wzDest, cchSize) +#else +#define SHTCharToUnicode(szSrc, wzDest, cchSize) SHAnsiToUnicode(szSrc, wzDest, cchSize) +#define SHTCharToAnsi(szSrc, szDest, cchSize) SHAnsiToAnsi(szSrc, szDest, cchSize) +#define SHUnicodeToTChar(wzSrc, szDest, cchSize) SHUnicodeToAnsi(wzSrc, szDest, cchSize) +#define SHAnsiToTChar(szSrc, szDest, cchSize) SHAnsiToAnsi(szSrc, szDest, cchSize) +#endif + +#endif + +#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + +LWSTDAPI_(int) SHMessageBoxCheckA(HWND hwnd, LPCSTR pszText, LPCSTR pszCaption, UINT uType, int iDefault, LPCSTR pszRegVal); +LWSTDAPI_(int) SHMessageBoxCheckW(HWND hwnd, LPCWSTR pszText, LPCWSTR pszCaption, UINT uType, int iDefault, LPCWSTR pszRegVal); + +#define SHMessageBoxCheck __MINGW_NAME_AW(SHMessageBoxCheck) + +LWSTDAPI_(LRESULT) SHSendMessageBroadcastA(UINT uMsg, WPARAM wParam, LPARAM lParam); +LWSTDAPI_(LRESULT) SHSendMessageBroadcastW(UINT uMsg, WPARAM wParam, LPARAM lParam); + +#define SHSendMessageBroadcast __MINGW_NAME_AW(SHSendMessageBroadcast) + +LWSTDAPI_(CHAR) SHStripMneumonicA(LPSTR pszMenu); +LWSTDAPI_(WCHAR) SHStripMneumonicW(LPWSTR pszMenu); + +#define SHStripMneumonic __MINGW_NAME_AW(SHStripMneumonic) + +#endif + +#if defined(__cplusplus) +} +#endif + +#include <poppack.h> + +#endif -#endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) */ +#endif -#endif /* !NOSHLWAPI */ -#endif /* _INC_SHLWAPI */ +#endif
_______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public