include: Semicolons after cpp_quote are a syntax error in midl.
[wine] / include / shobjidl.idl
1 /*
2  * COM interfaces for shell objects
3  *
4  * Copyright (C) 1999 Juergen Schmied
5  * Copyright (C) 2003 Alexandre Julliard
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21
22 import "objidl.idl";
23 import "oleidl.idl";
24 import "oaidl.idl";
25 import "shtypes.idl";
26 import "servprov.idl";
27 import "comcat.idl";
28 import "propidl.idl";
29 /*import "prsht.idl";*/
30 /*import "msxml.idl";*/
31
32
33 /*****************************************************************************
34  * IPersistFolder interface
35  */
36 [
37     object,
38     uuid(000214ea-0000-0000-c000-000000000046),
39     pointer_default(unique)
40 ]
41 interface IPersistFolder : IPersist
42 {
43     typedef IPersistFolder *LPPERSISTFOLDER;
44
45     HRESULT Initialize( [in] LPCITEMIDLIST pidl );
46 }
47
48
49 /*****************************************************************************
50  * IPersistFolder2 interface
51  */
52 [
53     object,
54     uuid(1ac3d9f0-175c-11d1-95be-00609797ea4f),
55     pointer_default(unique)
56 ]
57 interface IPersistFolder2 : IPersistFolder
58 {
59     typedef IPersistFolder2 *LPPERSISTFOLDER2;
60
61     HRESULT GetCurFolder( [out] LPITEMIDLIST *ppidl );
62 }
63
64
65 /*****************************************************************************
66  * IEnumIDList interface
67  */
68 [
69     object,
70     uuid(000214f2-0000-0000-c000-000000000046),
71     pointer_default(unique)
72 ]
73 interface IEnumIDList : IUnknown
74 {
75     typedef IEnumIDList *LPENUMIDLIST;
76
77     HRESULT Next(
78         [in] ULONG celt,
79         [out, size_is(celt), length_is(*pceltFetched)] LPITEMIDLIST *rgelt,
80         [out] ULONG *pceltFetched);
81
82     HRESULT Skip( [in] ULONG celt );
83     HRESULT Reset();
84     HRESULT Clone( [out] IEnumIDList **ppenum );
85 }
86
87
88 /*****************************************************************************
89  * IShellFolder interface
90  */
91 [
92     object,
93     uuid(000214e6-0000-0000-c000-000000000046),
94     pointer_default(unique)
95 ]
96 interface IShellFolder : IUnknown
97 {
98     typedef IShellFolder * LPSHELLFOLDER;
99
100     typedef enum tagSHGDN
101     {
102         SHGDN_NORMAL = 0,
103         SHGDN_INFOLDER = 1,
104         SHGDN_FOREDITING = 0x1000,
105         SHGDN_INCLUDE_NONFILESYS = 0x2000,
106         SHGDN_FORADDRESSBAR = 0x4000,
107         SHGDN_FORPARSING = 0x8000
108     } SHGNO;
109
110     typedef DWORD SHGDNF;
111
112     enum tagSHCONTF
113     {
114         SHCONTF_FOLDERS = 32,
115         SHCONTF_NONFOLDERS = 64,
116         SHCONTF_INCLUDEHIDDEN = 128,
117         SHCONTF_INIT_ON_FIRST_NEXT = 256,
118         SHCONTF_NETPRINTERSRCH = 512,
119         SHCONTF_SHAREABLE = 1024,
120         SHCONTF_STORAGE = 2048
121     };
122
123     typedef DWORD SHCONTF;
124
125     cpp_quote("#define SFGAO_CANCOPY           DROPEFFECT_COPY")
126     cpp_quote("#define SFGAO_CANMOVE           DROPEFFECT_MOVE")
127     cpp_quote("#define SFGAO_CANLINK           DROPEFFECT_LINK")
128     cpp_quote("#define SFGAO_STORAGE           0x00000008L")
129     cpp_quote("#define SFGAO_CANRENAME         0x00000010L")
130     cpp_quote("#define SFGAO_CANDELETE         0x00000020L")
131     cpp_quote("#define SFGAO_HASPROPSHEET      0x00000040L")
132     cpp_quote("#define SFGAO_DROPTARGET        0x00000100L")
133     cpp_quote("#define SFGAO_CAPABILITYMASK    0x00000177L")
134     cpp_quote("#define SFGAO_ENCRYPTED         0x00002000L")
135     cpp_quote("#define SFGAO_ISSLOW            0x00004000L")
136     cpp_quote("#define SFGAO_GHOSTED           0x00008000L")
137     cpp_quote("#define SFGAO_LINK              0x00010000L")
138     cpp_quote("#define SFGAO_SHARE             0x00020000L")
139     cpp_quote("#define SFGAO_READONLY          0x00040000L")
140     cpp_quote("#define SFGAO_HIDDEN            0x00080000L")
141     cpp_quote("#define SFGAO_DISPLAYATTRMASK   0x000FC000L")
142     cpp_quote("#define SFGAO_FILESYSANCESTOR   0x10000000L")
143     cpp_quote("#define SFGAO_FOLDER            0x20000000L")
144     cpp_quote("#define SFGAO_FILESYSTEM        0x40000000L")
145     cpp_quote("#define SFGAO_HASSUBFOLDER      0x80000000L")
146     cpp_quote("#define SFGAO_CONTENTSMASK      0x80000000L")
147     cpp_quote("#define SFGAO_VALIDATE          0x01000000L")
148     cpp_quote("#define SFGAO_REMOVABLE         0x02000000L")
149     cpp_quote("#define SFGAO_COMPRESSED        0x04000000L")
150     cpp_quote("#define SFGAO_BROWSABLE         0x08000000L")
151     cpp_quote("#define SFGAO_NONENUMERATED     0x00100000L")
152     cpp_quote("#define SFGAO_NEWCONTENT        0x00200000L")
153     cpp_quote("#define SFGAO_STREAM            0x00400000L")
154     cpp_quote("#define SFGAO_STORAGEANCESTOR   0x00800000L")
155
156     typedef ULONG SFGAOF;
157
158     HRESULT ParseDisplayName(
159         [in] HWND hwndOwner,
160         [in] LPBC pbcReserved,
161         [in, string] LPOLESTR lpszDisplayName,
162         [out] ULONG *pchEaten,
163         [out] LPITEMIDLIST *ppidl,
164         [in, out, unique] ULONG *pdwAttributes);
165
166     HRESULT EnumObjects(
167         [in] HWND hwndOwner,
168         [in] SHCONTF grfFlags,
169         [out] IEnumIDList **ppenumIDList);
170
171     HRESULT BindToObject(
172         [in] LPCITEMIDLIST pidl,
173         [in] LPBC pbcReserved,
174         [in] REFIID riid,
175         [out, iid_is(riid)] void **ppvOut);
176
177     HRESULT BindToStorage(
178         [in] LPCITEMIDLIST pidl,
179         [in] LPBC pbcReserved,
180         [in] REFIID riid,
181         [out, iid_is(riid)] void **ppvObj);
182
183     HRESULT CompareIDs(
184         [in] LPARAM lParam,
185         [in] LPCITEMIDLIST pidl1,
186         [in] LPCITEMIDLIST pidl2);
187
188     HRESULT CreateViewObject(
189         [in] HWND hwndOwner,
190         [in] REFIID riid,
191         [out, iid_is(riid)] void **ppvOut);
192
193     HRESULT GetAttributesOf(
194         [in] UINT cidl,
195         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
196         [in, out] SFGAOF *rgfInOut);
197
198     HRESULT GetUIObjectOf(
199         [in] HWND hwndOwner,
200         [in] UINT cidl,
201         [in, size_is(cidl)] LPCITEMIDLIST *apidl,
202         [in] REFIID riid,
203         [in, out, unique] UINT *prgfInOut,
204         [out, iid_is(riid)] void **ppvOut);
205
206     HRESULT GetDisplayNameOf(
207         [in] LPCITEMIDLIST pidl,
208         [in] SHGDNF uFlags,
209         [out] STRRET *lpName);
210
211     HRESULT SetNameOf(
212         [in] HWND hwnd,
213         [in] LPCITEMIDLIST pidl,
214         [in, string] LPCOLESTR lpszName,
215         [in] SHGDNF uFlags,
216         [out] LPITEMIDLIST *ppidlOut);
217 }
218
219
220 /*****************************************************************************
221  * IEnumExtraSearch interface
222  */
223 [
224     object,
225     uuid(0e700be1-9db6-11d1-a1ce-00c04fd75d13),
226     pointer_default(unique)
227 ]
228 interface IEnumExtraSearch : IUnknown
229 {
230     typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
231
232     typedef struct
233     {
234         GUID guidSearch;
235         WCHAR wszFriendlyName[80];
236         /*
237          *WCHAR wszMenuText[80];
238          *WCHAR wszHelpText[MAX_PATH];
239          */
240         WCHAR wszUrl[2084];
241         /*
242          *WCHAR wszIcon[MAX_PATH+10];
243          *WCHAR wszGreyIcon[MAX_PATH+10];
244          *WCHAR wszClrIcon[MAX_PATH+10];
245          */
246     } EXTRASEARCH, *LPEXTRASEARCH;
247
248     HRESULT Next(
249         [in] ULONG celt,
250         [out, size_is(celt), length_is(*pceltFetched)] EXTRASEARCH *rgelt,
251         [out] ULONG *pceltFetched);
252
253     HRESULT Skip( [in] ULONG celt );
254     HRESULT Reset();
255     HRESULT Clone( [out] IEnumExtraSearch **ppenum );
256 }
257
258
259 /*****************************************************************************
260  * IShellFolder2 interface
261  */
262 [
263     object,
264     uuid(93f2f68c-1d1b-11d3-a30e-00c04f79abd1),
265     pointer_default(unique)
266 ]
267 interface IShellFolder2 : IShellFolder
268 {
269     typedef enum
270     {
271         SHCOLSTATE_TYPE_STR = 0x00000001,
272         SHCOLSTATE_TYPE_INT = 0x00000002,
273         SHCOLSTATE_TYPE_DATE = 0x00000003,
274         SHCOLSTATE_TYPEMASK = 0x0000000f,
275         SHCOLSTATE_ONBYDEFAULT = 0x00000010,
276         SHCOLSTATE_SLOW = 0x00000020,
277         SHCOLSTATE_EXTENDED = 0x00000040,
278         SHCOLSTATE_SECONDARYUI = 0x00000080,
279         SHCOLSTATE_HIDDEN = 0x00000100,
280         SHCOLSTATE_PREFER_VARCMP = 0x00000200
281     } SHCOLSTATE;
282
283     typedef DWORD SHCOLSTATEF;
284
285     typedef struct
286     {
287         GUID    fmtid;
288         DWORD   pid;
289     } SHCOLUMNID, *LPSHCOLUMNID;
290     typedef const SHCOLUMNID *LPCSHCOLUMNID;
291
292     HRESULT GetDefaultSearchGUID( [out] GUID *lpguid );
293     HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum );
294     HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay );
295     HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags );
296     HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
297     HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
298     HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
299 }
300
301
302
303 /*****************************************************************************
304  * FOLDERSETTINGS
305  */
306 typedef char *LPVIEWSETTINGS;
307
308 typedef enum
309 {
310     FWF_AUTOARRANGE         = 0x00000001,
311     FWF_ABBREVIATEDNAMES    = 0x00000002,
312     FWF_SNAPTOGRID          = 0x00000004,
313     FWF_OWNERDATA           = 0x00000008,
314     FWF_BESTFITWINDOW       = 0x00000010,
315     FWF_DESKTOP             = 0x00000020,
316     FWF_SINGLESEL           = 0x00000040,
317     FWF_NOSUBFOLDERS        = 0x00000080,
318     FWF_TRANSPARENT         = 0x00000100,
319     FWF_NOCLIENTEDGE        = 0x00000200,
320     FWF_NOSCROLL            = 0x00000400,
321     FWF_ALIGNLEFT           = 0x00000800,
322     FWF_NOICONS             = 0x00001000,
323     FWF_SHOWSELALWAYS       = 0x00002000,
324     FWF_NOVISIBLE           = 0x00004000,
325     FWF_SINGLECLICKACTIVATE = 0x00008000,
326     FWF_NOWEBVIEW           = 0x00010000,
327     FWF_HIDEFILENAMES       = 0x00020000,
328     FWF_CHECKSELECT         = 0x00040000
329 } FOLDERFLAGS;
330
331 typedef enum
332 {
333     FVM_ICON       = 1,
334     FVM_FIRST      = FVM_ICON,
335     FVM_SMALLICON  = 2,
336     FVM_LIST       = 3,
337     FVM_DETAILS    = 4,
338     FVM_THUMBNAIL  = 5,
339     FVM_TILE       = 6,
340     FVM_THUMBSTRIP = 7,
341     FVM_LAST       = FVM_THUMBSTRIP
342 } FOLDERVIEWMODE;
343
344 typedef struct
345 {
346     UINT ViewMode;
347     UINT fFlags;
348 } FOLDERSETTINGS, *PFOLDERSETTINGS, *LPFOLDERSETTINGS;
349 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
350
351
352 /*****************************************************************************
353  * IShellView interface
354  */
355 interface IShellBrowser;  /* forward declaration */
356 [
357     object,
358     uuid(000214e3-0000-0000-c000-000000000046),
359     pointer_default(unique)
360 ]
361 interface IShellView : IOleWindow
362 {
363     typedef IShellView *LPSHELLVIEW;
364
365     cpp_quote("#define SVSI_DESELECT       0x00000000")
366     cpp_quote("#define SVSI_SELECT         0x00000001")
367     cpp_quote("#define SVSI_EDIT           0x00000003")
368     cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
369     cpp_quote("#define SVSI_ENSUREVISIBLE  0x00000008")
370     cpp_quote("#define SVSI_FOCUSED        0x00000010")
371     cpp_quote("#define SVSI_TRANSLATEPT    0x00000020")
372     cpp_quote("#define SVSI_SELECTIONMARK  0x00000040")
373     cpp_quote("#define SVSI_POSITIONITEM   0x00000080")
374     cpp_quote("#define SVSI_CHECK          0x00000100")
375     cpp_quote("#define SVSI_NOSTATECHANGE  0x80000000")
376
377     typedef UINT SVSIF;
378
379     typedef enum
380     {
381         SVGIO_BACKGROUND     = 0x00000000,
382         SVGIO_SELECTION      = 0x00000001,
383         SVGIO_ALLVIEW        = 0x00000002,
384         SVGIO_CHECKED        = 0x00000003,
385         SVGIO_TYPE_MASK      = 0x0000000f,
386         SVGIO_FLAG_VIEWORDER = 0x80000000,
387     } SVGIO;
388
389     typedef enum
390     {
391         SVUIA_DEACTIVATE       = 0,
392         SVUIA_ACTIVATE_NOFOCUS = 1,
393         SVUIA_ACTIVATE_FOCUS   = 2,
394         SVUIA_INPLACEACTIVATE  = 3
395     } SVUIA_STATUS;
396
397 cpp_quote("#if 0")
398     typedef LPARAM LPFNSVADDPROPSHEETPAGE;
399 cpp_quote("#else")
400 cpp_quote("#include <prsht.h>")
401 cpp_quote("typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;")
402 cpp_quote("#endif")
403
404     HRESULT TranslateAccelerator( [in] MSG *pmsg );
405     HRESULT EnableModeless( [in] BOOL fEnable );
406     HRESULT UIActivate( [in] UINT uState );
407     HRESULT Refresh();
408     HRESULT CreateViewWindow(
409         [in] IShellView *psvPrevious,
410         [in] LPCFOLDERSETTINGS lpfs,
411         [in] IShellBrowser *psb,
412         [out] RECT *prcView,
413         [out] HWND *phWnd);
414
415     HRESULT DestroyViewWindow();
416     HRESULT GetCurrentInfo( [out] LPFOLDERSETTINGS lpfs );
417
418     [local] HRESULT AddPropertySheetPages(
419         [in] DWORD dwReserved,
420         [in] LPFNSVADDPROPSHEETPAGE pfn,
421         [in] LPARAM lparam);
422
423     HRESULT SaveViewState();
424     HRESULT SelectItem(
425         [in] LPCITEMIDLIST pidlItem,
426         [in] SVSIF uFlags);
427     HRESULT GetItemObject(
428         [in] UINT uItem,
429         [in] REFIID riid,
430         [out, iid_is(riid)] void **ppv);
431 }
432
433
434 /*****************************************************************************
435  * IShellBrowser interface
436  */
437 [
438     object,
439     uuid(000214e2-0000-0000-c000-000000000046),
440     pointer_default(unique)
441 ]
442 interface IShellBrowser : IOleWindow
443 {
444     typedef IShellBrowser *LPSHELLBROWSER;
445
446 cpp_quote("#define SBSP_DEFBROWSER            0x00000000")
447 cpp_quote("#define SBSP_SAMEBROWSER           0x00000001")
448 cpp_quote("#define SBSP_NEWBROWSER            0x00000002")
449 cpp_quote("#define SBSP_DEFMODE               0x00000000")
450 cpp_quote("#define SBSP_OPENMODE              0x00000010")
451 cpp_quote("#define SBSP_EXPLOREMODE           0x00000020")
452 cpp_quote("#define SBSP_HELPMODE              0x00000040")
453 cpp_quote("#define SBSP_NOTRANSFERHIST        0x00000080")
454 cpp_quote("#define SBSP_ABSOLUTE              0x00000000")
455 cpp_quote("#define SBSP_RELATIVE              0x00001000")
456 cpp_quote("#define SBSP_PARENT                0x00002000")
457 cpp_quote("#define SBSP_NAVIGATEBACK          0x00004000")
458 cpp_quote("#define SBSP_NAVIGATEFORWARD       0x00008000")
459 cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE    0x00010000")
460 cpp_quote("#define SBSP_NOAUTOSELECT          0x04000000")
461 cpp_quote("#define SBSP_WRITENOHISTORY        0x08000000")
462 cpp_quote("#define SBSP_REDIRECT              0x40000000")
463 cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
464
465 cpp_quote("#define FCW_STATUS      0x0001")
466 cpp_quote("#define FCW_TOOLBAR     0x0002")
467 cpp_quote("#define FCW_TREE        0x0003")
468 cpp_quote("#define FCW_INTERNETBAR 0x0006")
469 cpp_quote("#define FCW_PROGRESS    0x0008")
470
471 cpp_quote("#define FCT_MERGE       0x0001")
472 cpp_quote("#define FCT_CONFIGABLE  0x0002")
473 cpp_quote("#define FCT_ADDTOEND    0x0004")
474
475 cpp_quote("#if 0")
476     typedef LPARAM LPTBBUTTONSB;
477 cpp_quote("#else")
478 cpp_quote("#include <commctrl.h>")
479 cpp_quote("typedef LPTBBUTTON LPTBBUTTONSB;")
480 cpp_quote("#endif")
481
482     HRESULT InsertMenusSB(
483         [in] HMENU hmenuShared,
484         [in, out] LPOLEMENUGROUPWIDTHS lpMenuWidths);
485
486     HRESULT SetMenuSB(
487         [in] HMENU hmenuShared,
488         [in] HOLEMENU holemenuReserved,
489         [in] HWND hwndActiveObject);
490
491     HRESULT RemoveMenusSB( [in] HMENU hmenuShared );
492     HRESULT SetStatusTextSB( [in, unique] LPCOLESTR pszStatusText );
493     HRESULT EnableModelessSB( [in] BOOL fEnable );
494     HRESULT TranslateAcceleratorSB( [in] MSG *pmsg, [in] WORD wID );
495
496     HRESULT BrowseObject(
497         [in] LPCITEMIDLIST pidl,
498         [in] UINT wFlags);
499
500     HRESULT GetViewStateStream(
501         [in] DWORD grfMode,
502         [out] IStream **ppStrm);
503
504     HRESULT GetControlWindow(
505         [in] UINT id,
506         [out] HWND *phwnd);
507
508     [local] HRESULT SendControlMsg(
509         [in] UINT id,
510         [in] UINT uMsg,
511         [in] WPARAM wParam,
512         [in] LPARAM lParam,
513         [in] LRESULT *pret);
514
515     HRESULT QueryActiveShellView( [out] IShellView **ppshv );
516     HRESULT OnViewWindowActive( [in] IShellView *pshv );
517
518     [local]
519     HRESULT SetToolbarItems(
520         [in] LPTBBUTTONSB lpButtons,
521         [in] UINT nButtons,
522         [in] UINT uFlags);
523 }
524
525
526 /*****************************************************************************
527  * IShellLinkA interface
528  */
529 [
530     object,
531     uuid(000214ee-0000-0000-c000-000000000046),
532     pointer_default(unique)
533 ]
534 interface IShellLinkA : IUnknown
535 {
536     typedef enum
537     {
538         SLR_NO_UI               = 0x0001,
539         SLR_ANY_MATCH           = 0x0002,
540         SLR_UPDATE              = 0x0004,
541         SLR_NOUPDATE            = 0x0008,
542         SLR_NOSEARCH            = 0x0010,
543         SLR_NOTRACK             = 0x0020,
544         SLR_NOLINKINFO          = 0x0040,
545         SLR_INVOKE_MSI          = 0x0080,
546         SLR_NO_UI_WITH_MSG_PUMP = 0x0101,
547     } SLR_FLAGS;
548
549     typedef enum
550     {
551         SLGP_SHORTPATH   = 0x0001,
552         SLGP_UNCPRIORITY = 0x0002,
553         SLGP_RAWPATH     = 0x0004,
554     } SLGP_FLAGS;
555
556     HRESULT GetPath(
557         [out, size_is(cch)] LPSTR pszFile,
558         [in] int cch,
559         [in, out] WIN32_FIND_DATAA *pfd,
560         [in] DWORD fFlags);
561
562     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
563
564     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
565
566     HRESULT GetDescription(
567         [out, size_is(cch)] LPSTR pszName,
568         [in] int cch);
569
570     HRESULT SetDescription( [in] LPCSTR pszName );
571
572     HRESULT GetWorkingDirectory(
573         [out, size_is(cch)] LPSTR pszDir,
574         [in] int cch);
575
576     HRESULT SetWorkingDirectory( [in] LPCSTR pszDir );
577
578     HRESULT GetArguments(
579         [out, size_is(cch)] LPSTR pszArgs,
580         [in] int cch);
581
582     HRESULT SetArguments( [in] LPCSTR pszArgs );
583
584     HRESULT GetHotkey( [out] WORD *pwHotkey );
585
586     HRESULT SetHotkey( [in] WORD wHotkey );
587
588     HRESULT GetShowCmd( [out] int *piShowCmd );
589
590     HRESULT SetShowCmd( [in] int iShowCmd );
591
592     HRESULT GetIconLocation(
593         [out, size_is(cch)] LPSTR pszIconPath,
594         [in] int cch,
595         [out] int *piIcon);
596
597     HRESULT SetIconLocation(
598         [in] LPCSTR pszIconPath,
599         [in] int iIcon);
600
601     HRESULT SetRelativePath(
602         [in] LPCSTR pszPathRel,
603         [in] DWORD dwReserved);
604
605     HRESULT Resolve(
606         [in] HWND hwnd,
607         [in] DWORD fFlags);
608
609     HRESULT SetPath( [in] LPCSTR pszFile );
610 }
611
612
613 /*****************************************************************************
614  * IShellLinkW interface
615  */
616 [
617     object,
618     uuid(000214f9-0000-0000-c000-000000000046),
619     pointer_default(unique)
620 ]
621 interface IShellLinkW : IUnknown
622 {
623     HRESULT GetPath(
624         [out, size_is(cch)] LPWSTR pszFile,
625         [in] int cch,
626         [in, out] WIN32_FIND_DATAW *pfd,
627         [in] DWORD fFlags);
628
629     HRESULT GetIDList( [out] LPITEMIDLIST * ppidl );
630
631     HRESULT SetIDList( [in] LPCITEMIDLIST pidl );
632
633     HRESULT GetDescription(
634         [out, size_is(cch)] LPWSTR pszName,
635         [in] int cch);
636
637     HRESULT SetDescription( [in] LPCWSTR pszName );
638
639     HRESULT GetWorkingDirectory(
640         [out, size_is(cch)] LPWSTR pszDir,
641         [in] int cch);
642
643     HRESULT SetWorkingDirectory( [in] LPCWSTR pszDir );
644
645     HRESULT GetArguments(
646         [out, size_is(cch)] LPWSTR pszArgs,
647         [in] int cch);
648
649     HRESULT SetArguments( [in] LPCWSTR pszArgs );
650
651     HRESULT GetHotkey( [out] WORD *pwHotkey );
652
653     HRESULT SetHotkey( [in] WORD wHotkey );
654
655     HRESULT GetShowCmd( [out] int *piShowCmd );
656
657     HRESULT SetShowCmd( [in] int iShowCmd );
658
659     HRESULT GetIconLocation(
660         [out, size_is(cch)] LPWSTR pszIconPath,
661         [in] int cch,
662         [out] int *piIcon);
663
664     HRESULT SetIconLocation(
665         [in] LPCWSTR pszIconPath,
666         [in] int iIcon);
667
668     HRESULT SetRelativePath(
669         [in] LPCWSTR pszPathRel,
670         [in] DWORD dwReserved);
671
672     HRESULT Resolve(
673         [in] HWND hwnd,
674         [in] DWORD fFlags);
675
676     HRESULT SetPath( [in] LPCWSTR pszFile );
677 }
678
679 cpp_quote("#define IShellLink WINELIB_NAME_AW(IShellLink)")
680
681
682 /*****************************************************************************
683  * IShellExtInit interface
684  */
685 [
686     object,
687     uuid(000214e8-0000-0000-c000-000000000046),
688     pointer_default(unique)
689 ]
690 interface IShellExtInit : IUnknown
691 {
692     typedef IShellExtInit *LPSHELLEXTINIT;
693
694     HRESULT Initialize(
695         [in] LPCITEMIDLIST pidlFolder,
696         [in] IDataObject *pdtobj,
697         [in] HKEY hkeyProgID);
698 }
699
700
701 /*******************************************************************************/
702 /* Note: the following interfaces are not in shobjidl.idl under Windows, they  */
703 /* are declared directly in shlobj.h. It hopefully won't break anything to put */
704 /* them here anyway.                                                           */
705 /*******************************************************************************/
706
707 #ifndef MAX_PATH
708 #define MAX_PATH 260
709 #endif
710
711
712 /*****************************************************************************
713  * IPersistFolder3 interface
714  */
715 [
716     object,
717     uuid(cef04fdf-fe72-11d2-87a5-00c04f6837cf),
718     pointer_default(unique)
719 ]
720 interface IPersistFolder3 : IPersistFolder2
721 {
722     typedef struct
723     {
724         LPITEMIDLIST    pidlTargetFolder;
725         WCHAR           szTargetParsingName[MAX_PATH];
726         WCHAR           szNetworkProvider[MAX_PATH];
727         DWORD           dwAttributes;
728         int             csidl;
729     } PERSIST_FOLDER_TARGET_INFO;
730
731     HRESULT InitializeEx(
732         [in] IBindCtx *pbc,
733         [in] LPCITEMIDLIST pidlRoot,
734         [in] const PERSIST_FOLDER_TARGET_INFO *ppfti);
735
736     HRESULT GetFolderTargetInfo( [out] PERSIST_FOLDER_TARGET_INFO *ppfti );
737 }
738
739
740 /*****************************************************************************
741  * IExtractIconA interface
742  */
743 [
744     object,
745     uuid(000214eb-0000-0000-c000-000000000046),
746     pointer_default(unique)
747 ]
748 interface IExtractIconA : IUnknown
749 {
750 cpp_quote("#define GIL_OPENICON     0x0001")
751 cpp_quote("#define GIL_FORSHELL     0x0002")
752 cpp_quote("#define GIL_ASYNC        0x0020")
753 cpp_quote("#define GIL_DEFAULTICON  0x0040")
754 cpp_quote("#define GIL_FORSHORTCUT  0x0080")
755
756 cpp_quote("#define GIL_SIMULATEDOC  0x0001")
757 cpp_quote("#define GIL_PERINSTANCE  0x0002")
758 cpp_quote("#define GIL_PERCLASS     0x0004")
759 cpp_quote("#define GIL_NOTFILENAME  0x0008")
760 cpp_quote("#define GIL_DONTCACHE    0x0010")
761
762     typedef IExtractIconA *LPEXTRACTICONA;
763
764     HRESULT GetIconLocation(
765         [in] UINT uFlags,
766         [out, size_is(cchMax)] LPSTR szIconFile,
767         [in] UINT cchMax,
768         [out] INT *piIndex,
769         [out] UINT *pwFlags);
770
771     HRESULT Extract(
772         [in] LPCSTR pszFile,
773         [in] UINT nIconIndex,
774         [out] HICON *phiconLarge,
775         [out] HICON *phiconSmall,
776         [in] UINT nIconSize );
777 }
778
779
780 /*****************************************************************************
781  * IExtractIconW interface
782  */
783 [
784     object,
785     uuid(000214fa-0000-0000-c000-000000000046),
786     pointer_default(unique)
787 ]
788 interface IExtractIconW : IUnknown
789 {
790     typedef IExtractIconW *LPEXTRACTICONW;
791
792     HRESULT GetIconLocation(
793         [in] UINT uFlags,
794         [out, size_is(cchMax)] LPWSTR szIconFile,
795         [in] UINT cchMax,
796         [out] INT *piIndex,
797         [out] UINT *pwFlags);
798
799     HRESULT Extract(
800         [in] LPCWSTR pszFile,
801         [in] UINT nIconIndex,
802         [out] HICON *phiconLarge,
803         [out] HICON *phiconSmall,
804         [in] UINT nIconSize );
805 }
806
807 cpp_quote("#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)")
808 cpp_quote("#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)")
809
810
811 /*****************************************************************************
812  * ICommDlgBrowser interface
813  */
814 [
815     object,
816     uuid(000214f1-0000-0000-c000-000000000046),
817     pointer_default(unique)
818 ]
819 interface ICommDlgBrowser : IUnknown
820 {
821 cpp_quote("#define CDBOSC_SETFOCUS     0x00000000")
822 cpp_quote("#define CDBOSC_KILLFOCUS    0x00000001")
823 cpp_quote("#define CDBOSC_SELCHANGE    0x00000002")
824 cpp_quote("#define CDBOSC_RENAME       0x00000003")
825 cpp_quote("#define CDBOSC_STATECHANGE  0x00000004")
826
827     typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
828
829     HRESULT OnDefaultCommand( [in] IShellView *shv );
830     HRESULT OnStateChange( [in] IShellView *shv, [in] ULONG uChange );
831     HRESULT IncludeObject( [in] IShellView *shv, [in] LPCITEMIDLIST pidl );
832 }
833
834
835 /*****************************************************************************
836  * IDockingWindowFrame interface
837  */
838 [
839     object,
840     uuid(47d2657a-7b27-11d0-8ca9-00a0c92dbfe8),
841     pointer_default(unique)
842 ]
843 interface IDockingWindowFrame : IOleWindow
844 {
845 cpp_quote("#define DWFRF_NORMAL           0x0000")
846 cpp_quote("#define DWFRF_DELETECONFIGDATA 0x0001")
847 cpp_quote("#define DWFAF_HIDDEN           0x0001")
848
849     HRESULT AddToolbar(
850         [in] IUnknown *punkSrc,
851         [in] LPCWSTR pwszItem,
852         [in] DWORD dwAddFlags);
853
854     HRESULT RemoveToolbar(
855         [in] IUnknown *punkSrc,
856         [in] DWORD dwRemoveFlags);
857
858     HRESULT FindToolbar(
859         [in] LPCWSTR pwszItem,
860         [in] REFIID riid,
861         [out] LPVOID *ppvObj);
862 }
863
864
865 /*****************************************************************************
866  * IDragSourceHelper interface
867  */
868 [
869     object,
870     uuid(de5bf786-477a-11d2-839d-00c04fd918d0),
871     pointer_default(unique)
872 ]
873 interface IDragSourceHelper : IUnknown
874 {
875     typedef struct
876     {
877         SIZE     sizeDragImage;
878         POINT    ptOffset;
879         HBITMAP  hbmpDragImage;
880         COLORREF crColorKey;
881     } SHDRAGIMAGE, *LPSHDRAGIMAGE;
882
883   HRESULT InitializeFromBitmap(
884       [in] LPSHDRAGIMAGE pshdi,
885       [in] IDataObject *pDataObject);
886
887   HRESULT InitializeFromWindow(
888       [in] HWND hwnd,
889       [in] POINT *ppt,
890       [in] IDataObject *pDataObject);
891 }
892
893
894 /*****************************************************************************
895  * IDropTargetHelper interface
896  */
897 [
898     object,
899     uuid(4657278b-411b-11d2-839a-00c04fd918d0),
900     pointer_default(unique)
901 ]
902 interface IDropTargetHelper : IUnknown
903 {
904     HRESULT DragEnter(
905         [in] HWND hwndTarget,
906         [in] IDataObject *pDataObject,
907         [in] POINT *ppt,
908         [in] DWORD dwEffect);
909
910     HRESULT DragLeave();
911
912     HRESULT DragOver(
913         [in] POINT *ppt,
914         [in] DWORD dwEffect);
915
916     HRESULT Drop(
917         [in] IDataObject *pDataObject,
918         [in] POINT *ppt,
919         [in] DWORD dwEffect);
920
921     HRESULT Show( [in] BOOL fShow );
922 }
923
924
925 /*****************************************************************************
926  * IContextMenu interface
927  */
928 [
929     object,
930     uuid(000214e4-0000-0000-c000-000000000046),
931     pointer_default(unique)
932 ]
933 interface IContextMenu : IUnknown
934 {
935 cpp_quote("#define CMF_NORMAL        0x00000000")
936 cpp_quote("#define CMF_DEFAULTONLY   0x00000001")
937 cpp_quote("#define CMF_VERBSONLY     0x00000002")
938 cpp_quote("#define CMF_EXPLORE       0x00000004")
939 cpp_quote("#define CMF_NOVERBS       0x00000008")
940 cpp_quote("#define CMF_CANRENAME     0x00000010")
941 cpp_quote("#define CMF_NODEFAULT     0x00000020")
942 cpp_quote("#define CMF_INCLUDESTATIC 0x00000040")
943 cpp_quote("#define CMF_EXTENDEDVERBS 0x00000100")
944 cpp_quote("#define CMF_RESERVED      0xffff0000")
945
946 cpp_quote("#define GCS_VERBA         0x00000000")
947 cpp_quote("#define GCS_HELPTEXTA     0x00000001")
948 cpp_quote("#define GCS_VALIDATEA     0x00000002")
949 cpp_quote("#define GCS_VERBW         0x00000004")
950 cpp_quote("#define GCS_HELPTEXTW     0x00000005")
951 cpp_quote("#define GCS_VALIDATEW     0x00000006")
952 cpp_quote("#define GCS_UNICODE       0x00000004")
953 cpp_quote("#define GCS_VERB          WINELIB_NAME_AW(GCS_VERB)")
954 cpp_quote("#define GCS_HELPTEXT      WINELIB_NAME_AW(GCS_HELPTEXT)")
955 cpp_quote("#define GCS_VALIDATE      WINELIB_NAME_AW(GCS_VALIDATE)")
956
957 cpp_quote("#define CMDSTR_NEWFOLDERA   \"NewFolder\"")
958 cpp_quote("#define CMDSTR_VIEWLISTA    \"ViewList\"")
959 cpp_quote("#define CMDSTR_VIEWDETAILSA \"ViewDetails\"")
960 cpp_quote("#if defined(__GNUC__)")
961 cpp_quote("# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }")
962 cpp_quote("# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }")
963 cpp_quote("# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }")
964 cpp_quote("#elif defined(_MSC_VER)")
965 cpp_quote("# define CMDSTR_NEWFOLDERW   L\"NewFolder\"")
966 cpp_quote("# define CMDSTR_VIEWLISTW    L\"ViewList\"")
967 cpp_quote("# define CMDSTR_VIEWDETAILSW L\"ViewDetails\"")
968 cpp_quote("#else")
969 cpp_quote("static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};")
970 cpp_quote("static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};")
971 cpp_quote("static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};")
972 cpp_quote("#endif")
973 cpp_quote("#define CMDSTR_NEWFOLDER    WINELIB_NAME_AW(CMDSTR_NEWFOLDER)")
974 cpp_quote("#define CMDSTR_VIEWLIST     WINELIB_NAME_AW(CMDSTR_VIEWLIST)")
975 cpp_quote("#define CMDSTR_VIEWDETAILS  WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)")
976
977 cpp_quote("#define CMIC_MASK_HOTKEY         SEE_MASK_HOTKEY")
978 cpp_quote("#define CMIC_MASK_ICON           SEE_MASK_ICON")
979 cpp_quote("#define CMIC_MASK_FLAG_NO_UI     SEE_MASK_FLAG_NO_UI")
980 cpp_quote("#define CMIC_MASK_UNICODE        SEE_MASK_UNICODE")
981 cpp_quote("#define CMIC_MASK_NO_CONSOLE     SEE_MASK_NO_CONSOLE")
982 cpp_quote("#define CMIC_MASK_HASLINKNAME    SEE_MASK_HASLINKNAME")
983 cpp_quote("#define CMIC_MASK_FLAG_SEP_VDM   SEE_MASK_FLAG_SEPVDM")
984 cpp_quote("#define CMIC_MASK_HASTITLE       SEE_MASK_HASTITLE")
985 cpp_quote("#define CMIC_MASK_ASYNCOK        SEE_MASK_ASYNCOK")
986 cpp_quote("#define CMIC_MASK_SHIFT_DOWN     0x10000000")
987 cpp_quote("#define CMIC_MASK_PTINVOKE       0x20000000")
988 cpp_quote("#define CMIC_MASK_CONTROL_DOWN   0x40000000")
989 cpp_quote("#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE")
990 cpp_quote("#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS")
991
992     typedef IContextMenu *LPCONTEXTMENU;
993
994     typedef struct tagCMINVOKECOMMANDINFO
995     {
996         DWORD cbSize;
997         DWORD fMask;
998         HWND hwnd;
999         LPCSTR lpVerb;
1000         LPCSTR lpParameters;
1001         LPCSTR lpDirectory;
1002         INT nShow;
1003         DWORD dwHotKey;
1004         HANDLE hIcon;
1005     } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO;
1006
1007     typedef struct tagCMInvokeCommandInfoEx
1008     {
1009         DWORD cbSize;
1010         DWORD fMask;
1011         HWND hwnd;
1012         LPCSTR lpVerb;
1013         LPCSTR lpParameters;
1014         LPCSTR lpDirectory;
1015         INT nShow;
1016         DWORD dwHotKey;
1017         HANDLE hIcon;
1018         LPCSTR lpTitle;
1019         LPCWSTR lpVerbW;
1020         LPCWSTR lpParametersW;
1021         LPCWSTR lpDirectoryW;
1022         LPCWSTR lpTitleW;
1023         POINT ptInvoke;
1024     } CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
1025
1026     HRESULT QueryContextMenu(
1027         [in] HMENU hmenu,
1028         [in] UINT indexMenu,
1029         [in] UINT idCmdFirst,
1030         [in] UINT idCmdLast,
1031         [in] UINT uFlags);
1032
1033     HRESULT InvokeCommand( [in] LPCMINVOKECOMMANDINFO lpici );
1034
1035     HRESULT GetCommandString(
1036         [in] UINT_PTR idCmd,
1037         [in] UINT uType,
1038         [out] UINT *pwReserved,
1039         [out, size_is(cchMax)] LPSTR pszName,
1040         [in] UINT cchMax);
1041 }
1042
1043
1044 /*****************************************************************************
1045  * IContextMenu2 interface
1046  */
1047 [
1048     object,
1049     uuid(000214f4-0000-0000-c000-000000000046),
1050     pointer_default(unique)
1051 ]
1052 interface IContextMenu2 : IContextMenu
1053 {
1054     typedef IContextMenu2 *LPCONTEXTMENU2;
1055
1056     HRESULT HandleMenuMsg(
1057         [in] UINT uMsg,
1058         [in] WPARAM wParam,
1059         [in] LPARAM lParam);
1060 }
1061
1062
1063 /*****************************************************************************
1064  * IContextMenu3 interface
1065  */
1066 [
1067     object,
1068     uuid(bcfce0a0-ec17-11d0-8d10-00a0c90f2719),
1069     pointer_default(unique)
1070 ]
1071 interface IContextMenu3 : IContextMenu2
1072 {
1073     typedef IContextMenu3 *LPCONTEXTMENU3;
1074
1075     HRESULT HandleMenuMsg2(
1076         [in] UINT uMsg,
1077         [in] WPARAM wParam,
1078         [in] LPARAM lParam,
1079         [out] LRESULT *plResult);
1080 }
1081
1082
1083 /*****************************************************************************
1084  * IShellExecuteHookA interface
1085  */
1086 [
1087     object,
1088     uuid(000214f5-0000-0000-c000-000000000046),
1089     pointer_default(unique)
1090 ]
1091 interface IShellExecuteHookA : IUnknown
1092 {
1093     cpp_quote("struct _SHELLEXECUTEINFOA;")
1094     HRESULT Execute(
1095         [in, out] struct _SHELLEXECUTEINFOA* pei);
1096 }
1097
1098
1099 /*****************************************************************************
1100  * IShellExecuteHookW interface
1101  */
1102 [
1103     object,
1104     uuid(000214fb-0000-0000-c000-000000000046),
1105     pointer_default(unique)
1106 ]
1107 interface IShellExecuteHookW : IUnknown
1108 {
1109     cpp_quote("struct _SHELLEXECUTEINFOW;")
1110     HRESULT Execute(
1111                 [in, out] struct _SHELLEXECUTEINFOW* pei);
1112 }
1113
1114 /*****************************************************************************
1115  * IShellLinkDataList interface
1116  */
1117 [
1118     object,
1119     uuid(45e2b4ae-b1c3-11d0-b92f-00a0c90312e1),
1120     pointer_default(unique)
1121 ]
1122 interface IShellLinkDataList : IUnknown
1123 {
1124     HRESULT AddDataBlock(
1125                 [in] void *pDataBlock);
1126     HRESULT CopyDataBlock(
1127                 [in] DWORD dwSig,
1128                 [out] void **ppDataBlock);
1129     HRESULT RemoveDataBlock(
1130                 [in] DWORD dwSig);
1131     HRESULT GetFlags(
1132                 [out] DWORD *pdwFlags);
1133     HRESULT SetFlags(
1134                 [in] DWORD dwFlags);
1135 }
1136
1137
1138 /*****************************************************************************
1139  * IResolveShellLink interface
1140  */
1141 [
1142     object,
1143     uuid(5cd52983-9449-11d2-963a-00c04f79adf0),
1144     pointer_default(unique)
1145 ]
1146 interface IResolveShellLink : IUnknown
1147 {
1148     HRESULT ResolveShellLink(
1149                 [in] IUnknown *punk,
1150                 [in] HWND hwnd,
1151                 [in] DWORD fFlags);
1152 }
1153
1154
1155 /*****************************************************************************
1156  * IURLSearchHook interface
1157  */
1158 [
1159     object,
1160     uuid(ac60f6a0-0fd9-11d0-99cb-00c04fd64497),
1161     pointer_default(unique)
1162 ]
1163 interface IURLSearchHook : IUnknown
1164 {
1165     HRESULT Translate(
1166                 [in, out] LPWSTR lpwszSearchURL,
1167                 [in] DWORD cchBufferSize);
1168 }
1169
1170
1171 /*****************************************************************************
1172  * ISearchContext interface
1173  */
1174 [
1175     object,
1176     uuid(09f656a2-41af-480c-88f7-16cc0d164615),
1177     pointer_default(unique)
1178 ]
1179 interface ISearchContext : IUnknown
1180 {
1181     HRESULT GetSearchUrl(
1182                 [in] BSTR *pbstrSearchUrl);
1183     HRESULT GetSearchText(
1184                 [in] BSTR *pbstrSearchText);
1185     HRESULT GetSearchStyle(
1186                 [in] BSTR *pdwSearchStyle);
1187 }
1188
1189
1190 /*****************************************************************************
1191  * IURLSearchHook2 interface
1192  */
1193 [
1194     object,
1195     uuid(5ee44da4-6d32-46e3-86bc-07540dedd0e0),
1196     pointer_default(unique)
1197 ]
1198 interface IURLSearchHook2 : IURLSearchHook
1199 {
1200     HRESULT TranslateWithSearchContext(
1201                 [in, out] LPWSTR lpwszSearchURL,
1202                 [in] DWORD cchBufferSize,
1203                 [in] ISearchContext *pSearchContext);
1204 }
1205
1206
1207 cpp_quote("#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)")
1208
1209 /*****************************************************************************
1210  * INewShortcutHookA interface
1211  */
1212 [
1213     object,
1214     uuid(000214e1-0000-0000-c000-000000000046),
1215     pointer_default(unique)
1216 ]
1217 interface INewShortcutHookA : IUnknown
1218 {
1219     HRESULT SetReferent(
1220                 [in] LPCSTR pcszReferent,
1221                 [in] HWND hwnd);
1222     HRESULT GetReferent(
1223                 [out] LPCSTR pcszReferent,
1224                 [in] int cchReferent);
1225     HRESULT SetFolder(
1226                 [in] LPCSTR pcszReferent);
1227     HRESULT GetFolder(
1228                 [out] LPSTR pcszReferent,
1229                 [in] int cchFolder);
1230     HRESULT GetName(
1231                 [out] LPSTR pszName,
1232                 [in] int cchName);
1233     HRESULT GetExtension(
1234                 [out] LPSTR pszExtension,
1235                 [in] int cchExtension);
1236
1237
1238
1239 /*****************************************************************************
1240  * INewShortcutHookW interface
1241  */
1242 [
1243     object,
1244     uuid(000214f7-0000-0000-c000-000000000046),
1245     pointer_default(unique)
1246 ]
1247 interface INewShortcutHookW : IUnknown
1248 {
1249     HRESULT SetReferent(
1250                 [in] LPCWSTR pcszReferent,
1251                 [in] HWND hwnd);
1252     HRESULT GetReferent(
1253                 [out] LPCWSTR pcszReferent,
1254                 [in] int cchReferent);
1255     HRESULT SetFolder(
1256                 [in] LPCWSTR pcszReferent);
1257     HRESULT GetFolder(
1258                 [out] LPWSTR pcszReferent,
1259                 [in] int cchFolder);
1260     HRESULT GetName(
1261                 [out] LPWSTR pszName,
1262                 [in] int cchName);
1263     HRESULT GetExtension(
1264                 [out] LPWSTR pszExtension,
1265                 [in] int cchExtension);
1266
1267
1268
1269 /*****************************************************************************
1270  * IShellChangeNotify interface
1271  */
1272 [
1273     object,
1274     uuid(d82be2b1-5764-11d0-a96e-00c04fd705a2),
1275     pointer_default(unique)
1276 ]
1277 interface IShellChangeNotify : IUnknown
1278 {
1279     HRESULT OnChange(
1280                 [in] LONG lEvent,
1281                 [in] LPCITEMIDLIST pidl1,
1282                 [in] LPCITEMIDLIST pidl2);
1283 }
1284
1285 /*****************************************************************************
1286  * IFileSystemBindData interface
1287  */
1288 [
1289     object,
1290     uuid(01e18d10-4d8b-11d2-855d-006008059367),
1291     pointer_default(unique)
1292 ]
1293 interface IFileSystemBindData : IUnknown
1294 {
1295     HRESULT SetFindData(
1296                 [in] const WIN32_FIND_DATAW *pfd);
1297     HRESULT GetFindData(
1298                 [out] WIN32_FIND_DATAW *pfd);
1299 }