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