LIBRARY         SHLWAPI

;; There should never never be any shared writeable segments here so that
;; we can run different versions of shlwapi in different processes and not
;; worry about global shared state.
;; This dll runs in the private arena in both Win9x and NTx.

EXPORTS
;;=========================================================================
;; these are public APIs that are exported by name
;;=========================================================================

        DllGetVersion = CCDllGetVersion         ULTRAPRIVATE

        ; String functions that are forwarded from COMCTL32
        StrChrA
        StrChrW
        StrChrNW
        StrChrNIW
        StrRChrA
        StrRChrW
        StrCmpNA
        StrCmpNW
        StrCmpNIA
        StrCmpNIW
        StrStrA
        StrStrW
        StrStrNW
        StrStrIA
        StrStrIW
        StrStrNIW
        StrCSpnA
        StrCSpnW
        StrToIntA
        StrToIntW

        ; More string functions that Win95 doesn't export
        StrChrIA
        StrChrIW
        StrRChrIA
        StrRChrIW
        StrRStrIA
        StrRStrIW
        StrCSpnIA
        StrCSpnIW
        StrPBrkA
        StrPBrkW
        StrSpnA
        StrSpnW
        StrToIntExA
        StrToIntExW
        StrToInt64ExA
        StrToInt64ExW
        StrCpyW
        StrCpyNW
        StrCatW
        StrNCatA
        StrNCatW
        StrCatBuffA
        StrCatBuffW
        StrDupA
        StrDupW
        StrCmpW
        StrCmpIW
        IntlStrEqWorkerA = StrIsIntlEqualA
        IntlStrEqWorkerW = StrIsIntlEqualW
        StrIsIntlEqualA
        StrIsIntlEqualW
        StrFormatByteSizeA
        StrFormatByteSizeW
        StrFormatByteSize64A
        StrFormatKBSizeA
        StrFormatKBSizeW
        ChrCmpIA
        ChrCmpIW
        StrTrimA
        StrTrimW
        SHStrDupA
        SHStrDupW
        StrCmpLogicalW
        StrCatChainW

        ; StrRet helper functions

        StrRetToStrA
        StrRetToStrW
        StrRetToBSTR
        StrRetToBufA
        StrRetToBufW

        ; Path exports

        PathMakePrettyA
        PathMakePrettyW
        PathGetArgsA
        PathGetArgsW
        PathRemoveArgsA
        PathRemoveArgsW
        PathFileExistsA
        PathFileExistsW
        PathFindOnPathA
        PathFindOnPathW
        PathFindExtensionA
        PathFindExtensionW
        PathAddExtensionA
        PathAddExtensionW
        PathRemoveExtensionA
        PathRemoveExtensionW
        PathRenameExtensionA
        PathRenameExtensionW
        PathCommonPrefixA
        PathCommonPrefixW
        PathRelativePathToA
        PathRelativePathToW
        PathBuildRootA
        PathBuildRootW
        PathRemoveBlanksA
        PathRemoveBlanksW
        PathRemoveBackslashA
        PathRemoveBackslashW
        PathCanonicalizeA
        PathCanonicalizeW
        PathStripToRootA
        PathStripToRootW
        PathCombineA
        PathCombineW
        PathAppendA
        PathAppendW
        PathRemoveFileSpecA
        PathRemoveFileSpecW
        PathAddBackslashA
        PathAddBackslashW
        PathFindFileNameA
        PathFindFileNameW
        PathIsFileSpecA
        PathIsFileSpecW
        PathIsUNCA
        PathIsUNCW
        PathIsNetworkPathA
        PathIsNetworkPathW
        PathGetDriveNumberA
        PathGetDriveNumberW
        PathIsRelativeA
        PathIsRelativeW
        PathStripPathA
        PathStripPathW
        PathSearchAndQualifyA
        PathSearchAndQualifyW
        PathIsRootA
        PathIsRootW
        PathIsDirectoryA
        PathIsDirectoryW
        PathIsDirectoryEmptyA
        PathIsDirectoryEmptyW
        PathCompactPathExA
        PathCompactPathExW
        PathCompactPathA
        PathCompactPathW
        PathSetDlgItemPathA
        PathSetDlgItemPathW
        PathUnquoteSpacesA
        PathUnquoteSpacesW
        PathQuoteSpacesA
        PathQuoteSpacesW
        PathFindNextComponentA
        PathFindNextComponentW
        PathMatchSpecA
        PathMatchSpecW
        PathSkipRootA
        PathSkipRootW
        PathIsSameRootA
        PathIsSameRootW
        PathParseIconLocationA
        PathParseIconLocationW
        PathIsContentTypeA
        PathIsContentTypeW
        PathIsURLA
        PathIsURLW
        PathIsPrefixA
        PathIsPrefixW
        PathIsUNCServerA
        PathIsUNCServerW
        PathIsUNCServerShareA
        PathIsUNCServerShareW
        PathGetCharTypeA
        PathGetCharTypeW
        PathMakeSystemFolderA
        PathMakeSystemFolderW
        PathUnmakeSystemFolderA
        PathUnmakeSystemFolderW
        PathIsSystemFolderA
        PathIsSystemFolderW
        PathFindSuffixArrayA
        PathFindSuffixArrayW
        PathIsLFNFileSpecA
        PathIsLFNFileSpecW
        PathUndecorateA
        PathUndecorateW
        PathUnExpandEnvStringsA
        PathUnExpandEnvStringsW

        ; Registry functions that are consistent across platforms
        SHDeleteOrphanKeyA = SHDeleteEmptyKeyA
        SHDeleteOrphanKeyW = SHDeleteEmptyKeyW
        SHDeleteEmptyKeyA
        SHDeleteEmptyKeyW
        SHDeleteKeyA
        SHDeleteKeyW
        SHDeleteValueA
        SHDeleteValueW
        SHGetValueA
        SHGetValueW
        SHSetValueA
        SHSetValueW
        SHQueryValueExA
        SHQueryValueExW
        SHEnumKeyExA
        SHEnumKeyExW
        SHEnumValueA
        SHEnumValueW
        SHQueryInfoKeyA
        SHQueryInfoKeyW
        SHRegOpenUSKeyA
        SHRegOpenUSKeyW
        SHRegCreateUSKeyA
        SHRegCreateUSKeyW
        SHRegQueryUSValueA
        SHRegQueryUSValueW
        SHRegWriteUSValueA
        SHRegWriteUSValueW
        SHRegEnumUSKeyA
        SHRegEnumUSKeyW
        SHRegEnumUSValueA
        SHRegEnumUSValueW
        SHRegQueryInfoUSKeyA
        SHRegQueryInfoUSKeyW
        SHRegDeleteUSValueA
        SHRegDeleteUSValueW
        SHRegDeleteEmptyUSKeyA
        SHRegDeleteEmptyUSKeyW
        SHRegCloseUSKey
        SHRegGetUSValueA
        SHRegGetUSValueW
        SHRegSetUSValueA
        SHRegSetUSValueW

        SHRegGetBoolUSValueA
        SHRegGetBoolUSValueW

        SHCopyKeyA
        SHCopyKeyW

        SHRegGetPathA
        SHRegGetPathW
        SHRegSetPathA
        SHRegSetPathW

        SHRegDuplicateHKey

        AssocCreate
        AssocQueryStringW
        AssocQueryStringA
        AssocQueryStringByKeyW
        AssocQueryStringByKeyA
        AssocQueryKeyW
        AssocQueryKeyA
	AssocIsDangerous

        ; public Url Parsing functions
        UrlCompareA
        UrlCompareW
        UrlCombineA
        UrlCombineW
        UrlCanonicalizeA
        UrlCanonicalizeW
        UrlIsOpaqueA
        UrlIsOpaqueW
        UrlIsNoHistoryA
        UrlIsNoHistoryW
        UrlIsA
        UrlIsW
        UrlGetLocationA
        UrlGetLocationW
        UrlUnescapeA
        UrlUnescapeW
        UrlEscapeA
        UrlEscapeW
        UrlCreateFromPathA
        UrlCreateFromPathW
        PathCreateFromUrlA
        PathCreateFromUrlW
        UrlHashA
        UrlHashW
        UrlGetPartA
        UrlGetPartW
        UrlApplySchemeA
        UrlApplySchemeW
        HashData

        ; Stream stuff
        SHOpenRegStreamA
        SHOpenRegStreamW
        SHOpenRegStream2A
        SHOpenRegStream2W
        SHCreateStreamOnFileA ; introduced 3-Apr-98 as private, made public on 17-May-98, export 316/317 removed 3-Oct-98
        SHCreateStreamOnFileW
        SHCreateStreamWrapper
        SHCreateStreamOnFileEx

        ; Palette stuff
        SHCreateShellPalette
        SHGetInverseCMAP

        ; HLS - RGB stuff
        ColorRGBToHLS
        ColorHLSToRGB
        ColorAdjustLuma

        ; Status/info
        SHIsLowMemoryMachine

