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