parent
661a94033e
commit
13d74c5f0a
|
@ -97,6 +97,7 @@ EXTRADLLNAMES = \
|
||||||
olesvr \
|
olesvr \
|
||||||
rasapi16 \
|
rasapi16 \
|
||||||
shell \
|
shell \
|
||||||
|
shfolder \
|
||||||
shlwapi \
|
shlwapi \
|
||||||
storage \
|
storage \
|
||||||
system \
|
system \
|
||||||
|
@ -286,7 +287,7 @@ libriched32.@LIBEXT@: richedit/libriched32.@LIBEXT@
|
||||||
libsetupx.@LIBEXT@: setupx/libsetupx.@LIBEXT@
|
libsetupx.@LIBEXT@: setupx/libsetupx.@LIBEXT@
|
||||||
$(RM) $@ && $(LN_S) setupx/libsetupx.@LIBEXT@ $@
|
$(RM) $@ && $(LN_S) setupx/libsetupx.@LIBEXT@ $@
|
||||||
|
|
||||||
libshell32.@LIBEXT@ libshell.@LIBEXT@ libshlwapi.@LIBEXT@: shell32/libshell32.@LIBEXT@
|
libshell32.@LIBEXT@ libshell.@LIBEXT@ libshlwapi.@LIBEXT@ libshfolder.@LIBEXT@: shell32/libshell32.@LIBEXT@
|
||||||
$(RM) $@ && $(LN_S) shell32/libshell32.@LIBEXT@ $@
|
$(RM) $@ && $(LN_S) shell32/libshell32.@LIBEXT@ $@
|
||||||
|
|
||||||
libsound.@LIBEXT@: sound/libsound.@LIBEXT@
|
libsound.@LIBEXT@: sound/libsound.@LIBEXT@
|
||||||
|
|
|
@ -4,13 +4,14 @@ SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = shell32
|
MODULE = shell32
|
||||||
SOVERSION = 1.0
|
SOVERSION = 1.0
|
||||||
ALTNAMES = shell shlwapi
|
ALTNAMES = shell shlwapi shfolder
|
||||||
IMPORTS = ole32
|
IMPORTS = ole32
|
||||||
|
|
||||||
SPEC_SRCS = \
|
SPEC_SRCS = \
|
||||||
shell.spec \
|
shell.spec \
|
||||||
shell32.spec \
|
shell32.spec \
|
||||||
shlwapi.spec
|
shlwapi.spec \
|
||||||
|
shfolder.spec
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
brsfolder.c \
|
brsfolder.c \
|
||||||
|
|
|
@ -20,13 +20,10 @@ import ole32.dll
|
||||||
5 stub SHChangeNotifyUpdateEntryList@16
|
5 stub SHChangeNotifyUpdateEntryList@16
|
||||||
6 stub CheckEscapesW@8
|
6 stub CheckEscapesW@8
|
||||||
7 stdcall CommandLineToArgvW(wstr ptr) CommandLineToArgvW
|
7 stdcall CommandLineToArgvW(wstr ptr) CommandLineToArgvW
|
||||||
8 stdcall Control_FillCache_RunDLL (long long long long) Control_FillCache_RunDLL
|
|
||||||
9 stub PifMgr_OpenProperties@16
|
9 stub PifMgr_OpenProperties@16
|
||||||
10 stub PifMgr_GetProperties@20
|
10 stub PifMgr_GetProperties@20
|
||||||
11 stub PifMgr_SetProperties@20
|
11 stub PifMgr_SetProperties@20
|
||||||
12 stub Control_FillCache_RunDLLA@16
|
|
||||||
13 stub PifMgr_CloseProperties@8
|
13 stub PifMgr_CloseProperties@8
|
||||||
14 stub Control_FillCache_RunDLLW@16
|
|
||||||
15 stdcall ILGetDisplayName(ptr ptr) ILGetDisplayName
|
15 stdcall ILGetDisplayName(ptr ptr) ILGetDisplayName
|
||||||
16 stdcall ILFindLastID(ptr) ILFindLastID
|
16 stdcall ILFindLastID(ptr) ILFindLastID
|
||||||
17 stdcall ILRemoveLastID(ptr) ILRemoveLastID
|
17 stdcall ILRemoveLastID(ptr) ILRemoveLastID
|
||||||
|
@ -34,7 +31,6 @@ import ole32.dll
|
||||||
19 stdcall ILCloneFirst (ptr) ILCloneFirst
|
19 stdcall ILCloneFirst (ptr) ILCloneFirst
|
||||||
20 stdcall ILGlobalClone (ptr) ILGlobalClone
|
20 stdcall ILGlobalClone (ptr) ILGlobalClone
|
||||||
21 stdcall ILIsEqual (ptr ptr) ILIsEqual
|
21 stdcall ILIsEqual (ptr ptr) ILIsEqual
|
||||||
22 stdcall Control_RunDLL(long long long long) Control_RunDLL # exported by name
|
|
||||||
23 stdcall ILIsParent (long long long) ILIsParent
|
23 stdcall ILIsParent (long long long) ILIsParent
|
||||||
24 stdcall ILFindChild (long long) ILFindChild
|
24 stdcall ILFindChild (long long) ILFindChild
|
||||||
25 stdcall ILCombine(ptr ptr) ILCombine
|
25 stdcall ILCombine(ptr ptr) ILCombine
|
||||||
|
@ -53,8 +49,6 @@ import ole32.dll
|
||||||
38 stdcall PathStripPath(ptr)PathStripPathAW
|
38 stdcall PathStripPath(ptr)PathStripPathAW
|
||||||
39 stdcall PathIsUNC (ptr) PathIsUNCAW
|
39 stdcall PathIsUNC (ptr) PathIsUNCAW
|
||||||
40 stdcall PathIsRelative (ptr) PathIsRelativeAW
|
40 stdcall PathIsRelative (ptr) PathIsRelativeAW
|
||||||
41 stub Control_RunDLLA@16
|
|
||||||
42 stub Control_RunDLLW@16
|
|
||||||
43 stdcall PathIsExe (ptr) PathIsExeAW
|
43 stdcall PathIsExe (ptr) PathIsExeAW
|
||||||
44 stub DoEnvironmentSubstA@8
|
44 stub DoEnvironmentSubstA@8
|
||||||
45 stdcall PathFileExists(ptr) PathFileExistsAW
|
45 stdcall PathFileExists(ptr) PathFileExistsAW
|
||||||
|
@ -113,7 +107,6 @@ import ole32.dll
|
||||||
98 stdcall SHGetRealIDL (long long long) SHGetRealIDL
|
98 stdcall SHGetRealIDL (long long long) SHGetRealIDL
|
||||||
99 stdcall SetAppStartingCursor (long long) SetAppStartingCursor
|
99 stdcall SetAppStartingCursor (long long) SetAppStartingCursor
|
||||||
100 stdcall SHRestricted(long) SHRestricted
|
100 stdcall SHRestricted(long) SHRestricted
|
||||||
101 stub DragQueryFileAorW # exported by name
|
|
||||||
102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance
|
102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance
|
||||||
103 stdcall SignalFileOpen(long) SignalFileOpen
|
103 stdcall SignalFileOpen(long) SignalFileOpen
|
||||||
104 stdcall FileMenu_DeleteAllItems(long)FileMenu_DeleteAllItems
|
104 stdcall FileMenu_DeleteAllItems(long)FileMenu_DeleteAllItems
|
||||||
|
@ -150,7 +143,6 @@ import ole32.dll
|
||||||
135 stdcall DragQueryPoint(long ptr) DragQueryPoint
|
135 stdcall DragQueryPoint(long ptr) DragQueryPoint
|
||||||
136 stdcall DAD_SetDragImage(long long) DAD_SetDragImage
|
136 stdcall DAD_SetDragImage(long long) DAD_SetDragImage
|
||||||
137 stdcall DAD_ShowDragImage (long) DAD_ShowDragImage
|
137 stdcall DAD_ShowDragImage (long) DAD_ShowDragImage
|
||||||
138 stub DuplicateIcon # exported by name
|
|
||||||
139 stub Desktop_UpdateBriefcaseOnEvent
|
139 stub Desktop_UpdateBriefcaseOnEvent
|
||||||
140 stdcall FileMenu_DeleteItemByIndex(long long) FileMenu_DeleteItemByIndex
|
140 stdcall FileMenu_DeleteItemByIndex(long long) FileMenu_DeleteItemByIndex
|
||||||
141 stdcall FileMenu_DeleteItemByFirstID(long long)FileMenu_DeleteItemByFirstID
|
141 stdcall FileMenu_DeleteItemByFirstID(long long)FileMenu_DeleteItemByFirstID
|
||||||
|
@ -217,48 +209,13 @@ import ole32.dll
|
||||||
213 stub Printers_RegisterWindowW
|
213 stub Printers_RegisterWindowW
|
||||||
214 stub Printers_UnregisterWindow
|
214 stub Printers_UnregisterWindow
|
||||||
215 stub SHStartNetConnectionDialog@12
|
215 stub SHStartNetConnectionDialog@12
|
||||||
216 stub ExtractVersionResource16W # exported by name
|
|
||||||
217 stub FindExeDlgProc # exported by name
|
|
||||||
218 stdcall FindExecutableA(ptr ptr ptr) FindExecutableA # exported by name
|
|
||||||
219 stdcall FindExecutableW(wstr wstr wstr) FindExecutableW # exported by name
|
|
||||||
220 stdcall FreeIconList(long) FreeIconList # exported by name
|
|
||||||
221 stub InternalExtractIconListA # exported by name
|
|
||||||
222 stub InternalExtractIconListW # exported by name
|
|
||||||
223 stub OpenAs_RunDLL # exported by name
|
|
||||||
224 stub OpenAs_RunDLLA # exported by name
|
|
||||||
225 stub OpenAs_RunDLLW # exported by name
|
|
||||||
226 stub PrintersGetCommand_RunDLL # exported by name
|
|
||||||
227 stub PrintersGetCommand_RunDLLA # exported by name
|
|
||||||
228 stub PrintersGetCommand_RunDLLW # exported by name
|
|
||||||
229 stub RealShellExecuteA # exported by name
|
|
||||||
230 stub RealShellExecuteExA # exported by name
|
|
||||||
231 stub RealShellExecuteExW # exported by name
|
|
||||||
232 stub RealShellExecuteW # exported by name
|
|
||||||
233 stub RegenerateUserEnvironment # exported by name
|
|
||||||
234 stdcall SHAddToRecentDocs (long ptr) SHAddToRecentDocs # exported by name
|
|
||||||
235 stdcall SHAppBarMessage(long ptr) SHAppBarMessage # exported by name
|
|
||||||
236 stdcall SHBrowseForFolder(ptr) SHBrowseForFolderA # exported by name
|
|
||||||
237 stdcall SHBrowseForFolderA(ptr) SHBrowseForFolderA # exported by name
|
|
||||||
238 stub SHBrowseForFolderW@4 # exported by name
|
|
||||||
239 stdcall SHChangeNotify (long long ptr ptr) SHChangeNotifyAW # exported by name
|
|
||||||
240 stub SHEmptyRecycleBinA@12 # exported by name
|
|
||||||
241 stub SHEmptyRecycleBinW@12 # exported by name
|
|
||||||
243 stdcall shell32_243(long long) shell32_243
|
243 stdcall shell32_243(long long) shell32_243
|
||||||
244 stdcall SHInitRestricted(ptr ptr) SHInitRestricted # win98+ only, by ordinal
|
244 stdcall SHInitRestricted(ptr ptr) SHInitRestricted
|
||||||
245 stub SHFormatDrive@16 # exported by name
|
|
||||||
246 stub SHFreeNameMappings@4 # exported by name
|
|
||||||
247 stdcall SHGetDataFromIDListA (ptr ptr long ptr long) SHGetDataFromIDListA
|
247 stdcall SHGetDataFromIDListA (ptr ptr long ptr long) SHGetDataFromIDListA
|
||||||
248 stdcall SHGetDataFromIDListW (ptr ptr long ptr long) SHGetDataFromIDListW
|
248 stdcall SHGetDataFromIDListW (ptr ptr long ptr long) SHGetDataFromIDListW
|
||||||
249 stdcall PathParseIconLocation (ptr) PathParseIconLocationAW
|
249 stdcall PathParseIconLocation (ptr) PathParseIconLocationAW
|
||||||
250 stdcall PathRemoveExtension (ptr) PathRemoveExtensionAW
|
250 stdcall PathRemoveExtension (ptr) PathRemoveExtensionAW
|
||||||
251 stdcall PathRemoveArgs (ptr) PathRemoveArgsAW
|
251 stdcall PathRemoveArgs (ptr) PathRemoveArgsAW
|
||||||
264 stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLL # exported by name
|
|
||||||
265 stub SHHelpShortcuts_RunDLLA@16 # exported by name
|
|
||||||
266 stub SHHelpShortcuts_RunDLLW@16 # exported by name
|
|
||||||
267 stdcall SHLoadInProc(long) SHLoadInProc # exported by name
|
|
||||||
268 stub SHQueryRecycleBinA@8 # exported by name
|
|
||||||
269 stub SHQueryRecycleBinW@8 # exported by name
|
|
||||||
270 stub SHUpdateRecycleBinIcon@0 # exported by name
|
|
||||||
271 stub SheChangeDirA
|
271 stub SheChangeDirA
|
||||||
272 stub SheChangeDirExA
|
272 stub SheChangeDirExA
|
||||||
273 stub SheChangeDirExW
|
273 stub SheChangeDirExW
|
||||||
|
@ -283,7 +240,6 @@ import ole32.dll
|
||||||
292 stdcall ShellExecuteExA (long) ShellExecuteExA
|
292 stdcall ShellExecuteExA (long) ShellExecuteExA
|
||||||
293 stdcall ShellExecuteExW (long) ShellExecuteExW
|
293 stdcall ShellExecuteExW (long) ShellExecuteExW
|
||||||
294 stdcall ShellExecuteW (long wstr wstr wstr wstr long) ShellExecuteW
|
294 stdcall ShellExecuteW (long wstr wstr wstr wstr long) ShellExecuteW
|
||||||
295 stub ShellHookProc # exported by name
|
|
||||||
296 stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIcon
|
296 stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIcon
|
||||||
297 stdcall Shell_NotifyIconA(long ptr) Shell_NotifyIconA
|
297 stdcall Shell_NotifyIconA(long ptr) Shell_NotifyIconA
|
||||||
298 stdcall Shell_NotifyIconW(long ptr) Shell_NotifyIconW
|
298 stdcall Shell_NotifyIconW(long ptr) Shell_NotifyIconW
|
||||||
|
@ -317,7 +273,6 @@ import ole32.dll
|
||||||
326 stdcall StrStrIA(str str)StrStrIA
|
326 stdcall StrStrIA(str str)StrStrIA
|
||||||
327 stdcall StrStrIW(wstr wstr)StrStrIW
|
327 stdcall StrStrIW(wstr wstr)StrStrIW
|
||||||
328 stdcall StrStrW(wstr wstr)StrStrW
|
328 stdcall StrStrW(wstr wstr)StrStrW
|
||||||
329 stub WOWShellExecute # proper ordinal unknown
|
|
||||||
|
|
||||||
505 stdcall SHRegCloseKey (long) SHRegCloseKey
|
505 stdcall SHRegCloseKey (long) SHRegCloseKey
|
||||||
506 stdcall SHRegOpenKeyA (long str long) SHRegOpenKeyA
|
506 stdcall SHRegOpenKeyA (long str long) SHRegOpenKeyA
|
||||||
|
@ -348,58 +303,122 @@ import ole32.dll
|
||||||
650 stdcall PathIsSameRoot(ptr ptr)PathIsSameRootAW
|
650 stdcall PathIsSameRoot(ptr ptr)PathIsSameRootAW
|
||||||
|
|
||||||
# nt40/win98
|
# nt40/win98
|
||||||
651 stdcall ReadCabinetState (long long) ReadCabinetState
|
651 stdcall ReadCabinetState (long long) ReadCabinetState # OldReadCabinetState
|
||||||
652 stdcall WriteCabinetState (long) WriteCabinetState
|
652 stdcall WriteCabinetState (long) WriteCabinetState
|
||||||
653 stdcall PathProcessCommand (long long long long) PathProcessCommandAW
|
653 stdcall PathProcessCommand (long long long long) PathProcessCommandAW
|
||||||
|
|
||||||
# win98
|
# win98
|
||||||
654 stdcall shell32_654 (long long) shell32_654
|
654 stdcall shell32_654(long long)shell32_654 # ReadCabinetState@8
|
||||||
|
660 stdcall FileIconInit(long)FileIconInit
|
||||||
660 stdcall FileIconInit (long) FileIconInit
|
680 stdcall IsUserAdmin()IsUserAdmin
|
||||||
|
|
||||||
680 stdcall IsUserAdmin () IsUserAdmin
|
|
||||||
|
|
||||||
# >= NT5
|
# >= NT5
|
||||||
714 stdcall SHELL32_714(ptr)SHELL32_714
|
714 stdcall SHELL32_714(ptr)SHELL32_714 # PathIsTemporaryW
|
||||||
@ stdcall SHGetFolderLocation(long long long long ptr)SHGetFolderLocation
|
|
||||||
|
|
||||||
1217 stub FOOBAR1217 # no joke! This is the real name!!
|
1217 stub FOOBAR1217 # no joke! This is the real name!!
|
||||||
|
|
||||||
# later additions ... FIXME: incorrect ordinals
|
#
|
||||||
# win 98 uses 2...330, 505..511, 520..526, 640..654, 660, 680, 700..707, 711
|
# version 4.0 (win95)
|
||||||
|
# _WIN32_IE >= 0x0200
|
||||||
|
#
|
||||||
|
@ stdcall Control_FillCache_RunDLL(long long long long)Control_FillCache_RunDLL
|
||||||
|
@ stub Control_FillCache_RunDLLA@16
|
||||||
|
@ stub Control_FillCache_RunDLLW@16
|
||||||
|
@ stdcall Control_RunDLL(long long long long)Control_RunDLL
|
||||||
|
@ stub Control_RunDLLA@16
|
||||||
|
@ stub Control_RunDLLW@16
|
||||||
|
@ stdcall DllInstall(long wstr)SHELL32_DllInstall
|
||||||
|
@ stdcall DoEnvironmentSubstA(str str)DoEnvironmentSubstA
|
||||||
|
@ stdcall DoEnvironmentSubstW(wstr wstr)DoEnvironmentSubstW
|
||||||
|
@ stub DragQueryFileAorW
|
||||||
|
@ stub DuplicateIcon
|
||||||
|
@ stdcall ExtractAssociatedIconA(long ptr long)ExtractAssociatedIconA
|
||||||
|
@ stub ExtractAssociatedIconExA
|
||||||
|
@ stub ExtractAssociatedIconExW
|
||||||
|
@ stub ExtractAssociatedIconW
|
||||||
|
@ stdcall ExtractIconA(long str long)ExtractIconA
|
||||||
|
@ stdcall ExtractIconEx(ptr long ptr ptr long)ExtractIconExAW
|
||||||
|
@ stdcall ExtractIconExA(str long ptr ptr long)ExtractIconExA
|
||||||
|
@ stdcall ExtractIconExW(wstr long ptr ptr long)ExtractIconExW
|
||||||
|
@ stdcall ExtractIconW(long wstr long)ExtractIconW
|
||||||
|
@ stub ExtractIconResInfoA
|
||||||
|
@ stub ExtractIconResInfoW
|
||||||
|
@ stub ExtractVersionResource16W
|
||||||
|
@ stub FindExeDlgProc
|
||||||
|
@ stdcall FindExecutableA(ptr ptr ptr) FindExecutableA
|
||||||
|
@ stdcall FindExecutableW(wstr wstr wstr) FindExecutableW
|
||||||
|
@ stdcall FreeIconList(long) FreeIconList
|
||||||
|
@ stub InternalExtractIconListA
|
||||||
|
@ stub InternalExtractIconListW
|
||||||
|
@ stub OpenAs_RunDLL
|
||||||
|
@ stub OpenAs_RunDLLA
|
||||||
|
@ stub OpenAs_RunDLLW
|
||||||
|
@ stub PrintersGetCommand_RunDLL
|
||||||
|
@ stub PrintersGetCommand_RunDLLA
|
||||||
|
@ stub PrintersGetCommand_RunDLLW
|
||||||
|
@ stub RealShellExecuteA
|
||||||
|
@ stub RealShellExecuteExA
|
||||||
|
@ stub RealShellExecuteExW
|
||||||
|
@ stub RealShellExecuteW
|
||||||
|
@ stub RegenerateUserEnvironment
|
||||||
|
@ stdcall SHAddToRecentDocs (long ptr) SHAddToRecentDocs
|
||||||
|
@ stdcall SHAppBarMessage(long ptr) SHAppBarMessage
|
||||||
|
@ stdcall SHBrowseForFolder(ptr) SHBrowseForFolderA
|
||||||
|
@ stdcall SHBrowseForFolderA(ptr) SHBrowseForFolderA
|
||||||
|
@ stub SHBrowseForFolderW@4
|
||||||
|
@ stdcall SHChangeNotify (long long ptr ptr) SHChangeNotifyAW
|
||||||
|
@ stub ShellHookProc
|
||||||
|
@ stub SHEmptyRecycleBinA@12
|
||||||
|
@ stub SHEmptyRecycleBinW@12
|
||||||
|
@ stdcall SHFileOperation(ptr)SHFileOperationAW
|
||||||
|
@ stdcall SHFileOperationA(ptr)SHFileOperationA
|
||||||
|
@ stdcall SHFileOperationW(ptr)SHFileOperationW
|
||||||
|
@ stub SHFormatDrive@16
|
||||||
|
@ stub SHFreeNameMappings@4
|
||||||
|
@ stdcall SHGetDesktopFolder(ptr)SHGetDesktopFolder
|
||||||
|
@ stdcall SHGetFileInfo(ptr long ptr long long)SHGetFileInfoAW
|
||||||
|
@ stdcall SHGetFileInfoA(ptr long ptr long long)SHGetFileInfoA
|
||||||
|
@ stdcall SHGetFileInfoW(ptr long ptr long long)SHGetFileInfoW
|
||||||
|
@ stdcall SHGetInstanceExplorer(long)SHGetInstanceExplorer
|
||||||
|
@ stdcall SHGetMalloc(ptr)SHGetMalloc
|
||||||
|
@ stub SHGetNewLinkInfo@20
|
||||||
|
@ stdcall SHGetPathFromIDList(ptr ptr)SHGetPathFromIDListAW
|
||||||
|
@ stdcall SHGetPathFromIDListA(long long)SHGetPathFromIDListA
|
||||||
|
@ stdcall SHGetPathFromIDListW(long long)SHGetPathFromIDListW
|
||||||
|
@ stdcall SHGetSpecialFolderLocation(long long ptr)SHGetSpecialFolderLocation
|
||||||
|
@ stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLL
|
||||||
|
@ stub SHHelpShortcuts_RunDLLA@16
|
||||||
|
@ stub SHHelpShortcuts_RunDLLW@16
|
||||||
|
@ stdcall SHLoadInProc(long) SHLoadInProc
|
||||||
|
@ stub SHQueryRecycleBinA@8
|
||||||
|
@ stub SHQueryRecycleBinW@8
|
||||||
|
@ stub SHUpdateRecycleBinIcon@0
|
||||||
|
@ stub WOWShellExecute@28
|
||||||
|
|
||||||
|
#
|
||||||
|
# version 4.70 (IE3.0)
|
||||||
|
# _WIN32_IE >= 0x0300
|
||||||
|
#
|
||||||
|
|
||||||
1220 stdcall DllGetVersion (ptr) SHELL32_DllGetVersion # win98:201
|
#
|
||||||
1221 stdcall SHGetSpecialFolderPathA(long ptr long long) SHGetSpecialFolderPathA # win98:292
|
# version 4.71 (IE4.0)
|
||||||
1222 stdcall DoEnvironmentSubstA (str str) DoEnvironmentSubstA # win98:293
|
# _WIN32_IE >= 0x0400
|
||||||
1223 stdcall DoEnvironmentSubstW (wstr wstr) DoEnvironmentSubstW # win98:204
|
#
|
||||||
|
@ stub DllCanUnloadNow
|
||||||
|
@ stdcall DllGetVersion(ptr)SHELL32_DllGetVersion
|
||||||
|
@ stub SHGetFreeDiskSpace
|
||||||
|
@ stdcall SHGetSpecialFolderPathA(long ptr long long) SHGetSpecialFolderPathA
|
||||||
|
|
||||||
# by-name routines
|
#
|
||||||
|
# version 4.72 (IE4.01)
|
||||||
|
# _WIN32_IE >= 0x0401
|
||||||
|
# no new exports
|
||||||
|
#
|
||||||
|
|
||||||
@ stdcall DllInstall (long wstr) SHELL32_DllInstall
|
#
|
||||||
|
# version 5.00 (Win2K)
|
||||||
@ stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIconA # exported by name
|
# _WIN32_IE >= 0x0500
|
||||||
@ stub ExtractAssociatedIconExA # exported by name
|
#
|
||||||
@ stub ExtractAssociatedIconExW # exported by name
|
@ stdcall SHGetFolderPathA(long long long long ptr)SHGetFolderPathA
|
||||||
@ stub ExtractAssociatedIconW # exported by name
|
@ stdcall SHGetFolderPathW(long long long long ptr)SHGetFolderPathW
|
||||||
@ stdcall ExtractIconA(long str long) ExtractIconA # exported by name
|
@ stdcall SHGetFolderLocation(long long long long ptr)SHGetFolderLocation
|
||||||
@ stdcall ExtractIconEx(ptr long ptr ptr long) ExtractIconExAW
|
|
||||||
@ stdcall ExtractIconExA(str long ptr ptr long) ExtractIconExA
|
|
||||||
@ stdcall ExtractIconExW(wstr long ptr ptr long) ExtractIconExW
|
|
||||||
@ stdcall ExtractIconW(long wstr long) ExtractIconW # exported by name
|
|
||||||
@ stub ExtractIconResInfoA # exported by name
|
|
||||||
@ stub ExtractIconResInfoW # exported by name
|
|
||||||
@ stdcall SHFileOperation (ptr) SHFileOperationAW
|
|
||||||
@ stdcall SHFileOperationA (ptr) SHFileOperationA
|
|
||||||
@ stdcall SHFileOperationW (ptr) SHFileOperationW
|
|
||||||
@ stdcall SHGetDesktopFolder(ptr) SHGetDesktopFolder
|
|
||||||
@ stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfoAW
|
|
||||||
@ stdcall SHGetFileInfoA(ptr long ptr long long) SHGetFileInfoA
|
|
||||||
@ stdcall SHGetFileInfoW(ptr long ptr long long) SHGetFileInfoW
|
|
||||||
@ stdcall SHGetInstanceExplorer (long) SHGetInstanceExplorer
|
|
||||||
@ stdcall SHGetMalloc(ptr) SHGetMalloc
|
|
||||||
@ stub SHGetNewLinkInfo@20
|
|
||||||
@ stdcall SHGetPathFromIDList(ptr ptr) SHGetPathFromIDListAW
|
|
||||||
@ stdcall SHGetPathFromIDListA (long long) SHGetPathFromIDListA
|
|
||||||
@ stdcall SHGetPathFromIDListW (long long) SHGetPathFromIDListW
|
|
||||||
@ stdcall SHGetSpecialFolderLocation(long long ptr) SHGetSpecialFolderLocation # exported by name
|
|
||||||
|
|
|
@ -1069,9 +1069,12 @@ DWORD WINAPI SHLWAPI_193 ()
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHLWAPI_219 [SHLWAPI]
|
* SHLWAPI_219 [SHLWAPI]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* error codes: E_POINTER, E_NOINTERFACE
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SHLWAPI_219 (
|
HRESULT WINAPI SHLWAPI_219 (
|
||||||
LPVOID w, /* returned by LocalAlloc */
|
LPVOID w, /* returned by LocalAlloc, 0x450 bytes, iface */
|
||||||
LPVOID x,
|
LPVOID x,
|
||||||
LPVOID y,
|
LPVOID y,
|
||||||
LPWSTR z) /* OUT: path */
|
LPWSTR z) /* OUT: path */
|
||||||
|
@ -1100,26 +1103,36 @@ HANDLE WINAPI SHLWAPI_222 (LPCLSID guid)
|
||||||
* SHLWAPI_223 [SHLWAPI]
|
* SHLWAPI_223 [SHLWAPI]
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* function guessed
|
* get the count of the semaphore
|
||||||
*/
|
*/
|
||||||
DWORD WINAPI SHLWAPI_223 (HANDLE handle)
|
DWORD WINAPI SHLWAPI_223 (HANDLE handle)
|
||||||
{
|
{
|
||||||
DWORD oldCount;
|
DWORD oldCount;
|
||||||
|
|
||||||
FIXME("(0x%08x) stub\n",handle);
|
FIXME("(0x%08x) stub\n",handle);
|
||||||
|
|
||||||
ReleaseSemaphore( handle, 1, &oldCount);
|
ReleaseSemaphore( handle, 1, &oldCount); /* +1 */
|
||||||
WaitForSingleObject( handle, 0 );
|
WaitForSingleObject( handle, 0 ); /* -1 */
|
||||||
return 0;
|
return oldCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHLWAPI_237 [SHLWAPI]
|
* SHLWAPI_237 [SHLWAPI]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* checks if a class is registered, if not it registers it
|
||||||
*/
|
*/
|
||||||
DWORD WINAPI SHLWAPI_237 (LPVOID x)
|
DWORD WINAPI SHLWAPI_237 (WNDCLASSW * lpWndClass)
|
||||||
{
|
{
|
||||||
FIXME("(ptr=%p str=%s wstr=%s)\n",x,debugstr_a(x),debugstr_w(x));
|
WNDCLASSW WndClass;
|
||||||
return 0xabba1234;
|
|
||||||
|
TRACE("(0x%08x %s)\n",lpWndClass->hInstance, debugstr_w(lpWndClass->lpszClassName));
|
||||||
|
|
||||||
|
if (!GetClassInfoW(lpWndClass->hInstance, lpWndClass->lpszClassName, &WndClass))
|
||||||
|
{
|
||||||
|
return RegisterClassW(lpWndClass);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
|
|
@ -417,7 +417,6 @@ LPSTR WINAPI PathGetArgsA(LPCSTR lpszPath)
|
||||||
lpszPath++;
|
lpszPath++;
|
||||||
}
|
}
|
||||||
return (LPSTR)lpszPath;
|
return (LPSTR)lpszPath;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -571,7 +570,7 @@ void WINAPI PathStripPathA(LPSTR lpszPath)
|
||||||
TRACE("%s\n", lpszPath);
|
TRACE("%s\n", lpszPath);
|
||||||
|
|
||||||
if(lpszFileName)
|
if(lpszFileName)
|
||||||
RtlMoveMemory(lpszPath, lpszFileName, strlen(lpszFileName));
|
RtlMoveMemory(lpszPath, lpszFileName, strlen(lpszFileName)+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -583,7 +582,7 @@ void WINAPI PathStripPathW(LPWSTR lpszPath)
|
||||||
|
|
||||||
TRACE("%s\n", debugstr_w(lpszPath));
|
TRACE("%s\n", debugstr_w(lpszPath));
|
||||||
if(lpszFileName)
|
if(lpszFileName)
|
||||||
RtlMoveMemory(lpszPath, lpszFileName, lstrlenW(lpszFileName)*sizeof(WCHAR));
|
RtlMoveMemory(lpszPath, lpszFileName, (lstrlenW(lpszFileName)+1)*sizeof(WCHAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -604,20 +603,18 @@ BOOL WINAPI PathStripToRootA(LPSTR lpszPath)
|
||||||
TRACE("%s\n", lpszPath);
|
TRACE("%s\n", lpszPath);
|
||||||
|
|
||||||
/* X:\ */
|
/* X:\ */
|
||||||
if (lpszPath[1]==':' && lpszPath[2]=='\\')
|
if (lpszPath[1]==':' )
|
||||||
{
|
{
|
||||||
lpszPath[3]='\0';
|
if(lpszPath[2]=='\\')
|
||||||
return TRUE;
|
{
|
||||||
|
lpszPath[3]='\0';
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
lpszPath[2]='\0';
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "\" */
|
/* UNC "\\<computer>\<share>" FIXME: not complete*/
|
||||||
if (lpszPath[0]=='\\')
|
|
||||||
{
|
|
||||||
lpszPath[1]='\0';
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* UNC "\\<computer>\<share>" */
|
|
||||||
if (lpszPath[0]=='\\' && lpszPath[1]=='\\')
|
if (lpszPath[0]=='\\' && lpszPath[1]=='\\')
|
||||||
{
|
{
|
||||||
int foundbackslash = 0;
|
int foundbackslash = 0;
|
||||||
|
@ -634,6 +631,14 @@ BOOL WINAPI PathStripToRootA(LPSTR lpszPath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* "\" */
|
||||||
|
if (lpszPath[0]=='\\')
|
||||||
|
{
|
||||||
|
lpszPath[1]='\0';
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
lpszPath[0]='\0';
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -645,18 +650,17 @@ BOOL WINAPI PathStripToRootW(LPWSTR lpszPath)
|
||||||
TRACE("%s\n", debugstr_w(lpszPath));
|
TRACE("%s\n", debugstr_w(lpszPath));
|
||||||
|
|
||||||
/* X:\ */
|
/* X:\ */
|
||||||
if (lpszPath[1]==':' && lpszPath[2]=='\\')
|
if (lpszPath[1]==':' )
|
||||||
{
|
{
|
||||||
lpszPath[3]='\0';
|
if(lpszPath[2]=='\\')
|
||||||
return TRUE;
|
{
|
||||||
|
lpszPath[3]='\0';
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
lpszPath[2]='\0';
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "\" */
|
|
||||||
if (lpszPath[0]=='\\')
|
|
||||||
{
|
|
||||||
lpszPath[1]='\0';
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* UNC "\\<computer>\<share>" */
|
/* UNC "\\<computer>\<share>" */
|
||||||
if (lpszPath[0]=='\\' && lpszPath[1]=='\\')
|
if (lpszPath[0]=='\\' && lpszPath[1]=='\\')
|
||||||
|
@ -675,6 +679,14 @@ BOOL WINAPI PathStripToRootW(LPWSTR lpszPath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* "\" */
|
||||||
|
if (lpszPath[0]=='\\')
|
||||||
|
{
|
||||||
|
lpszPath[1]='\0';
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
lpszPath[0]=(WCHAR)'\0';
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -690,32 +702,54 @@ BOOL WINAPI PathStripToRootAW(LPVOID lpszPath)
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathRemoveArgsA [SHLWAPI.@]
|
* PathRemoveArgsA [SHLWAPI.@]
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* returns pointer to last character, not void
|
||||||
*/
|
*/
|
||||||
void WINAPI PathRemoveArgsA(LPSTR lpszPath)
|
LPSTR WINAPI PathRemoveArgsA(LPSTR lpszPath)
|
||||||
{
|
{
|
||||||
LPSTR lpszArgs = PathGetArgsA(lpszPath);
|
BOOL qflag = FALSE;
|
||||||
|
LPSTR pPos = lpszPath;
|
||||||
|
|
||||||
|
TRACE("%s\n",lpszPath);
|
||||||
|
|
||||||
TRACE("%s\n", lpszPath);
|
while (*lpszPath)
|
||||||
|
{
|
||||||
if (lpszArgs) *(--lpszArgs)='\0';
|
if (!qflag && *lpszPath==' ') break;
|
||||||
|
if (*lpszPath=='"') qflag=!qflag;
|
||||||
|
lpszPath++;
|
||||||
|
if (*lpszPath) pPos++;
|
||||||
|
};
|
||||||
|
*lpszPath = '\0';
|
||||||
|
return pPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathRemoveArgsW [SHLWAPI.@]
|
* PathRemoveArgsW [SHLWAPI.@]
|
||||||
*/
|
*/
|
||||||
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
|
LPWSTR WINAPI PathRemoveArgsW(LPWSTR lpszPath)
|
||||||
{
|
{
|
||||||
LPWSTR lpszArgs = PathGetArgsW(lpszPath);
|
BOOL qflag = FALSE;
|
||||||
|
LPWSTR pPos = lpszPath;
|
||||||
|
|
||||||
|
|
||||||
TRACE("%s\n", debugstr_w(lpszPath));
|
TRACE("%s\n", debugstr_w(lpszPath));
|
||||||
|
|
||||||
if (lpszArgs) *(--lpszArgs)='\0';
|
while (*lpszPath)
|
||||||
|
{
|
||||||
|
if (!qflag && *lpszPath==(WCHAR)' ') break;
|
||||||
|
if (*lpszPath==(WCHAR)'"') qflag=!qflag;
|
||||||
|
lpszPath++;
|
||||||
|
if (*lpszPath) pPos++;
|
||||||
|
};
|
||||||
|
*lpszPath = (WCHAR)'\0';
|
||||||
|
return pPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathRemoveArgsAW [SHELL32.251]
|
* PathRemoveArgsAW [SHELL32.251]
|
||||||
*/
|
*/
|
||||||
void WINAPI PathRemoveArgsAW(LPVOID lpszPath)
|
LPVOID WINAPI PathRemoveArgsAW(LPVOID lpszPath)
|
||||||
{
|
{
|
||||||
if (VERSION_OsIsUnicode())
|
if (VERSION_OsIsUnicode())
|
||||||
return PathRemoveArgsW(lpszPath);
|
return PathRemoveArgsW(lpszPath);
|
||||||
|
@ -764,6 +798,8 @@ void WINAPI PathRemoveExtensionAW(LPVOID lpszPath)
|
||||||
* Otherwise
|
* Otherwise
|
||||||
* the address of the last character is returned.
|
* the address of the last character is returned.
|
||||||
*
|
*
|
||||||
|
* FIXME
|
||||||
|
* "c:\": keep backslash
|
||||||
*/
|
*/
|
||||||
LPSTR WINAPI PathRemoveBackslashA( LPSTR lpszPath )
|
LPSTR WINAPI PathRemoveBackslashA( LPSTR lpszPath )
|
||||||
{
|
{
|
||||||
|
@ -878,27 +914,48 @@ LPVOID WINAPI PathRemoveBlanksAW(LPVOID str)
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathQuoteSpacesA [SHLWAPI.@]
|
* PathQuoteSpacesA [SHLWAPI.@]
|
||||||
*
|
*
|
||||||
* NOTES
|
|
||||||
*/
|
*/
|
||||||
LPSTR WINAPI PathQuoteSpacesA(LPCSTR lpszPath)
|
LPSTR WINAPI PathQuoteSpacesA(LPSTR lpszPath)
|
||||||
{
|
{
|
||||||
FIXME("%s\n",lpszPath);
|
TRACE("%s\n",lpszPath);
|
||||||
|
|
||||||
|
if(StrChrA(lpszPath,' '))
|
||||||
|
{
|
||||||
|
int len = strlen(lpszPath);
|
||||||
|
RtlMoveMemory(lpszPath+1, lpszPath, len);
|
||||||
|
*(lpszPath++) = '"';
|
||||||
|
lpszPath += len;
|
||||||
|
*(lpszPath++) = '"';
|
||||||
|
*(lpszPath) = '\0';
|
||||||
|
return --lpszPath;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathQuoteSpacesW [SHLWAPI.@]
|
* PathQuoteSpacesW [SHLWAPI.@]
|
||||||
*/
|
*/
|
||||||
LPWSTR WINAPI PathQuoteSpacesW(LPCWSTR lpszPath)
|
LPWSTR WINAPI PathQuoteSpacesW(LPWSTR lpszPath)
|
||||||
{
|
{
|
||||||
FIXME("%s\n",debugstr_w(lpszPath));
|
TRACE("%s\n",debugstr_w(lpszPath));
|
||||||
return 0;
|
|
||||||
|
if(StrChrW(lpszPath,' '))
|
||||||
|
{
|
||||||
|
int len = lstrlenW(lpszPath);
|
||||||
|
RtlMoveMemory(lpszPath+1, lpszPath, len*sizeof(WCHAR));
|
||||||
|
*(lpszPath++) = '"';
|
||||||
|
lpszPath += len;
|
||||||
|
*(lpszPath++) = '"';
|
||||||
|
*(lpszPath) = '\0';
|
||||||
|
return --lpszPath;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathQuoteSpacesAW [SHELL32.55]
|
* PathQuoteSpacesAW [SHELL32.55]
|
||||||
*/
|
*/
|
||||||
LPVOID WINAPI PathQuoteSpacesAW (LPCVOID lpszPath)
|
LPVOID WINAPI PathQuoteSpacesAW (LPVOID lpszPath)
|
||||||
{
|
{
|
||||||
if(VERSION_OsIsUnicode())
|
if(VERSION_OsIsUnicode())
|
||||||
return PathQuoteSpacesW(lpszPath);
|
return PathQuoteSpacesW(lpszPath);
|
||||||
|
@ -969,6 +1026,8 @@ int WINAPI PathParseIconLocationA(LPSTR lpszPath)
|
||||||
lpstrComma[0]='\0';
|
lpstrComma[0]='\0';
|
||||||
/* return atoi(&lpstrComma[1]); FIXME */
|
/* return atoi(&lpstrComma[1]); FIXME */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PathUnquoteSpacesA(lpszPath);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -986,6 +1045,7 @@ int WINAPI PathParseIconLocationW(LPWSTR lpszPath)
|
||||||
lpstrComma[0]='\0';
|
lpstrComma[0]='\0';
|
||||||
/* return _wtoi(&lpstrComma[1]); FIXME */
|
/* return _wtoi(&lpstrComma[1]); FIXME */
|
||||||
}
|
}
|
||||||
|
PathUnquoteSpacesW(lpszPath);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1092,7 +1152,7 @@ BOOL WINAPI PathIsRootA(LPCSTR lpszPath)
|
||||||
{
|
{
|
||||||
if (*(lpszPath++)=='\\') foundbackslash++;
|
if (*(lpszPath++)=='\\') foundbackslash++;
|
||||||
}
|
}
|
||||||
if (foundbackslash==1)
|
if (foundbackslash <= 1)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1122,7 +1182,7 @@ BOOL WINAPI PathIsRootW(LPCWSTR lpszPath)
|
||||||
{
|
{
|
||||||
if (*(lpszPath++)=='\\') foundbackslash++;
|
if (*(lpszPath++)=='\\') foundbackslash++;
|
||||||
}
|
}
|
||||||
if (foundbackslash==1)
|
if (foundbackslash <= 1)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1480,7 +1540,7 @@ BOOL WINAPI PathIsURLA(LPCSTR lpstrPath)
|
||||||
while(SupportedProtocol[i])
|
while(SupportedProtocol[i])
|
||||||
{
|
{
|
||||||
if (iSize == strlen(SupportedProtocol[i]))
|
if (iSize == strlen(SupportedProtocol[i]))
|
||||||
if(!strncasecmp(lpstrPath, SupportedProtocol[i], iSize));
|
if(!strncasecmp(lpstrPath, SupportedProtocol[i], iSize))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -1510,7 +1570,7 @@ BOOL WINAPI PathIsURLW(LPCWSTR lpstrPath)
|
||||||
while(SupportedProtocol[i])
|
while(SupportedProtocol[i])
|
||||||
{
|
{
|
||||||
if (iSize == strlenW(SupportedProtocol[i]))
|
if (iSize == strlenW(SupportedProtocol[i]))
|
||||||
if(!strncmpiW(lpstrPath, SupportedProtocol[i], iSize));
|
if(!strncmpiW(lpstrPath, SupportedProtocol[i], iSize))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
@ -1987,11 +2047,21 @@ BOOL WINAPI SHGetSpecialFolderPathA (
|
||||||
}
|
}
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
|
|
||||||
if (bCreate && CreateDirectoryA(szPath,NULL))
|
/* if we don't care about existing directorys we are ready */
|
||||||
|
if(csidl & CSIDL_FLAG_DONT_VERIFY) return TRUE;
|
||||||
|
|
||||||
|
if (PathFileExistsA(szPath)) return TRUE;
|
||||||
|
|
||||||
|
/* not existing but we not allowed to create it */
|
||||||
|
if (!bCreate) return FALSE;
|
||||||
|
|
||||||
|
if (!CreateDirectoryA(szPath,NULL))
|
||||||
{
|
{
|
||||||
MESSAGE("Created not existing system directory '%s'\n", szPath);
|
ERR("Failed to create directory '%s'.\n", szPath);
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MESSAGE("Created not existing system directory '%s'\n", szPath);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2031,6 +2101,40 @@ BOOL WINAPI SHGetSpecialFolderPathAW (
|
||||||
return SHGetSpecialFolderPathA (hwndOwner, szPath, csidl, bCreate);
|
return SHGetSpecialFolderPathA (hwndOwner, szPath, csidl, bCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* SHGetFolderPathA [SHFOLDER.@]
|
||||||
|
*/
|
||||||
|
HRESULT SHGetFolderPathA(
|
||||||
|
HWND hwndOwner,
|
||||||
|
int nFolder,
|
||||||
|
HANDLE hToken, /* FIXME: get paths for specific user */
|
||||||
|
DWORD dwFlags, /* FIXME: SHGFP_TYPE_CURRENT|SHGFP_TYPE_DEFAULT */
|
||||||
|
LPSTR pszPath)
|
||||||
|
{
|
||||||
|
return (SHGetSpecialFolderPathA(
|
||||||
|
hwndOwner,
|
||||||
|
pszPath,
|
||||||
|
CSIDL_FOLDER_MASK & nFolder,
|
||||||
|
CSIDL_FLAG_CREATE & nFolder )) ? S_OK : E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* SHGetFolderPathW [SHFOLDER.@]
|
||||||
|
*/
|
||||||
|
HRESULT SHGetFolderPathW(
|
||||||
|
HWND hwndOwner,
|
||||||
|
int nFolder,
|
||||||
|
HANDLE hToken,
|
||||||
|
DWORD dwFlags,
|
||||||
|
LPWSTR pszPath)
|
||||||
|
{
|
||||||
|
return (SHGetSpecialFolderPathW(
|
||||||
|
hwndOwner,
|
||||||
|
pszPath,
|
||||||
|
CSIDL_FOLDER_MASK & nFolder,
|
||||||
|
CSIDL_FLAG_CREATE & nFolder )) ? S_OK : E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathCanonicalizeA
|
* PathCanonicalizeA
|
||||||
*
|
*
|
||||||
|
@ -2178,16 +2282,30 @@ BOOL WINAPI PathCanonicalizeW(LPWSTR pszBuf, LPCWSTR pszPath)
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* PathFindNextComponentA
|
* PathFindNextComponentA
|
||||||
*
|
*
|
||||||
* Windows returns a pointer NULL (BO 000605)
|
* NOTES
|
||||||
*/
|
* special cases:
|
||||||
|
* "" null
|
||||||
|
* aa "" (pointer to traling NULL)
|
||||||
|
* aa\ "" (pointer to traling NULL)
|
||||||
|
* aa\\ "" (pointer to traling NULL)
|
||||||
|
* aa\\bb bb
|
||||||
|
* aa\\\bb \bb
|
||||||
|
* c:\aa\ "aa\"
|
||||||
|
* \\aa aa
|
||||||
|
* \\aa\b aa\b
|
||||||
|
*/
|
||||||
LPSTR WINAPI PathFindNextComponentA(LPCSTR pszPath)
|
LPSTR WINAPI PathFindNextComponentA(LPCSTR pszPath)
|
||||||
{
|
{
|
||||||
while( *pszPath )
|
LPSTR pos;
|
||||||
{
|
|
||||||
if(*pszPath++=='\\')
|
TRACE("%s\n", pszPath);
|
||||||
return (LPSTR) pszPath;
|
|
||||||
}
|
if(!pszPath || !*pszPath) return NULL;
|
||||||
return (LPSTR) pszPath;
|
if(!(pos = StrChrA(pszPath, '\\')))
|
||||||
|
return (LPSTR) pszPath + strlen(pszPath);
|
||||||
|
pos++;
|
||||||
|
if(pos[0] == '\\') pos++;
|
||||||
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -2195,12 +2313,16 @@ LPSTR WINAPI PathFindNextComponentA(LPCSTR pszPath)
|
||||||
*/
|
*/
|
||||||
LPWSTR WINAPI PathFindNextComponentW(LPCWSTR pszPath)
|
LPWSTR WINAPI PathFindNextComponentW(LPCWSTR pszPath)
|
||||||
{
|
{
|
||||||
while( *pszPath )
|
LPWSTR pos;
|
||||||
{
|
|
||||||
if(*pszPath++=='\\')
|
TRACE("%s\n", debugstr_w(pszPath));
|
||||||
return (LPWSTR) pszPath;
|
|
||||||
}
|
if(!pszPath || !*pszPath) return NULL;
|
||||||
return (LPWSTR) pszPath;
|
if (!(pos = StrChrW(pszPath, '\\')))
|
||||||
|
return (LPWSTR) pszPath + lstrlenW(pszPath);
|
||||||
|
pos++;
|
||||||
|
if(pos[0] == '\\') pos++;
|
||||||
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -2332,4 +2454,29 @@ BOOL WINAPI PathMakePrettyW(
|
||||||
{
|
{
|
||||||
FIXME("%s\n", debugstr_w(lpPath));
|
FIXME("%s\n", debugstr_w(lpPath));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathCommonPrefixA
|
||||||
|
*/
|
||||||
|
int WINAPI PathCommonPrefixA(
|
||||||
|
LPCSTR pszFile1,
|
||||||
|
LPCSTR pszFile2,
|
||||||
|
LPSTR achPath)
|
||||||
|
{
|
||||||
|
FIXME("%s %s %p\n", pszFile1, pszFile2, achPath);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* PathCommonPrefixW
|
||||||
|
*/
|
||||||
|
int WINAPI PathCommonPrefixW(
|
||||||
|
LPCWSTR pszFile1,
|
||||||
|
LPCWSTR pszFile2,
|
||||||
|
LPWSTR achPath)
|
||||||
|
{
|
||||||
|
FIXME("%s %s %p\n", debugstr_w(pszFile1), debugstr_w(pszFile2),achPath );
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,7 +126,7 @@ HRESULT WINAPI StrRetToBufW (LPSTRRET src, LPITEMIDLIST pidl, LPWSTR dest, DWORD
|
||||||
*/
|
*/
|
||||||
LPSTR WINAPI StrChrA (LPCSTR str, INT c)
|
LPSTR WINAPI StrChrA (LPCSTR str, INT c)
|
||||||
{
|
{
|
||||||
TRACE("%s %i stub\n", str,c);
|
TRACE("%s %i\n", str,c);
|
||||||
return strchr(str, c);
|
return strchr(str, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
name shfolder
|
||||||
|
type win32
|
||||||
|
import advapi32
|
||||||
|
|
||||||
|
@ stdcall SHGetFolderPathA(long long long long ptr)SHGetFolderPathA
|
||||||
|
@ stdcall SHGetFolderPathW(long long long long ptr)SHGetFolderPathW
|
|
@ -465,8 +465,8 @@ type win32
|
||||||
@ stdcall PathCanonicalizeW (ptr wstr) PathCanonicalizeW
|
@ stdcall PathCanonicalizeW (ptr wstr) PathCanonicalizeW
|
||||||
@ stdcall PathCombineA (ptr ptr ptr) PathCombineA
|
@ stdcall PathCombineA (ptr ptr ptr) PathCombineA
|
||||||
@ stdcall PathCombineW (ptr ptr ptr) PathCombineW
|
@ stdcall PathCombineW (ptr ptr ptr) PathCombineW
|
||||||
@ stub PathCommonPrefixA
|
@ stdcall PathCommonPrefixA(str str ptr)PathCommonPrefixA
|
||||||
@ stub PathCommonPrefixW
|
@ stdcall PathCommonPrefixW(wstr wstr ptr)PathCommonPrefixW
|
||||||
@ stub PathCompactPathA
|
@ stub PathCompactPathA
|
||||||
@ stub PathCompactPathExA
|
@ stub PathCompactPathExA
|
||||||
@ stub PathCompactPathExW
|
@ stub PathCompactPathExW
|
||||||
|
|
|
@ -84,45 +84,10 @@ BOOL WINAPI SHGetPathFromIDListW (LPCITEMIDLIST pidl,LPWSTR pszPath);
|
||||||
|
|
||||||
DWORD WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
|
DWORD WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* SHGetSpecialFolderLocation API
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI SHGetSpecialFolderLocation(HWND, INT, LPITEMIDLIST *);
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* other functions
|
* other functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CSIDL_DESKTOP 0x0000
|
|
||||||
#define CSIDL_PROGRAMS 0x0002
|
|
||||||
#define CSIDL_CONTROLS 0x0003
|
|
||||||
#define CSIDL_PRINTERS 0x0004
|
|
||||||
#define CSIDL_PERSONAL 0x0005
|
|
||||||
#define CSIDL_FAVORITES 0x0006
|
|
||||||
#define CSIDL_STARTUP 0x0007
|
|
||||||
#define CSIDL_RECENT 0x0008
|
|
||||||
#define CSIDL_SENDTO 0x0009
|
|
||||||
#define CSIDL_BITBUCKET 0x000a
|
|
||||||
#define CSIDL_STARTMENU 0x000b
|
|
||||||
#define CSIDL_DESKTOPDIRECTORY 0x0010
|
|
||||||
#define CSIDL_DRIVES 0x0011
|
|
||||||
#define CSIDL_NETWORK 0x0012
|
|
||||||
#define CSIDL_NETHOOD 0x0013
|
|
||||||
#define CSIDL_FONTS 0x0014
|
|
||||||
#define CSIDL_TEMPLATES 0x0015
|
|
||||||
#define CSIDL_COMMON_STARTMENU 0x0016
|
|
||||||
#define CSIDL_COMMON_PROGRAMS 0X0017
|
|
||||||
#define CSIDL_COMMON_STARTUP 0x0018
|
|
||||||
#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
|
|
||||||
#define CSIDL_APPDATA 0x001a
|
|
||||||
#define CSIDL_PRINTHOOD 0x001b
|
|
||||||
#define CSIDL_ALTSTARTUP 0x001d
|
|
||||||
#define CSIDL_COMMON_ALTSTARTUP 0x001e
|
|
||||||
#define CSIDL_COMMON_FAVORITES 0x001f
|
|
||||||
#define CSIDL_INTERNET_CACHE 0x0020
|
|
||||||
#define CSIDL_COOKIES 0x0021
|
|
||||||
#define CSIDL_HISTORY 0x0022
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
#endif /* defined(__cplusplus) */
|
#endif /* defined(__cplusplus) */
|
||||||
|
|
|
@ -422,7 +422,64 @@ void WINAPI SHChangeNotifyA(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID
|
||||||
void WINAPI SHChangeNotifyW(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
|
void WINAPI SHChangeNotifyW(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
|
||||||
#define SHChangeNotify WINELIB_NAME_AW(SHChangeNotify)
|
#define SHChangeNotify WINELIB_NAME_AW(SHChangeNotify)
|
||||||
|
|
||||||
/**********************************************************************/
|
/****************************************************************************
|
||||||
|
* SHGetSpecialFolderLocation API
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI SHGetSpecialFolderLocation(HWND, INT, LPITEMIDLIST *);
|
||||||
|
|
||||||
|
#define CSIDL_DESKTOP 0x0000
|
||||||
|
#define CSIDL_INTERNET 0x0001
|
||||||
|
#define CSIDL_PROGRAMS 0x0002
|
||||||
|
#define CSIDL_CONTROLS 0x0003
|
||||||
|
#define CSIDL_PRINTERS 0x0004
|
||||||
|
#define CSIDL_PERSONAL 0x0005
|
||||||
|
#define CSIDL_FAVORITES 0x0006
|
||||||
|
#define CSIDL_STARTUP 0x0007
|
||||||
|
#define CSIDL_RECENT 0x0008
|
||||||
|
#define CSIDL_SENDTO 0x0009
|
||||||
|
#define CSIDL_BITBUCKET 0x000a
|
||||||
|
#define CSIDL_STARTMENU 0x000b
|
||||||
|
#define CSIDL_DESKTOPDIRECTORY 0x0010
|
||||||
|
#define CSIDL_DRIVES 0x0011
|
||||||
|
#define CSIDL_NETWORK 0x0012
|
||||||
|
#define CSIDL_NETHOOD 0x0013
|
||||||
|
#define CSIDL_FONTS 0x0014
|
||||||
|
#define CSIDL_TEMPLATES 0x0015
|
||||||
|
#define CSIDL_COMMON_STARTMENU 0x0016
|
||||||
|
#define CSIDL_COMMON_PROGRAMS 0X0017
|
||||||
|
#define CSIDL_COMMON_STARTUP 0x0018
|
||||||
|
#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
|
||||||
|
#define CSIDL_APPDATA 0x001a
|
||||||
|
#define CSIDL_PRINTHOOD 0x001b
|
||||||
|
#define CSIDL_ALTSTARTUP 0x001d
|
||||||
|
#define CSIDL_COMMON_ALTSTARTUP 0x001e
|
||||||
|
#define CSIDL_COMMON_FAVORITES 0x001f
|
||||||
|
#define CSIDL_INTERNET_CACHE 0x0020
|
||||||
|
#define CSIDL_COOKIES 0x0021
|
||||||
|
#define CSIDL_HISTORY 0x0022
|
||||||
|
#define CSIDL_COMMON_APPDATA 0x0023
|
||||||
|
#define CSIDL_WINDOWS 0x0024
|
||||||
|
#define CSIDL_SYSTEM 0x0025
|
||||||
|
#define CSIDL_PROGRAM_FILES 0x0026
|
||||||
|
#define CSIDL_MYPICTURES 0x0027
|
||||||
|
#define CSIDL_PROFILE 0x0028
|
||||||
|
#define CSIDL_SYSTEMX86 0x0029
|
||||||
|
#define CSIDL_PROGRAM_FILESX86 0x002a
|
||||||
|
#define CSIDL_PROGRAM_FILES_COMMON 0x002b
|
||||||
|
#define CSIDL_PROGRAM_FILES_COMMONX86 0x002c
|
||||||
|
#define CSIDL_COMMON_TEMPLATES 0x002d
|
||||||
|
#define CSIDL_COMMON_DOCUMENTS 0x002e
|
||||||
|
#define CSIDL_COMMON_ADMINTOOLS 0x002f
|
||||||
|
#define CSIDL_ADMINTOOLS 0x0030
|
||||||
|
#define CSIDL_CONNECTIONS 0x0031
|
||||||
|
#define CSIDL_FOLDER_MASK 0x00ff
|
||||||
|
|
||||||
|
#define CSIDL_FLAG_DONT_VERIFY 0x4000
|
||||||
|
#define CSIDL_FLAG_CREATE 0x8000
|
||||||
|
|
||||||
|
#define CSIDL_FLAG_MASK 0xff00
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|
|
@ -37,6 +37,10 @@ BOOL WINAPI PathStripToRootA(LPSTR pszPath);
|
||||||
BOOL WINAPI PathStripToRootW(LPWSTR pszPath);
|
BOOL WINAPI PathStripToRootW(LPWSTR pszPath);
|
||||||
#define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
|
#define PathStripToRoot WINELIB_NAME_AW(PathStripToRoot)
|
||||||
|
|
||||||
|
LPSTR WINAPI StrChrA(LPCSTR lpStart, WORD wMatch);
|
||||||
|
LPWSTR WINAPI StrChrW(LPCWSTR lpStart, WCHAR wMatch);
|
||||||
|
#define StrChr WINELIB_NAME_AW(StrChr)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
#endif /* defined(__cplusplus) */
|
#endif /* defined(__cplusplus) */
|
||||||
|
|
|
@ -588,10 +588,10 @@ LPWSTR WINAPI PathRemoveBlanksW(LPWSTR lpszPath);
|
||||||
#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
|
#define PathRemoveBlanks WINELIB_NAME_AW(PathRemoveBlanks)
|
||||||
LPVOID WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
|
LPVOID WINAPI PathRemoveBlanksAW(LPVOID lpszPath);
|
||||||
|
|
||||||
LPSTR WINAPI PathQuoteSpacesA(LPCSTR path);
|
LPSTR WINAPI PathQuoteSpacesA(LPSTR path);
|
||||||
LPWSTR WINAPI PathQuoteSpacesW(LPCWSTR path);
|
LPWSTR WINAPI PathQuoteSpacesW(LPWSTR path);
|
||||||
#define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
|
#define PathQuoteSpaces WINELIB_NAME_AW(PathQuoteSpaces)
|
||||||
LPVOID WINAPI PathQuoteSpacesAW(LPCVOID path);
|
LPVOID WINAPI PathQuoteSpacesAW(LPVOID path);
|
||||||
|
|
||||||
void WINAPI PathUnquoteSpaces(LPSTR lpszPath);
|
void WINAPI PathUnquoteSpaces(LPSTR lpszPath);
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,7 @@ static struct tagDllOverride {
|
||||||
{"glide2x", "so,native"},
|
{"glide2x", "so,native"},
|
||||||
{"odbc32", "builtin"},
|
{"odbc32", "builtin"},
|
||||||
{"opengl32", "builtin,native"},
|
{"opengl32", "builtin,native"},
|
||||||
|
{"shfolder", "builtin,native"},
|
||||||
{NULL,NULL},
|
{NULL,NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue