Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2002-07-22 07:10:43 +0400
committerDanny Smith <dannysmith@users.sourceforge.net>2002-07-22 07:10:43 +0400
commit6b2ba9ad490102eb0514bb1b2580cdfd5c0135da (patch)
tree7e37216f4a6479021951392dd01a4ff623a29d1c
parent9e35380b5a15fafc7c735330ba56c7841edc16e0 (diff)
2002-07-22 Danny Smith <dannysmith@users.sourceforge.net>
* include/shlwapi.h: New file. Thanks to: Mattia Barbon <mbarbon@dsi.unive.it> and Victor Porton <porton@narod.ru> for contributions. * lib/shlwapi.def: New file. * lib/test.c: #include shlwapi.h.
-rw-r--r--winsup/w32api/ChangeLog8
-rw-r--r--winsup/w32api/include/shlwapi.h712
-rw-r--r--winsup/w32api/lib/shlwapi.def296
-rw-r--r--winsup/w32api/lib/test.c1
4 files changed, 1017 insertions, 0 deletions
diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog
index 161ccba8d..72af7a22e 100644
--- a/winsup/w32api/ChangeLog
+++ b/winsup/w32api/ChangeLog
@@ -1,3 +1,11 @@
+2002-07-22 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * include/shlwapi.h: New file.
+ Thanks to: Mattia Barbon <mbarbon@dsi.unive.it> and
+ Victor Porton <porton@narod.ru> for contributions.
+ * lib/shlwapi.def: New file.
+ * lib/test.c: #include shlwapi.h.
+
2002-07-21 Bart Oldeman <bart.oldeman@btinternet.com>
* include/shlobj.h (FCIDM_MENU_FAVORITES): Remove bogus
diff --git a/winsup/w32api/include/shlwapi.h b/winsup/w32api/include/shlwapi.h
new file mode 100644
index 000000000..ef6063a13
--- /dev/null
+++ b/winsup/w32api/include/shlwapi.h
@@ -0,0 +1,712 @@
+#ifndef _SHLWAPI_H
+#define _SHLWAPI_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __OBJC__
+#include <objbase.h>
+#include <shlobj.h>
+#endif
+
+#ifndef WINSHLWAPI
+#define WINSHLWAPI DECLSPEC_IMPORT
+#endif
+
+#define DLLVER_PLATFORM_WINDOWS 0x00000001
+#define DLLVER_PLATFORM_NT 0x00000002
+
+#define URL_DONT_ESCAPE_EXTRA_INFO 0x02000000
+#define URL_DONT_SIMPLIFY 0x08000000
+#define URL_ESCAPE_PERCENT 0x00001000
+#define URL_ESCAPE_SEGMENT_ONLY 0x00002000
+#define URL_ESCAPE_SPACES_ONLY 0x04000000
+#define URL_ESCAPE_UNSAFE 0x20000000
+#define URL_INTERNAL_PATH 0x00800000
+#define URL_PARTFLAG_KEEPSCHEME 0x00000001
+#define URL_PLUGGABLE_PROTOCOL 0x40000000
+#define URL_UNESCAPE 0x10000000
+#define URL_UNESCAPE_HIGH_ANSI_ONLY 0x00400000
+#define URL_UNESCAPE_INPLACE 0x00100000
+
+#ifndef RC_INVOKED
+#include <pshpack1.h>
+typedef struct _DllVersionInfo
+{
+ DWORD cbSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ DWORD dwBuildNumber;
+ DWORD dwPlatformID;
+} DLLVERSIONINFO;
+typedef struct _DLLVERSIONINFO2
+{
+ DLLVERSIONINFO info1;
+ DWORD dwFlags;
+ ULONGLONG ullVersion;
+} DLLVERSIONINFO2;
+#include <poppack.h>
+
+#define MAKEDLLVERULL(major, minor, build, qfe) \
+ (((ULONGLONG)(major) << 48) | \
+ ((ULONGLONG)(minor) << 32) | \
+ ((ULONGLONG)(build) << 16) | \
+ ((ULONGLONG)( qfe) << 0))
+
+typedef enum {
+ ASSOCSTR_COMMAND,
+ ASSOCSTR_EXECUTABLE,
+ ASSOCSTR_FRIENDLYDOCNAME,
+ ASSOCSTR_FRIENDLYAPPNAME,
+ ASSOCSTR_NOOPEN,
+ ASSOCSTR_SHELLNEWVALUE,
+ ASSOCSTR_DDECOMMAND,
+ ASSOCSTR_DDEIFEXEC,
+ ASSOCSTR_DDEAPPLICATION,
+ ASSOCSTR_DDETOPIC
+} ASSOCSTR;
+typedef enum
+{
+ ASSOCKEY_SHELLEXECCLASS = 1,
+ ASSOCKEY_APP,
+ ASSOCKEY_CLASS,
+ ASSOCKEY_BASECLASS
+} ASSOCKEY;
+typedef enum
+{
+ ASSOCDATA_MSIDESCRIPTOR = 1,
+ ASSOCDATA_NOACTIVATEHANDLER,
+ ASSOCDATA_QUERYCLASSSTORE
+} ASSOCDATA;
+typedef DWORD ASSOCF;
+typedef enum
+{
+ SHREGDEL_DEFAULT = 0x00000000,
+ SHREGDEL_HKCU = 0x00000001,
+ SHREGDEL_HKLM = 0x00000010,
+ SHREGDEL_BOTH = 0x00000011
+} SHREGDEL_FLAGS;
+typedef enum
+{
+ SHREGENUM_DEFAULT = 0x00000000,
+ SHREGENUM_HKCU = 0x00000001,
+ SHREGENUM_HKLM = 0x00000010,
+ SHREGENUM_BOTH = 0x00000011
+} SHREGENUM_FLAGS;
+typedef enum
+{
+ URLIS_URL,
+ URLIS_OPAQUE,
+ URLIS_NOHISTORY,
+ URLIS_FILEURL,
+ URLIS_APPLIABLE,
+ URLIS_DIRECTORY,
+ URLIS_HASQUERY
+} URLIS;
+
+typedef HANDLE HUSKEY, *PHUSKEY;
+
+typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
+
+WINSHLWAPI BOOL WINAPI ChrCmpIA(WORD,WORD);
+WINSHLWAPI BOOL WINAPI ChrCmpIW(WCHAR,WCHAR);
+#define IntlStrEqNA(pStr1, pStr2, nChar) IntlStrEqWorkerA(TRUE, pStr1, pStr2, nChar);
+#define IntlStrEqNW(pStr1, pStr2, nChar) IntlStrEqWorkerW(TRUE, pStr1, pStr2, nChar);
+#define IntlStrEqNIA(pStr1, pStr2, nChar) IntlStrEqWorkerA(FALSE, pStr1, pStr2, nChar);
+#define IntlStrEqNIW(pStr1, pStr2, nChar) IntlStrEqWorkerW(FALSE, pStr1, pStr2, nChar);
+WINSHLWAPI BOOL WINAPI IntlStrEqWorkerA(BOOL,LPCSTR,LPCSTR,int);
+WINSHLWAPI BOOL WINAPI IntlStrEqWorkerW(BOOL,LPCWSTR,LPCWSTR,int);
+WINSHLWAPI HRESULT WINAPI SHStrDupA(LPCSTR,LPWSTR*);
+WINSHLWAPI HRESULT WINAPI SHStrDupW(LPCWSTR,LPWSTR*);
+WINSHLWAPI LPSTR WINAPI StrCatA(LPSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrCatW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrCatBuffA(LPSTR,LPCSTR,int);
+WINSHLWAPI LPWSTR WINAPI StrCatBuffW(LPWSTR,LPCWSTR,int);
+WINSHLWAPI DWORD WINAPI StrCatChainW(LPWSTR,DWORD,DWORD,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrChrA(LPCSTR,WORD);
+WINSHLWAPI LPWSTR WINAPI StrChrW(LPCWSTR,WCHAR);
+WINSHLWAPI LPSTR WINAPI StrChrIA(LPCSTR,WORD);
+WINSHLWAPI LPWSTR WINAPI StrChrIW(LPCWSTR,WCHAR);
+#define StrCmpIA lstrcmpiA
+#define StrCmpA lstrcmpA
+#define StrCpyA lstrcpyA
+#define StrCpyNA lstrcpynA
+WINSHLWAPI int WINAPI StrCmpIW(LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI StrCmpW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPWSTR WINAPI StrCpyW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPWSTR WINAPI StrCpyNW(LPWSTR,LPCWSTR,int);
+WINSHLWAPI int WINAPI StrCmpNA(LPCSTR,LPCSTR,int);
+WINSHLWAPI int WINAPI StrCmpNW(LPCWSTR,LPCWSTR,int);
+WINSHLWAPI int WINAPI StrCmpNIA(LPCSTR,LPCSTR,int);
+WINSHLWAPI int WINAPI StrCmpNIW(LPCWSTR,LPCWSTR,int);
+WINSHLWAPI int WINAPI StrCSpnA(LPCSTR,LPCSTR);
+WINSHLWAPI int WINAPI StrCSpnW(LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI StrCSpnIA(LPCSTR,LPCSTR);
+WINSHLWAPI int WINAPI StrCSpnIW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrDupA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrDupW(LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrFormatByteSize64A(LONGLONG,LPSTR,UINT);
+WINSHLWAPI LPSTR WINAPI StrFormatByteSizeA(DWORD,LPSTR,UINT);
+WINSHLWAPI LPWSTR WINAPI StrFormatByteSizeW(LONGLONG,LPWSTR,UINT);
+WINSHLWAPI LPSTR WINAPI StrFormatKBSizeA(LONGLONG,LPSTR,UINT);
+WINSHLWAPI LPWSTR WINAPI StrFormatKBSizeW(LONGLONG,LPWSTR,UINT);
+WINSHLWAPI int WINAPI StrFromTimeIntervalA(LPSTR,UINT,DWORD,int);
+WINSHLWAPI int WINAPI StrFromTimeIntervalW(LPWSTR,UINT,DWORD,int);
+WINSHLWAPI BOOL WINAPI StrIsIntlEqualA(BOOL,LPCSTR,LPCSTR,int);
+WINSHLWAPI BOOL WINAPI StrIsIntlEqualW(BOOL,LPCWSTR,LPCWSTR,int);
+WINSHLWAPI LPSTR WINAPI StrNCatA(LPSTR,LPCSTR,int);
+WINSHLWAPI LPWSTR WINAPI StrNCatW(LPWSTR,LPCWSTR,int);
+WINSHLWAPI LPSTR WINAPI StrPBrkA(LPCSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrPBrkW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI StrRChrA(LPCSTR,LPCSTR,WORD);
+WINSHLWAPI LPWSTR WINAPI StrRChrW(LPCWSTR,LPCWSTR,WCHAR);
+WINSHLWAPI LPSTR WINAPI StrRChrIA(LPCSTR,LPCSTR,WORD);
+WINSHLWAPI LPWSTR WINAPI StrRChrIW(LPCWSTR,LPCWSTR,WCHAR);
+#ifndef __OBJC__
+WINSHLWAPI HRESULT WINAPI StrRetToBufA(LPSTRRET,LPCITEMIDLIST,LPSTR,UINT);
+WINSHLWAPI HRESULT WINAPI StrRetToBufW(LPSTRRET,LPCITEMIDLIST,LPWSTR,UINT);
+WINSHLWAPI HRESULT WINAPI StrRetToStrA(LPSTRRET,LPCITEMIDLIST,LPSTR*);
+WINSHLWAPI HRESULT WINAPI StrRetToStrW(LPSTRRET,LPCITEMIDLIST,LPWSTR*);
+#endif
+WINSHLWAPI LPSTR WINAPI StrRStrIA(LPCSTR,LPCSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrRStrIW(LPCWSTR,LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI StrSpnA(LPCSTR,LPCSTR);
+WINSHLWAPI int WINAPI StrSpnW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPTSTR WINAPI StrStrA(LPCSTR,LPCSTR);
+WINSHLWAPI LPSTR WINAPI StrStrIA(LPCSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI StrStrIW(LPCWSTR,LPCWSTR);
+WINSHLWAPI LPTSTR WINAPI StrStrW(LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI StrToIntA(LPCSTR);
+WINSHLWAPI int WINAPI StrToIntW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI StrToIntExA(LPCSTR,DWORD,int*);
+WINSHLWAPI BOOL WINAPI StrToIntExW(LPCWSTR,DWORD,int*);
+WINSHLWAPI BOOL WINAPI StrTrimA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI StrTrimW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathAddBackslashA(LPSTR);
+WINSHLWAPI LPWSTR WINAPI PathAddBackslashW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathAddExtensionA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathAddExtensionW(LPWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathAppendA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathAppendW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathBuildRootA(LPSTR,int);
+WINSHLWAPI LPWSTR WINAPI PathBuildRootW(LPWSTR,int);
+WINSHLWAPI BOOL WINAPI PathCanonicalizeA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathCanonicalizeW(LPWSTR,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathCombineA(LPSTR,LPCSTR,LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathCombineW(LPWSTR,LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI PathCommonPrefixA(LPCSTR,LPCSTR,LPSTR);
+WINSHLWAPI int WINAPI PathCommonPrefixW(LPCWSTR,LPCWSTR,LPWSTR);
+WINSHLWAPI BOOL WINAPI PathCompactPathA(HDC,LPSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathCompactPathW(HDC,LPWSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathCompactPathExA(LPSTR,LPCSTR,UINT,DWORD);
+WINSHLWAPI BOOL WINAPI PathCompactPathExW(LPWSTR,LPCWSTR,UINT,DWORD);
+WINSHLWAPI HRESULT WINAPI PathCreateFromUrlA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI PathCreateFromUrlW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI BOOL WINAPI PathFileExistsA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathFileExistsW(LPCWSTR);
+WINSHLWAPI LPTSTR WINAPI PathFindExtensionA(LPCWSTR);
+WINSHLWAPI LPTSTR WINAPI PathFindExtensionW(LPCSTR);
+WINSHLWAPI LPSTR WINAPI PathFindFileNameA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathFindFileNameW(LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathFindNextComponentA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathFindNextComponentW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathFindOnPathA(LPSTR,LPCSTR*);
+WINSHLWAPI BOOL WINAPI PathFindOnPathW(LPWSTR,LPCWSTR*);
+WINSHLWAPI LPCTSTR WINAPI PathFindSuffixArrayA(LPCSTR,LPCSTR*,int);
+WINSHLWAPI LPCTSTR WINAPI PathFindSuffixArrayW(LPCWSTR,LPCWSTR*,int);
+WINSHLWAPI LPSTR WINAPI PathGetArgsA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathGetArgsW(LPCWSTR);
+WINSHLWAPI UINT WINAPI PathGetCharTypeA(UCHAR);
+WINSHLWAPI UINT WINAPI PathGetCharTypeW(WCHAR);
+WINSHLWAPI int WINAPI PathGetDriveNumberA(LPCSTR);
+WINSHLWAPI int WINAPI PathGetDriveNumberW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsContentTypeA(LPCSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsContentTypeW(LPCWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsDirectoryA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsDirectoryEmptyA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsDirectoryEmptyW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsDirectoryW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsFileSpecA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsFileSpecW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsLFNFileSpecA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsLFNFileSpecW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsNetworkPathA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsNetworkPathW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsPrefixA(LPCSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsPrefixW(LPCWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsRelativeA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsRelativeW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsRootA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsRootW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsSameRootA(LPCSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsSameRootW(LPCWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsSystemFolderA(LPCSTR,DWORD);
+WINSHLWAPI BOOL WINAPI PathIsSystemFolderW(LPCWSTR,DWORD);
+WINSHLWAPI BOOL WINAPI PathIsUNCA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCServerA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCServerShareA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCServerShareW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCServerW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsUNCW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathIsURLA(LPCSTR);
+WINSHLWAPI BOOL WINAPI PathIsURLW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathMakePrettyA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathMakePrettyW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathMakeSystemFolderA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathMakeSystemFolderW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathMatchSpecA(LPCSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathMatchSpecW(LPCWSTR,LPCWSTR);
+WINSHLWAPI int WINAPI PathParseIconLocationA(LPSTR);
+WINSHLWAPI int WINAPI PathParseIconLocationW(LPWSTR);
+WINSHLWAPI void WINAPI PathQuoteSpacesA(LPSTR);
+WINSHLWAPI void WINAPI PathQuoteSpacesW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathRelativePathToA(LPSTR,LPCSTR,DWORD,LPCWSTR,DWORD);
+WINSHLWAPI BOOL WINAPI PathRelativePathToW(LPWSTR,LPCWSTR,DWORD,LPCSTR,DWORD);
+WINSHLWAPI void WINAPI PathRemoveArgsA(LPSTR);
+WINSHLWAPI void WINAPI PathRemoveArgsW(LPWSTR);
+WINSHLWAPI LPSTR WINAPI PathRemoveBackslashA(LPSTR);
+WINSHLWAPI LPWSTR WINAPI PathRemoveBackslashW(LPWSTR);
+WINSHLWAPI void WINAPI PathRemoveBlanksA(LPSTR);
+WINSHLWAPI void WINAPI PathRemoveBlanksW(LPWSTR);
+WINSHLWAPI void WINAPI PathRemoveExtensionA(LPSTR);
+WINSHLWAPI void WINAPI PathRemoveExtensionW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathRemoveFileSpecA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathRemoveFileSpecW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathRenameExtensionA(LPSTR,LPCSTR);
+WINSHLWAPI BOOL WINAPI PathRenameExtensionW(LPWSTR,LPCWSTR);
+WINSHLWAPI BOOL WINAPI PathSearchAndQualifyA(LPCSTR,LPSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathSearchAndQualifyW(LPCWSTR,LPWSTR,UINT);
+WINSHLWAPI void WINAPI PathSetDlgItemPathA(HWND,int,LPCSTR);
+WINSHLWAPI void WINAPI PathSetDlgItemPathW(HWND,int,LPCWSTR);
+WINSHLWAPI LPSTR WINAPI PathSkipRootA(LPCSTR);
+WINSHLWAPI LPWSTR WINAPI PathSkipRootW(LPCWSTR);
+WINSHLWAPI void WINAPI PathStripPathA(LPSTR);
+WINSHLWAPI void WINAPI PathStripPathW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathStripToRootA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathStripToRootW(LPWSTR);
+WINSHLWAPI void WINAPI PathUndecorateA(LPSTR);
+WINSHLWAPI void WINAPI PathUndecorateW(LPWSTR);
+WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsA(LPCSTR,LPSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR,LPWSTR,UINT);
+WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderA(LPSTR);
+WINSHLWAPI BOOL WINAPI PathUnmakeSystemFolderW(LPWSTR);
+WINSHLWAPI void WINAPI PathUnquoteSpacesA(LPSTR);
+WINSHLWAPI void WINAPI PathUnquoteSpacesW(LPWSTR);
+WINSHLWAPI HRESULT WINAPI SHAutoComplete(HWND,DWORD);
+#ifndef __OBJC__
+WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileA(LPCSTR,DWORD,struct IStream**);
+WINSHLWAPI HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR,DWORD,struct IStream**);
+WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2A(HKEY,LPCSTR,LPCSTR,DWORD);
+WINSHLWAPI struct IStream* WINAPI SHOpenRegStream2W(HKEY,LPCWSTR,LPCWSTR,DWORD);
+WINSHLWAPI struct IStream* WINAPI SHOpenRegStreamA(HKEY,LPCSTR,LPCSTR,DWORD);
+WINSHLWAPI struct IStream* WINAPI SHOpenRegStreamW(HKEY,LPCWSTR,LPCWSTR,DWORD);
+#endif
+WINSHLWAPI BOOL WINAPI SHCreateThread(LPTHREAD_START_ROUTINE,void*,DWORD,LPTHREAD_START_ROUTINE);
+WINSHLWAPI DWORD WINAPI SHCopyKeyA(HKEY,LPCSTR,HKEY,DWORD);
+WINSHLWAPI DWORD WINAPI SHCopyKeyW(HKEY,LPCWSTR,HKEY,DWORD);
+WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyA(HKEY,LPCSTR);
+WINSHLWAPI DWORD WINAPI SHDeleteEmptyKeyW(HKEY,LPCWSTR);
+WINSHLWAPI DWORD WINAPI SHDeleteKeyA(HKEY,LPCSTR);
+WINSHLWAPI DWORD WINAPI SHDeleteKeyW(HKEY,LPCWSTR);
+WINSHLWAPI DWORD WINAPI SHEnumKeyExA(HKEY,DWORD,LPSTR,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHEnumKeyExW(HKEY,DWORD,LPWSTR,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHQueryInfoKeyA(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHQueryInfoKeyW(HKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHQueryValueExA(HKEY,LPCSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHQueryValueExW(HKEY,LPCWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+#ifndef __OBJC__
+WINSHLWAPI HRESULT WINAPI SHGetThreadRef(IUnknown**);
+WINSHLWAPI HRESULT WINAPI SHSetThreadRef(IUnknown*);
+WINSHLWAPI BOOL WINAPI SHSkipJunction(IBindCtx*,const CLSID*);
+#endif
+WINSHLWAPI DWORD WINAPI SHEnumValueA(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHEnumValueW(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHGetValueA(HKEY,LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHGetValueW(HKEY,LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHSetValueA(HKEY,LPCSTR,LPCSTR,DWORD,LPCVOID,DWORD);
+WINSHLWAPI DWORD WINAPI SHSetValueW(HKEY,LPCWSTR,LPCWSTR,DWORD,LPCVOID,DWORD);
+WINSHLWAPI DWORD WINAPI SHDeleteValueA(HKEY,LPCSTR,LPCSTR);
+WINSHLWAPI DWORD WINAPI SHDeleteValueW(HKEY,LPCWSTR,LPCWSTR);
+WINSHLWAPI HRESULT WINAPI AssocCreate(CLSID,const IID* const,LPVOID*);
+WINSHLWAPI HRESULT WINAPI AssocQueryKeyA(ASSOCF,ASSOCKEY,LPCSTR,LPCSTR,HKEY*);
+WINSHLWAPI HRESULT WINAPI AssocQueryKeyW(ASSOCF,ASSOCKEY,LPCWSTR,LPCWSTR,HKEY*);
+WINSHLWAPI HRESULT WINAPI AssocQueryStringA(ASSOCF,ASSOCSTR,LPCSTR,LPCSTR,LPSTR,DWORD*);
+WINSHLWAPI HRESULT WINAPI AssocQueryStringByKeyA(ASSOCF,ASSOCSTR,HKEY,LPCSTR,LPSTR,DWORD*);
+WINSHLWAPI HRESULT WINAPI AssocQueryStringByKeyW(ASSOCF,ASSOCSTR,HKEY,LPCWSTR,LPWSTR,DWORD*);
+WINSHLWAPI HRESULT WINAPI AssocQueryStringW(ASSOCF,ASSOCSTR,LPCWSTR,LPCWSTR,LPWSTR,DWORD*);
+
+WINSHLWAPI HRESULT WINAPI UrlApplySchemeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlApplySchemeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCanonicalizeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCanonicalizeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCombineA(LPCSTR,LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCombineW(LPCWSTR,LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI int WINAPI UrlCompareA(LPCSTR,LPCSTR,BOOL);
+WINSHLWAPI int WINAPI UrlCompareW(LPCWSTR,LPCWSTR,BOOL);
+WINSHLWAPI HRESULT WINAPI UrlCreateFromPathA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlCreateFromPathW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlEscapeA(LPCSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlEscapeW(LPCWSTR,LPWSTR,LPDWORD,DWORD);
+WINSHLWAPI LPCTSTR WINAPI UrlGetLocationA(LPCSTR);
+WINSHLWAPI LPCTSTR WINAPI UrlGetLocationW(LPCWSTR);
+WINSHLWAPI HRESULT WINAPI UrlGetPartA(LPCSTR,LPSTR,LPDWORD,DWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlGetPartW(LPCWSTR,LPWSTR,LPDWORD,DWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlHashA(LPCSTR,LPBYTE,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlHashW(LPCWSTR,LPBYTE,DWORD);
+WINSHLWAPI BOOL WINAPI UrlIsA(LPCSTR,URLIS);
+WINSHLWAPI BOOL WINAPI UrlIsW(LPCWSTR,URLIS);
+#define UrlIsFileUrlA(pszURL) UrlIsA(pzURL, URLIS_FILEURL)
+#define UrlIsFileUrlW(pszURL) UrlIsW(pszURL, URLIS_FILEURL)
+WINSHLWAPI BOOL WINAPI UrlIsNoHistoryA(LPCSTR);
+WINSHLWAPI BOOL WINAPI UrlIsNoHistoryW(LPCWSTR);
+WINSHLWAPI BOOL WINAPI UrlIsOpaqueA(LPCSTR);
+WINSHLWAPI BOOL WINAPI UrlIsOpaqueW(LPCWSTR);
+WINSHLWAPI HRESULT WINAPI UrlUnescapeA(LPSTR,LPSTR,LPDWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI UrlUnescapeW(LPWSTR,LPWSTR,LPDWORD,DWORD);
+#define UrlUnescapeInPlaceA(pszUrl,dwFlags )\
+ UrlUnescapeA(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE)
+#define UrlUnescapeInPlaceW(pszUrl,dwFlags )\
+ UrlUnescapeW(pszUrl, NULL, NULL, dwFlags | URL_UNESCAPE_INPLACE)
+WINSHLWAPI DWORD WINAPI SHRegCloseUSKey(HUSKEY);
+WINSHLWAPI LONG WINAPI SHRegCreateUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+WINSHLWAPI LONG WINAPI SHRegCreateUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD);
+WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegDeleteEmptyUSKeyW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegDeleteUSValueA(HUSKEY,LPCSTR,SHREGDEL_FLAGS);
+WINSHLWAPI LONG WINAPI SHRegDeleteUSValueW(HUSKEY,LPCWSTR,SHREGDEL_FLAGS);
+WINSHLWAPI HKEY WINAPI SHRegDuplicateHKey(HKEY);
+WINSHLWAPI DWORD WINAPI SHRegEnumUSKeyA(HUSKEY,DWORD,LPSTR,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI DWORD WINAPI SHRegEnumUSKeyW(HUSKEY,DWORD,LPWSTR,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI DWORD WINAPI SHRegEnumUSValueA(HUSKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI DWORD WINAPI SHRegEnumUSValueW(HUSKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPVOID,LPDWORD,SHREGENUM_FLAGS);
+WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueA(LPCSTR,LPCSTR,BOOL,BOOL);
+WINSHLWAPI BOOL WINAPI SHRegGetBoolUSValueW(LPCWSTR,LPCWSTR,BOOL,BOOL);
+WINSHLWAPI DWORD WINAPI SHRegGetPathA(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD);
+WINSHLWAPI DWORD WINAPI SHRegGetPathW(HKEY,LPCWSTR,LPCWSTR,LPWSTR,DWORD);
+WINSHLWAPI LONG WINAPI SHRegGetUSValueA(LPCSTR,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+WINSHLWAPI LONG WINAPI SHRegGetUSValueW(LPCWSTR,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+WINSHLWAPI LONG WINAPI SHRegOpenUSKeyA(LPCSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+WINSHLWAPI LONG WINAPI SHRegOpenUSKeyW(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL);
+WINSHLWAPI DWORD WINAPI SHRegQueryInfoUSKeyA(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINSHLWAPI DWORD WINAPI SHRegQueryInfoUSKeyW(HUSKEY,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
+WINSHLWAPI LONG WINAPI SHRegQueryUSValueA(HUSKEY,LPCSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+WINSHLWAPI LONG WINAPI SHRegQueryUSValueW(HUSKEY,LPCWSTR,LPDWORD,LPVOID,LPDWORD,BOOL,LPVOID,DWORD);
+WINSHLWAPI DWORD WINAPI SHRegSetPathA(HKEY,LPCSTR,LPCSTR,LPCSTR,DWORD);
+WINSHLWAPI DWORD WINAPI SHRegSetPathW(HKEY,LPCWSTR,LPCWSTR,LPCWSTR,DWORD);
+WINSHLWAPI LONG WINAPI SHRegSetUSValueA(LPCSTR,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
+WINSHLWAPI LONG WINAPI SHRegSetUSValueW(LPCWSTR,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+WINSHLWAPI LONG WINAPI SHRegWriteUSValueA(HUSKEY,LPCSTR,DWORD,LPVOID,DWORD,DWORD);
+WINSHLWAPI LONG WINAPI SHRegWriteUSValueW(HUSKEY,LPCWSTR,DWORD,LPVOID,DWORD,DWORD);
+WINSHLWAPI HRESULT WINAPI HashData(LPBYTE,DWORD,LPBYTE,DWORD);
+WINSHLWAPI HPALETTE WINAPI SHCreateShellPalette(HDC);
+WINSHLWAPI COLORREF WINAPI ColorHLSToRGB(WORD,WORD,WORD);
+WINSHLWAPI COLORREF WINAPI ColorAdjustLuma(COLORREF,int,BOOL);
+WINSHLWAPI void WINAPI ColorRGBToHLS(COLORREF,WORD*,WORD*,WORD*);
+WINSHLWAPI int __cdecl wnsprintfA(LPSTR,int,LPCSTR,...);
+WINSHLWAPI int __cdecl wnsprintfW(LPWSTR,int,LPCWSTR,...);
+WINSHLWAPI int WINAPI wvnsprintfA(LPSTR,int,LPCSTR,va_list);
+WINSHLWAPI int WINAPI wvnsprintfW(LPWSTR,int,LPCWSTR,va_list);
+
+HINSTANCE WINAPI MLLoadLibraryA(LPCSTR,HANDLE,DWORD,LPCSTR,BOOL);
+HINSTANCE WINAPI MLLoadLibraryW(LPCWSTR,HANDLE,DWORD,LPCWSTR,BOOL);
+
+HRESULT WINAPI DllInstall(BOOL,LPCWSTR);
+
+#ifdef UNICODE
+#define ChrCmpI ChrCmpIW
+#define IntlStrEqN IntlStrEqNW
+#define IntlStrEqNI IntlStrEqNIW
+#define IntlStrEqWorker IntlStrEqWorkerW
+#define SHStrDup SHStrDupW
+#define StrCat StrCatW
+#define StrCatBuff StrCatBuffW
+#define StrChr StrChrW
+#define StrChrI StrChrIW
+#define StrCmp StrCmpW
+#define StrCmpI StrCmpIW
+#define StrCmpNI StrCmpNIW
+#define StrCmpN StrCmpNW
+#define StrCpyN StrCpyNW
+#define StrCpy StrCpyW
+#define StrCSpnI StrCSpnIW
+#define StrCSpn StrCSpnW
+#define StrDup StrDupW
+#define StrFormatByteSize StrFormatByteSizeW
+#define StrFormatKBSize StrFormatKBSizeW
+#define StrFromTimeInterval StrFromTimeIntervalW
+#define StrIsIntlEqual StrIsIntlEqualW
+#define StrNCat StrNCatW
+#define StrPBrk StrPBrkW
+#define StrRChr StrRChrW
+#define StrRChrI StrRChrIW
+#ifndef __OBJC__
+#define StrRetToBuf StrRetToBufW
+#define StrRetToStr StrRetToStrW
+#endif
+#define StrRStrI StrRStrIW
+#define StrSpn StrSpnW
+#define StrStrI StrStrIW
+#define StrStr StrStrW
+#define StrToInt StrToIntW
+#define StrToIntEx StrToIntExW
+#define StrTrim StrTrimW
+#define PathAddBackslash PathAddBackslashW
+#define PathAddExtension PathAddExtensionW
+#define PathAppend PathAppendW
+#define PathBuildRoot PathBuildRootW
+#define PathCanonicalize PathCanonicalizeW
+#define PathCombine PathCombineW
+#define PathCommonPrefix PathCommonPrefixW
+#define PathCompactPath PathCompactPathW
+#define PathCompactPathEx PathCompactPathExW
+#define PathCreateFromUrl PathCreateFromUrlW
+#define PathFileExists PathFileExistsW
+#define PathFindExtension PathFindExtensionW
+#define PathFindFileName PathFindFileNameW
+#define PathFindNextComponent PathFindNextComponentW
+#define PathFindOnPath PathFindOnPathW
+#define PathFindSuffixArray PathFindSuffixArrayW
+#define PathGetArgs PathGetArgsW
+#define PathGetCharType PathGetCharTypeW
+#define PathGetDriveNumber PathGetDriveNumberW
+#define PathIsContentType PathIsContentTypeW
+#define PathIsDirectoryEmpty PathIsDirectoryEmptyW
+#define PathIsDirectory PathIsDirectoryW
+#define PathIsFileSpec PathIsFileSpecW
+#define PathIsLFNFileSpec PathIsLFNFileSpecW
+#define PathIsNetworkPath PathIsNetworkPathW
+#define PathIsPrefix PathIsPrefixW
+#define PathIsRelative PathIsRelativeW
+#define PathIsRoot PathIsRootW
+#define PathIsSameRoot PathIsSameRootW
+#define PathIsSystemFolder PathIsSystemFolderW
+#define PathIsUNCServerShare PathIsUNCServerShareW
+#define PathIsUNCServer PathIsUNCServerW
+#define PathIsUNC PathIsUNCW
+#define PathIsURL PathIsURLW
+#define PathMakePretty PathMakePrettyW
+#define PathMakeSystemFolder PathMakeSystemFolderW
+#define PathMatchSpec PathMatchSpecW
+#define PathParseIconLocation PathParseIconLocationW
+#define PathQuoteSpaces PathQuoteSpacesW
+#define PathRelativePathTo PathRelativePathToW
+#define PathRemoveArgs PathRemoveArgsW
+#define PathRemoveBackslash PathRemoveBackslashW
+#define PathRemoveBlanks PathRemoveBlanksW
+#define PathRemoveExtension PathRemoveExtensionW
+#define PathRemoveFileSpec PathRemoveFileSpecW
+#define PathRenameExtension PathRenameExtensionW
+#define PathSearchAndQualify PathSearchAndQualifyW
+#define PathSetDlgItemPath PathSetDlgItemPathW
+#define PathSkipRoot PathSkipRootW
+#define PathStripPath PathStripPathW
+#define PathStripToRoot PathStripToRootW
+#define PathUndecorate PathUndecorateW
+#define PathUnExpandEnvStrings PathUnExpandEnvStringsW
+#define PathUnmakeSystemFolder PathUnmakeSystemFolderW
+#define PathUnquoteSpaces PathUnquoteSpacesW
+#ifndef __OBJC__
+#define SHCreateStreamOnFile SHCreateStreamOnFileW
+#define SHOpenRegStream SHOpenRegStreamW
+#define SHOpenRegStream2 SHOpenRegStream2W
+#endif
+#define SHCopyKey SHCopyKeyW
+#define SHDeleteEmptyKey SHDeleteEmptyKeyW
+#define SHDeleteKey SHDeleteKeyW
+#define SHEnumKeyEx SHEnumKeyExW
+#define SHQueryInfoKey SHRegQueryInfoKeyW
+#define SHQueryValueEx SHQueryValueExW
+#define SHEnumValue SHEnumValueW
+#define SHGetValue SHGetValueW
+#define SHSetValue SHSetValueW
+#define SHDeleteValue SHDeleteValueW
+#define AssocQueryKey AssocQueryKeyW
+#define AssocQueryStringByKey AssocQueryStringByKeyW
+#define AssocQueryString AssocQueryStringW
+#define UrlApplyScheme UrlApplySchemeW
+#define UrlCanonicalize UrlCanonicalizeW
+#define UrlCombine UrlCombineW
+#define UrlCompare UrlCompareW
+#define UrlCreateFromPath UrlCreateFromPathW
+#define UrlEscape UrlEscapeW
+#define UrlGetLocation UrlGetLocationW
+#define UrlGetPart UrlGetPartW
+#define UrlHash UrlHashW
+#define UrlIs UrlIsW
+#define UrlIsFileUrl UrlIsFileUrlW
+#define UrlIsNoHistory UrlIsNoHistoryW
+#define UrlIsOpaque UrlIsOpaqueW
+#define UrlUnescape UrlUnescapeW
+#define UrlUnescapeInPlace UrlUnescapeInPlaceW
+#define SHRegCreateUSKey SHRegCreateUSKeyW
+#define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyW
+#define SHRegDeleteUSValue SHRegDeleteUSValueW
+#define SHRegEnumUSKey SHRegEnumUSKeyW
+#define SHRegEnumUSValue SHRegEnumUSValueW
+#define SHRegGetBoolUSValue SHRegGetBoolUSValueW
+#define SHRegGetPath SHRegGetPathW
+#define SHRegGetUSValue SHRegGetUSValueW
+#define SHRegOpenUSKey SHRegOpenUSKeyW
+#define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyW
+#define SHRegQueryUSValue SHRegQueryUSValueW
+#define SHRegSetPath SHRegSetPathW
+#define SHRegSetUSValue SHRegSetUSValueW
+#define SHRegWriteUSValue SHRegWriteUSValueW
+#define wnsprintf wnsprintfW
+#define wvnsprintf wvnsprintfW
+#else /* UNICODE */
+#define ChrCmpI ChrCmpIA
+#define IntlStrEqN IntlStrEqNA
+#define IntlStrEqNI IntlStrEqNIA
+#define IntlStrEqWorker IntlStrEqWorkerA
+#define SHStrDup SHStrDupA
+#define StrCat lstrcatA
+#define StrCatBuff StrCatBuffA
+#define StrChr StrChrA
+#define StrChrI StrChrIA
+#define StrCmp lstrcmpA
+#define StrCmpI lstrcmpiA
+#define StrCmpNI StrCmpNIA
+#define StrCmpN StrCmpNA
+#define StrCpyN lstrcpynA
+#define StrCpy lstrcpyA
+#define StrCSpnI StrCSpnIA
+#define StrCSpn StrCSpnA
+#define StrDup StrDupA
+#define StrFormatByteSize StrFormatByteSizeA
+#define StrFormatKBSize StrFormatKBSizeA
+#define StrFromTimeInterval StrFromTimeIntervalA
+#define StrIsIntlEqual StrIsIntlEqualA
+#define StrNCat StrNCatA
+#define StrPBrk StrPBrkA
+#define StrRChr StrRChrA
+#define StrRChrI StrRChrIA
+#ifndef __OBJC__
+#define StrRetToBuf StrRetToBufA
+#define StrRetToStr StrRetToStrA
+#endif
+#define StrRStrI StrRStrIA
+#define StrSpn StrSpnA
+#define StrStrI StrStrIA
+#define StrStr StrStrA
+#define StrToInt StrToIntA
+#define StrToIntEx StrToIntExA
+#define StrTrim StrTrimA
+#define PathAddBackslash PathAddBackslashA
+#define PathAddExtension PathAddExtensionA
+#define PathAppend PathAppendA
+#define PathBuildRoot PathBuildRootA
+#define PathCanonicalize PathCanonicalizeA
+#define PathCombine PathCombineA
+#define PathCommonPrefix PathCommonPrefixA
+#define PathCompactPath PathCompactPathA
+#define PathCompactPathEx PathCompactPathExA
+#define PathCreateFromUrl PathCreateFromUrlA
+#define PathFileExists PathFileExistsA
+#define PathFindExtension PathFindExtensionA
+#define PathFindFileName PathFindFileNameA
+#define PathFindNextComponent PathFindNextComponentA
+#define PathFindOnPath PathFindOnPathA
+#define PathFindSuffixArray PathFindSuffixArrayA
+#define PathGetArgs PathGetArgsA
+#define PathGetCharType PathGetCharTypeA
+#define PathGetDriveNumber PathGetDriveNumberA
+#define PathIsContentType PathIsContentTypeA
+#define PathIsDirectoryEmpty PathIsDirectoryEmptyA
+#define PathIsDirectory PathIsDirectoryA
+#define PathIsFileSpec PathIsFileSpecA
+#define PathIsLFNFileSpec PathIsLFNFileSpecA
+#define PathIsNetworkPath PathIsNetworkPathA
+#define PathIsPrefix PathIsPrefixA
+#define PathIsRelative PathIsRelativeA
+#define PathIsRoot PathIsRootA
+#define PathIsSameRoot PathIsSameRootA
+#define PathIsSystemFolder PathIsSystemFolderA
+#define PathIsUNCServerShare PathIsUNCServerShareA
+#define PathIsUNCServer PathIsUNCServerA
+#define PathIsUNC PathIsUNCA
+#define PathIsURL PathIsURLA
+#define PathMakePretty PathMakePrettyA
+#define PathMakeSystemFolder PathMakeSystemFolderA
+#define PathMatchSpec PathMatchSpecA
+#define PathParseIconLocation PathParseIconLocationA
+#define PathQuoteSpaces PathQuoteSpacesA
+#define PathRelativePathTo PathRelativePathToA
+#define PathRemoveArgs PathRemoveArgsA
+#define PathRemoveBackslash PathRemoveBackslashA
+#define PathRemoveBlanks PathRemoveBlanksA
+#define PathRemoveExtension PathRemoveExtensionA
+#define PathRemoveFileSpec PathRemoveFileSpecA
+#define PathRenameExtension PathRenameExtensionA
+#define PathSearchAndQualify PathSearchAndQualifyA
+#define PathSetDlgItemPath PathSetDlgItemPathA
+#define PathSkipRoot PathSkipRootA
+#define PathStripPath PathStripPathA
+#define PathStripToRoot PathStripToRootA
+#define PathUndecorate PathUndecorateA
+#define PathUnExpandEnvStrings PathUnExpandEnvStringsA
+#define PathUnmakeSystemFolder PathUnmakeSystemFolderA
+#define PathUnquoteSpaces PathUnquoteSpacesA
+#ifndef __OBJC__
+#define SHCreateStreamOnFile SHCreateStreamOnFileA
+#define SHOpenRegStream SHOpenRegStreamA
+#define SHOpenRegStream2 SHOpenRegStream2A
+#endif
+#define SHCopyKey SHCopyKeyA
+#define SHDeleteEmptyKey SHDeleteEmptyKeyA
+#define SHDeleteKey SHDeleteKeyA
+#define SHEnumKeyEx SHEnumKeyExA
+#define SHQueryInfoKey SHRegQueryInfoKeyA
+#define SHQueryValueEx SHQueryValueExA
+#define SHEnumValue SHEnumValueA
+#define SHGetValue SHGetValueA
+#define SHSetValue SHSetValueA
+#define SHDeleteValue SHDeleteValueA
+#define AssocQueryKey AssocQueryKeyA
+#define AssocQueryStringByKey AssocQueryStringByKeyA
+#define AssocQueryString AssocQueryStringA
+#define UrlApplyScheme UrlApplySchemeA
+#define UrlCanonicalize UrlCanonicalizeA
+#define UrlCombine UrlCombineA
+#define UrlCompare UrlCompareA
+#define UrlCreateFromPath UrlCreateFromPathA
+#define UrlEscape UrlEscapeA
+#define UrlGetLocation UrlGetLocationA
+#define UrlGetPart UrlGetPartA
+#define UrlHash UrlHashA
+#define UrlIs UrlIsA
+#define UrlIsFileUrl UrlIsFileUrl
+#define UrlIsNoHistory UrlIsNoHistoryA
+#define UrlIsOpaque UrlIsOpaqueA
+#define UrlUnescape UrlUnescapeA
+#define UrlUnescapeInPlace UrlUnescapeInPlaceA
+#define SHRegCreateUSKey SHRegCreateUSKeyA
+#define SHRegDeleteEmptyUSKey SHRegDeleteEmptyUSKeyA
+#define SHRegDeleteUSValue SHRegDeleteUSValueA
+#define SHRegEnumUSKey SHRegEnumUSKeyA
+#define SHRegEnumUSValue SHRegEnumUSValueA
+#define SHRegGetBoolUSValue SHRegGetBoolUSValueA
+#define SHRegGetPath SHRegGetPathA
+#define SHRegGetUSValue SHRegGetUSValueA
+#define SHRegOpenUSKey SHRegOpenUSKeyA
+#define SHRegQueryInfoUSKey SHRegQueryInfoUSKeyA
+#define SHRegQueryUSValue SHRegQueryUSValueA
+#define SHRegSetPath SHRegSetPathA
+#define SHRegSetUSValue SHRegSetUSValueA
+#define SHRegWriteUSValue SHRegWriteUSValueA
+#define wnsprintf wnsprintfA
+#define wvnsprintf wvnsprintfA
+#endif /* UNICODE */
+
+#define StrToLong StrToInt
+
+#endif /* !RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* ! defined _SHLWAPI_H */
diff --git a/winsup/w32api/lib/shlwapi.def b/winsup/w32api/lib/shlwapi.def
new file mode 100644
index 000000000..e29f72f34
--- /dev/null
+++ b/winsup/w32api/lib/shlwapi.def
@@ -0,0 +1,296 @@
+LIBRARY SHLWAPI.DLL
+EXPORTS
+AssocCreate@24
+AssocQueryKeyA@20
+AssocQueryKeyW@20
+AssocQueryStringA@24
+AssocQueryStringByKeyA@24
+AssocQueryStringByKeyW@24
+AssocQueryStringW@24
+ChrCmpIA@8
+ChrCmpIW@8
+ColorAdjustLuma@12
+ColorHLSToRGB@12
+ColorRGBToHLS@16
+GetMenuPosFromID@8
+HashData@16
+IntlStrEqWorkerA@16
+IntlStrEqWorkerW@16
+PathAddBackslashA@4
+PathAddBackslashW@4
+PathAddExtensionA@8
+PathAddExtensionW@8
+PathAppendA@8
+PathAppendW@8
+PathBuildRootA@8
+PathBuildRootW@8
+PathCanonicalizeA@8
+PathCanonicalizeW@8
+PathCombineA@12
+PathCombineW@12
+PathCommonPrefixA@12
+PathCommonPrefixW@12
+PathCompactPathA@12
+PathCompactPathExA@16
+PathCompactPathExW@16
+PathCompactPathW@12
+PathCreateFromUrlA@16
+PathCreateFromUrlW@16
+PathFileExistsA@4
+PathFileExistsW@4
+PathFindExtensionA@4
+PathFindExtensionW@4
+PathFindFileNameA@4
+PathFindFileNameW@4
+PathFindNextComponentA@4
+PathFindNextComponentW@4
+PathFindOnPathA@8
+PathFindOnPathW@8
+PathFindSuffixArrayA@12
+PathFindSuffixArrayW@12
+PathGetArgsA@4
+PathGetArgsW@4
+PathGetCharTypeA@4
+PathGetCharTypeW@4
+PathGetDriveNumberA@4
+PathGetDriveNumberW@4
+PathIsContentTypeA@8
+PathIsContentTypeW@8
+PathIsDirectoryA@4
+PathIsDirectoryEmptyA@4
+PathIsDirectoryEmptyW@4
+PathIsDirectoryW@4
+PathIsFileSpecA@4
+PathIsFileSpecW@4
+PathIsLFNFileSpecA@4
+PathIsLFNFileSpecW@4
+PathIsNetworkPathA@4
+PathIsNetworkPathW@4
+PathIsPrefixA@8
+PathIsPrefixW@8
+PathIsRelativeA@4
+PathIsRelativeW@4
+PathIsRootA@4
+PathIsRootW@4
+PathIsSameRootA@8
+PathIsSameRootW@8
+PathIsSystemFolderA@8
+PathIsSystemFolderW@8
+PathIsUNCA@4
+PathIsUNCServerA@4
+PathIsUNCServerShareA@4
+PathIsUNCServerShareW@4
+PathIsUNCServerW@4
+PathIsUNCW@4
+PathIsURLA@4
+PathIsURLW@4
+PathMakePrettyA@4
+PathMakePrettyW@4
+PathMakeSystemFolderA@4
+PathMakeSystemFolderW@4
+PathMatchSpecA@8
+PathMatchSpecW@8
+PathParseIconLocationA@4
+PathParseIconLocationW@4
+PathQuoteSpacesA@4
+PathQuoteSpacesW@4
+PathRelativePathToA@20
+PathRelativePathToW@20
+PathRemoveArgsA@4
+PathRemoveArgsW@4
+PathRemoveBackslashA@4
+PathRemoveBackslashW@4
+PathRemoveBlanksA@4
+PathRemoveBlanksW@4
+PathRemoveExtensionA@4
+PathRemoveExtensionW@4
+PathRemoveFileSpecA@4
+PathRemoveFileSpecW@4
+PathRenameExtensionA@8
+PathRenameExtensionW@8
+PathSearchAndQualifyA@12
+PathSearchAndQualifyW@12
+PathSetDlgItemPathA@12
+PathSetDlgItemPathW@12
+PathSkipRootA@4
+PathSkipRootW@4
+PathStripPathA@4
+PathStripPathW@4
+PathStripToRootA@4
+PathStripToRootW@4
+PathUnExpandEnvStringsA@12
+PathUnExpandEnvStringsW@12
+PathUndecorateA@4
+PathUndecorateW@4
+PathUnmakeSystemFolderA@4
+PathUnmakeSystemFolderW@4
+PathUnquoteSpacesA@4
+PathUnquoteSpacesW@4
+SHAutoComplete@8
+SHCopyKeyA@16
+SHCopyKeyW@16
+SHCreateShellPalette@4
+SHCreateStreamOnFileA@12
+SHCreateStreamOnFileEx@24
+SHCreateStreamOnFileW@12
+SHCreateStreamWrapper@16
+SHCreateThread@16
+SHDeleteEmptyKeyA@8
+SHDeleteEmptyKeyW@8
+SHDeleteKeyA@8
+SHDeleteKeyW@8
+SHDeleteOrphanKeyA@8
+SHDeleteOrphanKeyW@8
+SHDeleteValueA@12
+SHDeleteValueW@12
+SHEnumKeyExA@16
+SHEnumKeyExW@16
+SHEnumValueA@28
+SHEnumValueW@28
+SHGetInverseCMAP@8
+SHGetThreadRef@4
+SHGetValueA@24
+SHGetValueW@24
+SHIsLowMemoryMachine@4
+SHLoadIndirectString@16
+SHOpenRegStream2A@16
+SHOpenRegStream2W@16
+SHOpenRegStreamA@16
+SHOpenRegStreamW@16
+SHQueryInfoKeyA@20
+SHQueryInfoKeyW@20
+SHQueryValueExA@24
+SHQueryValueExW@24
+SHRegCloseUSKey@4
+SHRegCreateUSKeyA@20
+SHRegCreateUSKeyW@20
+SHRegDeleteEmptyUSKeyA@12
+SHRegDeleteEmptyUSKeyW@12
+SHRegDeleteUSValueA@12
+SHRegDeleteUSValueW@12
+SHRegDuplicateHKey@4
+SHRegEnumUSKeyA@20
+SHRegEnumUSKeyW@20
+SHRegEnumUSValueA@32
+SHRegEnumUSValueW@32
+SHRegGetBoolUSValueA@16
+SHRegGetBoolUSValueW@16
+SHRegGetPathA@20
+SHRegGetPathW@20
+SHRegGetUSValueA@32
+SHRegGetUSValueW@32
+SHRegOpenUSKeyA@20
+SHRegOpenUSKeyW@20
+SHRegQueryInfoUSKeyA@24
+SHRegQueryInfoUSKeyW@24
+SHRegQueryUSValueA@32
+SHRegQueryUSValueW@32
+SHRegSetPathA@20
+SHRegSetPathW@20
+SHRegSetUSValueA@24
+SHRegSetUSValueW@24
+SHRegWriteUSValueA@24
+SHRegWriteUSValueW@24
+SHRegisterValidateTemplate@8
+SHReleaseThreadRef@0
+SHSetThreadRef@4
+SHSetValueA@24
+SHSetValueW@24
+SHSkipJunction@8
+SHStrDupA@8
+SHStrDupW@8
+StrCSpnA@8
+StrCSpnIA@8
+StrCSpnIW@8
+StrCSpnW@8
+StrCatBuffA@12
+StrCatBuffW@12
+StrCatChainW@16
+StrCatW@8
+StrChrA@8
+StrChrIA@8
+StrChrIW@8
+StrChrNIW@12
+StrChrNW@12
+StrChrW@8
+StrCmpIW@8
+StrCmpLogicalW@8
+StrCmpNA@12
+StrCmpNIA@12
+StrCmpNIW@12
+StrCmpNW@12
+StrCmpW@8
+StrCpyNW@12
+StrCpyW@8
+StrDupA@4
+StrDupW@4
+StrFormatByteSize64A@16
+StrFormatByteSizeA@12
+StrFormatByteSizeW@16
+StrFormatKBSizeA@16
+StrFormatKBSizeW@16
+StrFromTimeIntervalA@16
+StrFromTimeIntervalW@16
+StrIsIntlEqualA@16
+StrIsIntlEqualW@16
+StrNCatA@12
+StrNCatW@12
+StrPBrkA@8
+StrPBrkW@8
+StrRChrA@12
+StrRChrIA@12
+StrRChrIW@12
+StrRChrW@12
+StrRStrIA@12
+StrRStrIW@12
+StrRetToBSTR@12
+StrRetToBufA@16
+StrRetToBufW@16
+StrRetToStrA@12
+StrRetToStrW@12
+StrSpnA@8
+StrSpnW@8
+StrStrA@8
+StrStrIA@8
+StrStrIW@8
+StrStrNIW@12
+StrStrNW@12
+StrStrW@8
+StrToInt64ExA@12
+StrToInt64ExW@12
+StrToIntA@4
+StrToIntExA@12
+StrToIntExW@12
+StrToIntW@4
+StrTrimA@8
+StrTrimW@8
+UrlApplySchemeA@16
+UrlApplySchemeW@16
+UrlCanonicalizeA@16
+UrlCanonicalizeW@16
+UrlCombineA@20
+UrlCombineW@20
+UrlCompareA@12
+UrlCompareW@12
+UrlCreateFromPathA@16
+UrlCreateFromPathW@16
+UrlEscapeA@16
+UrlEscapeW@16
+UrlGetLocationA@4
+UrlGetLocationW@4
+UrlGetPartA@20
+UrlGetPartW@20
+UrlHashA@12
+UrlHashW@12
+UrlIsA@8
+UrlIsNoHistoryA@4
+UrlIsNoHistoryW@4
+UrlIsOpaqueA@4
+UrlIsOpaqueW@4
+UrlIsW@8
+UrlUnescapeA@16
+UrlUnescapeW@16
+wnsprintfA
+wnsprintfW
+wvnsprintfA@16
+wvnsprintfW@16
diff --git a/winsup/w32api/lib/test.c b/winsup/w32api/lib/test.c
index 9b2bafde7..8f8feda8b 100644
--- a/winsup/w32api/lib/test.c
+++ b/winsup/w32api/lib/test.c
@@ -63,6 +63,7 @@
#include <aclapi.h>
#include <security.h>
#include <schnlsp.h>
+#include <shlwapi.h>
#ifndef __OBJC__ /* problems with BOOL */
#include <ole2.h>