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