diff --git a/modules/rostests/apitests/com/CMakeLists.txt b/modules/rostests/apitests/com/CMakeLists.txt index 8451eff8ecc..1444472d879 100644 --- a/modules/rostests/apitests/com/CMakeLists.txt +++ b/modules/rostests/apitests/com/CMakeLists.txt @@ -5,12 +5,16 @@ list(APPEND SOURCE browseui.c certmgr.c com_apitest.c + combase.c + explorerframe.c ieframe.c netcfgx.c netshell.c ole32.c + prnfldr.c shdocvw.c shell32.c + windows_storage.c zipfldr.c) list(APPEND PCH_SKIP_SOURCE diff --git a/modules/rostests/apitests/com/browseui.c b/modules/rostests/apitests/com/browseui.c index 6550ffb3cbd..e854bad045a 100644 --- a/modules/rostests/apitests/com/browseui.c +++ b/modules/rostests/apitests/com/browseui.c @@ -3,6 +3,7 @@ * LICENSE: GPLv2+ - See COPYING in the top level directory * PURPOSE: COM interface test for browseui classes * PROGRAMMER: Thomas Faber + * Carl Bialorucki */ #include "com_apitest.h" @@ -13,405 +14,423 @@ static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { { - ID_NAME(CLSID_ACLCustomMRU), + ID_NAME(CLSID_ACLCustomMRU, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IEnumString }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IACList }, - { 0x8, &IID_IACLCustomMRU }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACLCustomMRU }, }, }, { - ID_NAME(CLSID_ACLHistory), + ID_NAME(CLSID_ACLHistory, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IEnumString }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, }, }, { - ID_NAME(CLSID_ACLMRU), + ID_NAME(CLSID_ACLMRU, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IEnumString }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IACList }, - { 0x8, &IID_IACLCustomMRU }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACLCustomMRU }, }, }, { - ID_NAME(CLSID_ACLMulti), + ID_NAME(CLSID_ACLMulti, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IEnumString }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjMgr }, - { 0x8, &IID_IACList }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjMgr }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList }, } }, { - ID_NAME(CLSID_ACListISF), + ID_NAME(CLSID_ACListISF, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IEnumString }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IACList2 }, - { 0x4, &IID_IACList }, - { 0x8, &IID_ICurrentWorkingDirectory }, - { 0xc, &IID_IShellService }, - { 0x10, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellService }, + + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_ICurrentWorkingDirectory }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersistIDList }, } }, { - ID_NAME(CLSID_AddressEditBox), + ID_NAME(CLSID_AddressEditBox, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IWinEventHandler }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IDispatch }, - { 0x8, &IID_IAddressBand }, - { 0xc, &IID_IAddressEditBox }, - { 0x10, &IID_IOleCommandTarget }, - { 0x14, &IID_IPersistStream }, - { 0x18, &IID_IShellService }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAddressBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAddressEditBox }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellService }, } }, { - ID_NAME(CLSID_AugmentedShellFolder), + ID_NAME(CLSID_AugmentedShellFolder, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IAugmentedShellFolder2 }, - { 0x0, &IID_IAugmentedShellFolder }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellService }, - { 0x8, &IID_ITranslateShellChangeNotify }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellService }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITranslateShellChangeNotify }, } }, { - ID_NAME(CLSID_AugmentedShellFolder2), + ID_NAME(CLSID_AugmentedShellFolder2, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IAugmentedShellFolder2 }, - { 0x0, &IID_IAugmentedShellFolder }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellFolder2 }, - { 0x8, &IID_IShellService }, - { 0xc, &IID_ITranslateShellChangeNotify }, - { 0x10, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellService }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITranslateShellChangeNotify }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDropTarget }, } }, { - ID_NAME(CLSID_AutoComplete), + ID_NAME(CLSID_AutoComplete, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IAutoComplete2 }, - { 0x0, &IID_IAutoComplete }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IAutoCompleteDropDown }, - { 0x8, &IID_IEnumString }, - { 0xc, &IID_IAccessible }, - { 0xc, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IAutoComplete2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IAutoComplete }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IAutoCompleteDropDown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IAccessible }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellService }, } }, { - ID_NAME(CLSID_BackgroundTaskScheduler), + ID_NAME(CLSID_BackgroundTaskScheduler, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IShellTaskScheduler }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellTaskScheduler }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_BandProxy), + ID_NAME(CLSID_BandProxy, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IBandProxy }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandProxy }, + + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_BandSiteMenu), + ID_NAME(CLSID_BandSiteMenu, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IContextMenu3 }, - { 0x0, &IID_IContextMenu2 }, - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellService }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellService }, } }, { - ID_NAME(CLSID_BrandBand), + ID_NAME(CLSID_BrandBand, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IDeskBand }, - { 0x0, &IID_IDockingWindow }, - { 0x0, &IID_IOleWindow }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectWithSite }, - { 0xc, &IID_IInputObject }, - { 0x10, &IID_IPersistStream }, - { 0x10, &IID_IPersist }, - { 0x14, &IID_IOleCommandTarget }, - { 0x18, &IID_IServiceProvider }, - { 0x30, &IID_IWinEventHandler }, - { 0x34, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch }, } }, { - ID_NAME(CLSID_BrowserBand), + ID_NAME(CLSID_BrowserBand, NTDDI_MIN, NTDDI_VISTASP4), { - { -0x30, &IID_IDeskBand }, - { -0x30, &IID_IDockingWindow }, - { -0x30, &IID_IOleWindow }, - { -0x2c, &IID_IObjectWithSite }, - { -0x24, &IID_IInputObject }, - { -0x20, &IID_IPersistStream }, - { -0x20, &IID_IPersist }, - { -0x1c, &IID_IOleCommandTarget }, - { -0x18, &IID_IServiceProvider }, - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IWinEventHandler }, - { 0x8, &IID_IDispatch }, - { 0x10, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, }, }, { - ID_NAME(CLSID_CCommonBrowser), + ID_NAME(CLSID_CCommonBrowser, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IUnknown }, - { 0xc, &IID_IShellBrowser }, - { 0xc, &IID_IOleWindow }, - { 0x10, &IID_IBrowserService3 }, - { 0x10, &IID_IBrowserService2 }, - { 0x10, &IID_IBrowserService }, - { 0x14, &IID_IServiceProvider }, - { 0x18, &IID_IOleCommandTarget }, - { 0x1c, &IID_IDockingWindowSite }, - { 0x20, &IID_IDockingWindowFrame }, - { 0x24, &IID_IInputObjectSite }, - { 0x28, &IID_IDropTarget }, - { 0x2c, &IID_IShellBrowserService }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellBrowser }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserService3 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserService2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserService }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindowSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindowFrame }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDropTarget }, } }, { - ID_NAME(CLSID_CDockingBarPropertyBag), + ID_NAME(CLSID_CDockingBarPropertyBag, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IPropertyBag }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPropertyBag }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, }, }, { - ID_NAME(CLSID_CRegTreeOptions), + ID_NAME(CLSID_CRegTreeOptions, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IRegTreeOptions }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IRegTreeOptions }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, } }, { - ID_NAME(CLSID_CommBand), + ID_NAME(CLSID_CommBand, NTDDI_MIN, NTDDI_VISTASP4), { - { -0x30, &IID_IDeskBand }, - { -0x30, &IID_IDockingWindow }, - { -0x30, &IID_IOleWindow }, - { -0x2c, &IID_IObjectWithSite }, - { -0x24, &IID_IInputObject }, - { -0x20, &IID_IPersistStream }, - { -0x20, &IID_IPersist }, - { -0x1c, &IID_IOleCommandTarget }, - { -0x18, &IID_IServiceProvider }, - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IWinEventHandler }, - { 0x8, &IID_IDispatch }, - { 0x10, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, }, }, { - ID_NAME(CLSID_DeskBar), + ID_NAME(CLSID_DeskBar, NTDDI_MIN, NTDDI_WS03SP4), { - { -0xb8, &IID_IOleCommandTarget }, - { -0xb4, &IID_IServiceProvider }, - { -0xb0, &IID_IDeskBar }, - { -0xb0, &IID_IOleWindow }, - { -0xac, &IID_IInputObjectSite }, - { -0xa8, &IID_IInputObject }, - { -0x70, &IID_IDockingWindow }, - { -0x6c, &IID_IObjectWithSite }, - { -0x68, &IID_IPersistStreamInit }, - { -0x68, &IID_IPersistStream }, - { -0x68, &IID_IPersist }, - { -0x64, &IID_IPersistPropertyBag }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBar }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_DeskBarApp), + ID_NAME(CLSID_DeskBarApp, NTDDI_MIN, NTDDI_VISTASP4), { - { -0xb8, &IID_IOleCommandTarget }, - { -0xb4, &IID_IServiceProvider }, - { -0xb0, &IID_IDeskBar }, - { -0xb0, &IID_IOleWindow }, - { -0xac, &IID_IInputObjectSite }, - { -0xa8, &IID_IInputObject }, - { -0x70, &IID_IDockingWindow }, - { -0x6c, &IID_IObjectWithSite }, - { -0x68, &IID_IPersistStreamInit }, - { -0x68, &IID_IPersistStream }, - { -0x68, &IID_IPersist }, - { -0x64, &IID_IPersistPropertyBag }, - { 0x0, &IID_IUnknown }, - { 0x8, &IID_IContextMenu3 }, - { 0x8, &IID_IContextMenu2 }, - { 0x8, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBar }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, } }, { - ID_NAME(CLSID_GlobalFolderSettings), + ID_NAME(CLSID_GlobalFolderSettings, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IGlobalFolderSettings }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IGlobalFolderSettings }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, }, L"Both" }, { - ID_NAME(CLSID_ImageListCache), + ID_NAME(CLSID_ImageListCache, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, }, L"Both" }, { - ID_NAME(CLSID_ImgCtxThumbnailExtractor), + ID_NAME(CLSID_ImgCtxThumbnailExtractor, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IExtractImage2 }, - { 0x0, &IID_IExtractImage }, - { 0x0, &IID_IUnknown }, - { 0x8, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IExtractImage2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IExtractImage }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFile }, }, L"Both" }, { - ID_NAME(CLSID_InternetToolbar), + ID_NAME(CLSID_InternetToolbar, NTDDI_MIN, NTDDI_VISTASP4), { - { -0x54, &IID_IOleCommandTarget }, - { -0x50, &IID_IServiceProvider }, - { -0x4c, &IID_IDeskBar }, - { -0x4c, &IID_IOleWindow }, - { -0x48, &IID_IInputObjectSite }, - { -0x44, &IID_IInputObject }, - { -0xc, &IID_IDockingWindow }, - { -0x8, &IID_IObjectWithSite }, - { -0x4, &IID_IExplorerToolbar }, - { 0x0, &DIID_DWebBrowserEvents }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistStreamInit }, - { 0x8, &IID_IShellChangeNotify }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IExplorerToolbar }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellChangeNotify }, + + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_VISTASP4, &DIID_DWebBrowserEvents }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBar }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IBandHost }, } }, { - ID_NAME(CLSID_ProgressDialog), + ID_NAME(CLSID_ProgressDialog, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IProgressDialog }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IOleWindow }, - { 0x8, &IID_IActionProgressDialog }, - { 0xc, &IID_IActionProgress }, - { 0x10, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProgressDialog }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IActionProgressDialog }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IActionProgress }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, }, L"Both" }, { - ID_NAME(CLSID_RebarBandSite), + ID_NAME(CLSID_RebarBandSite, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IUnknown }, - { 0xc, &IID_IBandSite }, - { 0x10, &IID_IInputObjectSite }, - { 0x14, &IID_IInputObject }, - { 0x18, &IID_IDeskBarClient }, - { 0x18, &IID_IOleWindow }, - { 0x1c, &IID_IWinEventHandler }, - { 0x20, &IID_IPersistStream }, - { 0x20, &IID_IPersist }, - { 0x24, &IID_IDropTarget }, - { 0x28, &IID_IServiceProvider }, - { 0x2c, &IID_IBandSiteHelper }, - { 0x30, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBandSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBarClient }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBandSiteHelper }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, } }, { - ID_NAME(CLSID_SH_AddressBand), + ID_NAME(CLSID_SH_AddressBand, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IDeskBand }, - { 0x0, &IID_IDockingWindow }, - { 0x0, &IID_IOleWindow }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectWithSite }, - { 0xc, &IID_IInputObject }, - { 0x10, &IID_IPersistStream }, - { 0x10, &IID_IPersist }, - { 0x14, &IID_IOleCommandTarget }, - { 0x18, &IID_IServiceProvider }, - { 0x30, &IID_IWinEventHandler }, - { 0x34, &IID_IAddressBand }, - { 0x38, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAddressBand }, + + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObjectSite }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellChangeNotify }, } }, { - ID_NAME(CLSID_SH_SearchBand), + ID_NAME(CLSID_SH_SearchBand, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IUnknown }, - { 0x74, &IID_IOleContainer }, - { 0x78, &IID_IOleInPlaceFrame }, - //{ 0x78, &IID_IOleInPlaceUIWindow }, - { 0x78, &IID_IOleWindow }, - { 0xb0, &IID_IDeskBand }, - { 0xb0, &IID_IDockingWindow }, - { 0xb4, &IID_IInputObject }, - { 0xb8, &IID_IObjectWithSite }, - { 0xbc, &IID_IContextMenu }, - { 0xc0, &IID_IServiceProvider }, - { 0xc8, &IID_ISearchBar }, - { 0xcc, &IID_IFileSearchBand }, - { 0xcc, &IID_IDispatch }, - { 0xd0, &IID_IBandNavigate }, - { 0xd8, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleContainer }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceFrame }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchBar }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IFileSearchBand }, + + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBandNavigate }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IWinEventHandler }, } }, { - ID_NAME(CLSID_SharedTaskScheduler), + ID_NAME(CLSID_SharedTaskScheduler, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IShellTaskScheduler }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellTaskScheduler }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_ShellSearchExt), + ID_NAME(CLSID_ShellSearchExt, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, } }, { - ID_NAME(CLSID_ShellTaskScheduler), + ID_NAME(CLSID_ShellTaskScheduler, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IShellTaskScheduler }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellTaskScheduler }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, }, }, { - ID_NAME(CLSID_UserAssist), + ID_NAME(CLSID_UserAssist, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, }, L"Both" }, { - ID_NAME(CLSID_WebSearchExt), + ID_NAME(CLSID_WebSearchExt, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, }, }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(browseui) { - TestClasses(L"browseui", ExpectedInterfaces, ExpectedInterfaceCount); + TestClassesEx(L"browseui", + ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces), + NTDDI_MIN, NTDDI_VISTASP4, + FALSE); } diff --git a/modules/rostests/apitests/com/certmgr.c b/modules/rostests/apitests/com/certmgr.c index 5807c2219b2..14a5d819987 100644 --- a/modules/rostests/apitests/com/certmgr.c +++ b/modules/rostests/apitests/com/certmgr.c @@ -13,27 +13,26 @@ static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { { - ID_NAME(CLSID_CERTMGR_CertMgrAboutObject_1), + ID_NAME(CLSID_CERTMGR_CertMgrAboutObject_1, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_ISnapInAbout }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_ISnapInAbout }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, }, L"both" }, { - ID_NAME(CLSID_CERTMGR_CertMgrObject_1), + ID_NAME(CLSID_CERTMGR_CertMgrObject_1, NTDDI_MIN, NTDDI_MAX), { - { -0x1c, &IID_IComponentData }, - { 0x0, &IID_IExtendPropertySheet }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_MAX, &IID_IComponentData }, + { NTDDI_MIN, NTDDI_MAX, &IID_IExtendPropertySheet }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, }, L"both" }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(certmgr) { - TestClasses(L"certmgr", ExpectedInterfaces, ExpectedInterfaceCount); + TestClasses(L"certmgr", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); } diff --git a/modules/rostests/apitests/com/com_apitest.c b/modules/rostests/apitests/com/com_apitest.c index 7130728b89b..f0f342154c0 100644 --- a/modules/rostests/apitests/com/com_apitest.c +++ b/modules/rostests/apitests/com/com_apitest.c @@ -30,488 +30,505 @@ typedef struct _KNOWN_INTERFACE const IID *iid; PCSTR name; PCWSTR wname; - BOOLEAN noreg; + BOOLEAN (*IsRegistered)(ULONG version); } KNOWN_INTERFACE; typedef const KNOWN_INTERFACE *PCKNOWN_INTERFACE; #undef ID_NAME #define ID_NAME(c) &c, #c, L ## #c +#define ID_NAME_EX(c, d) &c, #d, L ## #d + +BOOLEAN RegisteredAlways(ULONG version) { return TRUE; } +BOOLEAN RegisteredNever(ULONG version) { return FALSE; } +BOOLEAN RegisteredOnWS03AndVista(ULONG version) { return version >= NTDDI_WS03 && version < NTDDI_WIN7; } +BOOLEAN RegisteredOnVistaOrNewer(ULONG version) { return version >= NTDDI_VISTA; } +BOOLEAN RegisteredOnVistaOnly(ULONG version) { return version >= NTDDI_VISTA && version < NTDDI_WIN7; } +BOOLEAN RegisteredOnVistaAndWin7(ULONG version) { return version >= NTDDI_VISTA && version < NTDDI_WIN8; } +BOOLEAN RegisteredOnVistaToWin8Dot1(ULONG version) { return version >= NTDDI_VISTA && version < NTDDI_WIN10; } +BOOLEAN RegisteredOnWin7OrNewer(ULONG version) { return version >= NTDDI_WIN7; } +BOOLEAN RegisteredOnWin8OrNewer(ULONG version) { return version >= NTDDI_WIN8; } +BOOLEAN RegisteredOnWS03OrOlder(ULONG version) { return version <= NTDDI_WS03SP4; } + static KNOWN_INTERFACE KnownInterfaces[] = { - { ID_NAME(IID_IACList), TRUE }, - { ID_NAME(IID_IACList2), TRUE }, - { ID_NAME(IID_IADesktopP2), TRUE }, - { ID_NAME(IID_IAccIdentity) }, - { ID_NAME(IID_IAccPropServer) }, - { ID_NAME(IID_IAccPropServices) }, - { ID_NAME(IID_IAccessible) }, - { ID_NAME(IID_IAccessibleHandler) }, - { ID_NAME(IID_IAccessControl), TRUE }, - { ID_NAME(IID_IAccessor) }, - { ID_NAME(IID_IACLCustomMRU), TRUE }, - { ID_NAME(IID_IActiveDesktop), TRUE }, - { ID_NAME(IID_IActiveDesktopP), TRUE }, - { ID_NAME(IID_IActionProgress) }, - { ID_NAME(IID_IActionProgressDialog) }, - { ID_NAME(IID_IAddressBarParser), TRUE }, - { ID_NAME(IID_IAddressBand), TRUE }, - { ID_NAME(IID_IAddressEditBox), TRUE }, - { ID_NAME(IID_IAsyncMoniker), TRUE }, - { ID_NAME(IID_IAugmentedShellFolder), TRUE }, - { ID_NAME(IID_IAugmentedShellFolder2), TRUE }, - { ID_NAME(IID_IAutoComplete), TRUE }, - { ID_NAME(IID_IAutoComplete2), TRUE }, - { ID_NAME(IID_IAutoCompleteDropDown) }, - { ID_NAME(IID_IBandHost) }, - { ID_NAME(IID_IBandNavigate), }, - { ID_NAME(IID_IBandProxy), TRUE }, - { ID_NAME(IID_IBandSite) }, - { ID_NAME(IID_IBandSiteHelper), TRUE }, - { ID_NAME(IID_IBanneredBar), TRUE }, - { ID_NAME(IID_IBindCtx) }, - { ID_NAME(IID_IBindEventHandler) }, - { ID_NAME(IID_IBindHost) }, - { ID_NAME(IID_IBinding) }, - { ID_NAME(IID_IBindProtocol), TRUE }, - { ID_NAME(IID_IBindResource) }, - { ID_NAME(IID_IBindStatusCallback) }, - { ID_NAME(IID_IBlockingLock) }, - { ID_NAME(IID_IBrowserFrameOptions), TRUE }, - { ID_NAME(IID_IBrowserService) }, - { ID_NAME(IID_IBrowserService2), TRUE }, - { ID_NAME(IID_IBrowserService3), TRUE }, - { ID_NAME(IID_IBrowserService4), TRUE }, - { ID_NAME(IID_ICDBurn) }, - { ID_NAME(IID_ICDBurnExt) }, - { ID_NAME(IID_ICDBurnPriv) }, - { ID_NAME(IID_ICallFactory), TRUE }, - { ID_NAME(IID_ICancelMethodCalls), TRUE }, - { ID_NAME(IID_ICatInformation) }, - { ID_NAME(IID_ICatRegister) }, - { ID_NAME(IID_IClassActivator), }, - { ID_NAME(IID_IClassFactory) }, - { ID_NAME(IID_IClassFactory2) }, - { ID_NAME(IID_IClassFactory3), TRUE }, - { ID_NAME(IID_IClientSecurity), TRUE }, - { ID_NAME(IID_ICommDlgBrowser) }, - { ID_NAME(IID_ICommDlgBrowser2) }, - { ID_NAME(IID_ICommDlgBrowser3) }, - { ID_NAME(IID_ICompositeFolder) }, - { ID_NAME(IID_IComputerInfoChangeNotify), }, - { ID_NAME(IID_IComThreadingInfo), TRUE }, - { ID_NAME(IID_IConnectionPoint) }, - { ID_NAME(IID_IConnectionPointContainer) }, - { ID_NAME(IID_IContext), TRUE }, - { ID_NAME(IID_IContextMenu), TRUE }, - { ID_NAME(IID_IContextMenu2), TRUE }, - { ID_NAME(IID_IContextMenu3), TRUE }, - { ID_NAME(IID_IContextMenuCB), TRUE }, - { ID_NAME(IID_IContextMenuSite) }, - { ID_NAME(IID_IContinue) }, - { ID_NAME(IID_IContinueCallback) }, - { ID_NAME(IID_ICopyHookA), TRUE }, - { ID_NAME(IID_ICopyHookW), TRUE }, - { ID_NAME(IID_ICurrentWorkingDirectory), TRUE }, - { ID_NAME(IID_ICustomizeInfoTip) }, - { ID_NAME(IID_IDVGetEnum), TRUE }, - { ID_NAME(IID_IDataObject) }, - //{ ID_NAME(IID_IDefViewID) }, == DefViewFrame3 - { ID_NAME(IID_IDefViewFrame), TRUE }, - { ID_NAME(IID_IDefViewFrame3) }, - { ID_NAME(IID_IDefViewFrameGroup) }, - { ID_NAME(IID_IDefViewSafety), }, - { ID_NAME(IID_IDefViewScript), TRUE }, - { ID_NAME(IID_IDelayedRelease), TRUE }, - { ID_NAME(IID_IDeskBand) }, - { ID_NAME(IID_IDeskBandEx) }, - { ID_NAME(IID_IDeskBar), TRUE }, - { ID_NAME(IID_IDeskBarClient), TRUE }, - { ID_NAME(IID_IDeskMovr), TRUE }, - { ID_NAME(IID_IDiscMasterProgressEvents) }, - { ID_NAME(IID_IDispatch) }, - { ID_NAME(IID_IDispatchEx) }, - { ID_NAME(IID_IDockingWindow) }, - { ID_NAME(IID_IDockingWindowFrame), TRUE }, - { ID_NAME(IID_IDockingWindowSite), TRUE }, - { ID_NAME(IID_IDocViewSite), TRUE }, - { ID_NAME(IID_IDragSourceHelper), TRUE }, - { ID_NAME(IID_IDriveFolderExt), TRUE }, - { ID_NAME(IID_IDropSource) }, - { ID_NAME(IID_IDropTarget) }, - { ID_NAME(IID_IDropTargetHelper), TRUE }, - { ID_NAME(IID_IEFrameAuto) }, - //{ ID_NAME(IID_IEnumCATID) }, == EnumGUID - //{ ID_NAME(IID_IEnumCLSID) }, == EnumGUID - { ID_NAME(IID_IEnumCATEGORYINFO) }, - { ID_NAME(IID_IEnumConnectionPoints) }, - { ID_NAME(IID_IEnumConnections) }, - { ID_NAME(IID_IEnumExtraSearch) }, - { ID_NAME(IID_IEnumGUID) }, - { ID_NAME(IID_IEnumIDList) }, - { ID_NAME(IID_IEnumMoniker) }, - //{ ID_NAME(IID_IEnumNetCfgBindingInterface) }, - //{ ID_NAME(IID_IEnumNetCfgBindingPath) }, - { ID_NAME(IID_IEnumNetCfgComponent), TRUE }, - { ID_NAME(IID_IEnumNetConnection) }, - { ID_NAME(IID_IEnumShellItems) }, - { ID_NAME(IID_IEnumSTATSTG) }, - { ID_NAME(IID_IEnumString) }, - { ID_NAME(IID_IEnumUnknown) }, - { ID_NAME(IID_IEnumVARIANT) }, - { ID_NAME(IID_IErrorLog) }, - { ID_NAME(IID_IExplorerBrowser) }, - { ID_NAME(IID_IExplorerToolbar), TRUE }, - { ID_NAME(IID_IExtractIconA), TRUE }, - { ID_NAME(IID_IExtractIconW), TRUE }, - { ID_NAME(IID_IExtractImage) }, - { ID_NAME(IID_IExtractImage2) }, - { ID_NAME(IID_IFileDialog) }, - { ID_NAME(IID_IFileDialog2), TRUE }, - { ID_NAME(IID_IFileOpenDialog) }, - { ID_NAME(IID_IFileSaveDialog) }, - { ID_NAME(IID_IFileSearchBand) }, - { ID_NAME(IID_IFileViewerA), TRUE }, - { ID_NAME(IID_IFileViewerSite), TRUE }, - { ID_NAME(IID_IFileViewerW), TRUE }, - { ID_NAME(IID_IFilter) }, - { ID_NAME(IID_IFolderBandPriv) }, - { ID_NAME(IID_IFolderFilter) }, - { ID_NAME(IID_IFolderFilterSite) }, - { ID_NAME(IID_IFolderView) }, - { ID_NAME(IID_IFolderView2) }, - { ID_NAME(IID_IFolderViewHost), TRUE }, - { ID_NAME(IID_IFolderViewOC) }, - { ID_NAME(IID_IFolderViewSettings) }, - { ID_NAME(IID_IForegroundTransfer), TRUE }, - { ID_NAME(IID_IGetNameSpaceExtensionPointer),TRUE}, - { ID_NAME(IID_IGlobalFolderSettings), TRUE }, - { ID_NAME(IID_IHWEventHandler) }, - { ID_NAME(IID_IHWEventHandler2) }, - { ID_NAME(IID_IHlinkFrame) }, - { ID_NAME(IID_IImageList), TRUE }, - { ID_NAME(IID_IImageList2), TRUE }, - { ID_NAME(IID_IInitializeObject), TRUE }, - { ID_NAME(IID_IInitializeWithBindCtx) }, - { ID_NAME(IID_IInitializeWithFile) }, - { ID_NAME(IID_IInputObject) }, - { ID_NAME(IID_IInputObjectSite) }, - { ID_NAME(IID_IInternalUnknown), TRUE }, - { ID_NAME(IID_IInternetSecurityManager) }, - { ID_NAME(IID_IInternetZoneManager), TRUE }, - { ID_NAME(IID_IItemNameLimits) }, - { ID_NAME(IID_IMarshal) }, - { ID_NAME(IID_IMarshal2), TRUE }, - { ID_NAME(IID_IMenuBand), TRUE }, - { ID_NAME(IID_IMenuPopup), TRUE }, - { ID_NAME(IID_IModalWindow) }, - { ID_NAME(IID_IMoniker) }, - { ID_NAME(IID_IMruDataList), TRUE }, - { ID_NAME(IID_IMruPidlList), TRUE }, - { ID_NAME(IID_IMultiMonitorDockingSite), TRUE }, - { ID_NAME(IID_IMultiQI), TRUE }, - { ID_NAME(IID_INameSpaceTreeControl), TRUE }, - { ID_NAME(IID_INamespaceProxy), TRUE }, - { ID_NAME(IID_INamespaceWalk) }, - { ID_NAME(IID_INamespaceWalkCB) }, - { ID_NAME(IID_INamespaceWalkCB2) }, - { ID_NAME(IID_INetCfg), TRUE }, - //{ ID_NAME(IID_INetCfgBindingInterface) }, - //{ ID_NAME(IID_INetCfgBindingPath) }, - { ID_NAME(IID_INetCfgComponent), TRUE }, - { ID_NAME(IID_INetCfgComponentBindings), TRUE }, - { ID_NAME(IID_INetCfgComponentControl), TRUE }, - { ID_NAME(IID_INetCfgComponentPropertyUi), TRUE }, - { ID_NAME(IID_INetCfgLock), TRUE }, - { ID_NAME(IID_INetCfgPnpReconfigCallback), TRUE }, - { ID_NAME(IID_INetConnectionConnectUi), TRUE }, - { ID_NAME(IID_INetConnectionPropertyUi), TRUE }, - { ID_NAME(IID_INetConnectionPropertyUi2), TRUE }, - { ID_NAME(IID_INetConnectionManager) }, - { ID_NAME(IID_INetLanConnectionUiInfo), TRUE }, - { ID_NAME(IID_INewMenuClient) }, - { ID_NAME(IID_INewShortcutHookA), TRUE }, - { ID_NAME(IID_INewShortcutHookW), TRUE }, - { ID_NAME(IID_INewWindowManager) }, - { ID_NAME(IID_INSCTree), TRUE }, - { ID_NAME(IID_INSCTree2), TRUE }, - { ID_NAME(IID_IObjMgr), TRUE }, - { ID_NAME(IID_IObjectSafety) }, - { ID_NAME(IID_IObjectWithBackReferences) }, - { ID_NAME(IID_IObjectWithSite) }, - { ID_NAME(IID_IOleClientSite) }, - { ID_NAME(IID_IOleCommandTarget) }, - { ID_NAME(IID_IOleContainer) }, - { ID_NAME(IID_IOleControl) }, - { ID_NAME(IID_IOleControlSite) }, - { ID_NAME(IID_IOleInPlaceActiveObject) }, - { ID_NAME(IID_IOleInPlaceFrame) }, - { ID_NAME(IID_IOleInPlaceObject) }, - { ID_NAME(IID_IOleInPlaceObjectWindowless), TRUE }, - { ID_NAME(IID_IOleInPlaceSite) }, - { ID_NAME(IID_IOleInPlaceSiteEx) }, - { ID_NAME(IID_IOleInPlaceSiteWindowless), TRUE }, - { ID_NAME(IID_IOleInPlaceUIWindow) }, - { ID_NAME(IID_IOleItemContainer), }, - { ID_NAME(IID_IOleLink), }, - { ID_NAME(IID_IOleObject) }, - { ID_NAME(IID_IOleWindow) }, - { ID_NAME(IID_IParentAndItem) }, - { ID_NAME(IID_IParseDisplayName), }, - { ID_NAME(IID_IPersist) }, - { ID_NAME(IID_IPersistFile) }, - { ID_NAME(IID_IPersistFolder) }, - { ID_NAME(IID_IPersistFolder2) }, - { ID_NAME(IID_IPersistFolder3) }, - { ID_NAME(IID_IPersistFreeThreadedObject), TRUE }, - { ID_NAME(IID_IPersistHistory) }, - { ID_NAME(IID_IPersistIDList) }, - { ID_NAME(IID_IPersistMemory) }, - { ID_NAME(IID_IPersistPropertyBag) }, - { ID_NAME(IID_IPersistPropertyBag2) }, - { ID_NAME(IID_IPersistStorage) }, - { ID_NAME(IID_IPersistStream) }, - { ID_NAME(IID_IPersistStreamInit) }, - { ID_NAME(IID_IPreviewHandler) }, - { ID_NAME(IID_IPreviewHandlerFrame) }, - { ID_NAME(IID_IPreviewHandlerVisuals) }, - { ID_NAME(IID_IProgressDialog), TRUE }, - { ID_NAME(IID_IPropertyBag) }, - { ID_NAME(IID_IPropertyBag2) }, - { ID_NAME(IID_IPropertySetStorage) }, - { ID_NAME(IID_IPropertyStore) }, - { ID_NAME(IID_IPropSheetPage), TRUE }, - { ID_NAME(IID_IProvideClassInfo) }, - { ID_NAME(IID_IProvideClassInfo2) }, - { ID_NAME(IID_IQueryAssociations), TRUE }, - { ID_NAME(IID_IQueryCancelAutoPlay) }, - { ID_NAME(IID_IQueryInfo), TRUE }, - { ID_NAME(IID_IQuickActivate) }, - { ID_NAME(IID_IRegTreeOptions), TRUE }, - { ID_NAME(IID_IRemoteComputer) }, - { ID_NAME(IID_IResolveShellLink) }, - { ID_NAME(IID_IROTData), }, - { ID_NAME(IID_IRpcOptions), TRUE }, - { ID_NAME(IID_IRunnableObject) }, - { ID_NAME(IID_IRunningObjectTable), }, - { ID_NAME(IID_ISLTracker), TRUE }, - { ID_NAME(IID_IScriptErrorList) }, - { ID_NAME(IID_ISearch) }, - { ID_NAME(IID_ISearchAssistantOC) }, - { ID_NAME(IID_ISearchAssistantOC2) }, - { ID_NAME(IID_ISearchAssistantOC3) }, - { ID_NAME(IID_ISearchBar) }, - { ID_NAME(IID_ISearches) }, - { ID_NAME(IID_ISecMgrCacheSeedTarget) }, - { ID_NAME(IID_IServerSecurity), TRUE }, - { ID_NAME(IID_IServiceProvider) }, - { ID_NAME(IID_IShellApp), TRUE }, - { ID_NAME(IID_IShellBrowser) }, - { ID_NAME(IID_IShellBrowserService), TRUE }, - { ID_NAME(IID_IShellChangeNotify), TRUE }, - { ID_NAME(IID_IShellCopyHookA), TRUE }, - { ID_NAME(IID_IShellCopyHookW), TRUE }, - { ID_NAME(IID_IShellDesktopTray), TRUE }, - { ID_NAME(IID_IShellDetails), TRUE }, - { ID_NAME(IID_IShellDispatch) }, - { ID_NAME(IID_IShellDispatch2) }, - { ID_NAME(IID_IShellDispatch3) }, - { ID_NAME(IID_IShellDispatch4) }, - { ID_NAME(IID_IShellDispatch5), TRUE }, - { ID_NAME(IID_IShellDispatch6), TRUE }, - { ID_NAME(IID_IShellExecuteHookA), TRUE }, - { ID_NAME(IID_IShellExecuteHookW), TRUE }, - { ID_NAME(IID_IShellExtInit), TRUE }, - { ID_NAME(IID_IShellFavoritesNameSpace) }, - { ID_NAME(IID_IShellFolder) }, - { ID_NAME(IID_IShellFolder2) }, - { ID_NAME(IID_IShellFolderBand), TRUE }, - { ID_NAME(IID_IShellFolderSearchable), TRUE }, - { ID_NAME(IID_IShellFolderSearchableCallback), TRUE }, - { ID_NAME(IID_IShellFolderView), TRUE }, - { ID_NAME(IID_IShellFolderViewCB), TRUE }, - { ID_NAME(IID_IShellFolderViewDual) }, - { ID_NAME(IID_IShellFolderViewDual2) }, - { ID_NAME(IID_IShellFolderViewDual3), TRUE }, - { ID_NAME(IID_IShellFolderViewType), TRUE }, - { ID_NAME(IID_IShellIcon) }, - { ID_NAME(IID_IShellIconOverlay), TRUE }, - { ID_NAME(IID_IShellIconOverlayIdentifier), TRUE }, - { ID_NAME(IID_IShellImageData), TRUE }, - { ID_NAME(IID_IShellImageDataAbort), TRUE }, - { ID_NAME(IID_IShellImageDataFactory), TRUE }, - { ID_NAME(IID_IShellItem) }, - { ID_NAME(IID_IShellItem2) }, - { ID_NAME(IID_IShellItemArray) }, - { ID_NAME(IID_IShellItemFilter) }, - { ID_NAME(IID_IShellLinkA) }, - { ID_NAME(IID_IShellLinkDataList), TRUE }, - { ID_NAME(IID_IShellLinkDual) }, - { ID_NAME(IID_IShellLinkDual2) }, - { ID_NAME(IID_IShellLinkW) }, - { ID_NAME(IID_IShellMenu), TRUE }, - { ID_NAME(IID_IShellMenu2), TRUE }, - { ID_NAME(IID_IShellMenuAcc), TRUE }, - { ID_NAME(IID_IShellMenuCallback), TRUE }, - { ID_NAME(IID_IShellNameSpace) }, - { ID_NAME(IID_IShellPropSheetExt), TRUE }, - { ID_NAME(IID_IShellService), TRUE }, - { ID_NAME(IID_IShellTaskScheduler), TRUE }, - { ID_NAME(IID_IShellUIHelper) }, - { ID_NAME(IID_IShellUIHelper2), TRUE }, - { ID_NAME(IID_IShellView) }, - { ID_NAME(IID_IShellView2) }, - { ID_NAME(IID_IShellView3) }, - { ID_NAME(IID_IShellWindows) }, - { ID_NAME(IID_ISpecifyPropertyPages) }, - { ID_NAME(IID_IStorage) }, - { ID_NAME(IID_IStream) }, - { ID_NAME(IID_ISurrogate) }, - { ID_NAME(IID_ISynchronize) }, - { ID_NAME(IID_ISynchronizeContainer), TRUE }, - { ID_NAME(IID_ISynchronizeEvent), TRUE }, - { ID_NAME(IID_ISynchronizeHandle), TRUE }, - { ID_NAME(IID_ITargetEmbedding) }, - { ID_NAME(IID_ITargetFrame) }, - { ID_NAME(IID_ITargetFrame2) }, - { ID_NAME(IID_ITargetFramePriv) }, - { ID_NAME(IID_ITargetFramePriv2) }, - { ID_NAME(IID_ITargetNotify) }, - { ID_NAME(IID_ITaskbarList) }, - { ID_NAME(IID_ITaskbarList2) }, - { ID_NAME(IID_ITaskbarList3), TRUE }, - { ID_NAME(IID_ITaskbarList4), TRUE }, - { ID_NAME(IID_ITrackShellMenu), TRUE }, - /* This interface is completely different between PSDK and registry/shell32 */ - { ID_NAME(IID_ITransferAdviseSink), TRUE }, -#define IID_ITransferAdviseSink IID_ITransferAdviseSinkPriv - { ID_NAME(IID_ITransferAdviseSink) }, -#undef IID_ITransferAdviseSink - { ID_NAME(IID_ITransferDestination), TRUE }, - { ID_NAME(IID_ITransferSource), TRUE }, - { ID_NAME(IID_ITranslateShellChangeNotify), TRUE }, - { ID_NAME(IID_ITrayPriv), TRUE }, - { ID_NAME(IID_ITrayPriv2), TRUE }, - { ID_NAME(IID_IUnknown) }, - { ID_NAME(IID_IURLSearchHook), TRUE }, - { ID_NAME(IID_IURLSearchHook2), TRUE }, - { ID_NAME(IID_IUrlHistoryNotify) }, - { ID_NAME(IID_IUrlHistoryStg) }, - { ID_NAME(IID_IUrlHistoryStg2) }, - { ID_NAME(IID_IViewObject) }, - { ID_NAME(IID_IViewObject2) }, - { ID_NAME(IID_IViewObjectEx), TRUE }, - { ID_NAME(IID_IVisualProperties) }, - { ID_NAME(IID_IWebBrowser) }, - { ID_NAME(IID_IWebBrowser2) }, - { ID_NAME(IID_IWebBrowserApp) }, - { ID_NAME(IID_IWebBrowserPriv) }, - { ID_NAME(IID_IWebBrowserPriv2) }, - { ID_NAME(IID_IWinEventHandler), TRUE }, + { ID_NAME(DIID__SearchAssistantEvents), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_IMarshal), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_ICDBurnPriv), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_ICompositeFolder), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_IDefViewSafety), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_IDropSource), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_ISearch), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_ISearchAssistantOC), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_ISearchAssistantOC2), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_ISearchAssistantOC3), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_ISearchBar), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_ISearches), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_IEFrameAuto), RegisteredOnWS03OrOlder }, + { ID_NAME(IID_IWebBrowserPriv2), RegisteredOnWS03OrOlder }, + /* These interfaces are different between PSDK and registry/shell32 */ + { ID_NAME_EX(IID_ITransferAdviseSinkPriv, + IID_ITransferAdviseSink), RegisteredOnWS03OrOlder }, + { ID_NAME_EX(IID_IDriveFolderExtOld, + IID_IDriveFolderExt), RegisteredOnWS03OrOlder }, - { ID_NAME(IID_DFConstraint), TRUE }, - { ID_NAME(DIID__SearchAssistantEvents) }, - { ID_NAME(DIID_DShellFolderViewEvents) }, - { ID_NAME(DIID_DShellNameSpaceEvents) }, - { ID_NAME(DIID_DShellWindowsEvents) }, - { ID_NAME(DIID_DWebBrowserEvents) }, - { ID_NAME(DIID_DWebBrowserEvents2) }, - { ID_NAME(DIID_XMLDOMDocumentEvents ) }, + { ID_NAME(IID_IAggregateFilterCondition), RegisteredOnWS03AndVista }, + { ID_NAME(IID_IBandNavigate), RegisteredOnWS03AndVista }, - { ID_NAME(IID_CDefView), TRUE }, - { ID_NAME(IID_Folder) }, - { ID_NAME(IID_Folder2) }, - { ID_NAME(IID_Folder3) }, - { ID_NAME(IID_FolderItem) }, - { ID_NAME(IID_FolderItem2) }, - { ID_NAME(IID_FolderItems) }, - { ID_NAME(IID_FolderItems2) }, - { ID_NAME(IID_FolderItems3) }, - { ID_NAME(IID_FolderItemVerb) }, - { ID_NAME(IID_FolderItemVerbs) }, + { ID_NAME(IID_IAccIdentity), RegisteredAlways }, + { ID_NAME(IID_IAccPropServer), RegisteredAlways }, + { ID_NAME(IID_IAccPropServices), RegisteredAlways }, + { ID_NAME(IID_IAccessible), RegisteredAlways }, + { ID_NAME(IID_IAccessibleHandler), RegisteredAlways }, + { ID_NAME(IID_IAccessor), RegisteredAlways }, + { ID_NAME(IID_IActionProgress), RegisteredAlways }, + { ID_NAME(IID_IActionProgressDialog), RegisteredAlways }, + { ID_NAME(IID_IAutoCompleteDropDown), RegisteredAlways }, + { ID_NAME(IID_IBandHost), RegisteredAlways }, + { ID_NAME(IID_IBandSite), RegisteredAlways }, + { ID_NAME(IID_IBindCtx), RegisteredAlways }, + { ID_NAME(IID_IBindEventHandler), RegisteredAlways }, + { ID_NAME(IID_IBindHost), RegisteredAlways }, + { ID_NAME(IID_IBinding), RegisteredAlways }, + { ID_NAME(IID_IBindResource), RegisteredAlways }, + { ID_NAME(IID_IBindStatusCallback), RegisteredAlways }, + { ID_NAME(IID_IBlockingLock), RegisteredAlways }, + { ID_NAME(IID_IBrowserService), RegisteredAlways }, + { ID_NAME(IID_ICDBurn), RegisteredAlways }, + { ID_NAME(IID_ICDBurnExt), RegisteredAlways }, + { ID_NAME(IID_ICatInformation), RegisteredAlways }, + { ID_NAME(IID_ICatRegister), RegisteredAlways }, + { ID_NAME(IID_IClassActivator), RegisteredAlways }, + { ID_NAME(IID_IClassFactory), RegisteredAlways }, + { ID_NAME(IID_IClassFactory2), RegisteredAlways }, + { ID_NAME(IID_ICommDlgBrowser), RegisteredAlways }, + { ID_NAME(IID_ICommDlgBrowser2), RegisteredAlways }, + { ID_NAME(IID_ICommDlgBrowser3), RegisteredAlways }, + { ID_NAME(IID_IComputerInfoChangeNotify), RegisteredAlways }, + { ID_NAME(IID_IConnectionPoint), RegisteredAlways }, + { ID_NAME(IID_IConnectionPointContainer), RegisteredAlways }, + { ID_NAME(IID_IContextMenuSite), RegisteredAlways }, + { ID_NAME(IID_IContinue), RegisteredAlways }, + { ID_NAME(IID_IContinueCallback), RegisteredAlways }, + { ID_NAME(IID_ICustomizeInfoTip), RegisteredAlways }, + { ID_NAME(IID_IDataObject), RegisteredAlways }, + { ID_NAME(IID_IDefViewFrame3), RegisteredAlways }, + { ID_NAME(IID_IDefViewFrameGroup), RegisteredAlways }, + { ID_NAME(IID_IDeskBand), RegisteredAlways }, + { ID_NAME(IID_IDeskBandEx), RegisteredAlways }, + // { ID_NAME(IID_IDefViewID), RegisteredAlways }, == DefViewFrame3 + { ID_NAME(IID_IDiscMasterProgressEvents), RegisteredAlways }, + { ID_NAME(IID_IDispatch), RegisteredAlways }, + { ID_NAME(IID_IDispatchEx), RegisteredAlways }, + { ID_NAME(IID_IDockingWindow), RegisteredAlways }, + { ID_NAME(IID_IDropTarget), RegisteredAlways }, + // { ID_NAME(IID_IEnumCATID), RegisteredAlways }, == EnumGUID + // { ID_NAME(IID_IEnumCLSID), RegisteredAlways }, == EnumGUID + { ID_NAME(IID_IEnumCATEGORYINFO), RegisteredAlways }, + { ID_NAME(IID_IEnumConnectionPoints), RegisteredAlways }, + { ID_NAME(IID_IEnumConnections), RegisteredAlways }, + { ID_NAME(IID_IEnumExtraSearch), RegisteredAlways }, + { ID_NAME(IID_IEnumGUID), RegisteredAlways }, + { ID_NAME(IID_IEnumIDList), RegisteredAlways }, + { ID_NAME(IID_IEnumMoniker), RegisteredAlways }, + { ID_NAME(IID_IEnumNetConnection), RegisteredAlways }, + { ID_NAME(IID_IEnumShellItems), RegisteredAlways }, + { ID_NAME(IID_IEnumSTATSTG), RegisteredAlways }, + { ID_NAME(IID_IEnumString), RegisteredAlways }, + { ID_NAME(IID_IEnumUnknown), RegisteredAlways }, + { ID_NAME(IID_IEnumVARIANT), RegisteredAlways }, + { ID_NAME(IID_IErrorLog), RegisteredAlways }, + { ID_NAME(IID_IExplorerBrowser), RegisteredAlways }, + { ID_NAME(IID_IExtractImage), RegisteredAlways }, + { ID_NAME(IID_IExtractImage2), RegisteredAlways }, + { ID_NAME(IID_IFileDialog), RegisteredAlways }, + { ID_NAME(IID_IFileOpenDialog), RegisteredAlways }, + { ID_NAME(IID_IFileSaveDialog), RegisteredAlways }, + { ID_NAME(IID_IFileSearchBand), RegisteredAlways }, + { ID_NAME(IID_IFilter), RegisteredAlways }, + { ID_NAME(IID_IFilterCondition), RegisteredAlways }, + { ID_NAME(IID_IFolderBandPriv), RegisteredAlways }, + { ID_NAME(IID_IFolderFilter), RegisteredAlways }, + { ID_NAME(IID_IFolderFilterSite), RegisteredAlways }, + { ID_NAME(IID_IFolderView), RegisteredAlways }, + { ID_NAME(IID_IFolderView2), RegisteredAlways }, + { ID_NAME(IID_IFolderViewOC), RegisteredAlways }, + { ID_NAME(IID_IFolderViewSettings), RegisteredAlways }, + { ID_NAME(IID_IHWEventHandler), RegisteredAlways }, + { ID_NAME(IID_IHWEventHandler2), RegisteredAlways }, + { ID_NAME(IID_IHlinkFrame), RegisteredAlways }, + { ID_NAME(IID_IInitializeWithBindCtx), RegisteredAlways }, + { ID_NAME(IID_IInitializeWithFile), RegisteredAlways }, + { ID_NAME(IID_IInputObject), RegisteredAlways }, + { ID_NAME(IID_IInputObjectSite), RegisteredAlways }, + { ID_NAME(IID_IInternetSecurityManager), RegisteredAlways }, + { ID_NAME(IID_IItemNameLimits), RegisteredAlways }, + { ID_NAME(IID_IModalWindow), RegisteredAlways }, + { ID_NAME(IID_IMoniker), RegisteredAlways }, + { ID_NAME(IID_INamespaceWalk), RegisteredAlways }, + { ID_NAME(IID_INamespaceWalkCB), RegisteredAlways }, + { ID_NAME(IID_INamespaceWalkCB2), RegisteredAlways }, + { ID_NAME(IID_INetConnectionManager), RegisteredAlways }, + { ID_NAME(IID_INewMenuClient), RegisteredAlways }, + { ID_NAME(IID_INewWindowManager), RegisteredAlways }, + { ID_NAME(IID_IObjectSafety), RegisteredAlways }, + { ID_NAME(IID_IObjectWithBackReferences), RegisteredAlways }, + { ID_NAME(IID_IObjectWithSite), RegisteredAlways }, + { ID_NAME(IID_IOleClientSite), RegisteredAlways }, + { ID_NAME(IID_IOleCommandTarget), RegisteredAlways }, + { ID_NAME(IID_IOleContainer), RegisteredAlways }, + { ID_NAME(IID_IOleControl), RegisteredAlways }, + { ID_NAME(IID_IOleControlSite), RegisteredAlways }, + { ID_NAME(IID_IOleInPlaceActiveObject), RegisteredAlways }, + { ID_NAME(IID_IOleInPlaceFrame), RegisteredAlways }, + { ID_NAME(IID_IOleInPlaceObject), RegisteredAlways }, + { ID_NAME(IID_IOleInPlaceSite), RegisteredAlways }, + { ID_NAME(IID_IOleInPlaceSiteEx), RegisteredAlways }, + { ID_NAME(IID_IOleInPlaceUIWindow), RegisteredAlways }, + { ID_NAME(IID_IOleItemContainer), RegisteredAlways }, + { ID_NAME(IID_IOleLink), RegisteredAlways }, + { ID_NAME(IID_IOleObject), RegisteredAlways }, + { ID_NAME(IID_IOleWindow), RegisteredAlways }, + { ID_NAME(IID_IParentAndItem), RegisteredAlways }, + { ID_NAME(IID_IParseDisplayName), RegisteredAlways }, + { ID_NAME(IID_IPersist), RegisteredAlways }, + { ID_NAME(IID_IPersistFile), RegisteredAlways }, + { ID_NAME(IID_IPersistFolder), RegisteredAlways }, + { ID_NAME(IID_IPersistFolder2), RegisteredAlways }, + { ID_NAME(IID_IPersistFolder3), RegisteredAlways }, + { ID_NAME(IID_IPersistHistory), RegisteredAlways }, + { ID_NAME(IID_IPersistIDList), RegisteredAlways }, + { ID_NAME(IID_IPersistMemory), RegisteredAlways }, + { ID_NAME(IID_IPersistPropertyBag), RegisteredAlways }, + { ID_NAME(IID_IPersistPropertyBag2), RegisteredAlways }, + { ID_NAME(IID_IPersistStorage), RegisteredAlways }, + { ID_NAME(IID_IPersistStream), RegisteredAlways }, + { ID_NAME(IID_IPersistStreamInit), RegisteredAlways }, + { ID_NAME(IID_IPreviewHandler), RegisteredAlways }, + { ID_NAME(IID_IPreviewHandlerFrame), RegisteredAlways }, + { ID_NAME(IID_IPreviewHandlerVisuals), RegisteredAlways }, + { ID_NAME(IID_IPropertyBag), RegisteredAlways }, + { ID_NAME(IID_IPropertyBag2), RegisteredAlways }, + { ID_NAME(IID_IPropertySetStorage), RegisteredAlways }, + { ID_NAME(IID_IPropertyStore), RegisteredAlways }, + { ID_NAME(IID_IProvideClassInfo), RegisteredAlways }, + { ID_NAME(IID_IProvideClassInfo2), RegisteredAlways }, + { ID_NAME(IID_IQueryCancelAutoPlay), RegisteredAlways }, + { ID_NAME(IID_IQuickActivate), RegisteredAlways }, + { ID_NAME(IID_IRemoteComputer), RegisteredAlways }, + { ID_NAME(IID_IResolveShellLink), RegisteredAlways }, + { ID_NAME(IID_IROTData), RegisteredAlways }, + { ID_NAME(IID_IRunnableObject), RegisteredAlways }, + { ID_NAME(IID_IRunningObjectTable), RegisteredAlways }, + { ID_NAME(IID_IScriptErrorList), RegisteredAlways }, + { ID_NAME(IID_ISecMgrCacheSeedTarget), RegisteredAlways }, + { ID_NAME(IID_IServiceProvider), RegisteredAlways }, + { ID_NAME(IID_IShellBrowser), RegisteredAlways }, + { ID_NAME(IID_IShellDispatch), RegisteredAlways }, + { ID_NAME(IID_IShellDispatch2), RegisteredAlways }, + { ID_NAME(IID_IShellDispatch3), RegisteredAlways }, + { ID_NAME(IID_IShellDispatch4), RegisteredAlways }, + { ID_NAME(IID_IShellFavoritesNameSpace), RegisteredAlways }, + { ID_NAME(IID_IShellFolder), RegisteredAlways }, + { ID_NAME(IID_IShellFolder2), RegisteredAlways }, + { ID_NAME(IID_IShellFolderViewDual), RegisteredAlways }, + { ID_NAME(IID_IShellFolderViewDual2), RegisteredAlways }, + { ID_NAME(IID_IShellIcon), RegisteredAlways }, + { ID_NAME(IID_IShellItem), RegisteredAlways }, + { ID_NAME(IID_IShellItem2), RegisteredAlways }, + { ID_NAME(IID_IShellItemArray), RegisteredAlways }, + { ID_NAME(IID_IShellItemFilter), RegisteredAlways }, + { ID_NAME(IID_IShellLinkA), RegisteredAlways }, + { ID_NAME(IID_IShellLinkDual), RegisteredAlways }, + { ID_NAME(IID_IShellLinkDual2), RegisteredAlways }, + { ID_NAME(IID_IShellLinkW), RegisteredAlways }, + { ID_NAME(IID_IShellNameSpace), RegisteredAlways }, + { ID_NAME(IID_IShellUIHelper), RegisteredAlways }, + { ID_NAME(IID_IShellView), RegisteredAlways }, + { ID_NAME(IID_IShellView2), RegisteredAlways }, + { ID_NAME(IID_IShellView3), RegisteredAlways }, + { ID_NAME(IID_IShellWindows), RegisteredAlways }, + { ID_NAME(IID_ISpecifyPropertyPages), RegisteredAlways }, + { ID_NAME(IID_IStorage), RegisteredAlways }, + { ID_NAME(IID_IStream), RegisteredAlways }, + { ID_NAME(IID_ISurrogate), RegisteredAlways }, + { ID_NAME(IID_ISynchronize), RegisteredAlways }, + { ID_NAME(IID_ITargetEmbedding), RegisteredAlways }, + { ID_NAME(IID_ITargetFrame), RegisteredAlways }, + { ID_NAME(IID_ITargetFrame2), RegisteredAlways }, + { ID_NAME(IID_ITargetFramePriv), RegisteredAlways }, + { ID_NAME(IID_ITargetFramePriv2), RegisteredAlways }, + { ID_NAME(IID_ITargetNotify), RegisteredAlways }, + { ID_NAME(IID_ITaskbarList), RegisteredAlways }, + { ID_NAME(IID_ITaskbarList2), RegisteredAlways }, + { ID_NAME(IID_IUnknown), RegisteredAlways }, + { ID_NAME(IID_IUrlHistoryNotify), RegisteredAlways }, + { ID_NAME(IID_IUrlHistoryStg), RegisteredAlways }, + { ID_NAME(IID_IUrlHistoryStg2), RegisteredAlways }, + { ID_NAME(IID_IViewObject), RegisteredAlways }, + { ID_NAME(IID_IViewObject2), RegisteredAlways }, + { ID_NAME(IID_IVisualProperties), RegisteredAlways }, + { ID_NAME(IID_IWebBrowser), RegisteredAlways }, + { ID_NAME(IID_IWebBrowser2), RegisteredAlways }, + { ID_NAME(IID_IWebBrowserApp), RegisteredAlways }, + { ID_NAME(IID_IWebBrowserPriv), RegisteredAlways }, + { ID_NAME(DIID_DShellFolderViewEvents), RegisteredAlways }, + { ID_NAME(DIID_DShellNameSpaceEvents), RegisteredAlways }, + { ID_NAME(DIID_DShellWindowsEvents), RegisteredAlways }, + { ID_NAME(DIID_DWebBrowserEvents), RegisteredAlways }, + { ID_NAME(DIID_DWebBrowserEvents2), RegisteredAlways }, + { ID_NAME(DIID_XMLDOMDocumentEvents), RegisteredAlways }, + { ID_NAME(IID_Folder), RegisteredAlways }, + { ID_NAME(IID_Folder2), RegisteredAlways }, + { ID_NAME(IID_Folder3), RegisteredAlways }, + { ID_NAME(IID_FolderItem), RegisteredAlways }, + { ID_NAME(IID_FolderItem2), RegisteredAlways }, + { ID_NAME(IID_FolderItems), RegisteredAlways }, + { ID_NAME(IID_FolderItems2), RegisteredAlways }, + { ID_NAME(IID_FolderItems3), RegisteredAlways }, + { ID_NAME(IID_FolderItemVerb), RegisteredAlways }, + { ID_NAME(IID_FolderItemVerbs), RegisteredAlways }, + { ID_NAME(IID_IQueryContinue), RegisteredAlways }, + { ID_NAME(IID_IUserNotification), RegisteredAlways }, + { ID_NAME(IID_IUserNotificationCallback), RegisteredAlways }, + { ID_NAME(IID_IUserNotification2), RegisteredAlways }, + { ID_NAME(IID_IUserEventTimer), RegisteredAlways }, + { ID_NAME(IID_IUserEventTimerCallback), RegisteredAlways }, - { ID_NAME(CLSID_ShellDesktop), TRUE }, + { ID_NAME(IID_IControlPanelEnumerator), RegisteredOnVistaOnly }, + { ID_NAME(IID_IShellFolder3), RegisteredOnVistaOnly }, + { ID_NAME_EX(IID_IShellBrowserService4, + IID_IShellBrowserService), RegisteredOnVistaOnly }, - { ID_NAME(IID_IQueryContinue) }, - { ID_NAME(IID_IUserNotification) }, - { ID_NAME(IID_IUserNotificationCallback) }, // On Vista+ - { ID_NAME(IID_IUserNotification2) }, // On Vista+ + { ID_NAME(IID_IDriveFolderExt), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_INetConnectionConnectUi), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_INetConnectionCommonUi2), RegisteredOnVistaOrNewer }, // This also covers IID_INetLanConnectionUiInfo. + { ID_NAME(IID_ISLTracker), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IShellDispatch5), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IShellFolderViewDual3), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IShellLinkDataList), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IShellUIHelper2), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IBackReferencedObject), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_ICommonLayoutDefinition), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IDelegateHostItemContainer), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IExecuteCommand), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IFolderType), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IFrameLayoutDefinition), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IItemFilter), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IItemFilterOwner), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_INewItemAdvisor), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IObjectWithAssociationElement), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IObjectWithQuerySource), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IObjectWithSelection), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IPersistString2), RegisteredOnVistaOrNewer }, + { ID_NAME(IID_IRootAndRelativeParsingFolder), RegisteredOnVistaOrNewer }, - { ID_NAME(IID_IAggregateFilterCondition) }, - { ID_NAME(IID_IAliasRegistrationCallback), TRUE }, - { ID_NAME(IID_IAssociationArrayInitialize), TRUE }, - { ID_NAME(IID_IAssociationList), TRUE }, - { ID_NAME(IID_IBackReferencedObject), TRUE }, - { ID_NAME(IID_IBasePropPage), TRUE }, - { ID_NAME(IID_ICommonLayoutDefinition), TRUE }, - { ID_NAME(IID_IControlPanelEnumerator), TRUE }, - { ID_NAME(IID_IDelegateHostItemContainer), TRUE }, - { ID_NAME(IID_IDrawPropertyControl), TRUE }, - { ID_NAME(IID_IEnumAssociationElements), TRUE }, - { ID_NAME(IID_IEnumerateAssociationElements),TRUE }, - { ID_NAME(IID_IExecuteCommand), TRUE }, - { ID_NAME(IID_IFilterCondition) }, - { ID_NAME(IID_IFolderNotify), TRUE }, - { ID_NAME(IID_IFolderProperties), TRUE }, - { ID_NAME(IID_IFolderType), TRUE }, - { ID_NAME(IID_IFolderWithSearchRoot), TRUE }, - { ID_NAME(IID_IFrameLayoutDefinition), TRUE }, - { ID_NAME(IID_IItemFilter), TRUE }, - { ID_NAME(IID_IItemFilterOwner), TRUE }, - { ID_NAME(IID_ILocalizableItemParent), TRUE }, - { ID_NAME(IID_INewItemAdvisor), TRUE }, - { ID_NAME(IID_IObjectWithAssociationElement),TRUE }, - { ID_NAME(IID_IObjectWithAssociationList), TRUE }, - { ID_NAME(IID_IObjectWithQuerySource), TRUE }, - { ID_NAME(IID_IObjectWithSelection), TRUE }, - { ID_NAME(IID_IPersistString2), TRUE }, - { ID_NAME(IID_IPrinterFolder), TRUE }, - { ID_NAME(IID_IPropertyControl), TRUE }, - { ID_NAME(IID_IPropertyControlBase), TRUE }, - { ID_NAME(IID_IPropertyControlSite), TRUE }, - { ID_NAME(IID_IRegItemCustomAttributes), TRUE }, - { ID_NAME(IID_IRegItemCustomEnumerator), TRUE }, - { ID_NAME(IID_IRegItemFolder), TRUE }, - { ID_NAME(IID_IRootAndRelativeParsingFolder),TRUE }, - { ID_NAME(IID_IScope), TRUE }, - { ID_NAME(IID_IScopeItem), TRUE }, - { ID_NAME(IID_IShellBrowserServce), TRUE }, - { ID_NAME(IID_IShellFolder3), TRUE }, - { ID_NAME(IID_ITaskCondition), TRUE }, - { ID_NAME(IID_ITaskConditionCombiner), TRUE }, - { ID_NAME(IID_ITaskConditionInit), TRUE }, - { ID_NAME(IID_ITransferProvider), TRUE }, - { ID_NAME(IID_IUserEventTimer) }, - { ID_NAME(IID_IUserEventTimerCallback) }, - { ID_NAME(IID_IAssociationArrayOld), TRUE }, - { ID_NAME(IID_IAssociationArray), TRUE }, -#define IID_IDriveFolderExt IID_IDriveFolderExtOld - { ID_NAME(IID_IDriveFolderExt) }, -#undef IID_IDriveFolderExt - { ID_NAME(IID_IPinnedListOld), TRUE }, - { ID_NAME(IID_IPinnedList), TRUE }, - { ID_NAME(IID_IAttachmentExecute), TRUE }, + { ID_NAME(IID_IAssociationArray), RegisteredOnVistaAndWin7 }, + { ID_NAME(IID_IObjectWithAssociationList), RegisteredOnVistaAndWin7 }, - // + MMC stuff - { ID_NAME(IID_IComponentData), TRUE }, - { ID_NAME(IID_IConsole), TRUE }, - { ID_NAME(IID_IConsole2), TRUE }, - { ID_NAME(IID_IConsoleNameSpace), TRUE }, - { ID_NAME(IID_IConsoleNameSpace2), TRUE }, - { ID_NAME(IID_IPropertySheetCallback), TRUE }, - { ID_NAME(IID_IPropertySheetProvider), TRUE }, - { ID_NAME(IID_IExtendPropertySheet), TRUE }, - { ID_NAME(IID_IExtendPropertySheet2), TRUE }, - { ID_NAME(IID_IHeaderCtrl), TRUE }, - { ID_NAME(IID_IToolbar), TRUE }, - { ID_NAME(IID_IImageList_mmc), TRUE }, - { ID_NAME(IID_IConsoleVerb), TRUE }, - { ID_NAME(IID_ISnapInAbout), TRUE }, - // - MMC stuff + { ID_NAME(IID_IRegItemFolder), RegisteredOnVistaToWin8Dot1 }, - { ID_NAME(IID_ICertificateManager), TRUE }, + { ID_NAME(IID_IFileDialog2), RegisteredOnWin7OrNewer }, + { ID_NAME(IID_INameSpaceTreeControl), RegisteredOnWin7OrNewer }, + { ID_NAME(IID_ITaskbarList3), RegisteredOnWin7OrNewer }, + { ID_NAME(IID_ITaskbarList4), RegisteredOnWin7OrNewer }, + { ID_NAME(IID_IShellBrowserService), RegisteredOnWin7OrNewer }, + + { ID_NAME(IID_ITransferAdviseSink), RegisteredOnWin8OrNewer }, + + { ID_NAME(IID_IACList), RegisteredNever }, + { ID_NAME(IID_IACList2), RegisteredNever }, + { ID_NAME(IID_IADesktopP2), RegisteredNever }, + { ID_NAME(IID_IAccessControl), RegisteredNever }, + { ID_NAME(IID_IACLCustomMRU), RegisteredNever }, + { ID_NAME(IID_IActiveDesktop), RegisteredNever }, + { ID_NAME(IID_IActiveDesktopP), RegisteredNever }, + { ID_NAME(IID_IAddressBarParser), RegisteredNever }, + { ID_NAME(IID_IAddressBand), RegisteredNever }, + { ID_NAME(IID_IAddressEditBox), RegisteredNever }, + { ID_NAME(IID_IAsyncMoniker), RegisteredNever }, + { ID_NAME(IID_IAugmentedShellFolder), RegisteredNever }, + { ID_NAME(IID_IAugmentedShellFolder2), RegisteredNever }, + { ID_NAME(IID_IAutoComplete), RegisteredNever }, + { ID_NAME(IID_IAutoComplete2), RegisteredNever }, + { ID_NAME(IID_IBandProxy), RegisteredNever }, + { ID_NAME(IID_IBandSiteHelper), RegisteredNever }, + { ID_NAME(IID_IBanneredBar), RegisteredNever }, + { ID_NAME(IID_IBindProtocol), RegisteredNever }, + { ID_NAME(IID_IBrowserFrameOptions), RegisteredNever }, + { ID_NAME(IID_IBrowserService2), RegisteredNever }, + { ID_NAME(IID_IBrowserService3), RegisteredNever }, + { ID_NAME(IID_IBrowserService4), RegisteredNever }, + { ID_NAME(IID_ICallFactory), RegisteredNever }, + { ID_NAME(IID_ICancelMethodCalls), RegisteredNever }, + { ID_NAME(IID_IClassFactory3), RegisteredNever }, + { ID_NAME(IID_IClientSecurity), RegisteredNever }, + { ID_NAME(IID_IComThreadingInfo), RegisteredNever }, + { ID_NAME(IID_IContext), RegisteredNever }, + { ID_NAME(IID_IContextMenu), RegisteredNever }, + { ID_NAME(IID_IContextMenu2), RegisteredNever }, + { ID_NAME(IID_IContextMenu3), RegisteredNever }, + { ID_NAME(IID_IContextMenuCB), RegisteredNever }, + { ID_NAME(IID_ICopyHookA), RegisteredNever }, + { ID_NAME(IID_ICopyHookW), RegisteredNever }, + { ID_NAME(IID_ICurrentWorkingDirectory), RegisteredNever }, + { ID_NAME(IID_IDVGetEnum), RegisteredNever }, + { ID_NAME(IID_IDefViewFrame), RegisteredNever }, + { ID_NAME(IID_IDefViewScript), RegisteredNever }, + { ID_NAME(IID_IDelayedRelease), RegisteredNever }, + { ID_NAME(IID_IDeskBar), RegisteredNever }, + { ID_NAME(IID_IDeskBarClient), RegisteredNever }, + { ID_NAME(IID_IDeskMovr), RegisteredNever }, + { ID_NAME(IID_IDockingWindowFrame), RegisteredNever }, + { ID_NAME(IID_IDockingWindowSite), RegisteredNever }, + { ID_NAME(IID_IDocViewSite), RegisteredNever }, + { ID_NAME(IID_IDragSourceHelper), RegisteredNever }, + { ID_NAME(IID_IDropTargetHelper), RegisteredNever }, + { ID_NAME(IID_IEnumNetCfgComponent), RegisteredNever }, + { ID_NAME(IID_IExplorerToolbar), RegisteredNever }, + { ID_NAME(IID_IExtractIconA), RegisteredNever }, + { ID_NAME(IID_IExtractIconW), RegisteredNever }, + { ID_NAME(IID_IFileViewerA), RegisteredNever }, + { ID_NAME(IID_IFileViewerSite), RegisteredNever }, + { ID_NAME(IID_IFileViewerW), RegisteredNever }, + { ID_NAME(IID_IFolderViewHost), RegisteredNever }, + { ID_NAME(IID_IForegroundTransfer), RegisteredNever }, + { ID_NAME(IID_IGetNameSpaceExtensionPointer), RegisteredNever }, + { ID_NAME(IID_IGlobalFolderSettings), RegisteredNever }, + { ID_NAME(IID_IImageList), RegisteredNever }, + { ID_NAME(IID_IImageList2), RegisteredNever }, + { ID_NAME(IID_IInitializeObject), RegisteredNever }, + { ID_NAME(IID_IInternalUnknown), RegisteredNever }, + { ID_NAME(IID_IInternetZoneManager), RegisteredNever }, + { ID_NAME(IID_IMarshal2), RegisteredNever }, + { ID_NAME(IID_IMenuBand), RegisteredNever }, + { ID_NAME(IID_IMenuPopup), RegisteredNever }, + { ID_NAME(IID_IMruDataList), RegisteredNever }, + { ID_NAME(IID_IMruPidlList), RegisteredNever }, + { ID_NAME(IID_IMultiMonitorDockingSite), RegisteredNever }, + { ID_NAME(IID_IMultiQI), RegisteredNever }, + { ID_NAME(IID_INamespaceProxy), RegisteredNever }, + { ID_NAME(IID_INetCfg), RegisteredNever }, + { ID_NAME(IID_INetCfgComponent), RegisteredNever }, + { ID_NAME(IID_INetCfgComponentBindings), RegisteredNever }, + { ID_NAME(IID_INetCfgComponentControl), RegisteredNever }, + { ID_NAME(IID_INetCfgComponentPropertyUi), RegisteredNever }, + { ID_NAME(IID_INetCfgLock), RegisteredNever }, + { ID_NAME(IID_INetCfgPnpReconfigCallback), RegisteredNever }, + { ID_NAME(IID_INetConnectionPropertyUi), RegisteredNever }, + { ID_NAME(IID_INetConnectionPropertyUi2), RegisteredNever }, + { ID_NAME(IID_INewShortcutHookA), RegisteredNever }, + { ID_NAME(IID_INewShortcutHookW), RegisteredNever }, + { ID_NAME(IID_INSCTree), RegisteredNever }, + { ID_NAME(IID_INSCTree2), RegisteredNever }, + { ID_NAME(IID_IObjMgr), RegisteredNever }, + { ID_NAME(IID_IOleInPlaceObjectWindowless), RegisteredNever }, + { ID_NAME(IID_IOleInPlaceSiteWindowless), RegisteredNever }, + { ID_NAME(IID_IPersistFreeThreadedObject), RegisteredNever }, + { ID_NAME(IID_IProgressDialog), RegisteredNever }, + { ID_NAME(IID_IPropSheetPage), RegisteredNever }, + { ID_NAME(IID_IQueryAssociations), RegisteredNever }, + { ID_NAME(IID_IQueryInfo), RegisteredNever }, + { ID_NAME(IID_IRegTreeOptions), RegisteredNever }, + { ID_NAME(IID_IRpcOptions), RegisteredNever }, + { ID_NAME(IID_IServerSecurity), RegisteredNever }, + { ID_NAME(IID_IShellApp), RegisteredNever }, + { ID_NAME(IID_IShellChangeNotify), RegisteredNever }, + { ID_NAME(IID_IShellCopyHookA), RegisteredNever }, + { ID_NAME(IID_IShellCopyHookW), RegisteredNever }, + { ID_NAME(IID_IShellDesktopTray), RegisteredNever }, + { ID_NAME(IID_IShellDetails), RegisteredNever }, + { ID_NAME(IID_IShellDispatch6), RegisteredNever }, + { ID_NAME(IID_IShellExecuteHookA), RegisteredNever }, + { ID_NAME(IID_IShellExecuteHookW), RegisteredNever }, + { ID_NAME(IID_IShellExtInit), RegisteredNever }, + { ID_NAME(IID_IShellFolderBand), RegisteredNever }, + { ID_NAME(IID_IShellFolderSearchable), RegisteredNever }, + { ID_NAME(IID_IShellFolderSearchableCallback), RegisteredNever }, + { ID_NAME(IID_IShellFolderView), RegisteredNever }, + { ID_NAME(IID_IShellFolderViewCB), RegisteredNever }, + { ID_NAME(IID_IShellFolderViewType), RegisteredNever }, + { ID_NAME(IID_IShellIconOverlay), RegisteredNever }, + { ID_NAME(IID_IShellIconOverlayIdentifier), RegisteredNever }, + { ID_NAME(IID_IShellImageData), RegisteredNever }, + { ID_NAME(IID_IShellImageDataAbort), RegisteredNever }, + { ID_NAME(IID_IShellImageDataFactory), RegisteredNever }, + { ID_NAME(IID_IShellMenu), RegisteredNever }, + { ID_NAME(IID_IShellMenu2), RegisteredNever }, + { ID_NAME(IID_IShellMenuAcc), RegisteredNever }, + { ID_NAME(IID_IShellMenuCallback), RegisteredNever }, + { ID_NAME(IID_IShellPropSheetExt), RegisteredNever }, + { ID_NAME(IID_IShellService), RegisteredNever }, + { ID_NAME(IID_IShellTaskScheduler), RegisteredNever }, + { ID_NAME(IID_ISynchronizeContainer), RegisteredNever }, + { ID_NAME(IID_ISynchronizeEvent), RegisteredNever }, + { ID_NAME(IID_ISynchronizeHandle), RegisteredNever }, + { ID_NAME(IID_ITrackShellMenu), RegisteredNever }, + { ID_NAME(IID_ITransferDestination), RegisteredNever }, + { ID_NAME(IID_ITransferSource), RegisteredNever }, + { ID_NAME(IID_ITranslateShellChangeNotify), RegisteredNever }, + { ID_NAME(IID_ITrayPriv), RegisteredNever }, + { ID_NAME(IID_ITrayPriv2), RegisteredNever }, + { ID_NAME(IID_IURLSearchHook), RegisteredNever }, + { ID_NAME(IID_IURLSearchHook2), RegisteredNever }, + { ID_NAME(IID_IViewObjectEx), RegisteredNever }, + { ID_NAME(IID_IWinEventHandler), RegisteredNever }, + { ID_NAME(IID_DFConstraint), RegisteredNever }, + { ID_NAME(IID_CDefView), RegisteredNever }, + { ID_NAME(CLSID_ShellDesktop), RegisteredNever }, + { ID_NAME(IID_IAliasRegistrationCallback), RegisteredNever }, + { ID_NAME(IID_IAssociationArrayInitialize), RegisteredNever }, + { ID_NAME(IID_IAssociationList), RegisteredNever }, + { ID_NAME(IID_IBasePropPage), RegisteredNever }, + { ID_NAME(IID_IDrawPropertyControl), RegisteredNever }, + { ID_NAME(IID_IEnumAssociationElements), RegisteredNever }, + { ID_NAME(IID_IEnumerateAssociationElements), RegisteredNever }, + { ID_NAME(IID_IFolderNotify), RegisteredNever }, + { ID_NAME(IID_IFolderProperties), RegisteredNever }, + { ID_NAME(IID_IFolderWithSearchRoot), RegisteredNever }, + { ID_NAME(IID_ILocalizableItemParent), RegisteredNever }, + { ID_NAME(IID_IPrinterFolder), RegisteredNever }, + { ID_NAME(IID_IPropertyControl), RegisteredNever }, + { ID_NAME(IID_IPropertyControlBase), RegisteredNever }, + { ID_NAME(IID_IPropertyControlSite), RegisteredNever }, + { ID_NAME(IID_IRegItemCustomAttributes), RegisteredNever }, + { ID_NAME(IID_IRegItemCustomEnumerator), RegisteredNever }, + { ID_NAME(IID_IScope), RegisteredNever }, + { ID_NAME(IID_IScopeItem), RegisteredNever }, + { ID_NAME(IID_ITaskCondition), RegisteredNever }, + { ID_NAME(IID_ITaskConditionCombiner), RegisteredNever }, + { ID_NAME(IID_ITaskConditionInit), RegisteredNever }, + { ID_NAME(IID_ITransferProvider), RegisteredNever }, + { ID_NAME(IID_IAssociationArrayOld), RegisteredNever }, + { ID_NAME(IID_IPinnedListOld), RegisteredNever }, + { ID_NAME(IID_IPinnedList), RegisteredNever }, + { ID_NAME(IID_IAttachmentExecute), RegisteredNever }, + { ID_NAME(IID_IComponentData), RegisteredNever }, + { ID_NAME(IID_IConsole), RegisteredNever }, + { ID_NAME(IID_IConsole2), RegisteredNever }, + { ID_NAME(IID_IConsoleNameSpace), RegisteredNever }, + { ID_NAME(IID_IConsoleNameSpace2), RegisteredNever }, + { ID_NAME(IID_IPropertySheetCallback), RegisteredNever }, + { ID_NAME(IID_IPropertySheetProvider), RegisteredNever }, + { ID_NAME(IID_IExtendPropertySheet), RegisteredNever }, + { ID_NAME(IID_IExtendPropertySheet2), RegisteredNever }, + { ID_NAME(IID_IHeaderCtrl), RegisteredNever }, + { ID_NAME(IID_IToolbar), RegisteredNever }, + { ID_NAME(IID_IImageList_mmc), RegisteredNever }, + { ID_NAME(IID_IConsoleVerb), RegisteredNever }, + { ID_NAME(IID_ISnapInAbout), RegisteredNever }, + { ID_NAME(IID_ICertificateManager), RegisteredNever }, + { ID_NAME(IID_IEnumNetCfgBindingInterface), RegisteredNever }, + { ID_NAME(IID_IEnumNetCfgBindingPath), RegisteredNever }, + { ID_NAME(IID_INetCfgBindingInterface), RegisteredNever }, + { ID_NAME(IID_INetCfgBindingPath), RegisteredNever }, }; static const INT KnownInterfaceCount = RTL_NUMBER_OF(KnownInterfaces); +#define ValidClassForVersion(pClass, version) \ + ((pClass)->MinClassNTDDIVersion <= (version) && (pClass)->MaxClassNTDDIVersion >= (version)) +#define ValidInterfaceForVersion(interface, version) \ + ((interface).MinInterfaceNTDDIVersion <= (version) && (interface).MaxInterfaceNTDDIVersion >= (version)) + static PCKNOWN_INTERFACE FindInterface( @@ -530,13 +547,19 @@ static BOOLEAN IsInterfaceExpected( _In_ PCCLASS_AND_INTERFACES class, - _In_ const IID *iid) + _In_ const IID *iid, + _In_ ULONG NTDDIVersion) { INT i; for (i = 0; class->ifaces[i].iid; i++) - if (IsEqualIID(class->ifaces[i].iid, iid)) + { + if (ValidInterfaceForVersion(class->ifaces[i], NTDDIVersion) && + IsEqualIID(class->ifaces[i].iid, iid)) + { return TRUE; + } + } return FALSE; } @@ -567,7 +590,8 @@ static VOID TestModuleInterfaces( _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, - _In_ INT ExpectedInterfaceCount) + _In_ INT ExpectedInterfaceCount, + _In_ ULONG NTDDIVersion) { HRESULT hr; PVOID pObj; @@ -578,6 +602,8 @@ TestModuleInterfaces( for (iClass = 0; iClass < ExpectedInterfaceCount; iClass++) { class = &ExpectedInterfaces[iClass]; + if (!ValidClassForVersion(class, NTDDIVersion)) + continue; hr = CoCreateInstance(class->clsid, NULL, CLSCTX_INPROC_SERVER, @@ -592,22 +618,19 @@ TestModuleInterfaces( pUnk = pObj; - /* Check that all expected interfaces are present and have the right offset */ + /* Check that all expected interfaces are present */ for (iIntf = 0; class->ifaces[iIntf].iid; iIntf++) { + if (!ValidInterfaceForVersion(class->ifaces[iIntf], NTDDIVersion)) + continue; PCKNOWN_INTERFACE iface = FindInterface(class->ifaces[iIntf].iid); LONG offset = GetInterfaceOffset(pUnk, iface->iid); if (offset == INTF_NOT_EXPOSED) - ok(0, "%s is missing %s (offset %ld)\n", class->name, iface->name, class->ifaces[iIntf].offset); - else if (class->ifaces[iIntf].offset != FARAWY) - { -#ifdef FAIL_WRONG_OFFSET - ok(offset == class->ifaces[iIntf].offset, "%s, %s offset is %ld, expected %ld\n", class->name, iface->name, offset, class->ifaces[iIntf].offset); -#else - if (offset != class->ifaces[iIntf].offset) - mytrace("%s, %s offset is %ld, expected %ld\n", class->name, iface->name, offset, class->ifaces[iIntf].offset); + ok(0, "%s is missing %s\n", class->name, iface->name); +#ifdef LOG_COM_INTERFACE_OFFSETS + else + mytrace("%s0x%lx, %s, %s\n", offset < 0 ? "-" : "", offset < 0 ? -offset : offset, class->name, iface->name); #endif - } } /* Check that none other than the expected interfaces are present */ @@ -615,14 +638,10 @@ TestModuleInterfaces( { PCKNOWN_INTERFACE iface = &KnownInterfaces[iIntf]; LONG offset; - if (IsInterfaceExpected(class, iface->iid)) + if (IsInterfaceExpected(class, iface->iid, NTDDIVersion)) continue; offset = GetInterfaceOffset(pUnk, iface->iid); -#ifdef GENERATE_TABLE_ENTRIES - ok(offset == INTF_NOT_EXPOSED, "%s: { %s0x%lx, &%s },\n", class->name, offset < 0 ? "-" : "", offset < 0 ? -offset : offset, iface->name); -#else - ok(offset == INTF_NOT_EXPOSED, "%s exposes %s (offset %ld), but shouldn't\n", class->name, iface->name, offset); -#endif + ok(offset == INTF_NOT_EXPOSED, "%s exposes %s (offset %s0x%lx), but shouldn't\n", class->name, iface->name, offset < 0 ? "-" : "", offset < 0 ? -offset : offset); } // TODO: do some aggregation @@ -636,7 +655,8 @@ VOID TestModuleRegistry( _In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, - _In_ INT ExpectedInterfaceCount) + _In_ INT ExpectedInterfaceCount, + _In_ ULONG NTDDIVersion) { INT iClass; PCCLASS_AND_INTERFACES class; @@ -659,6 +679,8 @@ TestModuleRegistry( PCWSTR expectedThreadingModel; class = &ExpectedInterfaces[iClass]; + if (!ValidClassForVersion(class, NTDDIVersion)) + continue; status = RtlStringFromGUID(class->clsid, &clsid); ok(status == STATUS_SUCCESS, "Failed to convert guid to string for %s, status %lx\n", class->name, status); if (myskip(NT_SUCCESS(status), "No guid string\n")) @@ -717,7 +739,8 @@ VOID TestManualInstantiation( _In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, - _In_ INT ExpectedInterfaceCount) + _In_ INT ExpectedInterfaceCount, + _In_ ULONG NTDDIVersion) { INT iClass; PCCLASS_AND_INTERFACES class; @@ -733,6 +756,8 @@ TestManualInstantiation( PVOID pv; HRESULT hr; class = &ExpectedInterfaces[iClass]; + if (!ValidClassForVersion(class, NTDDIVersion)) + continue; hr = DllGetClassObject(class->clsid, &IID_IClassFactory, &pv); ok(hr == S_OK, "DllGetClassObject failed for %s, hr = 0x%lx\n", class->name, hr); if (!myskip(SUCCEEDED(hr), "No class factory\n")) @@ -751,25 +776,50 @@ TestManualInstantiation( } VOID -TestClasses( +TestClassesEx( _In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, - _In_ INT ExpectedInterfaceCount) + _In_ INT ExpectedInterfaceCount, + _In_ ULONG MinimumNTDDIVersion, + _In_ ULONG MaximumNTDDIVersion, + _In_ BOOLEAN IsWinRT) { HRESULT hr; + ULONG NTDDIVersion; + + NTDDIVersion = GetNTDDIVersion(); + + if (NTDDIVersion < MinimumNTDDIVersion || NTDDIVersion > MaximumNTDDIVersion) + { + skip("Skipping all tests for module %S, NTDDI version (0x%08lx) is outside of the supported range (0x%08lx-0x%08lx).\n", + ModuleName, NTDDIVersion, MinimumNTDDIVersion, MaximumNTDDIVersion); + return; + } hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); ok(hr == S_OK, "CoInitializeEx failed. hr=0x%lx\n", hr); if (myskip(SUCCEEDED(hr), "Failed to initialize COM. Cannot perform tests\n")) return; - TestModuleInterfaces(ExpectedInterfaces, ExpectedInterfaceCount); - TestModuleRegistry(ModuleName, ExpectedInterfaces, ExpectedInterfaceCount); - TestManualInstantiation(ModuleName, ExpectedInterfaces, ExpectedInterfaceCount); + TestModuleInterfaces(ExpectedInterfaces, ExpectedInterfaceCount, NTDDIVersion); + TestModuleRegistry(ModuleName, ExpectedInterfaces, ExpectedInterfaceCount, NTDDIVersion); + if (IsWinRT) + skip("%S is a WinRT module, skipping manual instantiation tests.\n", ModuleName); + else + TestManualInstantiation(ModuleName, ExpectedInterfaces, ExpectedInterfaceCount, NTDDIVersion); CoUninitialize(); } +VOID +TestClasses( + _In_ PCWSTR ModuleName, + _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, + _In_ INT ExpectedInterfaceCount) +{ + TestClassesEx(ModuleName, ExpectedInterfaces, ExpectedInterfaceCount, NTDDI_MIN, NTDDI_MAX, FALSE); +} + static VOID TestInterfaceRegistry( @@ -779,11 +829,14 @@ TestInterfaceRegistry( INT i; HKEY hKeyInterface; LONG result; + ULONG CurrentNTDDI; result = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Classes\\Interface", 0, KEY_ENUMERATE_SUB_KEYS, &hKeyInterface); ok(result == NO_ERROR, "Failed to open interface key, error %lu\n", result); if (!myskip(result == NO_ERROR, "No interface key\n")) { + CurrentNTDDI = GetNTDDIVersion(); + for (i = 0; i < InterfaceCount; i++) { HKEY hKey; @@ -802,14 +855,14 @@ TestInterfaceRegistry( continue; result = RegOpenKeyExW(hKeyInterface, iid.Buffer, 0, KEY_QUERY_VALUE, &hKey); - if (iface->noreg) + if (iface->IsRegistered(CurrentNTDDI)) { - ok(result == ERROR_FILE_NOT_FOUND, "RegOpenKeyEx returned %lu for %s\n", result, iface->name); + ok(result == NO_ERROR, "%s should be registered. (Error %lu)\n", iface->name, result); + // (void)myskip(result == NO_ERROR, "No key\n"); } else { - ok(result == NO_ERROR, "Failed to open key for %s, error %lu\n", iface->name, result); - (void)myskip(result == NO_ERROR, "No key\n"); + ok(result == ERROR_FILE_NOT_FOUND, "%s should not be registered. (Error %lu)\n", iface->name, result); } RtlFreeUnicodeString(&iid); if (result != NO_ERROR) diff --git a/modules/rostests/apitests/com/com_apitest.h b/modules/rostests/apitests/com/com_apitest.h index 3bbe9e18475..ae41bfa01c5 100644 --- a/modules/rostests/apitests/com/com_apitest.h +++ b/modules/rostests/apitests/com/com_apitest.h @@ -8,14 +8,6 @@ #ifndef _COM_APITEST_H_ #define _COM_APITEST_H_ -/* Define this if you're adding new classes - the test will auto-generate the - * interface table entries for you ;) */ -//#define GENERATE_TABLE_ENTRIES - -/* Define this to make wrong interface offsets count as test failures... - * we usually don't want to be that strict */ -//#define FAIL_WRONG_OFFSET - #define WIN32_NO_STATUS #define _INC_WINDOWS #define COM_NO_WINDOWS_H @@ -41,23 +33,30 @@ #include #include #include +#include typedef IUnknown *PUNKNOWN; +/* Uncomment this if you want to log the offsets of COM interfaces. */ +// #define LOG_COM_INTERFACE_OFFSETS + typedef struct _CLASS_AND_INTERFACES { const CLSID *clsid; PCSTR name; + ULONG MinClassNTDDIVersion; + ULONG MaxClassNTDDIVersion; struct { - LONG offset; + ULONG MinInterfaceNTDDIVersion; + ULONG MaxInterfaceNTDDIVersion; const IID *iid; } ifaces[80]; PCWSTR ThreadingModel; } CLASS_AND_INTERFACES; typedef const CLASS_AND_INTERFACES *PCCLASS_AND_INTERFACES; -#define ID_NAME(c) &c, #c +#define ID_NAME(c, minc, maxc) &c, #c, minc, maxc VOID TestClasses( @@ -65,9 +64,14 @@ TestClasses( _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount); -/* Indicate that the interface is implemented in another (probably aggregate) object, - * so its offset varies and is "far away" */ -#define FARAWY (-65535) +VOID +TestClassesEx( + _In_ PCWSTR ModuleName, + _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, + _In_ INT ExpectedInterfaceCount, + _In_ ULONG MinimumNTDDIVersion, + _In_ ULONG MaximumNTDDIVersion, + _In_ BOOLEAN IsWinRT); // TODO: fix our headers... we really shouldn't need these here DEFINE_GUID(CLSID_AugmentedShellFolder, 0x91ea3f8b, 0xc99b, 0x11d0, 0x98, 0x15, 0x00, 0xc0, 0x4f, 0xd9, 0x19, 0x72); @@ -219,7 +223,7 @@ DEFINE_GUID(IID_IImageList_mmc, 0x43136eb8, 0xd36c, 0x11cf, 0xad, 0xb DEFINE_GUID(IID_IConsoleVerb, 0xe49f7a60, 0x74af, 0x11d0, 0xa2, 0x86, 0x00, 0xc0, 0x4f, 0xd8, 0xfe, 0x93); DEFINE_GUID(IID_ISnapInAbout, 0x1245208c, 0xa151, 0x11d0, 0xa7, 0xd7, 0x00, 0xc0, 0x4f, 0xd9, 0x09, 0xdd); - +DEFINE_GUID(IID_INetConnectionCommonUi2, 0xC08956A6, 0x1CD3, 0x11D1, 0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E); // Same as IID_INetLanConnectionUiInfo #endif /* _COM_APITEST_H_ */ diff --git a/modules/rostests/apitests/com/combase.c b/modules/rostests/apitests/com/combase.c new file mode 100644 index 00000000000..81e5f42d733 --- /dev/null +++ b/modules/rostests/apitests/com/combase.c @@ -0,0 +1,32 @@ +/* + * PROJECT: ReactOS API Tests + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: COM interface test for prnfldr server + * COPYRIGHT: Copyright 2025 Carl Bialorucki + */ + +#include "com_apitest.h" + +#define NDEBUG +#include + +static const CLASS_AND_INTERFACES ExpectedInterfaces[] = +{ + { + ID_NAME(CLSID_StdComponentCategoriesMgr, NTDDI_WIN8, NTDDI_MAX), + { + { NTDDI_WIN8, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN8, NTDDI_MAX, &IID_ICatRegister }, + { NTDDI_WIN8, NTDDI_MAX, &IID_ICatInformation }, + }, + L"Both" + }, +}; + +START_TEST(combase) +{ + TestClassesEx(L"combase", + ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces), + NTDDI_WIN8, NTDDI_MAX, + FALSE); +} diff --git a/modules/rostests/apitests/com/explorerframe.c b/modules/rostests/apitests/com/explorerframe.c new file mode 100644 index 00000000000..66c1d5f4704 --- /dev/null +++ b/modules/rostests/apitests/com/explorerframe.c @@ -0,0 +1,131 @@ +/* + * PROJECT: ReactOS API Tests + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: COM interface test for explorerframe server + * COPYRIGHT: Copyright 2025 Carl Bialorucki + */ + +#include "com_apitest.h" + +#define NDEBUG +#include + +static const CLASS_AND_INTERFACES ExpectedInterfaces[] = +{ + { + ID_NAME(CLSID_BandSiteMenu, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu3 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu2 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellService }, + } + }, + { + ID_NAME(CLSID_CDockingBarPropertyBag, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IPropertyBag }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + }, + }, + { + ID_NAME(CLSID_DeskBarApp, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDeskBar }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObjectSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDockingWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistStreamInit }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu3 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu2 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu }, + } + }, + { + ID_NAME(CLSID_GlobalFolderSettings, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IGlobalFolderSettings }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + }, + L"Both" + }, + { + ID_NAME(CLSID_InternetToolbar, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDeskBar }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObjectSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDockingWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistStreamInit }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IBandHost }, + } + }, + { + ID_NAME(CLSID_RebarBandSite, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IBandSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObjectSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDeskBarClient }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IWinEventHandler }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDropTarget }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IBandSiteHelper }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleCommandTarget }, + } + }, + { + ID_NAME(CLSID_SH_AddressBand, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IDeskBand }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDockingWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IWinEventHandler }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObjectSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellChangeNotify }, + } + }, + { + ID_NAME(CLSID_TaskbarList, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_ITaskbarList3 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_ITaskbarList4 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_ITaskbarList2 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_ITaskbarList }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + } + }, +}; + +START_TEST(explorerframe) +{ + TestClassesEx(L"explorerframe", + ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces), + NTDDI_WIN7, NTDDI_MAX, + FALSE); +} diff --git a/modules/rostests/apitests/com/ieframe.c b/modules/rostests/apitests/com/ieframe.c index 74c06675441..efc8226bfe7 100644 --- a/modules/rostests/apitests/com/ieframe.c +++ b/modules/rostests/apitests/com/ieframe.c @@ -3,6 +3,7 @@ * LICENSE: GPLv2+ - See COPYING in the top level directory * PURPOSE: COM interface test for ieframe classes * PROGRAMMER: Thomas Faber + * Carl Bialorucki */ #include "com_apitest.h" @@ -13,235 +14,268 @@ static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { { - ID_NAME(CLSID_IE_SearchBand), + ID_NAME(CLSID_CommBand, NTDDI_WIN7, NTDDI_MAX), { - { -0x30, &IID_IObjectWithSite }, - { -0x28, &IID_IDeskBand }, - { -0x28, &IID_IDockingWindow }, - { -0x28, &IID_IOleWindow }, - { -0x24, &IID_IInputObject }, - { -0x20, &IID_IPersistStream }, - { -0x20, &IID_IPersist }, - { -0x1c, &IID_IOleCommandTarget }, - { -0x18, &IID_IServiceProvider }, - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x8, &IID_IDispatch }, - { 0x10, &IID_IPersistPropertyBag }, - { 0x8c, &IID_IBandNavigate }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDeskBand }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDockingWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistPropertyBag }, + }, + }, + { + ID_NAME(CLSID_CUrlHistory, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IUrlHistoryStg2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUrlHistoryStg }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, } }, { - ID_NAME(CLSID_Internet), + ID_NAME(CLSID_CURLSearchHook, NTDDI_MIN, NTDDI_MAX), { - { -0x18, &IID_IObjectWithBackReferences }, - { -0x14, &IID_IShellFolder2 }, - { -0x14, &IID_IShellFolder }, - { -0x10, &IID_IPersistFolder2 }, - { -0x10, &IID_IPersistFolder }, - { -0x10, &IID_IPersist }, - { -0xc, &IID_IBrowserFrameOptions }, - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IURLSearchHook2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IURLSearchHook }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, } }, { - ID_NAME(CLSID_CUrlHistory), + ID_NAME(CLSID_IE_SearchBand, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IUrlHistoryStg2 }, - { 0x0, &IID_IUrlHistoryStg }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBandNavigate }, } }, { - ID_NAME(CLSID_CURLSearchHook), + ID_NAME(CLSID_Internet, NTDDI_MIN, NTDDI_WINBLUE), { - { 0x0, &IID_IURLSearchHook2 }, - { 0x0, &IID_IURLSearchHook }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IObjectWithBackReferences }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IBrowserFrameOptions }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellExtInit }, } }, { - ID_NAME(CLSID_InternetShortcut), + ID_NAME(CLSID_InternetShortcut, NTDDI_MIN, NTDDI_MAX), { - { -0xc, &IID_IDataObject }, - { -0x8, &IID_IContextMenu2 }, - { -0x8, &IID_IContextMenu }, - { -0x4, &IID_IExtractIconA }, - { 0x0, &IID_IExtractIconW }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFile }, - { 0x4, &IID_IPersist }, - { 0x8, &IID_IPersistStream }, - { 0xc, &IID_IShellExtInit }, - { 0x10, &IID_IShellLinkA }, - { 0x14, &IID_IShellLinkW }, - { 0x18, &IID_IShellPropSheetExt }, - { 0x1c, &IID_IPropertySetStorage }, - { 0x20, &IID_INewShortcutHookA }, - { 0x24, &IID_INewShortcutHookW }, - { 0x30, &IID_IQueryInfo }, - { 0x38, &IID_IObjectWithSite }, - { 0x44, &IID_IOleCommandTarget }, - { 0x48, &IID_IServiceProvider }, - { 0x4c, &IID_IPropertyStore }, - { 0x50, &IID_IInitializeWithFile }, - { 0x54, &IID_IInitializeWithBindCtx }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IExtractIconA }, + { NTDDI_MIN, NTDDI_MAX, &IID_IExtractIconW }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkA }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkW }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPropertySetStorage }, + { NTDDI_MIN, NTDDI_MAX, &IID_INewShortcutHookA }, + { NTDDI_MIN, NTDDI_MAX, &IID_INewShortcutHookW }, + { NTDDI_MIN, NTDDI_MAX, &IID_IQueryInfo }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPropertyStore }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInitializeWithFile }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInitializeWithBindCtx }, } }, { - ID_NAME(CLSID_ShellUIHelper), + ID_NAME(CLSID_ShellUIHelper, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_IUnknown }, - { 0xc, &IID_IObjectWithSite }, - { 0x10, &IID_IObjectSafety }, - { 0x14, &IID_IShellUIHelper2 }, - { 0x14, &IID_IShellUIHelper }, - { 0x14, &IID_IDispatch }, - { 0x18, &IID_IDispatchEx }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellUIHelper2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellUIHelper }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatchEx }, } }, { - ID_NAME(CLSID_ShellNameSpace), + ID_NAME(CLSID_ShellNameSpace, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_IShellNameSpace }, - { 0x0, &IID_IShellFavoritesNameSpace }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IProvideClassInfo2 }, - { 0x4, &IID_IProvideClassInfo }, - { 0x8, &IID_IPersistStreamInit }, - { 0x10, &IID_IPersistPropertyBag }, - { 0x14, &IID_IQuickActivate }, - { 0x18, &IID_IOleControl }, - { 0x1c, &IID_IOleObject }, - { 0x20, &IID_IOleInPlaceActiveObject }, - { 0x24, &IID_IViewObjectEx }, - { 0x24, &IID_IViewObject2 }, - { 0x24, &IID_IViewObject }, - { 0x28, &IID_IOleInPlaceObjectWindowless }, - { 0x28, &IID_IOleInPlaceObject }, - { 0x28, &IID_IOleWindow }, - { 0x38, &IID_IConnectionPointContainer }, - { 0x3c, &IID_IDropTarget }, - { 0xb4, &IID_IObjectWithSite }, - { 0xbc, &IID_INSCTree }, - { 0xc4, &IID_IShellBrowser }, - { 0xc8, &IID_IFolderFilterSite }, - { 0xcc, &IID_INewMenuClient }, - { 0xd0, &IID_IServiceProvider }, - { 0xd4, &IID_INameSpaceTreeControl }, - { 0xe0, &IID_IVisualProperties }, - { 0xe4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellNameSpace }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFavoritesNameSpace }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_MAX, &IID_IQuickActivate }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IViewObjectEx }, + { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObjectWindowless }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_INSCTree }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellBrowser }, + { NTDDI_MIN, NTDDI_MAX, &IID_IFolderFilterSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_INewMenuClient }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_INameSpaceTreeControl }, + { NTDDI_MIN, NTDDI_MAX, &IID_IVisualProperties }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, } }, { - ID_NAME(CLSID_ShellWindows), + ID_NAME(CLSID_ShellWindows, NTDDI_MIN, NTDDI_VISTASP4), { - { -0xa0, &IID_IMarshal2 }, - { -0xa0, &IID_IMarshal }, - { -0x20, &IID_IClientSecurity }, - { -0x18, &IID_IRpcOptions }, - { -0xc, &IID_ICallFactory }, - { -0x8, &IID_IForegroundTransfer }, - { 0x0, &IID_IMultiQI }, - { 0x0, &IID_IUnknown }, - { FARAWY, &IID_IShellWindows }, - { FARAWY, &IID_IDispatch }, - { FARAWY, &IID_IConnectionPointContainer }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMarshal2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMarshal }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IClientSecurity }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IRpcOptions }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_ICallFactory }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IForegroundTransfer }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMultiQI }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellWindows }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IConnectionPointContainer }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IServiceProvider }, } }, { - ID_NAME(CLSID_WebBrowser), + ID_NAME(CLSID_WebBrowser, NTDDI_MIN, NTDDI_MAX), { - { -0x20, &IID_IPersist }, - { -0x1c, &IID_IOleObject }, - { -0x18, &IID_IViewObject2 }, - { -0x18, &IID_IViewObject }, - { -0x14, &IID_IDataObject }, - { -0x10, &IID_IOleInPlaceObject }, - { -0x10, &IID_IOleWindow }, - { -0xc, &IID_IOleInPlaceActiveObject }, - { 0x0, &IID_IUnknown }, - { 0x98, &IID_IPersistStream }, - { 0x98, &IID_IPersistStreamInit }, - { 0x9c, &IID_IPersistPropertyBag }, - { 0xa0, &IID_IOleControl }, - { 0xa8, &IID_IProvideClassInfo2 }, - { 0xa8, &IID_IProvideClassInfo }, - { 0xac, &IID_IConnectionPointContainer }, - { 0x120, &IID_IWebBrowser2 }, - { 0x120, &IID_IWebBrowserApp }, - { 0x120, &IID_IWebBrowser }, - { 0x120, &IID_IDispatch }, - { 0x130, &IID_IOleCommandTarget }, - { 0x134, &IID_IObjectSafety }, - { 0x13c, &IID_ITargetEmbedding }, - { 0x140, &IID_IPersistStorage }, - { 0x144, &IID_IPersistHistory }, - { FARAWY, &IID_IShellService }, - { FARAWY, &IID_IServiceProvider }, - { FARAWY, &IID_IHlinkFrame }, - { FARAWY, &IID_IUrlHistoryNotify }, - { FARAWY, &IID_ITargetFrame2 }, - { FARAWY, &IID_ITargetNotify }, - { FARAWY, &IID_ITargetFramePriv2 }, - { FARAWY, &IID_ITargetFramePriv }, - { FARAWY, &IID_IEFrameAuto }, - { FARAWY, &IID_IWebBrowserPriv }, - { FARAWY, &IID_IWebBrowserPriv2 }, - { FARAWY, &IID_ISecMgrCacheSeedTarget }, - { FARAWY, &IID_ITargetFrame }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IEFrameAuto }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv2 }, + +#ifdef _WIN64 // IID_IWebBrowserPriv is missing from this class on Vista x64 + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IWebBrowserPriv }, +#else + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IWebBrowserPriv }, +#endif + + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl }, + { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo }, + { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowserApp }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetEmbedding }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStorage }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistHistory }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellService }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IHlinkFrame }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUrlHistoryNotify }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFrame2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetNotify }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFramePriv2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFramePriv }, + { NTDDI_MIN, NTDDI_MAX, &IID_ISecMgrCacheSeedTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFrame }, } }, { - ID_NAME(CLSID_WebBrowser_V1), + ID_NAME(CLSID_WebBrowser_V1, NTDDI_MIN, NTDDI_MAX), { - { -0x20, &IID_IPersist }, - { -0x1c, &IID_IOleObject }, - { -0x18, &IID_IViewObject2 }, - { -0x18, &IID_IViewObject }, - { -0x14, &IID_IDataObject }, - { -0x10, &IID_IOleInPlaceObject }, - { -0x10, &IID_IOleWindow }, - { -0xc, &IID_IOleInPlaceActiveObject }, - { 0x0, &IID_IUnknown }, - { 0x98, &IID_IPersistStream }, - { 0x98, &IID_IPersistStreamInit }, - { 0x9c, &IID_IPersistPropertyBag }, - { 0xa0, &IID_IOleControl }, - { 0xa8, &IID_IProvideClassInfo2 }, - { 0xa8, &IID_IProvideClassInfo }, - { 0xac, &IID_IConnectionPointContainer }, - { 0x120, &IID_IWebBrowser2 }, - { 0x120, &IID_IWebBrowserApp }, - { 0x120, &IID_IWebBrowser }, - { 0x120, &IID_IDispatch }, - { 0x130, &IID_IOleCommandTarget }, - { 0x134, &IID_IObjectSafety }, - { 0x13c, &IID_ITargetEmbedding }, - { 0x140, &IID_IPersistStorage }, - { 0x144, &IID_IPersistHistory }, - { FARAWY, &IID_IShellService }, - { FARAWY, &IID_IServiceProvider }, - { FARAWY, &IID_IHlinkFrame }, - { FARAWY, &IID_IUrlHistoryNotify }, - { FARAWY, &IID_ITargetFrame2 }, - { FARAWY, &IID_ITargetNotify }, - { FARAWY, &IID_ITargetFramePriv2 }, - { FARAWY, &IID_ITargetFramePriv }, - { FARAWY, &IID_IEFrameAuto }, - { FARAWY, &IID_IWebBrowserPriv }, - { FARAWY, &IID_IWebBrowserPriv2 }, - { FARAWY, &IID_ISecMgrCacheSeedTarget }, - { FARAWY, &IID_ITargetFrame }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IEFrameAuto }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv2 }, + +#ifdef _WIN64 // IID_IWebBrowserPriv is missing from this class on Vista x64 + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IWebBrowserPriv }, +#else + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IWebBrowserPriv }, +#endif + + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl }, + { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo }, + { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowserApp }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetEmbedding }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStorage }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistHistory }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellService }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IHlinkFrame }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUrlHistoryNotify }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFrame2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetNotify }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFramePriv2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFramePriv }, + { NTDDI_MIN, NTDDI_MAX, &IID_ISecMgrCacheSeedTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_ITargetFrame }, } }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(ieframe) { - TestClasses(L"ieframe", ExpectedInterfaces, ExpectedInterfaceCount); + TestClasses(L"ieframe", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); } diff --git a/modules/rostests/apitests/com/netcfgx.c b/modules/rostests/apitests/com/netcfgx.c index ef13b7d5cd5..92bc0f33f70 100644 --- a/modules/rostests/apitests/com/netcfgx.c +++ b/modules/rostests/apitests/com/netcfgx.c @@ -13,19 +13,21 @@ static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { { - ID_NAME(CLSID_CNetCfg), + ID_NAME(CLSID_CNetCfg, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_INetCfg }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_INetCfgLock }, - { 0x10, &IID_INetCfgPnpReconfigCallback }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetCfg }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetCfgLock }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetCfgPnpReconfigCallback }, }, L"Both" }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(netcfgx) { - TestClasses(L"netcfgx", ExpectedInterfaces, ExpectedInterfaceCount); + if (GetNTVersion() < _WIN32_WINNT_WIN10) + TestClasses(L"netcfgx", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); + else + TestClasses(L"NetSetupShim", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); } diff --git a/modules/rostests/apitests/com/netshell.c b/modules/rostests/apitests/com/netshell.c index 3d107a54d9a..a3b750cca51 100644 --- a/modules/rostests/apitests/com/netshell.c +++ b/modules/rostests/apitests/com/netshell.c @@ -3,6 +3,7 @@ * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory * PURPOSE: COM interface test for netshell classes * PROGRAMMER: Thomas Faber + * Carl Bialorucki */ #include "com_apitest.h" @@ -12,142 +13,147 @@ static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { + /* CLSID_ConnectionCommonUi has two entries here because the + * threading model changed between Windows versions. */ { - ID_NAME(CLSID_ConnectionCommonUi), + ID_NAME(CLSID_ConnectionCommonUi, NTDDI_MIN, NTDDI_WS03), { - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, }, L"Both" }, { - ID_NAME(CLSID_NetworkConnections), + ID_NAME(CLSID_ConnectionCommonUi, NTDDI_VISTA, NTDDI_MAX), { - { 0x0, &IID_IPersistFolder2 }, - { 0x0, &IID_IPersistFolder }, - { 0x0, &IID_IPersist }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellExtInit }, - { 0x8, &IID_IShellFolder2 }, - { 0x8, &IID_IShellFolder }, - { 0xc, &IID_IOleCommandTarget }, - { 0x10, &IID_IShellFolderViewCB }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_INetLanConnectionUiInfo }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IMarshal2 }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IMarshal }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IClientSecurity }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IRpcOptions }, + { NTDDI_VISTA, NTDDI_MAX, &IID_ICallFactory }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IForegroundTransfer }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IMultiQI }, + }, + L"Free" + }, + { + ID_NAME(CLSID_NetworkConnections, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderViewCB }, }, L"Both" }, { - ID_NAME(CLSID_ConnectionFolderEnum), + ID_NAME(CLSID_ConnectionFolderEnum, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_IEnumIDList }, - { 0x0, &IID_IUnknown }, - }, - L"Both" - }, -#if 0 - { - ID_NAME(CLSID_ConnectionManager), - { - { 0x0, &IID_IUnknown }, - } - }, -#endif - { - ID_NAME(CLSID_ConnectionTray), - { - { 0x0, &IID_IOleCommandTarget }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IEnumIDList }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, }, L"Both" }, { - ID_NAME(CLSID_DialupConnectionUi), + ID_NAME(CLSID_ConnectionTray, NTDDI_MIN, NTDDI_WIN7SP1), { - { 0x0, &IID_INetConnectionConnectUi }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_INetConnectionPropertyUi2 }, - //{ 0x4, &IID_INetConnectionPropertyUi }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, }, L"Both" }, { - ID_NAME(CLSID_DirectConnectionUi), + ID_NAME(CLSID_DialupConnectionUi, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_INetConnectionConnectUi }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_INetConnectionPropertyUi2 }, - //{ 0x4, &IID_INetConnectionPropertyUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 }, }, L"Both" }, { - ID_NAME(CLSID_InboundConnectionUi), + ID_NAME(CLSID_DirectConnectionUi, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_INetConnectionPropertyUi2 }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_INetConnectionConnectUi }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_INetConnectionPropertyUi2 }, }, L"Both" }, { - ID_NAME(CLSID_InternetConnectionUi), + ID_NAME(CLSID_InboundConnectionUi, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_INetConnectionConnectUi }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_INetConnectionPropertyUi2 }, - //{ 0x4, &IID_INetConnectionPropertyUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, }, L"Both" }, { - ID_NAME(CLSID_LanConnectionUi), + ID_NAME(CLSID_InternetConnectionUi, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_INetConnectionConnectUi }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_INetConnectionPropertyUi2 }, - { 0x4, &IID_INetConnectionPropertyUi }, - { 0x10, &IID_INetLanConnectionUiInfo }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 }, }, L"Both" }, { - ID_NAME(CLSID_NetConnectionUiUtilities), + ID_NAME(CLSID_LanConnectionUi, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetLanConnectionUiInfo }, }, L"Both" }, { - ID_NAME(CLSID_SharedAccessConnectionUi), + ID_NAME(CLSID_NetConnectionUiUtilities, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_INetConnectionConnectUi }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_INetConnectionPropertyUi2 }, - { 0x4, &IID_INetConnectionPropertyUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, }, L"Both" }, { - ID_NAME(CLSID_PPPoEUi), + ID_NAME(CLSID_SharedAccessConnectionUi, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_INetConnectionConnectUi }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_INetConnectionPropertyUi2 }, - //{ 0x4, &IID_INetConnectionPropertyUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi }, }, L"Both" }, { - ID_NAME(CLSID_VpnConnectionUi), + ID_NAME(CLSID_PPPoEUi, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_INetConnectionConnectUi }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_INetConnectionPropertyUi2 }, - //{ 0x4, &IID_INetConnectionPropertyUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 }, + }, + L"Both" + }, + { + ID_NAME(CLSID_VpnConnectionUi, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 }, }, L"Both" }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(netshell) { - TestClasses(L"netshell", ExpectedInterfaces, ExpectedInterfaceCount); + TestClasses(L"netshell", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); } diff --git a/modules/rostests/apitests/com/ole32.c b/modules/rostests/apitests/com/ole32.c index 221d888db93..1d20b8e5ec1 100644 --- a/modules/rostests/apitests/com/ole32.c +++ b/modules/rostests/apitests/com/ole32.c @@ -13,18 +13,17 @@ static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { { - ID_NAME(CLSID_StdComponentCategoriesMgr), + ID_NAME(CLSID_StdComponentCategoriesMgr, NTDDI_MIN, NTDDI_WIN7SP1), { - { 0x0, &IID_IUnknown }, - { FARAWY, &IID_ICatRegister }, - { FARAWY, &IID_ICatInformation }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_ICatRegister }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_ICatInformation }, }, L"Both" }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(ole32) { - TestClasses(L"ole32", ExpectedInterfaces, ExpectedInterfaceCount); + TestClasses(L"ole32", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); } diff --git a/modules/rostests/apitests/com/prnfldr.c b/modules/rostests/apitests/com/prnfldr.c new file mode 100644 index 00000000000..40a678e301a --- /dev/null +++ b/modules/rostests/apitests/com/prnfldr.c @@ -0,0 +1,39 @@ +/* + * PROJECT: ReactOS API Tests + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: COM interface test for prnfldr server + * COPYRIGHT: Copyright 2025 Carl Bialorucki + */ + +#include "com_apitest.h" + +#define NDEBUG +#include + +static const CLASS_AND_INTERFACES ExpectedInterfaces_Win7[] = +{ + { + ID_NAME(CLSID_Printers, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IRemoteComputer }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IResolveShellLink }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IFolderType }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithBackReferences }, + } + }, +}; + +START_TEST(prnfldr) +{ + TestClassesEx(L"prnfldr", + ExpectedInterfaces_Win7, RTL_NUMBER_OF(ExpectedInterfaces_Win7), + NTDDI_WIN7, NTDDI_MAX, + FALSE); +} diff --git a/modules/rostests/apitests/com/shdocvw.c b/modules/rostests/apitests/com/shdocvw.c index 2839cc9331a..47f46bae95f 100644 --- a/modules/rostests/apitests/com/shdocvw.c +++ b/modules/rostests/apitests/com/shdocvw.c @@ -12,243 +12,304 @@ static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { + /* CLSID_AdminFolderShortcut has two entries here because the threading model + * changed between Windows versions. */ { - ID_NAME(CLSID_AdminFolderShortcut), + ID_NAME(CLSID_AdminFolderShortcut, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IShellFolder2 }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFolder3 }, - { 0x4, &IID_IPersistFolder2 }, - { 0x4, &IID_IPersistFolder }, - { 0x4, &IID_IPersist }, - { 0x8, &IID_IShellLinkA }, - { 0xc, &IID_IShellLinkW }, - { 0x10, &IID_IPersistFile }, - { 0x14, &IID_IExtractIconW }, - { 0x18, &IID_IQueryInfo }, - { 0x20, &IID_IPersistStream }, - { 0x20, &IID_IPersistStreamInit }, - { 0x24, &IID_IPersistPropertyBag }, - { 0x28, &IID_IBrowserFrameOptions }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellLinkA }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellLinkW }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IExtractIconW }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IQueryInfo }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserFrameOptions }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IAliasRegistrationCallback }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IShellIcon }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IStorage }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IItemNameLimits }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IRemoteComputer }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject }, } }, { - ID_NAME(CLSID_ExplorerBand), + ID_NAME(CLSID_AdminFolderShortcut, NTDDI_WIN7, NTDDI_MAX), { - { -0xb4, &IID_IDeskBand }, - { -0xb4, &IID_IDockingWindow }, - { -0xb4, &IID_IOleWindow }, - { -0xb0, &IID_IObjectWithSite }, - { -0xa8, &IID_IInputObject }, - { -0xa4, &IID_IPersistStream }, - { -0xa4, &IID_IPersist }, - { -0xa0, &IID_IOleCommandTarget }, - { -0x9c, &IID_IServiceProvider }, - { -0x84, &IID_IContextMenu }, - { -0x80, &IID_IBandNavigate }, - { -0x7c, &IID_IWinEventHandler }, - { -0x78, &IID_INamespaceProxy }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IShellIcon }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IStorage }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IItemNameLimits }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IRemoteComputer }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject }, + + { NTDDI_WIN7, NTDDI_MAX, &IID_IParentAndItem }, + }, + L"Both" + }, + { + ID_NAME(CLSID_ExplorerBand, NTDDI_MIN, NTDDI_WS03SP4), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandNavigate }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_INamespaceProxy }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_FontsFolderShortcut), + ID_NAME(CLSID_FontsFolderShortcut, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IShellFolder2 }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFolder3 }, - { 0x4, &IID_IPersistFolder2 }, - { 0x4, &IID_IPersistFolder }, - { 0x4, &IID_IPersist }, - { 0x8, &IID_IShellLinkA }, - { 0xc, &IID_IShellLinkW }, - { 0x10, &IID_IPersistFile }, - { 0x14, &IID_IExtractIconW }, - { 0x18, &IID_IQueryInfo }, - { 0x20, &IID_IPersistStream }, - { 0x20, &IID_IPersistStreamInit }, - { 0x24, &IID_IPersistPropertyBag }, - { 0x28, &IID_IBrowserFrameOptions }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder3 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkA }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkW }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractIconW }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IQueryInfo }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBrowserFrameOptions }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellIconOverlay }, } }, #if 0 // E_OUTOFMEMORY? { - ID_NAME(CLSID_ShellDispatchInproc), + ID_NAME(CLSID_ShellDispatchInproc, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, } }, #endif { - ID_NAME(CLSID_MruLongList), + ID_NAME(CLSID_MruLongList, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IMruDataList }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMruDataList }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_MruPidlList), + ID_NAME(CLSID_MruPidlList, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_IMruPidlList }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMruPidlList }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_SH_FavBand), + ID_NAME(CLSID_SH_FavBand, NTDDI_MIN, NTDDI_WS03SP4), { - { -0x30, &IID_IDeskBand }, - { -0x30, &IID_IDockingWindow }, - { -0x30, &IID_IOleWindow }, - { -0x2c, &IID_IObjectWithSite }, - { -0x24, &IID_IInputObject }, - { -0x20, &IID_IPersistStream }, - { -0x20, &IID_IPersist }, - { -0x1c, &IID_IOleCommandTarget }, - { -0x18, &IID_IServiceProvider }, - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IBandNavigate }, - { 0x8, &IID_IWinEventHandler }, - { 0xc, &IID_INamespaceProxy }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandNavigate }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_INamespaceProxy }, } }, { - ID_NAME(CLSID_SH_HistBand), + ID_NAME(CLSID_SH_HistBand, NTDDI_MIN, NTDDI_WS03SP4), { - { -0xb4, &IID_IDeskBand }, - { -0xb4, &IID_IDockingWindow }, - { -0xb4, &IID_IOleWindow }, - { -0xb0, &IID_IObjectWithSite }, - { -0xa8, &IID_IInputObject }, - { -0xa4, &IID_IPersistStream }, - { -0xa4, &IID_IPersist }, - { -0xa0, &IID_IOleCommandTarget }, - { -0x9c, &IID_IServiceProvider }, - { -0x84, &IID_IContextMenu }, - { -0x80, &IID_IBandNavigate }, - { -0x7c, &IID_IWinEventHandler }, - { -0x78, &IID_INamespaceProxy }, - { 0x0, &IID_IShellFolderSearchableCallback }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandNavigate }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_INamespaceProxy }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolderSearchableCallback }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_SearchAssistantOC), + ID_NAME(CLSID_SearchAssistantOC, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_ISearchAssistantOC3 }, - { 0x0, &IID_ISearchAssistantOC }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IProvideClassInfo2 }, - { 0x4, &IID_IProvideClassInfo }, - { 0x8, &IID_IQuickActivate }, - { 0xc, &IID_IOleControl }, - { 0x10, &IID_IOleObject }, - { 0x14, &IID_IOleInPlaceActiveObject }, - { 0x18, &IID_IViewObjectEx }, - { 0x18, &IID_IViewObject2 }, - { 0x18, &IID_IViewObject }, - { 0x1c, &IID_IOleInPlaceObjectWindowless }, - { 0x1c, &IID_IOleInPlaceObject }, - { 0x1c, &IID_IOleWindow }, - { 0x20, &IID_IDataObject }, - { 0x30, &IID_IConnectionPointContainer }, - { 0x34, &IID_IObjectSafety }, - { 0x3c, &IID_IOleCommandTarget }, - { 0x40, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC3 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IQuickActivate }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControl }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceActiveObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObjectEx }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObjectWindowless }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDataObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IConnectionPointContainer }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, } }, { - ID_NAME(CLSID_SearchBand), + ID_NAME(CLSID_SearchBand, NTDDI_MIN, NTDDI_WIN7SP1), { - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellExtInit }, - { 0x8, &IID_IPersistPropertyBag }, - { 0x8, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersist }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IShellFolder }, } }, { - ID_NAME(CLSID_ShellSearchAssistantOC), + ID_NAME(CLSID_ShellSearchAssistantOC, NTDDI_MIN, NTDDI_WS03SP4), { - { 0x0, &IID_ISearchAssistantOC3 }, - { 0x0, &IID_ISearchAssistantOC }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IProvideClassInfo2 }, - { 0x4, &IID_IProvideClassInfo }, - { 0x8, &IID_IQuickActivate }, - { 0xc, &IID_IOleControl }, - { 0x10, &IID_IOleObject }, - { 0x14, &IID_IOleInPlaceActiveObject }, - { 0x18, &IID_IViewObjectEx }, - { 0x18, &IID_IViewObject2 }, - { 0x18, &IID_IViewObject }, - { 0x1c, &IID_IOleInPlaceObjectWindowless }, - { 0x1c, &IID_IOleInPlaceObject }, - { 0x1c, &IID_IOleWindow }, - { 0x20, &IID_IDataObject }, - { 0x30, &IID_IConnectionPointContainer }, - { 0x34, &IID_IObjectSafety }, - { 0x3c, &IID_IOleCommandTarget }, - { 0x40, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC3 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IQuickActivate }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControl }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceActiveObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObjectEx }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObjectWindowless }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDataObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IConnectionPointContainer }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, } }, { - ID_NAME(CLSID_ShellShellNameSpace), + ID_NAME(CLSID_ShellShellNameSpace, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_IShellNameSpace }, - { 0x0, &IID_IShellFavoritesNameSpace }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IProvideClassInfo2 }, - { 0x4, &IID_IProvideClassInfo }, - { 0x8, &IID_IPersistStreamInit }, - { 0xc, &IID_IPersistPropertyBag }, - { 0x10, &IID_IQuickActivate }, - { 0x14, &IID_IOleControl }, - { 0x18, &IID_IOleObject }, - { 0x1c, &IID_IOleInPlaceActiveObject }, - { 0x20, &IID_IViewObjectEx }, - { 0x20, &IID_IViewObject2 }, - { 0x20, &IID_IViewObject }, - { 0x24, &IID_IOleInPlaceObjectWindowless }, - { 0x24, &IID_IOleInPlaceObject }, - { 0x24, &IID_IOleWindow }, - { 0x28, &IID_ISpecifyPropertyPages }, - { 0x38, &IID_IConnectionPointContainer }, - { 0x3c, &IID_IShellChangeNotify }, - { 0x40, &IID_IDropTarget }, - { 0xb4, &IID_IObjectWithSite }, - { 0xbc, &IID_INSCTree2 }, - { 0xbc, &IID_INSCTree }, - { 0xc0, &IID_IWinEventHandler }, - { 0xc4, &IID_IShellBrowser }, - { 0xc8, &IID_IFolderFilterSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellChangeNotify }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISpecifyPropertyPages }, + + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellNameSpace }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFavoritesNameSpace }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IProvideClassInfo2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IProvideClassInfo }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IQuickActivate }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleControl }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceActiveObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObjectEx }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObject2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceObjectWindowless }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceObject }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IConnectionPointContainer }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_INSCTree2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_INSCTree }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellBrowser }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IFolderFilterSite }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_INewMenuClient }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_INameSpaceTreeControl }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IVisualProperties }, } }, { - ID_NAME(CLSID_TaskbarList), + ID_NAME(CLSID_TaskbarList, NTDDI_MIN, NTDDI_VISTASP4), { - { 0x0, &IID_ITaskbarList2 }, - { 0x0, &IID_ITaskbarList }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_ITaskbarList2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_ITaskbarList }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, } }, { - ID_NAME(CLSID_AttachmentServices ), + ID_NAME(CLSID_AttachmentServices, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_IAttachmentExecute }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IAttachmentExecute }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, } }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(shdocvw) { - TestClasses(L"shdocvw", ExpectedInterfaces, ExpectedInterfaceCount); + TestClasses(L"shdocvw", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); } diff --git a/modules/rostests/apitests/com/shell32.c b/modules/rostests/apitests/com/shell32.c index 7e262a72348..0dcab4e6581 100644 --- a/modules/rostests/apitests/com/shell32.c +++ b/modules/rostests/apitests/com/shell32.c @@ -3,6 +3,7 @@ * LICENSE: GPLv2+ - See COPYING in the top level directory * PURPOSE: COM interface test for shell32 classes * PROGRAMMER: Thomas Faber + * Carl Bialorucki */ #include "com_apitest.h" @@ -13,641 +14,1020 @@ static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { { - ID_NAME(CLSID_ActiveDesktop), + ID_NAME(CLSID_ACLCustomMRU, NTDDI_WIN7, NTDDI_MAX), { - { 0x0, &IID_IActiveDesktop }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IActiveDesktopP }, - { 0x8, &IID_IADesktopP2 }, - { 0xc, &IID_IPropertyBag }, - } - }, - { - ID_NAME(CLSID_CDBurn), - { - { 0x0, &IID_IObjectWithSite }, - { 0x0, &IID_IUnknown }, - { 0x8, &IID_IShellExtInit }, - { 0xc, &IID_IContextMenu }, - { 0x10, &IID_IShellPropSheetExt }, - { 0x14, &IID_IDiscMasterProgressEvents }, - { 0x18, &IID_IDropTarget }, - { 0x1c, &IID_IPersistFile }, - { 0x20, &IID_IOleCommandTarget }, - { 0x24, &IID_ICDBurn }, - { 0x28, &IID_ICDBurnPriv }, - { 0x2c, &IID_IPersistPropertyBag }, - { 0x30, &IID_IDriveFolderExtOld }, - { 0x34, &IID_INamespaceWalkCB }, - { 0x3c, &IID_IServiceProvider }, - { 0x40, &IID_ITransferAdviseSinkPriv }, - { 0x44, &IID_IQueryCancelAutoPlay }, - } - }, - { - ID_NAME(CLSID_ControlPanel), - { - { 0x0, &IID_IUnknown }, - { 0x10, &IID_IPersistFolder2 }, - { 0x10, &IID_IPersistFolder }, - { 0x10, &IID_IPersist }, - { FARAWY, &IID_IShellIconOverlay }, - { FARAWY, &IID_IShellFolder2 }, - { FARAWY, &IID_IShellFolder }, - } - }, - { - ID_NAME(CLSID_CopyToMenu), - { - { 0x0, &IID_IContextMenu3 }, - { 0x0, &IID_IContextMenu2 }, - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellExtInit }, - { 0x8, &IID_IObjectWithSite }, - { 0x10, &IID_IFolderFilter }, - } - }, - { - ID_NAME(CLSID_DeskMovr), - { - { 0x0, &IID_IUnknown }, - { 0x70, &IID_IDeskMovr }, - { 0x74, &IID_IOleObject }, - { 0x78, &IID_IPersistPropertyBag }, - { 0x7c, &IID_IOleControl }, - { 0x80, &IID_IOleInPlaceActiveObject }, - { 0x84, &IID_IViewObjectEx }, - { 0x84, &IID_IViewObject2 }, - { 0x84, &IID_IViewObject }, - { 0x88, &IID_IOleWindow }, - { 0x88, &IID_IOleInPlaceObject }, - { 0x88, &IID_IOleInPlaceObjectWindowless }, - { 0x8c, &IID_IQuickActivate }, - } - }, - { - ID_NAME(CLSID_DragDropHelper), - { - { 0x0, &IID_IDragSourceHelper }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IDropTargetHelper }, - } - }, - { - ID_NAME(CLSID_FadeTask), - { - { 0x0, &IID_IUnknown }, - } - }, - { - ID_NAME(CLSID_FileSearchBand), - { - { 0x0, &IID_IFileSearchBand }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectWithSite }, - { 0x8, &IID_IPersistStream }, - { 0x8, &IID_IPersist }, - { 0xc, &IID_IDeskBand }, - { 0xc, &IID_IDockingWindow }, - { 0xc, &IID_IOleWindow }, - { 0x10, &IID_IInputObject }, - { 0x14, &IID_IOleClientSite }, - { 0x18, &IID_IOleInPlaceSite }, - { 0x1c, &IID_IOleControlSite }, - } - }, - { - ID_NAME(CLSID_FindFolder), - { - { 0x0, &IID_IShellFolder2 }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellIcon }, - { 0x8, &IID_IShellIconOverlay }, - { 0xc, &IID_IPersistFolder2 }, - { 0xc, &IID_IPersistFolder }, - { 0xc, &IID_IPersist }, - } - }, - { - ID_NAME(CLSID_FolderItem), - { - //{ 0x0, &CLSID_ShellFolderItem }, // broken QueryInterface that doesn't add a reference - { 0x0, &IID_FolderItem2 }, - { 0x0, &IID_FolderItem }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFolder2 }, - { 0x4, &IID_IPersistFolder }, - { 0x4, &IID_IPersist }, - { 0x8, &IID_IObjectSafety }, - { 0x10, &IID_IParentAndItem }, - } - }, - { - ID_NAME(CLSID_FolderItemsFDF), - { - { 0x0, &IID_FolderItems3 }, - //{ 0x0, &IID_FolderItems2 }, ???? - { 0x0, &IID_FolderItems }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFolder }, - { 0x8, &IID_IObjectSafety }, - } - }, - { - ID_NAME(CLSID_FolderShortcut), - { - { 0x0, &IID_IShellFolder2 }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFolder3 }, - { 0x4, &IID_IPersistFolder2 }, - { 0x4, &IID_IPersistFolder }, - { 0x4, &IID_IPersist }, - { 0x8, &IID_IShellLinkA }, - { 0xc, &IID_IShellLinkW }, - { 0x10, &IID_IPersistFile }, - { 0x14, &IID_IExtractIconW }, - { 0x18, &IID_IQueryInfo }, - { 0x20, &IID_IPersistStream }, - { 0x20, &IID_IPersistStreamInit }, - { 0x24, &IID_IPersistPropertyBag }, - { 0x28, &IID_IBrowserFrameOptions }, - } - }, - { - ID_NAME(CLSID_FolderViewHost), - { - { 0x0, &IID_IFolderViewHost }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IServiceProvider }, - { 0x8, &IID_IOleWindow }, - { 0xc, &IID_IFolderView }, - { 0x10, &IID_IObjectWithSite }, - } - }, - { - ID_NAME(CLSID_ISFBand), - { - { -0xac, &IID_IDeskBand }, - { -0xac, &IID_IDockingWindow }, - { -0xac, &IID_IOleWindow }, - { -0xa8, &IID_IObjectWithSite }, - { -0xa0, &IID_IInputObject }, - { -0x9c, &IID_IPersistStream }, - { -0x9c, &IID_IPersist }, - { -0x98, &IID_IOleCommandTarget }, - { -0x94, &IID_IServiceProvider }, - { -0x78, &IID_IWinEventHandler }, - { -0x74, &IID_IShellChangeNotify }, - { -0x70, &IID_IDropTarget }, - { -0x4, &IID_IContextMenu }, - { 0x0, &IID_IShellFolderBand }, - { 0x0, &IID_IUnknown }, - { 0x94, &IID_IFolderBandPriv }, - } - }, - { - ID_NAME(CLSID_MenuBand), - { - { -0x30, &IID_IDeskBand }, - { -0x30, &IID_IDockingWindow }, - { -0x30, &IID_IOleWindow }, - { -0x2c, &IID_IObjectWithSite }, - { -0x24, &IID_IInputObject }, - { -0x20, &IID_IPersistStream }, - { -0x20, &IID_IPersist }, - { -0x1c, &IID_IOleCommandTarget }, - { -0x18, &IID_IServiceProvider }, - { 0x0, &IID_IMenuPopup }, - { 0x0, &IID_IDeskBar }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IMenuBand }, - { 0x8, &IID_IShellMenu2 }, - { 0x8, &IID_IShellMenu }, - { 0xc, &IID_IWinEventHandler }, - { 0x10, &IID_IShellMenuAcc }, - } - }, - { - ID_NAME(CLSID_MenuBandSite), - { - { 0x0, &IID_IBandSite }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IDeskBarClient }, - { 0x4, &IID_IOleWindow }, - { 0x8, &IID_IOleCommandTarget }, - { 0xc, &IID_IInputObject }, - { 0x10, &IID_IInputObjectSite }, - { 0x14, &IID_IWinEventHandler }, - { 0x18, &IID_IServiceProvider }, - } - }, - { - ID_NAME(CLSID_MenuDeskBar), - { - { -0x48, &IID_IOleCommandTarget }, - { -0x44, &IID_IServiceProvider }, - { -0x40, &IID_IDeskBar }, - { -0x40, &IID_IOleWindow }, - { -0x3c, &IID_IInputObjectSite }, - { -0x38, &IID_IInputObject }, - { 0x0, &IID_IMenuPopup }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectWithSite }, - { 0x8, &IID_IBanneredBar }, - { 0xc, &IID_IInitializeObject }, - } - }, -#if 0 // This is registered to shell32, but can't be instanciated - { - ID_NAME(CLSID_MenuToolbarBase), - { - { 0x0, &IID_IUnknown }, - } - }, -#endif - { - ID_NAME(CLSID_MergedFolder), - { - { -0x8, &IID_IShellFolder2 }, - { -0x4, &IID_IStorage }, - { 0x0, &IID_IAugmentedShellFolder2 }, - { 0x0, &IID_IAugmentedShellFolder }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellService }, - { 0x8, &IID_ITranslateShellChangeNotify }, - { 0xc, &IID_IPersistFolder2 }, - { 0xc, &IID_IPersistFolder }, - { 0xc, &IID_IPersist }, - { 0x10, &IID_IPersistPropertyBag }, - { 0x14, &IID_IShellIconOverlay }, - { 0x18, &IID_ICompositeFolder }, - { 0x1c, &IID_IItemNameLimits }, - } - }, - { - ID_NAME(CLSID_MoveToMenu), - { - { 0x0, &IID_IContextMenu3 }, - { 0x0, &IID_IContextMenu2 }, - { 0x0, &IID_IContextMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellExtInit }, - { 0x8, &IID_IObjectWithSite }, - { 0x10, &IID_IFolderFilter }, - } - }, - { - ID_NAME(CLSID_MyComputer), - { - { 0x0, &IID_IUnknown }, - { 0x10, &IID_IPersistFolder2 }, - { 0x10, &IID_IPersistFolder }, - { 0x10, &IID_IPersist }, - { 0x10, &IID_IPersistFreeThreadedObject }, - { FARAWY, &IID_IShellIconOverlay }, - { FARAWY, &IID_IShellFolder2 }, - { FARAWY, &IID_IShellFolder }, - } - }, - { - ID_NAME(CLSID_MyDocuments), - { - { -0x4, &IID_IPersistFolder }, - { -0x4, &IID_IPersist }, - { 0x0, &IID_IShellFolder2 }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellIconOverlay }, - { FARAWY, &IID_IShellIcon }, - { FARAWY, &IID_IPersistFolder3 }, - { FARAWY, &IID_IPersistFolder2 }, - { FARAWY, &IID_IStorage }, - { FARAWY, &IID_IContextMenuCB }, - { FARAWY, &IID_IOleCommandTarget }, - { FARAWY, &IID_IItemNameLimits }, - { FARAWY, &IID_IPropertySetStorage }, - } - }, - { - ID_NAME(CLSID_NetworkPlaces), - { - { 0x0, &IID_IUnknown }, - { 0x10, &IID_IPersistFolder3 }, - { 0x10, &IID_IPersistFolder2 }, - { 0x10, &IID_IPersistFolder }, - { 0x10, &IID_IPersist }, - { 0x10, &IID_IPersistFreeThreadedObject }, - { FARAWY, &IID_IShellIconOverlay }, - { FARAWY, &IID_IShellFolder2 }, - { FARAWY, &IID_IShellFolder }, - } - }, - { - ID_NAME(CLSID_NewMenu), - { - { -0xc, &IID_IObjectWithSite }, - { -0x4, &IID_IContextMenu3 }, - { -0x4, &IID_IContextMenu2 }, - { -0x4, &IID_IContextMenu }, - { 0x0, &IID_IShellExtInit }, - { 0x0, &IID_IUnknown }, - } - }, - { - ID_NAME(CLSID_PersonalStartMenu), - { - { -0x30, &IID_IDeskBand }, - { -0x30, &IID_IDockingWindow }, - { -0x30, &IID_IOleWindow }, - { -0x2c, &IID_IObjectWithSite }, - { -0x24, &IID_IInputObject }, - { -0x20, &IID_IPersistStream }, - { -0x20, &IID_IPersist }, - { -0x1c, &IID_IOleCommandTarget }, - { -0x18, &IID_IServiceProvider }, - { 0x0, &IID_IMenuPopup }, - { 0x0, &IID_IDeskBar }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IMenuBand }, - { 0x8, &IID_IShellMenu2 }, - { 0x8, &IID_IShellMenu }, - { 0xc, &IID_IWinEventHandler }, - { 0x10, &IID_IShellMenuAcc }, - } - }, - { - ID_NAME(CLSID_Printers), - { - { -0xc, &IID_IRemoteComputer }, - { -0x4, &IID_IFolderNotify }, - { 0x0, &IID_IShellFolder2 }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFolder2 }, - { 0x4, &IID_IPersistFolder }, - { 0x4, &IID_IPersist }, - { 0x8, &IID_IContextMenuCB }, - { 0xc, &IID_IShellIconOverlay }, - } - }, - { - ID_NAME(CLSID_QueryAssociations), - { - { 0x0, &IID_IAssociationArrayOld }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IAssociationArrayInitialize }, - { 0x8, &IID_IQueryAssociations }, - } - }, - { - ID_NAME(CLSID_QuickLinks), - { - { -0xac, &IID_IDeskBand }, - { -0xac, &IID_IDockingWindow }, - { -0xac, &IID_IOleWindow }, - { -0xa8, &IID_IObjectWithSite }, - { -0xa0, &IID_IInputObject }, - { -0x9c, &IID_IPersistStream }, - { -0x9c, &IID_IPersist }, - { -0x98, &IID_IOleCommandTarget }, - { -0x94, &IID_IServiceProvider }, - { -0x78, &IID_IWinEventHandler }, - { -0x74, &IID_IShellChangeNotify }, - { -0x70, &IID_IDropTarget }, - { -0x4, &IID_IContextMenu }, - { 0x0, &IID_IShellFolderBand }, - { 0x0, &IID_IUnknown }, - { 0x94, &IID_IFolderBandPriv }, - } - }, - { - ID_NAME(CLSID_RecycleBin), - { - { 0x0, &IID_IPersistFolder2 }, - { 0x0, &IID_IPersistFolder }, - //{ 0x0, &IID_IPersist }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellFolder2 }, - { 0x4, &IID_IShellFolder }, - { 0x8, &IID_IContextMenu }, - { 0xc, &IID_IShellPropSheetExt }, - { 0x10, &IID_IShellExtInit }, - } - }, - { - ID_NAME(CLSID_SendToMenu), - { - { -0x4, &IID_IContextMenu3 }, - { -0x4, &IID_IContextMenu2 }, - { -0x4, &IID_IContextMenu }, - { 0x0, &IID_IShellExtInit }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IOleWindow }, - } - }, - { - ID_NAME(CLSID_Shell), - { - { 0x0, &IID_IShellDispatch4 }, - { 0x0, &IID_IShellDispatch3 }, - { 0x0, &IID_IShellDispatch2 }, - { 0x0, &IID_IShellDispatch }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectSafety }, - { 0x20, &IID_IObjectWithSite }, - } - }, - { - ID_NAME(CLSID_ShellDesktop), - { - { -0x8, &CLSID_ShellDesktop }, - { -0x8, &IID_IObjectWithSite }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IStorage }, - { 0x8, &IID_IPersistFolder2 }, - { 0x8, &IID_IPersistFolder }, - { 0x8, &IID_IPersist }, - { 0xc, &IID_IShellIcon }, - { 0x14, &IID_IContextMenuCB }, - { 0x18, &IID_ITranslateShellChangeNotify }, - { 0x1c, &IID_IItemNameLimits }, - { 0x20, &IID_IOleCommandTarget }, - { FARAWY, &IID_IShellIconOverlay }, - { FARAWY, &IID_IShellFolder2 }, - { FARAWY, &IID_IShellFolder }, - } - }, - { - ID_NAME(CLSID_ShellFSFolder), - { - { 0x0, &IID_IUnknown }, - { 0xc, &IID_IShellFolder2 }, - { 0xc, &IID_IShellFolder }, - { 0x10, &IID_IShellIcon }, - { 0x14, &IID_IShellIconOverlay }, - { 0x18, &IID_IPersistFolder3 }, - { 0x18, &IID_IPersistFolder2 }, - { 0x18, &IID_IPersistFolder }, - { 0x18, &IID_IPersist }, - { 0x18, &IID_IPersistFreeThreadedObject }, - { 0x1c, &IID_IStorage }, - { 0x24, &IID_IPropertySetStorage }, - { 0x28, &IID_IItemNameLimits }, - { 0x2c, &IID_IContextMenuCB }, - { 0x34, &IID_IOleCommandTarget }, - } - }, - { - ID_NAME(CLSID_ShellFldSetExt), - { - { 0x0, &IID_IShellPropSheetExt }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellExtInit }, - { 0x8, &IID_IObjectWithSite }, - } - }, - { - ID_NAME(CLSID_ShellFolderView), - { - { 0x0, &IID_IShellFolderViewDual2 }, - { 0x0, &IID_IShellFolderViewDual }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellService }, - { 0x8, &IID_IServiceProvider }, - { 0xc, &IID_IObjectSafety }, - { 0x14, &IID_IObjectWithSite }, - { 0x1c, &IID_IConnectionPointContainer }, - } - }, - { - ID_NAME(CLSID_ShellFolderViewOC), - { - { 0x0, &IID_IFolderViewOC }, - { 0x0, &IID_IDispatch }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IProvideClassInfo2 }, - { 0x4, &IID_IProvideClassInfo }, - { 0x8, &IID_IObjectSafety }, - { 0x10, &IID_IConnectionPointContainer }, - { 0x88, &IID_IPersistStreamInit }, - { 0x88, &IID_IPersist }, - { 0x8c, &IID_IOleControl }, - { 0x90, &IID_IOleObject }, - { 0x94, &IID_IOleInPlaceActiveObject }, - { 0x98, &IID_IOleInPlaceObjectWindowless }, - { 0x98, &IID_IOleInPlaceObject }, - { 0x98, &IID_IOleWindow }, - } - }, - { - ID_NAME(CLSID_ShellItem), - { - { 0x0, &IID_IShellItem }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistIDList }, - { 0x8, &IID_IParentAndItem }, - } - }, - { - ID_NAME(CLSID_ShellLink), - { - { 0x0, &IID_IShellLinkA }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellLinkW }, - { 0x8, &IID_IPersistStream }, - { 0xc, &IID_IPersistFile }, - { 0x10, &IID_IShellExtInit }, - { 0x14, &IID_IContextMenu3 }, - { 0x14, &IID_IContextMenu2 }, - { 0x14, &IID_IContextMenu }, - { 0x18, &IID_IDropTarget }, - { 0x1c, &IID_IQueryInfo }, - { 0x20, &IID_IShellLinkDataList }, - { 0x24, &IID_IExtractIconA }, - { 0x28, &IID_IExtractIconW }, - { 0x2c, &IID_IExtractImage2 }, - { 0x2c, &IID_IExtractImage }, - { 0x30, &IID_IPersistPropertyBag }, - { 0x34, &IID_IServiceProvider }, - { 0x38, &IID_IFilter }, - { 0x3c, &IID_IObjectWithSite }, - { 0x44, &IID_ICustomizeInfoTip }, - { FARAWY, &IID_ISLTracker }, - } - }, -#if 0 // Apparently we can only get this through Folder.Items().GetLink - { - ID_NAME(CLSID_ShellLinkObject), - { - { 0x0, &IID_IUnknown }, - } - }, -#endif - { - ID_NAME(CLSID_StartMenu), - { - { -0x48, &IID_IOleCommandTarget }, - { -0x44, &IID_IServiceProvider }, - { -0x40, &IID_IDeskBar }, - { -0x40, &IID_IOleWindow }, - { -0x3c, &IID_IInputObjectSite }, - { -0x38, &IID_IInputObject }, - { 0x0, &IID_IMenuPopup }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IObjectWithSite }, - { 0x8, &IID_IBanneredBar }, - { 0xc, &IID_IInitializeObject }, - } - }, - { - ID_NAME(CLSID_StartMenuPin), - { - { 0x0, &IID_IShellExtInit }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IContextMenu }, - { 0xc, &IID_IObjectWithSite }, - } - }, - { - ID_NAME(CLSID_Thumbnail), - { - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IParentAndItem }, - { 0x8, &IID_IObjectWithSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IACList }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IACLCustomMRU }, }, }, { - ID_NAME(CLSID_TrackShellMenu), + ID_NAME(CLSID_ACLHistory, NTDDI_WIN7, NTDDI_MAX), { - { 0x0, &IID_ITrackShellMenu }, - { 0x0, &IID_IShellMenu }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IShellMenu2 }, - { 0x8, &IID_IObjectWithSite }, - { 0xc, &IID_IServiceProvider }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + }, + }, + { + ID_NAME(CLSID_ACLMRU, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IACList }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IACLCustomMRU }, + }, + }, + { + ID_NAME(CLSID_ACLMulti, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjMgr }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IACList }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistFolder }, } }, { - ID_NAME(CLSID_UserNotification), + ID_NAME(CLSID_ACListISF, NTDDI_WIN7, NTDDI_MAX), { - { 0x0, &IID_IUserNotification }, - { 0x0, &IID_IUnknown }, -// { 0x4, &IID_IUserNotification2 }, // On Vista+ + { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IACList2 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IACList }, + { NTDDI_WIN7, NTDDI_MAX, &IID_ICurrentWorkingDirectory }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistIDList }, + } + }, + { + ID_NAME(CLSID_ActiveDesktop, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IActiveDesktop }, + { NTDDI_MIN, NTDDI_MAX, &IID_IActiveDesktopP }, + { NTDDI_MIN, NTDDI_MAX, &IID_IADesktopP2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPropertyBag }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_AutoComplete, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IAutoComplete2 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IAutoComplete }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IAutoCompleteDropDown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IAccessible }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellService }, + } + }, + { + ID_NAME(CLSID_BackgroundTaskScheduler, NTDDI_WIN7, NTDDI_VISTASP4), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellTaskScheduler }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IMarshal }, + } + }, + { + ID_NAME(CLSID_BandProxy, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider }, + } + }, + { + ID_NAME(CLSID_CDBurn, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ICDBurnPriv }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDiscMasterProgressEvents }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDriveFolderExtOld }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITransferAdviseSinkPriv }, + + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, + + { NTDDI_MIN, NTDDI_MAX, &IID_ICDBurn }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_INamespaceWalkCB }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_MAX, &IID_IQueryCancelAutoPlay }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IDriveFolderExt }, + } + }, + { + ID_NAME(CLSID_ControlPanel, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IAliasRegistrationCallback }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IControlPanelEnumerator }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IRegItemCustomEnumerator }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ITransferProvider }, + + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IRegItemFolder }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IDelegateHostItemContainer }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IRegItemCustomAttributes }, + + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellIcon }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IStorage }, + } + }, + { + ID_NAME(CLSID_CopyToMenu, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IFolderFilter }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_CRegTreeOptions, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_WIN7SP1, &IID_IRegTreeOptions }, + + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, + } + }, + { + ID_NAME(CLSID_DeskMovr, NTDDI_MIN, NTDDI_WS03SP4), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskMovr }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControl }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceActiveObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObjectWindowless }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IQuickActivate }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObjectEx }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject }, + } + }, + { + ID_NAME(CLSID_DragDropHelper, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IDragSourceHelper }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDropTargetHelper }, + } + }, + { + ID_NAME(CLSID_FadeTask, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_FileSearchBand, NTDDI_MIN, NTDDI_WS03SP4), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleClientSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControlSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IFileSearchBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + } + }, + { + ID_NAME(CLSID_FindFolder, NTDDI_MIN, NTDDI_WS03SP4), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIcon }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIconOverlay }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + } + }, + { + ID_NAME(CLSID_FolderItem, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_FolderItem2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_FolderItem }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_MAX, &IID_IParentAndItem }, + } + }, + { + ID_NAME(CLSID_FolderItemsFDF, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IObjectSafety }, + + { NTDDI_MIN, NTDDI_MAX, &IID_FolderItems3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_FolderItems }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IPersist }, + } + }, + { + ID_NAME(CLSID_FolderShortcut, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkA }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkW }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_MAX, &IID_IExtractIconW }, + { NTDDI_MIN, NTDDI_MAX, &IID_IQueryInfo }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_MAX, &IID_IBrowserFrameOptions }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IShellIconOverlay }, + } + }, + { + ID_NAME(CLSID_FolderViewHost, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IFolderView }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IFolderViewHost }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellBrowserService4 }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IShellBrowser }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IExplorerBrowser }, + { NTDDI_VISTA, NTDDI_MAX, &IID_ICommDlgBrowser3 }, + { NTDDI_VISTA, NTDDI_MAX, &IID_ICommDlgBrowser2 }, + { NTDDI_VISTA, NTDDI_MAX, &IID_ICommDlgBrowser }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IOleInPlaceUIWindow }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IConnectionPointContainer }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IPersistHistory }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IPersist }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderFilterSite }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IUrlHistoryNotify }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_VISTA, NTDDI_MAX, &IID_INamespaceWalkCB2 }, + { NTDDI_VISTA, NTDDI_MAX, &IID_INamespaceWalkCB }, + + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellBrowserService }, + } + }, + { + ID_NAME(CLSID_ISFBand, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellChangeNotify }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderBand }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IFolderBandPriv }, + } + }, + { + ID_NAME(CLSID_MenuBand, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellMenuAcc }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IMenuPopup }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBar }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IMenuBand }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellMenu2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, + } + }, + { + ID_NAME(CLSID_MenuBandSite, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IBandSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBarClient }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + } + }, + { + ID_NAME(CLSID_MenuDeskBar, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBar }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IMenuPopup }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IBanneredBar }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInitializeObject }, + } + }, +#if 0 // This is registered to shell32, but can't be instantiated + { + ID_NAME(CLSID_MenuToolbarBase, NTDDI_MIN, NTDDI_WS03SP4), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + } + }, +#endif + { + ID_NAME(CLSID_MergedFolder, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIconOverlay }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ICompositeFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IItemNameLimits }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITranslateShellChangeNotify }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IStorage }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellService }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_ITranslateShellChangeNotify }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, + } + }, + { + ID_NAME(CLSID_MoveToMenu, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IFolderFilter }, + } + }, + { + ID_NAME(CLSID_MruLongList, NTDDI_VISTA, NTDDI_WINBLUE), + { + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IMruDataList }, + + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_MruPidlList, NTDDI_VISTA, NTDDI_WINBLUE), + { + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_MyComputer, NTDDI_MIN, NTDDI_WINBLUE), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFreeThreadedObject }, + + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellIconOverlay }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IFolderProperties }, + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ITransferProvider }, + + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IItemNameLimits }, + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IContextMenuCB }, + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_INewItemAdvisor }, + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IObjectWithBackReferences }, + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IRegItemFolder }, + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IDelegateHostItemContainer }, + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IBackReferencedObject }, + + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellIcon }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IStorage }, + + { NTDDI_WIN8, NTDDI_WINBLUE, &IID_IObjectWithSite }, + { NTDDI_WIN8, NTDDI_WINBLUE, &IID_IPersistPropertyBag }, + } + }, + { + ID_NAME(CLSID_MyDocuments, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPropertySetStorage }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellIcon }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IStorage }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IItemNameLimits }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IAliasRegistrationCallback }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IRemoteComputer }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject }, + + { NTDDI_WIN7, NTDDI_MAX, &IID_IParentAndItem }, + } + }, + { + ID_NAME(CLSID_NetworkPlaces, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFreeThreadedObject }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ITransferProvider }, + + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IRegItemFolder }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_VISTA, NTDDI_MAX, &IID_INewItemAdvisor }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IDelegateHostItemContainer }, + + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellIcon}, + { NTDDI_WIN7, NTDDI_MAX, &IID_IStorage}, + + { NTDDI_WIN8, NTDDI_MAX, &IID_IObjectWithSite}, + } + }, + { + ID_NAME(CLSID_NewMenu, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_PersonalStartMenu, NTDDI_MIN, NTDDI_WINBLUE), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMenuPopup }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBar }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMenuBand }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellMenu2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellMenu }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellMenuAcc }, + + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IUnknown }, + + { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IShellItemFilter }, + } + }, + { + ID_NAME(CLSID_Printers, NTDDI_MIN, NTDDI_VISTASP4), + { + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IRemoteComputer }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IFolderNotify }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenuCB }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellIconOverlay }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IObjectWithBackReferences }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IResolveShellLink }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderType }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IRegItemFolder }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_ITransferProvider }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IDelegateHostItemContainer }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IBackReferencedObject }, + } + }, + { + ID_NAME(CLSID_ProgressDialog, NTDDI_VISTA, NTDDI_MAX), + { + { NTDDI_VISTA, NTDDI_MAX, &IID_IProgressDialog }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IActionProgressDialog }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IActionProgress }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, + }, + L"Both" + }, + { + ID_NAME(CLSID_QueryAssociations, NTDDI_MIN, NTDDI_WINBLUE), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAssociationArrayOld }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAssociationArrayInitialize }, + + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IQueryAssociations }, + { NTDDI_MIN, NTDDI_WINBLUE, &IID_IUnknown }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IAssociationArray }, + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IObjectWithAssociationList }, + } + }, + { + ID_NAME(CLSID_QuickLinks, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBand }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDockingWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellChangeNotify }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderBand }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IFolderBandPriv }, + } + }, + { + ID_NAME(CLSID_RecycleBin, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IPersist }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, + + { NTDDI_WIN7, NTDDI_MAX, &IID_IShellIconOverlay }, + } + }, + { + ID_NAME(CLSID_SearchBand, NTDDI_WIN8, NTDDI_MAX), + { + { NTDDI_WIN8, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_WIN8, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN8, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_WIN8, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_WIN8, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN8, NTDDI_MAX, &IID_IShellFolder }, + } + }, + { + ID_NAME(CLSID_SendToMenu, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_VISTA, NTDDI_MAX, &IID_IServiceProvider }, + + { NTDDI_WIN7, NTDDI_MAX, &IID_INamespaceWalkCB2 }, + { NTDDI_WIN7, NTDDI_MAX, &IID_INamespaceWalkCB }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IMarshal }, + } + }, + { + ID_NAME(CLSID_SharedTaskScheduler, NTDDI_WIN7, NTDDI_WINBLUE), + { + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellTaskScheduler }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IMarshal}, + } + }, + { + ID_NAME(CLSID_Shell, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IShellDispatch4 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellDispatch3 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellDispatch2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IShellDispatch5 }, + + { NTDDI_WIN8, NTDDI_MAX, &IID_IShellDispatch6 }, + } + }, + { + /* CLSID_ShellDesktop is also registered to shell32 on Windows Vista, 7, and 8.1, + * but instantiating it crashes the test on CoUninitialize. */ + ID_NAME(CLSID_ShellDesktop, NTDDI_MIN, NTDDI_WS03SP4), + { + { NTDDI_MIN, NTDDI_WS03SP4, &CLSID_ShellDesktop }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IStorage }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIcon }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenuCB }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITranslateShellChangeNotify }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IItemNameLimits }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIconOverlay }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder }, + } + }, + { + /* CLSID_ShellFSFolder is also registered to shell32 on + * Windows 8.1, but instantiating it crashes the test on CoUninitialize. */ + ID_NAME(CLSID_ShellFSFolder, NTDDI_MIN, NTDDI_WIN7SP1), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFreeThreadedObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPropertySetStorage }, + + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellIcon }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellIconOverlay }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFolder3 }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersist }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IStorage }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IItemNameLimits }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IContextMenuCB }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IOleCommandTarget }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IAliasRegistrationCallback }, + + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IObjectWithSite }, + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent }, + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IPersistPropertyBag }, + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IObjectWithBackReferences }, + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IRemoteComputer }, + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IFolderType }, + { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IBackReferencedObject }, + + { NTDDI_WIN7, NTDDI_WIN7SP1, &IID_IParentAndItem }, + } + }, + { + ID_NAME(CLSID_ShellFldSetExt, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + } + }, + { + ID_NAME(CLSID_ShellFolderView, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderViewDual2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderViewDual }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellService }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IShellFolderViewDual3 }, + } + }, + { + ID_NAME(CLSID_ShellFolderViewOC, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IFolderViewOC }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, + { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObjectWindowless }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject }, + { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, + } + }, + /* CLSID_ShellItem has two entries because the threading model changed between versions. */ + { + ID_NAME(CLSID_ShellItem, NTDDI_MIN, NTDDI_VISTASP4), + { + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellItem }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistIDList }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IParentAndItem }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellItem2 }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IMarshal }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersist }, + } + }, + { + ID_NAME(CLSID_ShellItem, NTDDI_WIN7, NTDDI_WINBLUE), + { + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IMarshal }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellItem2 }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellItem }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistIDList }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IParentAndItem }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistStream }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersist }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IObjectWithBackReferences }, + }, + L"Both", + }, + /* CLSID_ShellLink has two entries because the threading model changed between versions. */ + { + ID_NAME(CLSID_ShellLink, NTDDI_MIN, NTDDI_VISTASP4), + { + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkA }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkW }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IQueryInfo }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkDataList }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractIconA }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractIconW }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractImage2 }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractImage }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IFilter }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_ICustomizeInfoTip }, + { NTDDI_MIN, NTDDI_VISTASP4, &IID_ISLTracker }, + + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersist }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPropertyStore }, + { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPropertyBag }, + } + }, + { + ID_NAME(CLSID_ShellLink, NTDDI_WIN7, NTDDI_WINBLUE), + { + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IMarshal }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellLinkA }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellLinkW }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistStream }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistFile }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersist }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellExtInit }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IContextMenu3 }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IContextMenu2 }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IContextMenu }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IDropTarget }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IQueryInfo }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellLinkDataList }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IExtractIconA }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IExtractIconW }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IExtractImage2 }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IExtractImage }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistPropertyBag }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IServiceProvider }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IObjectWithSite }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPropertyStore }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_ICustomizeInfoTip }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_ISLTracker }, + }, + L"Both", + }, +#if 0 // Apparently we can only get this through Folder.Items().GetLink + { + ID_NAME(CLSID_ShellLinkObject, NTDDI_MIN, NTDDI_VISTASP4), + { + { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, + } + }, +#endif + { + ID_NAME(CLSID_ShellSearchExt, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, + } + }, + { + ID_NAME(CLSID_ShellTaskScheduler, NTDDI_WIN7, NTDDI_WINBLUE), + { + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellTaskScheduler }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IUnknown }, + { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IMarshal}, + }, + }, + { + /* CLSID_StartMenu is also registered to shell32 on Windows Vista, + * but it crashes the test on CoUninitialize. */ + ID_NAME(CLSID_StartMenu, NTDDI_MIN, NTDDI_WS03SP4), + { + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBar }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObjectSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMenuPopup }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBanneredBar }, + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInitializeObject }, + } + }, + { + ID_NAME(CLSID_StartMenuPin, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + + {NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPinnedListOld}, + + {NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPinnedList}, + } + }, + { + ID_NAME(CLSID_Thumbnail, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + + { NTDDI_MIN, NTDDI_WS03SP4, &IID_IParentAndItem }, + }, + }, + { + ID_NAME(CLSID_TrackShellMenu, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_ITrackShellMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellMenu2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, + } + }, + { + ID_NAME(CLSID_UserAssist, NTDDI_WIN7, NTDDI_MAX), + { + { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, + }, + L"Both" + }, + { + ID_NAME(CLSID_UserNotification, NTDDI_MIN, NTDDI_MAX), + { + { NTDDI_MIN, NTDDI_MAX, &IID_IUserNotification }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + + {NTDDI_VISTA, NTDDI_MAX, &IID_IUserNotification2 }, } }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(shell32) { - TestClasses(L"shell32", ExpectedInterfaces, ExpectedInterfaceCount); + TestClasses(L"shell32", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); } diff --git a/modules/rostests/apitests/com/testlist.c b/modules/rostests/apitests/com/testlist.c index 14d5c5c58e9..9f38e288087 100644 --- a/modules/rostests/apitests/com/testlist.c +++ b/modules/rostests/apitests/com/testlist.c @@ -4,26 +4,34 @@ extern void func_browseui(void); extern void func_certmgr(void); +extern void func_combase(void); +extern void func_explorerframe(void); extern void func_ieframe(void); extern void func_interfaces(void); extern void func_netcfgx(void); extern void func_netshell(void); extern void func_ole32(void); +extern void func_prnfldr(void); extern void func_shdocvw(void); extern void func_shell32(void); +extern void func_windows_storage(void); extern void func_zipfldr(void); const struct test winetest_testlist[] = { { "browseui", func_browseui }, { "certmgr", func_certmgr }, + { "combase", func_combase }, + { "explorerframe", func_explorerframe }, { "ieframe", func_ieframe }, { "interfaces", func_interfaces }, { "netcfgx", func_netcfgx }, { "netshell", func_netshell }, { "ole32", func_ole32 }, + { "prnfldr", func_prnfldr }, { "shdocvw", func_shdocvw }, { "shell32", func_shell32 }, + { "windows_storage", func_windows_storage }, { "zipfldr", func_zipfldr }, { 0, 0 } diff --git a/modules/rostests/apitests/com/windows_storage.c b/modules/rostests/apitests/com/windows_storage.c new file mode 100644 index 00000000000..adc5b455996 --- /dev/null +++ b/modules/rostests/apitests/com/windows_storage.c @@ -0,0 +1,189 @@ +/* + * PROJECT: ReactOS API Tests + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: COM interface test for windows.storage classes + * COPYRIGHT: Copyright 2025 Carl Bialorucki + */ + +#include "com_apitest.h" + +#define NDEBUG +#include + +static const CLASS_AND_INTERFACES ExpectedInterfaces[] = +{ + { + ID_NAME(CLSID_Internet, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IBrowserFrameOptions }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_MruLongList, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_MruPidlList, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + } + }, + { + ID_NAME(CLSID_MyComputer, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IItemNameLimits }, + { NTDDI_WIN10, NTDDI_MAX, &IID_INewItemAdvisor }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IFolderFilter }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIcon }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IStorage }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IDelegateHostItemContainer }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IBackReferencedObject }, + } + }, + { + ID_NAME(CLSID_QueryAssociations, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IQueryAssociations }, + } + }, + { + ID_NAME(CLSID_SharedTaskScheduler, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellTaskScheduler }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IMarshal}, + } + }, +#if 0 // This crashes when un-initializing it. See ROSTESTS-405. + { + ID_NAME(CLSID_ShellDesktop, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &CLSID_ShellDesktop }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IStorage }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IItemNameLimits }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IFolderFilter }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIcon }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IDelegateHostItemContainer }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IBackReferencedObject }, + } + }, +#endif + { + ID_NAME(CLSID_ShellFSFolder, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIcon }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellIconOverlay }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder3 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IStorage }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IItemNameLimits }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenuCB }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IOleCommandTarget }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IParentAndItem }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IRemoteComputer }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IFolderType }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IBackReferencedObject }, + } + }, + { + ID_NAME(CLSID_ShellItem, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IMarshal }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellItem2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellItem }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistIDList }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IParentAndItem }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithBackReferences }, + }, + L"Both", + }, + { + ID_NAME(CLSID_ShellLink, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IMarshal }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellLinkA }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellLinkW }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistStream }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistFile }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersist }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenu3 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenu2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IDropTarget }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IQueryInfo }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellLinkDataList }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IExtractIconA }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IExtractIconW }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IExtractImage2 }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IExtractImage }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPersistPropertyBag }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IServiceProvider }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IObjectWithSite }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IPropertyStore }, + { NTDDI_WIN10, NTDDI_MAX, &IID_ICustomizeInfoTip }, + { NTDDI_WIN10, NTDDI_MAX, &IID_ISLTracker }, + }, + L"Both", + }, + { + ID_NAME(CLSID_ShellTaskScheduler, NTDDI_WIN10, NTDDI_MAX), + { + { NTDDI_WIN10, NTDDI_MAX, &IID_IShellTaskScheduler }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_WIN10, NTDDI_MAX, &IID_IMarshal}, + }, + }, +}; + +START_TEST(windows_storage) +{ + TestClassesEx(L"windows.storage", + ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces), + NTDDI_WIN10, NTDDI_MAX, + TRUE); +} diff --git a/modules/rostests/apitests/com/zipfldr.c b/modules/rostests/apitests/com/zipfldr.c index e6bbbd548f5..bc301dc92b3 100644 --- a/modules/rostests/apitests/com/zipfldr.c +++ b/modules/rostests/apitests/com/zipfldr.c @@ -10,101 +10,76 @@ #define NDEBUG #include -/* -This is only tested on w10 & 2k3, so the defines might be wrong for the other versions. -CLSID_ZipFolderStorageHandler and CLSID_ZipFolderContextMenu seem to be the same. -*/ - - static const CLASS_AND_INTERFACES ExpectedInterfaces[] = { { - ID_NAME(CLSID_ZipFolderStorageHandler), + ID_NAME(CLSID_ZipFolderStorageHandler, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_IShellFolder2 }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IStorage }, - { 0x8, &IID_IContextMenu }, - { 0xc, &IID_IShellExtInit }, -#if _WIN32_WINNT < 0x0a00 - { 0x10, &IID_IPersistFile }, - { 0x14, &IID_IPersistFolder2 }, - { 0x14, &IID_IPersistFolder }, - { 0x14, &IID_IPersist }, -#else - { 0x10, &IID_IPersistFolder2 }, - { 0x10, &IID_IPersistFolder }, - { 0x10, &IID_IPersist }, - { 0x14, &IID_IFolderType }, -#endif + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFile }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IStorage }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType}, }, - L"Apartment" }, { - ID_NAME(CLSID_ZipFolderSendTo), + ID_NAME(CLSID_ZipFolderSendTo, NTDDI_MIN, NTDDI_MAX), { -#if _WIN32_WINNT >= 0x0a00 - { -0x8, &IID_IObjectWithSite }, -#endif - { 0x0, &IID_IDropTarget }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFile }, - { 0x4, &IID_IPersist }, + { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, }, - L"Apartment" }, { - ID_NAME(CLSID_ZipFolderContextMenu), + ID_NAME(CLSID_ZipFolderContextMenu, NTDDI_MIN, NTDDI_MAX), { - { 0x0, &IID_IShellFolder2 }, - { 0x0, &IID_IShellFolder }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IStorage }, - { 0x8, &IID_IContextMenu }, - { 0xc, &IID_IShellExtInit }, -#if _WIN32_WINNT < 0x0a00 - { 0x10, &IID_IPersistFile }, - { 0x14, &IID_IPersistFolder2 }, - { 0x14, &IID_IPersistFolder }, - { 0x14, &IID_IPersist }, -#else - { 0x10, &IID_IPersistFolder2 }, - { 0x10, &IID_IPersistFolder }, - { 0x10, &IID_IPersist }, - { 0x14, &IID_IFolderType }, -#endif + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFile }, + + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IStorage }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, + { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, + + { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType}, }, - L"Apartment" }, { - ID_NAME(CLSID_ZipFolderRightDragHandler), + ID_NAME(CLSID_ZipFolderRightDragHandler, NTDDI_MIN, NTDDI_MAX), { - { -0x4, &IID_IContextMenu }, - { 0x0, &IID_IShellExtInit }, - { 0x0, &IID_IUnknown }, + { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, + { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, }, - L"Apartment" }, { - ID_NAME(CLSID_ZipFolderDropHandler), + ID_NAME(CLSID_ZipFolderDropHandler, NTDDI_MIN, NTDDI_MAX), { -#if _WIN32_WINNT < 0x0a00 - { 0x0, &IID_IDropTarget }, - { 0x0, &IID_IUnknown }, - { 0x4, &IID_IPersistFile }, - { 0x4, &IID_IPersist }, -#else - { -0x4, &IID_IDropTarget }, - { 0x0, &IID_IUnknown }, -#endif + { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, + { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, + + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFile }, + { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersist }, }, - L"Apartment" }, }; -static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); START_TEST(zipfldr) { - TestClasses(L"zipfldr", ExpectedInterfaces, ExpectedInterfaceCount); + TestClasses(L"zipfldr", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); } diff --git a/sdk/include/psdk/sdkddkver.h b/sdk/include/psdk/sdkddkver.h index 10021b220fa..f2618fca6fc 100644 --- a/sdk/include/psdk/sdkddkver.h +++ b/sdk/include/psdk/sdkddkver.h @@ -110,6 +110,7 @@ Abstract: #define NTDDI_WS08SP3 NTDDI_WIN6SP3 #define NTDDI_WS08SP4 NTDDI_WIN6SP4 #define NTDDI_WIN7 0x06010000 // Windows 7 +#define NTDDI_WIN7SP1 0x06010100 #define NTDDI_WIN8 0x06020000 // Windows 8 #define NTDDI_WINBLUE 0x06030000 // Windows 8.1 #define NTDDI_WINTHRESHOLD 0x0A000000 // Windows 10.0.10240 / 1507 / Threshold 1 diff --git a/sdk/include/reactos/shlguid_undoc.h b/sdk/include/reactos/shlguid_undoc.h index 52aad4a13fb..12d3b5ae8b1 100644 --- a/sdk/include/reactos/shlguid_undoc.h +++ b/sdk/include/reactos/shlguid_undoc.h @@ -29,7 +29,7 @@ DEFINE_GUID(IID_ITrayPriv2, 0x9E83C057, 0xFF23, 0x6823, 0x1F, 0x4F, DEFINE_GUID(IID_IShellMenu2, 0x6F51C646, 0x0EFE, 0x4370, 0x88, 0x2A, 0xC1, 0xF6, 0x1C, 0xB2, 0x7C, 0x3B); DEFINE_GUID(IID_IWinEventHandler, 0xEA5F2D61, 0xE008, 0x11CF, 0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97); DEFINE_GUID(IID_IShellMenuAcc, 0xFAF6FE96, 0xCE5E, 0x11D1, 0x83, 0x71, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0); -DEFINE_GUID(IID_IShellBrowserService, 0x1307EE17, 0xEA83, 0x49EB, 0x96, 0xB2, 0x3A, 0x28, 0xE2, 0xD7, 0x04, 0x8A); +DEFINE_GUID(IID_IShellBrowserService_XP, 0x1307EE17, 0xEA83, 0x49EB, 0x96, 0xB2, 0x3A, 0x28, 0xE2, 0xD7, 0x04, 0x8A); DEFINE_GUID(IID_IShellFolderView, 0x37A378C0, 0xF82D, 0x11CE, 0xAE, 0x65, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62); DEFINE_GUID(SID_SProxyBrowser, 0x20C46561, 0x8491, 0x11CF, 0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85); @@ -187,7 +187,8 @@ DEFINE_GUID(IID_IRegItemFolder, 0x81075FEB, 0x0A85, 0x439B, 0xB2, 0x5 DEFINE_GUID(IID_IRootAndRelativeParsingFolder,0x52B14A6A,0x58F1,0x45BD,0xB0, 0x0A, 0xDC, 0xE7, 0x40, 0x3D, 0x95, 0x1E); DEFINE_GUID(IID_IScope, 0xDD8B42D6, 0x8162, 0x44B0, 0x8C, 0x27, 0x14, 0x71, 0x33, 0x18, 0xA0, 0xC6); DEFINE_GUID(IID_IScopeItem, 0x0A4E5B7D, 0x99E1, 0x4700, 0x93, 0xB1, 0x89, 0x52, 0x5E, 0xAD, 0xD0, 0x90); -DEFINE_GUID(IID_IShellBrowserServce, 0xDFBC7E30, 0xF9E5, 0x455F, 0x88, 0xF8, 0xFA, 0x98, 0xC1, 0xE4, 0x94, 0xCA); +DEFINE_GUID(IID_IShellBrowserService4, 0xF5A24314, 0x5B8B, 0x44FA, 0xBC, 0x2E, 0x31, 0x28, 0x55, 0x44, 0xB5, 0x20); /* Vista only */ +DEFINE_GUID(IID_IShellBrowserService, 0xDFBC7E30, 0xF9E5, 0x455F, 0x88, 0xF8, 0xFA, 0x98, 0xC1, 0xE4, 0x94, 0xCA); /* Windows 7, 8.1, 10 1607 */ DEFINE_GUID(IID_IShellFolder3, 0x2EC06C64, 0x1296, 0x4F53, 0x89, 0xE5, 0xEC, 0xCE, 0x4E, 0xFC, 0x21, 0x89); DEFINE_GUID(IID_ITaskCondition, 0x8419D6C6, 0x78C6, 0x4AAF, 0xB4, 0xEB, 0x29, 0x1B, 0x43, 0x37, 0x4A, 0xED); DEFINE_GUID(IID_ITaskConditionCombiner, 0xD65AC459, 0x1187, 0x4C71, 0x88, 0x82, 0xDE, 0x09, 0x47, 0x23, 0x95, 0x29);