;;=========================================================================
;; these are new public APIs
;;=========================================================================

        StrFromTimeIntervalA
        StrFromTimeIntervalW
        GetMenuPosFromID

        SHAutoComplete

        wnsprintfA
        wvnsprintfA
        wnsprintfW
        wvnsprintfW

        SHSkipJunction
        SHRegisterValidateTemplate

;;=========================================================================
;; these are internal APIs
;;=========================================================================

        ParseURLA                          @1     NONAME  PRIVATE
        ParseURLW                          @2     NONAME  PRIVATE

        PathFileExistsDefExtA              @3     NONAME  PRIVATE
        PathFileExistsDefExtW              @4     NONAME  PRIVATE
        PathFindOnPathExA                  @5     NONAME  PRIVATE
        PathFindOnPathExW                  @6     NONAME  PRIVATE


        ; Shared memory mapping stuff
        SHAllocShared                      @7     NONAME  PRIVATE
        SHLockShared                       @8     NONAME  PRIVATE
        SHUnlockShared                     @9     NONAME  PRIVATE
        SHFreeShared                       @10    NONAME  PRIVATE
        SHMapHandle                        @11    NONAME  PRIVATE

        SHCreateMemStream                  @12    NONAME  PRIVATE

        ; HTTP Header helper functions
        RegisterDefaultAcceptHeaders       @13    NONAME  PRIVATE
        GetAcceptLanguagesA                @14    NONAME  PRIVATE
        GetAcceptLanguagesW                @15    NONAME  PRIVATE

        // IE4 exported SHCreateThread as 16 so it has to stay there

        SHCreateThread                     @16    // public API, but but ordinal (for compat)
        SHGetThreadRef
        SHSetThreadRef
        SHReleaseThreadRef

        SHWriteDataBlockList               @17    NONAME  PRIVATE
        SHReadDataBlockList                @18    NONAME  PRIVATE
        SHFreeDataBlockList                @19    NONAME  PRIVATE
        SHAddDataBlock                     @20    NONAME  PRIVATE
        SHRemoveDataBlock                  @21    NONAME  PRIVATE
        SHFindDataBlock                    @22    NONAME  PRIVATE

        SHStringFromGUIDA                  @23    NONAME  PRIVATE
        SHStringFromGUIDW                  @24    NONAME  PRIVATE

;;=========================================================================
;; Unicode support for Win95
;;=========================================================================

//
//      These functions are fully reimplemented, not wrapped.
//

        IsCharAlphaWrapW                            @25    NONAME  PRIVATE
        IsCharUpperWrapW                            @26    NONAME  PRIVATE
        IsCharLowerWrapW                            @27    NONAME  PRIVATE
        IsCharAlphaNumericWrapW                     @28    NONAME  PRIVATE

        IsCharSpaceW                                @29    NONAME  PRIVATE
        IsCharBlankW                                @30    NONAME  PRIVATE
        IsCharPunctW                                @31    NONAME  PRIVATE
        IsCharCntrlW                                @32    NONAME  PRIVATE
        IsCharDigitW                                @33    NONAME  PRIVATE
        IsCharXDigitW                               @34    NONAME  PRIVATE

        GetStringType3ExW                           @35    NONAME  PRIVATE

//
//  There are three classes of platforms we are interested in.
//
//  x86     - Since X86 might be running Win95, we need to wrap both
//            base and shell functions, because both base and shell
//            are ANSI on Win95.
//
//  Non-x86 - Since Win95 doesn't run on ia64, we don't need
//            ANSI/UNICODE wrappers.
//

//
//  WRAPFN - Declare a wrapper for a Win32 base function.
//
//             Do this only for DLLs that we are already
//             linked to for other reasons.  Do not do this for DLLs
//             that we delay-load (like SHELL32)
//
//  WRAPDL - Declare a wrapper for a Win32 delay-loaded function.
//
//              The delay-load version of WRAPFN.
//
//  WRAPDL_ - Declare a wrapper for a Win32 delay-loaded function.
//
//              Same as WRAPDL, except sticks an underscore in front of
//              the function name when we do our delay-load thingie.
//
//  WRAPDLLFN2 - Declare a wrapper for a Win32 base function
//               with renaming.
//
//  Each of these wrap functions also has an "X" version, which means
//  that the underlying API does not end in "W", so we shouldn't attach
//  one to the wrapper either.
//
//

#if defined(_X86_)  // X86 platform - use full wrappers

#define WRAPDLLFN2(dll, fn, fn2)    fn
#define WRAPFN(dll, fn)             fn##rapW
#define WRAPDL(dll, fn)             fn##rapW
#define WRAPDLN(dll, fn, fn2)       fn##rapW

#define WRAPDLLFN2X(dll, fn, fn2)   fn
#define WRAPFNX(dll, fn)            fn##Wrap
#define WRAPDLX(dll, fn)            fn##Wrap

#else   // Non-X86 platform - use forwarders

#define WRAPDLLFN2(dll, fn, fn2)    fn = dll.fn2
#define WRAPFN(dll, fn)             fn##rapW = dll.fn
#define WRAPDL(dll, fn)             fn##rapW = fn
#define WRAPDLN(dll, fn, fn2)       fn##rapW = fn2

#define WRAPDLLFN2X(dll, fn, fn2)   fn = dll.fn2
#define WRAPFNX(dll, fn)            fn##Wrap = dll.fn
#define WRAPDLX(dll, fn)            fn##Wrap = fn

#endif

#define KERNEL32_WRAP(fn)       WRAPFN(KERNEL32, fn)
#define   USER32_WRAP(fn)       WRAPFN(  USER32, fn)
#define   USER32_WRAPX(fn)      WRAPFNX( USER32, fn)
#define    GDI32_WRAP(fn)       WRAPFN(   GDI32, fn)
#define ADVAPI32_WRAP(fn)       WRAPFN(ADVAPI32, fn)

