On 2/05/2021 1:28 pm, Liu Hao wrote:
> 
> Please use `WINBOOL` instead of `BOOL` as the latter is a builtin type
> on Mac.
> 
> There are more `BOOL`s in the original file, they should be replaced as
> well.
> 

See attached patch with changes you requested.

-- 
David May
--- doc/mingw64-shlwapi.h       2021-04-28 21:40:36.145098000 +0800
+++ shlwapi.h   2021-05-02 14:40:21.915360200 +0800
@@ -14,6 +14,7 @@
 #include <objbase.h>
 #include <shtypes.h>
 
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) 
 #ifndef WINSHLWAPI
 #if !defined(_SHLWAPI_)
 #define LWSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
@@ -28,8 +29,6 @@
 #endif
 #endif
 
-#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
-
 #ifndef _WINRESRC_
 #ifndef _WIN32_IE
 #define _WIN32_IE 0x0601
@@ -38,6 +37,11 @@
 
 #include <pshpack8.h>
 
+#ifndef __IBindCtx_FWD_DEFINED__
+#define __IBindCtx_FWD_DEFINED__
+  typedef interface IBindCtx IBindCtx;
+#endif 
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -47,10 +51,23 @@
   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,13 +99,20 @@
   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);
+
+#define STIF_DEFAULT __MSABI_LONG(0x00000000)
+#define STIF_SUPPORT_HEX __MSABI_LONG(0x00000001)
+  typedef int STIF_FLAGS;
+
+  LWSTDAPI_(WINBOOL) StrToIntExA(LPCSTR pszString,STIF_FLAGS dwFlags,int 
*piRet);
+  LWSTDAPI_(WINBOOL) StrToIntExW(LPCWSTR pszString,STIF_FLAGS dwFlags,int 
*piRet);
 #if (_WIN32_IE >= 0x0600)
-  LWSTDAPI_(WINBOOL) StrToInt64ExA(LPCSTR pszString,DWORD dwFlags,LONGLONG 
*pllRet);
-  LWSTDAPI_(WINBOOL) StrToInt64ExW(LPCWSTR pszString,DWORD dwFlags,LONGLONG 
*pllRet);
+  LWSTDAPI_(WINBOOL) StrToInt64ExA(LPCSTR pszString,STIF_FLAGS 
dwFlags,LONGLONG *pllRet);
+  LWSTDAPI_(WINBOOL) StrToInt64ExW(LPCWSTR pszString,STIF_FLAGS 
dwFlags,LONGLONG *pllRet);
 #endif
   LWSTDAPI_(WINBOOL) StrTrimA(LPSTR psz,LPCSTR pszTrimChars);
   LWSTDAPI_(WINBOOL) StrTrimW(LPWSTR psz,LPCWSTR pszTrimChars);
@@ -122,9 +146,25 @@
   LWSTDAPI StrRetToBSTR(STRRET *pstr,LPCITEMIDLIST pidl,BSTR *pbstr);
   LWSTDAPI SHStrDupA(LPCSTR psz,WCHAR **ppwsz);
   LWSTDAPI SHStrDupW(LPCWSTR psz,WCHAR **ppwsz);
+
+#ifdef __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)
   LWSTDAPI_(WINBOOL) IsCharSpaceA(CHAR wch);
   LWSTDAPI_(WINBOOL) IsCharSpaceW(WCHAR wch);
@@ -206,9 +246,6 @@
 #define PathIsHTMLFileA(pszPath) 
PathIsContentTypeA(pszPath,SZ_CONTENTTYPE_HTMLA)
 #define PathIsHTMLFileW(pszPath) 
PathIsContentTypeW(pszPath,SZ_CONTENTTYPE_HTMLW)
 
-#define STIF_DEFAULT __MSABI_LONG(0x00000000)
-#define STIF_SUPPORT_HEX __MSABI_LONG(0x00000001)
-
 #define StrCatA lstrcatA
 #define StrCmpA lstrcmpA
 #define StrCmpIA lstrcmpiA
@@ -239,6 +276,17 @@
 
 #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;
+
+  LWSTDAPI StrFormatByteSizeEx(ULONGLONG ull, SFBS_FLAGS flags, PWSTR pszBuf, 
UINT cchBuf);
+#endif 
+
 #ifndef NO_SHLWAPI_PATH
 
   LWSTDAPI_(LPSTR) PathAddBackslashA(LPSTR pszPath);
@@ -454,6 +502,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 +525,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 +537,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 +636,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 +646,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,6 +668,38 @@
 
 #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)
+
+  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
 
 #ifndef NO_SHLWAPI_REG
@@ -623,6 +759,13 @@
   LWSTDAPI_(LONG) SHRegGetValueW(HKEY hkey,LPCWSTR pszSubKey,LPCWSTR 
pszValue,SRRF dwFlags,DWORD *pdwType,void *pvData,DWORD *pcbData);
 
 #define SHRegGetValue __MINGW_NAME_AW(SHRegGetValue)
