ReactOS  0.4.14-dev-376-gaedba84
shell32.c
Go to the documentation of this file.
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 
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_FindFolder),
123  {
124  { 0x0, &IID_IShellFolder2 },
125  { 0x0, &IID_IShellFolder },
126  { 0x0, &IID_IUnknown },
127  { 0x4, &IID_IShellIcon },
128  { 0x8, &IID_IShellIconOverlay },
129  { 0xc, &IID_IPersistFolder2 },
130  { 0xc, &IID_IPersistFolder },
131  { 0xc, &IID_IPersist },
132  }
133  },
134  {
135  ID_NAME(CLSID_FolderItem),
136  {
137  //{ 0x0, &CLSID_ShellFolderItem }, // broken QueryInterface that doesn't add a reference
138  { 0x0, &IID_FolderItem2 },
139  { 0x0, &IID_FolderItem },
140  { 0x0, &IID_IDispatch },
141  { 0x0, &IID_IUnknown },
142  { 0x4, &IID_IPersistFolder2 },
143  { 0x4, &IID_IPersistFolder },
144  { 0x4, &IID_IPersist },
145  { 0x8, &IID_IObjectSafety },
146  { 0x10, &IID_IParentAndItem },
147  }
148  },
149  {
150  ID_NAME(CLSID_FolderItemsFDF),
151  {
152  { 0x0, &IID_FolderItems3 },
153  //{ 0x0, &IID_FolderItems2 }, ????
154  { 0x0, &IID_FolderItems },
155  { 0x0, &IID_IDispatch },
156  { 0x0, &IID_IUnknown },
157  { 0x4, &IID_IPersistFolder },
158  { 0x8, &IID_IObjectSafety },
159  }
160  },
161  {
162  ID_NAME(CLSID_FolderShortcut),
163  {
164  { 0x0, &IID_IShellFolder2 },
165  { 0x0, &IID_IShellFolder },
166  { 0x0, &IID_IUnknown },
167  { 0x4, &IID_IPersistFolder3 },
168  { 0x4, &IID_IPersistFolder2 },
169  { 0x4, &IID_IPersistFolder },
170  { 0x4, &IID_IPersist },
171  { 0x8, &IID_IShellLinkA },
172  { 0xc, &IID_IShellLinkW },
173  { 0x10, &IID_IPersistFile },
174  { 0x14, &IID_IExtractIconW },
175  { 0x18, &IID_IQueryInfo },
176  { 0x20, &IID_IPersistStream },
177  { 0x20, &IID_IPersistStreamInit },
178  { 0x24, &IID_IPersistPropertyBag },
179  { 0x28, &IID_IBrowserFrameOptions },
180  }
181  },
182  {
183  ID_NAME(CLSID_FolderViewHost),
184  {
185  { 0x0, &IID_IFolderViewHost },
186  { 0x0, &IID_IUnknown },
187  { 0x4, &IID_IServiceProvider },
188  { 0x8, &IID_IOleWindow },
189  { 0xc, &IID_IFolderView },
190  { 0x10, &IID_IObjectWithSite },
191  }
192  },
193  {
194  ID_NAME(CLSID_ISFBand),
195  {
196  { -0xac, &IID_IDeskBand },
197  { -0xac, &IID_IDockingWindow },
198  { -0xac, &IID_IOleWindow },
199  { -0xa8, &IID_IObjectWithSite },
200  { -0xa0, &IID_IInputObject },
201  { -0x9c, &IID_IPersistStream },
202  { -0x9c, &IID_IPersist },
203  { -0x98, &IID_IOleCommandTarget },
204  { -0x94, &IID_IServiceProvider },
205  { -0x78, &IID_IWinEventHandler },
206  { -0x74, &IID_IShellChangeNotify },
207  { -0x70, &IID_IDropTarget },
208  { -0x4, &IID_IContextMenu },
209  { 0x0, &IID_IShellFolderBand },
210  { 0x0, &IID_IUnknown },
211  { 0x94, &IID_IFolderBandPriv },
212  }
213  },
214  {
215  ID_NAME(CLSID_MenuBand),
216  {
217  { -0x30, &IID_IDeskBand },
218  { -0x30, &IID_IDockingWindow },
219  { -0x30, &IID_IOleWindow },
220  { -0x2c, &IID_IObjectWithSite },
221  { -0x24, &IID_IInputObject },
222  { -0x20, &IID_IPersistStream },
223  { -0x20, &IID_IPersist },
224  { -0x1c, &IID_IOleCommandTarget },
225  { -0x18, &IID_IServiceProvider },
226  { 0x0, &IID_IMenuPopup },
227  { 0x0, &IID_IDeskBar },
228  { 0x0, &IID_IUnknown },
229  { 0x4, &IID_IMenuBand },
230  { 0x8, &IID_IShellMenu2 },
231  { 0x8, &IID_IShellMenu },
232  { 0xc, &IID_IWinEventHandler },
233  { 0x10, &IID_IShellMenuAcc },
234  }
235  },
236  {
238  {
239  { 0x0, &IID_IBandSite },
240  { 0x0, &IID_IUnknown },
241  { 0x4, &IID_IDeskBarClient },
242  { 0x4, &IID_IOleWindow },
243  { 0x8, &IID_IOleCommandTarget },
244  { 0xc, &IID_IInputObject },
245  { 0x10, &IID_IInputObjectSite },
246  { 0x14, &IID_IWinEventHandler },
247  { 0x18, &IID_IServiceProvider },
248  }
249  },
250  {
251  ID_NAME(CLSID_MenuDeskBar),
252  {
253  { -0x48, &IID_IOleCommandTarget },
254  { -0x44, &IID_IServiceProvider },
255  { -0x40, &IID_IDeskBar },
256  { -0x40, &IID_IOleWindow },
257  { -0x3c, &IID_IInputObjectSite },
258  { -0x38, &IID_IInputObject },
259  { 0x0, &IID_IMenuPopup },
260  { 0x0, &IID_IUnknown },
261  { 0x4, &IID_IObjectWithSite },
262  { 0x8, &IID_IBanneredBar },
263  { 0xc, &IID_IInitializeObject },
264  }
265  },
266 #if 0 // This is registered to shell32, but can't be instanciated
267  {
268  ID_NAME(CLSID_MenuToolbarBase),
269  {
270  { 0x0, &IID_IUnknown },
271  }
272  },
273 #endif
274  {
275  ID_NAME(CLSID_MergedFolder),
276  {
277  { -0x8, &IID_IShellFolder2 },
278  { -0x4, &IID_IStorage },
279  { 0x0, &IID_IAugmentedShellFolder2 },
280  { 0x0, &IID_IAugmentedShellFolder },
281  { 0x0, &IID_IShellFolder },
282  { 0x0, &IID_IUnknown },
283  { 0x4, &IID_IShellService },
284  { 0x8, &IID_ITranslateShellChangeNotify },
285  { 0xc, &IID_IPersistFolder2 },
286  { 0xc, &IID_IPersistFolder },
287  { 0xc, &IID_IPersist },
288  { 0x10, &IID_IPersistPropertyBag },
289  { 0x14, &IID_IShellIconOverlay },
290  { 0x18, &IID_ICompositeFolder },
291  { 0x1c, &IID_IItemNameLimits },
292  }
293  },
294  {
295  ID_NAME(CLSID_MoveToMenu),
296  {
297  { 0x0, &IID_IContextMenu3 },
298  { 0x0, &IID_IContextMenu2 },
299  { 0x0, &IID_IContextMenu },
300  { 0x0, &IID_IUnknown },
301  { 0x4, &IID_IShellExtInit },
302  { 0x8, &IID_IObjectWithSite },
303  { 0x10, &IID_IFolderFilter },
304  }
305  },
306  {
307  ID_NAME(CLSID_MyComputer),
308  {
309  { 0x0, &IID_IUnknown },
310  { 0x10, &IID_IPersistFolder2 },
311  { 0x10, &IID_IPersistFolder },
312  { 0x10, &IID_IPersist },
313  { 0x10, &IID_IPersistFreeThreadedObject },
314  { FARAWY, &IID_IShellIconOverlay },
315  { FARAWY, &IID_IShellFolder2 },
316  { FARAWY, &IID_IShellFolder },
317  }
318  },
319  {
320  ID_NAME(CLSID_MyDocuments),
321  {
322  { -0x4, &IID_IPersistFolder },
323  { -0x4, &IID_IPersist },
324  { 0x0, &IID_IShellFolder2 },
325  { 0x0, &IID_IShellFolder },
326  { 0x0, &IID_IUnknown },
327  { 0x4, &IID_IShellIconOverlay },
328  { FARAWY, &IID_IShellIcon },
329  { FARAWY, &IID_IPersistFolder3 },
330  { FARAWY, &IID_IPersistFolder2 },
331  { FARAWY, &IID_IStorage },
332  { FARAWY, &IID_IContextMenuCB },
333  { FARAWY, &IID_IOleCommandTarget },
334  { FARAWY, &IID_IItemNameLimits },
335  { FARAWY, &IID_IPropertySetStorage },
336  }
337  },
338  {
339  ID_NAME(CLSID_NetworkPlaces),
340  {
341  { 0x0, &IID_IUnknown },
342  { 0x10, &IID_IPersistFolder3 },
343  { 0x10, &IID_IPersistFolder2 },
344  { 0x10, &IID_IPersistFolder },
345  { 0x10, &IID_IPersist },
346  { 0x10, &IID_IPersistFreeThreadedObject },
347  { FARAWY, &IID_IShellIconOverlay },
348  { FARAWY, &IID_IShellFolder2 },
349  { FARAWY, &IID_IShellFolder },
350  }
351  },
352  {
353  ID_NAME(CLSID_NewMenu),
354  {
355  { -0xc, &IID_IObjectWithSite },
356  { -0x4, &IID_IContextMenu3 },
357  { -0x4, &IID_IContextMenu2 },
358  { -0x4, &IID_IContextMenu },
359  { 0x0, &IID_IShellExtInit },
360  { 0x0, &IID_IUnknown },
361  }
362  },
363  {
364  ID_NAME(CLSID_PersonalStartMenu),
365  {
366  { -0x30, &IID_IDeskBand },
367  { -0x30, &IID_IDockingWindow },
368  { -0x30, &IID_IOleWindow },
369  { -0x2c, &IID_IObjectWithSite },
370  { -0x24, &IID_IInputObject },
371  { -0x20, &IID_IPersistStream },
372  { -0x20, &IID_IPersist },
373  { -0x1c, &IID_IOleCommandTarget },
374  { -0x18, &IID_IServiceProvider },
375  { 0x0, &IID_IMenuPopup },
376  { 0x0, &IID_IDeskBar },
377  { 0x0, &IID_IUnknown },
378  { 0x4, &IID_IMenuBand },
379  { 0x8, &IID_IShellMenu2 },
380  { 0x8, &IID_IShellMenu },
381  { 0xc, &IID_IWinEventHandler },
382  { 0x10, &IID_IShellMenuAcc },
383  }
384  },
385  {
386  ID_NAME(CLSID_Printers),
387  {
388  { -0xc, &IID_IRemoteComputer },
389  { -0x4, &IID_IFolderNotify },
390  { 0x0, &IID_IShellFolder2 },
391  { 0x0, &IID_IShellFolder },
392  { 0x0, &IID_IUnknown },
393  { 0x4, &IID_IPersistFolder2 },
394  { 0x4, &IID_IPersistFolder },
395  { 0x4, &IID_IPersist },
396  { 0x8, &IID_IContextMenuCB },
397  { 0xc, &IID_IShellIconOverlay },
398  }
399  },
400  {
401  ID_NAME(CLSID_QueryAssociations),
402  {
403  { 0x0, &IID_IAssociationArrayOld },
404  { 0x0, &IID_IUnknown },
405  { 0x4, &IID_IAssociationArrayInitialize },
406  { 0x8, &IID_IQueryAssociations },
407  }
408  },
409  {
410  ID_NAME(CLSID_QuickLinks),
411  {
412  { -0xac, &IID_IDeskBand },
413  { -0xac, &IID_IDockingWindow },
414  { -0xac, &IID_IOleWindow },
415  { -0xa8, &IID_IObjectWithSite },
416  { -0xa0, &IID_IInputObject },
417  { -0x9c, &IID_IPersistStream },
418  { -0x9c, &IID_IPersist },
419  { -0x98, &IID_IOleCommandTarget },
420  { -0x94, &IID_IServiceProvider },
421  { -0x78, &IID_IWinEventHandler },
422  { -0x74, &IID_IShellChangeNotify },
423  { -0x70, &IID_IDropTarget },
424  { -0x4, &IID_IContextMenu },
425  { 0x0, &IID_IShellFolderBand },
426  { 0x0, &IID_IUnknown },
427  { 0x94, &IID_IFolderBandPriv },
428  }
429  },
430  {
431  ID_NAME(CLSID_RecycleBin),
432  {
433  { 0x0, &IID_IPersistFolder2 },
434  { 0x0, &IID_IPersistFolder },
435  //{ 0x0, &IID_IPersist },
436  { 0x0, &IID_IUnknown },
437  { 0x4, &IID_IShellFolder2 },
438  { 0x4, &IID_IShellFolder },
439  { 0x8, &IID_IContextMenu },
440  { 0xc, &IID_IShellPropSheetExt },
441  { 0x10, &IID_IShellExtInit },
442  }
443  },
444  {
446  {
447  { -0x4, &IID_IContextMenu3 },
448  { -0x4, &IID_IContextMenu2 },
449  { -0x4, &IID_IContextMenu },
450  { 0x0, &IID_IShellExtInit },
451  { 0x0, &IID_IUnknown },
452  { 0x4, &IID_IOleWindow },
453  }
454  },
455  {
456  ID_NAME(CLSID_Shell),
457  {
458  { 0x0, &IID_IShellDispatch4 },
459  { 0x0, &IID_IShellDispatch3 },
460  { 0x0, &IID_IShellDispatch2 },
461  { 0x0, &IID_IShellDispatch },
462  { 0x0, &IID_IDispatch },
463  { 0x0, &IID_IUnknown },
464  { 0x4, &IID_IObjectSafety },
465  { 0x20, &IID_IObjectWithSite },
466  }
467  },
468  {
469  ID_NAME(CLSID_ShellDesktop),
470  {
471  { -0x8, &CLSID_ShellDesktop },
472  { -0x8, &IID_IObjectWithSite },
473  { 0x0, &IID_IUnknown },
474  { 0x4, &IID_IStorage },
475  { 0x8, &IID_IPersistFolder2 },
476  { 0x8, &IID_IPersistFolder },
477  { 0x8, &IID_IPersist },
478  { 0xc, &IID_IShellIcon },
479  { 0x14, &IID_IContextMenuCB },
480  { 0x18, &IID_ITranslateShellChangeNotify },
481  { 0x1c, &IID_IItemNameLimits },
482  { 0x20, &IID_IOleCommandTarget },
483  { FARAWY, &IID_IShellIconOverlay },
484  { FARAWY, &IID_IShellFolder2 },
485  { FARAWY, &IID_IShellFolder },
486  }
487  },
488  {
489  ID_NAME(CLSID_ShellFSFolder),
490  {
491  { 0x0, &IID_IUnknown },
492  { 0xc, &IID_IShellFolder2 },
493  { 0xc, &IID_IShellFolder },
494  { 0x10, &IID_IShellIcon },
495  { 0x14, &IID_IShellIconOverlay },
496  { 0x18, &IID_IPersistFolder3 },
497  { 0x18, &IID_IPersistFolder2 },
498  { 0x18, &IID_IPersistFolder },
499  { 0x18, &IID_IPersist },
500  { 0x18, &IID_IPersistFreeThreadedObject },
501  { 0x1c, &IID_IStorage },
502  { 0x24, &IID_IPropertySetStorage },
503  { 0x28, &IID_IItemNameLimits },
504  { 0x2c, &IID_IContextMenuCB },
505  { 0x34, &IID_IOleCommandTarget },
506  }
507  },
508  {
509  ID_NAME(CLSID_ShellFldSetExt),
510  {
511  { 0x0, &IID_IShellPropSheetExt },
512  { 0x0, &IID_IUnknown },
513  { 0x4, &IID_IShellExtInit },
514  { 0x8, &IID_IObjectWithSite },
515  }
516  },
517  {
518  ID_NAME(CLSID_ShellFolderView),
519  {
520  { 0x0, &IID_IShellFolderViewDual2 },
521  { 0x0, &IID_IShellFolderViewDual },
522  { 0x0, &IID_IDispatch },
523  { 0x0, &IID_IUnknown },
524  { 0x4, &IID_IShellService },
525  { 0x8, &IID_IServiceProvider },
526  { 0xc, &IID_IObjectSafety },
527  { 0x14, &IID_IObjectWithSite },
529  }
530  },
531  {
532  ID_NAME(CLSID_ShellFolderViewOC),
533  {
534  { 0x0, &IID_IFolderViewOC },
535  { 0x0, &IID_IDispatch },
536  { 0x0, &IID_IUnknown },
537  { 0x4, &IID_IProvideClassInfo2 },
538  { 0x4, &IID_IProvideClassInfo },
539  { 0x8, &IID_IObjectSafety },
541  { 0x88, &IID_IPersistStreamInit },
542  { 0x88, &IID_IPersist },
543  { 0x8c, &IID_IOleControl },
544  { 0x90, &IID_IOleObject },
545  { 0x94, &IID_IOleInPlaceActiveObject },
546  { 0x98, &IID_IOleInPlaceObjectWindowless },
547  { 0x98, &IID_IOleInPlaceObject },
548  { 0x98, &IID_IOleWindow },
549  }
550  },
551  {
552  ID_NAME(CLSID_ShellItem),
553  {
554  { 0x0, &IID_IShellItem },
555  { 0x0, &IID_IUnknown },
556  { 0x4, &IID_IPersistIDList },
557  { 0x8, &IID_IParentAndItem },
558  }
559  },
560  {
561  ID_NAME(CLSID_ShellLink),
562  {
563  { 0x0, &IID_IShellLinkA },
564  { 0x0, &IID_IUnknown },
565  { 0x4, &IID_IShellLinkW },
566  { 0x8, &IID_IPersistStream },
567  { 0xc, &IID_IPersistFile },
568  { 0x10, &IID_IShellExtInit },
569  { 0x14, &IID_IContextMenu3 },
570  { 0x14, &IID_IContextMenu2 },
571  { 0x14, &IID_IContextMenu },
572  { 0x18, &IID_IDropTarget },
573  { 0x1c, &IID_IQueryInfo },
574  { 0x20, &IID_IShellLinkDataList },
575  { 0x24, &IID_IExtractIconA },
576  { 0x28, &IID_IExtractIconW },
577  { 0x2c, &IID_IExtractImage2 },
578  { 0x2c, &IID_IExtractImage },
579  { 0x30, &IID_IPersistPropertyBag },
580  { 0x34, &IID_IServiceProvider },
581  { 0x38, &IID_IFilter },
582  { 0x3c, &IID_IObjectWithSite },
583  { 0x44, &IID_ICustomizeInfoTip },
584  { FARAWY, &IID_ISLTracker },
585  }
586  },
587 #if 0 // Apparently we can only get this through Folder.Items().GetLink
588  {
589  ID_NAME(CLSID_ShellLinkObject),
590  {
591  { 0x0, &IID_IUnknown },
592  }
593  },
594 #endif
595  {
597  {
598  { -0x48, &IID_IOleCommandTarget },
599  { -0x44, &IID_IServiceProvider },
600  { -0x40, &IID_IDeskBar },
601  { -0x40, &IID_IOleWindow },
602  { -0x3c, &IID_IInputObjectSite },
603  { -0x38, &IID_IInputObject },
604  { 0x0, &IID_IMenuPopup },
605  { 0x0, &IID_IUnknown },
606  { 0x4, &IID_IObjectWithSite },
607  { 0x8, &IID_IBanneredBar },
608  { 0xc, &IID_IInitializeObject },
609  }
610  },
611  {
612  ID_NAME(CLSID_StartMenuPin),
613  {
614  { 0x0, &IID_IShellExtInit },
615  { 0x0, &IID_IUnknown },
616  { 0x4, &IID_IContextMenu },
617  { 0xc, &IID_IObjectWithSite },
618  }
619  },
620  {
621  ID_NAME(CLSID_Thumbnail),
622  {
623  { 0x0, &IID_IUnknown },
624  { 0x4, &IID_IParentAndItem },
625  { 0x8, &IID_IObjectWithSite },
626  },
627  },
628  {
629  ID_NAME(CLSID_TrackShellMenu),
630  {
631  { 0x0, &IID_ITrackShellMenu },
632  { 0x0, &IID_IShellMenu },
633  { 0x0, &IID_IUnknown },
634  { 0x4, &IID_IShellMenu2 },
635  { 0x8, &IID_IObjectWithSite },
636  { 0xc, &IID_IServiceProvider },
637  }
638  },
639  {
640  ID_NAME(CLSID_UserNotification),
641  {
642  { 0x0, &IID_IUserNotification },
643  { 0x0, &IID_IUnknown },
644 // { 0x4, &IID_IUserNotification2 }, // On Vista+
645  }
646  },
647 };
649 
651 {
653 }
const GUID IID_IViewObject
const GUID IID_IOleInPlaceSite
const GUID IID_IOleClientSite
const GUID IID_IPersist
Definition: proxy.cpp:14
const GUID IID_IConnectionPointContainer
static const CLASS_AND_INTERFACES ExpectedInterfaces[]
Definition: shell32.c:13
int32_t INT
Definition: typedefs.h:56
#define ID_NAME(c)
Definition: com_apitest.c:38
static HANDLE shell32
Definition: animate.c:36
const GUID IID_IOleControlSite
const GUID IID_IPersistPropertyBag
Definition: proxy.cpp:11
const GUID IID_IProvideClassInfo
const GUID IID_IPropertyBag
const GUID IID_IProvideClassInfo2
const GUID IID_IOleInPlaceObject
const GUID IID_IOleObject
const GUID CLSID_StartMenu
const GUID IID_IUnknown
const IID IID_IObjectWithSite
#define FARAWY
Definition: com_apitest.h:70
const GUID IID_IPersistStream
Definition: proxy.cpp:13
const GUID IID_IDispatch
const GUID IID_IOleControl
const GUID CLSID_SendToMenu
Definition: CSendToMenu.h:24
static const WCHAR L[]
Definition: oid.c:1250
const GUID IID_IPersistStreamInit
const GUID CLSID_MenuBandSite
static const INT ExpectedInterfaceCount
Definition: shell32.c:648
const GUID IID_IViewObject2
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
START_TEST(shell32)
Definition: shell32.c:650
const GUID IID_IPersistFile
const GUID IID_IOleWindow
VOID TestClasses(_In_ PCWSTR ModuleName, _In_ PCCLASS_AND_INTERFACES ExpectedInterfaces, _In_ INT ExpectedInterfaceCount)
Definition: com_apitest.c:733
const GUID IID_IOleInPlaceActiveObject