//
//  These DLLs are forwarded to our delay-load wrappers.
//
//  Need a special macro EMPTY that expands to nothing, because the
//  preprocessor doesn't like it when we pass a null string.
//
#define    WINMM_WRAP(fn)       WRAPDL(   WINMM, fn)
#define      MPR_WRAP(fn)       WRAPDL(      MPR, fn)
#define  VERSION_WRAP(fn)       WRAPDL(  VERSION, fn)

#define  SHELL32_WRAP(fn)       WRAPDL( SHELL32, fn)
#define  SHELL32_WRAPX(fn)      WRAPDLX(SHELL32, fn)
#define  SHELL32_WRAPN(fn, fn2) WRAPDLN(SHELL32, fn, fn2)
#define COMDLG32_WRAP(fn)       WRAPDL(COMDLG32, fn)

                      AppendMenuWrapW               @36    NONAME  PRIVATE // wanted on non-x86 for ML
          USER32_WRAP(CallWindowProcW)              @37    NONAME  PRIVATE
          USER32_WRAP(CharLowerW)                   @38    NONAME  PRIVATE
          USER32_WRAP(CharLowerBuffW)               @39    NONAME  PRIVATE
          USER32_WRAP(CharNextW)                    @40    NONAME  PRIVATE
          USER32_WRAP(CharPrevW)                    @41    NONAME  PRIVATE
          USER32_WRAP(CharToOemW)                   @42    NONAME  PRIVATE
          USER32_WRAP(CharUpperW)                   @43    NONAME  PRIVATE
          USER32_WRAP(CharUpperBuffW)               @44    NONAME  PRIVATE
        KERNEL32_WRAP(CompareStringW)               @45    NONAME  PRIVATE
          USER32_WRAP(CopyAcceleratorTableW)        @46    NONAME  PRIVATE
          USER32_WRAP(CreateAcceleratorTableW)      @47    NONAME  PRIVATE
           GDI32_WRAP(CreateDCW)                    @48    NONAME  PRIVATE
      CreateDialogParamWrapW                        @49    NONAME  PRIVATE // wanted on non-x86 for ML
        KERNEL32_WRAP(CreateDirectoryW)             @50    NONAME  PRIVATE
        KERNEL32_WRAP(CreateEventW)                 @51    NONAME  PRIVATE
        KERNEL32_WRAP(CreateFileW)                  @52    NONAME  PRIVATE
           GDI32_WRAP(CreateFontIndirectW)          @53    NONAME  PRIVATE
           GDI32_WRAP(CreateICW)                    @54    NONAME  PRIVATE
          USER32_WRAP(CreateWindowExW)              @55    NONAME  PRIVATE
          USER32_WRAP(DefWindowProcW)               @56    NONAME  PRIVATE
        KERNEL32_WRAP(DeleteFileW)                  @57    NONAME  PRIVATE
      DialogBoxIndirectParamWrapW                   @58    NONAME  PRIVATE // wanted on non-x86 for ML
      DialogBoxParamWrapW                           @59    NONAME  PRIVATE // wanted on non-x86 for ML
          USER32_WRAP(DispatchMessageW)             @60    NONAME  PRIVATE
          USER32_WRAP(DrawTextW)                    @61    NONAME  PRIVATE
           GDI32_WRAP(EnumFontFamiliesW)            @62    NONAME  PRIVATE
           GDI32_WRAP(EnumFontFamiliesExW)          @63    NONAME  PRIVATE
        KERNEL32_WRAP(EnumResourceNamesW)           @64    NONAME  PRIVATE
        KERNEL32_WRAP(FindFirstFileW)               @65    NONAME  PRIVATE
        KERNEL32_WRAP(FindResourceW)                @66    NONAME  PRIVATE
          USER32_WRAP(FindWindowW)                  @67    NONAME  PRIVATE
        KERNEL32_WRAP(FormatMessageW)               @68    NONAME  PRIVATE
          USER32_WRAP(GetClassInfoW)                @69    NONAME  PRIVATE
          USER32_WRAP(GetClassLongW)                @70    NONAME  PRIVATE
          USER32_WRAP(GetClassNameW)                @71    NONAME  PRIVATE
          USER32_WRAP(GetClipboardFormatNameW)      @72    NONAME  PRIVATE
        KERNEL32_WRAP(GetCurrentDirectoryW)         @73    NONAME  PRIVATE
          USER32_WRAP(GetDlgItemTextW)              @74    NONAME  PRIVATE
        KERNEL32_WRAP(GetFileAttributesW)           @75    NONAME  PRIVATE
        KERNEL32_WRAP(GetFullPathNameW)             @76    NONAME  PRIVATE
        KERNEL32_WRAP(GetLocaleInfoW)               @77    NONAME  PRIVATE
                      GetMenuStringWrapW            @78    NONAME  PRIVATE // wanted on non-x86 for ML
          USER32_WRAP(GetMessageW)                  @79    NONAME  PRIVATE
        KERNEL32_WRAP(GetModuleFileNameW)           @80    NONAME  PRIVATE
        KERNEL32_WRAP(GetSystemDirectoryW)          @81    NONAME  PRIVATE
        KERNEL32_WRAP(SearchPathW)                  @82    NONAME  PRIVATE
        KERNEL32_WRAP(GetModuleHandleW)             @83    NONAME  PRIVATE
           GDI32_WRAP(GetObjectW)                   @84    NONAME  PRIVATE
        KERNEL32_WRAP(GetPrivateProfileIntW)        @85    NONAME  PRIVATE
        KERNEL32_WRAP(GetProfileStringW)            @86    NONAME  PRIVATE
          USER32_WRAP(GetPropW)                     @87    NONAME  PRIVATE
        KERNEL32_WRAP(GetStringTypeExW)             @88    NONAME  PRIVATE
        KERNEL32_WRAP(GetTempFileNameW)             @89    NONAME  PRIVATE
        KERNEL32_WRAP(GetTempPathW)                 @90    NONAME  PRIVATE
           GDI32_WRAP(GetTextExtentPoint32W)        @91    NONAME  PRIVATE
           GDI32_WRAP(GetTextFaceW)                 @92    NONAME  PRIVATE
           GDI32_WRAP(GetTextMetricsW)              @93    NONAME  PRIVATE
          USER32_WRAP(GetWindowLongW)               @94    NONAME  PRIVATE
          USER32_WRAP(GetWindowTextW)               @95    NONAME  PRIVATE
          USER32_WRAP(GetWindowTextLengthW)         @96    NONAME  PRIVATE
        KERNEL32_WRAP(GetWindowsDirectoryW)         @97    NONAME  PRIVATE
                      InsertMenuWrapW               @98    NONAME  PRIVATE // wanted on non-x86 for ML
          USER32_WRAP(IsDialogMessageW)             @99    NONAME  PRIVATE
          USER32_WRAP(LoadAcceleratorsW)            @100    NONAME  PRIVATE
          USER32_WRAP(LoadBitmapW)                  @101    NONAME  PRIVATE
          USER32_WRAP(LoadCursorW)                  @102    NONAME  PRIVATE
          USER32_WRAP(LoadIconW)                    @103    NONAME  PRIVATE
          USER32_WRAP(LoadImageW)                   @104    NONAME  PRIVATE
        KERNEL32_WRAP(LoadLibraryExW)               @105    NONAME  PRIVATE
                      LoadMenuWrapW                 @106    NONAME  PRIVATE // wanted on non-x86 for ML
          USER32_WRAP(LoadStringW)                  @107    NONAME  PRIVATE
          USER32_WRAP(MessageBoxIndirectW)          @108    NONAME  PRIVATE
          USER32_WRAP(ModifyMenuW)                  @109    NONAME  PRIVATE
           GDI32_WRAP(GetCharWidth32W)              @110    NONAME  PRIVATE
           GDI32_WRAP(GetCharacterPlacementW)       @111    NONAME  PRIVATE
        KERNEL32_WRAP(CopyFileW)                    @112    NONAME  PRIVATE
        KERNEL32_WRAP(MoveFileW)                    @113    NONAME  PRIVATE
          USER32_WRAP(OemToCharW)                   @114    NONAME  PRIVATE
        KERNEL32_WRAP(OutputDebugStringW)           @115    NONAME  PRIVATE
          USER32_WRAP(PeekMessageW)                 @116    NONAME  PRIVATE
          USER32_WRAP(PostMessageW)                 @117    NONAME  PRIVATE
          USER32_WRAP(PostThreadMessageW)           @118    NONAME  PRIVATE
        ADVAPI32_WRAP(RegCreateKeyW)                @119    NONAME  PRIVATE
        ADVAPI32_WRAP(RegCreateKeyExW)              @120    NONAME  PRIVATE
        ADVAPI32_WRAP(RegDeleteKeyW)                @121    NONAME  PRIVATE
        ADVAPI32_WRAP(RegEnumKeyW)                  @122    NONAME  PRIVATE
        ADVAPI32_WRAP(RegEnumKeyExW)                @123    NONAME  PRIVATE
        ADVAPI32_WRAP(RegOpenKeyW)                  @124    NONAME  PRIVATE
        ADVAPI32_WRAP(RegOpenKeyExW)                @125    NONAME  PRIVATE
        ADVAPI32_WRAP(RegQueryInfoKeyW)             @126    NONAME  PRIVATE
        ADVAPI32_WRAP(RegQueryValueW)               @127    NONAME  PRIVATE
        ADVAPI32_WRAP(RegQueryValueExW)             @128    NONAME  PRIVATE
        ADVAPI32_WRAP(RegSetValueW)                 @129    NONAME  PRIVATE
        ADVAPI32_WRAP(RegSetValueExW)               @130    NONAME  PRIVATE
          USER32_WRAP(RegisterClassW)               @131    NONAME  PRIVATE
          USER32_WRAP(RegisterClipboardFormatW)     @132    NONAME  PRIVATE
          USER32_WRAP(RegisterWindowMessageW)       @133    NONAME  PRIVATE
          USER32_WRAP(RemovePropW)                  @134    NONAME  PRIVATE
          USER32_WRAP(SendDlgItemMessageW)          @135    NONAME  PRIVATE
          USER32_WRAP(SendMessageW)                 @136    NONAME  PRIVATE
        KERNEL32_WRAP(SetCurrentDirectoryW)         @137    NONAME  PRIVATE
          USER32_WRAP(SetDlgItemTextW)              @138    NONAME  PRIVATE
                      SetMenuItemInfoWrapW          @139    NONAME  PRIVATE // wanted on non-x86 for ML
          USER32_WRAP(SetPropW)                     @140    NONAME  PRIVATE
          USER32_WRAP(SetWindowLongW)               @141    NONAME  PRIVATE
          USER32_WRAP(SetWindowsHookExW)            @142    NONAME  PRIVATE
          USER32_WRAP(SetWindowTextW)               @143    NONAME  PRIVATE
           GDI32_WRAP(StartDocW)                    @144    NONAME  PRIVATE
          USER32_WRAP(SystemParametersInfoW)        @145    NONAME  PRIVATE
          USER32_WRAP(TranslateAcceleratorW)        @146    NONAME  PRIVATE
          USER32_WRAP(UnregisterClassW)             @147    NONAME  PRIVATE
          USER32_WRAP(VkKeyScanW)                   @148    NONAME  PRIVATE
          USER32_WRAP(WinHelpW)                     @149    NONAME  PRIVATE
          USER32_WRAP(wvsprintfW)                   @150    NONAME  PRIVATE

;;=========================================================================
;; Seven bit ASCII string compare
;;=========================================================================

        StrCmpNCA               @151 NONAME PRIVATE
        StrCmpNCW               @152 NONAME PRIVATE
        StrCmpNICA              @153 NONAME PRIVATE
        StrCmpNICW              @154 NONAME PRIVATE
        StrCmpCA                @155 NONAME PRIVATE
        StrCmpCW                @156 NONAME PRIVATE
        StrCmpICA               @157 NONAME PRIVATE
        StrCmpICW               @158 NONAME PRIVATE

;;=========================================================================
;; True-Unicode String comparison
;;=========================================================================

        CompareStringAltW       @159 NONAME PRIVATE

;;=========================================================================
;; HTML About Dialog Box info
;;=========================================================================

        SHAboutInfoA            @160 NONAME PRIVATE
        SHAboutInfoW            @161 NONAME PRIVATE


;;=========================================================================
        SHTruncateString        @162 NONAME PRIVATE
        IUnknown_QueryStatus    @163 NONAME PRIVATE
        IUnknown_Exec           @164 NONAME PRIVATE
        SHSetWindowBits         @165 NONAME PRIVATE
        SHIsEmptyStream         @166 NONAME PRIVATE
        SHSetParentHwnd         @167 NONAME PRIVATE
        ConnectToConnectionPoint    @168 NONAME PRIVATE
        IUnknown_AtomicRelease  @169 NONAME PRIVATE
        PathSkipLeadingSlashesA @170 NONAME PRIVATE
        SHIsSameObject          @171 NONAME PRIVATE
        IUnknown_GetWindow      @172 NONAME PRIVATE
        IUnknown_SetOwner       @173 NONAME PRIVATE
        IUnknown_SetSite        @174 NONAME PRIVATE
        IUnknown_GetClassID     @175 NONAME PRIVATE
        IUnknown_QueryService   @176 NONAME PRIVATE
        SHLoadMenuPopup         @177 NONAME PRIVATE
        SHPropagateMessage      @178 NONAME PRIVATE
        SHMenuIndexFromID       @179 NONAME PRIVATE
        SHRemoveAllSubMenus     @180 NONAME PRIVATE
        SHEnableMenuItem        @181 NONAME PRIVATE
        SHCheckMenuItem         @182 NONAME PRIVATE
        SHRegisterClassA        @183 NONAME PRIVATE
        IStream_Read            @184 NONAME PRIVATE
        SHMessageBoxCheckA      @185 NONAME PRIVATE
        SHSimulateDrop          @186 NONAME PRIVATE
        SHLoadFromPropertyBag   @187 NONAME PRIVATE
        IUnknown_TranslateAcceleratorOCS    @188 NONAME PRIVATE
        IUnknown_OnFocusOCS     @189 NONAME PRIVATE
        IUnknown_HandleIRestrict @190 NONAME PRIVATE
        SHMessageBoxCheckW      @191 NONAME PRIVATE
        SHGetMenuFromID         @192 NONAME PRIVATE
        SHGetCurColorRes        @193 NONAME PRIVATE
        SHWaitForSendMessageThread  @194 NONAME PRIVATE
        SHIsExpandableFolder    @195 NONAME PRIVATE
        SHVerbExistsNA          @196 NONAME PRIVATE
        SHFillRectClr           @197 NONAME PRIVATE
        SHSearchMapInt          @198 NONAME PRIVATE
        IUnknown_Set            @199 NONAME PRIVATE
        MayQSForward            @200 NONAME PRIVATE
        MayExecForward          @201 NONAME PRIVATE
        IsQSForward             @202 NONAME PRIVATE
        SHStripMneumonicA       @203 NONAME PRIVATE
        SHIsChildOrSelf         @204 NONAME PRIVATE
        SHGetValueGoodBootA     @205 NONAME PRIVATE
        SHGetValueGoodBootW     @206 NONAME PRIVATE
        IContextMenu_Invoke     @207 NONAME PRIVATE
        FDSA_Initialize         @208 NONAME PRIVATE
        FDSA_Destroy            @209 NONAME PRIVATE
        FDSA_InsertItem         @210 NONAME PRIVATE
        FDSA_DeleteItem         @211 NONAME PRIVATE
        IStream_Write           @212 NONAME PRIVATE
        IStream_Reset           @213 NONAME PRIVATE
        IStream_Size            @214 NONAME PRIVATE
        SHAnsiToUnicode         @215 NONAME PRIVATE
        SHAnsiToUnicodeCP       @216 NONAME PRIVATE
        SHUnicodeToAnsi         @217 NONAME PRIVATE
        SHUnicodeToAnsiCP       @218 NONAME PRIVATE
        QISearch                @219 NONAME PRIVATE
        SHSetDefaultDialogFont  @220 NONAME PRIVATE
        SHRemoveDefaultDialogFont   @221 NONAME PRIVATE

        ; Global counters
        SHGlobalCounterCreate   @222 NONAME PRIVATE
        SHGlobalCounterGetValue @223 NONAME PRIVATE
        SHGlobalCounterIncrement    @224 NONAME PRIVATE
        SHStripMneumonicW       @225 NONAME PRIVATE

        ; Security zones
        ZoneCheckPathA          @226 NONAME PRIVATE
        ZoneCheckPathW          @227 NONAME PRIVATE
        ZoneCheckUrlA           @228 NONAME PRIVATE
        ZoneCheckUrlW           @229 NONAME PRIVATE
        ZoneCheckUrlExA         @230 NONAME PRIVATE
        ZoneCheckUrlExW         @231 NONAME PRIVATE
        ZoneCheckUrlExCacheA    @232 NONAME PRIVATE
        ZoneCheckUrlExCacheW    @233 NONAME PRIVATE
        ZoneCheckHost           @234 NONAME PRIVATE
        ZoneCheckHostEx         @235 NONAME PRIVATE

        ; More OLE helper functions
        SHPinDllOfCLSID         @236 NONAME PRIVATE

        ; More simple wrappers
        SHRegisterClassW        @237 NONAME PRIVATE
        SHUnregisterClassesA    @238 NONAME PRIVATE
        SHUnregisterClassesW    @239 NONAME PRIVATE
        SHDefWindowProc         @240 NONAME PRIVATE

        ; Shell Performance Functions
        StopWatchMode           @241 NONAME PRIVATE
        StopWatchFlush          @242 NONAME PRIVATE
        StopWatchA              @243 NONAME PRIVATE
        StopWatchW              @244 NONAME PRIVATE
        StopWatch_TimerHandler  @245 NONAME PRIVATE
        StopWatch_CheckMsg      @246 NONAME PRIVATE
        StopWatch_MarkFrameStart        @247 NONAME PRIVATE
        StopWatch_MarkSameFrameStart    @248 NONAME PRIVATE
        StopWatch_MarkJavaStop  @249 NONAME PRIVATE
        GetPerfTime             @250 NONAME PRIVATE
        StopWatch_DispatchTime  @251 NONAME PRIVATE
        StopWatch_SetMsgLastLocation @252 NONAME PRIVATE
        StopWatchExA            @253 NONAME PRIVATE
        StopWatchExW            @254 NONAME PRIVATE
