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