[COM_APITEST] Add a test for CLSID_ActiveDesktop
[reactos.git] / modules / rostests / apitests / com / shell32.c
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 */
7
8 #include "com_apitest.h"
9
10 #define NDEBUG
11 #include <debug.h>
12
13 static const CLASS_AND_INTERFACES ExpectedInterfaces[] =
14 {
15 {
16 ID_NAME(CLSID_ActiveDesktop),
17 {
18 { 0x0, &IID_IActiveDesktop },
19 { 0x0, &IID_IUnknown },
20 { 0x4, &IID_IActiveDesktopP },
21 { 0x8, &IID_IADesktopP2 },
22 { 0xc, &IID_IPropertyBag },
23 }
24 },
25 {
26 ID_NAME(CLSID_CDBurn),
27 {
28 { 0x0, &IID_IObjectWithSite },
29 { 0x0, &IID_IUnknown },
30 { 0x8, &IID_IShellExtInit },
31 { 0xc, &IID_IContextMenu },
32 { 0x10, &IID_IShellPropSheetExt },
33 { 0x14, &IID_IDiscMasterProgressEvents },
34 { 0x18, &IID_IDropTarget },
35 { 0x1c, &IID_IPersistFile },
36 { 0x20, &IID_IOleCommandTarget },
37 { 0x24, &IID_ICDBurn },
38 { 0x28, &IID_ICDBurnPriv },
39 { 0x2c, &IID_IPersistPropertyBag },
40 { 0x30, &IID_IDriveFolderExtOld },
41 { 0x34, &IID_INamespaceWalkCB },
42 { 0x3c, &IID_IServiceProvider },
43 { 0x40, &IID_ITransferAdviseSinkPriv },
44 { 0x44, &IID_IQueryCancelAutoPlay },
45 }
46 },
47 {
48 ID_NAME(CLSID_ControlPanel),
49 {
50 { 0x0, &IID_IUnknown },
51 { 0x10, &IID_IPersistFolder2 },
52 { 0x10, &IID_IPersistFolder },
53 { 0x10, &IID_IPersist },
54 { FARAWY, &IID_IShellIconOverlay },
55 { FARAWY, &IID_IShellFolder2 },
56 { FARAWY, &IID_IShellFolder },
57 }
58 },
59 {
60 ID_NAME(CLSID_CopyToMenu),
61 {
62 { 0x0, &IID_IContextMenu3 },
63 { 0x0, &IID_IContextMenu2 },
64 { 0x0, &IID_IContextMenu },
65 { 0x0, &IID_IUnknown },
66 { 0x4, &IID_IShellExtInit },
67 { 0x8, &IID_IObjectWithSite },
68 { 0x10, &IID_IFolderFilter },
69 }
70 },
71 {
72 ID_NAME(CLSID_DeskMovr),
73 {
74 { 0x0, &IID_IUnknown },
75 { 0x70, &IID_IDeskMovr },
76 { 0x74, &IID_IOleObject },
77 { 0x78, &IID_IPersistPropertyBag },
78 { 0x7c, &IID_IOleControl },
79 { 0x80, &IID_IOleInPlaceActiveObject },
80 { 0x84, &IID_IViewObjectEx },
81 { 0x84, &IID_IViewObject2 },
82 { 0x84, &IID_IViewObject },
83 { 0x88, &IID_IOleWindow },
84 { 0x88, &IID_IOleInPlaceObject },
85 { 0x88, &IID_IOleInPlaceObjectWindowless },
86 { 0x8c, &IID_IQuickActivate },
87 }
88 },
89 {
90 ID_NAME(CLSID_DragDropHelper),
91 {
92 { 0x0, &IID_IDragSourceHelper },
93 { 0x0, &IID_IUnknown },
94 { 0x4, &IID_IDropTargetHelper },
95 }
96 },
97 {
98 ID_NAME(CLSID_FadeTask),
99 {
100 { 0x0, &IID_IUnknown },
101 }
102 },
103 {
104 ID_NAME(CLSID_FileSearchBand),
105 {
106 { 0x0, &IID_IFileSearchBand },
107 { 0x0, &IID_IDispatch },
108 { 0x0, &IID_IUnknown },
109 { 0x4, &IID_IObjectWithSite },
110 { 0x8, &IID_IPersistStream },
111 { 0x8, &IID_IPersist },
112 { 0xc, &IID_IDeskBand },
113 { 0xc, &IID_IDockingWindow },
114 { 0xc, &IID_IOleWindow },
115 { 0x10, &IID_IInputObject },
116 { 0x14, &IID_IOleClientSite },
117 { 0x18, &IID_IOleInPlaceSite },
118 { 0x1c, &IID_IOleControlSite },
119 }
120 },
121 {
122 ID_NAME(CLSID_FolderItem),
123 {
124 //{ 0x0, &CLSID_ShellFolderItem }, // broken QueryInterface that doesn't add a reference
125 { 0x0, &IID_FolderItem2 },
126 { 0x0, &IID_FolderItem },
127 { 0x0, &IID_IDispatch },
128 { 0x0, &IID_IUnknown },
129 { 0x4, &IID_IPersistFolder2 },
130 { 0x4, &IID_IPersistFolder },
131 { 0x4, &IID_IPersist },
132 { 0x8, &IID_IObjectSafety },
133 { 0x10, &IID_IParentAndItem },
134 }
135 },
136 {
137 ID_NAME(CLSID_FolderItemsFDF),
138 {
139 { 0x0, &IID_FolderItems3 },
140 //{ 0x0, &IID_FolderItems2 }, ????
141 { 0x0, &IID_FolderItems },
142 { 0x0, &IID_IDispatch },
143 { 0x0, &IID_IUnknown },
144 { 0x4, &IID_IPersistFolder },
145 { 0x8, &IID_IObjectSafety },
146 }
147 },
148 {
149 ID_NAME(CLSID_FolderShortcut),
150 {
151 { 0x0, &IID_IShellFolder2 },
152 { 0x0, &IID_IShellFolder },
153 { 0x0, &IID_IUnknown },
154 { 0x4, &IID_IPersistFolder3 },
155 { 0x4, &IID_IPersistFolder2 },
156 { 0x4, &IID_IPersistFolder },
157 { 0x4, &IID_IPersist },
158 { 0x8, &IID_IShellLinkA },
159 { 0xc, &IID_IShellLinkW },
160 { 0x10, &IID_IPersistFile },
161 { 0x14, &IID_IExtractIconW },
162 { 0x18, &IID_IQueryInfo },
163 { 0x20, &IID_IPersistStream },
164 { 0x20, &IID_IPersistStreamInit },
165 { 0x24, &IID_IPersistPropertyBag },
166 { 0x28, &IID_IBrowserFrameOptions },
167 }
168 },
169 {
170 ID_NAME(CLSID_FolderViewHost),
171 {
172 { 0x0, &IID_IFolderViewHost },
173 { 0x0, &IID_IUnknown },
174 { 0x4, &IID_IServiceProvider },
175 { 0x8, &IID_IOleWindow },
176 { 0xc, &IID_IFolderView },
177 { 0x10, &IID_IObjectWithSite },
178 }
179 },
180 {
181 ID_NAME(CLSID_ISFBand),
182 {
183 { -0xac, &IID_IDeskBand },
184 { -0xac, &IID_IDockingWindow },
185 { -0xac, &IID_IOleWindow },
186 { -0xa8, &IID_IObjectWithSite },
187 { -0xa0, &IID_IInputObject },
188 { -0x9c, &IID_IPersistStream },
189 { -0x9c, &IID_IPersist },
190 { -0x98, &IID_IOleCommandTarget },
191 { -0x94, &IID_IServiceProvider },
192 { -0x78, &IID_IWinEventHandler },
193 { -0x74, &IID_IShellChangeNotify },
194 { -0x70, &IID_IDropTarget },
195 { -0x4, &IID_IContextMenu },
196 { 0x0, &IID_IShellFolderBand },
197 { 0x0, &IID_IUnknown },
198 { 0x94, &IID_IFolderBandPriv },
199 }
200 },
201 {
202 ID_NAME(CLSID_MenuBand),
203 {
204 { -0x30, &IID_IDeskBand },
205 { -0x30, &IID_IDockingWindow },
206 { -0x30, &IID_IOleWindow },
207 { -0x2c, &IID_IObjectWithSite },
208 { -0x24, &IID_IInputObject },
209 { -0x20, &IID_IPersistStream },
210 { -0x20, &IID_IPersist },
211 { -0x1c, &IID_IOleCommandTarget },
212 { -0x18, &IID_IServiceProvider },
213 { 0x0, &IID_IMenuPopup },
214 { 0x0, &IID_IDeskBar },
215 { 0x0, &IID_IUnknown },
216 { 0x4, &IID_IMenuBand },
217 { 0x8, &IID_IShellMenu2 },
218 { 0x8, &IID_IShellMenu },
219 { 0xc, &IID_IWinEventHandler },
220 { 0x10, &IID_IShellMenuAcc },
221 }
222 },
223 {
224 ID_NAME(CLSID_MenuBandSite),
225 {
226 { 0x0, &IID_IBandSite },
227 { 0x0, &IID_IUnknown },
228 { 0x4, &IID_IDeskBarClient },
229 { 0x4, &IID_IOleWindow },
230 { 0x8, &IID_IOleCommandTarget },
231 { 0xc, &IID_IInputObject },
232 { 0x10, &IID_IInputObjectSite },
233 { 0x14, &IID_IWinEventHandler },
234 { 0x18, &IID_IServiceProvider },
235 }
236 },
237 {
238 ID_NAME(CLSID_MenuDeskBar),
239 {
240 { -0x48, &IID_IOleCommandTarget },
241 { -0x44, &IID_IServiceProvider },
242 { -0x40, &IID_IDeskBar },
243 { -0x40, &IID_IOleWindow },
244 { -0x3c, &IID_IInputObjectSite },
245 { -0x38, &IID_IInputObject },
246 { 0x0, &IID_IMenuPopup },
247 { 0x0, &IID_IUnknown },
248 { 0x4, &IID_IObjectWithSite },
249 { 0x8, &IID_IBanneredBar },
250 { 0xc, &IID_IInitializeObject },
251 }
252 },
253 #if 0 // This is registered to shell32, but can't be instanciated
254 {
255 ID_NAME(CLSID_MenuToolbarBase),
256 {
257 { 0x0, &IID_IUnknown },
258 }
259 },
260 #endif
261 {
262 ID_NAME(CLSID_MergedFolder),
263 {
264 { -0x8, &IID_IShellFolder2 },
265 { -0x4, &IID_IStorage },
266 { 0x0, &IID_IAugmentedShellFolder2 },
267 { 0x0, &IID_IAugmentedShellFolder },
268 { 0x0, &IID_IShellFolder },
269 { 0x0, &IID_IUnknown },
270 { 0x4, &IID_IShellService },
271 { 0x8, &IID_ITranslateShellChangeNotify },
272 { 0xc, &IID_IPersistFolder2 },
273 { 0xc, &IID_IPersistFolder },
274 { 0xc, &IID_IPersist },
275 { 0x10, &IID_IPersistPropertyBag },
276 { 0x14, &IID_IShellIconOverlay },
277 { 0x18, &IID_ICompositeFolder },
278 { 0x1c, &IID_IItemNameLimits },
279 }
280 },
281 {
282 ID_NAME(CLSID_MoveToMenu),
283 {
284 { 0x0, &IID_IContextMenu3 },
285 { 0x0, &IID_IContextMenu2 },
286 { 0x0, &IID_IContextMenu },
287 { 0x0, &IID_IUnknown },
288 { 0x4, &IID_IShellExtInit },
289 { 0x8, &IID_IObjectWithSite },
290 { 0x10, &IID_IFolderFilter },
291 }
292 },
293 {
294 ID_NAME(CLSID_MyComputer),
295 {
296 { 0x0, &IID_IUnknown },
297 { 0x10, &IID_IPersistFolder2 },
298 { 0x10, &IID_IPersistFolder },
299 { 0x10, &IID_IPersist },
300 { 0x10, &IID_IPersistFreeThreadedObject },
301 { FARAWY, &IID_IShellIconOverlay },
302 { FARAWY, &IID_IShellFolder2 },
303 { FARAWY, &IID_IShellFolder },
304 }
305 },
306 {
307 ID_NAME(CLSID_MyDocuments),
308 {
309 { -0x4, &IID_IPersistFolder },
310 { -0x4, &IID_IPersist },
311 { 0x0, &IID_IShellFolder2 },
312 { 0x0, &IID_IShellFolder },
313 { 0x0, &IID_IUnknown },
314 { 0x4, &IID_IShellIconOverlay },
315 { FARAWY, &IID_IShellIcon },
316 { FARAWY, &IID_IPersistFolder3 },
317 { FARAWY, &IID_IPersistFolder2 },
318 { FARAWY, &IID_IStorage },
319 { FARAWY, &IID_IContextMenuCB },
320 { FARAWY, &IID_IOleCommandTarget },
321 { FARAWY, &IID_IItemNameLimits },
322 { FARAWY, &IID_IPropertySetStorage },
323 }
324 },
325 {
326 ID_NAME(CLSID_NetworkPlaces),
327 {
328 { 0x0, &IID_IUnknown },
329 { 0x10, &IID_IPersistFolder3 },
330 { 0x10, &IID_IPersistFolder2 },
331 { 0x10, &IID_IPersistFolder },
332 { 0x10, &IID_IPersist },
333 { 0x10, &IID_IPersistFreeThreadedObject },
334 { FARAWY, &IID_IShellIconOverlay },
335 { FARAWY, &IID_IShellFolder2 },
336 { FARAWY, &IID_IShellFolder },
337 }
338 },
339 {
340 ID_NAME(CLSID_NewMenu),
341 {
342 { -0xc, &IID_IObjectWithSite },
343 { -0x4, &IID_IContextMenu3 },
344 { -0x4, &IID_IContextMenu2 },
345 { -0x4, &IID_IContextMenu },
346 { 0x0, &IID_IShellExtInit },
347 { 0x0, &IID_IUnknown },
348 }
349 },
350 {
351 ID_NAME(CLSID_PersonalStartMenu),
352 {
353 { -0x30, &IID_IDeskBand },
354 { -0x30, &IID_IDockingWindow },
355 { -0x30, &IID_IOleWindow },
356 { -0x2c, &IID_IObjectWithSite },
357 { -0x24, &IID_IInputObject },
358 { -0x20, &IID_IPersistStream },
359 { -0x20, &IID_IPersist },
360 { -0x1c, &IID_IOleCommandTarget },
361 { -0x18, &IID_IServiceProvider },
362 { 0x0, &IID_IMenuPopup },
363 { 0x0, &IID_IDeskBar },
364 { 0x0, &IID_IUnknown },
365 { 0x4, &IID_IMenuBand },
366 { 0x8, &IID_IShellMenu2 },
367 { 0x8, &IID_IShellMenu },
368 { 0xc, &IID_IWinEventHandler },
369 { 0x10, &IID_IShellMenuAcc },
370 }
371 },
372 {
373 ID_NAME(CLSID_Printers),
374 {
375 { -0xc, &IID_IRemoteComputer },
376 { -0x4, &IID_IFolderNotify },
377 { 0x0, &IID_IShellFolder2 },
378 { 0x0, &IID_IShellFolder },
379 { 0x0, &IID_IUnknown },
380 { 0x4, &IID_IPersistFolder2 },
381 { 0x4, &IID_IPersistFolder },
382 { 0x4, &IID_IPersist },
383 { 0x8, &IID_IContextMenuCB },
384 { 0xc, &IID_IShellIconOverlay },
385 }
386 },
387 {
388 ID_NAME(CLSID_QueryAssociations),
389 {
390 { 0x0, &IID_IAssociationArrayOld },
391 { 0x0, &IID_IUnknown },
392 { 0x4, &IID_IAssociationArrayInitialize },
393 { 0x8, &IID_IQueryAssociations },
394 }
395 },
396 {
397 ID_NAME(CLSID_QuickLinks),
398 {
399 { -0xac, &IID_IDeskBand },
400 { -0xac, &IID_IDockingWindow },
401 { -0xac, &IID_IOleWindow },
402 { -0xa8, &IID_IObjectWithSite },
403 { -0xa0, &IID_IInputObject },
404 { -0x9c, &IID_IPersistStream },
405 { -0x9c, &IID_IPersist },
406 { -0x98, &IID_IOleCommandTarget },
407 { -0x94, &IID_IServiceProvider },
408 { -0x78, &IID_IWinEventHandler },
409 { -0x74, &IID_IShellChangeNotify },
410 { -0x70, &IID_IDropTarget },
411 { -0x4, &IID_IContextMenu },
412 { 0x0, &IID_IShellFolderBand },
413 { 0x0, &IID_IUnknown },
414 { 0x94, &IID_IFolderBandPriv },
415 }
416 },
417 {
418 ID_NAME(CLSID_RecycleBin),
419 {
420 { 0x0, &IID_IPersistFolder2 },
421 { 0x0, &IID_IPersistFolder },
422 //{ 0x0, &IID_IPersist },
423 { 0x0, &IID_IUnknown },
424 { 0x4, &IID_IShellFolder2 },
425 { 0x4, &IID_IShellFolder },
426 { 0x8, &IID_IContextMenu },
427 { 0xc, &IID_IShellPropSheetExt },
428 { 0x10, &IID_IShellExtInit },
429 }
430 },
431 {
432 ID_NAME(CLSID_SendToMenu),
433 {
434 { -0x4, &IID_IContextMenu3 },
435 { -0x4, &IID_IContextMenu2 },
436 { -0x4, &IID_IContextMenu },
437 { 0x0, &IID_IShellExtInit },
438 { 0x0, &IID_IUnknown },
439 { 0x4, &IID_IOleWindow },
440 }
441 },
442 {
443 ID_NAME(CLSID_Shell),
444 {
445 { 0x0, &IID_IShellDispatch4 },
446 { 0x0, &IID_IShellDispatch3 },
447 { 0x0, &IID_IShellDispatch2 },
448 { 0x0, &IID_IShellDispatch },
449 { 0x0, &IID_IDispatch },
450 { 0x0, &IID_IUnknown },
451 { 0x4, &IID_IObjectSafety },
452 { 0x20, &IID_IObjectWithSite },
453 }
454 },
455 {
456 ID_NAME(CLSID_ShellDesktop),
457 {
458 { -0x8, &CLSID_ShellDesktop },
459 { -0x8, &IID_IObjectWithSite },
460 { 0x0, &IID_IUnknown },
461 { 0x4, &IID_IStorage },
462 { 0x8, &IID_IPersistFolder2 },
463 { 0x8, &IID_IPersistFolder },
464 { 0x8, &IID_IPersist },
465 { 0xc, &IID_IShellIcon },
466 { 0x14, &IID_IContextMenuCB },
467 { 0x18, &IID_ITranslateShellChangeNotify },
468 { 0x1c, &IID_IItemNameLimits },
469 { 0x20, &IID_IOleCommandTarget },
470 { FARAWY, &IID_IShellIconOverlay },
471 { FARAWY, &IID_IShellFolder2 },
472 { FARAWY, &IID_IShellFolder },
473 }
474 },
475 {
476 ID_NAME(CLSID_ShellFSFolder),
477 {
478 { 0x0, &IID_IUnknown },
479 { 0xc, &IID_IShellFolder2 },
480 { 0xc, &IID_IShellFolder },
481 { 0x10, &IID_IShellIcon },
482 { 0x14, &IID_IShellIconOverlay },
483 { 0x18, &IID_IPersistFolder3 },
484 { 0x18, &IID_IPersistFolder2 },
485 { 0x18, &IID_IPersistFolder },
486 { 0x18, &IID_IPersist },
487 { 0x18, &IID_IPersistFreeThreadedObject },
488 { 0x1c, &IID_IStorage },
489 { 0x24, &IID_IPropertySetStorage },
490 { 0x28, &IID_IItemNameLimits },
491 { 0x2c, &IID_IContextMenuCB },
492 { 0x34, &IID_IOleCommandTarget },
493 }
494 },
495 {
496 ID_NAME(CLSID_ShellFldSetExt),
497 {
498 { 0x0, &IID_IShellPropSheetExt },
499 { 0x0, &IID_IUnknown },
500 { 0x4, &IID_IShellExtInit },
501 { 0x8, &IID_IObjectWithSite },
502 }
503 },
504 {
505 ID_NAME(CLSID_ShellFolderView),
506 {
507 { 0x0, &IID_IShellFolderViewDual2 },
508 { 0x0, &IID_IShellFolderViewDual },
509 { 0x0, &IID_IDispatch },
510 { 0x0, &IID_IUnknown },
511 { 0x4, &IID_IShellService },
512 { 0x8, &IID_IServiceProvider },
513 { 0xc, &IID_IObjectSafety },
514 { 0x14, &IID_IObjectWithSite },
515 { 0x1c, &IID_IConnectionPointContainer },
516 }
517 },
518 {
519 ID_NAME(CLSID_ShellFolderViewOC),
520 {
521 { 0x0, &IID_IFolderViewOC },
522 { 0x0, &IID_IDispatch },
523 { 0x0, &IID_IUnknown },
524 { 0x4, &IID_IProvideClassInfo2 },
525 { 0x4, &IID_IProvideClassInfo },
526 { 0x8, &IID_IObjectSafety },
527 { 0x10, &IID_IConnectionPointContainer },
528 { 0x88, &IID_IPersistStreamInit },
529 { 0x88, &IID_IPersist },
530 { 0x8c, &IID_IOleControl },
531 { 0x90, &IID_IOleObject },
532 { 0x94, &IID_IOleInPlaceActiveObject },
533 { 0x98, &IID_IOleInPlaceObjectWindowless },
534 { 0x98, &IID_IOleInPlaceObject },
535 { 0x98, &IID_IOleWindow },
536 }
537 },
538 {
539 ID_NAME(CLSID_ShellItem),
540 {
541 { 0x0, &IID_IShellItem },
542 { 0x0, &IID_IUnknown },
543 { 0x4, &IID_IPersistIDList },
544 { 0x8, &IID_IParentAndItem },
545 }
546 },
547 {
548 ID_NAME(CLSID_ShellLink),
549 {
550 { 0x0, &IID_IShellLinkA },
551 { 0x0, &IID_IUnknown },
552 { 0x4, &IID_IShellLinkW },
553 { 0x8, &IID_IPersistStream },
554 { 0xc, &IID_IPersistFile },
555 { 0x10, &IID_IShellExtInit },
556 { 0x14, &IID_IContextMenu3 },
557 { 0x14, &IID_IContextMenu2 },
558 { 0x14, &IID_IContextMenu },
559 { 0x18, &IID_IDropTarget },
560 { 0x1c, &IID_IQueryInfo },
561 { 0x20, &IID_IShellLinkDataList },
562 { 0x24, &IID_IExtractIconA },
563 { 0x28, &IID_IExtractIconW },
564 { 0x2c, &IID_IExtractImage2 },
565 { 0x2c, &IID_IExtractImage },
566 { 0x30, &IID_IPersistPropertyBag },
567 { 0x34, &IID_IServiceProvider },
568 { 0x38, &IID_IFilter },
569 { 0x3c, &IID_IObjectWithSite },
570 { 0x44, &IID_ICustomizeInfoTip },
571 { FARAWY, &IID_ISLTracker },
572 }
573 },
574 #if 0 // Apparently we can only get this through Folder.Items().GetLink
575 {
576 ID_NAME(CLSID_ShellLinkObject),
577 {
578 { 0x0, &IID_IUnknown },
579 }
580 },
581 #endif
582 {
583 ID_NAME(CLSID_StartMenu),
584 {
585 { -0x48, &IID_IOleCommandTarget },
586 { -0x44, &IID_IServiceProvider },
587 { -0x40, &IID_IDeskBar },
588 { -0x40, &IID_IOleWindow },
589 { -0x3c, &IID_IInputObjectSite },
590 { -0x38, &IID_IInputObject },
591 { 0x0, &IID_IMenuPopup },
592 { 0x0, &IID_IUnknown },
593 { 0x4, &IID_IObjectWithSite },
594 { 0x8, &IID_IBanneredBar },
595 { 0xc, &IID_IInitializeObject },
596 }
597 },
598 {
599 ID_NAME(CLSID_StartMenuPin),
600 {
601 { 0x0, &IID_IShellExtInit },
602 { 0x0, &IID_IUnknown },
603 { 0x4, &IID_IContextMenu },
604 { 0xc, &IID_IObjectWithSite },
605 }
606 },
607 {
608 ID_NAME(CLSID_Thumbnail),
609 {
610 { 0x0, &IID_IUnknown },
611 { 0x4, &IID_IParentAndItem },
612 { 0x8, &IID_IObjectWithSite },
613 },
614 },
615 {
616 ID_NAME(CLSID_TrackShellMenu),
617 {
618 { 0x0, &IID_ITrackShellMenu },
619 { 0x0, &IID_IShellMenu },
620 { 0x0, &IID_IUnknown },
621 { 0x4, &IID_IShellMenu2 },
622 { 0x8, &IID_IObjectWithSite },
623 { 0xc, &IID_IServiceProvider },
624 }
625 },
626 {
627 ID_NAME(CLSID_UserNotification),
628 {
629 { 0x0, &IID_IUserNotification },
630 { 0x0, &IID_IUnknown },
631 // { 0x4, &IID_IUserNotification2 }, // On Vista+
632 }
633 },
634 };
635 static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces);
636
637 START_TEST(shell32)
638 {
639 TestClasses(L"shell32", ExpectedInterfaces, ExpectedInterfaceCount);
640 }