+
+  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_(WINBOOL) SHRegGetBoolValueFromHKCUHKLM(PCWSTR pszKey, PCWSTR 
pszValue, WINBOOL fDefault);
 #endif
 
 #define SHQueryValueEx __MINGW_NAME_AW(SHQueryValueEx)
@@ -749,6 +892,13 @@
     ASSOCSTR_DROPTARGET,
     ASSOCSTR_DELEGATEEXECUTE,
 #endif
+    ASSOCSTR_SUPPORTED_URI_PROTOCOLS,
+#if (NTDDI_VERSION >= NTDDI_WIN10) 
+    ASSOCSTR_PROGID,
+    ASSOCSTR_APPID,
+    ASSOCSTR_APPPUBLISHER,
+    ASSOCSTR_APPICONREFERENCE,
+#endif 
     ASSOCSTR_MAX
   } ASSOCSTR;
 
@@ -774,9 +924,39 @@
     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) {
+    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);
@@ -806,9 +989,17 @@
 #if (_WIN32_IE >= 0x0603)
   LWSTDAPI AssocGetPerceivedType(LPCWSTR pszExt,PERCEIVED *ptype,PERCEIVEDFLAG 
*pflag,LPWSTR *ppszType);
 #endif
+
 #endif
 
 #ifndef NO_SHLWAPI_STREAM
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 
+
+#ifndef __IStream_FWD_DEFINED__
+#define __IStream_FWD_DEFINED__
+  typedef interface IStream IStream;
+#endif 
+
 #define SHOpenRegStream __MINGW_NAME_AW(SHOpenRegStream)
 #define SHOpenRegStream2 __MINGW_NAME_AW(SHOpenRegStream2)
 #define SHCreateStreamOnFile __MINGW_NAME_AW(SHCreateStreamOnFile)
@@ -826,23 +1017,126 @@
 #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 (_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
+#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
 
-#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_(WINBOOL) IsOS(DWORD dwOS);
+#endif 
 
-  LWSTDAPI SHGetViewStatePropertyBag(LPCITEMIDLIST pidl,LPCWSTR 
pszBagName,DWORD dwFlags,REFIID riid,void **ppv);
+  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)
@@ -881,9 +1175,9 @@
   STDAPI QISearch(void *that, LPCQITAB pqit, REFIID riid, void **ppv);
 
 #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);
+  LWSTDAPI_(WINBOOL) SHIsLowMemoryMachine(DWORD dwType);
+  LWSTDAPI_(int) GetMenuPosFromID(HMENU hMenu, UINT id);
+  LWSTDAPI SHGetInverseCMAP(BYTE *pbMap, ULONG cbMap);
 #endif
 
 #define SHACF_DEFAULT 0x00000000
@@ -920,12 +1214,38 @@
 #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_(WINBOOL) SHCreateThreadWithHandle(LPTHREAD_START_ROUTINE 
pfnThreadProc, void *pData, SHCT_FLAGS dwflags, LPTHREAD_START_ROUTINE 
pfnCallback, HANDLE *pHandle);
 
-  LWSTDAPI_(WINBOOL) SHCreateThread(LPTHREAD_START_ROUTINE pfnThreadProc,void 
*pData,DWORD dwFlags,LPTHREAD_START_ROUTINE pfnCallback);
+#if (NTDDI_VERSION >= NTDDI_WIN8) 
+  LWSTDAPI_(void) SetProcessReference(IUnknown *punk);
+  LWSTDAPI GetProcessReference(IUnknown **punk);
+#endif 
+
+#if (_WIN32_IE >= _WIN32_IE_IE60) 
   LWSTDAPI SHReleaseThreadRef(void);
+#endif 
 
 #ifndef NO_SHLWAPI_GDI
   LWSTDAPI_(HPALETTE) SHCreateShellPalette(HDC hdc);
@@ -967,27 +1287,159 @@
   LWSTDAPI_(WINBOOL) IsInternetESCEnabled(void);
 #endif
 
-LWSTDAPI_(IStream *) SHCreateMemStream(const BYTE *pInit, _In_ UINT cbInit);
+#ifndef NO_SHLWAPI_HTTP
 
-#ifdef __cplusplus
-}
+#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
 
-#include <poppack.h>
 #endif
 
-#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
-#ifndef NO_SHLWAPI_HTTP
-#if (_WIN32_IE >= 0x0603)
+#endif 
 
-#define GetAcceptLanguages __MINGW_NAME_AW(GetAcceptLanguages)
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 
 
-  LWSTDAPI GetAcceptLanguagesA(LPSTR psz,DWORD *pcch);
-  LWSTDAPI GetAcceptLanguagesW(LPWSTR psz,DWORD *pcch);
+#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);
+
+#ifndef __IConnectionPoint_FWD_DEFINED__
+#define __IConnectionPoint_FWD_DEFINED__
+  typedef interface IConnectionPoint IConnectionPoint;
+#endif 
+
+  LWSTDAPI ConnectToConnectionPoint(IUnknown *punk, REFIID riidEvent, WINBOOL 
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 /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) */
+#endif 
 
-#endif /* !NOSHLWAPI */
-#endif /* _INC_SHLWAPI */
+#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 
+
+#endif 
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to