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

Reply via email to