#ifndef NO_ETW_TRACING
        EventTraceHandler       @255 NONAME PRIVATE
#endif
        IUnknown_GetSite        @256 NONAME PRIVATE

        SHCreateWorkerWindowA   @257 NONAME PRIVATE

;;=========================================================================
;; Thread Pool Services
;;=========================================================================

        SHRegisterWaitForSingleObject     @258  NONAME  PRIVATE
        SHUnregisterWait                  @259  NONAME  PRIVATE
        SHQueueUserWorkItem               @260  NONAME  PRIVATE
        SHCreateTimerQueue                @261  NONAME  PRIVATE
        SHDeleteTimerQueue                @262  NONAME  PRIVATE
        SHSetTimerQueueTimer              @263  NONAME  PRIVATE
        SHChangeTimerQueueTimer           @264  NONAME  PRIVATE
        SHCancelTimerQueueTimer           @265  NONAME  PRIVATE

        SHRestrictionLookup               @266  NONAME  PRIVATE
        SHWeakQueryInterface              @267  NONAME  PRIVATE
        SHWeakReleaseInterface            @268  NONAME  PRIVATE
        GUIDFromStringA                   @269  NONAME  PRIVATE
        GUIDFromStringW                   @270  NONAME  PRIVATE
        SHGetRestriction                  @271  NONAME  PRIVATE

        SHSetThreadPoolLimits             @272  NONAME  PRIVATE
        SHTerminateThreadPool             @273  NONAME  PRIVATE

        SHCancelUserWorkItems             @293  NONAME  PRIVATE

;;=========================================================================
;; other services
;;=========================================================================

        RegisterGlobalHotkeyW             @274 NONAME PRIVATE
        RegisterGlobalHotkeyA             @275 NONAME PRIVATE
        WhichPlatform                     @276 NONAME PRIVATE

        SHDialogBox                       @277 NONAME PRIVATE

        SHCreateWorkerWindowW             @278 NONAME PRIVATE
        SHInvokeDefaultCommand            @279 NONAME PRIVATE

        SHRegGetIntW                      @280 NONAME PRIVATE

        SHPackDispParamsV                                      @281 NONAME PRIVATE
        SHPackDispParams                                       @282 NONAME PRIVATE
        IConnectionPoint_InvokeWithCancel                      @283 NONAME PRIVATE
        IConnectionPoint_SimpleInvoke                          @284 NONAME PRIVATE
        IConnectionPoint_OnChanged                             @285 NONAME PRIVATE
        IUnknown_CPContainerInvokeParam                        @286 NONAME PRIVATE
        IUnknown_CPContainerOnChanged                          @287 NONAME PRIVATE
        IUnknown_CPContainerInvokeIndirect                     @288 NONAME PRIVATE
          WINMM_WRAP(PlaySoundW)                               @289 NONAME PRIVATE

        SHMirrorIcon                                    @290 NONAME PRIVATE

        SHMessageBoxCheckExA                            @291 NONAME PRIVATE
        SHMessageBoxCheckExW                            @292 NONAME PRIVATE

;       SHCancelUserWorkItems             @293 NONAME PRIVATE

        SHGetIniStringW                   @294 NONAME PRIVATE
        SHSetIniStringW                   @295 NONAME PRIVATE

        CreateURLFileContentsW            @296 NONAME PRIVATE
        CreateURLFileContentsA            @297 NONAME PRIVATE

