[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
certmgr.c
com_apitest.c
combase.c
explorerframe.c
ieframe.c
netcfgx.c
netshell.c
ole32.c
prnfldr.c
shdocvw.c
shell32.c
windows_storage.c
zipfldr.c)
list(APPEND PCH_SKIP_SOURCE

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -8,14 +8,6 @@
#ifndef _COM_APITEST_H_
#define _COM_APITEST_H_
/* Define this if you're adding new classes - the test will auto-generate the
* interface table entries for you ;) */
//#define GENERATE_TABLE_ENTRIES
/* Define this to make wrong interface offsets count as test failures...
* we usually don't want to be that strict */
//#define FAIL_WRONG_OFFSET
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
@@ -41,23 +33,30 @@
#include <htiface.h>
#include <mshtml.h>
#include <initguid.h>
#include <apitest.h>
typedef IUnknown *PUNKNOWN;
/* Uncomment this if you want to log the offsets of COM interfaces. */
// #define LOG_COM_INTERFACE_OFFSETS
typedef struct _CLASS_AND_INTERFACES
{
const CLSID *clsid;
PCSTR name;
ULONG MinClassNTDDIVersion;
ULONG MaxClassNTDDIVersion;
struct
{
LONG offset;
ULONG MinInterfaceNTDDIVersion;
ULONG MaxInterfaceNTDDIVersion;
const IID *iid;
} ifaces[80];
PCWSTR ThreadingModel;
} CLASS_AND_INTERFACES;
typedef const CLASS_AND_INTERFACES *PCCLASS_AND_INTERFACES;
#define ID_NAME(c) &c, #c
#define ID_NAME(c, minc, maxc) &c, #c, minc, maxc
VOID
TestClasses(
@@ -65,9 +64,14 @@ TestClasses(
_In_ PCCLASS_AND_INTERFACES ExpectedInterfaces,
_In_ INT ExpectedInterfaceCount);
/* Indicate that the interface is implemented in another (probably aggregate) object,
* so its offset varies and is "far away" */
#define FARAWY (-65535)
VOID
TestClassesEx(
_In_ PCWSTR ModuleName,
_In_ PCCLASS_AND_INTERFACES ExpectedInterfaces,
_In_ INT ExpectedInterfaceCount,
_In_ ULONG MinimumNTDDIVersion,
_In_ ULONG MaximumNTDDIVersion,
_In_ BOOLEAN IsWinRT);
// TODO: fix our headers... we really shouldn't need these here
DEFINE_GUID(CLSID_AugmentedShellFolder, 0x91ea3f8b, 0xc99b, 0x11d0, 0x98, 0x15, 0x00, 0xc0, 0x4f, 0xd9, 0x19, 0x72);
@@ -219,7 +223,7 @@ DEFINE_GUID(IID_IImageList_mmc, 0x43136eb8, 0xd36c, 0x11cf, 0xad, 0xb
DEFINE_GUID(IID_IConsoleVerb, 0xe49f7a60, 0x74af, 0x11d0, 0xa2, 0x86, 0x00, 0xc0, 0x4f, 0xd8, 0xfe, 0x93);
DEFINE_GUID(IID_ISnapInAbout, 0x1245208c, 0xa151, 0x11d0, 0xa7, 0xd7, 0x00, 0xc0, 0x4f, 0xd9, 0x09, 0xdd);
DEFINE_GUID(IID_INetConnectionCommonUi2, 0xC08956A6, 0x1CD3, 0x11D1, 0xB1, 0xC5, 0x00, 0x80, 0x5F, 0xC1, 0x27, 0x0E); // Same as IID_INetLanConnectionUiInfo
#endif /* _COM_APITEST_H_ */

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

View File

@@ -13,19 +13,21 @@
static const CLASS_AND_INTERFACES ExpectedInterfaces[] =
{
{
ID_NAME(CLSID_CNetCfg),
ID_NAME(CLSID_CNetCfg, NTDDI_MIN, NTDDI_MAX),
{
{ 0x0, &IID_INetCfg },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_INetCfgLock },
{ 0x10, &IID_INetCfgPnpReconfigCallback },
{ NTDDI_MIN, NTDDI_MAX, &IID_INetCfg },
{ NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_MAX, &IID_INetCfgLock },
{ NTDDI_MIN, NTDDI_MAX, &IID_INetCfgPnpReconfigCallback },
},
L"Both"
},
};
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(netcfgx)
{
TestClasses(L"netcfgx", ExpectedInterfaces, ExpectedInterfaceCount);
if (GetNTVersion() < _WIN32_WINNT_WIN10)
TestClasses(L"netcfgx", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
else
TestClasses(L"NetSetupShim", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
}

View File

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

View File

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

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[] =
{
/* CLSID_AdminFolderShortcut has two entries here because the threading model
* changed between Windows versions. */
{
ID_NAME(CLSID_AdminFolderShortcut),
ID_NAME(CLSID_AdminFolderShortcut, NTDDI_MIN, NTDDI_VISTASP4),
{
{ 0x0, &IID_IShellFolder2 },
{ 0x0, &IID_IShellFolder },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IPersistFolder3 },
{ 0x4, &IID_IPersistFolder2 },
{ 0x4, &IID_IPersistFolder },
{ 0x4, &IID_IPersist },
{ 0x8, &IID_IShellLinkA },
{ 0xc, &IID_IShellLinkW },
{ 0x10, &IID_IPersistFile },
{ 0x14, &IID_IExtractIconW },
{ 0x18, &IID_IQueryInfo },
{ 0x20, &IID_IPersistStream },
{ 0x20, &IID_IPersistStreamInit },
{ 0x24, &IID_IPersistPropertyBag },
{ 0x28, &IID_IBrowserFrameOptions },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellLinkA },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellLinkW },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFile },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IExtractIconW },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IQueryInfo },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStreamInit },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IBrowserFrameOptions },
{ NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 },
{ NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder },
{ NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_IAliasRegistrationCallback },
{ NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IShellIcon },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IShellIconOverlay },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IStorage },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IItemNameLimits },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IRemoteComputer },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject },
}
},
{
ID_NAME(CLSID_ExplorerBand),
ID_NAME(CLSID_AdminFolderShortcut, NTDDI_WIN7, NTDDI_MAX),
{
{ -0xb4, &IID_IDeskBand },
{ -0xb4, &IID_IDockingWindow },
{ -0xb4, &IID_IOleWindow },
{ -0xb0, &IID_IObjectWithSite },
{ -0xa8, &IID_IInputObject },
{ -0xa4, &IID_IPersistStream },
{ -0xa4, &IID_IPersist },
{ -0xa0, &IID_IOleCommandTarget },
{ -0x9c, &IID_IServiceProvider },
{ -0x84, &IID_IContextMenu },
{ -0x80, &IID_IBandNavigate },
{ -0x7c, &IID_IWinEventHandler },
{ -0x78, &IID_INamespaceProxy },
{ 0x0, &IID_IDispatch },
{ 0x0, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 },
{ NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder },
{ NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersist },
{ NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag },
{ NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IShellIcon },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IShellIconOverlay },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IStorage },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IItemNameLimits },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IRemoteComputer },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType },
{ NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject },
{ NTDDI_WIN7, NTDDI_MAX, &IID_IParentAndItem },
},
L"Both"
},
{
ID_NAME(CLSID_ExplorerBand, NTDDI_MIN, NTDDI_WS03SP4),
{
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandNavigate },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_INamespaceProxy },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
}
},
{
ID_NAME(CLSID_FontsFolderShortcut),
ID_NAME(CLSID_FontsFolderShortcut, NTDDI_MIN, NTDDI_VISTASP4),
{
{ 0x0, &IID_IShellFolder2 },
{ 0x0, &IID_IShellFolder },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IPersistFolder3 },
{ 0x4, &IID_IPersistFolder2 },
{ 0x4, &IID_IPersistFolder },
{ 0x4, &IID_IPersist },
{ 0x8, &IID_IShellLinkA },
{ 0xc, &IID_IShellLinkW },
{ 0x10, &IID_IPersistFile },
{ 0x14, &IID_IExtractIconW },
{ 0x18, &IID_IQueryInfo },
{ 0x20, &IID_IPersistStream },
{ 0x20, &IID_IPersistStreamInit },
{ 0x24, &IID_IPersistPropertyBag },
{ 0x28, &IID_IBrowserFrameOptions },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder2 },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder3 },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder2 },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkA },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkW },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFile },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractIconW },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IQueryInfo },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IBrowserFrameOptions },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellIconOverlay },
}
},
#if 0 // E_OUTOFMEMORY?
{
ID_NAME(CLSID_ShellDispatchInproc),
ID_NAME(CLSID_ShellDispatchInproc, NTDDI_MIN, NTDDI_WS03SP4),
{
{ 0x0, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
}
},
#endif
{
ID_NAME(CLSID_MruLongList),
ID_NAME(CLSID_MruLongList, NTDDI_MIN, NTDDI_WS03SP4),
{
{ 0x0, &IID_IMruDataList },
{ 0x0, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IMruDataList },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
}
},
{
ID_NAME(CLSID_MruPidlList),
ID_NAME(CLSID_MruPidlList, NTDDI_MIN, NTDDI_WS03SP4),
{
{ 0x0, &IID_IMruPidlList },
{ 0x0, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IMruPidlList },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
}
},
{
ID_NAME(CLSID_SH_FavBand),
ID_NAME(CLSID_SH_FavBand, NTDDI_MIN, NTDDI_WS03SP4),
{
{ -0x30, &IID_IDeskBand },
{ -0x30, &IID_IDockingWindow },
{ -0x30, &IID_IOleWindow },
{ -0x2c, &IID_IObjectWithSite },
{ -0x24, &IID_IInputObject },
{ -0x20, &IID_IPersistStream },
{ -0x20, &IID_IPersist },
{ -0x1c, &IID_IOleCommandTarget },
{ -0x18, &IID_IServiceProvider },
{ 0x0, &IID_IContextMenu },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IBandNavigate },
{ 0x8, &IID_IWinEventHandler },
{ 0xc, &IID_INamespaceProxy },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandNavigate },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_INamespaceProxy },
}
},
{
ID_NAME(CLSID_SH_HistBand),
ID_NAME(CLSID_SH_HistBand, NTDDI_MIN, NTDDI_WS03SP4),
{
{ -0xb4, &IID_IDeskBand },
{ -0xb4, &IID_IDockingWindow },
{ -0xb4, &IID_IOleWindow },
{ -0xb0, &IID_IObjectWithSite },
{ -0xa8, &IID_IInputObject },
{ -0xa4, &IID_IPersistStream },
{ -0xa4, &IID_IPersist },
{ -0xa0, &IID_IOleCommandTarget },
{ -0x9c, &IID_IServiceProvider },
{ -0x84, &IID_IContextMenu },
{ -0x80, &IID_IBandNavigate },
{ -0x7c, &IID_IWinEventHandler },
{ -0x78, &IID_INamespaceProxy },
{ 0x0, &IID_IShellFolderSearchableCallback },
{ 0x0, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenu },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IBandNavigate },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_INamespaceProxy },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolderSearchableCallback },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
}
},
{
ID_NAME(CLSID_SearchAssistantOC),
ID_NAME(CLSID_SearchAssistantOC, NTDDI_MIN, NTDDI_WS03SP4),
{
{ 0x0, &IID_ISearchAssistantOC3 },
{ 0x0, &IID_ISearchAssistantOC },
{ 0x0, &IID_IDispatch },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IProvideClassInfo2 },
{ 0x4, &IID_IProvideClassInfo },
{ 0x8, &IID_IQuickActivate },
{ 0xc, &IID_IOleControl },
{ 0x10, &IID_IOleObject },
{ 0x14, &IID_IOleInPlaceActiveObject },
{ 0x18, &IID_IViewObjectEx },
{ 0x18, &IID_IViewObject2 },
{ 0x18, &IID_IViewObject },
{ 0x1c, &IID_IOleInPlaceObjectWindowless },
{ 0x1c, &IID_IOleInPlaceObject },
{ 0x1c, &IID_IOleWindow },
{ 0x20, &IID_IDataObject },
{ 0x30, &IID_IConnectionPointContainer },
{ 0x34, &IID_IObjectSafety },
{ 0x3c, &IID_IOleCommandTarget },
{ 0x40, &IID_IObjectWithSite },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC3 },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo2 },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IQuickActivate },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControl },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceActiveObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObjectEx },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject2 },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObjectWindowless },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDataObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IConnectionPointContainer },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectSafety },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
}
},
{
ID_NAME(CLSID_SearchBand),
ID_NAME(CLSID_SearchBand, NTDDI_MIN, NTDDI_WIN7SP1),
{
{ 0x0, &IID_IContextMenu },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IShellExtInit },
{ 0x8, &IID_IPersistPropertyBag },
{ 0x8, &IID_IPersist },
{ NTDDI_MIN, NTDDI_WIN7SP1, &IID_IContextMenu },
{ NTDDI_MIN, NTDDI_WIN7SP1, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellExtInit },
{ NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistPropertyBag },
{ NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersist },
{ NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IShellFolder },
}
},
{
ID_NAME(CLSID_ShellSearchAssistantOC),
ID_NAME(CLSID_ShellSearchAssistantOC, NTDDI_MIN, NTDDI_WS03SP4),
{
{ 0x0, &IID_ISearchAssistantOC3 },
{ 0x0, &IID_ISearchAssistantOC },
{ 0x0, &IID_IDispatch },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IProvideClassInfo2 },
{ 0x4, &IID_IProvideClassInfo },
{ 0x8, &IID_IQuickActivate },
{ 0xc, &IID_IOleControl },
{ 0x10, &IID_IOleObject },
{ 0x14, &IID_IOleInPlaceActiveObject },
{ 0x18, &IID_IViewObjectEx },
{ 0x18, &IID_IViewObject2 },
{ 0x18, &IID_IViewObject },
{ 0x1c, &IID_IOleInPlaceObjectWindowless },
{ 0x1c, &IID_IOleInPlaceObject },
{ 0x1c, &IID_IOleWindow },
{ 0x20, &IID_IDataObject },
{ 0x30, &IID_IConnectionPointContainer },
{ 0x34, &IID_IObjectSafety },
{ 0x3c, &IID_IOleCommandTarget },
{ 0x40, &IID_IObjectWithSite },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC3 },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_ISearchAssistantOC },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo2 },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IProvideClassInfo },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IQuickActivate },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControl },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceActiveObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObjectEx },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject2 },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObjectWindowless },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IDataObject },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IConnectionPointContainer },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectSafety },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite },
}
},
{
ID_NAME(CLSID_ShellShellNameSpace),
ID_NAME(CLSID_ShellShellNameSpace, NTDDI_MIN, NTDDI_VISTASP4),
{
{ 0x0, &IID_IShellNameSpace },
{ 0x0, &IID_IShellFavoritesNameSpace },
{ 0x0, &IID_IDispatch },
{ 0x0, &IID_IUnknown },
{ 0x4, &IID_IProvideClassInfo2 },
{ 0x4, &IID_IProvideClassInfo },
{ 0x8, &IID_IPersistStreamInit },
{ 0xc, &IID_IPersistPropertyBag },
{ 0x10, &IID_IQuickActivate },
{ 0x14, &IID_IOleControl },
{ 0x18, &IID_IOleObject },
{ 0x1c, &IID_IOleInPlaceActiveObject },
{ 0x20, &IID_IViewObjectEx },
{ 0x20, &IID_IViewObject2 },
{ 0x20, &IID_IViewObject },
{ 0x24, &IID_IOleInPlaceObjectWindowless },
{ 0x24, &IID_IOleInPlaceObject },
{ 0x24, &IID_IOleWindow },
{ 0x28, &IID_ISpecifyPropertyPages },
{ 0x38, &IID_IConnectionPointContainer },
{ 0x3c, &IID_IShellChangeNotify },
{ 0x40, &IID_IDropTarget },
{ 0xb4, &IID_IObjectWithSite },
{ 0xbc, &IID_INSCTree2 },
{ 0xbc, &IID_INSCTree },
{ 0xc0, &IID_IWinEventHandler },
{ 0xc4, &IID_IShellBrowser },
{ 0xc8, &IID_IFolderFilterSite },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellChangeNotify },
{ NTDDI_MIN, NTDDI_WS03SP4, &IID_ISpecifyPropertyPages },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellNameSpace },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFavoritesNameSpace },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IDispatch },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IProvideClassInfo2 },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IProvideClassInfo },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStreamInit },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IQuickActivate },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleControl },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleObject },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceActiveObject },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObjectEx },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObject2 },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IViewObject },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceObjectWindowless },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleInPlaceObject },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleWindow },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IConnectionPointContainer },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IDropTarget },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_INSCTree2 },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_INSCTree },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IWinEventHandler },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellBrowser },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IFolderFilterSite },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_INewMenuClient },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_IServiceProvider },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_INameSpaceTreeControl },
{ NTDDI_VISTA, NTDDI_VISTASP4, &IID_IVisualProperties },
}
},
{
ID_NAME(CLSID_TaskbarList),
ID_NAME(CLSID_TaskbarList, NTDDI_MIN, NTDDI_VISTASP4),
{
{ 0x0, &IID_ITaskbarList2 },
{ 0x0, &IID_ITaskbarList },
{ 0x0, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_ITaskbarList2 },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_ITaskbarList },
{ NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown },
}
},
{
ID_NAME(CLSID_AttachmentServices ),
ID_NAME(CLSID_AttachmentServices, NTDDI_MIN, NTDDI_MAX),
{
{ 0x0, &IID_IAttachmentExecute },
{ 0x0, &IID_IUnknown },
{ NTDDI_MIN, NTDDI_MAX, &IID_IAttachmentExecute },
{ NTDDI_MIN, NTDDI_MAX, &IID_IUnknown },
}
},
};
static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
START_TEST(shdocvw)
{
TestClasses(L"shdocvw", ExpectedInterfaces, ExpectedInterfaceCount);
TestClasses(L"shdocvw", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces));
}

File diff suppressed because it is too large Load Diff

View File

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

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

View File

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

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_IWinEventHandler, 0xEA5F2D61, 0xE008, 0x11CF, 0x99, 0xCB, 0x00, 0xC0, 0x4F, 0xD6, 0x44, 0x97);
DEFINE_GUID(IID_IShellMenuAcc, 0xFAF6FE96, 0xCE5E, 0x11D1, 0x83, 0x71, 0x00, 0xC0, 0x4F, 0xD9, 0x18, 0xD0);
DEFINE_GUID(IID_IShellBrowserService, 0x1307EE17, 0xEA83, 0x49EB, 0x96, 0xB2, 0x3A, 0x28, 0xE2, 0xD7, 0x04, 0x8A);
DEFINE_GUID(IID_IShellBrowserService_XP, 0x1307EE17, 0xEA83, 0x49EB, 0x96, 0xB2, 0x3A, 0x28, 0xE2, 0xD7, 0x04, 0x8A);
DEFINE_GUID(IID_IShellFolderView, 0x37A378C0, 0xF82D, 0x11CE, 0xAE, 0x65, 0x08, 0x00, 0x2B, 0x2E, 0x12, 0x62);
DEFINE_GUID(SID_SProxyBrowser, 0x20C46561, 0x8491, 0x11CF, 0x96, 0x0C, 0x00, 0x80, 0xC7, 0xF4, 0xEE, 0x85);
@@ -187,7 +187,8 @@ DEFINE_GUID(IID_IRegItemFolder, 0x81075FEB, 0x0A85, 0x439B, 0xB2, 0x5
DEFINE_GUID(IID_IRootAndRelativeParsingFolder,0x52B14A6A,0x58F1,0x45BD,0xB0, 0x0A, 0xDC, 0xE7, 0x40, 0x3D, 0x95, 0x1E);
DEFINE_GUID(IID_IScope, 0xDD8B42D6, 0x8162, 0x44B0, 0x8C, 0x27, 0x14, 0x71, 0x33, 0x18, 0xA0, 0xC6);
DEFINE_GUID(IID_IScopeItem, 0x0A4E5B7D, 0x99E1, 0x4700, 0x93, 0xB1, 0x89, 0x52, 0x5E, 0xAD, 0xD0, 0x90);
DEFINE_GUID(IID_IShellBrowserServce, 0xDFBC7E30, 0xF9E5, 0x455F, 0x88, 0xF8, 0xFA, 0x98, 0xC1, 0xE4, 0x94, 0xCA);
DEFINE_GUID(IID_IShellBrowserService4, 0xF5A24314, 0x5B8B, 0x44FA, 0xBC, 0x2E, 0x31, 0x28, 0x55, 0x44, 0xB5, 0x20); /* Vista only */
DEFINE_GUID(IID_IShellBrowserService, 0xDFBC7E30, 0xF9E5, 0x455F, 0x88, 0xF8, 0xFA, 0x98, 0xC1, 0xE4, 0x94, 0xCA); /* Windows 7, 8.1, 10 1607 */
DEFINE_GUID(IID_IShellFolder3, 0x2EC06C64, 0x1296, 0x4F53, 0x89, 0xE5, 0xEC, 0xCE, 0x4E, 0xFC, 0x21, 0x89);
DEFINE_GUID(IID_ITaskCondition, 0x8419D6C6, 0x78C6, 0x4AAF, 0xB4, 0xEB, 0x29, 0x1B, 0x43, 0x37, 0x4A, 0xED);
DEFINE_GUID(IID_ITaskConditionCombiner, 0xD65AC459, 0x1187, 0x4C71, 0x88, 0x82, 0xDE, 0x09, 0x47, 0x23, 0x95, 0x29);