Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
03e9e5b6
Commit
03e9e5b6
authored
Mar 28, 2007
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Mar 29, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shlwapi: Match shlwapi wrappers to MSDN descriptions.
parent
73589135
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
65 additions
and
355 deletions
+65
-355
Makefile.in
dlls/shlwapi/Makefile.in
+2
-2
ordinal.c
dlls/shlwapi/ordinal.c
+49
-292
path.c
dlls/shlwapi/path.c
+1
-1
shlwapi.spec
dlls/shlwapi/shlwapi.spec
+5
-5
shlwapi_main.c
dlls/shlwapi/shlwapi_main.c
+1
-19
string.c
dlls/shlwapi/string.c
+3
-17
thread.c
dlls/shlwapi/thread.c
+4
-19
No files found.
dlls/shlwapi/Makefile.in
View file @
03e9e5b6
...
...
@@ -5,8 +5,8 @@ SRCDIR = @srcdir@
VPATH
=
@srcdir@
MODULE
=
shlwapi.dll
IMPORTLIB
=
libshlwapi.
$(IMPLIBEXT)
IMPORTS
=
ole32
user32 gdi32 advapi32 kernel32 ntdll
DELAYIMPORTS
=
oleaut32
IMPORTS
=
user32 gdi32 advapi32 kernel32 ntdll
DELAYIMPORTS
=
oleaut32
ole32 comctl32 comdlg32 mpr mlang urlmon shell32 winmm version
EXTRALIBS
=
-luuid
C_SRCS
=
\
...
...
dlls/shlwapi/ordinal.c
View file @
03e9e5b6
...
...
@@ -33,99 +33,30 @@
#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "wingdi.h"
#include "winuser.h"
#include "winnls.h"
#include "winver.h"
#include "winnetwk.h"
#include "mmsystem.h"
#include "objbase.h"
#include "docobj.h"
#include "exdisp.h"
#include "shlguid.h"
#include "wingdi.h"
#include "shlobj.h"
#include "shlwapi.h"
#include "shellapi.h"
#include "commdlg.h"
#include "wine/unicode.h"
#include "winreg.h"
#include "wine/debug.h"
#include "shlwapi.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shell
);
/* Get a function pointer from a DLL handle */
#define GET_FUNC(func, module, name, fail) \
do { \
if (!func) { \
if (!SHLWAPI_h##module && !(SHLWAPI_h##module = LoadLibraryA(#module ".dll"))) return fail; \
func = (fn##func)GetProcAddress(SHLWAPI_h##module, name); \
if (!func) return fail; \
} \
} while (0)
/* DLL handles for late bound calls */
extern
HINSTANCE
shlwapi_hInstance
;
extern
HMODULE
SHLWAPI_hshell32
;
extern
HMODULE
SHLWAPI_hwinmm
;
extern
HMODULE
SHLWAPI_hcomdlg32
;
extern
HMODULE
SHLWAPI_hcomctl32
;
extern
HMODULE
SHLWAPI_hmpr
;
extern
HMODULE
SHLWAPI_hurlmon
;
extern
HMODULE
SHLWAPI_hversion
;
extern
DWORD
SHLWAPI_ThreadRef_index
;
/* Function pointers for GET_FUNC macro; these need to be global because of gcc bug */
typedef
LPITEMIDLIST
(
WINAPI
*
fnpSHBrowseForFolderW
)(
LPBROWSEINFOW
);
static
fnpSHBrowseForFolderW
pSHBrowseForFolderW
;
typedef
BOOL
(
WINAPI
*
fnpPlaySoundW
)(
LPCWSTR
,
HMODULE
,
DWORD
);
static
fnpPlaySoundW
pPlaySoundW
;
typedef
DWORD
(
WINAPI
*
fnpSHGetFileInfoW
)(
LPCWSTR
,
DWORD
,
SHFILEINFOW
*
,
UINT
,
UINT
);
static
fnpSHGetFileInfoW
pSHGetFileInfoW
;
typedef
UINT
(
WINAPI
*
fnpDragQueryFileW
)(
HDROP
,
UINT
,
LPWSTR
,
UINT
);
static
fnpDragQueryFileW
pDragQueryFileW
;
typedef
BOOL
(
WINAPI
*
fnpSHGetPathFromIDListW
)(
LPCITEMIDLIST
,
LPWSTR
);
static
fnpSHGetPathFromIDListW
pSHGetPathFromIDListW
;
typedef
BOOL
(
WINAPI
*
fnpShellExecuteExW
)(
LPSHELLEXECUTEINFOW
);
static
fnpShellExecuteExW
pShellExecuteExW
;
typedef
HICON
(
WINAPI
*
fnpSHFileOperationW
)(
LPSHFILEOPSTRUCTW
);
static
fnpSHFileOperationW
pSHFileOperationW
;
typedef
UINT
(
WINAPI
*
fnpExtractIconExW
)(
LPCWSTR
,
INT
,
HICON
*
,
HICON
*
,
UINT
);
static
fnpExtractIconExW
pExtractIconExW
;
typedef
BOOL
(
WINAPI
*
fnpSHGetNewLinkInfoW
)(
LPCWSTR
,
LPCWSTR
,
LPCWSTR
,
BOOL
*
,
UINT
);
static
fnpSHGetNewLinkInfoW
pSHGetNewLinkInfoW
;
typedef
HRESULT
(
WINAPI
*
fnpSHDefExtractIconW
)(
LPCWSTR
,
int
,
UINT
,
HICON
*
,
HICON
*
,
UINT
);
static
fnpSHDefExtractIconW
pSHDefExtractIconW
;
typedef
HICON
(
WINAPI
*
fnpExtractIconW
)(
HINSTANCE
,
LPCWSTR
,
UINT
);
static
fnpExtractIconW
pExtractIconW
;
typedef
BOOL
(
WINAPI
*
fnpGetSaveFileNameW
)(
LPOPENFILENAMEW
);
static
fnpGetSaveFileNameW
pGetSaveFileNameW
;
typedef
DWORD
(
WINAPI
*
fnpWNetRestoreConnectionW
)(
HWND
,
LPWSTR
);
static
fnpWNetRestoreConnectionW
pWNetRestoreConnectionW
;
typedef
DWORD
(
WINAPI
*
fnpWNetGetLastErrorW
)(
LPDWORD
,
LPWSTR
,
DWORD
,
LPWSTR
,
DWORD
);
static
fnpWNetGetLastErrorW
pWNetGetLastErrorW
;
typedef
BOOL
(
WINAPI
*
fnpPageSetupDlgW
)(
LPPAGESETUPDLGW
);
static
fnpPageSetupDlgW
pPageSetupDlgW
;
typedef
BOOL
(
WINAPI
*
fnpPrintDlgW
)(
LPPRINTDLGW
);
static
fnpPrintDlgW
pPrintDlgW
;
typedef
BOOL
(
WINAPI
*
fnpGetOpenFileNameW
)(
LPOPENFILENAMEW
);
static
fnpGetOpenFileNameW
pGetOpenFileNameW
;
typedef
DWORD
(
WINAPI
*
fnpGetFileVersionInfoSizeW
)(
LPCWSTR
,
LPDWORD
);
static
fnpGetFileVersionInfoSizeW
pGetFileVersionInfoSizeW
;
typedef
BOOL
(
WINAPI
*
fnpGetFileVersionInfoW
)(
LPCWSTR
,
DWORD
,
DWORD
,
LPVOID
);
static
fnpGetFileVersionInfoW
pGetFileVersionInfoW
;
typedef
WORD
(
WINAPI
*
fnpVerQueryValueW
)(
LPVOID
,
LPCWSTR
,
LPVOID
*
,
UINT
*
);
static
fnpVerQueryValueW
pVerQueryValueW
;
typedef
BOOL
(
WINAPI
*
fnpCOMCTL32_417
)(
HDC
,
INT
,
INT
,
UINT
,
const
RECT
*
,
LPCWSTR
,
UINT
,
const
INT
*
);
static
fnpCOMCTL32_417
pCOMCTL32_417
;
typedef
HRESULT
(
WINAPI
*
fnpDllGetVersion
)(
DLLVERSIONINFO
*
);
static
fnpDllGetVersion
pDllGetVersion
;
typedef
HRESULT
(
WINAPI
*
fnpCreateFormatEnumerator
)(
UINT
,
FORMATETC
*
,
IEnumFORMATETC
**
);
static
fnpCreateFormatEnumerator
pCreateFormatEnumerator
;
typedef
HRESULT
(
WINAPI
*
fnpRegisterFormatEnumerator
)(
LPBC
,
IEnumFORMATETC
*
,
DWORD
);
static
fnpRegisterFormatEnumerator
pRegisterFormatEnumerator
;
HRESULT
WINAPI
IUnknown_QueryService
(
IUnknown
*
,
REFGUID
,
REFIID
,
LPVOID
*
);
HRESULT
WINAPI
SHInvokeCommand
(
HWND
,
IShellFolder
*
,
LPCITEMIDLIST
,
BOOL
);
HRESULT
WINAPI
CLSIDFromStringWrap
(
LPCWSTR
,
CLSID
*
);
BOOL
WINAPI
SHAboutInfoW
(
LPWSTR
,
DWORD
);
/*
...
...
@@ -460,8 +391,7 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
format
->
tymed
=
-
1
;
/* Create a clipboard enumerator */
GET_FUNC
(
pCreateFormatEnumerator
,
urlmon
,
"CreateFormatEnumerator"
,
E_FAIL
);
hRet
=
pCreateFormatEnumerator
(
dwNumValues
,
formatList
,
&
pIEnumFormatEtc
);
hRet
=
CreateFormatEnumerator
(
dwNumValues
,
formatList
,
&
pIEnumFormatEtc
);
if
(
FAILED
(
hRet
)
||
!
pIEnumFormatEtc
)
return
hRet
;
...
...
@@ -496,8 +426,7 @@ HRESULT WINAPI RegisterDefaultAcceptHeaders(LPBC lpBC, IUnknown *lpUnknown)
hRet
=
IEnumFORMATETC_Clone
(
pIEnumFormatEtc
,
&
pClone
);
if
(
!
hRet
&&
pClone
)
{
GET_FUNC
(
pRegisterFormatEnumerator
,
urlmon
,
"RegisterFormatEnumerator"
,
E_FAIL
);
pRegisterFormatEnumerator
(
lpBC
,
pClone
,
0
);
RegisterFormatEnumerator
(
lpBC
,
pClone
,
0
);
IEnumFORMATETC_Release
(
pClone
);
}
...
...
@@ -824,32 +753,6 @@ BOOL WINAPI AppendMenuWrapW(HMENU hMenu, UINT flags, UINT id, LPCWSTR str)
}
/*************************************************************************
* @ [SHLWAPI.74]
*
* Get the text from a given dialog item.
*
* PARAMS
* hWnd [I] Handle of dialog
* nItem [I] Index of item
* lpsDest [O] Buffer for receiving window text
* nDestLen [I] Length of buffer.
*
* RETURNS
* Success: The length of the returned text.
* Failure: 0.
*/
INT
WINAPI
GetDlgItemTextWrapW
(
HWND
hWnd
,
INT
nItem
,
LPWSTR
lpsDest
,
INT
nDestLen
)
{
HWND
hItem
=
GetDlgItem
(
hWnd
,
nItem
);
if
(
hItem
)
return
GetWindowTextW
(
hItem
,
lpsDest
,
nDestLen
);
if
(
nDestLen
)
*
lpsDest
=
(
WCHAR
)
'\0'
;
return
0
;
}
/*************************************************************************
* @ [SHLWAPI.138]
*
* Set the text of a given dialog item.
...
...
@@ -2784,7 +2687,7 @@ BOOL WINAPI GUIDFromStringA(LPCSTR idstr, CLSID *id)
{
WCHAR
wClsid
[
40
];
MultiByteToWideChar
(
CP_ACP
,
0
,
idstr
,
-
1
,
wClsid
,
sizeof
(
wClsid
)
/
sizeof
(
WCHAR
));
return
SUCCEEDED
(
CLSIDFromString
Wrap
(
wClsid
,
id
));
return
SUCCEEDED
(
CLSIDFromString
(
wClsid
,
id
));
}
/*************************************************************************
...
...
@@ -2794,7 +2697,7 @@ BOOL WINAPI GUIDFromStringA(LPCSTR idstr, CLSID *id)
*/
BOOL
WINAPI
GUIDFromStringW
(
LPCWSTR
idstr
,
CLSID
*
id
)
{
return
SUCCEEDED
(
CLSIDFromStringWrap
(
idstr
,
id
));
return
SUCCEEDED
(
CLSIDFromString
((
LPOLESTR
)
idstr
,
id
));
}
/*************************************************************************
...
...
@@ -2821,13 +2724,21 @@ DWORD WINAPI WhichPlatform(void)
static
DWORD
dwState
=
0
;
HKEY
hKey
;
DWORD
dwRet
,
dwData
,
dwSize
;
HMODULE
hshell32
;
if
(
dwState
)
return
dwState
;
/* If shell32 exports DllGetVersion(), the browser is integrated */
GET_FUNC
(
pDllGetVersion
,
shell32
,
"DllGetVersion"
,
1
);
dwState
=
pDllGetVersion
?
2
:
1
;
dwState
=
1
;
hshell32
=
LoadLibraryA
(
"shell32.dll"
);
if
(
hshell32
)
{
FARPROC
pDllGetVersion
;
pDllGetVersion
=
GetProcAddress
(
hshell32
,
"DllGetVersion"
);
dwState
=
pDllGetVersion
?
2
:
1
;
FreeLibrary
(
hshell32
);
}
/* Set or delete the key accordingly */
dwRet
=
RegOpenKeyExA
(
HKEY_LOCAL_MACHINE
,
...
...
@@ -3050,8 +2961,7 @@ HRESULT WINAPI IUnknown_CPContainerOnChanged(IUnknown *lpUnknown, DISPID dispID)
*/
BOOL
WINAPI
PlaySoundWrapW
(
LPCWSTR
pszSound
,
HMODULE
hmod
,
DWORD
fdwSound
)
{
GET_FUNC
(
pPlaySoundW
,
winmm
,
"PlaySoundW"
,
FALSE
);
return
pPlaySoundW
(
pszSound
,
hmod
,
fdwSound
);
return
PlaySoundW
(
pszSound
,
hmod
,
fdwSound
);
}
/*************************************************************************
...
...
@@ -3096,18 +3006,6 @@ BOOL WINAPI SHSetIniStringW(LPWSTR str1, LPVOID x, LPWSTR str2, LPWSTR str3)
}
/*************************************************************************
* @ [SHLWAPI.299]
*
* See COMCTL32_417.
*/
BOOL
WINAPI
ExtTextOutWrapW
(
HDC
hdc
,
INT
x
,
INT
y
,
UINT
flags
,
const
RECT
*
lprect
,
LPCWSTR
str
,
UINT
count
,
const
INT
*
lpDx
)
{
GET_FUNC
(
pCOMCTL32_417
,
comctl32
,
(
LPCSTR
)
417
,
FALSE
);
return
pCOMCTL32_417
(
hdc
,
x
,
y
,
flags
,
lprect
,
str
,
count
,
lpDx
);
}
/*************************************************************************
* @ [SHLWAPI.313]
*
* See SHGetFileInfoW.
...
...
@@ -3115,8 +3013,7 @@ BOOL WINAPI ExtTextOutWrapW(HDC hdc, INT x, INT y, UINT flags, const RECT *lprec
DWORD
WINAPI
SHGetFileInfoWrapW
(
LPCWSTR
path
,
DWORD
dwFileAttributes
,
SHFILEINFOW
*
psfi
,
UINT
sizeofpsfi
,
UINT
flags
)
{
GET_FUNC
(
pSHGetFileInfoW
,
shell32
,
"SHGetFileInfoW"
,
0
);
return
pSHGetFileInfoW
(
path
,
dwFileAttributes
,
psfi
,
sizeofpsfi
,
flags
);
return
SHGetFileInfoW
(
path
,
dwFileAttributes
,
psfi
,
sizeofpsfi
,
flags
);
}
/*************************************************************************
...
...
@@ -3126,8 +3023,7 @@ DWORD WINAPI SHGetFileInfoWrapW(LPCWSTR path, DWORD dwFileAttributes,
*/
UINT
WINAPI
DragQueryFileWrapW
(
HDROP
hDrop
,
UINT
lFile
,
LPWSTR
lpszFile
,
UINT
lLength
)
{
GET_FUNC
(
pDragQueryFileW
,
shell32
,
"DragQueryFileW"
,
0
);
return
pDragQueryFileW
(
hDrop
,
lFile
,
lpszFile
,
lLength
);
return
DragQueryFileW
(
hDrop
,
lFile
,
lpszFile
,
lLength
);
}
/*************************************************************************
...
...
@@ -3137,8 +3033,7 @@ UINT WINAPI DragQueryFileWrapW(HDROP hDrop, UINT lFile, LPWSTR lpszFile, UINT lL
*/
LPITEMIDLIST
WINAPI
SHBrowseForFolderWrapW
(
LPBROWSEINFOW
lpBi
)
{
GET_FUNC
(
pSHBrowseForFolderW
,
shell32
,
"SHBrowseForFolderW"
,
NULL
);
return
pSHBrowseForFolderW
(
lpBi
);
return
SHBrowseForFolderW
(
lpBi
);
}
/*************************************************************************
...
...
@@ -3148,8 +3043,7 @@ LPITEMIDLIST WINAPI SHBrowseForFolderWrapW(LPBROWSEINFOW lpBi)
*/
BOOL
WINAPI
SHGetPathFromIDListWrapW
(
LPCITEMIDLIST
pidl
,
LPWSTR
pszPath
)
{
GET_FUNC
(
pSHGetPathFromIDListW
,
shell32
,
"SHGetPathFromIDListW"
,
0
);
return
pSHGetPathFromIDListW
(
pidl
,
pszPath
);
return
SHGetPathFromIDListW
(
pidl
,
pszPath
);
}
/*************************************************************************
...
...
@@ -3159,8 +3053,7 @@ BOOL WINAPI SHGetPathFromIDListWrapW(LPCITEMIDLIST pidl,LPWSTR pszPath)
*/
BOOL
WINAPI
ShellExecuteExWrapW
(
LPSHELLEXECUTEINFOW
lpExecInfo
)
{
GET_FUNC
(
pShellExecuteExW
,
shell32
,
"ShellExecuteExW"
,
FALSE
);
return
pShellExecuteExW
(
lpExecInfo
);
return
ShellExecuteExW
(
lpExecInfo
);
}
/*************************************************************************
...
...
@@ -3168,31 +3061,18 @@ BOOL WINAPI ShellExecuteExWrapW(LPSHELLEXECUTEINFOW lpExecInfo)
*
* See SHFileOperationW.
*/
HICON
WINAPI
SHFileOperationWrapW
(
LPSHFILEOPSTRUCTW
lpFileOp
)
{
GET_FUNC
(
pSHFileOperationW
,
shell32
,
"SHFileOperationW"
,
0
);
return
pSHFileOperationW
(
lpFileOp
);
}
/*************************************************************************
* @ [SHLWAPI.337]
*
* See ExtractIconExW.
*/
UINT
WINAPI
ExtractIconExWrapW
(
LPCWSTR
lpszFile
,
INT
nIconIndex
,
HICON
*
phiconLarge
,
HICON
*
phiconSmall
,
UINT
nIcons
)
INT
WINAPI
SHFileOperationWrapW
(
LPSHFILEOPSTRUCTW
lpFileOp
)
{
GET_FUNC
(
pExtractIconExW
,
shell32
,
"ExtractIconExW"
,
0
);
return
pExtractIconExW
(
lpszFile
,
nIconIndex
,
phiconLarge
,
phiconSmall
,
nIcons
);
return
SHFileOperationW
(
lpFileOp
);
}
/*************************************************************************
* @ [SHLWAPI.342]
*
*/
LONG
WINAPI
SHInterlockedCompareExchange
(
PLONG
dest
,
LONG
xchg
,
LONG
compare
)
PVOID
WINAPI
SHInterlockedCompareExchange
(
PVOID
*
dest
,
PVOID
xchg
,
PVOID
compare
)
{
return
InterlockedCompareExchange
(
dest
,
xchg
,
compare
);
return
InterlockedCompareExchangePointer
(
dest
,
xchg
,
compare
);
}
/*************************************************************************
...
...
@@ -3200,15 +3080,9 @@ LONG WINAPI SHInterlockedCompareExchange( PLONG dest, LONG xchg, LONG compare)
*
* See GetFileVersionInfoSizeW.
*/
DWORD
WINAPI
GetFileVersionInfoSizeWrapW
(
LPWSTR
x
,
LPVOID
y
)
DWORD
WINAPI
GetFileVersionInfoSizeWrapW
(
LPCWSTR
filename
,
LPDWORD
handle
)
{
DWORD
ret
;
GET_FUNC
(
pGetFileVersionInfoSizeW
,
version
,
"GetFileVersionInfoSizeW"
,
0
);
ret
=
pGetFileVersionInfoSizeW
(
x
,
y
);
return
0x208
+
ret
;
return
GetFileVersionInfoSizeW
(
filename
,
handle
);
}
/*************************************************************************
...
...
@@ -3216,14 +3090,10 @@ DWORD WINAPI GetFileVersionInfoSizeWrapW(
*
* See GetFileVersionInfoW.
*/
BOOL
WINAPI
GetFileVersionInfoWrapW
(
LPWSTR
w
,
/* [in] path to dll */
DWORD
x
,
/* [in] parm 2 to GetFileVersionInfoA */
DWORD
y
,
/* [in] return value from SHLWAPI_350() - assume length */
LPVOID
z
)
/* [in/out] buffer (+0x208 sent to GetFileVersionInfoA()) */
BOOL
WINAPI
GetFileVersionInfoWrapW
(
LPCWSTR
filename
,
DWORD
handle
,
DWORD
datasize
,
LPVOID
data
)
{
GET_FUNC
(
pGetFileVersionInfoW
,
version
,
"GetFileVersionInfoW"
,
0
);
return
pGetFileVersionInfoW
(
w
,
x
,
y
-
0x208
,
(
char
*
)
z
+
0x208
);
return
GetFileVersionInfoW
(
filename
,
handle
,
datasize
,
data
);
}
/*************************************************************************
...
...
@@ -3231,14 +3101,10 @@ BOOL WINAPI GetFileVersionInfoWrapW(
*
* See VerQueryValueW.
*/
WORD
WINAPI
VerQueryValueWrapW
(
LPVOID
w
,
/* [in] Buffer from SHLWAPI_351() */
LPWSTR
x
,
/* [in] Value to retrieve - converted and passed to VerQueryValueA() as #2 */
LPVOID
y
,
/* [out] Ver buffer - passed to VerQueryValueA as #3 */
UINT
*
z
)
/* [in] Ver length - passed to VerQueryValueA as #4 */
WORD
WINAPI
VerQueryValueWrapW
(
LPVOID
pBlock
,
LPCWSTR
lpSubBlock
,
LPVOID
*
lplpBuffer
,
UINT
*
puLen
)
{
GET_FUNC
(
pVerQueryValueW
,
version
,
"VerQueryValueW"
,
0
);
return
pVerQueryValueW
((
char
*
)
w
+
0x208
,
x
,
y
,
z
);
return
VerQueryValueW
(
pBlock
,
lpSubBlock
,
lplpBuffer
,
puLen
);
}
#define IsIface(type) SUCCEEDED((hRet = IUnknown_QueryInterface(lpUnknown, &IID_##type, (void**)&lpObj)))
...
...
@@ -3302,8 +3168,7 @@ HRESULT WINAPI IUnknown_EnableModeless(IUnknown *lpUnknown, BOOL bModeless)
BOOL
WINAPI
SHGetNewLinkInfoWrapW
(
LPCWSTR
pszLinkTo
,
LPCWSTR
pszDir
,
LPWSTR
pszName
,
BOOL
*
pfMustCopy
,
UINT
uFlags
)
{
GET_FUNC
(
pSHGetNewLinkInfoW
,
shell32
,
"SHGetNewLinkInfoW"
,
FALSE
);
return
pSHGetNewLinkInfoW
(
pszLinkTo
,
pszDir
,
pszName
,
pfMustCopy
,
uFlags
);
return
SHGetNewLinkInfoW
(
pszLinkTo
,
pszDir
,
pszName
,
pfMustCopy
,
uFlags
);
}
/*************************************************************************
...
...
@@ -3314,8 +3179,7 @@ BOOL WINAPI SHGetNewLinkInfoWrapW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszN
UINT
WINAPI
SHDefExtractIconWrapW
(
LPCWSTR
pszIconFile
,
int
iIndex
,
UINT
uFlags
,
HICON
*
phiconLarge
,
HICON
*
phiconSmall
,
UINT
nIconSize
)
{
GET_FUNC
(
pSHDefExtractIconW
,
shell32
,
"SHDefExtractIconW"
,
0
);
return
pSHDefExtractIconW
(
pszIconFile
,
iIndex
,
uFlags
,
phiconLarge
,
phiconSmall
,
nIconSize
);
return
SHDefExtractIconW
(
pszIconFile
,
iIndex
,
uFlags
,
phiconLarge
,
phiconSmall
,
nIconSize
);
}
/*************************************************************************
...
...
@@ -3391,8 +3255,7 @@ HRESULT WINAPI SHInvokeCommand(HWND hWnd, IShellFolder* lpFolder, LPCITEMIDLIST
HICON
WINAPI
ExtractIconWrapW
(
HINSTANCE
hInstance
,
LPCWSTR
lpszExeFileName
,
UINT
nIconIndex
)
{
GET_FUNC
(
pExtractIconW
,
shell32
,
"ExtractIconW"
,
NULL
);
return
pExtractIconW
(
hInstance
,
lpszExeFileName
,
nIconIndex
);
return
ExtractIconW
(
hInstance
,
lpszExeFileName
,
nIconIndex
);
}
/*************************************************************************
...
...
@@ -3509,8 +3372,7 @@ COLORREF WINAPI ColorAdjustLuma(COLORREF cRGB, int dwLuma, BOOL bUnknown)
*/
BOOL
WINAPI
GetSaveFileNameWrapW
(
LPOPENFILENAMEW
ofn
)
{
GET_FUNC
(
pGetSaveFileNameW
,
comdlg32
,
"GetSaveFileNameW"
,
FALSE
);
return
pGetSaveFileNameW
(
ofn
);
return
GetSaveFileNameW
(
ofn
);
}
/*************************************************************************
...
...
@@ -3520,8 +3382,7 @@ BOOL WINAPI GetSaveFileNameWrapW(LPOPENFILENAMEW ofn)
*/
DWORD
WINAPI
WNetRestoreConnectionWrapW
(
HWND
hwndOwner
,
LPWSTR
lpszDevice
)
{
GET_FUNC
(
pWNetRestoreConnectionW
,
mpr
,
"WNetRestoreConnectionW"
,
0
);
return
pWNetRestoreConnectionW
(
hwndOwner
,
lpszDevice
);
return
WNetRestoreConnectionW
(
hwndOwner
,
lpszDevice
);
}
/*************************************************************************
...
...
@@ -3532,8 +3393,7 @@ DWORD WINAPI WNetRestoreConnectionWrapW(HWND hwndOwner, LPWSTR lpszDevice)
DWORD
WINAPI
WNetGetLastErrorWrapW
(
LPDWORD
lpError
,
LPWSTR
lpErrorBuf
,
DWORD
nErrorBufSize
,
LPWSTR
lpNameBuf
,
DWORD
nNameBufSize
)
{
GET_FUNC
(
pWNetGetLastErrorW
,
mpr
,
"WNetGetLastErrorW"
,
0
);
return
pWNetGetLastErrorW
(
lpError
,
lpErrorBuf
,
nErrorBufSize
,
lpNameBuf
,
nNameBufSize
);
return
WNetGetLastErrorW
(
lpError
,
lpErrorBuf
,
nErrorBufSize
,
lpNameBuf
,
nNameBufSize
);
}
/*************************************************************************
...
...
@@ -3543,8 +3403,7 @@ DWORD WINAPI WNetGetLastErrorWrapW(LPDWORD lpError, LPWSTR lpErrorBuf, DWORD nEr
*/
BOOL
WINAPI
PageSetupDlgWrapW
(
LPPAGESETUPDLGW
pagedlg
)
{
GET_FUNC
(
pPageSetupDlgW
,
comdlg32
,
"PageSetupDlgW"
,
FALSE
);
return
pPageSetupDlgW
(
pagedlg
);
return
PageSetupDlgW
(
pagedlg
);
}
/*************************************************************************
...
...
@@ -3554,8 +3413,7 @@ BOOL WINAPI PageSetupDlgWrapW(LPPAGESETUPDLGW pagedlg)
*/
BOOL
WINAPI
PrintDlgWrapW
(
LPPRINTDLGW
printdlg
)
{
GET_FUNC
(
pPrintDlgW
,
comdlg32
,
"PrintDlgW"
,
FALSE
);
return
pPrintDlgW
(
printdlg
);
return
PrintDlgW
(
printdlg
);
}
/*************************************************************************
...
...
@@ -3565,8 +3423,7 @@ BOOL WINAPI PrintDlgWrapW(LPPRINTDLGW printdlg)
*/
BOOL
WINAPI
GetOpenFileNameWrapW
(
LPOPENFILENAMEW
ofn
)
{
GET_FUNC
(
pGetOpenFileNameW
,
comdlg32
,
"GetOpenFileNameW"
,
FALSE
);
return
pGetOpenFileNameW
(
ofn
);
return
GetOpenFileNameW
(
ofn
);
}
/*************************************************************************
...
...
@@ -3761,99 +3618,10 @@ DWORD WINAPI MLClearMLHInstance(DWORD x)
*
* RETURNS
* S_OK on success or E_INVALIDARG on failure
*
* NOTES
* This is really CLSIDFromString() which is exported by ole32.dll,
* however the native shlwapi.dll does *not* import ole32. Nor does
* ole32.dll import this ordinal from shlwapi. Therefore we must conclude
* that MS duplicated the code for CLSIDFromString(), and yes they did, only
* it returns an E_INVALIDARG error code on failure.
* This is a duplicate (with changes for Unicode) of CLSIDFromString16()
* in "dlls/ole32/compobj.c".
*/
HRESULT
WINAPI
CLSIDFromStringWrap
(
LPCWSTR
idstr
,
CLSID
*
id
)
{
LPCWSTR
s
=
idstr
;
BYTE
*
p
;
INT
i
;
WCHAR
table
[
256
];
if
(
!
s
)
{
memset
(
id
,
0
,
sizeof
(
CLSID
));
return
S_OK
;
}
else
{
/* validate the CLSID string */
if
(
strlenW
(
s
)
!=
38
)
return
E_INVALIDARG
;
if
((
s
[
0
]
!=
L'{'
)
||
(
s
[
9
]
!=
L'-'
)
||
(
s
[
14
]
!=
L'-'
)
||
(
s
[
19
]
!=
L'-'
)
||
(
s
[
24
]
!=
L'-'
)
||
(
s
[
37
]
!=
L'}'
))
return
E_INVALIDARG
;
for
(
i
=
1
;
i
<
37
;
i
++
)
{
if
((
i
==
9
)
||
(
i
==
14
)
||
(
i
==
19
)
||
(
i
==
24
))
continue
;
if
(
!
(((
s
[
i
]
>=
L'0'
)
&&
(
s
[
i
]
<=
L'9'
))
||
((
s
[
i
]
>=
L'a'
)
&&
(
s
[
i
]
<=
L'f'
))
||
((
s
[
i
]
>=
L'A'
)
&&
(
s
[
i
]
<=
L'F'
)))
)
return
E_INVALIDARG
;
}
}
TRACE
(
"%s -> %p
\n
"
,
debugstr_w
(
s
),
id
);
/* quick lookup table */
memset
(
table
,
0
,
256
*
sizeof
(
WCHAR
));
for
(
i
=
0
;
i
<
10
;
i
++
)
{
table
[
'0'
+
i
]
=
i
;
}
for
(
i
=
0
;
i
<
6
;
i
++
)
{
table
[
'A'
+
i
]
=
i
+
10
;
table
[
'a'
+
i
]
=
i
+
10
;
}
/* in form {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} */
p
=
(
BYTE
*
)
id
;
s
++
;
/* skip leading brace */
for
(
i
=
0
;
i
<
4
;
i
++
)
{
p
[
3
-
i
]
=
table
[
*
s
]
<<
4
|
table
[
*
(
s
+
1
)];
s
+=
2
;
}
p
+=
4
;
s
++
;
/* skip - */
for
(
i
=
0
;
i
<
2
;
i
++
)
{
p
[
1
-
i
]
=
table
[
*
s
]
<<
4
|
table
[
*
(
s
+
1
)];
s
+=
2
;
}
p
+=
2
;
s
++
;
/* skip - */
for
(
i
=
0
;
i
<
2
;
i
++
)
{
p
[
1
-
i
]
=
table
[
*
s
]
<<
4
|
table
[
*
(
s
+
1
)];
s
+=
2
;
}
p
+=
2
;
s
++
;
/* skip - */
/* these are just sequential bytes */
for
(
i
=
0
;
i
<
2
;
i
++
)
{
*
p
++
=
table
[
*
s
]
<<
4
|
table
[
*
(
s
+
1
)];
s
+=
2
;
}
s
++
;
/* skip - */
for
(
i
=
0
;
i
<
6
;
i
++
)
{
*
p
++
=
table
[
*
s
]
<<
4
|
table
[
*
(
s
+
1
)];
s
+=
2
;
}
return
S_OK
;
return
CLSIDFromString
((
LPOLESTR
)
idstr
,
id
);
}
/*************************************************************************
...
...
@@ -4441,20 +4209,9 @@ UINT WINAPI ZoneComputePaneSize(HWND hwnd)
return
0x95
;
}
typedef
void
(
WINAPI
*
fnSHChangeNotify
)(
LONG
,
UINT
,
LPCVOID
,
LPCVOID
);
void
WINAPI
SHChangeNotify
(
LONG
wEventId
,
UINT
uFlags
,
LPCVOID
dwItem1
,
LPCVOID
dwItem2
)
{
static
fnSHChangeNotify
fn
;
HMODULE
hshell32
;
if
(
!
fn
)
{
hshell32
=
LoadLibraryA
(
"shell32"
);
if
(
hshell32
)
fn
=
(
fnSHChangeNotify
)
GetProcAddress
(
hshell32
,
"SHChangeNotify"
);
}
fn
(
wEventId
,
uFlags
,
dwItem1
,
dwItem2
);
SHChangeNotify
(
wEventId
,
uFlags
,
dwItem1
,
dwItem2
);
}
typedef
struct
SHELL_USER_SID
{
/* according to MSDN this should be in shlobj.h... */
...
...
dlls/shlwapi/path.c
View file @
03e9e5b6
...
...
@@ -50,7 +50,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
} while (0)
/* DLL handles for late bound calls */
extern
HMODULE
SHLWAPI_hshell32
;
static
HMODULE
SHLWAPI_hshell32
;
/* Function pointers for GET_FUNC macro; these need to be global because of gcc bug */
typedef
BOOL
(
WINAPI
*
fnpIsNetDrive
)(
int
);
...
...
dlls/shlwapi/shlwapi.spec
View file @
03e9e5b6
...
...
@@ -71,7 +71,7 @@
71 stdcall @(long ptr long) user32.GetClassNameW
72 stdcall @(long ptr long) user32.GetClipboardFormatNameW
73 stdcall @(long ptr) kernel32.GetCurrentDirectoryW
74 stdcall
-noname GetDlgItemTextWrapW(long long wstr long)
74 stdcall
@(long long wstr long) user32.GetDlgItemTextW
75 stdcall @(wstr) kernel32.GetFileAttributesW
76 stdcall @(wstr long ptr ptr) kernel32.GetFullPathNameW
77 stdcall @(long long ptr long) kernel32.GetLocaleInfoW
...
...
@@ -296,7 +296,7 @@
296 stub -noname CreateURLFileContentsW
297 stub -noname CreateURLFileContentsA
298 stdcall @(wstr wstr wstr wstr) kernel32.WritePrivateProfileStringW
299 stdcall
-noname ExtTextOutWrapW(long long long long ptr wstr long ptr)
299 stdcall
@(long long long long ptr wstr long ptr) gdi32.ExtTextOutW
300 stdcall @(long long long long long long long long long long long long long wstr) gdi32.CreateFontW
301 stdcall @(long wstr long ptr long ptr) user32.DrawTextExW
302 stdcall @(long long long ptr) user32.GetMenuItemInfoW
...
...
@@ -334,12 +334,12 @@
334 stdcall -noname SHGetPathFromIDListWrapW(ptr ptr)
335 stdcall -noname ShellExecuteExWrapW(ptr)
336 stdcall -noname SHFileOperationWrapW(ptr)
337 stdcall
-noname ExtractIconExWrapW(wstr long ptr ptr long)
337 stdcall
@(wstr long ptr ptr long) user32.ExtractIconExW
338 stdcall @(wstr long) kernel32.SetFileAttributesW
339 stdcall @(long long wstr ptr ptr long) kernel32.GetNumberFormatW
340 stdcall @(long wstr wstr long) user32.MessageBoxW
341 stdcall @(long ptr) kernel32.FindNextFileW
342 stdcall -noname SHInterlockedCompareExchange(ptr
long long
)
342 stdcall -noname SHInterlockedCompareExchange(ptr
ptr ptr
)
343 stdcall -noname SHRegGetCLSIDKeyA(ptr str long long ptr)
344 stdcall -noname SHRegGetCLSIDKeyW(ptr wstr long long ptr)
345 stdcall -noname SHAnsiToAnsi(str ptr long)
...
...
@@ -348,7 +348,7 @@
348 stub -noname SHGetFileDescriptionW
349 stub -noname SHGetFileDescriptionA
350 stdcall -noname GetFileVersionInfoSizeWrapW(wstr ptr)
351 stdcall -noname GetFileVersionInfoWrapW(wstr
ptr
long ptr)
351 stdcall -noname GetFileVersionInfoWrapW(wstr
long
long ptr)
352 stdcall -noname VerQueryValueWrapW(ptr wstr ptr ptr)
353 stub -noname SHFormatDateTimeA
354 stub -noname SHFormatDateTimeW
...
...
dlls/shlwapi/shlwapi_main.c
View file @
03e9e5b6
...
...
@@ -23,24 +23,14 @@
#include "windef.h"
#include "winbase.h"
#include "winerror.h"
#include "wine/debug.h"
#define NO_SHLWAPI_REG
#define NO_SHLWAPI_STREAM
#include "shlwapi.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shell
);
HINSTANCE
shlwapi_hInstance
=
0
;
HMODULE
SHLWAPI_hshell32
=
0
;
HMODULE
SHLWAPI_hwinmm
=
0
;
HMODULE
SHLWAPI_hcomdlg32
=
0
;
HMODULE
SHLWAPI_hcomctl32
=
0
;
HMODULE
SHLWAPI_hmpr
=
0
;
HMODULE
SHLWAPI_hmlang
=
0
;
HMODULE
SHLWAPI_hurlmon
=
0
;
HMODULE
SHLWAPI_hversion
=
0
;
DWORD
SHLWAPI_ThreadRef_index
=
TLS_OUT_OF_INDEXES
;
/*************************************************************************
...
...
@@ -74,14 +64,6 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
SHLWAPI_ThreadRef_index
=
TlsAlloc
();
break
;
case
DLL_PROCESS_DETACH
:
if
(
SHLWAPI_hshell32
)
FreeLibrary
(
SHLWAPI_hshell32
);
if
(
SHLWAPI_hwinmm
)
FreeLibrary
(
SHLWAPI_hwinmm
);
if
(
SHLWAPI_hcomdlg32
)
FreeLibrary
(
SHLWAPI_hcomdlg32
);
if
(
SHLWAPI_hcomctl32
)
FreeLibrary
(
SHLWAPI_hcomctl32
);
if
(
SHLWAPI_hmpr
)
FreeLibrary
(
SHLWAPI_hmpr
);
if
(
SHLWAPI_hmlang
)
FreeLibrary
(
SHLWAPI_hmlang
);
if
(
SHLWAPI_hurlmon
)
FreeLibrary
(
SHLWAPI_hurlmon
);
if
(
SHLWAPI_hversion
)
FreeLibrary
(
SHLWAPI_hversion
);
if
(
SHLWAPI_ThreadRef_index
!=
TLS_OUT_OF_INDEXES
)
TlsFree
(
SHLWAPI_ThreadRef_index
);
break
;
}
...
...
dlls/shlwapi/string.c
View file @
03e9e5b6
...
...
@@ -37,6 +37,7 @@
#include "wingdi.h"
#include "winuser.h"
#include "shlobj.h"
#include "mlang.h"
#include "ddeml.h"
#include "wine/unicode.h"
#include "wine/debug.h"
...
...
@@ -45,22 +46,8 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
shell
);
/* Get a function pointer from a DLL handle */
#define GET_FUNC(func, module, name, fail) \
do { \
if (!func) { \
if (!SHLWAPI_h##module && !(SHLWAPI_h##module = LoadLibraryA(#module ".dll"))) return fail; \
func = (fn##func)GetProcAddress(SHLWAPI_h##module, name); \
if (!func) return fail; \
} \
} while (0)
extern
HMODULE
SHLWAPI_hmlang
;
extern
HINSTANCE
shlwapi_hInstance
;
typedef
HRESULT
(
WINAPI
*
fnpConvertINetUnicodeToMultiByte
)(
LPDWORD
,
DWORD
,
LPCWSTR
,
LPINT
,
LPSTR
,
LPINT
);
static
fnpConvertINetUnicodeToMultiByte
pConvertINetUnicodeToMultiByte
;
static
HRESULT
WINAPI
_SHStrDupAA
(
LPCSTR
,
LPSTR
*
);
static
HRESULT
WINAPI
_SHStrDupAW
(
LPCWSTR
,
LPSTR
*
);
...
...
@@ -2609,8 +2596,7 @@ INT WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr,
DWORD
dwMode
=
0
;
INT
nWideCharCount
=
len
-
1
;
GET_FUNC
(
pConvertINetUnicodeToMultiByte
,
mlang
,
"ConvertINetUnicodeToMultiByte"
,
0
);
if
(
!
pConvertINetUnicodeToMultiByte
(
&
dwMode
,
CodePage
,
lpSrcStr
,
&
nWideCharCount
,
lpDstStr
,
if
(
!
ConvertINetUnicodeToMultiByte
(
&
dwMode
,
CodePage
,
lpSrcStr
,
&
nWideCharCount
,
lpDstStr
,
lpiLen
))
return
0
;
...
...
@@ -2622,7 +2608,7 @@ INT WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr,
*
lpiLen
=
0
;
if
(
p
ConvertINetUnicodeToMultiByte
(
&
dwMode
,
CodePage
,
lpSrcStr
,
&
len
,
mem
,
lpiLen
))
if
(
ConvertINetUnicodeToMultiByte
(
&
dwMode
,
CodePage
,
lpSrcStr
,
&
len
,
mem
,
lpiLen
))
{
SHTruncateString
(
mem
,
*
lpiLen
);
lstrcpynA
(
lpDstStr
,
mem
,
*
lpiLen
+
1
);
...
...
dlls/shlwapi/thread.c
View file @
03e9e5b6
...
...
@@ -26,31 +26,18 @@
#include "windef.h"
#include "winbase.h"
#include "winnls.h"
#include "win
e/debug
.h"
#include "win
user
.h"
#define NO_SHLWAPI_REG
#define NO_SHLWAPI_PATH
#define NO_SHLWAPI_GDI
#define NO_SHLWAPI_STREAM
#define NO_SHLWAPI_USER
#include "shlwapi.h"
#include "shlobj.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
shell
);
/* Get a function pointer from a DLL handle */
#define GET_FUNC(func, module, name, fail) \
do { \
if (!func) { \
if (!SHLWAPI_h##module && !(SHLWAPI_h##module = LoadLibraryA(#module ".dll"))) return fail; \
if (!(func = (void*)GetProcAddress(SHLWAPI_h##module, name))) return fail; \
} \
} while (0)
/* DLL handles for late bound calls */
extern
HMODULE
SHLWAPI_hshell32
;
/* Function pointers for GET_FUNC macro; these need to be global because of gcc bug */
static
HRESULT
(
WINAPI
*
pSHGetInstanceExplorer
)(
IUnknown
**
);
extern
DWORD
SHLWAPI_ThreadRef_index
;
/* Initialised in shlwapi_main.c */
DWORD
WINAPI
SHStringFromGUIDA
(
REFGUID
,
LPSTR
,
INT
);
...
...
@@ -118,9 +105,7 @@ HRESULT WINAPI _SHGetInstanceExplorer(IUnknown **lppUnknown)
{
/* This function is used within SHLWAPI only to hold the IE reference
* for threads created with the CTF_PROCESS_REF flag set. */
GET_FUNC
(
pSHGetInstanceExplorer
,
shell32
,
"SHGetInstanceExplorer"
,
E_FAIL
);
return
pSHGetInstanceExplorer
(
lppUnknown
);
return
SHGetInstanceExplorer
(
lppUnknown
);
}
/* Internal thread information structure */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment