Reactos
at master 1033 lines 55 kB view raw
1/* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPLv2+ - See COPYING in the top level directory 4 * PURPOSE: COM interface test for shell32 classes 5 * PROGRAMMER: Thomas Faber <thomas.faber@reactos.org> 6 * Carl Bialorucki <carl.bialorucki@reactos.org> 7 */ 8 9#include "com_apitest.h" 10 11#define NDEBUG 12#include <debug.h> 13 14static const CLASS_AND_INTERFACES ExpectedInterfaces[] = 15{ 16 { 17 ID_NAME(CLSID_ACLCustomMRU, NTDDI_WIN7, NTDDI_MAX), 18 { 19 { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, 20 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 21 { NTDDI_WIN7, NTDDI_MAX, &IID_IACList }, 22 { NTDDI_WIN7, NTDDI_MAX, &IID_IACLCustomMRU }, 23 }, 24 }, 25 { 26 ID_NAME(CLSID_ACLHistory, NTDDI_WIN7, NTDDI_MAX), 27 { 28 { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, 29 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 30 }, 31 }, 32 { 33 ID_NAME(CLSID_ACLMRU, NTDDI_WIN7, NTDDI_MAX), 34 { 35 { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, 36 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 37 { NTDDI_WIN7, NTDDI_MAX, &IID_IACList }, 38 { NTDDI_WIN7, NTDDI_MAX, &IID_IACLCustomMRU }, 39 }, 40 }, 41 { 42 ID_NAME(CLSID_ACLMulti, NTDDI_WIN7, NTDDI_MAX), 43 { 44 { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, 45 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 46 { NTDDI_WIN7, NTDDI_MAX, &IID_IObjMgr }, 47 { NTDDI_WIN7, NTDDI_MAX, &IID_IACList }, 48 { NTDDI_WIN7, NTDDI_MAX, &IID_IPersist }, 49 { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistFolder }, 50 } 51 }, 52 { 53 ID_NAME(CLSID_ACListISF, NTDDI_WIN7, NTDDI_MAX), 54 { 55 { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, 56 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 57 { NTDDI_WIN7, NTDDI_MAX, &IID_IACList2 }, 58 { NTDDI_WIN7, NTDDI_MAX, &IID_IACList }, 59 { NTDDI_WIN7, NTDDI_MAX, &IID_ICurrentWorkingDirectory }, 60 { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistFolder }, 61 { NTDDI_WIN7, NTDDI_MAX, &IID_IPersistIDList }, 62 } 63 }, 64 { 65 ID_NAME(CLSID_ActiveDesktop, NTDDI_MIN, NTDDI_MAX), 66 { 67 { NTDDI_MIN, NTDDI_MAX, &IID_IActiveDesktop }, 68 { NTDDI_MIN, NTDDI_MAX, &IID_IActiveDesktopP }, 69 { NTDDI_MIN, NTDDI_MAX, &IID_IADesktopP2 }, 70 { NTDDI_MIN, NTDDI_MAX, &IID_IPropertyBag }, 71 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 72 } 73 }, 74 { 75 ID_NAME(CLSID_AutoComplete, NTDDI_WIN7, NTDDI_MAX), 76 { 77 { NTDDI_WIN7, NTDDI_MAX, &IID_IAutoComplete2 }, 78 { NTDDI_WIN7, NTDDI_MAX, &IID_IAutoComplete }, 79 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 80 { NTDDI_WIN7, NTDDI_MAX, &IID_IAutoCompleteDropDown }, 81 { NTDDI_WIN7, NTDDI_MAX, &IID_IEnumString }, 82 { NTDDI_WIN7, NTDDI_MAX, &IID_IAccessible }, 83 { NTDDI_WIN7, NTDDI_MAX, &IID_IDispatch }, 84 { NTDDI_WIN7, NTDDI_MAX, &IID_IShellService }, 85 } 86 }, 87 { 88 ID_NAME(CLSID_BackgroundTaskScheduler, NTDDI_WIN7, NTDDI_VISTASP4), 89 { 90 { NTDDI_WIN7, NTDDI_MAX, &IID_IShellTaskScheduler }, 91 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 92 { NTDDI_WIN7, NTDDI_MAX, &IID_IMarshal }, 93 } 94 }, 95 { 96 ID_NAME(CLSID_BandProxy, NTDDI_WIN7, NTDDI_MAX), 97 { 98 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 99 { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, 100 { NTDDI_WIN7, NTDDI_MAX, &IID_IServiceProvider }, 101 } 102 }, 103 { 104 ID_NAME(CLSID_CDBurn, NTDDI_MIN, NTDDI_MAX), 105 { 106 { NTDDI_MIN, NTDDI_WS03SP4, &IID_ICDBurnPriv }, 107 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDiscMasterProgressEvents }, 108 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDriveFolderExtOld }, 109 { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITransferAdviseSinkPriv }, 110 111 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IOleCommandTarget }, 112 113 { NTDDI_MIN, NTDDI_MAX, &IID_ICDBurn }, 114 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 115 { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, 116 { NTDDI_MIN, NTDDI_MAX, &IID_INamespaceWalkCB }, 117 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 118 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile }, 119 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, 120 { NTDDI_MIN, NTDDI_MAX, &IID_IQueryCancelAutoPlay }, 121 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 122 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 123 { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt }, 124 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 125 126 { NTDDI_VISTA, NTDDI_MAX, &IID_IDriveFolderExt }, 127 } 128 }, 129 { 130 ID_NAME(CLSID_ControlPanel, NTDDI_MIN, NTDDI_MAX), 131 { 132 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, 133 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, 134 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 135 { NTDDI_MIN, NTDDI_MAX, &IID_IShellIconOverlay }, 136 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, 137 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, 138 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 139 140 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IAliasRegistrationCallback }, 141 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IControlPanelEnumerator }, 142 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IRegItemCustomEnumerator }, 143 144 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ITransferProvider }, 145 146 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IRegItemFolder }, 147 148 { NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject }, 149 { NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB }, 150 { NTDDI_VISTA, NTDDI_MAX, &IID_IDelegateHostItemContainer }, 151 { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, 152 { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, 153 { NTDDI_VISTA, NTDDI_MAX, &IID_IRegItemCustomAttributes }, 154 155 { NTDDI_WIN7, NTDDI_MAX, &IID_IShellIcon }, 156 { NTDDI_WIN7, NTDDI_MAX, &IID_IStorage }, 157 } 158 }, 159 { 160 ID_NAME(CLSID_CopyToMenu, NTDDI_MIN, NTDDI_MAX), 161 { 162 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 }, 163 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 }, 164 165 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 166 { NTDDI_MIN, NTDDI_MAX, &IID_IFolderFilter }, 167 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 168 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 169 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 170 } 171 }, 172 { 173 ID_NAME(CLSID_CRegTreeOptions, NTDDI_WIN7, NTDDI_MAX), 174 { 175 { NTDDI_WIN7, NTDDI_WIN7SP1, &IID_IRegTreeOptions }, 176 177 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 178 { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, 179 } 180 }, 181 { 182 ID_NAME(CLSID_DeskMovr, NTDDI_MIN, NTDDI_WS03SP4), 183 { 184 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, 185 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskMovr }, 186 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleObject }, 187 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistPropertyBag }, 188 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControl }, 189 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceActiveObject }, 190 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, 191 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObject }, 192 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceObjectWindowless }, 193 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IQuickActivate }, 194 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObjectEx }, 195 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject2 }, 196 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IViewObject }, 197 } 198 }, 199 { 200 ID_NAME(CLSID_DragDropHelper, NTDDI_MIN, NTDDI_MAX), 201 { 202 { NTDDI_MIN, NTDDI_MAX, &IID_IDragSourceHelper }, 203 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 204 { NTDDI_MIN, NTDDI_MAX, &IID_IDropTargetHelper }, 205 } 206 }, 207 { 208 ID_NAME(CLSID_FadeTask, NTDDI_MIN, NTDDI_MAX), 209 { 210 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 211 } 212 }, 213 { 214 ID_NAME(CLSID_FileSearchBand, NTDDI_MIN, NTDDI_WS03SP4), 215 { 216 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, 217 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleClientSite }, 218 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleControlSite }, 219 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleInPlaceSite }, 220 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, 221 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, 222 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand }, 223 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, 224 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, 225 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IFileSearchBand }, 226 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDispatch }, 227 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, 228 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, 229 } 230 }, 231 { 232 ID_NAME(CLSID_FindFolder, NTDDI_MIN, NTDDI_WS03SP4), 233 { 234 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder2 }, 235 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder }, 236 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, 237 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIcon }, 238 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIconOverlay }, 239 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFolder2 }, 240 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFolder }, 241 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, 242 } 243 }, 244 { 245 ID_NAME(CLSID_FolderItem, NTDDI_MIN, NTDDI_MAX), 246 { 247 { NTDDI_MIN, NTDDI_MAX, &IID_FolderItem2 }, 248 { NTDDI_MIN, NTDDI_MAX, &IID_FolderItem }, 249 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 250 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 251 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, 252 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, 253 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 254 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, 255 { NTDDI_MIN, NTDDI_MAX, &IID_IParentAndItem }, 256 } 257 }, 258 { 259 ID_NAME(CLSID_FolderItemsFDF, NTDDI_MIN, NTDDI_MAX), 260 { 261 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IObjectSafety }, 262 263 { NTDDI_MIN, NTDDI_MAX, &IID_FolderItems3 }, 264 { NTDDI_MIN, NTDDI_MAX, &IID_FolderItems }, 265 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 266 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 267 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, 268 269 { NTDDI_VISTA, NTDDI_MAX, &IID_IPersist }, 270 } 271 }, 272 { 273 ID_NAME(CLSID_FolderShortcut, NTDDI_MIN, NTDDI_MAX), 274 { 275 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, 276 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, 277 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 278 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 }, 279 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, 280 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, 281 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 282 { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkA }, 283 { NTDDI_MIN, NTDDI_MAX, &IID_IShellLinkW }, 284 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFile }, 285 { NTDDI_MIN, NTDDI_MAX, &IID_IExtractIconW }, 286 { NTDDI_MIN, NTDDI_MAX, &IID_IQueryInfo }, 287 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, 288 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, 289 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistPropertyBag }, 290 { NTDDI_MIN, NTDDI_MAX, &IID_IBrowserFrameOptions }, 291 292 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot }, 293 { NTDDI_VISTA, NTDDI_MAX, &IID_IShellIconOverlay }, 294 } 295 }, 296 { 297 ID_NAME(CLSID_FolderViewHost, NTDDI_MIN, NTDDI_MAX), 298 { 299 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IFolderView }, 300 301 { NTDDI_MIN, NTDDI_MAX, &IID_IFolderViewHost }, 302 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 303 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 304 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 305 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 306 307 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellBrowserService4 }, 308 309 { NTDDI_VISTA, NTDDI_MAX, &IID_IShellBrowser }, 310 { NTDDI_VISTA, NTDDI_MAX, &IID_IExplorerBrowser }, 311 { NTDDI_VISTA, NTDDI_MAX, &IID_ICommDlgBrowser3 }, 312 { NTDDI_VISTA, NTDDI_MAX, &IID_ICommDlgBrowser2 }, 313 { NTDDI_VISTA, NTDDI_MAX, &IID_ICommDlgBrowser }, 314 { NTDDI_VISTA, NTDDI_MAX, &IID_IOleInPlaceUIWindow }, 315 { NTDDI_VISTA, NTDDI_MAX, &IID_IConnectionPointContainer }, 316 { NTDDI_VISTA, NTDDI_MAX, &IID_IPersistHistory }, 317 { NTDDI_VISTA, NTDDI_MAX, &IID_IPersist }, 318 { NTDDI_VISTA, NTDDI_MAX, &IID_IInputObject }, 319 { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderFilterSite }, 320 { NTDDI_VISTA, NTDDI_MAX, &IID_IUrlHistoryNotify }, 321 { NTDDI_VISTA, NTDDI_MAX, &IID_IOleCommandTarget }, 322 { NTDDI_VISTA, NTDDI_MAX, &IID_INamespaceWalkCB2 }, 323 { NTDDI_VISTA, NTDDI_MAX, &IID_INamespaceWalkCB }, 324 325 { NTDDI_WIN7, NTDDI_MAX, &IID_IShellBrowserService }, 326 } 327 }, 328 { 329 ID_NAME(CLSID_ISFBand, NTDDI_MIN, NTDDI_MAX), 330 { 331 { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBand }, 332 { NTDDI_MIN, NTDDI_MAX, &IID_IDockingWindow }, 333 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 334 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 335 { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, 336 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, 337 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 338 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 339 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 340 { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, 341 { NTDDI_MIN, NTDDI_MAX, &IID_IShellChangeNotify }, 342 { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, 343 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 344 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderBand }, 345 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 346 { NTDDI_MIN, NTDDI_MAX, &IID_IFolderBandPriv }, 347 } 348 }, 349 { 350 ID_NAME(CLSID_MenuBand, NTDDI_MIN, NTDDI_MAX), 351 { 352 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellMenuAcc }, 353 354 { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBand }, 355 { NTDDI_MIN, NTDDI_MAX, &IID_IDockingWindow }, 356 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 357 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 358 { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, 359 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, 360 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 361 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 362 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 363 { NTDDI_MIN, NTDDI_MAX, &IID_IMenuPopup }, 364 { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBar }, 365 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 366 { NTDDI_MIN, NTDDI_MAX, &IID_IMenuBand }, 367 { NTDDI_MIN, NTDDI_MAX, &IID_IShellMenu2 }, 368 { NTDDI_MIN, NTDDI_MAX, &IID_IShellMenu }, 369 { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, 370 } 371 }, 372 { 373 ID_NAME(CLSID_MenuBandSite, NTDDI_MIN, NTDDI_MAX), 374 { 375 { NTDDI_MIN, NTDDI_MAX, &IID_IBandSite }, 376 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 377 { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBarClient }, 378 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 379 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 380 { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, 381 { NTDDI_MIN, NTDDI_MAX, &IID_IInputObjectSite }, 382 { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, 383 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 384 } 385 }, 386 { 387 ID_NAME(CLSID_MenuDeskBar, NTDDI_MIN, NTDDI_MAX), 388 { 389 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 390 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 391 { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBar }, 392 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 393 { NTDDI_MIN, NTDDI_MAX, &IID_IInputObjectSite }, 394 { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, 395 { NTDDI_MIN, NTDDI_MAX, &IID_IMenuPopup }, 396 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 397 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 398 { NTDDI_MIN, NTDDI_MAX, &IID_IBanneredBar }, 399 { NTDDI_MIN, NTDDI_MAX, &IID_IInitializeObject }, 400 } 401 }, 402#if 0 // This is registered to shell32, but can't be instantiated 403 { 404 ID_NAME(CLSID_MenuToolbarBase, NTDDI_MIN, NTDDI_WS03SP4), 405 { 406 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, 407 } 408 }, 409#endif 410 { 411 ID_NAME(CLSID_MergedFolder, NTDDI_MIN, NTDDI_MAX), 412 { 413 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistPropertyBag }, 414 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIconOverlay }, 415 { NTDDI_MIN, NTDDI_WS03SP4, &IID_ICompositeFolder }, 416 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IItemNameLimits }, 417 { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITranslateShellChangeNotify }, 418 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder2 }, 419 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAugmentedShellFolder }, 420 421 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, 422 { NTDDI_MIN, NTDDI_MAX, &IID_IStorage }, 423 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, 424 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 425 { NTDDI_MIN, NTDDI_MAX, &IID_IShellService }, 426 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, 427 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, 428 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 429 430 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_ITranslateShellChangeNotify }, 431 432 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent }, 433 434 { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, 435 { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, 436 } 437 }, 438 { 439 ID_NAME(CLSID_MoveToMenu, NTDDI_MIN, NTDDI_MAX), 440 { 441 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 }, 442 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 }, 443 444 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 445 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 446 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 447 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 448 { NTDDI_MIN, NTDDI_MAX, &IID_IFolderFilter }, 449 } 450 }, 451 { 452 ID_NAME(CLSID_MruLongList, NTDDI_VISTA, NTDDI_WINBLUE), 453 { 454 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IMruDataList }, 455 456 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IUnknown }, 457 } 458 }, 459 { 460 ID_NAME(CLSID_MruPidlList, NTDDI_VISTA, NTDDI_WINBLUE), 461 { 462 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IUnknown }, 463 } 464 }, 465 { 466 ID_NAME(CLSID_MyComputer, NTDDI_MIN, NTDDI_WINBLUE), 467 { 468 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFreeThreadedObject }, 469 470 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IUnknown }, 471 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersistFolder2 }, 472 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersistFolder }, 473 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IPersist }, 474 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellIconOverlay }, 475 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder2 }, 476 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IShellFolder }, 477 478 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot }, 479 480 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IFolderProperties }, 481 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ITransferProvider }, 482 483 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IItemNameLimits }, 484 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IContextMenuCB }, 485 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_INewItemAdvisor }, 486 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IObjectWithBackReferences }, 487 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IRegItemFolder }, 488 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IDelegateHostItemContainer }, 489 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IBackReferencedObject }, 490 491 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellIcon }, 492 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IStorage }, 493 494 { NTDDI_WIN8, NTDDI_WINBLUE, &IID_IObjectWithSite }, 495 { NTDDI_WIN8, NTDDI_WINBLUE, &IID_IPersistPropertyBag }, 496 } 497 }, 498 { 499 ID_NAME(CLSID_MyDocuments, NTDDI_MIN, NTDDI_MAX), 500 { 501 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPropertySetStorage }, 502 503 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, 504 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 505 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, 506 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, 507 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 508 { NTDDI_MIN, NTDDI_MAX, &IID_IShellIconOverlay }, 509 { NTDDI_MIN, NTDDI_MAX, &IID_IShellIcon }, 510 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 }, 511 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, 512 { NTDDI_MIN, NTDDI_MAX, &IID_IStorage }, 513 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenuCB }, 514 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 515 { NTDDI_MIN, NTDDI_MAX, &IID_IItemNameLimits }, 516 517 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IAliasRegistrationCallback }, 518 519 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent }, 520 521 { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, 522 { NTDDI_VISTA, NTDDI_MAX, &IID_IPersistPropertyBag }, 523 { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, 524 { NTDDI_VISTA, NTDDI_MAX, &IID_IRemoteComputer }, 525 { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, 526 { NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject }, 527 528 { NTDDI_WIN7, NTDDI_MAX, &IID_IParentAndItem }, 529 } 530 }, 531 { 532 ID_NAME(CLSID_NetworkPlaces, NTDDI_MIN, NTDDI_MAX), 533 { 534 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFreeThreadedObject }, 535 536 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 537 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder3 }, 538 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, 539 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, 540 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 541 { NTDDI_MIN, NTDDI_MAX, &IID_IShellIconOverlay }, 542 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, 543 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, 544 545 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderWithSearchRoot }, 546 547 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ITransferProvider }, 548 549 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IRegItemFolder }, 550 551 { NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB }, 552 { NTDDI_VISTA, NTDDI_MAX, &IID_INewItemAdvisor }, 553 { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, 554 { NTDDI_VISTA, NTDDI_MAX, &IID_IBackReferencedObject }, 555 { NTDDI_VISTA, NTDDI_MAX, &IID_IDelegateHostItemContainer }, 556 557 { NTDDI_WIN7, NTDDI_MAX, &IID_IShellIcon}, 558 { NTDDI_WIN7, NTDDI_MAX, &IID_IStorage}, 559 560 { NTDDI_WIN8, NTDDI_MAX, &IID_IObjectWithSite}, 561 } 562 }, 563 { 564 ID_NAME(CLSID_NewMenu, NTDDI_MIN, NTDDI_MAX), 565 { 566 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 567 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu3 }, 568 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu2 }, 569 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 570 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 571 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 572 } 573 }, 574 { 575 ID_NAME(CLSID_PersonalStartMenu, NTDDI_MIN, NTDDI_WINBLUE), 576 { 577 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBand }, 578 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDockingWindow }, 579 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, 580 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, 581 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistStream }, 582 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, 583 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, 584 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, 585 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMenuPopup }, 586 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBar }, 587 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMenuBand }, 588 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellMenu2 }, 589 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellMenu }, 590 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IWinEventHandler }, 591 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellMenuAcc }, 592 593 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IObjectWithSite }, 594 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IUnknown }, 595 596 { NTDDI_VISTA, NTDDI_WINBLUE, &IID_IShellItemFilter }, 597 } 598 }, 599 { 600 ID_NAME(CLSID_Printers, NTDDI_MIN, NTDDI_VISTASP4), 601 { 602 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IRemoteComputer }, 603 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IFolderNotify }, 604 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder2 }, 605 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellFolder }, 606 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, 607 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder2 }, 608 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFolder }, 609 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersist }, 610 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenuCB }, 611 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellIconOverlay }, 612 613 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IObjectWithBackReferences }, 614 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IResolveShellLink }, 615 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IFolderType }, 616 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IRegItemFolder }, 617 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_ITransferProvider }, 618 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IDelegateHostItemContainer }, 619 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IBackReferencedObject }, 620 } 621 }, 622 { 623 ID_NAME(CLSID_ProgressDialog, NTDDI_VISTA, NTDDI_MAX), 624 { 625 { NTDDI_VISTA, NTDDI_MAX, &IID_IProgressDialog }, 626 { NTDDI_VISTA, NTDDI_MAX, &IID_IUnknown }, 627 { NTDDI_VISTA, NTDDI_MAX, &IID_IOleWindow }, 628 { NTDDI_VISTA, NTDDI_MAX, &IID_IActionProgressDialog }, 629 { NTDDI_VISTA, NTDDI_MAX, &IID_IActionProgress }, 630 { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, 631 }, 632 L"Both" 633 }, 634 { 635 ID_NAME(CLSID_QueryAssociations, NTDDI_MIN, NTDDI_WINBLUE), 636 { 637 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAssociationArrayOld }, 638 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IAssociationArrayInitialize }, 639 640 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IQueryAssociations }, 641 { NTDDI_MIN, NTDDI_WINBLUE, &IID_IUnknown }, 642 643 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IAssociationArray }, 644 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IObjectWithAssociationList }, 645 } 646 }, 647 { 648 ID_NAME(CLSID_QuickLinks, NTDDI_MIN, NTDDI_MAX), 649 { 650 { NTDDI_MIN, NTDDI_MAX, &IID_IDeskBand }, 651 { NTDDI_MIN, NTDDI_MAX, &IID_IDockingWindow }, 652 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 653 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 654 { NTDDI_MIN, NTDDI_MAX, &IID_IInputObject }, 655 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStream }, 656 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 657 { NTDDI_MIN, NTDDI_MAX, &IID_IOleCommandTarget }, 658 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 659 { NTDDI_MIN, NTDDI_MAX, &IID_IWinEventHandler }, 660 { NTDDI_MIN, NTDDI_MAX, &IID_IShellChangeNotify }, 661 { NTDDI_MIN, NTDDI_MAX, &IID_IDropTarget }, 662 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 663 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderBand }, 664 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 665 { NTDDI_MIN, NTDDI_MAX, &IID_IFolderBandPriv }, 666 } 667 }, 668 { 669 ID_NAME(CLSID_RecycleBin, NTDDI_MIN, NTDDI_MAX), 670 { 671 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, 672 673 { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt }, 674 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 675 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder2 }, 676 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistFolder }, 677 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder2 }, 678 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolder }, 679 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 680 681 { NTDDI_VISTA, NTDDI_MAX, &IID_IPersist }, 682 { NTDDI_VISTA, NTDDI_MAX, &IID_IContextMenuCB }, 683 { NTDDI_VISTA, NTDDI_MAX, &IID_IFolderType }, 684 { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithBackReferences }, 685 686 { NTDDI_WIN7, NTDDI_MAX, &IID_IShellIconOverlay }, 687 } 688 }, 689 { 690 ID_NAME(CLSID_SearchBand, NTDDI_WIN8, NTDDI_MAX), 691 { 692 { NTDDI_WIN8, NTDDI_MAX, &IID_IContextMenu }, 693 { NTDDI_WIN8, NTDDI_MAX, &IID_IUnknown }, 694 { NTDDI_WIN8, NTDDI_MAX, &IID_IShellExtInit }, 695 { NTDDI_WIN8, NTDDI_MAX, &IID_IPersistPropertyBag }, 696 { NTDDI_WIN8, NTDDI_MAX, &IID_IPersist }, 697 { NTDDI_WIN8, NTDDI_MAX, &IID_IShellFolder }, 698 } 699 }, 700 { 701 ID_NAME(CLSID_SendToMenu, NTDDI_MIN, NTDDI_MAX), 702 { 703 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu3 }, 704 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu2 }, 705 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 706 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 707 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 708 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 709 710 { NTDDI_VISTA, NTDDI_MAX, &IID_IObjectWithSite }, 711 { NTDDI_VISTA, NTDDI_MAX, &IID_IServiceProvider }, 712 713 { NTDDI_WIN7, NTDDI_MAX, &IID_INamespaceWalkCB2 }, 714 { NTDDI_WIN7, NTDDI_MAX, &IID_INamespaceWalkCB }, 715 { NTDDI_WIN7, NTDDI_MAX, &IID_IMarshal }, 716 } 717 }, 718 { 719 ID_NAME(CLSID_SharedTaskScheduler, NTDDI_WIN7, NTDDI_WINBLUE), 720 { 721 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellTaskScheduler }, 722 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IUnknown }, 723 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IMarshal}, 724 } 725 }, 726 { 727 ID_NAME(CLSID_Shell, NTDDI_MIN, NTDDI_MAX), 728 { 729 { NTDDI_MIN, NTDDI_MAX, &IID_IShellDispatch4 }, 730 { NTDDI_MIN, NTDDI_MAX, &IID_IShellDispatch3 }, 731 { NTDDI_MIN, NTDDI_MAX, &IID_IShellDispatch2 }, 732 { NTDDI_MIN, NTDDI_MAX, &IID_IShellDispatch }, 733 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 734 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 735 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, 736 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 737 738 { NTDDI_VISTA, NTDDI_MAX, &IID_IShellDispatch5 }, 739 740 { NTDDI_WIN8, NTDDI_MAX, &IID_IShellDispatch6 }, 741 } 742 }, 743 { 744 /* CLSID_ShellDesktop is also registered to shell32 on Windows Vista, 7, and 8.1, 745 * but instantiating it crashes the test on CoUninitialize. */ 746 ID_NAME(CLSID_ShellDesktop, NTDDI_MIN, NTDDI_WS03SP4), 747 { 748 { NTDDI_MIN, NTDDI_WS03SP4, &CLSID_ShellDesktop }, 749 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, 750 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, 751 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IStorage }, 752 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFolder2 }, 753 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFolder }, 754 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersist }, 755 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIcon }, 756 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IContextMenuCB }, 757 { NTDDI_MIN, NTDDI_WS03SP4, &IID_ITranslateShellChangeNotify }, 758 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IItemNameLimits }, 759 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, 760 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellIconOverlay }, 761 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder2 }, 762 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IShellFolder }, 763 } 764 }, 765 { 766 /* CLSID_ShellFSFolder is also registered to shell32 on 767 * Windows 8.1, but instantiating it crashes the test on CoUninitialize. */ 768 ID_NAME(CLSID_ShellFSFolder, NTDDI_MIN, NTDDI_WIN7SP1), 769 { 770 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPersistFreeThreadedObject }, 771 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IPropertySetStorage }, 772 773 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IUnknown }, 774 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellFolder2 }, 775 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellFolder }, 776 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellIcon }, 777 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IShellIconOverlay }, 778 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFolder3 }, 779 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFolder2 }, 780 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersistFolder }, 781 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IPersist }, 782 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IStorage }, 783 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IItemNameLimits }, 784 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IContextMenuCB }, 785 { NTDDI_MIN, NTDDI_WIN7SP1, &IID_IOleCommandTarget }, 786 787 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IAliasRegistrationCallback }, 788 789 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IObjectWithSite }, 790 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_ILocalizableItemParent }, 791 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IPersistPropertyBag }, 792 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IObjectWithBackReferences }, 793 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IRemoteComputer }, 794 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IFolderType }, 795 { NTDDI_VISTA, NTDDI_WIN7SP1, &IID_IBackReferencedObject }, 796 797 { NTDDI_WIN7, NTDDI_WIN7SP1, &IID_IParentAndItem }, 798 } 799 }, 800 { 801 ID_NAME(CLSID_ShellFldSetExt, NTDDI_MIN, NTDDI_MAX), 802 { 803 { NTDDI_MIN, NTDDI_MAX, &IID_IShellPropSheetExt }, 804 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 805 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 806 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 807 } 808 }, 809 { 810 ID_NAME(CLSID_ShellFolderView, NTDDI_MIN, NTDDI_MAX), 811 { 812 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderViewDual2 }, 813 { NTDDI_MIN, NTDDI_MAX, &IID_IShellFolderViewDual }, 814 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 815 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 816 { NTDDI_MIN, NTDDI_MAX, &IID_IShellService }, 817 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 818 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, 819 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 820 { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, 821 822 { NTDDI_VISTA, NTDDI_MAX, &IID_IShellFolderViewDual3 }, 823 } 824 }, 825 { 826 ID_NAME(CLSID_ShellFolderViewOC, NTDDI_MIN, NTDDI_MAX), 827 { 828 { NTDDI_MIN, NTDDI_MAX, &IID_IFolderViewOC }, 829 { NTDDI_MIN, NTDDI_MAX, &IID_IDispatch }, 830 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 831 { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo2 }, 832 { NTDDI_MIN, NTDDI_MAX, &IID_IProvideClassInfo }, 833 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectSafety }, 834 { NTDDI_MIN, NTDDI_MAX, &IID_IConnectionPointContainer }, 835 { NTDDI_MIN, NTDDI_MAX, &IID_IPersistStreamInit }, 836 { NTDDI_MIN, NTDDI_MAX, &IID_IPersist }, 837 { NTDDI_MIN, NTDDI_MAX, &IID_IOleControl }, 838 { NTDDI_MIN, NTDDI_MAX, &IID_IOleObject }, 839 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceActiveObject }, 840 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObjectWindowless }, 841 { NTDDI_MIN, NTDDI_MAX, &IID_IOleInPlaceObject }, 842 { NTDDI_MIN, NTDDI_MAX, &IID_IOleWindow }, 843 } 844 }, 845 /* CLSID_ShellItem has two entries because the threading model changed between versions. */ 846 { 847 ID_NAME(CLSID_ShellItem, NTDDI_MIN, NTDDI_VISTASP4), 848 { 849 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellItem }, 850 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, 851 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistIDList }, 852 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IParentAndItem }, 853 854 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IShellItem2 }, 855 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IMarshal }, 856 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersistStream }, 857 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersist }, 858 } 859 }, 860 { 861 ID_NAME(CLSID_ShellItem, NTDDI_WIN7, NTDDI_WINBLUE), 862 { 863 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IMarshal }, 864 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellItem2 }, 865 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellItem }, 866 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistIDList }, 867 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IUnknown }, 868 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IParentAndItem }, 869 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistStream }, 870 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersist }, 871 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IObjectWithBackReferences }, 872 }, 873 L"Both", 874 }, 875 /* CLSID_ShellLink has two entries because the threading model changed between versions. */ 876 { 877 ID_NAME(CLSID_ShellLink, NTDDI_MIN, NTDDI_VISTASP4), 878 { 879 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkA }, 880 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, 881 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkW }, 882 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistStream }, 883 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistFile }, 884 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellExtInit }, 885 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu3 }, 886 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu2 }, 887 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IContextMenu }, 888 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IDropTarget }, 889 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IQueryInfo }, 890 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IShellLinkDataList }, 891 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractIconA }, 892 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractIconW }, 893 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractImage2 }, 894 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IExtractImage }, 895 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IPersistPropertyBag }, 896 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IServiceProvider }, 897 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IFilter }, 898 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IObjectWithSite }, 899 { NTDDI_MIN, NTDDI_VISTASP4, &IID_ICustomizeInfoTip }, 900 { NTDDI_MIN, NTDDI_VISTASP4, &IID_ISLTracker }, 901 902 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPersist }, 903 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPropertyStore }, 904 { NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPropertyBag }, 905 } 906 }, 907 { 908 ID_NAME(CLSID_ShellLink, NTDDI_WIN7, NTDDI_WINBLUE), 909 { 910 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IMarshal }, 911 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellLinkA }, 912 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellLinkW }, 913 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistStream }, 914 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistFile }, 915 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersist }, 916 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellExtInit }, 917 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IContextMenu3 }, 918 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IContextMenu2 }, 919 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IContextMenu }, 920 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IDropTarget }, 921 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IQueryInfo }, 922 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellLinkDataList }, 923 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IExtractIconA }, 924 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IExtractIconW }, 925 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IUnknown }, 926 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IExtractImage2 }, 927 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IExtractImage }, 928 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPersistPropertyBag }, 929 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IServiceProvider }, 930 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IObjectWithSite }, 931 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPropertyStore }, 932 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_ICustomizeInfoTip }, 933 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_ISLTracker }, 934 }, 935 L"Both", 936 }, 937#if 0 // Apparently we can only get this through Folder.Items().GetLink 938 { 939 ID_NAME(CLSID_ShellLinkObject, NTDDI_MIN, NTDDI_VISTASP4), 940 { 941 { NTDDI_MIN, NTDDI_VISTASP4, &IID_IUnknown }, 942 } 943 }, 944#endif 945 { 946 ID_NAME(CLSID_ShellSearchExt, NTDDI_WIN7, NTDDI_MAX), 947 { 948 { NTDDI_WIN7, NTDDI_MAX, &IID_IContextMenu }, 949 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 950 { NTDDI_WIN7, NTDDI_MAX, &IID_IObjectWithSite }, 951 } 952 }, 953 { 954 ID_NAME(CLSID_ShellTaskScheduler, NTDDI_WIN7, NTDDI_WINBLUE), 955 { 956 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IShellTaskScheduler }, 957 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IUnknown }, 958 { NTDDI_WIN7, NTDDI_WINBLUE, &IID_IMarshal}, 959 }, 960 }, 961 { 962 /* CLSID_StartMenu is also registered to shell32 on Windows Vista, 963 * but it crashes the test on CoUninitialize. */ 964 ID_NAME(CLSID_StartMenu, NTDDI_MIN, NTDDI_WS03SP4), 965 { 966 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleCommandTarget }, 967 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IServiceProvider }, 968 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IDeskBar }, 969 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IOleWindow }, 970 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObjectSite }, 971 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInputObject }, 972 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IMenuPopup }, 973 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IUnknown }, 974 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IObjectWithSite }, 975 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IBanneredBar }, 976 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IInitializeObject }, 977 } 978 }, 979 { 980 ID_NAME(CLSID_StartMenuPin, NTDDI_MIN, NTDDI_MAX), 981 { 982 { NTDDI_MIN, NTDDI_MAX, &IID_IShellExtInit }, 983 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 984 { NTDDI_MIN, NTDDI_MAX, &IID_IContextMenu }, 985 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 986 987 {NTDDI_VISTA, NTDDI_VISTASP4, &IID_IPinnedListOld}, 988 989 {NTDDI_WIN7, NTDDI_WINBLUE, &IID_IPinnedList}, 990 } 991 }, 992 { 993 ID_NAME(CLSID_Thumbnail, NTDDI_MIN, NTDDI_MAX), 994 { 995 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 996 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 997 998 { NTDDI_MIN, NTDDI_WS03SP4, &IID_IParentAndItem }, 999 }, 1000 }, 1001 { 1002 ID_NAME(CLSID_TrackShellMenu, NTDDI_MIN, NTDDI_MAX), 1003 { 1004 { NTDDI_MIN, NTDDI_MAX, &IID_ITrackShellMenu }, 1005 { NTDDI_MIN, NTDDI_MAX, &IID_IShellMenu }, 1006 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 1007 { NTDDI_MIN, NTDDI_MAX, &IID_IShellMenu2 }, 1008 { NTDDI_MIN, NTDDI_MAX, &IID_IObjectWithSite }, 1009 { NTDDI_MIN, NTDDI_MAX, &IID_IServiceProvider }, 1010 } 1011 }, 1012 { 1013 ID_NAME(CLSID_UserAssist, NTDDI_WIN7, NTDDI_MAX), 1014 { 1015 { NTDDI_WIN7, NTDDI_MAX, &IID_IUnknown }, 1016 }, 1017 L"Both" 1018 }, 1019 { 1020 ID_NAME(CLSID_UserNotification, NTDDI_MIN, NTDDI_MAX), 1021 { 1022 { NTDDI_MIN, NTDDI_MAX, &IID_IUserNotification }, 1023 { NTDDI_MIN, NTDDI_MAX, &IID_IUnknown }, 1024 1025 {NTDDI_VISTA, NTDDI_MAX, &IID_IUserNotification2 }, 1026 } 1027 }, 1028}; 1029 1030START_TEST(shell32) 1031{ 1032 TestClasses(L"shell32", ExpectedInterfaces, RTL_NUMBER_OF(ExpectedInterfaces)); 1033}