DLL separation for shell32
Rolf Kalbermatter
rolf.kalbermatter at citeng.com
Fri Dec 13 09:15:13 CST 2002
Looking at shell32.dll I do see that it is the intention to get rid
completely of any link time dependencies to ole32.dll for DLL separation.
There are several late bound dependencies but I guess these are not any
issue as they can not possible cause circular dependencies at load time.
I have identified following direct dependencies from shell32 on ole32.
location resolution
pidl.c
CLSIDFromString change to SHCLSIDFromString
shell32_main.c
CoCreateInstance change to internal late bound __CoCreateInstance
shellole.c
CoCreateInstance change to internal late bound __CoCreateInstance
CLSIDFromString SHCLSIDFromString either link or forward to
SHLWAPI_436 or create late bound CLSIDFromString
shellord.c
CoCreateInstance change to internal late bound __CoCreateInstance
CoUninitialize create late bound CoUninitialize
CoInitialize create late bound CoInitialize
shellstring.c
CoTaskMemFree create late bound CoTaskMemFree
shlfldr_desktop.c
CLSIDFromString change to SHCLSIDFromString
The questions I have is, is it desirable to change those dependencies to late bound calls
to OLE32, as there are already several in shell32.dll to remove any direct load dependency
or does this only create additional problems?
Also the remark in shlwapi.ordinal.c about SHLWAPI_436 that it must recode the function
as the native DLL seems not to import ole32 or vice versa seems a bit strange. What if
native also uses late binding for those functions?
Rolf Kalbermatter
More information about the wine-devel
mailing list