;;=========================================================================
;; New Exports
;;=========================================================================
        KERNEL32_WRAP(WritePrivateProfileStringW)              @298   NONAME  PRIVATE
           GDI32_WRAP(ExtTextOutW)                             @299   NONAME  PRIVATE
           GDI32_WRAP(CreateFontW)                             @300   NONAME  PRIVATE
          USER32_WRAP(DrawTextExW)                             @301   NONAME  PRIVATE
                      GetMenuItemInfoWrapW                     @302   NONAME  PRIVATE // wanted on non-x86 for ML
                      InsertMenuItemWrapW                      @303   NONAME  PRIVATE // wanted on non-x86 for ML
           GDI32_WRAP(CreateMetaFileW)                         @304   NONAME  PRIVATE
        KERNEL32_WRAP(CreateMutexW)                            @305   NONAME  PRIVATE
        KERNEL32_WRAP(ExpandEnvironmentStringsW)               @306   NONAME  PRIVATE
        KERNEL32_WRAP(CreateSemaphoreW)                        @307   NONAME  PRIVATE
        KERNEL32_WRAP(IsBadStringPtrW)                         @308   NONAME  PRIVATE
        KERNEL32_WRAP(LoadLibraryW)                            @309   NONAME  PRIVATE
        KERNEL32_WRAP(GetTimeFormatW)                          @310   NONAME  PRIVATE
        KERNEL32_WRAP(GetDateFormatW)                          @311   NONAME  PRIVATE
        KERNEL32_WRAP(GetPrivateProfileStringW)                @312   NONAME  PRIVATE
        SHELL32_WRAP(SHGetFileInfoW)                           @313   NONAME  PRIVATE
          USER32_WRAP(RegisterClassExW)                        @314   NONAME  PRIVATE
          USER32_WRAP(GetClassInfoExW)                         @315   NONAME  PRIVATE
        IShellFolder_GetDisplayNameOf                          @316   NONAME  PRIVATE
        IShellFolder_ParseDisplayName                          @317   NONAME  PRIVATE
         SHELL32_WRAP(DragQueryFileW)                          @318   NONAME  PRIVATE
          USER32_WRAP(FindWindowExW)                           @319   NONAME  PRIVATE

;;=========================================================================
;; MIME File Type helper functions
;;=========================================================================
        RegisterMIMETypeForExtensionA               @320    NONAME  PRIVATE
        RegisterMIMETypeForExtensionW               @321    NONAME  PRIVATE
        UnregisterMIMETypeForExtensionA             @322    NONAME  PRIVATE
        UnregisterMIMETypeForExtensionW             @323    NONAME  PRIVATE
        RegisterExtensionForMIMETypeA               @324    NONAME  PRIVATE
        RegisterExtensionForMIMETypeW               @325    NONAME  PRIVATE
        UnregisterExtensionForMIMETypeA             @326    NONAME  PRIVATE
        UnregisterExtensionForMIMETypeW             @327    NONAME  PRIVATE
        GetMIMETypeSubKeyA                          @328    NONAME  PRIVATE
        GetMIMETypeSubKeyW                          @329    NONAME  PRIVATE
        MIME_GetExtensionA                          @330    NONAME  PRIVATE
        MIME_GetExtensionW                          @331    NONAME  PRIVATE


;;=========================================================================
;; More Thunk Wrappers
;;=========================================================================
          USER32_WRAP(CallMsgFilterW)                          @332   NONAME  PRIVATE
         SHELL32_WRAP(SHBrowseForFolderW)                      @333   NONAME  PRIVATE
         SHELL32_WRAP(SHGetPathFromIDListW)                    @334   NONAME  PRIVATE
         SHELL32_WRAP(ShellExecuteExW)                         @335   NONAME  PRIVATE
         SHELL32_WRAP(SHFileOperationW)                        @336   NONAME  PRIVATE
         SHELL32_WRAP(ExtractIconExW)                          @337   NONAME  PRIVATE
        KERNEL32_WRAP(SetFileAttributesW)                      @338   NONAME  PRIVATE
        KERNEL32_WRAP(GetNumberFormatW)                        @339   NONAME  PRIVATE
          USER32_WRAP(MessageBoxW)                             @340   NONAME  PRIVATE
        KERNEL32_WRAP(FindNextFileW)                           @341   NONAME  PRIVATE
#ifdef _WIN64
    SHInterlockedCompareExchange                               @342   NONAME  PRIVATE
#else
    WRAPDLLFN2(KERNEL32, SHInterlockedCompareExchange,
                           InterlockedCompareExchange)         @342   NONAME  PRIVATE
#endif

        SHRegGetCLSIDKeyA                                      @343   NONAME  PRIVATE
        SHRegGetCLSIDKeyW                                      @344   NONAME  PRIVATE

;;=========================================================================
;; Other
;;=========================================================================
        SHAnsiToAnsi                                @345    NONAME  PRIVATE
        SHUnicodeToUnicode                          @346    NONAME  PRIVATE

        ADVAPI32_WRAP(RegDeleteValueW)              @347    NONAME  PRIVATE
        SHGetFileDescriptionW                       @348    NONAME  PRIVATE
        SHGetFileDescriptionA                       @349    NONAME  PRIVATE
         VERSION_WRAP(GetFileVersionInfoSizeW)      @350    NONAME  PRIVATE
         VERSION_WRAP(GetFileVersionInfoW)          @351    NONAME  PRIVATE
         VERSION_WRAP(VerQueryValueW)               @352    NONAME  PRIVATE

        SHFormatDateTimeA                           @353    NONAME  PRIVATE
        SHFormatDateTimeW                           @354    NONAME  PRIVATE
        IUnknown_EnableModeless                     @355    NONAME  PRIVATE
        CreateAllAccessSecurityAttributes           @356    NONAME  PRIVATE

        SHGetNewLinkInfoWrapW                       @357    NONAME  PRIVATE
         SHELL32_WRAP(SHDefExtractIconW)            @358    NONAME  PRIVATE
        KERNEL32_WRAP(OpenEventW)                   @359    NONAME  PRIVATE
        KERNEL32_WRAP(RemoveDirectoryW)             @360    NONAME  PRIVATE
        KERNEL32_WRAP(GetShortPathNameW)            @361    NONAME  PRIVATE
        ADVAPI32_WRAP(GetUserNameW)                 @362    NONAME  PRIVATE

        SHInvokeCommand                             @363    NONAME  PRIVATE
        DoesStringRoundTripA                        @364    NONAME  PRIVATE
        DoesStringRoundTripW                        @365    NONAME  PRIVATE

        ADVAPI32_WRAP(RegEnumValueW)                @366    NONAME  PRIVATE
        KERNEL32_WRAP(WritePrivateProfileStructW)   @367    NONAME  PRIVATE
        KERNEL32_WRAP(GetPrivateProfileStructW)     @368    NONAME  PRIVATE
        KERNEL32_WRAP(CreateProcessW)               @369    NONAME  PRIVATE
         SHELL32_WRAP(ExtractIconW)                 @370    NONAME  PRIVATE
          USER32_WRAP(DdeInitializeW)               @371    NONAME  PRIVATE
          USER32_WRAP(DdeCreateStringHandleW)       @372    NONAME  PRIVATE
          USER32_WRAP(DdeQueryStringW)              @373    NONAME  PRIVATE

        SHCheckDiskForMediaA                        @374    NONAME  PRIVATE
        SHCheckDiskForMediaW                        @375    NONAME  PRIVATE

        MLGetUILanguage                             @376    NONAME  PRIVATE
        MLLoadLibraryA                              @377    NONAME  PRIVATE
        MLLoadLibraryW                              @378    NONAME  PRIVATE

        SHELL32_WRAPN(Shell_GetCachedImageIndexW, Shell_GetCachedImageIndex)    @379    NONAME  PRIVATE
        Shell_GetCachedImageIndexWrapA              @380    NONAME  PRIVATE

        AssocCopyVerbs                              @381    NONAME  PRIVATE

        ZoneComputePaneSize                         @382    NONAME  PRIVATE
        ZoneConfigureW                              @383    NONAME  PRIVATE
        SHRestrictedMessageBox                      @384    NONAME  PRIVATE

        SHLoadRawAccelerators                       @385    NONAME  PRIVATE
        SHQueryRawAccelerator                       @386    NONAME  PRIVATE
        SHQueryRawAcceleratorMsg                    @387    NONAME  PRIVATE

        ShellMessageBoxWrapW                        @388    NONAME  PRIVATE // This one replaces shell32's implementation

        COMDLG32_WRAP(GetSaveFileNameW)             @389    NONAME  PRIVATE

             MPR_WRAP(WNetRestoreConnectionW)       @390    NONAME  PRIVATE
             MPR_WRAP(WNetGetLastErrorW)            @391    NONAME  PRIVATE

   WRAPDLLFN2(USER32, EndDialogWrap, EndDialog)     @392    NONAME  PRIVATE // Remove this soon

        CreateDialogIndirectParamWrapW              @393    NONAME  PRIVATE // wanted even on non-x86 for ML

        SHELL32_WRAPX(SHChangeNotify)               @394    NONAME  PRIVATE

        MLWinHelpA                                  @395    NONAME  PRIVATE
        MLHtmlHelpA                                 @396    NONAME  PRIVATE
        MLWinHelpW                                  @397    NONAME  PRIVATE
        MLHtmlHelpW                                 @398    NONAME  PRIVATE

#ifndef UNIX
        StrCpyNXA                                   @399    NONAME  PRIVATE
        StrCpyNXW                                   @400    NONAME  PRIVATE
#endif

        COMDLG32_WRAP(PageSetupDlgW)                @401    NONAME  PRIVATE
        COMDLG32_WRAP(PrintDlgW)                    @402    NONAME  PRIVATE

        COMDLG32_WRAP(GetOpenFileNameW)             @403    NONAME  PRIVATE

        IShellFolder_EnumObjects                    @404    NONAME  PRIVATE

        MLBuildResURLA                              @405    NONAME  PRIVATE
        MLBuildResURLW                              @406    NONAME  PRIVATE

        AssocMakeProgid                             @407    NONAME  PRIVATE
        AssocMakeShell                              @408    NONAME  PRIVATE
        AssocMakeApplicationByKeyW                  @409    NONAME  PRIVATE
        AssocMakeApplicationByKeyA                  @410    NONAME  PRIVATE
        AssocMakeFileExtsToApplicationW             @411    NONAME  PRIVATE
        AssocMakeFileExtsToApplicationA             @412    NONAME  PRIVATE

        SHGetMachineInfo                            @413    NONAME  PRIVATE

        SHHtmlHelpOnDemandW                         @414    NONAME  PRIVATE
        SHHtmlHelpOnDemandA                         @415    NONAME  PRIVATE
        SHWinHelpOnDemandW                          @416    NONAME  PRIVATE
        SHWinHelpOnDemandA                          @417    NONAME  PRIVATE

        MLFreeLibrary                               @418    NONAME  PRIVATE

        SHELL32_WRAPX(SHFlushSFCache)               @419    NONAME  PRIVATE

        SHPersistDataObject                         @420    NONAME  PRIVATE
        SHLoadPersistedDataObject                   @421    NONAME  PRIVATE

        ; More Global counter stuff
        SHGlobalCounterCreateNamedA                 @422    NONAME  PRIVATE
        SHGlobalCounterCreateNamedW                 @423    NONAME  PRIVATE
        SHGlobalCounterDecrement                    @424    NONAME  PRIVATE

        DeleteMenuWrap                              @425    NONAME  PRIVATE // wanted on non-x86 for ML
        DestroyMenuWrap                             @426    NONAME  PRIVATE // wanted on non-x86 for ML

        TrackPopupMenuWrap                          @427    NONAME  PRIVATE // wanted on non-x86 for ML
        TrackPopupMenuExWrap                        @428    NONAME  PRIVATE // wanted on non-x86 for ML

        MLIsMLHInstance                             @429    NONAME  PRIVATE
        MLSetMLHInstance                            @430    NONAME  PRIVATE
        MLClearMLHInstance                          @431    NONAME  PRIVATE

        SHSendMessageBroadcastA                     @432    NONAME  PRIVATE
        SHSendMessageBroadcastW                     @433    NONAME  PRIVATE

        USER32_WRAP(SendMessageTimeoutW)            @434    NONAME  PRIVATE

        CLSIDFromProgIDWrap                         @435    NONAME  PRIVATE
        CLSIDFromStringWrap                         @436    NONAME  PRIVATE

        IsOS                                        @437    NONAME  PRIVATE

        SHLoadRegUIStringA                          @438    NONAME  PRIVATE
        SHLoadRegUIStringW                          @439    NONAME  PRIVATE

        SHGetWebFolderFilePathA                     @440    NONAME  PRIVATE
        SHGetWebFolderFilePathW                     @441    NONAME  PRIVATE

        KERNEL32_WRAP(GetEnvironmentVariableW)      @442    NONAME  PRIVATE

        SHGetSystemWindowsDirectoryA                @443    NONAME  PRIVATE
        SHGetSystemWindowsDirectoryW                @444    NONAME  PRIVATE

;; these are functions that used to live in shell32, but have been consolidated here
        PathFileExistsAndAttributesA                @445    NONAME  PRIVATE
        PathFileExistsAndAttributesW                @446    NONAME  PRIVATE
        FixSlashesAndColonA                         @447    NONAME  PRIVATE
        FixSlashesAndColonW                         @448    NONAME  PRIVATE
        NextPathA                                   @449    NONAME  PRIVATE
        NextPathW                                   @450    NONAME  PRIVATE

        ; export under the old shell32 name of CharXXX
        CharUpperNoDBCSA                            @451    NONAME  PRIVATE
        CharUpperNoDBCSW                            @452    NONAME  PRIVATE
        CharLowerNoDBCSA                            @453    NONAME  PRIVATE
        CharLowerNoDBCSW                            @454    NONAME  PRIVATE

        PathIsValidCharA                            @455    NONAME  PRIVATE
        PathIsValidCharW                            @456    NONAME  PRIVATE

        ; These wrappers are needed on all platforms (x86 and Alpha)
        GetLongPathNameWrapW                        @457    NONAME  PRIVATE
        GetLongPathNameWrapA                        @458    NONAME  PRIVATE

        SHExpandEnvironmentStringsA                 @459    NONAME  PRIVATE
        SHExpandEnvironmentStringsW                 @460    NONAME  PRIVATE

        ; Moved from shell32
        SHGetAppCompatFlags                         @461    NONAME  PRIVATE

        UrlFixupW                                   @462    NONAME  PRIVATE
        
; Functions for impersonated users with hToken

        SHExpandEnvironmentStringsForUserA          @463    NONAME  PRIVATE
        SHExpandEnvironmentStringsForUserW          @464    NONAME  PRIVATE
        PathUnExpandEnvStringsForUserA              @465    NONAME  PRIVATE
        PathUnExpandEnvStringsForUserW              @466    NONAME  PRIVATE
        SHRunIndirectRegClientCommand               @467    NONAME  PRIVATE
        RunIndirectRegCommand                       @468    NONAME  PRIVATE
        RunRegCommand                               @469    NONAME  PRIVATE

        IUnknown_ProfferServiceOld                  @470    NONAME  PRIVATE
        SHCreatePropertyBagOnRegKey                 @471    NONAME  PRIVATE
        SHCreatePropertyBagOnProfileSection         @472    NONAME  PRIVATE
        SHGetIniStringUTF7W                         @473    NONAME  PRIVATE
        SHSetIniStringUTF7W                         @474    NONAME  PRIVATE

; ACL helper function
        GetShellSecurityDescriptor                  @475    NONAME  PRIVATE

        SHGetObjectCompatFlags                      @476    NONAME  PRIVATE
        SHCreatePropertyBagOnMemory                 @477    NONAME  PRIVATE

        IUnknown_TranslateAcceleratorIO             @478    NONAME  PRIVATE
        IUnknown_UIActivateIO                       @479    NONAME  PRIVATE
        UrlCrackW                                   @480    NONAME  PRIVATE
        IUnknown_HasFocusIO                         @481    NONAME  PRIVATE

; Message box w/ help button
        SHMessageBoxHelpA                           @482    NONAME  PRIVATE
        SHMessageBoxHelpW                           @483    NONAME  PRIVATE

;IUnknown_QueryServiceExec
        IUnknown_QueryServiceExec                   @484    NONAME  PRIVATE

; SHCreateStreamOnFileEx helpers
        MapWin32ErrorToSTG                          @485    NONAME  PRIVATE
        ModeToCreateFileFlags                       @486    NONAME  PRIVATE

        SHLoadIndirectString                        @487
        SHConvertGraphicsFile                       @488    NONAME  PRIVATE

        KERNEL32_WRAP(GlobalAddAtomW)               @489    NONAME  PRIVATE
        KERNEL32_WRAP(GlobalFindAtomW)              @490    NONAME  PRIVATE

        SHGetShellKey                               @491    NONAME  PRIVATE
        PrettifyFileDescriptionW                    @492    NONAME  PRIVATE

        SHPropertyBag_ReadType                      @493    NONAME  PRIVATE
        SHPropertyBag_ReadStr                       @494    NONAME  PRIVATE
        SHPropertyBag_WriteStr                      @495    NONAME  PRIVATE
        SHPropertyBag_ReadInt                       @496    NONAME  PRIVATE
        SHPropertyBag_WriteInt                      @497    NONAME  PRIVATE
        SHPropertyBag_ReadBOOLOld                   @498    NONAME  PRIVATE
        SHPropertyBag_WriteBOOL                     @499    NONAME  PRIVATE

#if defined(_AMD64_) || defined(_IA64_)
;=========================================================================
;; these are internal APIs for RISC machines
;; to when manipulating PIDLS (struct _IDFILELOCATION)
;;=========================================================================

        ualstrcpynW                                 @500 NONAME PRIVATE
        ualstrcmpiW                                 @501 NONAME PRIVATE
        ualstrcmpW                                  @502 NONAME PRIVATE
        ualstrlenW                                  @503 NONAME PRIVATE
        ualstrcpyW                                  @504 NONAME PRIVATE

#endif  // defined(_AMD64_) || defined(_IA64_)

;;=========================================================================
;; back to normal.
;;=========================================================================

        SHPropertyBag_ReadGUID                      @505    NONAME  PRIVATE
        SHPropertyBag_WriteGUID                     @506    NONAME  PRIVATE
        SHPropertyBag_ReadDWORD                     @507    NONAME  PRIVATE
        SHPropertyBag_WriteDWORD                    @508    NONAME  PRIVATE

        IUnknown_OnFocusChangeIS                    @509    NONAME  PRIVATE
        SHLockSharedEx                              @510    NONAME  PRIVATE
        PathFileExistsDefExtAndAttributesW          @511    NONAME  PRIVATE

        IStream_ReadPidl                            @512    NONAME  PRIVATE
        IStream_WritePidl                           @513    NONAME  PRIVATE

        IUnknown_ProfferService                     @514    NONAME  PRIVATE

        SHGetViewStatePropertyBag                   @515    
        SKGetValueW                                 @516    NONAME  PRIVATE
        SKSetValueW                                 @517    NONAME  PRIVATE
        SKDeleteValueW                              @518    NONAME  PRIVATE
        SKAllocValueW                               @519    NONAME  PRIVATE

        SHPropertyBag_ReadBSTR                      @520    NONAME  PRIVATE
        SHPropertyBag_ReadPOINTL                    @521    NONAME  PRIVATE
        SHPropertyBag_WritePOINTL                   @522    NONAME  PRIVATE
        SHPropertyBag_ReadRECTL                     @523    NONAME  PRIVATE
        SHPropertyBag_WriteRECTL                    @524    NONAME  PRIVATE
        SHPropertyBag_ReadPOINTS                    @525    NONAME  PRIVATE
        SHPropertyBag_WritePOINTS                   @526    NONAME  PRIVATE
        SHPropertyBag_ReadSHORT                     @527    NONAME  PRIVATE
        SHPropertyBag_WriteSHORT                    @528    NONAME  PRIVATE
        SHPropertyBag_ReadLONG                      @529    NONAME  PRIVATE
        SHPropertyBag_WriteLONG                     @530    NONAME  PRIVATE
        SHPropertyBag_ReadStream                    @531    NONAME  PRIVATE
        SHPropertyBag_WriteStream                   @532    NONAME  PRIVATE
        SHGetPerScreenResName                       @533    NONAME  PRIVATE
        SHPropertyBag_ReadBOOL                      @534    NONAME  PRIVATE
        SHPropertyBag_Delete                        @535    NONAME  PRIVATE
        IUnknown_QueryServicePropertyBag            @536    NONAME  PRIVATE

        SHBoolSystemParametersInfo                  @537    NONAME  PRIVATE

        IUnknown_QueryServiceForWebBrowserApp       @538    NONAME  PRIVATE
        IUnknown_ShowBrowserBar                     @539    NONAME  PRIVATE
        SHInvokeCommandOnContextMenu                @540    NONAME  PRIVATE
        SHInvokeCommandsOnContextMenu               @541    NONAME  PRIVATE

        GetUIVersion                                @542    NONAME  PRIVATE
        GDI32_WRAP(CreateColorSpaceW)               @543    NONAME  PRIVATE
        QuerySourceCreateFromKey                    @544    NONAME  PRIVATE

        SHForwardContextMenuMsg                     @545    NONAME  PRIVATE
        IUnknown_DoContextMenuPopup                 @546    NONAME  PRIVATE

        DelayLoadFailureHook=Downlevel_DelayLoadFailureHook @547    ULTRAPRIVATE    // should not be in any lib, shdocvw & browseui call GetProcAddress by name on this

        SHAreIconsEqual                             @548    NONAME  PRIVATE
        SHCoCreateInstanceAC                        @549    NONAME  PRIVATE

        GetTemplateInfoFromHandle                   @550    NONAME  PRIVATE

        IShellFolder_CompareIDs                        @551   NONAME  PRIVATE
        
