Add missing wReserved1 member to DCB structure definition.
[wine] / include / shobjidl.h
1 /*** Autogenerated by WIDL 0.1 from shobjidl.idl - Do not edit ***/
2 #include <rpc.h>
3 #include <rpcndr.h>
4
5 #ifndef __WIDL_SHOBJIDL_H
6 #define __WIDL_SHOBJIDL_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include <objidl.h>
11 #include <oleidl.h>
12 #include <oaidl.h>
13 #include <shtypes.h>
14 #include <servprov.h>
15 #include <comcat.h>
16 #ifndef __IPersistFolder_FWD_DEFINED__
17 #define __IPersistFolder_FWD_DEFINED__
18 typedef struct IPersistFolder IPersistFolder;
19 #endif
20
21 typedef IPersistFolder *LPPERSISTFOLDER;
22
23 /*****************************************************************************
24  * IPersistFolder interface
25  */
26 #ifndef __IPersistFolder_INTERFACE_DEFINED__
27 #define __IPersistFolder_INTERFACE_DEFINED__
28
29 DEFINE_GUID(IID_IPersistFolder, 0x000214ea, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
30 #if defined(__cplusplus) && !defined(CINTERFACE)
31 struct IPersistFolder : public IPersist
32 {
33     virtual HRESULT STDMETHODCALLTYPE Initialize(
34         LPCITEMIDLIST pidl) = 0;
35
36 };
37 #else
38 typedef struct IPersistFolderVtbl IPersistFolderVtbl;
39 struct IPersistFolder {
40     const IPersistFolderVtbl* lpVtbl;
41 };
42 struct IPersistFolderVtbl {
43     ICOM_MSVTABLE_COMPAT_FIELDS
44
45     /*** IUnknown methods ***/
46     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
47         IPersistFolder* This,
48         REFIID riid,
49         void** ppvObject);
50
51     ULONG (STDMETHODCALLTYPE *AddRef)(
52         IPersistFolder* This);
53
54     ULONG (STDMETHODCALLTYPE *Release)(
55         IPersistFolder* This);
56
57     /*** IPersist methods ***/
58     HRESULT (STDMETHODCALLTYPE *GetClassID)(
59         IPersistFolder* This,
60         CLSID* pClassID);
61
62     /*** IPersistFolder methods ***/
63     HRESULT (STDMETHODCALLTYPE *Initialize)(
64         IPersistFolder* This,
65         LPCITEMIDLIST pidl);
66
67 };
68
69 /*** IUnknown methods ***/
70 #define IPersistFolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
71 #define IPersistFolder_AddRef(p) (p)->lpVtbl->AddRef(p)
72 #define IPersistFolder_Release(p) (p)->lpVtbl->Release(p)
73 /*** IPersist methods ***/
74 #define IPersistFolder_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
75 /*** IPersistFolder methods ***/
76 #define IPersistFolder_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
77
78 #endif
79
80 #define IPersistFolder_METHODS \
81     ICOM_MSVTABLE_COMPAT_FIELDS \
82     /*** IUnknown methods ***/ \
83     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
84     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
85     STDMETHOD_(ULONG,Release)(THIS) PURE; \
86     /*** IPersist methods ***/ \
87     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
88     /*** IPersistFolder methods ***/ \
89     STDMETHOD_(HRESULT,Initialize)(THIS_ LPCITEMIDLIST pidl) PURE;
90
91 HRESULT CALLBACK IPersistFolder_Initialize_Proxy(
92     IPersistFolder* This,
93     LPCITEMIDLIST pidl);
94 void __RPC_STUB IPersistFolder_Initialize_Stub(
95     struct IRpcStubBuffer* This,
96     struct IRpcChannelBuffer* pRpcChannelBuffer,
97     PRPC_MESSAGE pRpcMessage,
98     DWORD* pdwStubPhase);
99
100 #endif  /* __IPersistFolder_INTERFACE_DEFINED__ */
101
102 #ifndef __IPersistFolder2_FWD_DEFINED__
103 #define __IPersistFolder2_FWD_DEFINED__
104 typedef struct IPersistFolder2 IPersistFolder2;
105 #endif
106
107 typedef IPersistFolder2 *LPPERSISTFOLDER2;
108
109 /*****************************************************************************
110  * IPersistFolder2 interface
111  */
112 #ifndef __IPersistFolder2_INTERFACE_DEFINED__
113 #define __IPersistFolder2_INTERFACE_DEFINED__
114
115 DEFINE_GUID(IID_IPersistFolder2, 0x1ac3d9f0, 0x175c, 0x11d1, 0x95,0xbe, 0x00,0x60,0x97,0x97,0xea,0x4f);
116 #if defined(__cplusplus) && !defined(CINTERFACE)
117 struct IPersistFolder2 : public IPersistFolder
118 {
119     virtual HRESULT STDMETHODCALLTYPE GetCurFolder(
120         LPITEMIDLIST* ppidl) = 0;
121
122 };
123 #else
124 typedef struct IPersistFolder2Vtbl IPersistFolder2Vtbl;
125 struct IPersistFolder2 {
126     const IPersistFolder2Vtbl* lpVtbl;
127 };
128 struct IPersistFolder2Vtbl {
129     ICOM_MSVTABLE_COMPAT_FIELDS
130
131     /*** IUnknown methods ***/
132     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
133         IPersistFolder2* This,
134         REFIID riid,
135         void** ppvObject);
136
137     ULONG (STDMETHODCALLTYPE *AddRef)(
138         IPersistFolder2* This);
139
140     ULONG (STDMETHODCALLTYPE *Release)(
141         IPersistFolder2* This);
142
143     /*** IPersist methods ***/
144     HRESULT (STDMETHODCALLTYPE *GetClassID)(
145         IPersistFolder2* This,
146         CLSID* pClassID);
147
148     /*** IPersistFolder methods ***/
149     HRESULT (STDMETHODCALLTYPE *Initialize)(
150         IPersistFolder2* This,
151         LPCITEMIDLIST pidl);
152
153     /*** IPersistFolder2 methods ***/
154     HRESULT (STDMETHODCALLTYPE *GetCurFolder)(
155         IPersistFolder2* This,
156         LPITEMIDLIST* ppidl);
157
158 };
159
160 /*** IUnknown methods ***/
161 #define IPersistFolder2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
162 #define IPersistFolder2_AddRef(p) (p)->lpVtbl->AddRef(p)
163 #define IPersistFolder2_Release(p) (p)->lpVtbl->Release(p)
164 /*** IPersist methods ***/
165 #define IPersistFolder2_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
166 /*** IPersistFolder methods ***/
167 #define IPersistFolder2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
168 /*** IPersistFolder2 methods ***/
169 #define IPersistFolder2_GetCurFolder(p,a) (p)->lpVtbl->GetCurFolder(p,a)
170
171 #endif
172
173 #define IPersistFolder2_METHODS \
174     ICOM_MSVTABLE_COMPAT_FIELDS \
175     /*** IUnknown methods ***/ \
176     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
177     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
178     STDMETHOD_(ULONG,Release)(THIS) PURE; \
179     /*** IPersist methods ***/ \
180     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
181     /*** IPersistFolder methods ***/ \
182     STDMETHOD_(HRESULT,Initialize)(THIS_ LPCITEMIDLIST pidl) PURE; \
183     /*** IPersistFolder2 methods ***/ \
184     STDMETHOD_(HRESULT,GetCurFolder)(THIS_ LPITEMIDLIST* ppidl) PURE;
185
186 HRESULT CALLBACK IPersistFolder2_GetCurFolder_Proxy(
187     IPersistFolder2* This,
188     LPITEMIDLIST* ppidl);
189 void __RPC_STUB IPersistFolder2_GetCurFolder_Stub(
190     struct IRpcStubBuffer* This,
191     struct IRpcChannelBuffer* pRpcChannelBuffer,
192     PRPC_MESSAGE pRpcMessage,
193     DWORD* pdwStubPhase);
194
195 #endif  /* __IPersistFolder2_INTERFACE_DEFINED__ */
196
197 #ifndef __IEnumIDList_FWD_DEFINED__
198 #define __IEnumIDList_FWD_DEFINED__
199 typedef struct IEnumIDList IEnumIDList;
200 #endif
201
202 typedef IEnumIDList *LPENUMIDLIST;
203
204 /*****************************************************************************
205  * IEnumIDList interface
206  */
207 #ifndef __IEnumIDList_INTERFACE_DEFINED__
208 #define __IEnumIDList_INTERFACE_DEFINED__
209
210 DEFINE_GUID(IID_IEnumIDList, 0x000214f2, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
211 #if defined(__cplusplus) && !defined(CINTERFACE)
212 struct IEnumIDList : public IUnknown
213 {
214     virtual HRESULT STDMETHODCALLTYPE Next(
215         ULONG celt,
216         LPITEMIDLIST* rgelt,
217         ULONG* pceltFetched) = 0;
218
219     virtual HRESULT STDMETHODCALLTYPE Skip(
220         ULONG celt) = 0;
221
222     virtual HRESULT STDMETHODCALLTYPE Reset(
223         ) = 0;
224
225     virtual HRESULT STDMETHODCALLTYPE Clone(
226         IEnumIDList** ppenum) = 0;
227
228 };
229 #else
230 typedef struct IEnumIDListVtbl IEnumIDListVtbl;
231 struct IEnumIDList {
232     const IEnumIDListVtbl* lpVtbl;
233 };
234 struct IEnumIDListVtbl {
235     ICOM_MSVTABLE_COMPAT_FIELDS
236
237     /*** IUnknown methods ***/
238     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
239         IEnumIDList* This,
240         REFIID riid,
241         void** ppvObject);
242
243     ULONG (STDMETHODCALLTYPE *AddRef)(
244         IEnumIDList* This);
245
246     ULONG (STDMETHODCALLTYPE *Release)(
247         IEnumIDList* This);
248
249     /*** IEnumIDList methods ***/
250     HRESULT (STDMETHODCALLTYPE *Next)(
251         IEnumIDList* This,
252         ULONG celt,
253         LPITEMIDLIST* rgelt,
254         ULONG* pceltFetched);
255
256     HRESULT (STDMETHODCALLTYPE *Skip)(
257         IEnumIDList* This,
258         ULONG celt);
259
260     HRESULT (STDMETHODCALLTYPE *Reset)(
261         IEnumIDList* This);
262
263     HRESULT (STDMETHODCALLTYPE *Clone)(
264         IEnumIDList* This,
265         IEnumIDList** ppenum);
266
267 };
268
269 /*** IUnknown methods ***/
270 #define IEnumIDList_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
271 #define IEnumIDList_AddRef(p) (p)->lpVtbl->AddRef(p)
272 #define IEnumIDList_Release(p) (p)->lpVtbl->Release(p)
273 /*** IEnumIDList methods ***/
274 #define IEnumIDList_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
275 #define IEnumIDList_Skip(p,a) (p)->lpVtbl->Skip(p,a)
276 #define IEnumIDList_Reset(p) (p)->lpVtbl->Reset(p)
277 #define IEnumIDList_Clone(p,a) (p)->lpVtbl->Clone(p,a)
278
279 #endif
280
281 #define IEnumIDList_METHODS \
282     ICOM_MSVTABLE_COMPAT_FIELDS \
283     /*** IUnknown methods ***/ \
284     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
285     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
286     STDMETHOD_(ULONG,Release)(THIS) PURE; \
287     /*** IEnumIDList methods ***/ \
288     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, LPITEMIDLIST* rgelt, ULONG* pceltFetched) PURE; \
289     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
290     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
291     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumIDList** ppenum) PURE;
292
293 HRESULT CALLBACK IEnumIDList_Next_Proxy(
294     IEnumIDList* This,
295     ULONG celt,
296     LPITEMIDLIST* rgelt,
297     ULONG* pceltFetched);
298 void __RPC_STUB IEnumIDList_Next_Stub(
299     struct IRpcStubBuffer* This,
300     struct IRpcChannelBuffer* pRpcChannelBuffer,
301     PRPC_MESSAGE pRpcMessage,
302     DWORD* pdwStubPhase);
303 HRESULT CALLBACK IEnumIDList_Skip_Proxy(
304     IEnumIDList* This,
305     ULONG celt);
306 void __RPC_STUB IEnumIDList_Skip_Stub(
307     struct IRpcStubBuffer* This,
308     struct IRpcChannelBuffer* pRpcChannelBuffer,
309     PRPC_MESSAGE pRpcMessage,
310     DWORD* pdwStubPhase);
311 HRESULT CALLBACK IEnumIDList_Reset_Proxy(
312     IEnumIDList* This);
313 void __RPC_STUB IEnumIDList_Reset_Stub(
314     struct IRpcStubBuffer* This,
315     struct IRpcChannelBuffer* pRpcChannelBuffer,
316     PRPC_MESSAGE pRpcMessage,
317     DWORD* pdwStubPhase);
318 HRESULT CALLBACK IEnumIDList_Clone_Proxy(
319     IEnumIDList* This,
320     IEnumIDList** ppenum);
321 void __RPC_STUB IEnumIDList_Clone_Stub(
322     struct IRpcStubBuffer* This,
323     struct IRpcChannelBuffer* pRpcChannelBuffer,
324     PRPC_MESSAGE pRpcMessage,
325     DWORD* pdwStubPhase);
326
327 #endif  /* __IEnumIDList_INTERFACE_DEFINED__ */
328
329 #ifndef __IShellFolder_FWD_DEFINED__
330 #define __IShellFolder_FWD_DEFINED__
331 typedef struct IShellFolder IShellFolder;
332 #endif
333
334 typedef IShellFolder *LPSHELLFOLDER;
335
336 typedef enum tagSHGDN {
337     SHGDN_NORMAL = 0,
338     SHGDN_INFOLDER = 1,
339     SHGDN_FOREDITING = 0x1000,
340     SHGDN_INCLUDE_NONFILESYS = 0x2000,
341     SHGDN_FORADDRESSBAR = 0x4000,
342     SHGDN_FORPARSING = 0x8000
343 } SHGNO;
344
345 typedef DWORD SHGDNF;
346
347 enum tagSHCONTF {
348     SHCONTF_FOLDERS = 32,
349     SHCONTF_NONFOLDERS = 64,
350     SHCONTF_INCLUDEHIDDEN = 128,
351     SHCONTF_INIT_ON_FIRST_NEXT = 256,
352     SHCONTF_NETPRINTERSRCH = 512,
353     SHCONTF_SHAREABLE = 1024,
354     SHCONTF_STORAGE = 2048
355 };
356
357 typedef DWORD SHCONTF;
358
359 #define SFGAO_CANCOPY           DROPEFFECT_COPY
360 #define SFGAO_CANMOVE           DROPEFFECT_MOVE
361 #define SFGAO_CANLINK           DROPEFFECT_LINK
362 #define SFGAO_CANRENAME         0x00000010L
363 #define SFGAO_CANDELETE         0x00000020L
364 #define SFGAO_HASPROPSHEET      0x00000040L
365 #define SFGAO_DROPTARGET        0x00000100L
366 #define SFGAO_CAPABILITYMASK    0x00000177L
367 #define SFGAO_LINK              0x00010000L
368 #define SFGAO_SHARE             0x00020000L
369 #define SFGAO_READONLY          0x00040000L
370 #define SFGAO_GHOSTED           0x00080000L
371 #define SFGAO_HIDDEN            0x00080000L
372 #define SFGAO_DISPLAYATTRMASK   0x000F0000L
373 #define SFGAO_FILESYSANCESTOR   0x10000000L
374 #define SFGAO_FOLDER            0x20000000L
375 #define SFGAO_FILESYSTEM        0x40000000L
376 #define SFGAO_HASSUBFOLDER      0x80000000L
377 #define SFGAO_CONTENTSMASK      0x80000000L
378 #define SFGAO_VALIDATE          0x01000000L
379 #define SFGAO_REMOVABLE         0x02000000L
380 #define SFGAO_COMPRESSED        0x04000000L
381 #define SFGAO_BROWSABLE         0x08000000L
382 #define SFGAO_NONENUMERATED     0x00100000L
383 #define SFGAO_NEWCONTENT        0x00200000L
384 typedef ULONG SFGAOF;
385
386 /*****************************************************************************
387  * IShellFolder interface
388  */
389 #ifndef __IShellFolder_INTERFACE_DEFINED__
390 #define __IShellFolder_INTERFACE_DEFINED__
391
392 DEFINE_GUID(IID_IShellFolder, 0x000214e6, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
393 #if defined(__cplusplus) && !defined(CINTERFACE)
394 struct IShellFolder : public IUnknown
395 {
396     virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
397         HWND hwndOwner,
398         LPBC pbcReserved,
399         LPOLESTR lpszDisplayName,
400         ULONG* pchEaten,
401         LPITEMIDLIST* ppidl,
402         ULONG* pdwAttributes) = 0;
403
404     virtual HRESULT STDMETHODCALLTYPE EnumObjects(
405         HWND hwndOwner,
406         SHCONTF grfFlags,
407         IEnumIDList** ppenumIDList) = 0;
408
409     virtual HRESULT STDMETHODCALLTYPE BindToObject(
410         LPCITEMIDLIST pidl,
411         LPBC pbcReserved,
412         REFIID riid,
413         void** ppvOut) = 0;
414
415     virtual HRESULT STDMETHODCALLTYPE BindToStorage(
416         LPCITEMIDLIST pidl,
417         LPBC pbcReserved,
418         REFIID riid,
419         void** ppvObj) = 0;
420
421     virtual HRESULT STDMETHODCALLTYPE CompareIDs(
422         LPARAM lParam,
423         LPCITEMIDLIST pidl1,
424         LPCITEMIDLIST pidl2) = 0;
425
426     virtual HRESULT STDMETHODCALLTYPE CreateViewObject(
427         HWND hwndOwner,
428         REFIID riid,
429         void** ppvOut) = 0;
430
431     virtual HRESULT STDMETHODCALLTYPE GetAttributesOf(
432         UINT cidl,
433         LPCITEMIDLIST* apidl,
434         SFGAOF* rgfInOut) = 0;
435
436     virtual HRESULT STDMETHODCALLTYPE GetUIObjectOf(
437         HWND hwndOwner,
438         UINT cidl,
439         LPCITEMIDLIST* apidl,
440         REFIID riid,
441         UINT* prgfInOut,
442         void** ppvOut) = 0;
443
444     virtual HRESULT STDMETHODCALLTYPE GetDisplayNameOf(
445         LPCITEMIDLIST pidl,
446         SHGDNF uFlags,
447         STRRET* lpName) = 0;
448
449     virtual HRESULT STDMETHODCALLTYPE SetNameOf(
450         HWND hwnd,
451         LPCITEMIDLIST pidl,
452         LPCOLESTR lpszName,
453         SHGDNF uFlags,
454         LPITEMIDLIST* ppidlOut) = 0;
455
456 };
457 #else
458 typedef struct IShellFolderVtbl IShellFolderVtbl;
459 struct IShellFolder {
460     const IShellFolderVtbl* lpVtbl;
461 };
462 struct IShellFolderVtbl {
463     ICOM_MSVTABLE_COMPAT_FIELDS
464
465     /*** IUnknown methods ***/
466     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
467         IShellFolder* This,
468         REFIID riid,
469         void** ppvObject);
470
471     ULONG (STDMETHODCALLTYPE *AddRef)(
472         IShellFolder* This);
473
474     ULONG (STDMETHODCALLTYPE *Release)(
475         IShellFolder* This);
476
477     /*** IShellFolder methods ***/
478     HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
479         IShellFolder* This,
480         HWND hwndOwner,
481         LPBC pbcReserved,
482         LPOLESTR lpszDisplayName,
483         ULONG* pchEaten,
484         LPITEMIDLIST* ppidl,
485         ULONG* pdwAttributes);
486
487     HRESULT (STDMETHODCALLTYPE *EnumObjects)(
488         IShellFolder* This,
489         HWND hwndOwner,
490         SHCONTF grfFlags,
491         IEnumIDList** ppenumIDList);
492
493     HRESULT (STDMETHODCALLTYPE *BindToObject)(
494         IShellFolder* This,
495         LPCITEMIDLIST pidl,
496         LPBC pbcReserved,
497         REFIID riid,
498         void** ppvOut);
499
500     HRESULT (STDMETHODCALLTYPE *BindToStorage)(
501         IShellFolder* This,
502         LPCITEMIDLIST pidl,
503         LPBC pbcReserved,
504         REFIID riid,
505         void** ppvObj);
506
507     HRESULT (STDMETHODCALLTYPE *CompareIDs)(
508         IShellFolder* This,
509         LPARAM lParam,
510         LPCITEMIDLIST pidl1,
511         LPCITEMIDLIST pidl2);
512
513     HRESULT (STDMETHODCALLTYPE *CreateViewObject)(
514         IShellFolder* This,
515         HWND hwndOwner,
516         REFIID riid,
517         void** ppvOut);
518
519     HRESULT (STDMETHODCALLTYPE *GetAttributesOf)(
520         IShellFolder* This,
521         UINT cidl,
522         LPCITEMIDLIST* apidl,
523         SFGAOF* rgfInOut);
524
525     HRESULT (STDMETHODCALLTYPE *GetUIObjectOf)(
526         IShellFolder* This,
527         HWND hwndOwner,
528         UINT cidl,
529         LPCITEMIDLIST* apidl,
530         REFIID riid,
531         UINT* prgfInOut,
532         void** ppvOut);
533
534     HRESULT (STDMETHODCALLTYPE *GetDisplayNameOf)(
535         IShellFolder* This,
536         LPCITEMIDLIST pidl,
537         SHGDNF uFlags,
538         STRRET* lpName);
539
540     HRESULT (STDMETHODCALLTYPE *SetNameOf)(
541         IShellFolder* This,
542         HWND hwnd,
543         LPCITEMIDLIST pidl,
544         LPCOLESTR lpszName,
545         SHGDNF uFlags,
546         LPITEMIDLIST* ppidlOut);
547
548 };
549
550 /*** IUnknown methods ***/
551 #define IShellFolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
552 #define IShellFolder_AddRef(p) (p)->lpVtbl->AddRef(p)
553 #define IShellFolder_Release(p) (p)->lpVtbl->Release(p)
554 /*** IShellFolder methods ***/
555 #define IShellFolder_ParseDisplayName(p,a,b,c,d,e,f) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d,e,f)
556 #define IShellFolder_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
557 #define IShellFolder_BindToObject(p,a,b,c,d) (p)->lpVtbl->BindToObject(p,a,b,c,d)
558 #define IShellFolder_BindToStorage(p,a,b,c,d) (p)->lpVtbl->BindToStorage(p,a,b,c,d)
559 #define IShellFolder_CompareIDs(p,a,b,c) (p)->lpVtbl->CompareIDs(p,a,b,c)
560 #define IShellFolder_CreateViewObject(p,a,b,c) (p)->lpVtbl->CreateViewObject(p,a,b,c)
561 #define IShellFolder_GetAttributesOf(p,a,b,c) (p)->lpVtbl->GetAttributesOf(p,a,b,c)
562 #define IShellFolder_GetUIObjectOf(p,a,b,c,d,e,f) (p)->lpVtbl->GetUIObjectOf(p,a,b,c,d,e,f)
563 #define IShellFolder_GetDisplayNameOf(p,a,b,c) (p)->lpVtbl->GetDisplayNameOf(p,a,b,c)
564 #define IShellFolder_SetNameOf(p,a,b,c,d,e) (p)->lpVtbl->SetNameOf(p,a,b,c,d,e)
565
566 #endif
567
568 #define IShellFolder_METHODS \
569     ICOM_MSVTABLE_COMPAT_FIELDS \
570     /*** IUnknown methods ***/ \
571     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
572     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
573     STDMETHOD_(ULONG,Release)(THIS) PURE; \
574     /*** IShellFolder methods ***/ \
575     STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ HWND hwndOwner, LPBC pbcReserved, LPOLESTR lpszDisplayName, ULONG* pchEaten, LPITEMIDLIST* ppidl, ULONG* pdwAttributes) PURE; \
576     STDMETHOD_(HRESULT,EnumObjects)(THIS_ HWND hwndOwner, SHCONTF grfFlags, IEnumIDList** ppenumIDList) PURE; \
577     STDMETHOD_(HRESULT,BindToObject)(THIS_ LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, void** ppvOut) PURE; \
578     STDMETHOD_(HRESULT,BindToStorage)(THIS_ LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, void** ppvObj) PURE; \
579     STDMETHOD_(HRESULT,CompareIDs)(THIS_ LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) PURE; \
580     STDMETHOD_(HRESULT,CreateViewObject)(THIS_ HWND hwndOwner, REFIID riid, void** ppvOut) PURE; \
581     STDMETHOD_(HRESULT,GetAttributesOf)(THIS_ UINT cidl, LPCITEMIDLIST* apidl, SFGAOF* rgfInOut) PURE; \
582     STDMETHOD_(HRESULT,GetUIObjectOf)(THIS_ HWND hwndOwner, UINT cidl, LPCITEMIDLIST* apidl, REFIID riid, UINT* prgfInOut, void** ppvOut) PURE; \
583     STDMETHOD_(HRESULT,GetDisplayNameOf)(THIS_ LPCITEMIDLIST pidl, SHGDNF uFlags, STRRET* lpName) PURE; \
584     STDMETHOD_(HRESULT,SetNameOf)(THIS_ HWND hwnd, LPCITEMIDLIST pidl, LPCOLESTR lpszName, SHGDNF uFlags, LPITEMIDLIST* ppidlOut) PURE;
585
586 HRESULT CALLBACK IShellFolder_ParseDisplayName_Proxy(
587     IShellFolder* This,
588     HWND hwndOwner,
589     LPBC pbcReserved,
590     LPOLESTR lpszDisplayName,
591     ULONG* pchEaten,
592     LPITEMIDLIST* ppidl,
593     ULONG* pdwAttributes);
594 void __RPC_STUB IShellFolder_ParseDisplayName_Stub(
595     struct IRpcStubBuffer* This,
596     struct IRpcChannelBuffer* pRpcChannelBuffer,
597     PRPC_MESSAGE pRpcMessage,
598     DWORD* pdwStubPhase);
599 HRESULT CALLBACK IShellFolder_EnumObjects_Proxy(
600     IShellFolder* This,
601     HWND hwndOwner,
602     SHCONTF grfFlags,
603     IEnumIDList** ppenumIDList);
604 void __RPC_STUB IShellFolder_EnumObjects_Stub(
605     struct IRpcStubBuffer* This,
606     struct IRpcChannelBuffer* pRpcChannelBuffer,
607     PRPC_MESSAGE pRpcMessage,
608     DWORD* pdwStubPhase);
609 HRESULT CALLBACK IShellFolder_BindToObject_Proxy(
610     IShellFolder* This,
611     LPCITEMIDLIST pidl,
612     LPBC pbcReserved,
613     REFIID riid,
614     void** ppvOut);
615 void __RPC_STUB IShellFolder_BindToObject_Stub(
616     struct IRpcStubBuffer* This,
617     struct IRpcChannelBuffer* pRpcChannelBuffer,
618     PRPC_MESSAGE pRpcMessage,
619     DWORD* pdwStubPhase);
620 HRESULT CALLBACK IShellFolder_BindToStorage_Proxy(
621     IShellFolder* This,
622     LPCITEMIDLIST pidl,
623     LPBC pbcReserved,
624     REFIID riid,
625     void** ppvObj);
626 void __RPC_STUB IShellFolder_BindToStorage_Stub(
627     struct IRpcStubBuffer* This,
628     struct IRpcChannelBuffer* pRpcChannelBuffer,
629     PRPC_MESSAGE pRpcMessage,
630     DWORD* pdwStubPhase);
631 HRESULT CALLBACK IShellFolder_CompareIDs_Proxy(
632     IShellFolder* This,
633     LPARAM lParam,
634     LPCITEMIDLIST pidl1,
635     LPCITEMIDLIST pidl2);
636 void __RPC_STUB IShellFolder_CompareIDs_Stub(
637     struct IRpcStubBuffer* This,
638     struct IRpcChannelBuffer* pRpcChannelBuffer,
639     PRPC_MESSAGE pRpcMessage,
640     DWORD* pdwStubPhase);
641 HRESULT CALLBACK IShellFolder_CreateViewObject_Proxy(
642     IShellFolder* This,
643     HWND hwndOwner,
644     REFIID riid,
645     void** ppvOut);
646 void __RPC_STUB IShellFolder_CreateViewObject_Stub(
647     struct IRpcStubBuffer* This,
648     struct IRpcChannelBuffer* pRpcChannelBuffer,
649     PRPC_MESSAGE pRpcMessage,
650     DWORD* pdwStubPhase);
651 HRESULT CALLBACK IShellFolder_GetAttributesOf_Proxy(
652     IShellFolder* This,
653     UINT cidl,
654     LPCITEMIDLIST* apidl,
655     SFGAOF* rgfInOut);
656 void __RPC_STUB IShellFolder_GetAttributesOf_Stub(
657     struct IRpcStubBuffer* This,
658     struct IRpcChannelBuffer* pRpcChannelBuffer,
659     PRPC_MESSAGE pRpcMessage,
660     DWORD* pdwStubPhase);
661 HRESULT CALLBACK IShellFolder_GetUIObjectOf_Proxy(
662     IShellFolder* This,
663     HWND hwndOwner,
664     UINT cidl,
665     LPCITEMIDLIST* apidl,
666     REFIID riid,
667     UINT* prgfInOut,
668     void** ppvOut);
669 void __RPC_STUB IShellFolder_GetUIObjectOf_Stub(
670     struct IRpcStubBuffer* This,
671     struct IRpcChannelBuffer* pRpcChannelBuffer,
672     PRPC_MESSAGE pRpcMessage,
673     DWORD* pdwStubPhase);
674 HRESULT CALLBACK IShellFolder_GetDisplayNameOf_Proxy(
675     IShellFolder* This,
676     LPCITEMIDLIST pidl,
677     SHGDNF uFlags,
678     STRRET* lpName);
679 void __RPC_STUB IShellFolder_GetDisplayNameOf_Stub(
680     struct IRpcStubBuffer* This,
681     struct IRpcChannelBuffer* pRpcChannelBuffer,
682     PRPC_MESSAGE pRpcMessage,
683     DWORD* pdwStubPhase);
684 HRESULT CALLBACK IShellFolder_SetNameOf_Proxy(
685     IShellFolder* This,
686     HWND hwnd,
687     LPCITEMIDLIST pidl,
688     LPCOLESTR lpszName,
689     SHGDNF uFlags,
690     LPITEMIDLIST* ppidlOut);
691 void __RPC_STUB IShellFolder_SetNameOf_Stub(
692     struct IRpcStubBuffer* This,
693     struct IRpcChannelBuffer* pRpcChannelBuffer,
694     PRPC_MESSAGE pRpcMessage,
695     DWORD* pdwStubPhase);
696
697 #endif  /* __IShellFolder_INTERFACE_DEFINED__ */
698
699 #ifndef __IEnumExtraSearch_FWD_DEFINED__
700 #define __IEnumExtraSearch_FWD_DEFINED__
701 typedef struct IEnumExtraSearch IEnumExtraSearch;
702 #endif
703
704 typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
705
706 typedef struct {
707     GUID guidSearch;
708     WCHAR wszFriendlyName[80];
709     WCHAR wszUrl[2084];
710 } EXTRASEARCH, *LPEXTRASEARCH;
711
712 /*****************************************************************************
713  * IEnumExtraSearch interface
714  */
715 #ifndef __IEnumExtraSearch_INTERFACE_DEFINED__
716 #define __IEnumExtraSearch_INTERFACE_DEFINED__
717
718 DEFINE_GUID(IID_IEnumExtraSearch, 0x0e700be1, 0x9db6, 0x11d1, 0xa1,0xce, 0x00,0xc0,0x4f,0xd7,0x5d,0x13);
719 #if defined(__cplusplus) && !defined(CINTERFACE)
720 struct IEnumExtraSearch : public IUnknown
721 {
722     virtual HRESULT STDMETHODCALLTYPE Next(
723         ULONG celt,
724         EXTRASEARCH* rgelt,
725         ULONG* pceltFetched) = 0;
726
727     virtual HRESULT STDMETHODCALLTYPE Skip(
728         ULONG celt) = 0;
729
730     virtual HRESULT STDMETHODCALLTYPE Reset(
731         ) = 0;
732
733     virtual HRESULT STDMETHODCALLTYPE Clone(
734         IEnumExtraSearch** ppenum) = 0;
735
736 };
737 #else
738 typedef struct IEnumExtraSearchVtbl IEnumExtraSearchVtbl;
739 struct IEnumExtraSearch {
740     const IEnumExtraSearchVtbl* lpVtbl;
741 };
742 struct IEnumExtraSearchVtbl {
743     ICOM_MSVTABLE_COMPAT_FIELDS
744
745     /*** IUnknown methods ***/
746     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
747         IEnumExtraSearch* This,
748         REFIID riid,
749         void** ppvObject);
750
751     ULONG (STDMETHODCALLTYPE *AddRef)(
752         IEnumExtraSearch* This);
753
754     ULONG (STDMETHODCALLTYPE *Release)(
755         IEnumExtraSearch* This);
756
757     /*** IEnumExtraSearch methods ***/
758     HRESULT (STDMETHODCALLTYPE *Next)(
759         IEnumExtraSearch* This,
760         ULONG celt,
761         EXTRASEARCH* rgelt,
762         ULONG* pceltFetched);
763
764     HRESULT (STDMETHODCALLTYPE *Skip)(
765         IEnumExtraSearch* This,
766         ULONG celt);
767
768     HRESULT (STDMETHODCALLTYPE *Reset)(
769         IEnumExtraSearch* This);
770
771     HRESULT (STDMETHODCALLTYPE *Clone)(
772         IEnumExtraSearch* This,
773         IEnumExtraSearch** ppenum);
774
775 };
776
777 /*** IUnknown methods ***/
778 #define IEnumExtraSearch_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
779 #define IEnumExtraSearch_AddRef(p) (p)->lpVtbl->AddRef(p)
780 #define IEnumExtraSearch_Release(p) (p)->lpVtbl->Release(p)
781 /*** IEnumExtraSearch methods ***/
782 #define IEnumExtraSearch_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
783 #define IEnumExtraSearch_Skip(p,a) (p)->lpVtbl->Skip(p,a)
784 #define IEnumExtraSearch_Reset(p) (p)->lpVtbl->Reset(p)
785 #define IEnumExtraSearch_Clone(p,a) (p)->lpVtbl->Clone(p,a)
786
787 #endif
788
789 #define IEnumExtraSearch_METHODS \
790     ICOM_MSVTABLE_COMPAT_FIELDS \
791     /*** IUnknown methods ***/ \
792     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
793     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
794     STDMETHOD_(ULONG,Release)(THIS) PURE; \
795     /*** IEnumExtraSearch methods ***/ \
796     STDMETHOD_(HRESULT,Next)(THIS_ ULONG celt, EXTRASEARCH* rgelt, ULONG* pceltFetched) PURE; \
797     STDMETHOD_(HRESULT,Skip)(THIS_ ULONG celt) PURE; \
798     STDMETHOD_(HRESULT,Reset)(THIS) PURE; \
799     STDMETHOD_(HRESULT,Clone)(THIS_ IEnumExtraSearch** ppenum) PURE;
800
801 HRESULT CALLBACK IEnumExtraSearch_Next_Proxy(
802     IEnumExtraSearch* This,
803     ULONG celt,
804     EXTRASEARCH* rgelt,
805     ULONG* pceltFetched);
806 void __RPC_STUB IEnumExtraSearch_Next_Stub(
807     struct IRpcStubBuffer* This,
808     struct IRpcChannelBuffer* pRpcChannelBuffer,
809     PRPC_MESSAGE pRpcMessage,
810     DWORD* pdwStubPhase);
811 HRESULT CALLBACK IEnumExtraSearch_Skip_Proxy(
812     IEnumExtraSearch* This,
813     ULONG celt);
814 void __RPC_STUB IEnumExtraSearch_Skip_Stub(
815     struct IRpcStubBuffer* This,
816     struct IRpcChannelBuffer* pRpcChannelBuffer,
817     PRPC_MESSAGE pRpcMessage,
818     DWORD* pdwStubPhase);
819 HRESULT CALLBACK IEnumExtraSearch_Reset_Proxy(
820     IEnumExtraSearch* This);
821 void __RPC_STUB IEnumExtraSearch_Reset_Stub(
822     struct IRpcStubBuffer* This,
823     struct IRpcChannelBuffer* pRpcChannelBuffer,
824     PRPC_MESSAGE pRpcMessage,
825     DWORD* pdwStubPhase);
826 HRESULT CALLBACK IEnumExtraSearch_Clone_Proxy(
827     IEnumExtraSearch* This,
828     IEnumExtraSearch** ppenum);
829 void __RPC_STUB IEnumExtraSearch_Clone_Stub(
830     struct IRpcStubBuffer* This,
831     struct IRpcChannelBuffer* pRpcChannelBuffer,
832     PRPC_MESSAGE pRpcMessage,
833     DWORD* pdwStubPhase);
834
835 #endif  /* __IEnumExtraSearch_INTERFACE_DEFINED__ */
836
837 #ifndef __IShellFolder2_FWD_DEFINED__
838 #define __IShellFolder2_FWD_DEFINED__
839 typedef struct IShellFolder2 IShellFolder2;
840 #endif
841
842 typedef enum {
843     SHCOLSTATE_TYPE_STR = 0x1,
844     SHCOLSTATE_TYPE_INT = 0x2,
845     SHCOLSTATE_TYPE_DATE = 0x3,
846     SHCOLSTATE_TYPEMASK = 0xf,
847     SHCOLSTATE_ONBYDEFAULT = 0x10,
848     SHCOLSTATE_SLOW = 0x20,
849     SHCOLSTATE_EXTENDED = 0x40,
850     SHCOLSTATE_SECONDARYUI = 0x80,
851     SHCOLSTATE_HIDDEN = 0x100,
852     SHCOLSTATE_PREFER_VARCMP = 0x200
853 } SHCOLSTATE;
854
855 typedef DWORD SHCOLSTATEF;
856
857 typedef struct {
858     GUID fmtid;
859     DWORD pid;
860 } SHCOLUMNID, *LPSHCOLUMNID;
861
862 typedef const SHCOLUMNID *LPCSHCOLUMNID;
863
864 /*****************************************************************************
865  * IShellFolder2 interface
866  */
867 #ifndef __IShellFolder2_INTERFACE_DEFINED__
868 #define __IShellFolder2_INTERFACE_DEFINED__
869
870 DEFINE_GUID(IID_IShellFolder2, 0x93f2f68c, 0x1d1b, 0x11d3, 0xa3,0x0e, 0x00,0xc0,0x4f,0x79,0xab,0xd1);
871 #if defined(__cplusplus) && !defined(CINTERFACE)
872 struct IShellFolder2 : public IShellFolder
873 {
874     virtual HRESULT STDMETHODCALLTYPE GetDefaultSearchGUID(
875         GUID* lpguid) = 0;
876
877     virtual HRESULT STDMETHODCALLTYPE EnumSearches(
878         IEnumExtraSearch** ppenum) = 0;
879
880     virtual HRESULT STDMETHODCALLTYPE GetDefaultColumn(
881         DWORD dwReserved,
882         ULONG* pSort,
883         ULONG* pDisplay) = 0;
884
885     virtual HRESULT STDMETHODCALLTYPE GetDefaultColumnState(
886         UINT iColumn,
887         SHCOLSTATEF* pcsFlags) = 0;
888
889     virtual HRESULT STDMETHODCALLTYPE GetDetailsEx(
890         LPCITEMIDLIST pidl,
891         const SHCOLUMNID* pscid,
892         VARIANT* pv) = 0;
893
894     virtual HRESULT STDMETHODCALLTYPE GetDetailsOf(
895         LPCITEMIDLIST pidl,
896         UINT iColumn,
897         SHELLDETAILS* psd) = 0;
898
899     virtual HRESULT STDMETHODCALLTYPE MapColumnToSCID(
900         UINT iColumn,
901         SHCOLUMNID* pscid) = 0;
902
903 };
904 #else
905 typedef struct IShellFolder2Vtbl IShellFolder2Vtbl;
906 struct IShellFolder2 {
907     const IShellFolder2Vtbl* lpVtbl;
908 };
909 struct IShellFolder2Vtbl {
910     ICOM_MSVTABLE_COMPAT_FIELDS
911
912     /*** IUnknown methods ***/
913     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
914         IShellFolder2* This,
915         REFIID riid,
916         void** ppvObject);
917
918     ULONG (STDMETHODCALLTYPE *AddRef)(
919         IShellFolder2* This);
920
921     ULONG (STDMETHODCALLTYPE *Release)(
922         IShellFolder2* This);
923
924     /*** IShellFolder methods ***/
925     HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
926         IShellFolder2* This,
927         HWND hwndOwner,
928         LPBC pbcReserved,
929         LPOLESTR lpszDisplayName,
930         ULONG* pchEaten,
931         LPITEMIDLIST* ppidl,
932         ULONG* pdwAttributes);
933
934     HRESULT (STDMETHODCALLTYPE *EnumObjects)(
935         IShellFolder2* This,
936         HWND hwndOwner,
937         SHCONTF grfFlags,
938         IEnumIDList** ppenumIDList);
939
940     HRESULT (STDMETHODCALLTYPE *BindToObject)(
941         IShellFolder2* This,
942         LPCITEMIDLIST pidl,
943         LPBC pbcReserved,
944         REFIID riid,
945         void** ppvOut);
946
947     HRESULT (STDMETHODCALLTYPE *BindToStorage)(
948         IShellFolder2* This,
949         LPCITEMIDLIST pidl,
950         LPBC pbcReserved,
951         REFIID riid,
952         void** ppvObj);
953
954     HRESULT (STDMETHODCALLTYPE *CompareIDs)(
955         IShellFolder2* This,
956         LPARAM lParam,
957         LPCITEMIDLIST pidl1,
958         LPCITEMIDLIST pidl2);
959
960     HRESULT (STDMETHODCALLTYPE *CreateViewObject)(
961         IShellFolder2* This,
962         HWND hwndOwner,
963         REFIID riid,
964         void** ppvOut);
965
966     HRESULT (STDMETHODCALLTYPE *GetAttributesOf)(
967         IShellFolder2* This,
968         UINT cidl,
969         LPCITEMIDLIST* apidl,
970         SFGAOF* rgfInOut);
971
972     HRESULT (STDMETHODCALLTYPE *GetUIObjectOf)(
973         IShellFolder2* This,
974         HWND hwndOwner,
975         UINT cidl,
976         LPCITEMIDLIST* apidl,
977         REFIID riid,
978         UINT* prgfInOut,
979         void** ppvOut);
980
981     HRESULT (STDMETHODCALLTYPE *GetDisplayNameOf)(
982         IShellFolder2* This,
983         LPCITEMIDLIST pidl,
984         SHGDNF uFlags,
985         STRRET* lpName);
986
987     HRESULT (STDMETHODCALLTYPE *SetNameOf)(
988         IShellFolder2* This,
989         HWND hwnd,
990         LPCITEMIDLIST pidl,
991         LPCOLESTR lpszName,
992         SHGDNF uFlags,
993         LPITEMIDLIST* ppidlOut);
994
995     /*** IShellFolder2 methods ***/
996     HRESULT (STDMETHODCALLTYPE *GetDefaultSearchGUID)(
997         IShellFolder2* This,
998         GUID* lpguid);
999
1000     HRESULT (STDMETHODCALLTYPE *EnumSearches)(
1001         IShellFolder2* This,
1002         IEnumExtraSearch** ppenum);
1003
1004     HRESULT (STDMETHODCALLTYPE *GetDefaultColumn)(
1005         IShellFolder2* This,
1006         DWORD dwReserved,
1007         ULONG* pSort,
1008         ULONG* pDisplay);
1009
1010     HRESULT (STDMETHODCALLTYPE *GetDefaultColumnState)(
1011         IShellFolder2* This,
1012         UINT iColumn,
1013         SHCOLSTATEF* pcsFlags);
1014
1015     HRESULT (STDMETHODCALLTYPE *GetDetailsEx)(
1016         IShellFolder2* This,
1017         LPCITEMIDLIST pidl,
1018         const SHCOLUMNID* pscid,
1019         VARIANT* pv);
1020
1021     HRESULT (STDMETHODCALLTYPE *GetDetailsOf)(
1022         IShellFolder2* This,
1023         LPCITEMIDLIST pidl,
1024         UINT iColumn,
1025         SHELLDETAILS* psd);
1026
1027     HRESULT (STDMETHODCALLTYPE *MapColumnToSCID)(
1028         IShellFolder2* This,
1029         UINT iColumn,
1030         SHCOLUMNID* pscid);
1031
1032 };
1033
1034 /*** IUnknown methods ***/
1035 #define IShellFolder2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1036 #define IShellFolder2_AddRef(p) (p)->lpVtbl->AddRef(p)
1037 #define IShellFolder2_Release(p) (p)->lpVtbl->Release(p)
1038 /*** IShellFolder methods ***/
1039 #define IShellFolder2_ParseDisplayName(p,a,b,c,d,e,f) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d,e,f)
1040 #define IShellFolder2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
1041 #define IShellFolder2_BindToObject(p,a,b,c,d) (p)->lpVtbl->BindToObject(p,a,b,c,d)
1042 #define IShellFolder2_BindToStorage(p,a,b,c,d) (p)->lpVtbl->BindToStorage(p,a,b,c,d)
1043 #define IShellFolder2_CompareIDs(p,a,b,c) (p)->lpVtbl->CompareIDs(p,a,b,c)
1044 #define IShellFolder2_CreateViewObject(p,a,b,c) (p)->lpVtbl->CreateViewObject(p,a,b,c)
1045 #define IShellFolder2_GetAttributesOf(p,a,b,c) (p)->lpVtbl->GetAttributesOf(p,a,b,c)
1046 #define IShellFolder2_GetUIObjectOf(p,a,b,c,d,e,f) (p)->lpVtbl->GetUIObjectOf(p,a,b,c,d,e,f)
1047 #define IShellFolder2_GetDisplayNameOf(p,a,b,c) (p)->lpVtbl->GetDisplayNameOf(p,a,b,c)
1048 #define IShellFolder2_SetNameOf(p,a,b,c,d,e) (p)->lpVtbl->SetNameOf(p,a,b,c,d,e)
1049 /*** IShellFolder2 methods ***/
1050 #define IShellFolder2_GetDefaultSearchGUID(p,a) (p)->lpVtbl->GetDefaultSearchGUID(p,a)
1051 #define IShellFolder2_EnumSearches(p,a) (p)->lpVtbl->EnumSearches(p,a)
1052 #define IShellFolder2_GetDefaultColumn(p,a,b,c) (p)->lpVtbl->GetDefaultColumn(p,a,b,c)
1053 #define IShellFolder2_GetDefaultColumnState(p,a,b) (p)->lpVtbl->GetDefaultColumnState(p,a,b)
1054 #define IShellFolder2_GetDetailsEx(p,a,b,c) (p)->lpVtbl->GetDetailsEx(p,a,b,c)
1055 #define IShellFolder2_GetDetailsOf(p,a,b,c) (p)->lpVtbl->GetDetailsOf(p,a,b,c)
1056 #define IShellFolder2_MapColumnToSCID(p,a,b) (p)->lpVtbl->MapColumnToSCID(p,a,b)
1057
1058 #endif
1059
1060 #define IShellFolder2_METHODS \
1061     ICOM_MSVTABLE_COMPAT_FIELDS \
1062     /*** IUnknown methods ***/ \
1063     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1064     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1065     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1066     /*** IShellFolder methods ***/ \
1067     STDMETHOD_(HRESULT,ParseDisplayName)(THIS_ HWND hwndOwner, LPBC pbcReserved, LPOLESTR lpszDisplayName, ULONG* pchEaten, LPITEMIDLIST* ppidl, ULONG* pdwAttributes) PURE; \
1068     STDMETHOD_(HRESULT,EnumObjects)(THIS_ HWND hwndOwner, SHCONTF grfFlags, IEnumIDList** ppenumIDList) PURE; \
1069     STDMETHOD_(HRESULT,BindToObject)(THIS_ LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, void** ppvOut) PURE; \
1070     STDMETHOD_(HRESULT,BindToStorage)(THIS_ LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, void** ppvObj) PURE; \
1071     STDMETHOD_(HRESULT,CompareIDs)(THIS_ LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) PURE; \
1072     STDMETHOD_(HRESULT,CreateViewObject)(THIS_ HWND hwndOwner, REFIID riid, void** ppvOut) PURE; \
1073     STDMETHOD_(HRESULT,GetAttributesOf)(THIS_ UINT cidl, LPCITEMIDLIST* apidl, SFGAOF* rgfInOut) PURE; \
1074     STDMETHOD_(HRESULT,GetUIObjectOf)(THIS_ HWND hwndOwner, UINT cidl, LPCITEMIDLIST* apidl, REFIID riid, UINT* prgfInOut, void** ppvOut) PURE; \
1075     STDMETHOD_(HRESULT,GetDisplayNameOf)(THIS_ LPCITEMIDLIST pidl, SHGDNF uFlags, STRRET* lpName) PURE; \
1076     STDMETHOD_(HRESULT,SetNameOf)(THIS_ HWND hwnd, LPCITEMIDLIST pidl, LPCOLESTR lpszName, SHGDNF uFlags, LPITEMIDLIST* ppidlOut) PURE; \
1077     /*** IShellFolder2 methods ***/ \
1078     STDMETHOD_(HRESULT,GetDefaultSearchGUID)(THIS_ GUID* lpguid) PURE; \
1079     STDMETHOD_(HRESULT,EnumSearches)(THIS_ IEnumExtraSearch** ppenum) PURE; \
1080     STDMETHOD_(HRESULT,GetDefaultColumn)(THIS_ DWORD dwReserved, ULONG* pSort, ULONG* pDisplay) PURE; \
1081     STDMETHOD_(HRESULT,GetDefaultColumnState)(THIS_ UINT iColumn, SHCOLSTATEF* pcsFlags) PURE; \
1082     STDMETHOD_(HRESULT,GetDetailsEx)(THIS_ LPCITEMIDLIST pidl, const SHCOLUMNID* pscid, VARIANT* pv) PURE; \
1083     STDMETHOD_(HRESULT,GetDetailsOf)(THIS_ LPCITEMIDLIST pidl, UINT iColumn, SHELLDETAILS* psd) PURE; \
1084     STDMETHOD_(HRESULT,MapColumnToSCID)(THIS_ UINT iColumn, SHCOLUMNID* pscid) PURE;
1085
1086 HRESULT CALLBACK IShellFolder2_GetDefaultSearchGUID_Proxy(
1087     IShellFolder2* This,
1088     GUID* lpguid);
1089 void __RPC_STUB IShellFolder2_GetDefaultSearchGUID_Stub(
1090     struct IRpcStubBuffer* This,
1091     struct IRpcChannelBuffer* pRpcChannelBuffer,
1092     PRPC_MESSAGE pRpcMessage,
1093     DWORD* pdwStubPhase);
1094 HRESULT CALLBACK IShellFolder2_EnumSearches_Proxy(
1095     IShellFolder2* This,
1096     IEnumExtraSearch** ppenum);
1097 void __RPC_STUB IShellFolder2_EnumSearches_Stub(
1098     struct IRpcStubBuffer* This,
1099     struct IRpcChannelBuffer* pRpcChannelBuffer,
1100     PRPC_MESSAGE pRpcMessage,
1101     DWORD* pdwStubPhase);
1102 HRESULT CALLBACK IShellFolder2_GetDefaultColumn_Proxy(
1103     IShellFolder2* This,
1104     DWORD dwReserved,
1105     ULONG* pSort,
1106     ULONG* pDisplay);
1107 void __RPC_STUB IShellFolder2_GetDefaultColumn_Stub(
1108     struct IRpcStubBuffer* This,
1109     struct IRpcChannelBuffer* pRpcChannelBuffer,
1110     PRPC_MESSAGE pRpcMessage,
1111     DWORD* pdwStubPhase);
1112 HRESULT CALLBACK IShellFolder2_GetDefaultColumnState_Proxy(
1113     IShellFolder2* This,
1114     UINT iColumn,
1115     SHCOLSTATEF* pcsFlags);
1116 void __RPC_STUB IShellFolder2_GetDefaultColumnState_Stub(
1117     struct IRpcStubBuffer* This,
1118     struct IRpcChannelBuffer* pRpcChannelBuffer,
1119     PRPC_MESSAGE pRpcMessage,
1120     DWORD* pdwStubPhase);
1121 HRESULT CALLBACK IShellFolder2_GetDetailsEx_Proxy(
1122     IShellFolder2* This,
1123     LPCITEMIDLIST pidl,
1124     const SHCOLUMNID* pscid,
1125     VARIANT* pv);
1126 void __RPC_STUB IShellFolder2_GetDetailsEx_Stub(
1127     struct IRpcStubBuffer* This,
1128     struct IRpcChannelBuffer* pRpcChannelBuffer,
1129     PRPC_MESSAGE pRpcMessage,
1130     DWORD* pdwStubPhase);
1131 HRESULT CALLBACK IShellFolder2_GetDetailsOf_Proxy(
1132     IShellFolder2* This,
1133     LPCITEMIDLIST pidl,
1134     UINT iColumn,
1135     SHELLDETAILS* psd);
1136 void __RPC_STUB IShellFolder2_GetDetailsOf_Stub(
1137     struct IRpcStubBuffer* This,
1138     struct IRpcChannelBuffer* pRpcChannelBuffer,
1139     PRPC_MESSAGE pRpcMessage,
1140     DWORD* pdwStubPhase);
1141 HRESULT CALLBACK IShellFolder2_MapColumnToSCID_Proxy(
1142     IShellFolder2* This,
1143     UINT iColumn,
1144     SHCOLUMNID* pscid);
1145 void __RPC_STUB IShellFolder2_MapColumnToSCID_Stub(
1146     struct IRpcStubBuffer* This,
1147     struct IRpcChannelBuffer* pRpcChannelBuffer,
1148     PRPC_MESSAGE pRpcMessage,
1149     DWORD* pdwStubPhase);
1150
1151 #endif  /* __IShellFolder2_INTERFACE_DEFINED__ */
1152
1153 typedef char *LPVIEWSETTINGS;
1154
1155 typedef enum {
1156     FWF_AUTOARRANGE = 0x1,
1157     FWF_ABBREVIATEDNAMES = 0x2,
1158     FWF_SNAPTOGRID = 0x4,
1159     FWF_OWNERDATA = 0x8,
1160     FWF_BESTFITWINDOW = 0x10,
1161     FWF_DESKTOP = 0x20,
1162     FWF_SINGLESEL = 0x40,
1163     FWF_NOSUBFOLDERS = 0x80,
1164     FWF_TRANSPARENT = 0x100,
1165     FWF_NOCLIENTEDGE = 0x200,
1166     FWF_NOSCROLL = 0x400,
1167     FWF_ALIGNLEFT = 0x800,
1168     FWF_NOICONS = 0x1000,
1169     FWF_SHOWSELALWAYS = 0x2000,
1170     FWF_NOVISIBLE = 0x4000,
1171     FWF_SINGLECLICKACTIVATE = 0x8000,
1172     FWF_NOWEBVIEW = 0x10000,
1173     FWF_HIDEFILENAMES = 0x20000,
1174     FWF_CHECKSELECT = 0x40000
1175 } FOLDERFLAGS;
1176
1177 typedef enum {
1178     FVM_ICON = 1,
1179     FVM_FIRST = FVM_ICON,
1180     FVM_SMALLICON = 2,
1181     FVM_LIST = 3,
1182     FVM_DETAILS = 4,
1183     FVM_THUMBNAIL = 5,
1184     FVM_TILE = 6,
1185     FVM_THUMBSTRIP = 7,
1186     FVM_LAST = FVM_THUMBSTRIP
1187 } FOLDERVIEWMODE;
1188
1189 typedef struct {
1190     UINT ViewMode;
1191     UINT fFlags;
1192 } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
1193
1194 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
1195
1196 #ifndef __IShellBrowser_FWD_DEFINED__
1197 #define __IShellBrowser_FWD_DEFINED__
1198 typedef struct IShellBrowser IShellBrowser;
1199 #endif
1200
1201 #ifndef __IShellView_FWD_DEFINED__
1202 #define __IShellView_FWD_DEFINED__
1203 typedef struct IShellView IShellView;
1204 #endif
1205
1206 typedef IShellView *LPSHELLVIEW;
1207
1208 #define SVSI_DESELECT       0x00000000
1209 #define SVSI_SELECT         0x00000001
1210 #define SVSI_EDIT           0x00000003
1211 #define SVSI_DESELECTOTHERS 0x00000004
1212 #define SVSI_ENSUREVISIBLE  0x00000008
1213 #define SVSI_FOCUSED        0x00000010
1214 #define SVSI_TRANSLATEPT    0x00000020
1215 #define SVSI_SELECTIONMARK  0x00000040
1216 #define SVSI_POSITIONITEM   0x00000080
1217 #define SVSI_CHECK          0x00000100
1218 #define SVSI_NOSTATECHANGE  0x80000000
1219 typedef UINT SVSIF;
1220
1221 typedef enum {
1222     SVGIO_BACKGROUND = 0x0,
1223     SVGIO_SELECTION = 0x1,
1224     SVGIO_ALLVIEW = 0x2,
1225     SVGIO_CHECKED = 0x3,
1226     SVGIO_TYPE_MASK = 0xf,
1227     SVGIO_FLAG_VIEWORDER = 0x80000000
1228 } SVGIO;
1229
1230 typedef enum {
1231     SVUIA_DEACTIVATE = 0,
1232     SVUIA_ACTIVATE_NOFOCUS = 1,
1233     SVUIA_ACTIVATE_FOCUS = 2,
1234     SVUIA_INPLACEACTIVATE = 3
1235 } SVUIA_STATUS;
1236
1237 #if 0
1238 typedef LPARAM LPFNSVADDPROPSHEETPAGE;
1239
1240 #else
1241 #include <prsht.h>
1242 typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;
1243 #endif
1244 /*****************************************************************************
1245  * IShellView interface
1246  */
1247 #ifndef __IShellView_INTERFACE_DEFINED__
1248 #define __IShellView_INTERFACE_DEFINED__
1249
1250 DEFINE_GUID(IID_IShellView, 0x000214e3, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1251 #if defined(__cplusplus) && !defined(CINTERFACE)
1252 struct IShellView : public IOleWindow
1253 {
1254     virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
1255         MSG* pmsg) = 0;
1256
1257     virtual HRESULT STDMETHODCALLTYPE EnableModeless(
1258         BOOL fEnable) = 0;
1259
1260     virtual HRESULT STDMETHODCALLTYPE UIActivate(
1261         UINT uState) = 0;
1262
1263     virtual HRESULT STDMETHODCALLTYPE Refresh(
1264         ) = 0;
1265
1266     virtual HRESULT STDMETHODCALLTYPE CreateViewWindow(
1267         IShellView* psvPrevious,
1268         LPCFOLDERSETTINGS lpfs,
1269         IShellBrowser* psb,
1270         RECT* prcView,
1271         HWND* phWnd) = 0;
1272
1273     virtual HRESULT STDMETHODCALLTYPE DestroyViewWindow(
1274         ) = 0;
1275
1276     virtual HRESULT STDMETHODCALLTYPE GetCurrentInfo(
1277         LPFOLDERSETTINGS lpfs) = 0;
1278
1279     virtual HRESULT STDMETHODCALLTYPE AddPropertySheetPages(
1280         DWORD dwReserved,
1281         LPFNSVADDPROPSHEETPAGE pfn,
1282         LPARAM lparam) = 0;
1283
1284     virtual HRESULT STDMETHODCALLTYPE SaveViewState(
1285         ) = 0;
1286
1287     virtual HRESULT STDMETHODCALLTYPE SelectItem(
1288         LPCITEMIDLIST pidlItem,
1289         SVSIF uFlags) = 0;
1290
1291     virtual HRESULT STDMETHODCALLTYPE GetItemObject(
1292         UINT uItem,
1293         REFIID riid,
1294         void** ppv) = 0;
1295
1296 };
1297 #else
1298 typedef struct IShellViewVtbl IShellViewVtbl;
1299 struct IShellView {
1300     const IShellViewVtbl* lpVtbl;
1301 };
1302 struct IShellViewVtbl {
1303     ICOM_MSVTABLE_COMPAT_FIELDS
1304
1305     /*** IUnknown methods ***/
1306     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1307         IShellView* This,
1308         REFIID riid,
1309         void** ppvObject);
1310
1311     ULONG (STDMETHODCALLTYPE *AddRef)(
1312         IShellView* This);
1313
1314     ULONG (STDMETHODCALLTYPE *Release)(
1315         IShellView* This);
1316
1317     /*** IOleWindow methods ***/
1318     HRESULT (STDMETHODCALLTYPE *GetWindow)(
1319         IShellView* This,
1320         HWND* phwnd);
1321
1322     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
1323         IShellView* This,
1324         BOOL fEnterMode);
1325
1326     /*** IShellView methods ***/
1327     HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
1328         IShellView* This,
1329         MSG* pmsg);
1330
1331     HRESULT (STDMETHODCALLTYPE *EnableModeless)(
1332         IShellView* This,
1333         BOOL fEnable);
1334
1335     HRESULT (STDMETHODCALLTYPE *UIActivate)(
1336         IShellView* This,
1337         UINT uState);
1338
1339     HRESULT (STDMETHODCALLTYPE *Refresh)(
1340         IShellView* This);
1341
1342     HRESULT (STDMETHODCALLTYPE *CreateViewWindow)(
1343         IShellView* This,
1344         IShellView* psvPrevious,
1345         LPCFOLDERSETTINGS lpfs,
1346         IShellBrowser* psb,
1347         RECT* prcView,
1348         HWND* phWnd);
1349
1350     HRESULT (STDMETHODCALLTYPE *DestroyViewWindow)(
1351         IShellView* This);
1352
1353     HRESULT (STDMETHODCALLTYPE *GetCurrentInfo)(
1354         IShellView* This,
1355         LPFOLDERSETTINGS lpfs);
1356
1357     HRESULT (STDMETHODCALLTYPE *AddPropertySheetPages)(
1358         IShellView* This,
1359         DWORD dwReserved,
1360         LPFNSVADDPROPSHEETPAGE pfn,
1361         LPARAM lparam);
1362
1363     HRESULT (STDMETHODCALLTYPE *SaveViewState)(
1364         IShellView* This);
1365
1366     HRESULT (STDMETHODCALLTYPE *SelectItem)(
1367         IShellView* This,
1368         LPCITEMIDLIST pidlItem,
1369         SVSIF uFlags);
1370
1371     HRESULT (STDMETHODCALLTYPE *GetItemObject)(
1372         IShellView* This,
1373         UINT uItem,
1374         REFIID riid,
1375         void** ppv);
1376
1377 };
1378
1379 /*** IUnknown methods ***/
1380 #define IShellView_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1381 #define IShellView_AddRef(p) (p)->lpVtbl->AddRef(p)
1382 #define IShellView_Release(p) (p)->lpVtbl->Release(p)
1383 /*** IOleWindow methods ***/
1384 #define IShellView_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
1385 #define IShellView_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
1386 /*** IShellView methods ***/
1387 #define IShellView_TranslateAccelerator(p,a) (p)->lpVtbl->TranslateAccelerator(p,a)
1388 #define IShellView_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a)
1389 #define IShellView_UIActivate(p,a) (p)->lpVtbl->UIActivate(p,a)
1390 #define IShellView_Refresh(p) (p)->lpVtbl->Refresh(p)
1391 #define IShellView_CreateViewWindow(p,a,b,c,d,e) (p)->lpVtbl->CreateViewWindow(p,a,b,c,d,e)
1392 #define IShellView_DestroyViewWindow(p) (p)->lpVtbl->DestroyViewWindow(p)
1393 #define IShellView_GetCurrentInfo(p,a) (p)->lpVtbl->GetCurrentInfo(p,a)
1394 #define IShellView_AddPropertySheetPages(p,a,b,c) (p)->lpVtbl->AddPropertySheetPages(p,a,b,c)
1395 #define IShellView_SaveViewState(p) (p)->lpVtbl->SaveViewState(p)
1396 #define IShellView_SelectItem(p,a,b) (p)->lpVtbl->SelectItem(p,a,b)
1397 #define IShellView_GetItemObject(p,a,b,c) (p)->lpVtbl->GetItemObject(p,a,b,c)
1398
1399 #endif
1400
1401 #define IShellView_METHODS \
1402     ICOM_MSVTABLE_COMPAT_FIELDS \
1403     /*** IUnknown methods ***/ \
1404     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1405     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1406     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1407     /*** IOleWindow methods ***/ \
1408     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
1409     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
1410     /*** IShellView methods ***/ \
1411     STDMETHOD_(HRESULT,TranslateAccelerator)(THIS_ MSG* pmsg) PURE; \
1412     STDMETHOD_(HRESULT,EnableModeless)(THIS_ BOOL fEnable) PURE; \
1413     STDMETHOD_(HRESULT,UIActivate)(THIS_ UINT uState) PURE; \
1414     STDMETHOD_(HRESULT,Refresh)(THIS) PURE; \
1415     STDMETHOD_(HRESULT,CreateViewWindow)(THIS_ IShellView* psvPrevious, LPCFOLDERSETTINGS lpfs, IShellBrowser* psb, RECT* prcView, HWND* phWnd) PURE; \
1416     STDMETHOD_(HRESULT,DestroyViewWindow)(THIS) PURE; \
1417     STDMETHOD_(HRESULT,GetCurrentInfo)(THIS_ LPFOLDERSETTINGS lpfs) PURE; \
1418     STDMETHOD_(HRESULT,AddPropertySheetPages)(THIS_ DWORD dwReserved, LPFNSVADDPROPSHEETPAGE pfn, LPARAM lparam) PURE; \
1419     STDMETHOD_(HRESULT,SaveViewState)(THIS) PURE; \
1420     STDMETHOD_(HRESULT,SelectItem)(THIS_ LPCITEMIDLIST pidlItem, SVSIF uFlags) PURE; \
1421     STDMETHOD_(HRESULT,GetItemObject)(THIS_ UINT uItem, REFIID riid, void** ppv) PURE;
1422
1423 HRESULT CALLBACK IShellView_TranslateAccelerator_Proxy(
1424     IShellView* This,
1425     MSG* pmsg);
1426 void __RPC_STUB IShellView_TranslateAccelerator_Stub(
1427     struct IRpcStubBuffer* This,
1428     struct IRpcChannelBuffer* pRpcChannelBuffer,
1429     PRPC_MESSAGE pRpcMessage,
1430     DWORD* pdwStubPhase);
1431 HRESULT CALLBACK IShellView_EnableModeless_Proxy(
1432     IShellView* This,
1433     BOOL fEnable);
1434 void __RPC_STUB IShellView_EnableModeless_Stub(
1435     struct IRpcStubBuffer* This,
1436     struct IRpcChannelBuffer* pRpcChannelBuffer,
1437     PRPC_MESSAGE pRpcMessage,
1438     DWORD* pdwStubPhase);
1439 HRESULT CALLBACK IShellView_UIActivate_Proxy(
1440     IShellView* This,
1441     UINT uState);
1442 void __RPC_STUB IShellView_UIActivate_Stub(
1443     struct IRpcStubBuffer* This,
1444     struct IRpcChannelBuffer* pRpcChannelBuffer,
1445     PRPC_MESSAGE pRpcMessage,
1446     DWORD* pdwStubPhase);
1447 HRESULT CALLBACK IShellView_Refresh_Proxy(
1448     IShellView* This);
1449 void __RPC_STUB IShellView_Refresh_Stub(
1450     struct IRpcStubBuffer* This,
1451     struct IRpcChannelBuffer* pRpcChannelBuffer,
1452     PRPC_MESSAGE pRpcMessage,
1453     DWORD* pdwStubPhase);
1454 HRESULT CALLBACK IShellView_CreateViewWindow_Proxy(
1455     IShellView* This,
1456     IShellView* psvPrevious,
1457     LPCFOLDERSETTINGS lpfs,
1458     IShellBrowser* psb,
1459     RECT* prcView,
1460     HWND* phWnd);
1461 void __RPC_STUB IShellView_CreateViewWindow_Stub(
1462     struct IRpcStubBuffer* This,
1463     struct IRpcChannelBuffer* pRpcChannelBuffer,
1464     PRPC_MESSAGE pRpcMessage,
1465     DWORD* pdwStubPhase);
1466 HRESULT CALLBACK IShellView_DestroyViewWindow_Proxy(
1467     IShellView* This);
1468 void __RPC_STUB IShellView_DestroyViewWindow_Stub(
1469     struct IRpcStubBuffer* This,
1470     struct IRpcChannelBuffer* pRpcChannelBuffer,
1471     PRPC_MESSAGE pRpcMessage,
1472     DWORD* pdwStubPhase);
1473 HRESULT CALLBACK IShellView_GetCurrentInfo_Proxy(
1474     IShellView* This,
1475     LPFOLDERSETTINGS lpfs);
1476 void __RPC_STUB IShellView_GetCurrentInfo_Stub(
1477     struct IRpcStubBuffer* This,
1478     struct IRpcChannelBuffer* pRpcChannelBuffer,
1479     PRPC_MESSAGE pRpcMessage,
1480     DWORD* pdwStubPhase);
1481 HRESULT CALLBACK IShellView_SaveViewState_Proxy(
1482     IShellView* This);
1483 void __RPC_STUB IShellView_SaveViewState_Stub(
1484     struct IRpcStubBuffer* This,
1485     struct IRpcChannelBuffer* pRpcChannelBuffer,
1486     PRPC_MESSAGE pRpcMessage,
1487     DWORD* pdwStubPhase);
1488 HRESULT CALLBACK IShellView_SelectItem_Proxy(
1489     IShellView* This,
1490     LPCITEMIDLIST pidlItem,
1491     SVSIF uFlags);
1492 void __RPC_STUB IShellView_SelectItem_Stub(
1493     struct IRpcStubBuffer* This,
1494     struct IRpcChannelBuffer* pRpcChannelBuffer,
1495     PRPC_MESSAGE pRpcMessage,
1496     DWORD* pdwStubPhase);
1497 HRESULT CALLBACK IShellView_GetItemObject_Proxy(
1498     IShellView* This,
1499     UINT uItem,
1500     REFIID riid,
1501     void** ppv);
1502 void __RPC_STUB IShellView_GetItemObject_Stub(
1503     struct IRpcStubBuffer* This,
1504     struct IRpcChannelBuffer* pRpcChannelBuffer,
1505     PRPC_MESSAGE pRpcMessage,
1506     DWORD* pdwStubPhase);
1507
1508 #endif  /* __IShellView_INTERFACE_DEFINED__ */
1509
1510 typedef IShellBrowser *LPSHELLBROWSER;
1511
1512 #define SBSP_DEFBROWSER            0x00000000
1513 #define SBSP_SAMEBROWSER           0x00000001
1514 #define SBSP_NEWBROWSER            0x00000002
1515 #define SBSP_DEFMODE               0x00000000
1516 #define SBSP_OPENMODE              0x00000010
1517 #define SBSP_EXPLOREMODE           0x00000020
1518 #define SBSP_HELPMODE              0x00000040
1519 #define SBSP_NOTRANSFERHIST        0x00000080
1520 #define SBSP_ABSOLUTE              0x00000000
1521 #define SBSP_RELATIVE              0x00001000
1522 #define SBSP_PARENT                0x00002000
1523 #define SBSP_NAVIGATEBACK          0x00004000
1524 #define SBSP_NAVIGATEFORWARD       0x00008000
1525 #define SBSP_ALLOW_AUTONAVIGATE    0x00010000
1526 #define SBSP_NOAUTOSELECT          0x04000000
1527 #define SBSP_WRITENOHISTORY        0x08000000
1528 #define SBSP_REDIRECT              0x40000000
1529 #define SBSP_INITIATEDBYHLINKFRAME 0x80000000
1530 #define FCW_STATUS      0x0001
1531 #define FCW_TOOLBAR     0x0002
1532 #define FCW_TREE        0x0003
1533 #define FCW_INTERNETBAR 0x0006
1534 #define FCW_PROGRESS    0x0008
1535 #define FCT_MERGE       0x0001
1536 #define FCT_CONFIGABLE  0x0002
1537 #define FCT_ADDTOEND    0x0004
1538 #if 0
1539 typedef LPARAM LPTBBUTTONSB;
1540
1541 #else
1542 #include <commctrl.h>
1543 typedef LPTBBUTTON LPTBBUTTONSB;
1544 #endif
1545 /*****************************************************************************
1546  * IShellBrowser interface
1547  */
1548 #ifndef __IShellBrowser_INTERFACE_DEFINED__
1549 #define __IShellBrowser_INTERFACE_DEFINED__
1550
1551 DEFINE_GUID(IID_IShellBrowser, 0x000214e2, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1552 #if defined(__cplusplus) && !defined(CINTERFACE)
1553 struct IShellBrowser : public IOleWindow
1554 {
1555     virtual HRESULT STDMETHODCALLTYPE InsertMenusSB(
1556         HMENU hmenuShared,
1557         LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;
1558
1559     virtual HRESULT STDMETHODCALLTYPE SetMenuSB(
1560         HMENU hmenuShared,
1561         HOLEMENU holemenuReserved,
1562         HWND hwndActiveObject) = 0;
1563
1564     virtual HRESULT STDMETHODCALLTYPE RemoveMenusSB(
1565         HMENU hmenuShared) = 0;
1566
1567     virtual HRESULT STDMETHODCALLTYPE SetStatusTextSB(
1568         LPCOLESTR pszStatusText) = 0;
1569
1570     virtual HRESULT STDMETHODCALLTYPE EnableModelessSB(
1571         BOOL fEnable) = 0;
1572
1573     virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorSB(
1574         MSG* pmsg,
1575         WORD wID) = 0;
1576
1577     virtual HRESULT STDMETHODCALLTYPE BrowseObject(
1578         LPCITEMIDLIST pidl,
1579         UINT wFlags) = 0;
1580
1581     virtual HRESULT STDMETHODCALLTYPE GetViewStateStream(
1582         DWORD grfMode,
1583         IStream** ppStrm) = 0;
1584
1585     virtual HRESULT STDMETHODCALLTYPE GetControlWindow(
1586         UINT id,
1587         HWND* phwnd) = 0;
1588
1589     virtual HRESULT STDMETHODCALLTYPE SendControlMsg(
1590         UINT id,
1591         UINT uMsg,
1592         WPARAM wParam,
1593         LPARAM lParam,
1594         LRESULT* pret) = 0;
1595
1596     virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(
1597         IShellView** ppshv) = 0;
1598
1599     virtual HRESULT STDMETHODCALLTYPE OnViewWindowActive(
1600         IShellView* pshv) = 0;
1601
1602     virtual HRESULT STDMETHODCALLTYPE SetToolbarItems(
1603         LPTBBUTTONSB lpButtons,
1604         UINT nButtons,
1605         UINT uFlags) = 0;
1606
1607 };
1608 #else
1609 typedef struct IShellBrowserVtbl IShellBrowserVtbl;
1610 struct IShellBrowser {
1611     const IShellBrowserVtbl* lpVtbl;
1612 };
1613 struct IShellBrowserVtbl {
1614     ICOM_MSVTABLE_COMPAT_FIELDS
1615
1616     /*** IUnknown methods ***/
1617     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1618         IShellBrowser* This,
1619         REFIID riid,
1620         void** ppvObject);
1621
1622     ULONG (STDMETHODCALLTYPE *AddRef)(
1623         IShellBrowser* This);
1624
1625     ULONG (STDMETHODCALLTYPE *Release)(
1626         IShellBrowser* This);
1627
1628     /*** IOleWindow methods ***/
1629     HRESULT (STDMETHODCALLTYPE *GetWindow)(
1630         IShellBrowser* This,
1631         HWND* phwnd);
1632
1633     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
1634         IShellBrowser* This,
1635         BOOL fEnterMode);
1636
1637     /*** IShellBrowser methods ***/
1638     HRESULT (STDMETHODCALLTYPE *InsertMenusSB)(
1639         IShellBrowser* This,
1640         HMENU hmenuShared,
1641         LPOLEMENUGROUPWIDTHS lpMenuWidths);
1642
1643     HRESULT (STDMETHODCALLTYPE *SetMenuSB)(
1644         IShellBrowser* This,
1645         HMENU hmenuShared,
1646         HOLEMENU holemenuReserved,
1647         HWND hwndActiveObject);
1648
1649     HRESULT (STDMETHODCALLTYPE *RemoveMenusSB)(
1650         IShellBrowser* This,
1651         HMENU hmenuShared);
1652
1653     HRESULT (STDMETHODCALLTYPE *SetStatusTextSB)(
1654         IShellBrowser* This,
1655         LPCOLESTR pszStatusText);
1656
1657     HRESULT (STDMETHODCALLTYPE *EnableModelessSB)(
1658         IShellBrowser* This,
1659         BOOL fEnable);
1660
1661     HRESULT (STDMETHODCALLTYPE *TranslateAcceleratorSB)(
1662         IShellBrowser* This,
1663         MSG* pmsg,
1664         WORD wID);
1665
1666     HRESULT (STDMETHODCALLTYPE *BrowseObject)(
1667         IShellBrowser* This,
1668         LPCITEMIDLIST pidl,
1669         UINT wFlags);
1670
1671     HRESULT (STDMETHODCALLTYPE *GetViewStateStream)(
1672         IShellBrowser* This,
1673         DWORD grfMode,
1674         IStream** ppStrm);
1675
1676     HRESULT (STDMETHODCALLTYPE *GetControlWindow)(
1677         IShellBrowser* This,
1678         UINT id,
1679         HWND* phwnd);
1680
1681     HRESULT (STDMETHODCALLTYPE *SendControlMsg)(
1682         IShellBrowser* This,
1683         UINT id,
1684         UINT uMsg,
1685         WPARAM wParam,
1686         LPARAM lParam,
1687         LRESULT* pret);
1688
1689     HRESULT (STDMETHODCALLTYPE *QueryActiveShellView)(
1690         IShellBrowser* This,
1691         IShellView** ppshv);
1692
1693     HRESULT (STDMETHODCALLTYPE *OnViewWindowActive)(
1694         IShellBrowser* This,
1695         IShellView* pshv);
1696
1697     HRESULT (STDMETHODCALLTYPE *SetToolbarItems)(
1698         IShellBrowser* This,
1699         LPTBBUTTONSB lpButtons,
1700         UINT nButtons,
1701         UINT uFlags);
1702
1703 };
1704
1705 /*** IUnknown methods ***/
1706 #define IShellBrowser_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
1707 #define IShellBrowser_AddRef(p) (p)->lpVtbl->AddRef(p)
1708 #define IShellBrowser_Release(p) (p)->lpVtbl->Release(p)
1709 /*** IOleWindow methods ***/
1710 #define IShellBrowser_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
1711 #define IShellBrowser_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
1712 /*** IShellBrowser methods ***/
1713 #define IShellBrowser_InsertMenusSB(p,a,b) (p)->lpVtbl->InsertMenusSB(p,a,b)
1714 #define IShellBrowser_SetMenuSB(p,a,b,c) (p)->lpVtbl->SetMenuSB(p,a,b,c)
1715 #define IShellBrowser_RemoveMenusSB(p,a) (p)->lpVtbl->RemoveMenusSB(p,a)
1716 #define IShellBrowser_SetStatusTextSB(p,a) (p)->lpVtbl->SetStatusTextSB(p,a)
1717 #define IShellBrowser_EnableModelessSB(p,a) (p)->lpVtbl->EnableModelessSB(p,a)
1718 #define IShellBrowser_TranslateAcceleratorSB(p,a,b) (p)->lpVtbl->TranslateAcceleratorSB(p,a,b)
1719 #define IShellBrowser_BrowseObject(p,a,b) (p)->lpVtbl->BrowseObject(p,a,b)
1720 #define IShellBrowser_GetViewStateStream(p,a,b) (p)->lpVtbl->GetViewStateStream(p,a,b)
1721 #define IShellBrowser_GetControlWindow(p,a,b) (p)->lpVtbl->GetControlWindow(p,a,b)
1722 #define IShellBrowser_SendControlMsg(p,a,b,c,d,e) (p)->lpVtbl->SendControlMsg(p,a,b,c,d,e)
1723 #define IShellBrowser_QueryActiveShellView(p,a) (p)->lpVtbl->QueryActiveShellView(p,a)
1724 #define IShellBrowser_OnViewWindowActive(p,a) (p)->lpVtbl->OnViewWindowActive(p,a)
1725 #define IShellBrowser_SetToolbarItems(p,a,b,c) (p)->lpVtbl->SetToolbarItems(p,a,b,c)
1726
1727 #endif
1728
1729 #define IShellBrowser_METHODS \
1730     ICOM_MSVTABLE_COMPAT_FIELDS \
1731     /*** IUnknown methods ***/ \
1732     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
1733     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
1734     STDMETHOD_(ULONG,Release)(THIS) PURE; \
1735     /*** IOleWindow methods ***/ \
1736     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
1737     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
1738     /*** IShellBrowser methods ***/ \
1739     STDMETHOD_(HRESULT,InsertMenusSB)(THIS_ HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE; \
1740     STDMETHOD_(HRESULT,SetMenuSB)(THIS_ HMENU hmenuShared, HOLEMENU holemenuReserved, HWND hwndActiveObject) PURE; \
1741     STDMETHOD_(HRESULT,RemoveMenusSB)(THIS_ HMENU hmenuShared) PURE; \
1742     STDMETHOD_(HRESULT,SetStatusTextSB)(THIS_ LPCOLESTR pszStatusText) PURE; \
1743     STDMETHOD_(HRESULT,EnableModelessSB)(THIS_ BOOL fEnable) PURE; \
1744     STDMETHOD_(HRESULT,TranslateAcceleratorSB)(THIS_ MSG* pmsg, WORD wID) PURE; \
1745     STDMETHOD_(HRESULT,BrowseObject)(THIS_ LPCITEMIDLIST pidl, UINT wFlags) PURE; \
1746     STDMETHOD_(HRESULT,GetViewStateStream)(THIS_ DWORD grfMode, IStream** ppStrm) PURE; \
1747     STDMETHOD_(HRESULT,GetControlWindow)(THIS_ UINT id, HWND* phwnd) PURE; \
1748     STDMETHOD_(HRESULT,SendControlMsg)(THIS_ UINT id, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pret) PURE; \
1749     STDMETHOD_(HRESULT,QueryActiveShellView)(THIS_ IShellView** ppshv) PURE; \
1750     STDMETHOD_(HRESULT,OnViewWindowActive)(THIS_ IShellView* pshv) PURE; \
1751     STDMETHOD_(HRESULT,SetToolbarItems)(THIS_ LPTBBUTTONSB lpButtons, UINT nButtons, UINT uFlags) PURE;
1752
1753 HRESULT CALLBACK IShellBrowser_InsertMenusSB_Proxy(
1754     IShellBrowser* This,
1755     HMENU hmenuShared,
1756     LPOLEMENUGROUPWIDTHS lpMenuWidths);
1757 void __RPC_STUB IShellBrowser_InsertMenusSB_Stub(
1758     struct IRpcStubBuffer* This,
1759     struct IRpcChannelBuffer* pRpcChannelBuffer,
1760     PRPC_MESSAGE pRpcMessage,
1761     DWORD* pdwStubPhase);
1762 HRESULT CALLBACK IShellBrowser_SetMenuSB_Proxy(
1763     IShellBrowser* This,
1764     HMENU hmenuShared,
1765     HOLEMENU holemenuReserved,
1766     HWND hwndActiveObject);
1767 void __RPC_STUB IShellBrowser_SetMenuSB_Stub(
1768     struct IRpcStubBuffer* This,
1769     struct IRpcChannelBuffer* pRpcChannelBuffer,
1770     PRPC_MESSAGE pRpcMessage,
1771     DWORD* pdwStubPhase);
1772 HRESULT CALLBACK IShellBrowser_RemoveMenusSB_Proxy(
1773     IShellBrowser* This,
1774     HMENU hmenuShared);
1775 void __RPC_STUB IShellBrowser_RemoveMenusSB_Stub(
1776     struct IRpcStubBuffer* This,
1777     struct IRpcChannelBuffer* pRpcChannelBuffer,
1778     PRPC_MESSAGE pRpcMessage,
1779     DWORD* pdwStubPhase);
1780 HRESULT CALLBACK IShellBrowser_SetStatusTextSB_Proxy(
1781     IShellBrowser* This,
1782     LPCOLESTR pszStatusText);
1783 void __RPC_STUB IShellBrowser_SetStatusTextSB_Stub(
1784     struct IRpcStubBuffer* This,
1785     struct IRpcChannelBuffer* pRpcChannelBuffer,
1786     PRPC_MESSAGE pRpcMessage,
1787     DWORD* pdwStubPhase);
1788 HRESULT CALLBACK IShellBrowser_EnableModelessSB_Proxy(
1789     IShellBrowser* This,
1790     BOOL fEnable);
1791 void __RPC_STUB IShellBrowser_EnableModelessSB_Stub(
1792     struct IRpcStubBuffer* This,
1793     struct IRpcChannelBuffer* pRpcChannelBuffer,
1794     PRPC_MESSAGE pRpcMessage,
1795     DWORD* pdwStubPhase);
1796 HRESULT CALLBACK IShellBrowser_TranslateAcceleratorSB_Proxy(
1797     IShellBrowser* This,
1798     MSG* pmsg,
1799     WORD wID);
1800 void __RPC_STUB IShellBrowser_TranslateAcceleratorSB_Stub(
1801     struct IRpcStubBuffer* This,
1802     struct IRpcChannelBuffer* pRpcChannelBuffer,
1803     PRPC_MESSAGE pRpcMessage,
1804     DWORD* pdwStubPhase);
1805 HRESULT CALLBACK IShellBrowser_BrowseObject_Proxy(
1806     IShellBrowser* This,
1807     LPCITEMIDLIST pidl,
1808     UINT wFlags);
1809 void __RPC_STUB IShellBrowser_BrowseObject_Stub(
1810     struct IRpcStubBuffer* This,
1811     struct IRpcChannelBuffer* pRpcChannelBuffer,
1812     PRPC_MESSAGE pRpcMessage,
1813     DWORD* pdwStubPhase);
1814 HRESULT CALLBACK IShellBrowser_GetViewStateStream_Proxy(
1815     IShellBrowser* This,
1816     DWORD grfMode,
1817     IStream** ppStrm);
1818 void __RPC_STUB IShellBrowser_GetViewStateStream_Stub(
1819     struct IRpcStubBuffer* This,
1820     struct IRpcChannelBuffer* pRpcChannelBuffer,
1821     PRPC_MESSAGE pRpcMessage,
1822     DWORD* pdwStubPhase);
1823 HRESULT CALLBACK IShellBrowser_GetControlWindow_Proxy(
1824     IShellBrowser* This,
1825     UINT id,
1826     HWND* phwnd);
1827 void __RPC_STUB IShellBrowser_GetControlWindow_Stub(
1828     struct IRpcStubBuffer* This,
1829     struct IRpcChannelBuffer* pRpcChannelBuffer,
1830     PRPC_MESSAGE pRpcMessage,
1831     DWORD* pdwStubPhase);
1832 HRESULT CALLBACK IShellBrowser_QueryActiveShellView_Proxy(
1833     IShellBrowser* This,
1834     IShellView** ppshv);
1835 void __RPC_STUB IShellBrowser_QueryActiveShellView_Stub(
1836     struct IRpcStubBuffer* This,
1837     struct IRpcChannelBuffer* pRpcChannelBuffer,
1838     PRPC_MESSAGE pRpcMessage,
1839     DWORD* pdwStubPhase);
1840 HRESULT CALLBACK IShellBrowser_OnViewWindowActive_Proxy(
1841     IShellBrowser* This,
1842     IShellView* pshv);
1843 void __RPC_STUB IShellBrowser_OnViewWindowActive_Stub(
1844     struct IRpcStubBuffer* This,
1845     struct IRpcChannelBuffer* pRpcChannelBuffer,
1846     PRPC_MESSAGE pRpcMessage,
1847     DWORD* pdwStubPhase);
1848
1849 #endif  /* __IShellBrowser_INTERFACE_DEFINED__ */
1850
1851 #ifndef __IShellLinkA_FWD_DEFINED__
1852 #define __IShellLinkA_FWD_DEFINED__
1853 typedef struct IShellLinkA IShellLinkA;
1854 #endif
1855
1856 typedef enum {
1857     SLR_NO_UI = 0x1,
1858     SLR_ANY_MATCH = 0x2,
1859     SLR_UPDATE = 0x4,
1860     SLR_NOUPDATE = 0x8,
1861     SLR_NOSEARCH = 0x10,
1862     SLR_NOTRACK = 0x20,
1863     SLR_NOLINKINFO = 0x40,
1864     SLR_INVOKE_MSI = 0x80,
1865     SLR_NO_UI_WITH_MSG_PUMP = 0x101
1866 } SLR_FLAGS;
1867
1868 typedef enum {
1869     SLGP_SHORTPATH = 0x1,
1870     SLGP_UNCPRIORITY = 0x2,
1871     SLGP_RAWPATH = 0x4
1872 } SLGP_FLAGS;
1873
1874 /*****************************************************************************
1875  * IShellLinkA interface
1876  */
1877 #ifndef __IShellLinkA_INTERFACE_DEFINED__
1878 #define __IShellLinkA_INTERFACE_DEFINED__
1879
1880 DEFINE_GUID(IID_IShellLinkA, 0x000214ee, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
1881 #if defined(__cplusplus) && !defined(CINTERFACE)
1882 struct IShellLinkA : public IUnknown
1883 {
1884     virtual HRESULT STDMETHODCALLTYPE GetPath(
1885         LPSTR pszFile,
1886         int cch,
1887         WIN32_FIND_DATAA* pfd,
1888         DWORD fFlags) = 0;
1889
1890     virtual HRESULT STDMETHODCALLTYPE GetIDList(
1891         LPITEMIDLIST* ppidl) = 0;
1892
1893     virtual HRESULT STDMETHODCALLTYPE SetIDList(
1894         LPCITEMIDLIST pidl) = 0;
1895
1896     virtual HRESULT STDMETHODCALLTYPE GetDescription(
1897         LPSTR pszName,
1898         int cch) = 0;
1899
1900     virtual HRESULT STDMETHODCALLTYPE SetDescription(
1901         LPCSTR pszName) = 0;
1902
1903     virtual HRESULT STDMETHODCALLTYPE GetWorkingDirectory(
1904         LPSTR pszDir,
1905         int cch) = 0;
1906
1907     virtual HRESULT STDMETHODCALLTYPE SetWorkingDirectory(
1908         LPCSTR pszDir) = 0;
1909
1910     virtual HRESULT STDMETHODCALLTYPE GetArguments(
1911         LPSTR pszArgs,
1912         int cch) = 0;
1913
1914     virtual HRESULT STDMETHODCALLTYPE SetArguments(
1915         LPCSTR pszArgs) = 0;
1916
1917     virtual HRESULT STDMETHODCALLTYPE GetHotkey(
1918         WORD* pwHotkey) = 0;
1919
1920     virtual HRESULT STDMETHODCALLTYPE SetHotkey(
1921         WORD wHotkey) = 0;
1922
1923     virtual HRESULT STDMETHODCALLTYPE GetShowCmd(
1924         int* piShowCmd) = 0;
1925
1926     virtual HRESULT STDMETHODCALLTYPE SetShowCmd(
1927         int iShowCmd) = 0;
1928
1929     virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
1930         LPSTR pszIconPath,
1931         int cch,
1932         int* piIcon) = 0;
1933
1934     virtual HRESULT STDMETHODCALLTYPE SetIconLocation(
1935         LPCSTR pszIconPath,
1936         int iIcon) = 0;
1937
1938     virtual HRESULT STDMETHODCALLTYPE SetRelativePath(
1939         LPCSTR pszPathRel,
1940         DWORD dwReserved) = 0;
1941
1942     virtual HRESULT STDMETHODCALLTYPE Resolve(
1943         HWND hwnd,
1944         DWORD fFlags) = 0;
1945
1946     virtual HRESULT STDMETHODCALLTYPE SetPath(
1947         LPCSTR pszFile) = 0;
1948
1949 };
1950 #else
1951 typedef struct IShellLinkAVtbl IShellLinkAVtbl;
1952 struct IShellLinkA {
1953     const IShellLinkAVtbl* lpVtbl;
1954 };
1955 struct IShellLinkAVtbl {
1956     ICOM_MSVTABLE_COMPAT_FIELDS
1957
1958     /*** IUnknown methods ***/
1959     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
1960         IShellLinkA* This,
1961         REFIID riid,
1962         void** ppvObject);
1963
1964     ULONG (STDMETHODCALLTYPE *AddRef)(
1965         IShellLinkA* This);
1966
1967     ULONG (STDMETHODCALLTYPE *Release)(
1968         IShellLinkA* This);
1969
1970     /*** IShellLinkA methods ***/
1971     HRESULT (STDMETHODCALLTYPE *GetPath)(
1972         IShellLinkA* This,
1973         LPSTR pszFile,
1974         int cch,
1975         WIN32_FIND_DATAA* pfd,
1976         DWORD fFlags);
1977
1978     HRESULT (STDMETHODCALLTYPE *GetIDList)(
1979         IShellLinkA* This,
1980         LPITEMIDLIST* ppidl);
1981
1982     HRESULT (STDMETHODCALLTYPE *SetIDList)(
1983         IShellLinkA* This,
1984         LPCITEMIDLIST pidl);
1985
1986     HRESULT (STDMETHODCALLTYPE *GetDescription)(
1987         IShellLinkA* This,
1988         LPSTR pszName,
1989         int cch);
1990
1991     HRESULT (STDMETHODCALLTYPE *SetDescription)(
1992         IShellLinkA* This,
1993         LPCSTR pszName);
1994
1995     HRESULT (STDMETHODCALLTYPE *GetWorkingDirectory)(
1996         IShellLinkA* This,
1997         LPSTR pszDir,
1998         int cch);
1999
2000     HRESULT (STDMETHODCALLTYPE *SetWorkingDirectory)(
2001         IShellLinkA* This,
2002         LPCSTR pszDir);
2003
2004     HRESULT (STDMETHODCALLTYPE *GetArguments)(
2005         IShellLinkA* This,
2006         LPSTR pszArgs,
2007         int cch);
2008
2009     HRESULT (STDMETHODCALLTYPE *SetArguments)(
2010         IShellLinkA* This,
2011         LPCSTR pszArgs);
2012
2013     HRESULT (STDMETHODCALLTYPE *GetHotkey)(
2014         IShellLinkA* This,
2015         WORD* pwHotkey);
2016
2017     HRESULT (STDMETHODCALLTYPE *SetHotkey)(
2018         IShellLinkA* This,
2019         WORD wHotkey);
2020
2021     HRESULT (STDMETHODCALLTYPE *GetShowCmd)(
2022         IShellLinkA* This,
2023         int* piShowCmd);
2024
2025     HRESULT (STDMETHODCALLTYPE *SetShowCmd)(
2026         IShellLinkA* This,
2027         int iShowCmd);
2028
2029     HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
2030         IShellLinkA* This,
2031         LPSTR pszIconPath,
2032         int cch,
2033         int* piIcon);
2034
2035     HRESULT (STDMETHODCALLTYPE *SetIconLocation)(
2036         IShellLinkA* This,
2037         LPCSTR pszIconPath,
2038         int iIcon);
2039
2040     HRESULT (STDMETHODCALLTYPE *SetRelativePath)(
2041         IShellLinkA* This,
2042         LPCSTR pszPathRel,
2043         DWORD dwReserved);
2044
2045     HRESULT (STDMETHODCALLTYPE *Resolve)(
2046         IShellLinkA* This,
2047         HWND hwnd,
2048         DWORD fFlags);
2049
2050     HRESULT (STDMETHODCALLTYPE *SetPath)(
2051         IShellLinkA* This,
2052         LPCSTR pszFile);
2053
2054 };
2055
2056 /*** IUnknown methods ***/
2057 #define IShellLinkA_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2058 #define IShellLinkA_AddRef(p) (p)->lpVtbl->AddRef(p)
2059 #define IShellLinkA_Release(p) (p)->lpVtbl->Release(p)
2060 /*** IShellLinkA methods ***/
2061 #define IShellLinkA_GetPath(p,a,b,c,d) (p)->lpVtbl->GetPath(p,a,b,c,d)
2062 #define IShellLinkA_GetIDList(p,a) (p)->lpVtbl->GetIDList(p,a)
2063 #define IShellLinkA_SetIDList(p,a) (p)->lpVtbl->SetIDList(p,a)
2064 #define IShellLinkA_GetDescription(p,a,b) (p)->lpVtbl->GetDescription(p,a,b)
2065 #define IShellLinkA_SetDescription(p,a) (p)->lpVtbl->SetDescription(p,a)
2066 #define IShellLinkA_GetWorkingDirectory(p,a,b) (p)->lpVtbl->GetWorkingDirectory(p,a,b)
2067 #define IShellLinkA_SetWorkingDirectory(p,a) (p)->lpVtbl->SetWorkingDirectory(p,a)
2068 #define IShellLinkA_GetArguments(p,a,b) (p)->lpVtbl->GetArguments(p,a,b)
2069 #define IShellLinkA_SetArguments(p,a) (p)->lpVtbl->SetArguments(p,a)
2070 #define IShellLinkA_GetHotkey(p,a) (p)->lpVtbl->GetHotkey(p,a)
2071 #define IShellLinkA_SetHotkey(p,a) (p)->lpVtbl->SetHotkey(p,a)
2072 #define IShellLinkA_GetShowCmd(p,a) (p)->lpVtbl->GetShowCmd(p,a)
2073 #define IShellLinkA_SetShowCmd(p,a) (p)->lpVtbl->SetShowCmd(p,a)
2074 #define IShellLinkA_GetIconLocation(p,a,b,c) (p)->lpVtbl->GetIconLocation(p,a,b,c)
2075 #define IShellLinkA_SetIconLocation(p,a,b) (p)->lpVtbl->SetIconLocation(p,a,b)
2076 #define IShellLinkA_SetRelativePath(p,a,b) (p)->lpVtbl->SetRelativePath(p,a,b)
2077 #define IShellLinkA_Resolve(p,a,b) (p)->lpVtbl->Resolve(p,a,b)
2078 #define IShellLinkA_SetPath(p,a) (p)->lpVtbl->SetPath(p,a)
2079
2080 #endif
2081
2082 #define IShellLinkA_METHODS \
2083     ICOM_MSVTABLE_COMPAT_FIELDS \
2084     /*** IUnknown methods ***/ \
2085     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2086     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2087     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2088     /*** IShellLinkA methods ***/ \
2089     STDMETHOD_(HRESULT,GetPath)(THIS_ LPSTR pszFile, int cch, WIN32_FIND_DATAA* pfd, DWORD fFlags) PURE; \
2090     STDMETHOD_(HRESULT,GetIDList)(THIS_ LPITEMIDLIST* ppidl) PURE; \
2091     STDMETHOD_(HRESULT,SetIDList)(THIS_ LPCITEMIDLIST pidl) PURE; \
2092     STDMETHOD_(HRESULT,GetDescription)(THIS_ LPSTR pszName, int cch) PURE; \
2093     STDMETHOD_(HRESULT,SetDescription)(THIS_ LPCSTR pszName) PURE; \
2094     STDMETHOD_(HRESULT,GetWorkingDirectory)(THIS_ LPSTR pszDir, int cch) PURE; \
2095     STDMETHOD_(HRESULT,SetWorkingDirectory)(THIS_ LPCSTR pszDir) PURE; \
2096     STDMETHOD_(HRESULT,GetArguments)(THIS_ LPSTR pszArgs, int cch) PURE; \
2097     STDMETHOD_(HRESULT,SetArguments)(THIS_ LPCSTR pszArgs) PURE; \
2098     STDMETHOD_(HRESULT,GetHotkey)(THIS_ WORD* pwHotkey) PURE; \
2099     STDMETHOD_(HRESULT,SetHotkey)(THIS_ WORD wHotkey) PURE; \
2100     STDMETHOD_(HRESULT,GetShowCmd)(THIS_ int* piShowCmd) PURE; \
2101     STDMETHOD_(HRESULT,SetShowCmd)(THIS_ int iShowCmd) PURE; \
2102     STDMETHOD_(HRESULT,GetIconLocation)(THIS_ LPSTR pszIconPath, int cch, int* piIcon) PURE; \
2103     STDMETHOD_(HRESULT,SetIconLocation)(THIS_ LPCSTR pszIconPath, int iIcon) PURE; \
2104     STDMETHOD_(HRESULT,SetRelativePath)(THIS_ LPCSTR pszPathRel, DWORD dwReserved) PURE; \
2105     STDMETHOD_(HRESULT,Resolve)(THIS_ HWND hwnd, DWORD fFlags) PURE; \
2106     STDMETHOD_(HRESULT,SetPath)(THIS_ LPCSTR pszFile) PURE;
2107
2108 HRESULT CALLBACK IShellLinkA_GetPath_Proxy(
2109     IShellLinkA* This,
2110     LPSTR pszFile,
2111     int cch,
2112     WIN32_FIND_DATAA* pfd,
2113     DWORD fFlags);
2114 void __RPC_STUB IShellLinkA_GetPath_Stub(
2115     struct IRpcStubBuffer* This,
2116     struct IRpcChannelBuffer* pRpcChannelBuffer,
2117     PRPC_MESSAGE pRpcMessage,
2118     DWORD* pdwStubPhase);
2119 HRESULT CALLBACK IShellLinkA_GetIDList_Proxy(
2120     IShellLinkA* This,
2121     LPITEMIDLIST* ppidl);
2122 void __RPC_STUB IShellLinkA_GetIDList_Stub(
2123     struct IRpcStubBuffer* This,
2124     struct IRpcChannelBuffer* pRpcChannelBuffer,
2125     PRPC_MESSAGE pRpcMessage,
2126     DWORD* pdwStubPhase);
2127 HRESULT CALLBACK IShellLinkA_SetIDList_Proxy(
2128     IShellLinkA* This,
2129     LPCITEMIDLIST pidl);
2130 void __RPC_STUB IShellLinkA_SetIDList_Stub(
2131     struct IRpcStubBuffer* This,
2132     struct IRpcChannelBuffer* pRpcChannelBuffer,
2133     PRPC_MESSAGE pRpcMessage,
2134     DWORD* pdwStubPhase);
2135 HRESULT CALLBACK IShellLinkA_GetDescription_Proxy(
2136     IShellLinkA* This,
2137     LPSTR pszName,
2138     int cch);
2139 void __RPC_STUB IShellLinkA_GetDescription_Stub(
2140     struct IRpcStubBuffer* This,
2141     struct IRpcChannelBuffer* pRpcChannelBuffer,
2142     PRPC_MESSAGE pRpcMessage,
2143     DWORD* pdwStubPhase);
2144 HRESULT CALLBACK IShellLinkA_SetDescription_Proxy(
2145     IShellLinkA* This,
2146     LPCSTR pszName);
2147 void __RPC_STUB IShellLinkA_SetDescription_Stub(
2148     struct IRpcStubBuffer* This,
2149     struct IRpcChannelBuffer* pRpcChannelBuffer,
2150     PRPC_MESSAGE pRpcMessage,
2151     DWORD* pdwStubPhase);
2152 HRESULT CALLBACK IShellLinkA_GetWorkingDirectory_Proxy(
2153     IShellLinkA* This,
2154     LPSTR pszDir,
2155     int cch);
2156 void __RPC_STUB IShellLinkA_GetWorkingDirectory_Stub(
2157     struct IRpcStubBuffer* This,
2158     struct IRpcChannelBuffer* pRpcChannelBuffer,
2159     PRPC_MESSAGE pRpcMessage,
2160     DWORD* pdwStubPhase);
2161 HRESULT CALLBACK IShellLinkA_SetWorkingDirectory_Proxy(
2162     IShellLinkA* This,
2163     LPCSTR pszDir);
2164 void __RPC_STUB IShellLinkA_SetWorkingDirectory_Stub(
2165     struct IRpcStubBuffer* This,
2166     struct IRpcChannelBuffer* pRpcChannelBuffer,
2167     PRPC_MESSAGE pRpcMessage,
2168     DWORD* pdwStubPhase);
2169 HRESULT CALLBACK IShellLinkA_GetArguments_Proxy(
2170     IShellLinkA* This,
2171     LPSTR pszArgs,
2172     int cch);
2173 void __RPC_STUB IShellLinkA_GetArguments_Stub(
2174     struct IRpcStubBuffer* This,
2175     struct IRpcChannelBuffer* pRpcChannelBuffer,
2176     PRPC_MESSAGE pRpcMessage,
2177     DWORD* pdwStubPhase);
2178 HRESULT CALLBACK IShellLinkA_SetArguments_Proxy(
2179     IShellLinkA* This,
2180     LPCSTR pszArgs);
2181 void __RPC_STUB IShellLinkA_SetArguments_Stub(
2182     struct IRpcStubBuffer* This,
2183     struct IRpcChannelBuffer* pRpcChannelBuffer,
2184     PRPC_MESSAGE pRpcMessage,
2185     DWORD* pdwStubPhase);
2186 HRESULT CALLBACK IShellLinkA_GetHotkey_Proxy(
2187     IShellLinkA* This,
2188     WORD* pwHotkey);
2189 void __RPC_STUB IShellLinkA_GetHotkey_Stub(
2190     struct IRpcStubBuffer* This,
2191     struct IRpcChannelBuffer* pRpcChannelBuffer,
2192     PRPC_MESSAGE pRpcMessage,
2193     DWORD* pdwStubPhase);
2194 HRESULT CALLBACK IShellLinkA_SetHotkey_Proxy(
2195     IShellLinkA* This,
2196     WORD wHotkey);
2197 void __RPC_STUB IShellLinkA_SetHotkey_Stub(
2198     struct IRpcStubBuffer* This,
2199     struct IRpcChannelBuffer* pRpcChannelBuffer,
2200     PRPC_MESSAGE pRpcMessage,
2201     DWORD* pdwStubPhase);
2202 HRESULT CALLBACK IShellLinkA_GetShowCmd_Proxy(
2203     IShellLinkA* This,
2204     int* piShowCmd);
2205 void __RPC_STUB IShellLinkA_GetShowCmd_Stub(
2206     struct IRpcStubBuffer* This,
2207     struct IRpcChannelBuffer* pRpcChannelBuffer,
2208     PRPC_MESSAGE pRpcMessage,
2209     DWORD* pdwStubPhase);
2210 HRESULT CALLBACK IShellLinkA_SetShowCmd_Proxy(
2211     IShellLinkA* This,
2212     int iShowCmd);
2213 void __RPC_STUB IShellLinkA_SetShowCmd_Stub(
2214     struct IRpcStubBuffer* This,
2215     struct IRpcChannelBuffer* pRpcChannelBuffer,
2216     PRPC_MESSAGE pRpcMessage,
2217     DWORD* pdwStubPhase);
2218 HRESULT CALLBACK IShellLinkA_GetIconLocation_Proxy(
2219     IShellLinkA* This,
2220     LPSTR pszIconPath,
2221     int cch,
2222     int* piIcon);
2223 void __RPC_STUB IShellLinkA_GetIconLocation_Stub(
2224     struct IRpcStubBuffer* This,
2225     struct IRpcChannelBuffer* pRpcChannelBuffer,
2226     PRPC_MESSAGE pRpcMessage,
2227     DWORD* pdwStubPhase);
2228 HRESULT CALLBACK IShellLinkA_SetIconLocation_Proxy(
2229     IShellLinkA* This,
2230     LPCSTR pszIconPath,
2231     int iIcon);
2232 void __RPC_STUB IShellLinkA_SetIconLocation_Stub(
2233     struct IRpcStubBuffer* This,
2234     struct IRpcChannelBuffer* pRpcChannelBuffer,
2235     PRPC_MESSAGE pRpcMessage,
2236     DWORD* pdwStubPhase);
2237 HRESULT CALLBACK IShellLinkA_SetRelativePath_Proxy(
2238     IShellLinkA* This,
2239     LPCSTR pszPathRel,
2240     DWORD dwReserved);
2241 void __RPC_STUB IShellLinkA_SetRelativePath_Stub(
2242     struct IRpcStubBuffer* This,
2243     struct IRpcChannelBuffer* pRpcChannelBuffer,
2244     PRPC_MESSAGE pRpcMessage,
2245     DWORD* pdwStubPhase);
2246 HRESULT CALLBACK IShellLinkA_Resolve_Proxy(
2247     IShellLinkA* This,
2248     HWND hwnd,
2249     DWORD fFlags);
2250 void __RPC_STUB IShellLinkA_Resolve_Stub(
2251     struct IRpcStubBuffer* This,
2252     struct IRpcChannelBuffer* pRpcChannelBuffer,
2253     PRPC_MESSAGE pRpcMessage,
2254     DWORD* pdwStubPhase);
2255 HRESULT CALLBACK IShellLinkA_SetPath_Proxy(
2256     IShellLinkA* This,
2257     LPCSTR pszFile);
2258 void __RPC_STUB IShellLinkA_SetPath_Stub(
2259     struct IRpcStubBuffer* This,
2260     struct IRpcChannelBuffer* pRpcChannelBuffer,
2261     PRPC_MESSAGE pRpcMessage,
2262     DWORD* pdwStubPhase);
2263
2264 #endif  /* __IShellLinkA_INTERFACE_DEFINED__ */
2265
2266 #ifndef __IShellLinkW_FWD_DEFINED__
2267 #define __IShellLinkW_FWD_DEFINED__
2268 typedef struct IShellLinkW IShellLinkW;
2269 #endif
2270
2271 /*****************************************************************************
2272  * IShellLinkW interface
2273  */
2274 #ifndef __IShellLinkW_INTERFACE_DEFINED__
2275 #define __IShellLinkW_INTERFACE_DEFINED__
2276
2277 DEFINE_GUID(IID_IShellLinkW, 0x000214f9, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2278 #if defined(__cplusplus) && !defined(CINTERFACE)
2279 struct IShellLinkW : public IUnknown
2280 {
2281     virtual HRESULT STDMETHODCALLTYPE GetPath(
2282         LPWSTR pszFile,
2283         int cch,
2284         WIN32_FIND_DATAW* pfd,
2285         DWORD fFlags) = 0;
2286
2287     virtual HRESULT STDMETHODCALLTYPE GetIDList(
2288         LPITEMIDLIST* ppidl) = 0;
2289
2290     virtual HRESULT STDMETHODCALLTYPE SetIDList(
2291         LPCITEMIDLIST pidl) = 0;
2292
2293     virtual HRESULT STDMETHODCALLTYPE GetDescription(
2294         LPWSTR pszName,
2295         int cch) = 0;
2296
2297     virtual HRESULT STDMETHODCALLTYPE SetDescription(
2298         LPCWSTR pszName) = 0;
2299
2300     virtual HRESULT STDMETHODCALLTYPE GetWorkingDirectory(
2301         LPWSTR pszDir,
2302         int cch) = 0;
2303
2304     virtual HRESULT STDMETHODCALLTYPE SetWorkingDirectory(
2305         LPCWSTR pszDir) = 0;
2306
2307     virtual HRESULT STDMETHODCALLTYPE GetArguments(
2308         LPWSTR pszArgs,
2309         int cch) = 0;
2310
2311     virtual HRESULT STDMETHODCALLTYPE SetArguments(
2312         LPCWSTR pszArgs) = 0;
2313
2314     virtual HRESULT STDMETHODCALLTYPE GetHotkey(
2315         WORD* pwHotkey) = 0;
2316
2317     virtual HRESULT STDMETHODCALLTYPE SetHotkey(
2318         WORD wHotkey) = 0;
2319
2320     virtual HRESULT STDMETHODCALLTYPE GetShowCmd(
2321         int* piShowCmd) = 0;
2322
2323     virtual HRESULT STDMETHODCALLTYPE SetShowCmd(
2324         int iShowCmd) = 0;
2325
2326     virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
2327         LPWSTR pszIconPath,
2328         int cch,
2329         int* piIcon) = 0;
2330
2331     virtual HRESULT STDMETHODCALLTYPE SetIconLocation(
2332         LPCWSTR pszIconPath,
2333         int iIcon) = 0;
2334
2335     virtual HRESULT STDMETHODCALLTYPE SetRelativePath(
2336         LPCWSTR pszPathRel,
2337         DWORD dwReserved) = 0;
2338
2339     virtual HRESULT STDMETHODCALLTYPE Resolve(
2340         HWND hwnd,
2341         DWORD fFlags) = 0;
2342
2343     virtual HRESULT STDMETHODCALLTYPE SetPath(
2344         LPCWSTR pszFile) = 0;
2345
2346 };
2347 #else
2348 typedef struct IShellLinkWVtbl IShellLinkWVtbl;
2349 struct IShellLinkW {
2350     const IShellLinkWVtbl* lpVtbl;
2351 };
2352 struct IShellLinkWVtbl {
2353     ICOM_MSVTABLE_COMPAT_FIELDS
2354
2355     /*** IUnknown methods ***/
2356     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2357         IShellLinkW* This,
2358         REFIID riid,
2359         void** ppvObject);
2360
2361     ULONG (STDMETHODCALLTYPE *AddRef)(
2362         IShellLinkW* This);
2363
2364     ULONG (STDMETHODCALLTYPE *Release)(
2365         IShellLinkW* This);
2366
2367     /*** IShellLinkW methods ***/
2368     HRESULT (STDMETHODCALLTYPE *GetPath)(
2369         IShellLinkW* This,
2370         LPWSTR pszFile,
2371         int cch,
2372         WIN32_FIND_DATAW* pfd,
2373         DWORD fFlags);
2374
2375     HRESULT (STDMETHODCALLTYPE *GetIDList)(
2376         IShellLinkW* This,
2377         LPITEMIDLIST* ppidl);
2378
2379     HRESULT (STDMETHODCALLTYPE *SetIDList)(
2380         IShellLinkW* This,
2381         LPCITEMIDLIST pidl);
2382
2383     HRESULT (STDMETHODCALLTYPE *GetDescription)(
2384         IShellLinkW* This,
2385         LPWSTR pszName,
2386         int cch);
2387
2388     HRESULT (STDMETHODCALLTYPE *SetDescription)(
2389         IShellLinkW* This,
2390         LPCWSTR pszName);
2391
2392     HRESULT (STDMETHODCALLTYPE *GetWorkingDirectory)(
2393         IShellLinkW* This,
2394         LPWSTR pszDir,
2395         int cch);
2396
2397     HRESULT (STDMETHODCALLTYPE *SetWorkingDirectory)(
2398         IShellLinkW* This,
2399         LPCWSTR pszDir);
2400
2401     HRESULT (STDMETHODCALLTYPE *GetArguments)(
2402         IShellLinkW* This,
2403         LPWSTR pszArgs,
2404         int cch);
2405
2406     HRESULT (STDMETHODCALLTYPE *SetArguments)(
2407         IShellLinkW* This,
2408         LPCWSTR pszArgs);
2409
2410     HRESULT (STDMETHODCALLTYPE *GetHotkey)(
2411         IShellLinkW* This,
2412         WORD* pwHotkey);
2413
2414     HRESULT (STDMETHODCALLTYPE *SetHotkey)(
2415         IShellLinkW* This,
2416         WORD wHotkey);
2417
2418     HRESULT (STDMETHODCALLTYPE *GetShowCmd)(
2419         IShellLinkW* This,
2420         int* piShowCmd);
2421
2422     HRESULT (STDMETHODCALLTYPE *SetShowCmd)(
2423         IShellLinkW* This,
2424         int iShowCmd);
2425
2426     HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
2427         IShellLinkW* This,
2428         LPWSTR pszIconPath,
2429         int cch,
2430         int* piIcon);
2431
2432     HRESULT (STDMETHODCALLTYPE *SetIconLocation)(
2433         IShellLinkW* This,
2434         LPCWSTR pszIconPath,
2435         int iIcon);
2436
2437     HRESULT (STDMETHODCALLTYPE *SetRelativePath)(
2438         IShellLinkW* This,
2439         LPCWSTR pszPathRel,
2440         DWORD dwReserved);
2441
2442     HRESULT (STDMETHODCALLTYPE *Resolve)(
2443         IShellLinkW* This,
2444         HWND hwnd,
2445         DWORD fFlags);
2446
2447     HRESULT (STDMETHODCALLTYPE *SetPath)(
2448         IShellLinkW* This,
2449         LPCWSTR pszFile);
2450
2451 };
2452
2453 /*** IUnknown methods ***/
2454 #define IShellLinkW_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2455 #define IShellLinkW_AddRef(p) (p)->lpVtbl->AddRef(p)
2456 #define IShellLinkW_Release(p) (p)->lpVtbl->Release(p)
2457 /*** IShellLinkW methods ***/
2458 #define IShellLinkW_GetPath(p,a,b,c,d) (p)->lpVtbl->GetPath(p,a,b,c,d)
2459 #define IShellLinkW_GetIDList(p,a) (p)->lpVtbl->GetIDList(p,a)
2460 #define IShellLinkW_SetIDList(p,a) (p)->lpVtbl->SetIDList(p,a)
2461 #define IShellLinkW_GetDescription(p,a,b) (p)->lpVtbl->GetDescription(p,a,b)
2462 #define IShellLinkW_SetDescription(p,a) (p)->lpVtbl->SetDescription(p,a)
2463 #define IShellLinkW_GetWorkingDirectory(p,a,b) (p)->lpVtbl->GetWorkingDirectory(p,a,b)
2464 #define IShellLinkW_SetWorkingDirectory(p,a) (p)->lpVtbl->SetWorkingDirectory(p,a)
2465 #define IShellLinkW_GetArguments(p,a,b) (p)->lpVtbl->GetArguments(p,a,b)
2466 #define IShellLinkW_SetArguments(p,a) (p)->lpVtbl->SetArguments(p,a)
2467 #define IShellLinkW_GetHotkey(p,a) (p)->lpVtbl->GetHotkey(p,a)
2468 #define IShellLinkW_SetHotkey(p,a) (p)->lpVtbl->SetHotkey(p,a)
2469 #define IShellLinkW_GetShowCmd(p,a) (p)->lpVtbl->GetShowCmd(p,a)
2470 #define IShellLinkW_SetShowCmd(p,a) (p)->lpVtbl->SetShowCmd(p,a)
2471 #define IShellLinkW_GetIconLocation(p,a,b,c) (p)->lpVtbl->GetIconLocation(p,a,b,c)
2472 #define IShellLinkW_SetIconLocation(p,a,b) (p)->lpVtbl->SetIconLocation(p,a,b)
2473 #define IShellLinkW_SetRelativePath(p,a,b) (p)->lpVtbl->SetRelativePath(p,a,b)
2474 #define IShellLinkW_Resolve(p,a,b) (p)->lpVtbl->Resolve(p,a,b)
2475 #define IShellLinkW_SetPath(p,a) (p)->lpVtbl->SetPath(p,a)
2476
2477 #endif
2478
2479 #define IShellLinkW_METHODS \
2480     ICOM_MSVTABLE_COMPAT_FIELDS \
2481     /*** IUnknown methods ***/ \
2482     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2483     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2484     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2485     /*** IShellLinkW methods ***/ \
2486     STDMETHOD_(HRESULT,GetPath)(THIS_ LPWSTR pszFile, int cch, WIN32_FIND_DATAW* pfd, DWORD fFlags) PURE; \
2487     STDMETHOD_(HRESULT,GetIDList)(THIS_ LPITEMIDLIST* ppidl) PURE; \
2488     STDMETHOD_(HRESULT,SetIDList)(THIS_ LPCITEMIDLIST pidl) PURE; \
2489     STDMETHOD_(HRESULT,GetDescription)(THIS_ LPWSTR pszName, int cch) PURE; \
2490     STDMETHOD_(HRESULT,SetDescription)(THIS_ LPCWSTR pszName) PURE; \
2491     STDMETHOD_(HRESULT,GetWorkingDirectory)(THIS_ LPWSTR pszDir, int cch) PURE; \
2492     STDMETHOD_(HRESULT,SetWorkingDirectory)(THIS_ LPCWSTR pszDir) PURE; \
2493     STDMETHOD_(HRESULT,GetArguments)(THIS_ LPWSTR pszArgs, int cch) PURE; \
2494     STDMETHOD_(HRESULT,SetArguments)(THIS_ LPCWSTR pszArgs) PURE; \
2495     STDMETHOD_(HRESULT,GetHotkey)(THIS_ WORD* pwHotkey) PURE; \
2496     STDMETHOD_(HRESULT,SetHotkey)(THIS_ WORD wHotkey) PURE; \
2497     STDMETHOD_(HRESULT,GetShowCmd)(THIS_ int* piShowCmd) PURE; \
2498     STDMETHOD_(HRESULT,SetShowCmd)(THIS_ int iShowCmd) PURE; \
2499     STDMETHOD_(HRESULT,GetIconLocation)(THIS_ LPWSTR pszIconPath, int cch, int* piIcon) PURE; \
2500     STDMETHOD_(HRESULT,SetIconLocation)(THIS_ LPCWSTR pszIconPath, int iIcon) PURE; \
2501     STDMETHOD_(HRESULT,SetRelativePath)(THIS_ LPCWSTR pszPathRel, DWORD dwReserved) PURE; \
2502     STDMETHOD_(HRESULT,Resolve)(THIS_ HWND hwnd, DWORD fFlags) PURE; \
2503     STDMETHOD_(HRESULT,SetPath)(THIS_ LPCWSTR pszFile) PURE;
2504
2505 HRESULT CALLBACK IShellLinkW_GetPath_Proxy(
2506     IShellLinkW* This,
2507     LPWSTR pszFile,
2508     int cch,
2509     WIN32_FIND_DATAW* pfd,
2510     DWORD fFlags);
2511 void __RPC_STUB IShellLinkW_GetPath_Stub(
2512     struct IRpcStubBuffer* This,
2513     struct IRpcChannelBuffer* pRpcChannelBuffer,
2514     PRPC_MESSAGE pRpcMessage,
2515     DWORD* pdwStubPhase);
2516 HRESULT CALLBACK IShellLinkW_GetIDList_Proxy(
2517     IShellLinkW* This,
2518     LPITEMIDLIST* ppidl);
2519 void __RPC_STUB IShellLinkW_GetIDList_Stub(
2520     struct IRpcStubBuffer* This,
2521     struct IRpcChannelBuffer* pRpcChannelBuffer,
2522     PRPC_MESSAGE pRpcMessage,
2523     DWORD* pdwStubPhase);
2524 HRESULT CALLBACK IShellLinkW_SetIDList_Proxy(
2525     IShellLinkW* This,
2526     LPCITEMIDLIST pidl);
2527 void __RPC_STUB IShellLinkW_SetIDList_Stub(
2528     struct IRpcStubBuffer* This,
2529     struct IRpcChannelBuffer* pRpcChannelBuffer,
2530     PRPC_MESSAGE pRpcMessage,
2531     DWORD* pdwStubPhase);
2532 HRESULT CALLBACK IShellLinkW_GetDescription_Proxy(
2533     IShellLinkW* This,
2534     LPWSTR pszName,
2535     int cch);
2536 void __RPC_STUB IShellLinkW_GetDescription_Stub(
2537     struct IRpcStubBuffer* This,
2538     struct IRpcChannelBuffer* pRpcChannelBuffer,
2539     PRPC_MESSAGE pRpcMessage,
2540     DWORD* pdwStubPhase);
2541 HRESULT CALLBACK IShellLinkW_SetDescription_Proxy(
2542     IShellLinkW* This,
2543     LPCWSTR pszName);
2544 void __RPC_STUB IShellLinkW_SetDescription_Stub(
2545     struct IRpcStubBuffer* This,
2546     struct IRpcChannelBuffer* pRpcChannelBuffer,
2547     PRPC_MESSAGE pRpcMessage,
2548     DWORD* pdwStubPhase);
2549 HRESULT CALLBACK IShellLinkW_GetWorkingDirectory_Proxy(
2550     IShellLinkW* This,
2551     LPWSTR pszDir,
2552     int cch);
2553 void __RPC_STUB IShellLinkW_GetWorkingDirectory_Stub(
2554     struct IRpcStubBuffer* This,
2555     struct IRpcChannelBuffer* pRpcChannelBuffer,
2556     PRPC_MESSAGE pRpcMessage,
2557     DWORD* pdwStubPhase);
2558 HRESULT CALLBACK IShellLinkW_SetWorkingDirectory_Proxy(
2559     IShellLinkW* This,
2560     LPCWSTR pszDir);
2561 void __RPC_STUB IShellLinkW_SetWorkingDirectory_Stub(
2562     struct IRpcStubBuffer* This,
2563     struct IRpcChannelBuffer* pRpcChannelBuffer,
2564     PRPC_MESSAGE pRpcMessage,
2565     DWORD* pdwStubPhase);
2566 HRESULT CALLBACK IShellLinkW_GetArguments_Proxy(
2567     IShellLinkW* This,
2568     LPWSTR pszArgs,
2569     int cch);
2570 void __RPC_STUB IShellLinkW_GetArguments_Stub(
2571     struct IRpcStubBuffer* This,
2572     struct IRpcChannelBuffer* pRpcChannelBuffer,
2573     PRPC_MESSAGE pRpcMessage,
2574     DWORD* pdwStubPhase);
2575 HRESULT CALLBACK IShellLinkW_SetArguments_Proxy(
2576     IShellLinkW* This,
2577     LPCWSTR pszArgs);
2578 void __RPC_STUB IShellLinkW_SetArguments_Stub(
2579     struct IRpcStubBuffer* This,
2580     struct IRpcChannelBuffer* pRpcChannelBuffer,
2581     PRPC_MESSAGE pRpcMessage,
2582     DWORD* pdwStubPhase);
2583 HRESULT CALLBACK IShellLinkW_GetHotkey_Proxy(
2584     IShellLinkW* This,
2585     WORD* pwHotkey);
2586 void __RPC_STUB IShellLinkW_GetHotkey_Stub(
2587     struct IRpcStubBuffer* This,
2588     struct IRpcChannelBuffer* pRpcChannelBuffer,
2589     PRPC_MESSAGE pRpcMessage,
2590     DWORD* pdwStubPhase);
2591 HRESULT CALLBACK IShellLinkW_SetHotkey_Proxy(
2592     IShellLinkW* This,
2593     WORD wHotkey);
2594 void __RPC_STUB IShellLinkW_SetHotkey_Stub(
2595     struct IRpcStubBuffer* This,
2596     struct IRpcChannelBuffer* pRpcChannelBuffer,
2597     PRPC_MESSAGE pRpcMessage,
2598     DWORD* pdwStubPhase);
2599 HRESULT CALLBACK IShellLinkW_GetShowCmd_Proxy(
2600     IShellLinkW* This,
2601     int* piShowCmd);
2602 void __RPC_STUB IShellLinkW_GetShowCmd_Stub(
2603     struct IRpcStubBuffer* This,
2604     struct IRpcChannelBuffer* pRpcChannelBuffer,
2605     PRPC_MESSAGE pRpcMessage,
2606     DWORD* pdwStubPhase);
2607 HRESULT CALLBACK IShellLinkW_SetShowCmd_Proxy(
2608     IShellLinkW* This,
2609     int iShowCmd);
2610 void __RPC_STUB IShellLinkW_SetShowCmd_Stub(
2611     struct IRpcStubBuffer* This,
2612     struct IRpcChannelBuffer* pRpcChannelBuffer,
2613     PRPC_MESSAGE pRpcMessage,
2614     DWORD* pdwStubPhase);
2615 HRESULT CALLBACK IShellLinkW_GetIconLocation_Proxy(
2616     IShellLinkW* This,
2617     LPWSTR pszIconPath,
2618     int cch,
2619     int* piIcon);
2620 void __RPC_STUB IShellLinkW_GetIconLocation_Stub(
2621     struct IRpcStubBuffer* This,
2622     struct IRpcChannelBuffer* pRpcChannelBuffer,
2623     PRPC_MESSAGE pRpcMessage,
2624     DWORD* pdwStubPhase);
2625 HRESULT CALLBACK IShellLinkW_SetIconLocation_Proxy(
2626     IShellLinkW* This,
2627     LPCWSTR pszIconPath,
2628     int iIcon);
2629 void __RPC_STUB IShellLinkW_SetIconLocation_Stub(
2630     struct IRpcStubBuffer* This,
2631     struct IRpcChannelBuffer* pRpcChannelBuffer,
2632     PRPC_MESSAGE pRpcMessage,
2633     DWORD* pdwStubPhase);
2634 HRESULT CALLBACK IShellLinkW_SetRelativePath_Proxy(
2635     IShellLinkW* This,
2636     LPCWSTR pszPathRel,
2637     DWORD dwReserved);
2638 void __RPC_STUB IShellLinkW_SetRelativePath_Stub(
2639     struct IRpcStubBuffer* This,
2640     struct IRpcChannelBuffer* pRpcChannelBuffer,
2641     PRPC_MESSAGE pRpcMessage,
2642     DWORD* pdwStubPhase);
2643 HRESULT CALLBACK IShellLinkW_Resolve_Proxy(
2644     IShellLinkW* This,
2645     HWND hwnd,
2646     DWORD fFlags);
2647 void __RPC_STUB IShellLinkW_Resolve_Stub(
2648     struct IRpcStubBuffer* This,
2649     struct IRpcChannelBuffer* pRpcChannelBuffer,
2650     PRPC_MESSAGE pRpcMessage,
2651     DWORD* pdwStubPhase);
2652 HRESULT CALLBACK IShellLinkW_SetPath_Proxy(
2653     IShellLinkW* This,
2654     LPCWSTR pszFile);
2655 void __RPC_STUB IShellLinkW_SetPath_Stub(
2656     struct IRpcStubBuffer* This,
2657     struct IRpcChannelBuffer* pRpcChannelBuffer,
2658     PRPC_MESSAGE pRpcMessage,
2659     DWORD* pdwStubPhase);
2660
2661 #endif  /* __IShellLinkW_INTERFACE_DEFINED__ */
2662
2663 #define IShellLink WINELIB_NAME_AW(IShellLink)
2664 #ifndef __IShellExtInit_FWD_DEFINED__
2665 #define __IShellExtInit_FWD_DEFINED__
2666 typedef struct IShellExtInit IShellExtInit;
2667 #endif
2668
2669 typedef IShellExtInit *LPSHELLEXTINIT;
2670
2671 /*****************************************************************************
2672  * IShellExtInit interface
2673  */
2674 #ifndef __IShellExtInit_INTERFACE_DEFINED__
2675 #define __IShellExtInit_INTERFACE_DEFINED__
2676
2677 DEFINE_GUID(IID_IShellExtInit, 0x000214e8, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2678 #if defined(__cplusplus) && !defined(CINTERFACE)
2679 struct IShellExtInit : public IUnknown
2680 {
2681     virtual HRESULT STDMETHODCALLTYPE Initialize(
2682         LPCITEMIDLIST pidlFolder,
2683         IDataObject* pdtobj,
2684         HKEY hkeyProgID) = 0;
2685
2686 };
2687 #else
2688 typedef struct IShellExtInitVtbl IShellExtInitVtbl;
2689 struct IShellExtInit {
2690     const IShellExtInitVtbl* lpVtbl;
2691 };
2692 struct IShellExtInitVtbl {
2693     ICOM_MSVTABLE_COMPAT_FIELDS
2694
2695     /*** IUnknown methods ***/
2696     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2697         IShellExtInit* This,
2698         REFIID riid,
2699         void** ppvObject);
2700
2701     ULONG (STDMETHODCALLTYPE *AddRef)(
2702         IShellExtInit* This);
2703
2704     ULONG (STDMETHODCALLTYPE *Release)(
2705         IShellExtInit* This);
2706
2707     /*** IShellExtInit methods ***/
2708     HRESULT (STDMETHODCALLTYPE *Initialize)(
2709         IShellExtInit* This,
2710         LPCITEMIDLIST pidlFolder,
2711         IDataObject* pdtobj,
2712         HKEY hkeyProgID);
2713
2714 };
2715
2716 /*** IUnknown methods ***/
2717 #define IShellExtInit_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2718 #define IShellExtInit_AddRef(p) (p)->lpVtbl->AddRef(p)
2719 #define IShellExtInit_Release(p) (p)->lpVtbl->Release(p)
2720 /*** IShellExtInit methods ***/
2721 #define IShellExtInit_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
2722
2723 #endif
2724
2725 #define IShellExtInit_METHODS \
2726     ICOM_MSVTABLE_COMPAT_FIELDS \
2727     /*** IUnknown methods ***/ \
2728     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2729     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2730     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2731     /*** IShellExtInit methods ***/ \
2732     STDMETHOD_(HRESULT,Initialize)(THIS_ LPCITEMIDLIST pidlFolder, IDataObject* pdtobj, HKEY hkeyProgID) PURE;
2733
2734 HRESULT CALLBACK IShellExtInit_Initialize_Proxy(
2735     IShellExtInit* This,
2736     LPCITEMIDLIST pidlFolder,
2737     IDataObject* pdtobj,
2738     HKEY hkeyProgID);
2739 void __RPC_STUB IShellExtInit_Initialize_Stub(
2740     struct IRpcStubBuffer* This,
2741     struct IRpcChannelBuffer* pRpcChannelBuffer,
2742     PRPC_MESSAGE pRpcMessage,
2743     DWORD* pdwStubPhase);
2744
2745 #endif  /* __IShellExtInit_INTERFACE_DEFINED__ */
2746
2747 #ifndef __IPersistFolder3_FWD_DEFINED__
2748 #define __IPersistFolder3_FWD_DEFINED__
2749 typedef struct IPersistFolder3 IPersistFolder3;
2750 #endif
2751
2752 typedef struct {
2753     LPITEMIDLIST pidlTargetFolder;
2754     WCHAR szTargetParsingName[260];
2755     WCHAR szNetworkProvider[260];
2756     DWORD dwAttributes;
2757     int csidl;
2758 } PERSIST_FOLDER_TARGET_INFO;
2759
2760 /*****************************************************************************
2761  * IPersistFolder3 interface
2762  */
2763 #ifndef __IPersistFolder3_INTERFACE_DEFINED__
2764 #define __IPersistFolder3_INTERFACE_DEFINED__
2765
2766 DEFINE_GUID(IID_IPersistFolder3, 0xcef04fdf, 0xfe72, 0x11d2, 0x87,0xa5, 0x00,0xc0,0x4f,0x68,0x37,0xcf);
2767 #if defined(__cplusplus) && !defined(CINTERFACE)
2768 struct IPersistFolder3 : public IPersistFolder2
2769 {
2770     virtual HRESULT STDMETHODCALLTYPE InitializeEx(
2771         IBindCtx* pbc,
2772         LPCITEMIDLIST pidlRoot,
2773         const PERSIST_FOLDER_TARGET_INFO* ppfti) = 0;
2774
2775     virtual HRESULT STDMETHODCALLTYPE GetFolderTargetInfo(
2776         PERSIST_FOLDER_TARGET_INFO* ppfti) = 0;
2777
2778 };
2779 #else
2780 typedef struct IPersistFolder3Vtbl IPersistFolder3Vtbl;
2781 struct IPersistFolder3 {
2782     const IPersistFolder3Vtbl* lpVtbl;
2783 };
2784 struct IPersistFolder3Vtbl {
2785     ICOM_MSVTABLE_COMPAT_FIELDS
2786
2787     /*** IUnknown methods ***/
2788     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2789         IPersistFolder3* This,
2790         REFIID riid,
2791         void** ppvObject);
2792
2793     ULONG (STDMETHODCALLTYPE *AddRef)(
2794         IPersistFolder3* This);
2795
2796     ULONG (STDMETHODCALLTYPE *Release)(
2797         IPersistFolder3* This);
2798
2799     /*** IPersist methods ***/
2800     HRESULT (STDMETHODCALLTYPE *GetClassID)(
2801         IPersistFolder3* This,
2802         CLSID* pClassID);
2803
2804     /*** IPersistFolder methods ***/
2805     HRESULT (STDMETHODCALLTYPE *Initialize)(
2806         IPersistFolder3* This,
2807         LPCITEMIDLIST pidl);
2808
2809     /*** IPersistFolder2 methods ***/
2810     HRESULT (STDMETHODCALLTYPE *GetCurFolder)(
2811         IPersistFolder3* This,
2812         LPITEMIDLIST* ppidl);
2813
2814     /*** IPersistFolder3 methods ***/
2815     HRESULT (STDMETHODCALLTYPE *InitializeEx)(
2816         IPersistFolder3* This,
2817         IBindCtx* pbc,
2818         LPCITEMIDLIST pidlRoot,
2819         const PERSIST_FOLDER_TARGET_INFO* ppfti);
2820
2821     HRESULT (STDMETHODCALLTYPE *GetFolderTargetInfo)(
2822         IPersistFolder3* This,
2823         PERSIST_FOLDER_TARGET_INFO* ppfti);
2824
2825 };
2826
2827 /*** IUnknown methods ***/
2828 #define IPersistFolder3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2829 #define IPersistFolder3_AddRef(p) (p)->lpVtbl->AddRef(p)
2830 #define IPersistFolder3_Release(p) (p)->lpVtbl->Release(p)
2831 /*** IPersist methods ***/
2832 #define IPersistFolder3_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
2833 /*** IPersistFolder methods ***/
2834 #define IPersistFolder3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
2835 /*** IPersistFolder2 methods ***/
2836 #define IPersistFolder3_GetCurFolder(p,a) (p)->lpVtbl->GetCurFolder(p,a)
2837 /*** IPersistFolder3 methods ***/
2838 #define IPersistFolder3_InitializeEx(p,a,b,c) (p)->lpVtbl->InitializeEx(p,a,b,c)
2839 #define IPersistFolder3_GetFolderTargetInfo(p,a) (p)->lpVtbl->GetFolderTargetInfo(p,a)
2840
2841 #endif
2842
2843 #define IPersistFolder3_METHODS \
2844     ICOM_MSVTABLE_COMPAT_FIELDS \
2845     /*** IUnknown methods ***/ \
2846     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2847     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2848     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2849     /*** IPersist methods ***/ \
2850     STDMETHOD_(HRESULT,GetClassID)(THIS_ CLSID* pClassID) PURE; \
2851     /*** IPersistFolder methods ***/ \
2852     STDMETHOD_(HRESULT,Initialize)(THIS_ LPCITEMIDLIST pidl) PURE; \
2853     /*** IPersistFolder2 methods ***/ \
2854     STDMETHOD_(HRESULT,GetCurFolder)(THIS_ LPITEMIDLIST* ppidl) PURE; \
2855     /*** IPersistFolder3 methods ***/ \
2856     STDMETHOD_(HRESULT,InitializeEx)(THIS_ IBindCtx* pbc, LPCITEMIDLIST pidlRoot, const PERSIST_FOLDER_TARGET_INFO* ppfti) PURE; \
2857     STDMETHOD_(HRESULT,GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO* ppfti) PURE;
2858
2859 HRESULT CALLBACK IPersistFolder3_InitializeEx_Proxy(
2860     IPersistFolder3* This,
2861     IBindCtx* pbc,
2862     LPCITEMIDLIST pidlRoot,
2863     const PERSIST_FOLDER_TARGET_INFO* ppfti);
2864 void __RPC_STUB IPersistFolder3_InitializeEx_Stub(
2865     struct IRpcStubBuffer* This,
2866     struct IRpcChannelBuffer* pRpcChannelBuffer,
2867     PRPC_MESSAGE pRpcMessage,
2868     DWORD* pdwStubPhase);
2869 HRESULT CALLBACK IPersistFolder3_GetFolderTargetInfo_Proxy(
2870     IPersistFolder3* This,
2871     PERSIST_FOLDER_TARGET_INFO* ppfti);
2872 void __RPC_STUB IPersistFolder3_GetFolderTargetInfo_Stub(
2873     struct IRpcStubBuffer* This,
2874     struct IRpcChannelBuffer* pRpcChannelBuffer,
2875     PRPC_MESSAGE pRpcMessage,
2876     DWORD* pdwStubPhase);
2877
2878 #endif  /* __IPersistFolder3_INTERFACE_DEFINED__ */
2879
2880 #ifndef __IExtractIconA_FWD_DEFINED__
2881 #define __IExtractIconA_FWD_DEFINED__
2882 typedef struct IExtractIconA IExtractIconA;
2883 #endif
2884
2885 #define GIL_OPENICON     0x0001
2886 #define GIL_FORSHELL     0x0002
2887 #define GIL_ASYNC        0x0020
2888 #define GIL_DEFAULTICON  0x0040
2889 #define GIL_FORSHORTCUT  0x0080
2890 #define GIL_SIMULATEDOC  0x0001
2891 #define GIL_PERINSTANCE  0x0002
2892 #define GIL_PERCLASS     0x0004
2893 #define GIL_NOTFILENAME  0x0008
2894 #define GIL_DONTCACHE    0x0010
2895 typedef IExtractIconA *LPEXTRACTICONA;
2896
2897 /*****************************************************************************
2898  * IExtractIconA interface
2899  */
2900 #ifndef __IExtractIconA_INTERFACE_DEFINED__
2901 #define __IExtractIconA_INTERFACE_DEFINED__
2902
2903 DEFINE_GUID(IID_IExtractIconA, 0x000214eb, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
2904 #if defined(__cplusplus) && !defined(CINTERFACE)
2905 struct IExtractIconA : public IUnknown
2906 {
2907     virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
2908         UINT uFlags,
2909         LPSTR szIconFile,
2910         UINT cchMax,
2911         INT* piIndex,
2912         UINT* pwFlags) = 0;
2913
2914     virtual HRESULT STDMETHODCALLTYPE Extract(
2915         LPCSTR pszFile,
2916         UINT nIconIndex,
2917         HICON* phiconLarge,
2918         HICON* phiconSmall,
2919         UINT nIconSize) = 0;
2920
2921 };
2922 #else
2923 typedef struct IExtractIconAVtbl IExtractIconAVtbl;
2924 struct IExtractIconA {
2925     const IExtractIconAVtbl* lpVtbl;
2926 };
2927 struct IExtractIconAVtbl {
2928     ICOM_MSVTABLE_COMPAT_FIELDS
2929
2930     /*** IUnknown methods ***/
2931     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
2932         IExtractIconA* This,
2933         REFIID riid,
2934         void** ppvObject);
2935
2936     ULONG (STDMETHODCALLTYPE *AddRef)(
2937         IExtractIconA* This);
2938
2939     ULONG (STDMETHODCALLTYPE *Release)(
2940         IExtractIconA* This);
2941
2942     /*** IExtractIconA methods ***/
2943     HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
2944         IExtractIconA* This,
2945         UINT uFlags,
2946         LPSTR szIconFile,
2947         UINT cchMax,
2948         INT* piIndex,
2949         UINT* pwFlags);
2950
2951     HRESULT (STDMETHODCALLTYPE *Extract)(
2952         IExtractIconA* This,
2953         LPCSTR pszFile,
2954         UINT nIconIndex,
2955         HICON* phiconLarge,
2956         HICON* phiconSmall,
2957         UINT nIconSize);
2958
2959 };
2960
2961 /*** IUnknown methods ***/
2962 #define IExtractIconA_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
2963 #define IExtractIconA_AddRef(p) (p)->lpVtbl->AddRef(p)
2964 #define IExtractIconA_Release(p) (p)->lpVtbl->Release(p)
2965 /*** IExtractIconA methods ***/
2966 #define IExtractIconA_GetIconLocation(p,a,b,c,d,e) (p)->lpVtbl->GetIconLocation(p,a,b,c,d,e)
2967 #define IExtractIconA_Extract(p,a,b,c,d,e) (p)->lpVtbl->Extract(p,a,b,c,d,e)
2968
2969 #endif
2970
2971 #define IExtractIconA_METHODS \
2972     ICOM_MSVTABLE_COMPAT_FIELDS \
2973     /*** IUnknown methods ***/ \
2974     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
2975     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
2976     STDMETHOD_(ULONG,Release)(THIS) PURE; \
2977     /*** IExtractIconA methods ***/ \
2978     STDMETHOD_(HRESULT,GetIconLocation)(THIS_ UINT uFlags, LPSTR szIconFile, UINT cchMax, INT* piIndex, UINT* pwFlags) PURE; \
2979     STDMETHOD_(HRESULT,Extract)(THIS_ LPCSTR pszFile, UINT nIconIndex, HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize) PURE;
2980
2981 HRESULT CALLBACK IExtractIconA_GetIconLocation_Proxy(
2982     IExtractIconA* This,
2983     UINT uFlags,
2984     LPSTR szIconFile,
2985     UINT cchMax,
2986     INT* piIndex,
2987     UINT* pwFlags);
2988 void __RPC_STUB IExtractIconA_GetIconLocation_Stub(
2989     struct IRpcStubBuffer* This,
2990     struct IRpcChannelBuffer* pRpcChannelBuffer,
2991     PRPC_MESSAGE pRpcMessage,
2992     DWORD* pdwStubPhase);
2993 HRESULT CALLBACK IExtractIconA_Extract_Proxy(
2994     IExtractIconA* This,
2995     LPCSTR pszFile,
2996     UINT nIconIndex,
2997     HICON* phiconLarge,
2998     HICON* phiconSmall,
2999     UINT nIconSize);
3000 void __RPC_STUB IExtractIconA_Extract_Stub(
3001     struct IRpcStubBuffer* This,
3002     struct IRpcChannelBuffer* pRpcChannelBuffer,
3003     PRPC_MESSAGE pRpcMessage,
3004     DWORD* pdwStubPhase);
3005
3006 #endif  /* __IExtractIconA_INTERFACE_DEFINED__ */
3007
3008 #ifndef __IExtractIconW_FWD_DEFINED__
3009 #define __IExtractIconW_FWD_DEFINED__
3010 typedef struct IExtractIconW IExtractIconW;
3011 #endif
3012
3013 typedef IExtractIconW *LPEXTRACTICONW;
3014
3015 /*****************************************************************************
3016  * IExtractIconW interface
3017  */
3018 #ifndef __IExtractIconW_INTERFACE_DEFINED__
3019 #define __IExtractIconW_INTERFACE_DEFINED__
3020
3021 DEFINE_GUID(IID_IExtractIconW, 0x000214fa, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3022 #if defined(__cplusplus) && !defined(CINTERFACE)
3023 struct IExtractIconW : public IUnknown
3024 {
3025     virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
3026         UINT uFlags,
3027         LPWSTR szIconFile,
3028         UINT cchMax,
3029         INT* piIndex,
3030         UINT* pwFlags) = 0;
3031
3032     virtual HRESULT STDMETHODCALLTYPE Extract(
3033         LPCWSTR pszFile,
3034         UINT nIconIndex,
3035         HICON* phiconLarge,
3036         HICON* phiconSmall,
3037         UINT nIconSize) = 0;
3038
3039 };
3040 #else
3041 typedef struct IExtractIconWVtbl IExtractIconWVtbl;
3042 struct IExtractIconW {
3043     const IExtractIconWVtbl* lpVtbl;
3044 };
3045 struct IExtractIconWVtbl {
3046     ICOM_MSVTABLE_COMPAT_FIELDS
3047
3048     /*** IUnknown methods ***/
3049     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3050         IExtractIconW* This,
3051         REFIID riid,
3052         void** ppvObject);
3053
3054     ULONG (STDMETHODCALLTYPE *AddRef)(
3055         IExtractIconW* This);
3056
3057     ULONG (STDMETHODCALLTYPE *Release)(
3058         IExtractIconW* This);
3059
3060     /*** IExtractIconW methods ***/
3061     HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
3062         IExtractIconW* This,
3063         UINT uFlags,
3064         LPWSTR szIconFile,
3065         UINT cchMax,
3066         INT* piIndex,
3067         UINT* pwFlags);
3068
3069     HRESULT (STDMETHODCALLTYPE *Extract)(
3070         IExtractIconW* This,
3071         LPCWSTR pszFile,
3072         UINT nIconIndex,
3073         HICON* phiconLarge,
3074         HICON* phiconSmall,
3075         UINT nIconSize);
3076
3077 };
3078
3079 /*** IUnknown methods ***/
3080 #define IExtractIconW_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3081 #define IExtractIconW_AddRef(p) (p)->lpVtbl->AddRef(p)
3082 #define IExtractIconW_Release(p) (p)->lpVtbl->Release(p)
3083 /*** IExtractIconW methods ***/
3084 #define IExtractIconW_GetIconLocation(p,a,b,c,d,e) (p)->lpVtbl->GetIconLocation(p,a,b,c,d,e)
3085 #define IExtractIconW_Extract(p,a,b,c,d,e) (p)->lpVtbl->Extract(p,a,b,c,d,e)
3086
3087 #endif
3088
3089 #define IExtractIconW_METHODS \
3090     ICOM_MSVTABLE_COMPAT_FIELDS \
3091     /*** IUnknown methods ***/ \
3092     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3093     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3094     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3095     /*** IExtractIconW methods ***/ \
3096     STDMETHOD_(HRESULT,GetIconLocation)(THIS_ UINT uFlags, LPWSTR szIconFile, UINT cchMax, INT* piIndex, UINT* pwFlags) PURE; \
3097     STDMETHOD_(HRESULT,Extract)(THIS_ LPCWSTR pszFile, UINT nIconIndex, HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize) PURE;
3098
3099 HRESULT CALLBACK IExtractIconW_GetIconLocation_Proxy(
3100     IExtractIconW* This,
3101     UINT uFlags,
3102     LPWSTR szIconFile,
3103     UINT cchMax,
3104     INT* piIndex,
3105     UINT* pwFlags);
3106 void __RPC_STUB IExtractIconW_GetIconLocation_Stub(
3107     struct IRpcStubBuffer* This,
3108     struct IRpcChannelBuffer* pRpcChannelBuffer,
3109     PRPC_MESSAGE pRpcMessage,
3110     DWORD* pdwStubPhase);
3111 HRESULT CALLBACK IExtractIconW_Extract_Proxy(
3112     IExtractIconW* This,
3113     LPCWSTR pszFile,
3114     UINT nIconIndex,
3115     HICON* phiconLarge,
3116     HICON* phiconSmall,
3117     UINT nIconSize);
3118 void __RPC_STUB IExtractIconW_Extract_Stub(
3119     struct IRpcStubBuffer* This,
3120     struct IRpcChannelBuffer* pRpcChannelBuffer,
3121     PRPC_MESSAGE pRpcMessage,
3122     DWORD* pdwStubPhase);
3123
3124 #endif  /* __IExtractIconW_INTERFACE_DEFINED__ */
3125
3126 #define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)
3127 #define IExtractIcon WINELIB_NAME_AW(IExtractIcon)
3128 #ifndef __ICommDlgBrowser_FWD_DEFINED__
3129 #define __ICommDlgBrowser_FWD_DEFINED__
3130 typedef struct ICommDlgBrowser ICommDlgBrowser;
3131 #endif
3132
3133 #define CDBOSC_SETFOCUS     0x00000000
3134 #define CDBOSC_KILLFOCUS    0x00000001
3135 #define CDBOSC_SELCHANGE    0x00000002
3136 #define CDBOSC_RENAME       0x00000003
3137 #define CDBOSC_STATECHANGE  0x00000004
3138 typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
3139
3140 /*****************************************************************************
3141  * ICommDlgBrowser interface
3142  */
3143 #ifndef __ICommDlgBrowser_INTERFACE_DEFINED__
3144 #define __ICommDlgBrowser_INTERFACE_DEFINED__
3145
3146 DEFINE_GUID(IID_ICommDlgBrowser, 0x000214f1, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3147 #if defined(__cplusplus) && !defined(CINTERFACE)
3148 struct ICommDlgBrowser : public IUnknown
3149 {
3150     virtual HRESULT STDMETHODCALLTYPE OnDefaultCommand(
3151         IShellView* shv) = 0;
3152
3153     virtual HRESULT STDMETHODCALLTYPE OnStateChange(
3154         IShellView* shv,
3155         ULONG uChange) = 0;
3156
3157     virtual HRESULT STDMETHODCALLTYPE IncludeObject(
3158         IShellView* shv,
3159         LPCITEMIDLIST pidl) = 0;
3160
3161 };
3162 #else
3163 typedef struct ICommDlgBrowserVtbl ICommDlgBrowserVtbl;
3164 struct ICommDlgBrowser {
3165     const ICommDlgBrowserVtbl* lpVtbl;
3166 };
3167 struct ICommDlgBrowserVtbl {
3168     ICOM_MSVTABLE_COMPAT_FIELDS
3169
3170     /*** IUnknown methods ***/
3171     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3172         ICommDlgBrowser* This,
3173         REFIID riid,
3174         void** ppvObject);
3175
3176     ULONG (STDMETHODCALLTYPE *AddRef)(
3177         ICommDlgBrowser* This);
3178
3179     ULONG (STDMETHODCALLTYPE *Release)(
3180         ICommDlgBrowser* This);
3181
3182     /*** ICommDlgBrowser methods ***/
3183     HRESULT (STDMETHODCALLTYPE *OnDefaultCommand)(
3184         ICommDlgBrowser* This,
3185         IShellView* shv);
3186
3187     HRESULT (STDMETHODCALLTYPE *OnStateChange)(
3188         ICommDlgBrowser* This,
3189         IShellView* shv,
3190         ULONG uChange);
3191
3192     HRESULT (STDMETHODCALLTYPE *IncludeObject)(
3193         ICommDlgBrowser* This,
3194         IShellView* shv,
3195         LPCITEMIDLIST pidl);
3196
3197 };
3198
3199 /*** IUnknown methods ***/
3200 #define ICommDlgBrowser_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3201 #define ICommDlgBrowser_AddRef(p) (p)->lpVtbl->AddRef(p)
3202 #define ICommDlgBrowser_Release(p) (p)->lpVtbl->Release(p)
3203 /*** ICommDlgBrowser methods ***/
3204 #define ICommDlgBrowser_OnDefaultCommand(p,a) (p)->lpVtbl->OnDefaultCommand(p,a)
3205 #define ICommDlgBrowser_OnStateChange(p,a,b) (p)->lpVtbl->OnStateChange(p,a,b)
3206 #define ICommDlgBrowser_IncludeObject(p,a,b) (p)->lpVtbl->IncludeObject(p,a,b)
3207
3208 #endif
3209
3210 #define ICommDlgBrowser_METHODS \
3211     ICOM_MSVTABLE_COMPAT_FIELDS \
3212     /*** IUnknown methods ***/ \
3213     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3214     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3215     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3216     /*** ICommDlgBrowser methods ***/ \
3217     STDMETHOD_(HRESULT,OnDefaultCommand)(THIS_ IShellView* shv) PURE; \
3218     STDMETHOD_(HRESULT,OnStateChange)(THIS_ IShellView* shv, ULONG uChange) PURE; \
3219     STDMETHOD_(HRESULT,IncludeObject)(THIS_ IShellView* shv, LPCITEMIDLIST pidl) PURE;
3220
3221 HRESULT CALLBACK ICommDlgBrowser_OnDefaultCommand_Proxy(
3222     ICommDlgBrowser* This,
3223     IShellView* shv);
3224 void __RPC_STUB ICommDlgBrowser_OnDefaultCommand_Stub(
3225     struct IRpcStubBuffer* This,
3226     struct IRpcChannelBuffer* pRpcChannelBuffer,
3227     PRPC_MESSAGE pRpcMessage,
3228     DWORD* pdwStubPhase);
3229 HRESULT CALLBACK ICommDlgBrowser_OnStateChange_Proxy(
3230     ICommDlgBrowser* This,
3231     IShellView* shv,
3232     ULONG uChange);
3233 void __RPC_STUB ICommDlgBrowser_OnStateChange_Stub(
3234     struct IRpcStubBuffer* This,
3235     struct IRpcChannelBuffer* pRpcChannelBuffer,
3236     PRPC_MESSAGE pRpcMessage,
3237     DWORD* pdwStubPhase);
3238 HRESULT CALLBACK ICommDlgBrowser_IncludeObject_Proxy(
3239     ICommDlgBrowser* This,
3240     IShellView* shv,
3241     LPCITEMIDLIST pidl);
3242 void __RPC_STUB ICommDlgBrowser_IncludeObject_Stub(
3243     struct IRpcStubBuffer* This,
3244     struct IRpcChannelBuffer* pRpcChannelBuffer,
3245     PRPC_MESSAGE pRpcMessage,
3246     DWORD* pdwStubPhase);
3247
3248 #endif  /* __ICommDlgBrowser_INTERFACE_DEFINED__ */
3249
3250 #ifndef __IDockingWindowFrame_FWD_DEFINED__
3251 #define __IDockingWindowFrame_FWD_DEFINED__
3252 typedef struct IDockingWindowFrame IDockingWindowFrame;
3253 #endif
3254
3255 #define DWFRF_NORMAL           0x0000
3256 #define DWFRF_DELETECONFIGDATA 0x0001
3257 #define DWFAF_HIDDEN           0x0001
3258 /*****************************************************************************
3259  * IDockingWindowFrame interface
3260  */
3261 #ifndef __IDockingWindowFrame_INTERFACE_DEFINED__
3262 #define __IDockingWindowFrame_INTERFACE_DEFINED__
3263
3264 DEFINE_GUID(IID_IDockingWindowFrame, 0x47d2657a, 0x7b27, 0x11d0, 0x8c,0xa9, 0x00,0xa0,0xc9,0x2d,0xbf,0xe8);
3265 #if defined(__cplusplus) && !defined(CINTERFACE)
3266 struct IDockingWindowFrame : public IOleWindow
3267 {
3268     virtual HRESULT STDMETHODCALLTYPE AddToolbar(
3269         IUnknown* punkSrc,
3270         LPCWSTR pwszItem,
3271         DWORD dwAddFlags) = 0;
3272
3273     virtual HRESULT STDMETHODCALLTYPE RemoveToolbar(
3274         IUnknown* punkSrc,
3275         DWORD dwRemoveFlags) = 0;
3276
3277     virtual HRESULT STDMETHODCALLTYPE FindToolbar(
3278         LPCWSTR pwszItem,
3279         REFIID riid,
3280         LPVOID* ppvObj) = 0;
3281
3282 };
3283 #else
3284 typedef struct IDockingWindowFrameVtbl IDockingWindowFrameVtbl;
3285 struct IDockingWindowFrame {
3286     const IDockingWindowFrameVtbl* lpVtbl;
3287 };
3288 struct IDockingWindowFrameVtbl {
3289     ICOM_MSVTABLE_COMPAT_FIELDS
3290
3291     /*** IUnknown methods ***/
3292     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3293         IDockingWindowFrame* This,
3294         REFIID riid,
3295         void** ppvObject);
3296
3297     ULONG (STDMETHODCALLTYPE *AddRef)(
3298         IDockingWindowFrame* This);
3299
3300     ULONG (STDMETHODCALLTYPE *Release)(
3301         IDockingWindowFrame* This);
3302
3303     /*** IOleWindow methods ***/
3304     HRESULT (STDMETHODCALLTYPE *GetWindow)(
3305         IDockingWindowFrame* This,
3306         HWND* phwnd);
3307
3308     HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
3309         IDockingWindowFrame* This,
3310         BOOL fEnterMode);
3311
3312     /*** IDockingWindowFrame methods ***/
3313     HRESULT (STDMETHODCALLTYPE *AddToolbar)(
3314         IDockingWindowFrame* This,
3315         IUnknown* punkSrc,
3316         LPCWSTR pwszItem,
3317         DWORD dwAddFlags);
3318
3319     HRESULT (STDMETHODCALLTYPE *RemoveToolbar)(
3320         IDockingWindowFrame* This,
3321         IUnknown* punkSrc,
3322         DWORD dwRemoveFlags);
3323
3324     HRESULT (STDMETHODCALLTYPE *FindToolbar)(
3325         IDockingWindowFrame* This,
3326         LPCWSTR pwszItem,
3327         REFIID riid,
3328         LPVOID* ppvObj);
3329
3330 };
3331
3332 /*** IUnknown methods ***/
3333 #define IDockingWindowFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3334 #define IDockingWindowFrame_AddRef(p) (p)->lpVtbl->AddRef(p)
3335 #define IDockingWindowFrame_Release(p) (p)->lpVtbl->Release(p)
3336 /*** IOleWindow methods ***/
3337 #define IDockingWindowFrame_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
3338 #define IDockingWindowFrame_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
3339 /*** IDockingWindowFrame methods ***/
3340 #define IDockingWindowFrame_AddToolbar(p,a,b,c) (p)->lpVtbl->AddToolbar(p,a,b,c)
3341 #define IDockingWindowFrame_RemoveToolbar(p,a,b) (p)->lpVtbl->RemoveToolbar(p,a,b)
3342 #define IDockingWindowFrame_FindToolbar(p,a,b,c) (p)->lpVtbl->FindToolbar(p,a,b,c)
3343
3344 #endif
3345
3346 #define IDockingWindowFrame_METHODS \
3347     ICOM_MSVTABLE_COMPAT_FIELDS \
3348     /*** IUnknown methods ***/ \
3349     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3350     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3351     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3352     /*** IOleWindow methods ***/ \
3353     STDMETHOD_(HRESULT,GetWindow)(THIS_ HWND* phwnd) PURE; \
3354     STDMETHOD_(HRESULT,ContextSensitiveHelp)(THIS_ BOOL fEnterMode) PURE; \
3355     /*** IDockingWindowFrame methods ***/ \
3356     STDMETHOD_(HRESULT,AddToolbar)(THIS_ IUnknown* punkSrc, LPCWSTR pwszItem, DWORD dwAddFlags) PURE; \
3357     STDMETHOD_(HRESULT,RemoveToolbar)(THIS_ IUnknown* punkSrc, DWORD dwRemoveFlags) PURE; \
3358     STDMETHOD_(HRESULT,FindToolbar)(THIS_ LPCWSTR pwszItem, REFIID riid, LPVOID* ppvObj) PURE;
3359
3360 HRESULT CALLBACK IDockingWindowFrame_AddToolbar_Proxy(
3361     IDockingWindowFrame* This,
3362     IUnknown* punkSrc,
3363     LPCWSTR pwszItem,
3364     DWORD dwAddFlags);
3365 void __RPC_STUB IDockingWindowFrame_AddToolbar_Stub(
3366     struct IRpcStubBuffer* This,
3367     struct IRpcChannelBuffer* pRpcChannelBuffer,
3368     PRPC_MESSAGE pRpcMessage,
3369     DWORD* pdwStubPhase);
3370 HRESULT CALLBACK IDockingWindowFrame_RemoveToolbar_Proxy(
3371     IDockingWindowFrame* This,
3372     IUnknown* punkSrc,
3373     DWORD dwRemoveFlags);
3374 void __RPC_STUB IDockingWindowFrame_RemoveToolbar_Stub(
3375     struct IRpcStubBuffer* This,
3376     struct IRpcChannelBuffer* pRpcChannelBuffer,
3377     PRPC_MESSAGE pRpcMessage,
3378     DWORD* pdwStubPhase);
3379 HRESULT CALLBACK IDockingWindowFrame_FindToolbar_Proxy(
3380     IDockingWindowFrame* This,
3381     LPCWSTR pwszItem,
3382     REFIID riid,
3383     LPVOID* ppvObj);
3384 void __RPC_STUB IDockingWindowFrame_FindToolbar_Stub(
3385     struct IRpcStubBuffer* This,
3386     struct IRpcChannelBuffer* pRpcChannelBuffer,
3387     PRPC_MESSAGE pRpcMessage,
3388     DWORD* pdwStubPhase);
3389
3390 #endif  /* __IDockingWindowFrame_INTERFACE_DEFINED__ */
3391
3392 #ifndef __IDragSourceHelper_FWD_DEFINED__
3393 #define __IDragSourceHelper_FWD_DEFINED__
3394 typedef struct IDragSourceHelper IDragSourceHelper;
3395 #endif
3396
3397 typedef struct {
3398     SIZE sizeDragImage;
3399     POINT ptOffset;
3400     HBITMAP hbmpDragImage;
3401     COLORREF crColorKey;
3402 } SHDRAGIMAGE, *LPSHDRAGIMAGE;
3403
3404 /*****************************************************************************
3405  * IDragSourceHelper interface
3406  */
3407 #ifndef __IDragSourceHelper_INTERFACE_DEFINED__
3408 #define __IDragSourceHelper_INTERFACE_DEFINED__
3409
3410 DEFINE_GUID(IID_IDragSourceHelper, 0xde5bf786, 0x477a, 0x11d2, 0x83,0x9d, 0x00,0xc0,0x4f,0xd9,0x18,0xd0);
3411 #if defined(__cplusplus) && !defined(CINTERFACE)
3412 struct IDragSourceHelper : public IUnknown
3413 {
3414     virtual HRESULT STDMETHODCALLTYPE InitializeFromBitmap(
3415         LPSHDRAGIMAGE pshdi,
3416         IDataObject* pDataObject) = 0;
3417
3418     virtual HRESULT STDMETHODCALLTYPE InitializeFromWindow(
3419         HWND hwnd,
3420         POINT* ppt,
3421         IDataObject* pDataObject) = 0;
3422
3423 };
3424 #else
3425 typedef struct IDragSourceHelperVtbl IDragSourceHelperVtbl;
3426 struct IDragSourceHelper {
3427     const IDragSourceHelperVtbl* lpVtbl;
3428 };
3429 struct IDragSourceHelperVtbl {
3430     ICOM_MSVTABLE_COMPAT_FIELDS
3431
3432     /*** IUnknown methods ***/
3433     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3434         IDragSourceHelper* This,
3435         REFIID riid,
3436         void** ppvObject);
3437
3438     ULONG (STDMETHODCALLTYPE *AddRef)(
3439         IDragSourceHelper* This);
3440
3441     ULONG (STDMETHODCALLTYPE *Release)(
3442         IDragSourceHelper* This);
3443
3444     /*** IDragSourceHelper methods ***/
3445     HRESULT (STDMETHODCALLTYPE *InitializeFromBitmap)(
3446         IDragSourceHelper* This,
3447         LPSHDRAGIMAGE pshdi,
3448         IDataObject* pDataObject);
3449
3450     HRESULT (STDMETHODCALLTYPE *InitializeFromWindow)(
3451         IDragSourceHelper* This,
3452         HWND hwnd,
3453         POINT* ppt,
3454         IDataObject* pDataObject);
3455
3456 };
3457
3458 /*** IUnknown methods ***/
3459 #define IDragSourceHelper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3460 #define IDragSourceHelper_AddRef(p) (p)->lpVtbl->AddRef(p)
3461 #define IDragSourceHelper_Release(p) (p)->lpVtbl->Release(p)
3462 /*** IDragSourceHelper methods ***/
3463 #define IDragSourceHelper_InitializeFromBitmap(p,a,b) (p)->lpVtbl->InitializeFromBitmap(p,a,b)
3464 #define IDragSourceHelper_InitializeFromWindow(p,a,b,c) (p)->lpVtbl->InitializeFromWindow(p,a,b,c)
3465
3466 #endif
3467
3468 #define IDragSourceHelper_METHODS \
3469     ICOM_MSVTABLE_COMPAT_FIELDS \
3470     /*** IUnknown methods ***/ \
3471     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3472     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3473     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3474     /*** IDragSourceHelper methods ***/ \
3475     STDMETHOD_(HRESULT,InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE; \
3476     STDMETHOD_(HRESULT,InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE;
3477
3478 HRESULT CALLBACK IDragSourceHelper_InitializeFromBitmap_Proxy(
3479     IDragSourceHelper* This,
3480     LPSHDRAGIMAGE pshdi,
3481     IDataObject* pDataObject);
3482 void __RPC_STUB IDragSourceHelper_InitializeFromBitmap_Stub(
3483     struct IRpcStubBuffer* This,
3484     struct IRpcChannelBuffer* pRpcChannelBuffer,
3485     PRPC_MESSAGE pRpcMessage,
3486     DWORD* pdwStubPhase);
3487 HRESULT CALLBACK IDragSourceHelper_InitializeFromWindow_Proxy(
3488     IDragSourceHelper* This,
3489     HWND hwnd,
3490     POINT* ppt,
3491     IDataObject* pDataObject);
3492 void __RPC_STUB IDragSourceHelper_InitializeFromWindow_Stub(
3493     struct IRpcStubBuffer* This,
3494     struct IRpcChannelBuffer* pRpcChannelBuffer,
3495     PRPC_MESSAGE pRpcMessage,
3496     DWORD* pdwStubPhase);
3497
3498 #endif  /* __IDragSourceHelper_INTERFACE_DEFINED__ */
3499
3500 #ifndef __IDropTargetHelper_FWD_DEFINED__
3501 #define __IDropTargetHelper_FWD_DEFINED__
3502 typedef struct IDropTargetHelper IDropTargetHelper;
3503 #endif
3504
3505 /*****************************************************************************
3506  * IDropTargetHelper interface
3507  */
3508 #ifndef __IDropTargetHelper_INTERFACE_DEFINED__
3509 #define __IDropTargetHelper_INTERFACE_DEFINED__
3510
3511 DEFINE_GUID(IID_IDropTargetHelper, 0x4657278b, 0x411b, 0x11d2, 0x83,0x9a, 0x00,0xc0,0x4f,0xd9,0x18,0xd0);
3512 #if defined(__cplusplus) && !defined(CINTERFACE)
3513 struct IDropTargetHelper : public IUnknown
3514 {
3515     virtual HRESULT STDMETHODCALLTYPE DragEnter(
3516         HWND hwndTarget,
3517         IDataObject* pDataObject,
3518         POINT* ppt,
3519         DWORD dwEffect) = 0;
3520
3521     virtual HRESULT STDMETHODCALLTYPE DragLeave(
3522         ) = 0;
3523
3524     virtual HRESULT STDMETHODCALLTYPE DragOver(
3525         POINT* ppt,
3526         DWORD dwEffect) = 0;
3527
3528     virtual HRESULT STDMETHODCALLTYPE Drop(
3529         IDataObject* pDataObject,
3530         POINT* ppt,
3531         DWORD dwEffect) = 0;
3532
3533     virtual HRESULT STDMETHODCALLTYPE Show(
3534         BOOL fShow) = 0;
3535
3536 };
3537 #else
3538 typedef struct IDropTargetHelperVtbl IDropTargetHelperVtbl;
3539 struct IDropTargetHelper {
3540     const IDropTargetHelperVtbl* lpVtbl;
3541 };
3542 struct IDropTargetHelperVtbl {
3543     ICOM_MSVTABLE_COMPAT_FIELDS
3544
3545     /*** IUnknown methods ***/
3546     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3547         IDropTargetHelper* This,
3548         REFIID riid,
3549         void** ppvObject);
3550
3551     ULONG (STDMETHODCALLTYPE *AddRef)(
3552         IDropTargetHelper* This);
3553
3554     ULONG (STDMETHODCALLTYPE *Release)(
3555         IDropTargetHelper* This);
3556
3557     /*** IDropTargetHelper methods ***/
3558     HRESULT (STDMETHODCALLTYPE *DragEnter)(
3559         IDropTargetHelper* This,
3560         HWND hwndTarget,
3561         IDataObject* pDataObject,
3562         POINT* ppt,
3563         DWORD dwEffect);
3564
3565     HRESULT (STDMETHODCALLTYPE *DragLeave)(
3566         IDropTargetHelper* This);
3567
3568     HRESULT (STDMETHODCALLTYPE *DragOver)(
3569         IDropTargetHelper* This,
3570         POINT* ppt,
3571         DWORD dwEffect);
3572
3573     HRESULT (STDMETHODCALLTYPE *Drop)(
3574         IDropTargetHelper* This,
3575         IDataObject* pDataObject,
3576         POINT* ppt,
3577         DWORD dwEffect);
3578
3579     HRESULT (STDMETHODCALLTYPE *Show)(
3580         IDropTargetHelper* This,
3581         BOOL fShow);
3582
3583 };
3584
3585 /*** IUnknown methods ***/
3586 #define IDropTargetHelper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3587 #define IDropTargetHelper_AddRef(p) (p)->lpVtbl->AddRef(p)
3588 #define IDropTargetHelper_Release(p) (p)->lpVtbl->Release(p)
3589 /*** IDropTargetHelper methods ***/
3590 #define IDropTargetHelper_DragEnter(p,a,b,c,d) (p)->lpVtbl->DragEnter(p,a,b,c,d)
3591 #define IDropTargetHelper_DragLeave(p) (p)->lpVtbl->DragLeave(p)
3592 #define IDropTargetHelper_DragOver(p,a,b) (p)->lpVtbl->DragOver(p,a,b)
3593 #define IDropTargetHelper_Drop(p,a,b,c) (p)->lpVtbl->Drop(p,a,b,c)
3594 #define IDropTargetHelper_Show(p,a) (p)->lpVtbl->Show(p,a)
3595
3596 #endif
3597
3598 #define IDropTargetHelper_METHODS \
3599     ICOM_MSVTABLE_COMPAT_FIELDS \
3600     /*** IUnknown methods ***/ \
3601     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3602     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3603     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3604     /*** IDropTargetHelper methods ***/ \
3605     STDMETHOD_(HRESULT,DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE; \
3606     STDMETHOD_(HRESULT,DragLeave)(THIS) PURE; \
3607     STDMETHOD_(HRESULT,DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE; \
3608     STDMETHOD_(HRESULT,Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE; \
3609     STDMETHOD_(HRESULT,Show)(THIS_ BOOL fShow) PURE;
3610
3611 HRESULT CALLBACK IDropTargetHelper_DragEnter_Proxy(
3612     IDropTargetHelper* This,
3613     HWND hwndTarget,
3614     IDataObject* pDataObject,
3615     POINT* ppt,
3616     DWORD dwEffect);
3617 void __RPC_STUB IDropTargetHelper_DragEnter_Stub(
3618     struct IRpcStubBuffer* This,
3619     struct IRpcChannelBuffer* pRpcChannelBuffer,
3620     PRPC_MESSAGE pRpcMessage,
3621     DWORD* pdwStubPhase);
3622 HRESULT CALLBACK IDropTargetHelper_DragLeave_Proxy(
3623     IDropTargetHelper* This);
3624 void __RPC_STUB IDropTargetHelper_DragLeave_Stub(
3625     struct IRpcStubBuffer* This,
3626     struct IRpcChannelBuffer* pRpcChannelBuffer,
3627     PRPC_MESSAGE pRpcMessage,
3628     DWORD* pdwStubPhase);
3629 HRESULT CALLBACK IDropTargetHelper_DragOver_Proxy(
3630     IDropTargetHelper* This,
3631     POINT* ppt,
3632     DWORD dwEffect);
3633 void __RPC_STUB IDropTargetHelper_DragOver_Stub(
3634     struct IRpcStubBuffer* This,
3635     struct IRpcChannelBuffer* pRpcChannelBuffer,
3636     PRPC_MESSAGE pRpcMessage,
3637     DWORD* pdwStubPhase);
3638 HRESULT CALLBACK IDropTargetHelper_Drop_Proxy(
3639     IDropTargetHelper* This,
3640     IDataObject* pDataObject,
3641     POINT* ppt,
3642     DWORD dwEffect);
3643 void __RPC_STUB IDropTargetHelper_Drop_Stub(
3644     struct IRpcStubBuffer* This,
3645     struct IRpcChannelBuffer* pRpcChannelBuffer,
3646     PRPC_MESSAGE pRpcMessage,
3647     DWORD* pdwStubPhase);
3648 HRESULT CALLBACK IDropTargetHelper_Show_Proxy(
3649     IDropTargetHelper* This,
3650     BOOL fShow);
3651 void __RPC_STUB IDropTargetHelper_Show_Stub(
3652     struct IRpcStubBuffer* This,
3653     struct IRpcChannelBuffer* pRpcChannelBuffer,
3654     PRPC_MESSAGE pRpcMessage,
3655     DWORD* pdwStubPhase);
3656
3657 #endif  /* __IDropTargetHelper_INTERFACE_DEFINED__ */
3658
3659 #ifndef __IContextMenu_FWD_DEFINED__
3660 #define __IContextMenu_FWD_DEFINED__
3661 typedef struct IContextMenu IContextMenu;
3662 #endif
3663
3664 #define CMF_NORMAL        0x00000000
3665 #define CMF_DEFAULTONLY   0x00000001
3666 #define CMF_VERBSONLY     0x00000002
3667 #define CMF_EXPLORE       0x00000004
3668 #define CMF_NOVERBS       0x00000008
3669 #define CMF_CANRENAME     0x00000010
3670 #define CMF_NODEFAULT     0x00000020
3671 #define CMF_INCLUDESTATIC 0x00000040
3672 #define CMF_EXTENDEDVERBS 0x00000100
3673 #define CMF_RESERVED      0xffff0000
3674 #define GCS_VERBA         0x00000000
3675 #define GCS_HELPTEXTA     0x00000001
3676 #define GCS_VALIDATEA     0x00000002
3677 #define GCS_VERBW         0x00000004
3678 #define GCS_HELPTEXTW     0x00000005
3679 #define GCS_VALIDATEW     0x00000006
3680 #define GCS_UNICODE       0x00000004
3681 #define GCS_VERB          WINELIB_NAME_AW(GCS_VERB)
3682 #define GCS_HELPTEXT      WINELIB_NAME_AW(GCS_HELPTEXT)
3683 #define GCS_VALIDATE      WINELIB_NAME_AW(GCS_VALIDATE)
3684 #define CMDSTR_NEWFOLDERA   "NewFolder"
3685 #define CMDSTR_VIEWLISTA    "ViewList"
3686 #define CMDSTR_VIEWDETAILSA "ViewDetails"
3687 #if defined(__GNUC__)
3688 # define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }
3689 # define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }
3690 # define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }
3691 #elif defined(_MSC_VER)
3692 # define CMDSTR_NEWFOLDERW   L"NewFolder"
3693 # define CMDSTR_VIEWLISTW    L"ViewList"
3694 # define CMDSTR_VIEWDETAILSW L"ViewDetails"
3695 #else
3696 static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};
3697 static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};
3698 static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};
3699 #endif
3700 #define CMDSTR_NEWFOLDER    WINELIB_NAME_AW(CMDSTR_NEWFOLDER)
3701 #define CMDSTR_VIEWLIST     WINELIB_NAME_AW(CMDSTR_VIEWLIST)
3702 #define CMDSTR_VIEWDETAILS  WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)
3703 #define CMIC_MASK_HOTKEY         SEE_MASK_HOTKEY
3704 #define CMIC_MASK_ICON           SEE_MASK_ICON
3705 #define CMIC_MASK_FLAG_NO_UI     SEE_MASK_FLAG_NO_UI
3706 #define CMIC_MASK_UNICODE        SEE_MASK_UNICODE
3707 #define CMIC_MASK_NO_CONSOLE     SEE_MASK_NO_CONSOLE
3708 #define CMIC_MASK_HASLINKNAME    SEE_MASK_HASLINKNAME
3709 #define CMIC_MASK_FLAG_SEP_VDM   SEE_MASK_FLAG_SEPVDM
3710 #define CMIC_MASK_HASTITLE       SEE_MASK_HASTITLE
3711 #define CMIC_MASK_ASYNCOK        SEE_MASK_ASYNCOK
3712 #define CMIC_MASK_SHIFT_DOWN     0x10000000
3713 #define CMIC_MASK_PTINVOKE       0x20000000
3714 #define CMIC_MASK_CONTROL_DOWN   0x40000000
3715 #define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE
3716 #define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS
3717 typedef IContextMenu *LPCONTEXTMENU;
3718
3719 typedef struct tagCMINVOKECOMMANDINFO {
3720     DWORD cbSize;
3721     DWORD fMask;
3722     HWND hwnd;
3723     LPCSTR lpVerb;
3724     LPCSTR lpParameters;
3725     LPCSTR lpDirectory;
3726     INT nShow;
3727     DWORD dwHotKey;
3728     HANDLE hIcon;
3729 } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
3730
3731 typedef struct tagCMInvokeCommandInfoEx {
3732     DWORD cbSize;
3733     DWORD fMask;
3734     HWND hwnd;
3735     LPCSTR lpVerb;
3736     LPCSTR lpParameters;
3737     LPCSTR lpDirectory;
3738     INT nShow;
3739     DWORD dwHotKey;
3740     HANDLE hIcon;
3741     LPCSTR lpTitle;
3742     LPCWSTR lpVerbW;
3743     LPCWSTR lpParametersW;
3744     LPCWSTR lpDirectoryW;
3745     LPCWSTR lpTitleW;
3746     POINT ptInvoke;
3747 } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
3748
3749 /*****************************************************************************
3750  * IContextMenu interface
3751  */
3752 #ifndef __IContextMenu_INTERFACE_DEFINED__
3753 #define __IContextMenu_INTERFACE_DEFINED__
3754
3755 DEFINE_GUID(IID_IContextMenu, 0x000214e4, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3756 #if defined(__cplusplus) && !defined(CINTERFACE)
3757 struct IContextMenu : public IUnknown
3758 {
3759     virtual HRESULT STDMETHODCALLTYPE QueryContextMenu(
3760         HMENU hmenu,
3761         UINT indexMenu,
3762         UINT idCmdFirst,
3763         UINT idCmdLast,
3764         UINT uFlags) = 0;
3765
3766     virtual HRESULT STDMETHODCALLTYPE InvokeCommand(
3767         LPCMINVOKECOMMANDINFO lpici) = 0;
3768
3769     virtual HRESULT STDMETHODCALLTYPE GetCommandString(
3770         UINT idCmd,
3771         UINT uType,
3772         UINT* pwReserved,
3773         LPSTR pszName,
3774         UINT cchMax) = 0;
3775
3776 };
3777 #else
3778 typedef struct IContextMenuVtbl IContextMenuVtbl;
3779 struct IContextMenu {
3780     const IContextMenuVtbl* lpVtbl;
3781 };
3782 struct IContextMenuVtbl {
3783     ICOM_MSVTABLE_COMPAT_FIELDS
3784
3785     /*** IUnknown methods ***/
3786     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3787         IContextMenu* This,
3788         REFIID riid,
3789         void** ppvObject);
3790
3791     ULONG (STDMETHODCALLTYPE *AddRef)(
3792         IContextMenu* This);
3793
3794     ULONG (STDMETHODCALLTYPE *Release)(
3795         IContextMenu* This);
3796
3797     /*** IContextMenu methods ***/
3798     HRESULT (STDMETHODCALLTYPE *QueryContextMenu)(
3799         IContextMenu* This,
3800         HMENU hmenu,
3801         UINT indexMenu,
3802         UINT idCmdFirst,
3803         UINT idCmdLast,
3804         UINT uFlags);
3805
3806     HRESULT (STDMETHODCALLTYPE *InvokeCommand)(
3807         IContextMenu* This,
3808         LPCMINVOKECOMMANDINFO lpici);
3809
3810     HRESULT (STDMETHODCALLTYPE *GetCommandString)(
3811         IContextMenu* This,
3812         UINT idCmd,
3813         UINT uType,
3814         UINT* pwReserved,
3815         LPSTR pszName,
3816         UINT cchMax);
3817
3818 };
3819
3820 /*** IUnknown methods ***/
3821 #define IContextMenu_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3822 #define IContextMenu_AddRef(p) (p)->lpVtbl->AddRef(p)
3823 #define IContextMenu_Release(p) (p)->lpVtbl->Release(p)
3824 /*** IContextMenu methods ***/
3825 #define IContextMenu_QueryContextMenu(p,a,b,c,d,e) (p)->lpVtbl->QueryContextMenu(p,a,b,c,d,e)
3826 #define IContextMenu_InvokeCommand(p,a) (p)->lpVtbl->InvokeCommand(p,a)
3827 #define IContextMenu_GetCommandString(p,a,b,c,d,e) (p)->lpVtbl->GetCommandString(p,a,b,c,d,e)
3828
3829 #endif
3830
3831 #define IContextMenu_METHODS \
3832     ICOM_MSVTABLE_COMPAT_FIELDS \
3833     /*** IUnknown methods ***/ \
3834     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3835     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3836     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3837     /*** IContextMenu methods ***/ \
3838     STDMETHOD_(HRESULT,QueryContextMenu)(THIS_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) PURE; \
3839     STDMETHOD_(HRESULT,InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE; \
3840     STDMETHOD_(HRESULT,GetCommandString)(THIS_ UINT idCmd, UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax) PURE;
3841
3842 HRESULT CALLBACK IContextMenu_QueryContextMenu_Proxy(
3843     IContextMenu* This,
3844     HMENU hmenu,
3845     UINT indexMenu,
3846     UINT idCmdFirst,
3847     UINT idCmdLast,
3848     UINT uFlags);
3849 void __RPC_STUB IContextMenu_QueryContextMenu_Stub(
3850     struct IRpcStubBuffer* This,
3851     struct IRpcChannelBuffer* pRpcChannelBuffer,
3852     PRPC_MESSAGE pRpcMessage,
3853     DWORD* pdwStubPhase);
3854 HRESULT CALLBACK IContextMenu_InvokeCommand_Proxy(
3855     IContextMenu* This,
3856     LPCMINVOKECOMMANDINFO lpici);
3857 void __RPC_STUB IContextMenu_InvokeCommand_Stub(
3858     struct IRpcStubBuffer* This,
3859     struct IRpcChannelBuffer* pRpcChannelBuffer,
3860     PRPC_MESSAGE pRpcMessage,
3861     DWORD* pdwStubPhase);
3862 HRESULT CALLBACK IContextMenu_GetCommandString_Proxy(
3863     IContextMenu* This,
3864     UINT idCmd,
3865     UINT uType,
3866     UINT* pwReserved,
3867     LPSTR pszName,
3868     UINT cchMax);
3869 void __RPC_STUB IContextMenu_GetCommandString_Stub(
3870     struct IRpcStubBuffer* This,
3871     struct IRpcChannelBuffer* pRpcChannelBuffer,
3872     PRPC_MESSAGE pRpcMessage,
3873     DWORD* pdwStubPhase);
3874
3875 #endif  /* __IContextMenu_INTERFACE_DEFINED__ */
3876
3877 #ifndef __IContextMenu2_FWD_DEFINED__
3878 #define __IContextMenu2_FWD_DEFINED__
3879 typedef struct IContextMenu2 IContextMenu2;
3880 #endif
3881
3882 typedef IContextMenu2 *LPCONTEXTMENU2;
3883
3884 /*****************************************************************************
3885  * IContextMenu2 interface
3886  */
3887 #ifndef __IContextMenu2_INTERFACE_DEFINED__
3888 #define __IContextMenu2_INTERFACE_DEFINED__
3889
3890 DEFINE_GUID(IID_IContextMenu2, 0x000214f4, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
3891 #if defined(__cplusplus) && !defined(CINTERFACE)
3892 struct IContextMenu2 : public IContextMenu
3893 {
3894     virtual HRESULT STDMETHODCALLTYPE HandleMenuMsg(
3895         UINT uMsg,
3896         WPARAM wParam,
3897         LPARAM lParam) = 0;
3898
3899 };
3900 #else
3901 typedef struct IContextMenu2Vtbl IContextMenu2Vtbl;
3902 struct IContextMenu2 {
3903     const IContextMenu2Vtbl* lpVtbl;
3904 };
3905 struct IContextMenu2Vtbl {
3906     ICOM_MSVTABLE_COMPAT_FIELDS
3907
3908     /*** IUnknown methods ***/
3909     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
3910         IContextMenu2* This,
3911         REFIID riid,
3912         void** ppvObject);
3913
3914     ULONG (STDMETHODCALLTYPE *AddRef)(
3915         IContextMenu2* This);
3916
3917     ULONG (STDMETHODCALLTYPE *Release)(
3918         IContextMenu2* This);
3919
3920     /*** IContextMenu methods ***/
3921     HRESULT (STDMETHODCALLTYPE *QueryContextMenu)(
3922         IContextMenu2* This,
3923         HMENU hmenu,
3924         UINT indexMenu,
3925         UINT idCmdFirst,
3926         UINT idCmdLast,
3927         UINT uFlags);
3928
3929     HRESULT (STDMETHODCALLTYPE *InvokeCommand)(
3930         IContextMenu2* This,
3931         LPCMINVOKECOMMANDINFO lpici);
3932
3933     HRESULT (STDMETHODCALLTYPE *GetCommandString)(
3934         IContextMenu2* This,
3935         UINT idCmd,
3936         UINT uType,
3937         UINT* pwReserved,
3938         LPSTR pszName,
3939         UINT cchMax);
3940
3941     /*** IContextMenu2 methods ***/
3942     HRESULT (STDMETHODCALLTYPE *HandleMenuMsg)(
3943         IContextMenu2* This,
3944         UINT uMsg,
3945         WPARAM wParam,
3946         LPARAM lParam);
3947
3948 };
3949
3950 /*** IUnknown methods ***/
3951 #define IContextMenu2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
3952 #define IContextMenu2_AddRef(p) (p)->lpVtbl->AddRef(p)
3953 #define IContextMenu2_Release(p) (p)->lpVtbl->Release(p)
3954 /*** IContextMenu methods ***/
3955 #define IContextMenu2_QueryContextMenu(p,a,b,c,d,e) (p)->lpVtbl->QueryContextMenu(p,a,b,c,d,e)
3956 #define IContextMenu2_InvokeCommand(p,a) (p)->lpVtbl->InvokeCommand(p,a)
3957 #define IContextMenu2_GetCommandString(p,a,b,c,d,e) (p)->lpVtbl->GetCommandString(p,a,b,c,d,e)
3958 /*** IContextMenu2 methods ***/
3959 #define IContextMenu2_HandleMenuMsg(p,a,b,c) (p)->lpVtbl->HandleMenuMsg(p,a,b,c)
3960
3961 #endif
3962
3963 #define IContextMenu2_METHODS \
3964     ICOM_MSVTABLE_COMPAT_FIELDS \
3965     /*** IUnknown methods ***/ \
3966     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
3967     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
3968     STDMETHOD_(ULONG,Release)(THIS) PURE; \
3969     /*** IContextMenu methods ***/ \
3970     STDMETHOD_(HRESULT,QueryContextMenu)(THIS_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) PURE; \
3971     STDMETHOD_(HRESULT,InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE; \
3972     STDMETHOD_(HRESULT,GetCommandString)(THIS_ UINT idCmd, UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax) PURE; \
3973     /*** IContextMenu2 methods ***/ \
3974     STDMETHOD_(HRESULT,HandleMenuMsg)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE;
3975
3976 HRESULT CALLBACK IContextMenu2_HandleMenuMsg_Proxy(
3977     IContextMenu2* This,
3978     UINT uMsg,
3979     WPARAM wParam,
3980     LPARAM lParam);
3981 void __RPC_STUB IContextMenu2_HandleMenuMsg_Stub(
3982     struct IRpcStubBuffer* This,
3983     struct IRpcChannelBuffer* pRpcChannelBuffer,
3984     PRPC_MESSAGE pRpcMessage,
3985     DWORD* pdwStubPhase);
3986
3987 #endif  /* __IContextMenu2_INTERFACE_DEFINED__ */
3988
3989 #ifndef __IContextMenu3_FWD_DEFINED__
3990 #define __IContextMenu3_FWD_DEFINED__
3991 typedef struct IContextMenu3 IContextMenu3;
3992 #endif
3993
3994 typedef IContextMenu3 *LPCONTEXTMENU3;
3995
3996 /*****************************************************************************
3997  * IContextMenu3 interface
3998  */
3999 #ifndef __IContextMenu3_INTERFACE_DEFINED__
4000 #define __IContextMenu3_INTERFACE_DEFINED__
4001
4002 DEFINE_GUID(IID_IContextMenu3, 0xbcfce0a0, 0xec17, 0x11d0, 0x8d,0x10, 0x00,0xa0,0xc9,0x0f,0x27,0x19);
4003 #if defined(__cplusplus) && !defined(CINTERFACE)
4004 struct IContextMenu3 : public IContextMenu2
4005 {
4006     virtual HRESULT STDMETHODCALLTYPE HandleMenuMsg2(
4007         UINT uMsg,
4008         WPARAM wParam,
4009         LPARAM lParam,
4010         LRESULT* plResult) = 0;
4011
4012 };
4013 #else
4014 typedef struct IContextMenu3Vtbl IContextMenu3Vtbl;
4015 struct IContextMenu3 {
4016     const IContextMenu3Vtbl* lpVtbl;
4017 };
4018 struct IContextMenu3Vtbl {
4019     ICOM_MSVTABLE_COMPAT_FIELDS
4020
4021     /*** IUnknown methods ***/
4022     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
4023         IContextMenu3* This,
4024         REFIID riid,
4025         void** ppvObject);
4026
4027     ULONG (STDMETHODCALLTYPE *AddRef)(
4028         IContextMenu3* This);
4029
4030     ULONG (STDMETHODCALLTYPE *Release)(
4031         IContextMenu3* This);
4032
4033     /*** IContextMenu methods ***/
4034     HRESULT (STDMETHODCALLTYPE *QueryContextMenu)(
4035         IContextMenu3* This,
4036         HMENU hmenu,
4037         UINT indexMenu,
4038         UINT idCmdFirst,
4039         UINT idCmdLast,
4040         UINT uFlags);
4041
4042     HRESULT (STDMETHODCALLTYPE *InvokeCommand)(
4043         IContextMenu3* This,
4044         LPCMINVOKECOMMANDINFO lpici);
4045
4046     HRESULT (STDMETHODCALLTYPE *GetCommandString)(
4047         IContextMenu3* This,
4048         UINT idCmd,
4049         UINT uType,
4050         UINT* pwReserved,
4051         LPSTR pszName,
4052         UINT cchMax);
4053
4054     /*** IContextMenu2 methods ***/
4055     HRESULT (STDMETHODCALLTYPE *HandleMenuMsg)(
4056         IContextMenu3* This,
4057         UINT uMsg,
4058         WPARAM wParam,
4059         LPARAM lParam);
4060
4061     /*** IContextMenu3 methods ***/
4062     HRESULT (STDMETHODCALLTYPE *HandleMenuMsg2)(
4063         IContextMenu3* This,
4064         UINT uMsg,
4065         WPARAM wParam,
4066         LPARAM lParam,
4067         LRESULT* plResult);
4068
4069 };
4070
4071 /*** IUnknown methods ***/
4072 #define IContextMenu3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
4073 #define IContextMenu3_AddRef(p) (p)->lpVtbl->AddRef(p)
4074 #define IContextMenu3_Release(p) (p)->lpVtbl->Release(p)
4075 /*** IContextMenu methods ***/
4076 #define IContextMenu3_QueryContextMenu(p,a,b,c,d,e) (p)->lpVtbl->QueryContextMenu(p,a,b,c,d,e)
4077 #define IContextMenu3_InvokeCommand(p,a) (p)->lpVtbl->InvokeCommand(p,a)
4078 #define IContextMenu3_GetCommandString(p,a,b,c,d,e) (p)->lpVtbl->GetCommandString(p,a,b,c,d,e)
4079 /*** IContextMenu2 methods ***/
4080 #define IContextMenu3_HandleMenuMsg(p,a,b,c) (p)->lpVtbl->HandleMenuMsg(p,a,b,c)
4081 /*** IContextMenu3 methods ***/
4082 #define IContextMenu3_HandleMenuMsg2(p,a,b,c,d) (p)->lpVtbl->HandleMenuMsg2(p,a,b,c,d)
4083
4084 #endif
4085
4086 #define IContextMenu3_METHODS \
4087     ICOM_MSVTABLE_COMPAT_FIELDS \
4088     /*** IUnknown methods ***/ \
4089     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
4090     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
4091     STDMETHOD_(ULONG,Release)(THIS) PURE; \
4092     /*** IContextMenu methods ***/ \
4093     STDMETHOD_(HRESULT,QueryContextMenu)(THIS_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) PURE; \
4094     STDMETHOD_(HRESULT,InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE; \
4095     STDMETHOD_(HRESULT,GetCommandString)(THIS_ UINT idCmd, UINT uType, UINT* pwReserved, LPSTR pszName, UINT cchMax) PURE; \
4096     /*** IContextMenu2 methods ***/ \
4097     STDMETHOD_(HRESULT,HandleMenuMsg)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam) PURE; \
4098     /*** IContextMenu3 methods ***/ \
4099     STDMETHOD_(HRESULT,HandleMenuMsg2)(THIS_ UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* plResult) PURE;
4100
4101 HRESULT CALLBACK IContextMenu3_HandleMenuMsg2_Proxy(
4102     IContextMenu3* This,
4103     UINT uMsg,
4104     WPARAM wParam,
4105     LPARAM lParam,
4106     LRESULT* plResult);
4107 void __RPC_STUB IContextMenu3_HandleMenuMsg2_Stub(
4108     struct IRpcStubBuffer* This,
4109     struct IRpcChannelBuffer* pRpcChannelBuffer,
4110     PRPC_MESSAGE pRpcMessage,
4111     DWORD* pdwStubPhase);
4112
4113 #endif  /* __IContextMenu3_INTERFACE_DEFINED__ */
4114
4115 #ifdef __cplusplus
4116 }
4117 #endif
4118 #endif /* __WIDL_SHOBJIDL_H */