[COM_APITEST][INCLUDE/REACTOS][PSDK] Fix com tests for WS03, Vista+ (#8343)

[COM_APITEST]
- Add NTDDI version gating to classes and interfaces in tests
- Remove rigid offset tests. Instead, offsets to known interfaces can be logged by defining LOG_COM_INTERFACE_OFFSETS.
- Replace the noreg member of the known interfaces array with a function pointer that can be used to determine if a com test should be globally registered depending on the current NTDDI version. I could probably replace this with a min and max registered NTDDI value, but I thought this was confusing for interfaces that are never globally registered.

[INCLUDE/REACTOS]
- Rename the existing interface definition for IShellBrowserService to IShellBrowserService_XP at {1307EE17-EA83-49EB-96B2-3A28E2D7048A}. This only exists on XP and Server 2003, no earlier or later versions.
- Rename IID_IShellBrowserServce to IID_IShellBrowserService since this definition is correct for Windows 7+ at {DFBC7E30-F9E5-455F-88F8-FA98C1E494CA}
- Add an interface definition for IShellBrowserService4 at {F5A24314-5B8B-44FA-BC2E-31285544B520}. This definition for IShellBrowserService exists for Vista only and no other version.

[PSDK]
- Add a define for NTDDI_WIN7SP1. While this isn't defined in the public Windows headers, it clearly exists in private headers because it is referenced in the public WinBase.h header.
This commit is contained in:
Carl J. Bialorucki
2025-09-29 08:33:38 -05:00
committed by GitHub
parent 98a8996954
commit 5f243e66b6
19 changed files with 2864 additions and 1927 deletions

View File

@@ -5,12 +5,16 @@ list(APPEND SOURCE
browseui.c browseui.c
certmgr.c certmgr.c
com_apitest.c com_apitest.c
combase.c
explorerframe.c
ieframe.c ieframe.c
netcfgx.c netcfgx.c
netshell.c netshell.c
ole32.c ole32.c
prnfldr.c
shdocvw.c shdocvw.c
shell32.c shell32.c
windows_storage.c
zipfldr.c) zipfldr.c)
list(APPEND PCH_SKIP_SOURCE list(APPEND PCH_SKIP_SOURCE

View File

@@ -3,6 +3,7 @@
* LICENSE: GPLv2+ - See COPYING in the top level directory * LICENSE: GPLv2+ - See COPYING in the top level directory
* PURPOSE: COM interface test for browseui classes * PURPOSE: COM interface test for browseui classes
* PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
* Carl Bialorucki <carl.bialorucki@reactos.org>
*/ */
#include "com_apitest.h" #include "com_apitest.h"
@@ -13,405 +14,423 @@
static const CLASS_AND_INTERFACES ExpectedInterfaces[] = static const CLASS_AND_INTERFACES ExpectedInterfaces[] =
{ {
{ {
ID_NAME(CLSID_ACLCustomMRU), ID_NAME(CLSID_ACLCustomMRU, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IEnumString }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IACList }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList },
{ 0x8, &IID_IACLCustomMRU }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACLCustomMRU },
}, },
}, },
{ {
ID_NAME(CLSID_ACLHistory), ID_NAME(CLSID_ACLHistory, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IEnumString }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
}, },
}, },
{ {
ID_NAME(CLSID_ACLMRU), ID_NAME(CLSID_ACLMRU, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IEnumString }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IACList }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList },
{ 0x8, &IID_IACLCustomMRU }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACLCustomMRU },
}, },
}, },
{ {
ID_NAME(CLSID_ACLMulti), ID_NAME(CLSID_ACLMulti, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IEnumString }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IObjMgr }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjMgr },
{ 0x8, &IID_IACList }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList },
} }
}, },
{ {
ID_NAME(CLSID_ACListISF), ID_NAME(CLSID_ACListISF, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IEnumString }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellService },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IACList2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString },
{ 0x4, &IID_IACList }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x8, &IID_ICurrentWorkingDirectory }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList2 },
{ 0xc, &IID_IShellService }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IACList },
{ 0x10, &IID_IPersistFolder }, { 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 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IDispatch }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch },
{ 0x8, &IID_IAddressBand }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAddressBand },
{ 0xc, &IID_IAddressEditBox }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAddressEditBox },
{ 0x10, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ 0x14, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ 0x18, &IID_IShellService }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellService },
} }
}, },
{ {
ID_NAME(CLSID_AugmentedShellFolder), ID_NAME(CLSID_AugmentedShellFolder, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_IAugmentedShellFolder2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder2 },
{ 0x0, &IID_IAugmentedShellFolder }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder },
{ 0x0, &IID_IShellFolder }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IShellService }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellService },
{ 0x8, &IID_ITranslateShellChangeNotify }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITranslateShellChangeNotify },
} }
}, },
{ {
ID_NAME(CLSID_AugmentedShellFolder2), ID_NAME(CLSID_AugmentedShellFolder2, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_IAugmentedShellFolder2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder2 },
{ 0x0, &IID_IAugmentedShellFolder }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder },
{ 0x0, &IID_IShellFolder }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IShellFolder2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder2 },
{ 0x8, &IID_IShellService }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellService },
{ 0xc, &IID_ITranslateShellChangeNotify }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITranslateShellChangeNotify },
{ 0x10, &IID_IDropTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDropTarget },
} }
}, },
{ {
ID_NAME(CLSID_AutoComplete), ID_NAME(CLSID_AutoComplete, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IAutoComplete2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IAutoComplete2 },
{ 0x0, &IID_IAutoComplete }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IAutoComplete },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IAutoCompleteDropDown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IAutoCompleteDropDown },
{ 0x8, &IID_IEnumString }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IEnumString },
{ 0xc, &IID_IAccessible }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IAccessible },
{ 0xc, &IID_IDispatch }, { 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 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellTaskScheduler },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
} }
}, },
{ {
ID_NAME(CLSID_BandProxy), ID_NAME(CLSID_BandProxy, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IBandProxy }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandProxy },
{ 0x0, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
} }
}, },
{ {
ID_NAME(CLSID_BandSiteMenu), ID_NAME(CLSID_BandSiteMenu, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IContextMenu3 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 },
{ 0x0, &IID_IContextMenu2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 },
{ 0x0, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IShellService }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellService },
} }
}, },
{ {
ID_NAME(CLSID_BrandBand), ID_NAME(CLSID_BrandBand, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_IDeskBand }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand },
{ 0x0, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow },
{ 0x0, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
{ 0xc, &IID_IInputObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject },
{ 0x10, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ 0x10, &IID_IPersist }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist },
{ 0x14, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ 0x18, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider },
{ 0x30, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler },
{ 0x34, &IID_IDispatch }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch },
} }
}, },
{ {
ID_NAME(CLSID_BrowserBand), ID_NAME(CLSID_BrowserBand, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ -0x30, &IID_IDeskBand }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand },
{ -0x30, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow },
{ -0x30, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ -0x2c, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ -0x24, &IID_IInputObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject },
{ -0x20, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream },
{ -0x20, &IID_IPersist }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist },
{ -0x1c, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget },
{ -0x18, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider },
{ 0x0, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler },
{ 0x8, &IID_IDispatch }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch },
{ 0x10, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag },
}, },
}, },
{ {
ID_NAME(CLSID_CCommonBrowser), ID_NAME(CLSID_CCommonBrowser, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0xc, &IID_IShellBrowser }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellBrowser },
{ 0xc, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ 0x10, &IID_IBrowserService3 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserService3 },
{ 0x10, &IID_IBrowserService2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserService2 },
{ 0x10, &IID_IBrowserService }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserService },
{ 0x14, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider },
{ 0x18, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ 0x1c, &IID_IDockingWindowSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindowSite },
{ 0x20, &IID_IDockingWindowFrame }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindowFrame },
{ 0x24, &IID_IInputObjectSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObjectSite },
{ 0x28, &IID_IDropTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDropTarget },
{ 0x2c, &IID_IShellBrowserService },
} }
}, },
{ {
ID_NAME(CLSID_CDockingBarPropertyBag), ID_NAME(CLSID_CDockingBarPropertyBag, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IPropertyBag }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPropertyBag },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
}, },
}, },
{ {
ID_NAME(CLSID_CRegTreeOptions), ID_NAME(CLSID_CRegTreeOptions, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IRegTreeOptions }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IRegTreeOptions },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
} }
}, },
{ {
ID_NAME(CLSID_CommBand), ID_NAME(CLSID_CommBand, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ -0x30, &IID_IDeskBand }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler },
{ -0x30, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand },
{ -0x30, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow },
{ -0x2c, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ -0x24, &IID_IInputObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ -0x20, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject },
{ -0x20, &IID_IPersist }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream },
{ -0x1c, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist },
{ -0x18, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget },
{ 0x0, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu },
{ 0x4, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x8, &IID_IDispatch }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch },
{ 0x10, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag },
}, },
}, },
{ {
ID_NAME(CLSID_DeskBar), ID_NAME(CLSID_DeskBar, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ -0xb8, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ -0xb4, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider },
{ -0xb0, &IID_IDeskBar }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBar },
{ -0xb0, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ -0xac, &IID_IInputObjectSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObjectSite },
{ -0xa8, &IID_IInputObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject },
{ -0x70, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow },
{ -0x6c, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
{ -0x68, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStreamInit },
{ -0x68, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ -0x68, &IID_IPersist }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist },
{ -0x64, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistPropertyBag },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
} }
}, },
{ {
ID_NAME(CLSID_DeskBarApp), ID_NAME(CLSID_DeskBarApp, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ -0xb8, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget },
{ -0xb4, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider },
{ -0xb0, &IID_IDeskBar }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBar },
{ -0xb0, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ -0xac, &IID_IInputObjectSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObjectSite },
{ -0xa8, &IID_IInputObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject },
{ -0x70, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow },
{ -0x6c, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ -0x68, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit },
{ -0x68, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream },
{ -0x68, &IID_IPersist }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist },
{ -0x64, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x8, &IID_IContextMenu3 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 },
{ 0x8, &IID_IContextMenu2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 },
{ 0x8, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu },
} }
}, },
{ {
ID_NAME(CLSID_GlobalFolderSettings), ID_NAME(CLSID_GlobalFolderSettings, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IGlobalFolderSettings }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IGlobalFolderSettings },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
}, },
L"Both" 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" L"Both"
}, },
{ {
ID_NAME(CLSID_ImgCtxThumbnailExtractor), ID_NAME(CLSID_ImgCtxThumbnailExtractor, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_IExtractImage2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IExtractImage2 },
{ 0x0, &IID_IExtractImage }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IExtractImage },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x8, &IID_IPersistFile }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFile },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_InternetToolbar), ID_NAME(CLSID_InternetToolbar, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ -0x54, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IExplorerToolbar },
{ -0x50, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellChangeNotify },
{ -0x4c, &IID_IDeskBar },
{ -0x4c, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch },
{ -0x48, &IID_IInputObjectSite }, { NTDDI_MIN, NTDDI_VISTASP4, &DIID_DWebBrowserEvents },
{ -0x44, &IID_IInputObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget },
{ -0xc, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider },
{ -0x8, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBar },
{ -0x4, &IID_IExplorerToolbar }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ 0x0, &DIID_DWebBrowserEvents }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObjectSite },
{ 0x0, &IID_IDispatch }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow },
{ 0x4, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ 0x8, &IID_IShellChangeNotify }, { 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 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProgressDialog },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ 0x8, &IID_IActionProgressDialog }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IActionProgressDialog },
{ 0xc, &IID_IActionProgress }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IActionProgress },
{ 0x10, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_RebarBandSite), ID_NAME(CLSID_RebarBandSite, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0xc, &IID_IBandSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBandSite },
{ 0x10, &IID_IInputObjectSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObjectSite },
{ 0x14, &IID_IInputObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject },
{ 0x18, &IID_IDeskBarClient }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBarClient },
{ 0x18, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ 0x1c, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler },
{ 0x20, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream },
{ 0x20, &IID_IPersist }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist },
{ 0x24, &IID_IDropTarget }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDropTarget },
{ 0x28, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider },
{ 0x2c, &IID_IBandSiteHelper }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBandSiteHelper },
{ 0x30, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget },
} }
}, },
{ {
ID_NAME(CLSID_SH_AddressBand), ID_NAME(CLSID_SH_AddressBand, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IDeskBand }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAddressBand },
{ 0x0, &IID_IDockingWindow },
{ 0x0, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow },
{ 0x4, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ 0xc, &IID_IInputObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x10, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ 0x10, &IID_IPersist }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject },
{ 0x14, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream },
{ 0x18, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist },
{ 0x30, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget },
{ 0x34, &IID_IAddressBand }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider },
{ 0x38, &IID_IInputObjectSite }, { 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 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleContainer },
{ 0x74, &IID_IOleContainer }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceFrame },
{ 0x78, &IID_IOleInPlaceFrame }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchBar },
//{ 0x78, &IID_IOleInPlaceUIWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IFileSearchBand },
{ 0x78, &IID_IOleWindow },
{ 0xb0, &IID_IDeskBand }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0xb0, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ 0xb4, &IID_IInputObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand },
{ 0xb8, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDockingWindow },
{ 0xbc, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IInputObject },
{ 0xc0, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ 0xc8, &IID_ISearchBar }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu },
{ 0xcc, &IID_IFileSearchBand }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider },
{ 0xcc, &IID_IDispatch }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch },
{ 0xd0, &IID_IBandNavigate }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBandNavigate },
{ 0xd8, &IID_IPersist }, { 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 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellTaskScheduler },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
} }
}, },
{ {
ID_NAME(CLSID_ShellSearchExt), ID_NAME(CLSID_ShellSearchExt, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
} }
}, },
{ {
ID_NAME(CLSID_ShellTaskScheduler), ID_NAME(CLSID_ShellTaskScheduler, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IShellTaskScheduler }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellTaskScheduler },
{ 0x0, &IID_IUnknown }, { 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" L"Both"
}, },
{ {
ID_NAME(CLSID_WebSearchExt), ID_NAME(CLSID_WebSearchExt, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
}, },
}, },
}; };
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(browseui) START_TEST(browseui)
{ {
TestClasses(L"browseui", ExpectedInterfaces, ExpectedInterfaceCount); TestClassesEx(L"browseui",
ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces),
NTDDI_MIN, NTDDI_VISTASP4,
FALSE);
} }

View File

@@ -13,27 +13,26 @@
static const CLASS_AND_INTERFACES ExpectedInterfaces[] = 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 }, { NTDDI_MIN, NTDDI_MAX, &IID_ISnapInAbout },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
}, },
L"both" L"both"
}, },
{ {
ID_NAME(CLSID_CERTMGR_CertMgrObject_1), ID_NAME(CLSID_CERTMGR_CertMgrObject_1, NTDDI_MIN, NTDDI_MAX),
{ {
{ -0x1c, &IID_IComponentData }, { NTDDI_MIN, NTDDI_MAX, &IID_IComponentData },
{ 0x0, &IID_IExtendPropertySheet }, { NTDDI_MIN, NTDDI_MAX, &IID_IExtendPropertySheet },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream },
}, },
L"both" L"both"
}, },
}; };
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(certmgr) START_TEST(certmgr)
{ {
TestClasses(L"certmgr", ExpectedInterfaces, ExpectedInterfaceCount); TestClasses(L"certmgr", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
} }

File diff suppressed because it is too large Load Diff

View File

@@ -8,14 +8,6 @@
#ifndef _COM_APITEST_H_ #ifndef _COM_APITEST_H_
#define _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 WIN32_NO_STATUS
#define _INC_WINDOWS #define _INC_WINDOWS
#define COM_NO_WINDOWS_H #define COM_NO_WINDOWS_H
@@ -41,23 +33,30 @@
#include <htiface.h> #include <htiface.h>
#include <mshtml.h> #include <mshtml.h>
#include <initguid.h> #include <initguid.h>
#include <apitest.h>
typedef IUnknown *PUNKNOWN; 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 typedef struct _CLASS_AND_INTERFACES
{ {
const CLSID *clsid; const CLSID *clsid;
PCSTR name; PCSTR name;
ULONG MinClassNTDDIVersion;
ULONG MaxClassNTDDIVersion;
struct struct
{ {
LONG offset; ULONG MinInterfaceNTDDIVersion;
ULONG MaxInterfaceNTDDIVersion;
const IID *iid; const IID *iid;
} ifaces[80]; } ifaces[80];
PCWSTR ThreadingModel; PCWSTR ThreadingModel;
} CLASS_AND_INTERFACES; } CLASS_AND_INTERFACES;
typedef const CLASS_AND_INTERFACES *PCCLASS_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 VOID
TestClasses( TestClasses(
@@ -65,9 +64,14 @@ TestClasses(
_In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces,
_In_ INT ExpectedInterfaceCount); _In_ INT ExpectedInterfaceCount);
/* Indicate that the interface is implemented in another (probably aggregate) object, VOID
* so its offset varies and is "far away" */ TestClassesEx(
#define FARAWY (-65535) _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 // 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); 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_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_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_ */ #endif /* _COM_APITEST_H_ */

View File

@@ -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 <carl.bialorucki@reactos.org>
*/
#include "com_apitest.h"
#define NDEBUG
#include <debug.h>
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);
}

View File

@@ -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 <carl.bialorucki@reactos.org>
*/
#include "com_apitest.h"
#define NDEBUG
#include <debug.h>
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);
}

View File

@@ -3,6 +3,7 @@
* LICENSE: GPLv2+ - See COPYING in the top level directory * LICENSE: GPLv2+ - See COPYING in the top level directory
* PURPOSE: COM interface test for ieframe classes * PURPOSE: COM interface test for ieframe classes
* PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
* Carl Bialorucki <carl.bialorucki@reactos.org>
*/ */
#include "com_apitest.h" #include "com_apitest.h"
@@ -13,235 +14,268 @@
static const CLASS_AND_INTERFACES ExpectedInterfaces[] = static const CLASS_AND_INTERFACES ExpectedInterfaces[] =
{ {
{ {
ID_NAME(CLSID_IE_SearchBand), ID_NAME(CLSID_CommBand, NTDDI_WIN7, NTDDI_MAX),
{ {
{ -0x30, &IID_IObjectWithSite }, { NTDDI_WIN7, NTDDI_MAX, &IID_IDeskBand },
{ -0x28, &IID_IDeskBand }, { NTDDI_WIN7, NTDDI_MAX, &IID_IDockingWindow },
{ -0x28, &IID_IDockingWindow }, { NTDDI_WIN7, NTDDI_MAX, &IID_IOleWindow },
{ -0x28, &IID_IOleWindow }, { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite },
{ -0x24, &IID_IInputObject }, { NTDDI_WIN7, NTDDI_MAX, &IID_IInputObject },
{ -0x20, &IID_IPersistStream }, { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistStream },
{ -0x20, &IID_IPersist }, { NTDDI_WIN7, NTDDI_MAX, &IID_IPersist },
{ -0x1c, &IID_IOleCommandTarget }, { NTDDI_WIN7, NTDDI_MAX, &IID_IOleCommandTarget },
{ -0x18, &IID_IServiceProvider }, { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider },
{ 0x0, &IID_IContextMenu }, { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu },
{ 0x0, &IID_IUnknown }, { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown },
{ 0x8, &IID_IDispatch }, { NTDDI_WIN7, NTDDI_MAX, &IID_IDispatch },
{ 0x10, &IID_IPersistPropertyBag }, { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistPropertyBag },
{ 0x8c, &IID_IBandNavigate }, },
},
{
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 }, { NTDDI_MIN, NTDDI_MAX, &IID_IURLSearchHook2 },
{ -0x14, &IID_IShellFolder2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IURLSearchHook },
{ -0x14, &IID_IShellFolder }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ -0x10, &IID_IPersistFolder2 },
{ -0x10, &IID_IPersistFolder },
{ -0x10, &IID_IPersist },
{ -0xc, &IID_IBrowserFrameOptions },
{ 0x0, &IID_IContextMenu },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IShellExtInit },
} }
}, },
{ {
ID_NAME(CLSID_CUrlHistory), ID_NAME(CLSID_IE_SearchBand, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IUrlHistoryStg2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ 0x0, &IID_IUrlHistoryStg }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDeskBand },
{ 0x0, &IID_IUnknown }, { 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 }, { NTDDI_MIN, NTDDI_WINBLUE, &IID_IObjectWithBackReferences },
{ 0x0, &IID_IURLSearchHook }, { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder2 },
{ 0x0, &IID_IUnknown }, { 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 }, { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject },
{ -0x8, &IID_IContextMenu2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu2 },
{ -0x8, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu },
{ -0x4, &IID_IExtractIconA }, { NTDDI_MIN, NTDDI_MAX, &IID_IExtractIconA },
{ 0x0, &IID_IExtractIconW }, { NTDDI_MIN, NTDDI_MAX, &IID_IExtractIconW },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_IPersistFile }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile },
{ 0x4, &IID_IPersist }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
{ 0x8, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream },
{ 0xc, &IID_IShellExtInit }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit },
{ 0x10, &IID_IShellLinkA }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkA },
{ 0x14, &IID_IShellLinkW }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkW },
{ 0x18, &IID_IShellPropSheetExt }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt },
{ 0x1c, &IID_IPropertySetStorage }, { NTDDI_MIN, NTDDI_MAX, &IID_IPropertySetStorage },
{ 0x20, &IID_INewShortcutHookA }, { NTDDI_MIN, NTDDI_MAX, &IID_INewShortcutHookA },
{ 0x24, &IID_INewShortcutHookW }, { NTDDI_MIN, NTDDI_MAX, &IID_INewShortcutHookW },
{ 0x30, &IID_IQueryInfo }, { NTDDI_MIN, NTDDI_MAX, &IID_IQueryInfo },
{ 0x38, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite },
{ 0x44, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget },
{ 0x48, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider },
{ 0x4c, &IID_IPropertyStore }, { NTDDI_MIN, NTDDI_MAX, &IID_IPropertyStore },
{ 0x50, &IID_IInitializeWithFile }, { NTDDI_MIN, NTDDI_MAX, &IID_IInitializeWithFile },
{ 0x54, &IID_IInitializeWithBindCtx }, { NTDDI_MIN, NTDDI_MAX, &IID_IInitializeWithBindCtx },
} }
}, },
{ {
ID_NAME(CLSID_ShellUIHelper), ID_NAME(CLSID_ShellUIHelper, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0xc, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite },
{ 0x10, &IID_IObjectSafety }, { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety },
{ 0x14, &IID_IShellUIHelper2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellUIHelper2 },
{ 0x14, &IID_IShellUIHelper }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellUIHelper },
{ 0x14, &IID_IDispatch }, { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch },
{ 0x18, &IID_IDispatchEx }, { NTDDI_MIN, NTDDI_MAX, &IID_IDispatchEx },
} }
}, },
{ {
ID_NAME(CLSID_ShellNameSpace), ID_NAME(CLSID_ShellNameSpace, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_IShellNameSpace }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellNameSpace },
{ 0x0, &IID_IShellFavoritesNameSpace }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFavoritesNameSpace },
{ 0x0, &IID_IDispatch }, { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_IProvideClassInfo2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 },
{ 0x4, &IID_IProvideClassInfo }, { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo },
{ 0x8, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit },
{ 0x10, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag },
{ 0x14, &IID_IQuickActivate }, { NTDDI_MIN, NTDDI_MAX, &IID_IQuickActivate },
{ 0x18, &IID_IOleControl }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl },
{ 0x1c, &IID_IOleObject }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject },
{ 0x20, &IID_IOleInPlaceActiveObject }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject },
{ 0x24, &IID_IViewObjectEx }, { NTDDI_MIN, NTDDI_MAX, &IID_IViewObjectEx },
{ 0x24, &IID_IViewObject2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 },
{ 0x24, &IID_IViewObject }, { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject },
{ 0x28, &IID_IOleInPlaceObjectWindowless }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObjectWindowless },
{ 0x28, &IID_IOleInPlaceObject }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject },
{ 0x28, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow },
{ 0x38, &IID_IConnectionPointContainer }, { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer },
{ 0x3c, &IID_IDropTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget },
{ 0xb4, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite },
{ 0xbc, &IID_INSCTree }, { NTDDI_MIN, NTDDI_MAX, &IID_INSCTree },
{ 0xc4, &IID_IShellBrowser }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellBrowser },
{ 0xc8, &IID_IFolderFilterSite }, { NTDDI_MIN, NTDDI_MAX, &IID_IFolderFilterSite },
{ 0xcc, &IID_INewMenuClient }, { NTDDI_MIN, NTDDI_MAX, &IID_INewMenuClient },
{ 0xd0, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider },
{ 0xd4, &IID_INameSpaceTreeControl }, { NTDDI_MIN, NTDDI_MAX, &IID_INameSpaceTreeControl },
{ 0xe0, &IID_IVisualProperties }, { NTDDI_MIN, NTDDI_MAX, &IID_IVisualProperties },
{ 0xe4, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler },
} }
}, },
{ {
ID_NAME(CLSID_ShellWindows), ID_NAME(CLSID_ShellWindows, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ -0xa0, &IID_IMarshal2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMarshal2 },
{ -0xa0, &IID_IMarshal }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMarshal },
{ -0x20, &IID_IClientSecurity }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IClientSecurity },
{ -0x18, &IID_IRpcOptions }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IRpcOptions },
{ -0xc, &IID_ICallFactory }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_ICallFactory },
{ -0x8, &IID_IForegroundTransfer }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IForegroundTransfer },
{ 0x0, &IID_IMultiQI }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IMultiQI },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ FARAWY, &IID_IShellWindows }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellWindows },
{ FARAWY, &IID_IDispatch }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch },
{ FARAWY, &IID_IConnectionPointContainer }, { 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 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IEFrameAuto },
{ -0x1c, &IID_IOleObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv2 },
{ -0x18, &IID_IViewObject2 },
{ -0x18, &IID_IViewObject }, #ifdef _WIN64 // IID_IWebBrowserPriv is missing from this class on Vista x64
{ -0x14, &IID_IDataObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv },
{ -0x10, &IID_IOleInPlaceObject }, { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IWebBrowserPriv },
{ -0x10, &IID_IOleWindow }, #else
{ -0xc, &IID_IOleInPlaceActiveObject }, { NTDDI_MIN, NTDDI_WINBLUE, &IID_IWebBrowserPriv },
{ 0x0, &IID_IUnknown }, #endif
{ 0x98, &IID_IPersistStream },
{ 0x98, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
{ 0x9c, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject },
{ 0xa0, &IID_IOleControl }, { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 },
{ 0xa8, &IID_IProvideClassInfo2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject },
{ 0xa8, &IID_IProvideClassInfo }, { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject },
{ 0xac, &IID_IConnectionPointContainer }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject },
{ 0x120, &IID_IWebBrowser2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow },
{ 0x120, &IID_IWebBrowserApp }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject },
{ 0x120, &IID_IWebBrowser }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x120, &IID_IDispatch }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream },
{ 0x130, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit },
{ 0x134, &IID_IObjectSafety }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag },
{ 0x13c, &IID_ITargetEmbedding }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl },
{ 0x140, &IID_IPersistStorage }, { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 },
{ 0x144, &IID_IPersistHistory }, { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo },
{ FARAWY, &IID_IShellService }, { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer },
{ FARAWY, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser2 },
{ FARAWY, &IID_IHlinkFrame }, { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowserApp },
{ FARAWY, &IID_IUrlHistoryNotify }, { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser },
{ FARAWY, &IID_ITargetFrame2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch },
{ FARAWY, &IID_ITargetNotify }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget },
{ FARAWY, &IID_ITargetFramePriv2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety },
{ FARAWY, &IID_ITargetFramePriv }, { NTDDI_MIN, NTDDI_MAX, &IID_ITargetEmbedding },
{ FARAWY, &IID_IEFrameAuto }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStorage },
{ FARAWY, &IID_IWebBrowserPriv }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistHistory },
{ FARAWY, &IID_IWebBrowserPriv2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellService },
{ FARAWY, &IID_ISecMgrCacheSeedTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider },
{ FARAWY, &IID_ITargetFrame }, { 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 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IEFrameAuto },
{ -0x1c, &IID_IOleObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv2 },
{ -0x18, &IID_IViewObject2 },
{ -0x18, &IID_IViewObject }, #ifdef _WIN64 // IID_IWebBrowserPriv is missing from this class on Vista x64
{ -0x14, &IID_IDataObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWebBrowserPriv },
{ -0x10, &IID_IOleInPlaceObject }, { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IWebBrowserPriv },
{ -0x10, &IID_IOleWindow }, #else
{ -0xc, &IID_IOleInPlaceActiveObject }, { NTDDI_MIN, NTDDI_WINBLUE, &IID_IWebBrowserPriv },
{ 0x0, &IID_IUnknown }, #endif
{ 0x98, &IID_IPersistStream },
{ 0x98, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
{ 0x9c, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject },
{ 0xa0, &IID_IOleControl }, { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject2 },
{ 0xa8, &IID_IProvideClassInfo2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IViewObject },
{ 0xa8, &IID_IProvideClassInfo }, { NTDDI_MIN, NTDDI_MAX, &IID_IDataObject },
{ 0xac, &IID_IConnectionPointContainer }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject },
{ 0x120, &IID_IWebBrowser2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow },
{ 0x120, &IID_IWebBrowserApp }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject },
{ 0x120, &IID_IWebBrowser }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x120, &IID_IDispatch }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream },
{ 0x130, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit },
{ 0x134, &IID_IObjectSafety }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag },
{ 0x13c, &IID_ITargetEmbedding }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl },
{ 0x140, &IID_IPersistStorage }, { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 },
{ 0x144, &IID_IPersistHistory }, { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo },
{ FARAWY, &IID_IShellService }, { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer },
{ FARAWY, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser2 },
{ FARAWY, &IID_IHlinkFrame }, { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowserApp },
{ FARAWY, &IID_IUrlHistoryNotify }, { NTDDI_MIN, NTDDI_MAX, &IID_IWebBrowser },
{ FARAWY, &IID_ITargetFrame2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch },
{ FARAWY, &IID_ITargetNotify }, { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget },
{ FARAWY, &IID_ITargetFramePriv2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety },
{ FARAWY, &IID_ITargetFramePriv }, { NTDDI_MIN, NTDDI_MAX, &IID_ITargetEmbedding },
{ FARAWY, &IID_IEFrameAuto }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStorage },
{ FARAWY, &IID_IWebBrowserPriv }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistHistory },
{ FARAWY, &IID_IWebBrowserPriv2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellService },
{ FARAWY, &IID_ISecMgrCacheSeedTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider },
{ FARAWY, &IID_ITargetFrame }, { 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) START_TEST(ieframe)
{ {
TestClasses(L"ieframe", ExpectedInterfaces, ExpectedInterfaceCount); TestClasses(L"ieframe", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
} }

View File

@@ -13,19 +13,21 @@
static const CLASS_AND_INTERFACES ExpectedInterfaces[] = static const CLASS_AND_INTERFACES ExpectedInterfaces[] =
{ {
{ {
ID_NAME(CLSID_CNetCfg), ID_NAME(CLSID_CNetCfg, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_INetCfg }, { NTDDI_MIN, NTDDI_MAX, &IID_INetCfg },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_INetCfgLock }, { NTDDI_MIN, NTDDI_MAX, &IID_INetCfgLock },
{ 0x10, &IID_INetCfgPnpReconfigCallback }, { NTDDI_MIN, NTDDI_MAX, &IID_INetCfgPnpReconfigCallback },
}, },
L"Both" L"Both"
}, },
}; };
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(netcfgx) 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));
} }

View File

@@ -3,6 +3,7 @@
* LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory
* PURPOSE: COM interface test for netshell classes * PURPOSE: COM interface test for netshell classes
* PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org>
* Carl Bialorucki <carl.bialorucki@reactos.org>
*/ */
#include "com_apitest.h" #include "com_apitest.h"
@@ -12,142 +13,147 @@
static const CLASS_AND_INTERFACES ExpectedInterfaces[] = 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" L"Both"
}, },
{ {
ID_NAME(CLSID_NetworkConnections), ID_NAME(CLSID_ConnectionCommonUi, NTDDI_VISTA, NTDDI_MAX),
{ {
{ 0x0, &IID_IPersistFolder2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x0, &IID_IPersistFolder },
{ 0x0, &IID_IPersist }, { NTDDI_VISTA, NTDDI_MAX, &IID_INetLanConnectionUiInfo },
{ 0x0, &IID_IUnknown }, { NTDDI_VISTA, NTDDI_MAX, &IID_IMarshal2 },
{ 0x4, &IID_IShellExtInit }, { NTDDI_VISTA, NTDDI_MAX, &IID_IMarshal },
{ 0x8, &IID_IShellFolder2 }, { NTDDI_VISTA, NTDDI_MAX, &IID_IClientSecurity },
{ 0x8, &IID_IShellFolder }, { NTDDI_VISTA, NTDDI_MAX, &IID_IRpcOptions },
{ 0xc, &IID_IOleCommandTarget }, { NTDDI_VISTA, NTDDI_MAX, &IID_ICallFactory },
{ 0x10, &IID_IShellFolderViewCB }, { 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" L"Both"
}, },
{ {
ID_NAME(CLSID_ConnectionFolderEnum), ID_NAME(CLSID_ConnectionFolderEnum, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_IEnumIDList }, { NTDDI_MIN, NTDDI_MAX, &IID_IEnumIDList },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
},
L"Both"
},
#if 0
{
ID_NAME(CLSID_ConnectionManager),
{
{ 0x0, &IID_IUnknown },
}
},
#endif
{
ID_NAME(CLSID_ConnectionTray),
{
{ 0x0, &IID_IOleCommandTarget },
{ 0x0, &IID_IUnknown },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_DialupConnectionUi), ID_NAME(CLSID_ConnectionTray, NTDDI_MIN, NTDDI_WIN7SP1),
{ {
{ 0x0, &IID_INetConnectionConnectUi }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_INetConnectionPropertyUi2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
//{ 0x4, &IID_INetConnectionPropertyUi },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_DirectConnectionUi), ID_NAME(CLSID_DialupConnectionUi, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_INetConnectionConnectUi }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_INetConnectionPropertyUi2 }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 },
//{ 0x4, &IID_INetConnectionPropertyUi },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_InboundConnectionUi), ID_NAME(CLSID_DirectConnectionUi, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_INetConnectionPropertyUi2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_INetConnectionConnectUi },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_INetConnectionPropertyUi2 },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_InternetConnectionUi), ID_NAME(CLSID_InboundConnectionUi, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_INetConnectionConnectUi }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_INetConnectionPropertyUi2 },
//{ 0x4, &IID_INetConnectionPropertyUi },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_LanConnectionUi), ID_NAME(CLSID_InternetConnectionUi, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_INetConnectionConnectUi }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_INetConnectionPropertyUi2 }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 },
{ 0x4, &IID_INetConnectionPropertyUi },
{ 0x10, &IID_INetLanConnectionUiInfo },
}, },
L"Both" 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" L"Both"
}, },
{ {
ID_NAME(CLSID_SharedAccessConnectionUi), ID_NAME(CLSID_NetConnectionUiUtilities, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_INetConnectionConnectUi }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_INetConnectionPropertyUi2 },
{ 0x4, &IID_INetConnectionPropertyUi },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_PPPoEUi), ID_NAME(CLSID_SharedAccessConnectionUi, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_INetConnectionConnectUi }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_INetConnectionPropertyUi2 }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 },
//{ 0x4, &IID_INetConnectionPropertyUi }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi },
}, },
L"Both" L"Both"
}, },
{ {
ID_NAME(CLSID_VpnConnectionUi), ID_NAME(CLSID_PPPoEUi, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_INetConnectionConnectUi }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionConnectUi },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x4, &IID_INetConnectionPropertyUi2 }, { NTDDI_MIN, NTDDI_MAX, &IID_INetConnectionPropertyUi2 },
//{ 0x4, &IID_INetConnectionPropertyUi }, },
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" L"Both"
}, },
}; };
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(netshell) START_TEST(netshell)
{ {
TestClasses(L"netshell", ExpectedInterfaces, ExpectedInterfaceCount); TestClasses(L"netshell", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
} }

View File

@@ -13,18 +13,17 @@
static const CLASS_AND_INTERFACES ExpectedInterfaces[] = static const CLASS_AND_INTERFACES ExpectedInterfaces[] =
{ {
{ {
ID_NAME(CLSID_StdComponentCategoriesMgr), ID_NAME(CLSID_StdComponentCategoriesMgr, NTDDI_MIN, NTDDI_WIN7SP1),
{ {
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IUnknown },
{ FARAWY, &IID_ICatRegister }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_ICatRegister },
{ FARAWY, &IID_ICatInformation }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_ICatInformation },
}, },
L"Both" L"Both"
}, },
}; };
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(ole32) START_TEST(ole32)
{ {
TestClasses(L"ole32", ExpectedInterfaces, ExpectedInterfaceCount); TestClasses(L"ole32", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
} }

View File

@@ -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 <carl.bialorucki@reactos.org>
*/
#include "com_apitest.h"
#define NDEBUG
#include <debug.h>
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);
}

View File

@@ -12,243 +12,304 @@
static const CLASS_AND_INTERFACES ExpectedInterfaces[] = 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 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellLinkA },
{ 0x0, &IID_IShellFolder }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellLinkW },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFile },
{ 0x4, &IID_IPersistFolder3 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IExtractIconW },
{ 0x4, &IID_IPersistFolder2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IQueryInfo },
{ 0x4, &IID_IPersistFolder }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ 0x4, &IID_IPersist }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStreamInit },
{ 0x8, &IID_IShellLinkA }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserFrameOptions },
{ 0xc, &IID_IShellLinkW },
{ 0x10, &IID_IPersistFile }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 },
{ 0x14, &IID_IExtractIconW }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder },
{ 0x18, &IID_IQueryInfo }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x20, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 },
{ 0x20, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 },
{ 0x24, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder },
{ 0x28, &IID_IBrowserFrameOptions }, { 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 }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 },
{ -0xb4, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder },
{ -0xb4, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ -0xb0, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 },
{ -0xa8, &IID_IInputObject }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 },
{ -0xa4, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder },
{ -0xa4, &IID_IPersist }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
{ -0xa0, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag },
{ -0x9c, &IID_IServiceProvider },
{ -0x84, &IID_IContextMenu }, { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent },
{ -0x80, &IID_IBandNavigate },
{ -0x7c, &IID_IWinEventHandler }, { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite },
{ -0x78, &IID_INamespaceProxy }, { NTDDI_VISTA, NTDDI_MAX, &IID_IShellIcon },
{ 0x0, &IID_IDispatch }, { NTDDI_VISTA, NTDDI_MAX, &IID_IShellIconOverlay },
{ 0x0, &IID_IUnknown }, { 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 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder2 },
{ 0x0, &IID_IShellFolder }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0x4, &IID_IPersistFolder3 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder3 },
{ 0x4, &IID_IPersistFolder2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder2 },
{ 0x4, &IID_IPersistFolder }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder },
{ 0x4, &IID_IPersist }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist },
{ 0x8, &IID_IShellLinkA }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkA },
{ 0xc, &IID_IShellLinkW }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkW },
{ 0x10, &IID_IPersistFile }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFile },
{ 0x14, &IID_IExtractIconW }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractIconW },
{ 0x18, &IID_IQueryInfo }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IQueryInfo },
{ 0x20, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream },
{ 0x20, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit },
{ 0x24, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag },
{ 0x28, &IID_IBrowserFrameOptions }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IBrowserFrameOptions },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellIconOverlay },
} }
}, },
#if 0 // E_OUTOFMEMORY? #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 #endif
{ {
ID_NAME(CLSID_MruLongList), ID_NAME(CLSID_MruLongList, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_IMruDataList }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMruDataList },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
} }
}, },
{ {
ID_NAME(CLSID_MruPidlList), ID_NAME(CLSID_MruPidlList, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_IMruPidlList }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMruPidlList },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
} }
}, },
{ {
ID_NAME(CLSID_SH_FavBand), ID_NAME(CLSID_SH_FavBand, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ -0x30, &IID_IDeskBand }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand },
{ -0x30, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow },
{ -0x30, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ -0x2c, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
{ -0x24, &IID_IInputObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject },
{ -0x20, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ -0x20, &IID_IPersist }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist },
{ -0x1c, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ -0x18, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider },
{ 0x0, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IBandNavigate }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandNavigate },
{ 0x8, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler },
{ 0xc, &IID_INamespaceProxy }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_INamespaceProxy },
} }
}, },
{ {
ID_NAME(CLSID_SH_HistBand), ID_NAME(CLSID_SH_HistBand, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ -0xb4, &IID_IDeskBand }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand },
{ -0xb4, &IID_IDockingWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow },
{ -0xb4, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ -0xb0, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
{ -0xa8, &IID_IInputObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject },
{ -0xa4, &IID_IPersistStream }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ -0xa4, &IID_IPersist }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist },
{ -0xa0, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ -0x9c, &IID_IServiceProvider }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider },
{ -0x84, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu },
{ -0x80, &IID_IBandNavigate }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandNavigate },
{ -0x7c, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler },
{ -0x78, &IID_INamespaceProxy }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_INamespaceProxy },
{ 0x0, &IID_IShellFolderSearchableCallback }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolderSearchableCallback },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
} }
}, },
{ {
ID_NAME(CLSID_SearchAssistantOC), ID_NAME(CLSID_SearchAssistantOC, NTDDI_MIN, NTDDI_WS03SP4),
{ {
{ 0x0, &IID_ISearchAssistantOC3 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC3 },
{ 0x0, &IID_ISearchAssistantOC }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC },
{ 0x0, &IID_IDispatch }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IProvideClassInfo2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo2 },
{ 0x4, &IID_IProvideClassInfo }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo },
{ 0x8, &IID_IQuickActivate }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IQuickActivate },
{ 0xc, &IID_IOleControl }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControl },
{ 0x10, &IID_IOleObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleObject },
{ 0x14, &IID_IOleInPlaceActiveObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceActiveObject },
{ 0x18, &IID_IViewObjectEx }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObjectEx },
{ 0x18, &IID_IViewObject2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject2 },
{ 0x18, &IID_IViewObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject },
{ 0x1c, &IID_IOleInPlaceObjectWindowless }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObjectWindowless },
{ 0x1c, &IID_IOleInPlaceObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObject },
{ 0x1c, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ 0x20, &IID_IDataObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDataObject },
{ 0x30, &IID_IConnectionPointContainer }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IConnectionPointContainer },
{ 0x34, &IID_IObjectSafety }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectSafety },
{ 0x3c, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ 0x40, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
} }
}, },
{ {
ID_NAME(CLSID_SearchBand), ID_NAME(CLSID_SearchBand, NTDDI_MIN, NTDDI_WIN7SP1),
{ {
{ 0x0, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IContextMenu },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IUnknown },
{ 0x4, &IID_IShellExtInit }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellExtInit },
{ 0x8, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistPropertyBag },
{ 0x8, &IID_IPersist }, { 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 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC3 },
{ 0x0, &IID_ISearchAssistantOC }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC },
{ 0x0, &IID_IDispatch }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ 0x4, &IID_IProvideClassInfo2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo2 },
{ 0x4, &IID_IProvideClassInfo }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo },
{ 0x8, &IID_IQuickActivate }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IQuickActivate },
{ 0xc, &IID_IOleControl }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControl },
{ 0x10, &IID_IOleObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleObject },
{ 0x14, &IID_IOleInPlaceActiveObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceActiveObject },
{ 0x18, &IID_IViewObjectEx }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObjectEx },
{ 0x18, &IID_IViewObject2 }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject2 },
{ 0x18, &IID_IViewObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject },
{ 0x1c, &IID_IOleInPlaceObjectWindowless }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObjectWindowless },
{ 0x1c, &IID_IOleInPlaceObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObject },
{ 0x1c, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ 0x20, &IID_IDataObject }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDataObject },
{ 0x30, &IID_IConnectionPointContainer }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IConnectionPointContainer },
{ 0x34, &IID_IObjectSafety }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectSafety },
{ 0x3c, &IID_IOleCommandTarget }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ 0x40, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
} }
}, },
{ {
ID_NAME(CLSID_ShellShellNameSpace), ID_NAME(CLSID_ShellShellNameSpace, NTDDI_MIN, NTDDI_VISTASP4),
{ {
{ 0x0, &IID_IShellNameSpace }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellChangeNotify },
{ 0x0, &IID_IShellFavoritesNameSpace }, { NTDDI_MIN, NTDDI_WS03SP4, &IID_ISpecifyPropertyPages },
{ 0x0, &IID_IDispatch },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellNameSpace },
{ 0x4, &IID_IProvideClassInfo2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFavoritesNameSpace },
{ 0x4, &IID_IProvideClassInfo }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch },
{ 0x8, &IID_IPersistStreamInit }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ 0xc, &IID_IPersistPropertyBag }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IProvideClassInfo2 },
{ 0x10, &IID_IQuickActivate }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IProvideClassInfo },
{ 0x14, &IID_IOleControl }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit },
{ 0x18, &IID_IOleObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag },
{ 0x1c, &IID_IOleInPlaceActiveObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IQuickActivate },
{ 0x20, &IID_IViewObjectEx }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleControl },
{ 0x20, &IID_IViewObject2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleObject },
{ 0x20, &IID_IViewObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceActiveObject },
{ 0x24, &IID_IOleInPlaceObjectWindowless }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObjectEx },
{ 0x24, &IID_IOleInPlaceObject }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObject2 },
{ 0x24, &IID_IOleWindow }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObject },
{ 0x28, &IID_ISpecifyPropertyPages }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceObjectWindowless },
{ 0x38, &IID_IConnectionPointContainer }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceObject },
{ 0x3c, &IID_IShellChangeNotify }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ 0x40, &IID_IDropTarget }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IConnectionPointContainer },
{ 0xb4, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDropTarget },
{ 0xbc, &IID_INSCTree2 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ 0xbc, &IID_INSCTree }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_INSCTree2 },
{ 0xc0, &IID_IWinEventHandler }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_INSCTree },
{ 0xc4, &IID_IShellBrowser }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler },
{ 0xc8, &IID_IFolderFilterSite }, { 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 }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_ITaskbarList2 },
{ 0x0, &IID_ITaskbarList }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_ITaskbarList },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
} }
}, },
{ {
ID_NAME(CLSID_AttachmentServices ), ID_NAME(CLSID_AttachmentServices, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_IAttachmentExecute }, { NTDDI_MIN, NTDDI_MAX, &IID_IAttachmentExecute },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
} }
}, },
}; };
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(shdocvw) START_TEST(shdocvw)
{ {
TestClasses(L"shdocvw", ExpectedInterfaces, ExpectedInterfaceCount); TestClasses(L"shdocvw", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
} }

File diff suppressed because it is too large Load Diff

View File

@@ -4,26 +4,34 @@
extern void func_browseui(void); extern void func_browseui(void);
extern void func_certmgr(void); extern void func_certmgr(void);
extern void func_combase(void);
extern void func_explorerframe(void);
extern void func_ieframe(void); extern void func_ieframe(void);
extern void func_interfaces(void); extern void func_interfaces(void);
extern void func_netcfgx(void); extern void func_netcfgx(void);
extern void func_netshell(void); extern void func_netshell(void);
extern void func_ole32(void); extern void func_ole32(void);
extern void func_prnfldr(void);
extern void func_shdocvw(void); extern void func_shdocvw(void);
extern void func_shell32(void); extern void func_shell32(void);
extern void func_windows_storage(void);
extern void func_zipfldr(void); extern void func_zipfldr(void);
const struct test winetest_testlist[] = const struct test winetest_testlist[] =
{ {
{ "browseui", func_browseui }, { "browseui", func_browseui },
{ "certmgr", func_certmgr }, { "certmgr", func_certmgr },
{ "combase", func_combase },
{ "explorerframe", func_explorerframe },
{ "ieframe", func_ieframe }, { "ieframe", func_ieframe },
{ "interfaces", func_interfaces }, { "interfaces", func_interfaces },
{ "netcfgx", func_netcfgx }, { "netcfgx", func_netcfgx },
{ "netshell", func_netshell }, { "netshell", func_netshell },
{ "ole32", func_ole32 }, { "ole32", func_ole32 },
{ "prnfldr", func_prnfldr },
{ "shdocvw", func_shdocvw }, { "shdocvw", func_shdocvw },
{ "shell32", func_shell32 }, { "shell32", func_shell32 },
{ "windows_storage", func_windows_storage },
{ "zipfldr", func_zipfldr }, { "zipfldr", func_zipfldr },
{ 0, 0 } { 0, 0 }

View File

@@ -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 <carl.bialorucki@reactos.org>
*/
#include "com_apitest.h"
#define NDEBUG
#include <debug.h>
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);
}

View File

@@ -10,101 +10,76 @@
#define NDEBUG #define NDEBUG
#include <debug.h> #include <debug.h>
/*
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[] = static const CLASS_AND_INTERFACES ExpectedInterfaces[] =
{ {
{ {
ID_NAME(CLSID_ZipFolderStorageHandler), ID_NAME(CLSID_ZipFolderStorageHandler, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_IShellFolder2 }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFile },
{ 0x0, &IID_IShellFolder },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 },
{ 0x4, &IID_IStorage }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder },
{ 0x8, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0xc, &IID_IShellExtInit }, { NTDDI_MIN, NTDDI_MAX, &IID_IStorage },
#if _WIN32_WINNT < 0x0a00 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu },
{ 0x10, &IID_IPersistFile }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit },
{ 0x14, &IID_IPersistFolder2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 },
{ 0x14, &IID_IPersistFolder }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder },
{ 0x14, &IID_IPersist }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
#else
{ 0x10, &IID_IPersistFolder2 }, { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType},
{ 0x10, &IID_IPersistFolder },
{ 0x10, &IID_IPersist },
{ 0x14, &IID_IFolderType },
#endif
}, },
L"Apartment"
}, },
{ {
ID_NAME(CLSID_ZipFolderSendTo), ID_NAME(CLSID_ZipFolderSendTo, NTDDI_MIN, NTDDI_MAX),
{ {
#if _WIN32_WINNT >= 0x0a00 { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget },
{ -0x8, &IID_IObjectWithSite }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
#endif { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile },
{ 0x0, &IID_IDropTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IPersistFile }, { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite },
{ 0x4, &IID_IPersist },
}, },
L"Apartment"
}, },
{ {
ID_NAME(CLSID_ZipFolderContextMenu), ID_NAME(CLSID_ZipFolderContextMenu, NTDDI_MIN, NTDDI_MAX),
{ {
{ 0x0, &IID_IShellFolder2 }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFile },
{ 0x0, &IID_IShellFolder },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 },
{ 0x4, &IID_IStorage }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder },
{ 0x8, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0xc, &IID_IShellExtInit }, { NTDDI_MIN, NTDDI_MAX, &IID_IStorage },
#if _WIN32_WINNT < 0x0a00 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu },
{ 0x10, &IID_IPersistFile }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit },
{ 0x14, &IID_IPersistFolder2 }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 },
{ 0x14, &IID_IPersistFolder }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder },
{ 0x14, &IID_IPersist }, { NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
#else
{ 0x10, &IID_IPersistFolder2 }, { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType},
{ 0x10, &IID_IPersistFolder },
{ 0x10, &IID_IPersist },
{ 0x14, &IID_IFolderType },
#endif
}, },
L"Apartment"
}, },
{ {
ID_NAME(CLSID_ZipFolderRightDragHandler), ID_NAME(CLSID_ZipFolderRightDragHandler, NTDDI_MIN, NTDDI_MAX),
{ {
{ -0x4, &IID_IContextMenu }, { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu },
{ 0x0, &IID_IShellExtInit }, { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit },
{ 0x0, &IID_IUnknown }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
}, },
L"Apartment"
}, },
{ {
ID_NAME(CLSID_ZipFolderDropHandler), ID_NAME(CLSID_ZipFolderDropHandler, NTDDI_MIN, NTDDI_MAX),
{ {
#if _WIN32_WINNT < 0x0a00 { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget },
{ 0x0, &IID_IDropTarget }, { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IPersistFile }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFile },
{ 0x4, &IID_IPersist }, { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersist },
#else
{ -0x4, &IID_IDropTarget },
{ 0x0, &IID_IUnknown },
#endif
}, },
L"Apartment"
}, },
}; };
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(zipfldr) START_TEST(zipfldr)
{ {
TestClasses(L"zipfldr", ExpectedInterfaces, ExpectedInterfaceCount); TestClasses(L"zipfldr", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
} }

View File

@@ -110,6 +110,7 @@ Abstract:
#define NTDDI_WS08SP3 NTDDI_WIN6SP3 #define NTDDI_WS08SP3 NTDDI_WIN6SP3
#define NTDDI_WS08SP4 NTDDI_WIN6SP4 #define NTDDI_WS08SP4 NTDDI_WIN6SP4
#define NTDDI_WIN7 0x06010000 // Windows 7 #define NTDDI_WIN7 0x06010000 // Windows 7
#define NTDDI_WIN7SP1 0x06010100
#define NTDDI_WIN8 0x06020000 // Windows 8 #define NTDDI_WIN8 0x06020000 // Windows 8
#define NTDDI_WINBLUE 0x06030000 // Windows 8.1 #define NTDDI_WINBLUE 0x06030000 // Windows 8.1
#define NTDDI_WINTHRESHOLD 0x0A000000 // Windows 10.0.10240 / 1507 / Threshold 1 #define NTDDI_WINTHRESHOLD 0x0A000000 // Windows 10.0.10240 / 1507 / Threshold 1

View File

@@ -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_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_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_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(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); 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_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_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_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_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_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); DEFINE_GUID(IID_ITaskConditionCombiner, 0xD65AC459, 0x1187, 0x4C71, 0x88, 0x82, 0xDE, 0x09, 0x47, 0x23, 0x95, 0x29);