Geoff Chappell - Software Analyst
The IShellBrowserService interface has just the one method (after the IUnknown methods):
It has the prototype:
HRESULT GetPropertyBag (DWORD, REFIID, PVOID *);
BROWSEUI implements the IShellBrowserService interface for internal classes CShellBrowser2 and CExplorerBrowser derived from the creatable class CCommonBrowser. A similar implementation is in SHELL32 for its internal class CDesktopBrowser. Both implementations get their property bag through the SHGetViewStatePropertyBag function (using the names Shell and Desktop, respectively). The implementation in BROWSEUI is the more general, the one in SHELL32 being limited to the special folder location represented by CSIDL_DESKTOP.
All known use of the interface goes through the undocumented IUnknown_QueryServicePropertyBag function in SHLWAPI.
The IShellBrowserService interface is implemented in builds of BROWSEUI version 6.0 from before Windows Vista (including in builds of BROWSEUI from Internet Explorer 7.0 and 8.0 intended for installation on Windows XP or Windows Server 2003). It is also implemented in SHELL32 version 6.0 from before Windows Vista.
In BROWSEUI and SHELL32 for Windows Vista, this original IShellBrowserService was combined with the documented IBrowserService4 family to produce IShellBrowserService4 and its bases. The IShellBrowserService among the bases of IShellBrowserService4 is a different interface. So too is the IShellBrowserService that is implemented in SHELL32 version 6.1.
All this rearrangement presumably had something to do with attempts to separate Internet Explorer functionality from Windows. In this context, note that IEFRAME version 7.0 implements an interface named IIEBrowserService which is the same as this original IShellBrowserService except for having a new name and IID.