Adds enough of ks.h, ksguid.h and ksmedia.h to start adding support
[wine] / include / shlobj.h
1 /*
2  * Copyright (C) the Wine project
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #ifndef __WINE_SHLOBJ_H
20 #define __WINE_SHLOBJ_H
21
22 #include <ole2.h>
23 #include <commctrl.h>
24 #include <prsht.h>
25 #include <shlguid.h>
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* defined(__cplusplus) */
30
31 #include <pshpack1.h>
32
33 #include <shtypes.h>
34 #include <shobjidl.h>
35
36 LPVOID       WINAPI SHAlloc(ULONG);
37 HRESULT      WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*);
38 HRESULT      WINAPI SHCreateStdEnumFmtEtc(DWORD,const FORMATETC *,IEnumFORMATETC**);
39 BOOL         WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST);
40 void         WINAPI SHFree(LPVOID);
41 BOOL         WINAPI SHGetPathFromIDListA(LPCITEMIDLIST pidl,LPSTR pszPath);
42 BOOL         WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl,LPWSTR pszPath);
43 #define             SHGetPathFromIDList WINELIB_NAME_AW(SHGetPathFromIDList)
44 HRESULT      WINAPI SHILCreateFromPath(LPCWSTR,LPITEMIDLIST*,DWORD*);
45 LPITEMIDLIST WINAPI SHSimpleIDListFromPath(LPCWSTR);
46 int          WINAPI SHMapPIDLToSystemImageListIndex(IShellFolder*,LPCITEMIDLIST,int*);
47
48 int          WINAPI RestartDialog(HWND,LPCWSTR,DWORD);
49 int          WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD);
50
51
52 /* SHObjectProperties flags */
53 #define SHOP_PRINTERNAME 0x01
54 #define SHOP_FILEPATH    0x02
55 #define SHOP_VOLUMEGUID  0x04
56
57 BOOL WINAPI SHObjectProperties(HWND,UINT,LPCWSTR,LPCWSTR);
58
59
60 /*****************************************************************************
61  * Predeclare interfaces
62  */
63 typedef struct IShellIcon IShellIcon, *LPSHELLICON;
64
65
66 /*****************************************************************************
67  * IContextMenu interface
68  */
69
70
71 /* DATAOBJECT_InitShellIDList*/
72 #define CFSTR_SHELLIDLIST       "Shell IDList Array"      /* CF_IDLIST */
73
74 extern UINT cfShellIDList;
75
76 typedef struct
77 {       UINT cidl;
78         UINT aoffset[1];
79 } CIDA, *LPIDA;
80
81 #define CFSTR_SHELLIDLISTOFFSET "Shell Object Offsets"    /* CF_OBJECTPOSITIONS */
82 #define CFSTR_NETRESOURCES      "Net Resource"            /* CF_NETRESOURCE */
83
84 /* DATAOBJECT_InitFileGroupDesc */
85 #define CFSTR_FILEDESCRIPTORA   "FileGroupDescriptor"     /* CF_FILEGROUPDESCRIPTORA */
86 extern UINT cfFileGroupDesc;
87
88 #define CFSTR_FILEDESCRIPTORW   "FileGroupDescriptorW"    /* CF_FILEGROUPDESCRIPTORW */
89
90 /* DATAOBJECT_InitFileContents*/
91 #define CFSTR_FILECONTENTS      "FileContents"            /* CF_FILECONTENTS */
92 extern UINT cfFileContents;
93
94 #define CFSTR_FILENAMEA         "FileName"                /* CF_FILENAMEA */
95 #define CFSTR_FILENAMEW         "FileNameW"               /* CF_FILENAMEW */
96 #define CFSTR_PRINTERGROUP      "PrinterFriendlyName"     /* CF_PRINTERS */
97 #define CFSTR_FILENAMEMAPA      "FileNameMap"             /* CF_FILENAMEMAPA */
98 #define CFSTR_FILENAMEMAPW      "FileNameMapW"            /* CF_FILENAMEMAPW */
99 #define CFSTR_SHELLURL          "UniformResourceLocator"
100 #define CFSTR_PREFERREDDROPEFFECT "Preferred DropEffect"
101 #define CFSTR_PERFORMEDDROPEFFECT "Performed DropEffect"
102 #define CFSTR_PASTESUCCEEDED    "Paste Succeeded"
103 #define CFSTR_INDRAGLOOP        "InShellDragLoop"
104
105 #define CFSTR_FILENAME WINELIB_NAME_AW(CFSTR_FILENAME)
106
107
108 /************************************************************************
109 * IShellView interface
110 */
111
112 typedef GUID SHELLVIEWID;
113 #define SV_CLASS_NAME   ("SHELLDLL_DefView")
114
115 #define FCIDM_SHVIEWFIRST       0x0000
116 /* undocumented */
117 #define FCIDM_SHVIEW_ARRANGE    0x7001
118 #define FCIDM_SHVIEW_DELETE     0x7011
119 #define FCIDM_SHVIEW_PROPERTIES 0x7013
120 #define FCIDM_SHVIEW_CUT        0x7018
121 #define FCIDM_SHVIEW_COPY       0x7019
122 #define FCIDM_SHVIEW_INSERT     0x701A
123 #define FCIDM_SHVIEW_UNDO       0x701B
124 #define FCIDM_SHVIEW_INSERTLINK 0x701C
125 #define FCIDM_SHVIEW_SELECTALL  0x7021
126 #define FCIDM_SHVIEW_INVERTSELECTION 0x7022
127
128 #define FCIDM_SHVIEW_BIGICON    0x7029
129 #define FCIDM_SHVIEW_SMALLICON  0x702A
130 #define FCIDM_SHVIEW_LISTVIEW   0x702B
131 #define FCIDM_SHVIEW_REPORTVIEW 0x702C
132 /* 0x7030-0x703f are used by the shellbrowser */
133 #define FCIDM_SHVIEW_AUTOARRANGE 0x7031
134 #define FCIDM_SHVIEW_SNAPTOGRID 0x7032
135
136 #define FCIDM_SHVIEW_HELP       0x7041
137 #define FCIDM_SHVIEW_RENAME     0x7050
138 #define FCIDM_SHVIEW_CREATELINK 0x7051
139 #define FCIDM_SHVIEW_NEWLINK    0x7052
140 #define FCIDM_SHVIEW_NEWFOLDER  0x7053
141
142 #define FCIDM_SHVIEW_REFRESH    0x7100 /* FIXME */
143 #define FCIDM_SHVIEW_EXPLORE    0x7101 /* FIXME */
144 #define FCIDM_SHVIEW_OPEN       0x7102 /* FIXME */
145
146 #define FCIDM_SHVIEWLAST        0x7fff
147 #define FCIDM_BROWSERFIRST      0xA000
148 /* undocumented toolbar items from stddlg's*/
149 #define FCIDM_TB_UPFOLDER       0xA001
150 #define FCIDM_TB_NEWFOLDER      0xA002
151 #define FCIDM_TB_SMALLICON      0xA003
152 #define FCIDM_TB_REPORTVIEW     0xA004
153 #define FCIDM_TB_DESKTOP        0xA005  /* FIXME */
154
155 #define FCIDM_BROWSERLAST       0xbf00
156 #define FCIDM_GLOBALFIRST       0x8000
157 #define FCIDM_GLOBALLAST        0x9fff
158
159 /*
160 * Global submenu IDs and separator IDs
161 */
162 #define FCIDM_MENU_FILE             (FCIDM_GLOBALFIRST+0x0000)
163 #define FCIDM_MENU_EDIT             (FCIDM_GLOBALFIRST+0x0040)
164 #define FCIDM_MENU_VIEW             (FCIDM_GLOBALFIRST+0x0080)
165 #define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
166 #define FCIDM_MENU_TOOLS            (FCIDM_GLOBALFIRST+0x00c0)
167 #define FCIDM_MENU_TOOLS_SEP_GOTO   (FCIDM_GLOBALFIRST+0x00c1)
168 #define FCIDM_MENU_HELP             (FCIDM_GLOBALFIRST+0x0100)
169 #define FCIDM_MENU_FIND             (FCIDM_GLOBALFIRST+0x0140)
170 #define FCIDM_MENU_EXPLORE          (FCIDM_GLOBALFIRST+0x0150)
171 #define FCIDM_MENU_FAVORITES        (FCIDM_GLOBALFIRST+0x0170)
172
173 /* control IDs known to the view */
174 #define FCIDM_TOOLBAR      (FCIDM_BROWSERFIRST + 0)
175 #define FCIDM_STATUS       (FCIDM_BROWSERFIRST + 1)
176
177
178 /****************************************************************************
179  * IShellIcon interface
180  */
181
182 #define INTERFACE IShellIcon
183 #define IShellIcon_METHODS \
184     IUnknown_METHODS \
185     STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT flags, LPINT lpIconIndex) PURE;
186 DECLARE_INTERFACE_(IShellIcon, IUnknown) { IShellIcon_METHODS };
187 #undef INTERFACE
188
189 #ifdef COBJMACROS
190 /*** IUnknown methods ***/
191 #define IShellIcon_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
192 #define IShellIcon_AddRef(p)                  (p)->lpVtbl->AddRef(p)
193 #define IShellIcon_Release(p)                 (p)->lpVtbl->Release(p)
194 /*** IShellIcon methods ***/
195 #define IShellIcon_GetIconOf(p,a,b,c)         (p)->lpVtbl->GetIconOf(p,a,b,c)
196 #endif
197
198 /****************************************************************************
199 * SHAddToRecentDocs API
200 */
201 #define SHARD_PIDL      0x00000001L
202 #define SHARD_PATHA     0x00000002L
203 #define SHARD_PATHW     0x00000003L
204 #define SHARD_PATH WINELIB_NAME_AW(SHARD_PATH)
205
206 void WINAPI SHAddToRecentDocs(UINT uFlags, LPCVOID pv);
207
208 /****************************************************************************
209  * SHBrowseForFolder API
210  */
211 typedef INT (CALLBACK *BFFCALLBACK)(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
212
213 typedef struct tagBROWSEINFOA {
214     HWND        hwndOwner;
215     LPCITEMIDLIST pidlRoot;
216     LPSTR         pszDisplayName;
217     LPCSTR        lpszTitle;
218     UINT        ulFlags;
219     BFFCALLBACK   lpfn;
220     LPARAM        lParam;
221     INT         iImage;
222 } BROWSEINFOA, *PBROWSEINFOA, *LPBROWSEINFOA;
223
224 typedef struct tagBROWSEINFOW {
225     HWND        hwndOwner;
226     LPCITEMIDLIST pidlRoot;
227     LPWSTR        pszDisplayName;
228     LPCWSTR       lpszTitle;
229     UINT        ulFlags;
230     BFFCALLBACK   lpfn;
231     LPARAM        lParam;
232     INT         iImage;
233 } BROWSEINFOW, *PBROWSEINFOW, *LPBROWSEINFOW;
234
235 #define BROWSEINFO   WINELIB_NAME_AW(BROWSEINFO)
236 #define PBROWSEINFO  WINELIB_NAME_AW(PBROWSEINFO)
237 #define LPBROWSEINFO WINELIB_NAME_AW(LPBROWSEINFO)
238
239 /* Browsing for directory. */
240 #define BIF_RETURNONLYFSDIRS   0x0001
241 #define BIF_DONTGOBELOWDOMAIN  0x0002
242 #define BIF_STATUSTEXT         0x0004
243 #define BIF_RETURNFSANCESTORS  0x0008
244 #define BIF_EDITBOX            0x0010
245 #define BIF_VALIDATE           0x0020
246 #define BIF_NEWDIALOGSTYLE     0x0040   
247
248 #define BIF_BROWSEFORCOMPUTER  0x1000
249 #define BIF_BROWSEFORPRINTER   0x2000
250 #define BIF_BROWSEINCLUDEFILES 0x4000
251
252 /* message from browser */
253 #define BFFM_INITIALIZED        1
254 #define BFFM_SELCHANGED         2
255 #define BFFM_VALIDATEFAILEDA    3   /* lParam:szPath ret:1(cont),0(EndDialog) */
256 #define BFFM_VALIDATEFAILEDW    4   /* lParam:wzPath ret:1(cont),0(EndDialog) */
257
258 /* messages to browser */
259 #define BFFM_SETSTATUSTEXTA     (WM_USER+100)
260 #define BFFM_ENABLEOK           (WM_USER+101)
261 #define BFFM_SETSELECTIONA      (WM_USER+102)
262 #define BFFM_SETSELECTIONW      (WM_USER+103)
263 #define BFFM_SETSTATUSTEXTW     (WM_USER+104)
264 #define BFFM_SETOKTEXT          (WM_USER+105)
265 #define BFFM_SETEXPANDED        (WM_USER+106)
266
267 LPITEMIDLIST WINAPI SHBrowseForFolderA(LPBROWSEINFOA lpbi);
268 LPITEMIDLIST WINAPI SHBrowseForFolderW(LPBROWSEINFOW lpbi);
269 #define SHBrowseForFolder        WINELIB_NAME_AW(SHBrowseForFolder)
270 #define BFFM_SETSTATUSTEXT  WINELIB_NAME_AW(BFFM_SETSTATUSTEXT)
271 #define BFFM_SETSELECTION   WINELIB_NAME_AW(BFFM_SETSELECTION)
272 #define BFFM_VALIDATEFAILED WINELIB_NAME_AW(BFFM_VALIDATEFAILED)
273
274 /****************************************************************************
275 *       SHGetDataFromIDList API
276 */
277 #define SHGDFIL_FINDDATA        1
278 #define SHGDFIL_NETRESOURCE     2
279 #define SHGDFIL_DESCRIPTIONID   3
280
281 #define SHDID_ROOT_REGITEM          1
282 #define SHDID_FS_FILE               2
283 #define SHDID_FS_DIRECTORY          3
284 #define SHDID_FS_OTHER              4
285 #define SHDID_COMPUTER_DRIVE35      5
286 #define SHDID_COMPUTER_DRIVE525     6
287 #define SHDID_COMPUTER_REMOVABLE    7
288 #define SHDID_COMPUTER_FIXED        8
289 #define SHDID_COMPUTER_NETDRIVE     9
290 #define SHDID_COMPUTER_CDROM        10
291 #define SHDID_COMPUTER_RAMDISK      11
292 #define SHDID_COMPUTER_OTHER        12
293 #define SHDID_NET_DOMAIN            13
294 #define SHDID_NET_SERVER            14
295 #define SHDID_NET_SHARE             15
296 #define SHDID_NET_RESTOFNET         16
297 #define SHDID_NET_OTHER             17
298 #define SHDID_COMPUTER_IMAGING      18
299 #define SHDID_COMPUTER_AUDIO        19
300 #define SHDID_COMPUTER_SHAREDDOCS   20
301
302 typedef struct _SHDESCRIPTIONID
303 {   DWORD   dwDescriptionId;
304     CLSID   clsid;
305 } SHDESCRIPTIONID, *LPSHDESCRIPTIONID;
306
307 HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
308 HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
309 #define  SHGetDataFromIDList WINELIB_NAME_AW(SHGetDataFromIDList)
310
311 BOOL WINAPI SHGetSpecialFolderPathA (HWND hwndOwner, LPSTR szPath, int nFolder, BOOL bCreate);
312 BOOL WINAPI SHGetSpecialFolderPathW (HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate);
313 #define  SHGetSpecialFolderPath WINELIB_NAME_AW(SHGetSpecialFolderPath)
314
315 /****************************************************************************
316 * shlview structures
317 */
318
319 /*
320 * IShellFolderViewCallback Callback
321 *  This "callback" is called by the shells default IShellView implementation (that
322 *  we got using SHCreateShellViewEx()), to notify us of the various things that
323 *  are happening to the shellview (and ask for things too).
324 *
325 *  You don't have to support anything here - anything you don't want to
326 *  handle, the shell will do itself if you just return E_NOTIMPL. This parameters
327 *  that the shell passes to this function are entirely undocumented.
328 *
329 *  HOWEVER, as the cabview sample as originally written used this callback, the
330 *  writers implemented the callback mechanism on top of their own IShellView.
331 *  Look there for some clues on what to do here.
332 */
333
334 typedef HRESULT (CALLBACK *SHELLVIEWPROC)(DWORD dwUserParam,LPSHELLFOLDER psf,
335                          HWND hwnd,UINT uMsg,UINT wParam,LPARAM lParam);
336
337 /* NF valid values for the "viewmode" item of the SHELLTEMPLATE*/
338 #define NF_INHERITVIEW    0x0000
339 #define NF_LOCALVIEW        0x0001
340
341 typedef struct _SHELLVIEWDATA   /* idl */
342 { DWORD           dwSize;
343   LPSHELLFOLDER   pShellFolder;
344   DWORD           dwUserParam;
345   LPCITEMIDLIST   pidl;
346   DWORD           v3;        /* always 0 */
347   SHELLVIEWPROC   pCallBack;
348   DWORD           viewmode;  /* NF_* enum */
349 } SHELLVIEWDATA, * LPSHELLVIEWDATA;
350
351 HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal) ;
352
353 /**********************************************************************
354  * SHGetSetSettings ()
355  */
356
357 typedef struct
358 {
359     BOOL fShowAllObjects : 1;
360     BOOL fShowExtensions : 1;
361     BOOL fNoConfirmRecycle : 1;
362
363     BOOL fShowSysFiles : 1;
364     BOOL fShowCompColor : 1;
365     BOOL fDoubleClickInWebView : 1;
366     BOOL fDesktopHTML : 1;
367     BOOL fWin95Classic : 1;
368     BOOL fDontPrettyPath : 1;
369     BOOL fShowAttribCol : 1;
370     BOOL fMapNetDrvBtn : 1;
371     BOOL fShowInfoTip : 1;
372     BOOL fHideIcons : 1;
373     BOOL fWebView : 1;
374     BOOL fFilter : 1;
375     BOOL fShowSuperHidden : 1;
376     BOOL fNoNetCrawling : 1;
377
378     DWORD dwWin95Unused;
379     UINT  uWin95Unused;
380     LONG   lParamSort;
381     int    iSortDirection;
382     UINT   version;
383     UINT uNotUsed;
384     BOOL fSepProcess: 1;
385     BOOL fStartPanelOn: 1;
386     BOOL fShowStartPage: 1;
387     UINT fSpareFlags : 13;
388 } SHELLSTATE, *LPSHELLSTATE;
389
390 /**********************************************************************
391  * SHGetSettings ()
392  */
393 typedef struct
394 {       BOOL fShowAllObjects : 1;
395         BOOL fShowExtensions : 1;
396         BOOL fNoConfirmRecycle : 1;
397         BOOL fShowSysFiles : 1;
398
399         BOOL fShowCompColor : 1;
400         BOOL fDoubleClickInWebView : 1;
401         BOOL fDesktopHTML : 1;
402         BOOL fWin95Classic : 1;
403
404         BOOL fDontPrettyPath : 1;
405         BOOL fShowAttribCol : 1;
406         BOOL fMapNetDrvBtn : 1;
407         BOOL fShowInfoTip : 1;
408
409         BOOL fHideIcons : 1;
410         UINT fRestFlags : 3;
411 } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
412
413 VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
414
415 #define SSF_SHOWALLOBJECTS              0x0001
416 #define SSF_SHOWEXTENSIONS              0x0002
417 #define SSF_SHOWCOMPCOLOR               0x0008
418 #define SSF_SHOWSYSFILES                0x0020
419 #define SSF_DOUBLECLICKINWEBVIEW        0x0080
420 #define SSF_SHOWATTRIBCOL               0x0100
421 #define SSF_DESKTOPHTML                 0x0200
422 #define SSF_WIN95CLASSIC                0x0400
423 #define SSF_DONTPRETTYPATH              0x0800
424 #define SSF_SHOWINFOTIP                 0x2000
425 #define SSF_MAPNETDRVBUTTON             0x1000
426 #define SSF_NOCONFIRMRECYCLE            0x8000
427 #define SSF_HIDEICONS                   0x4000
428
429 /****************************************************************************
430 * SHRestricted API
431 */
432 typedef enum RESTRICTIONS
433 {
434         REST_NONE                       = 0x00000000,
435         REST_NORUN                      = 0x00000001,
436         REST_NOCLOSE                    = 0x00000002,
437         REST_NOSAVESET                  = 0x00000004,
438         REST_NOFILEMENU                 = 0x00000008,
439         REST_NOSETFOLDERS               = 0x00000010,
440         REST_NOSETTASKBAR               = 0x00000020,
441         REST_NODESKTOP                  = 0x00000040,
442         REST_NOFIND                     = 0x00000080,
443         REST_NODRIVES                   = 0x00000100,
444         REST_NODRIVEAUTORUN             = 0x00000200,
445         REST_NODRIVETYPEAUTORUN         = 0x00000400,
446         REST_NONETHOOD                  = 0x00000800,
447         REST_STARTBANNER                = 0x00001000,
448         REST_RESTRICTRUN                = 0x00002000,
449         REST_NOPRINTERTABS              = 0x00004000,
450         REST_NOPRINTERDELETE            = 0x00008000,
451         REST_NOPRINTERADD               = 0x00010000,
452         REST_NOSTARTMENUSUBFOLDERS      = 0x00020000,
453         REST_MYDOCSONNET                = 0x00040000,
454         REST_NOEXITTODOS                = 0x00080000,
455         REST_ENFORCESHELLEXTSECURITY    = 0x00100000,
456         REST_LINKRESOLVEIGNORELINKINFO  = 0x00200000,
457         REST_NOCOMMONGROUPS             = 0x00400000,
458         REST_SEPARATEDESKTOPPROCESS     = 0x00800000,
459         REST_NOWEB                      = 0x01000000,
460         REST_NOTRAYCONTEXTMENU          = 0x02000000,
461         REST_NOVIEWCONTEXTMENU          = 0x04000000,
462         REST_NONETCONNECTDISCONNECT     = 0x08000000,
463         REST_STARTMENULOGOFF            = 0x10000000,
464         REST_NOSETTINGSASSIST           = 0x20000000,
465         REST_NOINTERNETICON             = 0x40000001,
466         REST_NORECENTDOCSHISTORY,
467         REST_NORECENTDOCSMENU,
468         REST_NOACTIVEDESKTOP,
469         REST_NOACTIVEDESKTOPCHANGES,
470         REST_NOFAVORITESMENU,
471         REST_CLEARRECENTDOCSONEXIT,
472         REST_CLASSICSHELL,
473         REST_NOCUSTOMIZEWEBVIEW,
474
475         REST_NOHTMLWALLPAPER            = 0x40000010,
476         REST_NOCHANGINGWALLPAPER,
477         REST_NODESKCOMP,
478         REST_NOADDDESKCOMP,
479         REST_NODELDESKCOMP,
480         REST_NOCLOSEDESKCOMP,
481         REST_NOCLOSE_DRAGDROPBAND,
482         REST_NOMOVINGBAND,
483         REST_NOEDITDESKCOMP,
484         REST_NORESOLVESEARCH,
485         REST_NORESOLVETRACK,
486         REST_FORCECOPYACLWITHFILE,
487         REST_NOLOGO3CHANNELNOTIFY,
488         REST_NOFORGETSOFTWAREUPDATE,
489         REST_NOSETACTIVEDESKTOP,
490         REST_NOUPDATEWINDOWS,
491         REST_NOCHANGESTARMENU,          /* 0x40000020 */
492         REST_NOFOLDEROPTIONS,
493         REST_HASFINDCOMPUTERS,
494         REST_INTELLIMENUS,
495         REST_RUNDLGMEMCHECKBOX,
496         REST_ARP_ShowPostSetup,
497         REST_NOCSC,
498         REST_NOCONTROLPANEL,
499         REST_ENUMWORKGROUP,
500         REST_ARP_NOARP,
501         REST_ARP_NOREMOVEPAGE,
502         REST_ARP_NOADDPAGE,
503         REST_ARP_NOWINSETUPPAGE,
504         REST_GREYMSIADS,
505         REST_NOCHANGEMAPPEDDRIVELABEL,
506         REST_NOCHANGEMAPPEDDRIVECOMMENT,
507         REST_MaxRecentDocs,             /* 0x40000030 */
508         REST_NONETWORKCONNECTIONS,
509         REST_FORCESTARTMENULOGOFF,
510         REST_NOWEBVIEW,
511         REST_NOCUSTOMIZETHISFOLDER,
512         REST_NOENCRYPTION,
513
514         REST_ALLOWFRENCHENCRYPTION,     /* not documented */
515
516         REST_DONTSHOWSUPERHIDDEN,
517         REST_NOSHELLSEARCHBUTTON,
518         REST_NOHARDWARETAB,
519         REST_NORUNASINSTALLPROMPT,
520         REST_PROMPTRUNASINSTALLNETPATH,
521         REST_NOMANAGEMYCOMPUTERVERB,
522         REST_NORECENTDOCSNETHOOD,
523         REST_DISALLOWRUN,
524         REST_NOWELCOMESCREEN,
525         REST_RESTRICTCPL,               /* 0x40000040 */
526         REST_DISALLOWCPL,
527         REST_NOSMBALLOONTIP,
528         REST_NOSMHELP,
529         REST_NOWINKEYS,
530         REST_NOENCRYPTONMOVE,
531         REST_NOLOCALMACHINERUN,
532         REST_NOCURRENTUSERRUN,
533         REST_NOLOCALMACHINERUNONCE,
534         REST_NOCURRENTUSERRUNONCE,
535         REST_FORCEACTIVEDESKTOPON,
536         REST_NOCOMPUTERSNEARME,
537         REST_NOVIEWONDRIVE,
538         REST_NONETCRAWL,
539         REST_NOSHAREDDOCUMENTS,
540         REST_NOSMMYDOCS,
541         REST_NOSMMYPICS,                /* 0x40000050 */
542         REST_ALLOWBITBUCKDRIVES,
543         REST_NONLEGACYSHELLMODE,
544         REST_NOCONTROLPANELBARRICADE,
545         REST_NOSTARTPAGE,
546         REST_NOAUTOTRAYNOTIFY,
547         REST_NOTASKGROUPING,
548         REST_NOCDBURNING,
549         REST_MYCOMPNOPROP,
550         REST_MYDOCSNOPROP,
551         REST_NOSTARTPANEL,
552         REST_NODISPLAYAPPEARANCEPAGE,
553         REST_NOTHEMESTAB,
554         REST_NOVISUALSTYLECHOICE,
555         REST_NOSIZECHOICE,
556         REST_NOCOLORCHOICE,
557         REST_SETVISUALSTYLE,            /* 0x40000060 */
558         REST_STARTRUNNOHOMEPATH,
559         REST_NOUSERNAMEINSTARTPANEL,
560         REST_NOMYCOMPUTERICON,
561         REST_NOSMNETWORKPLACES,
562         REST_NOSMPINNEDLIST,
563         REST_NOSMMYMUSIC,
564         REST_NOSMEJECTPC,
565         REST_NOSMMOREPROGRAMS,
566         REST_NOSMMFUPROGRAMS,
567         REST_NOTRAYITEMSDISPLAY,
568         REST_NOTOOLBARSONTASKBAR,
569         /* 0x4000006C
570            0x4000006D
571            0x4000006E */
572         REST_NOSMCONFIGUREPROGRAMS      = 0x4000006F,
573         REST_HIDECLOCK,                 /* 0x40000070 */
574         REST_NOLOWDISKSPACECHECKS,
575         REST_NOENTIRENETWORK,
576         REST_NODESKTOPCLEANUP,
577         REST_BITBUCKNUKEONDELETE,
578         REST_BITBUCKCONFIRMDELETE,
579         REST_BITBUCKNOPROP,
580         REST_NODISPBACKGROUND,
581         REST_NODISPSCREENSAVEPG,
582         REST_NODISPSETTINGSPG,
583         REST_NODISPSCREENSAVEPREVIEW,
584         REST_NODISPLAYCPL,
585         REST_HIDERUNASVERB,
586         REST_NOTHUMBNAILCACHE,
587         REST_NOSTRCMPLOGICAL,
588         REST_NOPUBLISHWIZARD,
589         REST_NOONLINEPRINTSWIZARD,      /* 0x40000080 */
590         REST_NOWEBSERVICES,
591         REST_ALLOWUNHASHEDWEBVIEW,
592         REST_ALLOWLEGACYWEBVIEW,
593         REST_REVERTWEBVIEWSECURITY,
594         
595         REST_INHERITCONSOLEHANDLES      = 0x40000086,
596
597         REST_NODISCONNECT               = 0x41000001,
598         REST_NOSECURITY,
599         REST_NOFILEASSOCIATE,           /* 0x41000003 */
600 } RESTRICTIONS;
601
602 DWORD WINAPI SHRestricted(RESTRICTIONS rest);
603
604 /****************************************************************************
605 * SHChangeNotify API
606 */
607 typedef struct _SHChangeNotifyEntry
608 {
609     LPCITEMIDLIST pidl;
610     BOOL   fRecursive;
611 } SHChangeNotifyEntry;
612
613 #define SHCNE_RENAMEITEM        0x00000001
614 #define SHCNE_CREATE            0x00000002
615 #define SHCNE_DELETE            0x00000004
616 #define SHCNE_MKDIR             0x00000008
617 #define SHCNE_RMDIR             0x00000010
618 #define SHCNE_MEDIAINSERTED     0x00000020
619 #define SHCNE_MEDIAREMOVED      0x00000040
620 #define SHCNE_DRIVEREMOVED      0x00000080
621 #define SHCNE_DRIVEADD          0x00000100
622 #define SHCNE_NETSHARE          0x00000200
623 #define SHCNE_NETUNSHARE        0x00000400
624 #define SHCNE_ATTRIBUTES        0x00000800
625 #define SHCNE_UPDATEDIR         0x00001000
626 #define SHCNE_UPDATEITEM        0x00002000
627 #define SHCNE_SERVERDISCONNECT  0x00004000
628 #define SHCNE_UPDATEIMAGE       0x00008000
629 #define SHCNE_DRIVEADDGUI       0x00010000
630 #define SHCNE_RENAMEFOLDER      0x00020000
631 #define SHCNE_FREESPACE         0x00040000
632
633 #define SHCNE_EXTENDED_EVENT    0x04000000
634 #define SHCNE_ASSOCCHANGED      0x08000000
635 #define SHCNE_DISKEVENTS        0x0002381F
636 #define SHCNE_GLOBALEVENTS      0x0C0581E0
637 #define SHCNE_ALLEVENTS         0x7FFFFFFF
638 #define SHCNE_INTERRUPT         0x80000000
639
640 #define SHCNEE_ORDERCHANGED     0x0002L
641 #define SHCNEE_MSI_CHANGE       0x0004L
642 #define SHCNEE_MSI_UNINSTALL    0x0005L
643
644 #define SHCNF_IDLIST            0x0000
645 #define SHCNF_PATHA             0x0001
646 #define SHCNF_PRINTERA          0x0002
647 #define SHCNF_DWORD             0x0003
648 #define SHCNF_PATHW             0x0005
649 #define SHCNF_PRINTERW          0x0006
650 #define SHCNF_TYPE              0x00FF
651 #define SHCNF_FLUSH             0x1000
652 #define SHCNF_FLUSHNOWAIT       0x2000
653
654 #define SHCNF_PATH              WINELIB_NAME_AW(SHCNF_PATH)
655 #define SHCNF_PRINTER           WINELIB_NAME_AW(SHCNF_PRINTER)
656
657 void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2);
658
659 /*
660  * IShellChangeNotify
661  */
662 typedef struct IShellChangeNotify IShellChangeNotify, *LPSHELLCHANGENOTIFY;
663
664 #define INTERFACE IShellChangeNotify
665 #define IShellChangeNotify_METHODS \
666     IUnknown_METHODS \
667     STDMETHOD(OnChange)(THIS_ LONG lEvent, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) PURE;
668
669 DECLARE_INTERFACE_(IShellChangeNotify, IUnknown) { IShellChangeNotify_METHODS };
670 #undef INTERFACE
671
672 #ifdef COBJMACROS
673 /*** IUnknown methods ***/
674 #define IShellChangeNotify_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
675 #define IShellChangeNotify_AddRef(p)                  (p)->lpVtbl->AddRef(p)
676 #define IShellChangeNotify_Release(p)                 (p)->lpVtbl->Release(p)
677 /*** IShellChangeNotify methods ***/
678 #define IShellChangeNotify_OnChange(p,a,b,c)         (p)->lpVtbl->OnChange(p,a,b,c)
679 #endif
680
681 typedef struct _SHChangeDWORDAsIDList {
682     USHORT   cb;
683     DWORD    dwItem1;
684     DWORD    dwItem2;
685     USHORT   cbZero;
686 } SHChangeDWORDAsIDList, *LPSHChangeDWORDAsIDList;
687
688 typedef struct _SHChangeProductKeyAsIDList {
689     USHORT cb;
690     WCHAR wszProductKey[39];
691     USHORT cbZero;
692 } SHChangeProductKeyAsIDList, *LPSHChangeProductKeyAsIDList;
693
694 ULONG WINAPI SHChangeNotifyRegister(HWND hwnd, int fSources, LONG fEvents, UINT wMsg,
695                                     int cEntries, SHChangeNotifyEntry *pshcne);
696 BOOL WINAPI SHChangeNotifyDeregister(ULONG ulID);
697 HANDLE WINAPI SHChangeNotification_Lock(HANDLE hChangeNotification, DWORD dwProcessId,
698                                         LPITEMIDLIST **pppidl, LONG *plEvent);
699 BOOL WINAPI SHChangeNotification_Unlock(HANDLE hLock);
700
701 HRESULT WINAPI SHGetRealIDL(IShellFolder *psf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST * ppidlReal);
702
703 /****************************************************************************
704 * SHCreateDirectory API
705 */
706 DWORD WINAPI SHCreateDirectory(HWND, LPCVOID);
707 int WINAPI SHCreateDirectoryExA(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
708 int WINAPI SHCreateDirectoryExW(HWND, LPCWSTR, LPSECURITY_ATTRIBUTES);
709
710 /****************************************************************************
711 * SHGetSpecialFolderLocation API
712 */
713 HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST * ppidl);
714 HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl);
715
716 /****************************************************************************
717 * SHGetFolderPath API
718 */
719 typedef enum {
720     SHGFP_TYPE_CURRENT = 0,
721     SHGFP_TYPE_DEFAULT = 1
722 } SHGFP_TYPE;
723
724 HRESULT WINAPI SHGetFolderPathA(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
725 HRESULT WINAPI SHGetFolderPathW(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
726 #define        SHGetFolderPath WINELIB_NAME_AW(SHGetFolderPath)
727
728 #define CSIDL_DESKTOP           0x0000
729 #define CSIDL_INTERNET          0x0001
730 #define CSIDL_PROGRAMS          0x0002
731 #define CSIDL_CONTROLS          0x0003
732 #define CSIDL_PRINTERS          0x0004
733 #define CSIDL_PERSONAL          0x0005
734 #define CSIDL_FAVORITES         0x0006
735 #define CSIDL_STARTUP           0x0007
736 #define CSIDL_RECENT            0x0008
737 #define CSIDL_SENDTO            0x0009
738 #define CSIDL_BITBUCKET         0x000a
739 #define CSIDL_STARTMENU         0x000b
740 #define CSIDL_MYDOCUMENTS       0x000c
741 #define CSIDL_MYMUSIC           0x000d
742 #define CSIDL_MYVIDEO           0x000e
743 #define CSIDL_DESKTOPDIRECTORY  0x0010
744 #define CSIDL_DRIVES            0x0011
745 #define CSIDL_NETWORK           0x0012
746 #define CSIDL_NETHOOD           0x0013
747 #define CSIDL_FONTS             0x0014
748 #define CSIDL_TEMPLATES         0x0015
749 #define CSIDL_COMMON_STARTMENU  0x0016
750 #define CSIDL_COMMON_PROGRAMS   0X0017
751 #define CSIDL_COMMON_STARTUP    0x0018
752 #define CSIDL_COMMON_DESKTOPDIRECTORY   0x0019
753 #define CSIDL_APPDATA           0x001a
754 #define CSIDL_PRINTHOOD         0x001b
755 #define CSIDL_LOCAL_APPDATA     0x001c
756 #define CSIDL_ALTSTARTUP        0x001d
757 #define CSIDL_COMMON_ALTSTARTUP 0x001e
758 #define CSIDL_COMMON_FAVORITES  0x001f
759 #define CSIDL_INTERNET_CACHE    0x0020
760 #define CSIDL_COOKIES           0x0021
761 #define CSIDL_HISTORY           0x0022
762 #define CSIDL_COMMON_APPDATA    0x0023
763 #define CSIDL_WINDOWS           0x0024
764 #define CSIDL_SYSTEM            0x0025
765 #define CSIDL_PROGRAM_FILES     0x0026
766 #define CSIDL_MYPICTURES        0x0027
767 #define CSIDL_PROFILE           0x0028
768 #define CSIDL_SYSTEMX86         0x0029
769 #define CSIDL_PROGRAM_FILESX86  0x002a
770 #define CSIDL_PROGRAM_FILES_COMMON      0x002b
771 #define CSIDL_PROGRAM_FILES_COMMONX86   0x002c
772 #define CSIDL_COMMON_TEMPLATES  0x002d
773 #define CSIDL_COMMON_DOCUMENTS  0x002e
774 #define CSIDL_COMMON_ADMINTOOLS 0x002f
775 #define CSIDL_ADMINTOOLS        0x0030
776 #define CSIDL_CONNECTIONS       0x0031
777 #define CSIDL_COMMON_MUSIC      0x0035
778 #define CSIDL_COMMON_PICTURES   0x0036
779 #define CSIDL_COMMON_VIDEO      0x0037
780 #define CSIDL_RESOURCES         0x0038
781 #define CSIDL_RESOURCES_LOCALIZED 0x0039
782 #define CSIDL_COMMON_OEM_LINKS  0x003a
783 #define CSIDL_CDBURN_AREA       0x003b
784 #define CSIDL_COMPUTERSNEARME   0x003d
785 #define CSIDL_PROFILES          0x003e
786 #define CSIDL_FOLDER_MASK       0x00ff
787 #define CSIDL_FLAG_PER_USER_INIT 0x0800
788 #define CSIDL_FLAG_NO_ALIAS     0x1000
789 #define CSIDL_FLAG_DONT_VERIFY  0x4000
790 #define CSIDL_FLAG_CREATE       0x8000
791
792 #define CSIDL_FLAG_MASK         0xff00
793
794 /****************************************************************************
795  * SHGetDesktopFolder API
796  */
797 HRESULT WINAPI SHGetDesktopFolder(IShellFolder * *);
798
799 /****************************************************************************
800  * SHBindToParent API
801  */
802 HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast);
803
804 /****************************************************************************
805 * SHDefExtractIcon API
806 */
807 HRESULT WINAPI SHDefExtractIconA(LPCSTR pszIconFile, int iIndex, UINT uFlags,
808                                  HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
809 HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags,
810                                  HICON* phiconLarge, HICON* phiconSmall, UINT nIconSize);
811 #define        SHDefExtractIcon WINELIB_NAME_AW(SHDefExtractIcon)
812
813 /*
814  * DROPFILES for CF_HDROP and CF_PRINTERS
815  */
816 typedef struct _DROPFILES
817 {
818   DWORD pFiles;
819   POINT pt;
820   BOOL  fNC;
821   BOOL  fWide;
822 } DROPFILES, *LPDROPFILES;
823
824 /*
825  * Properties of a file in the clipboard
826  */
827 typedef struct _FILEDESCRIPTORA {
828     DWORD dwFlags;
829     CLSID clsid;
830     SIZEL sizel;
831     POINTL pointl;
832     DWORD dwFileAttributes;
833     FILETIME ftCreationTime;
834     FILETIME ftLastAccessTime;
835     FILETIME ftLastWriteTime;
836     DWORD nFileSizeHigh;
837     DWORD nFileSizeLow;
838     CHAR cFileName[MAX_PATH];
839 } FILEDESCRIPTORA, *LPFILEDESCRIPTORA;
840
841 typedef struct _FILEDESCRIPTORW {
842     DWORD dwFlags;
843     CLSID clsid;
844     SIZEL sizel;
845     POINTL pointl;
846     DWORD dwFileAttributes;
847     FILETIME ftCreationTime;
848     FILETIME ftLastAccessTime;
849     FILETIME ftLastWriteTime;
850     DWORD nFileSizeHigh;
851     DWORD nFileSizeLow;
852     WCHAR cFileName[MAX_PATH];
853 } FILEDESCRIPTORW, *LPFILEDESCRIPTORW;
854
855 DECL_WINELIB_TYPE_AW(FILEDESCRIPTOR)
856 DECL_WINELIB_TYPE_AW(LPFILEDESCRIPTOR)
857
858 /*
859  * CF_FILEGROUPDESCRIPTOR clipboard format
860  */
861 typedef struct _FILEGROUPDESCRIPTORA {
862     UINT cItems;
863     FILEDESCRIPTORA fgd[1];
864 } FILEGROUPDESCRIPTORA, *LPFILEGROUPDESCRIPTORA;
865
866 typedef struct _FILEGROUPDESCRIPTORW {
867     UINT cItems;
868     FILEDESCRIPTORW fgd[1];
869 } FILEGROUPDESCRIPTORW, *LPFILEGROUPDESCRIPTORW;
870
871 DECL_WINELIB_TYPE_AW(FILEGROUPDESCRIPTOR)
872 DECL_WINELIB_TYPE_AW(LPFILEGROUPDESCRIPTOR)
873
874 /****************************************************************************
875  * Cabinet functions
876  */
877
878 typedef struct {
879     WORD cLength;
880     WORD nVersion;
881     BOOL fFullPathTitle:1;
882     BOOL fSaveLocalView:1;
883     BOOL fNotShell:1;
884     BOOL fSimpleDefault:1;
885     BOOL fDontShowDescBar:1;
886     BOOL fNewWindowMode:1;
887     BOOL fShowCompColor:1;
888     BOOL fDontPrettyNames:1;
889     BOOL fAdminsCreateCommonGroups:1;
890     UINT fUnusedFlags:7;
891     UINT fMenuEnumFilter;
892 } CABINETSTATE, *LPCABINETSTATE;
893
894 #define CABINETSTATE_VERSION 2
895
896 BOOL WINAPI ReadCabinetState(CABINETSTATE *, int);
897 BOOL WINAPI WriteCabinetState(CABINETSTATE *);
898
899 /****************************************************************************
900  * Path Manipulation Routines
901  */
902 VOID WINAPI PathGetShortPath(LPWSTR pszPath);
903
904 #include <poppack.h>
905
906 /****************************************************************************
907  * Drag And Drop Routines
908  */
909
910 /* DAD_AutoScroll sample structure */
911 #define NUM_POINTS 3
912 typedef struct
913 {
914     int   iNextSample;
915     DWORD dwLastScroll;
916     BOOL  bFull;
917     POINT pts[NUM_POINTS];
918     DWORD dwTimes[NUM_POINTS];
919 } AUTO_SCROLL_DATA;
920
921 BOOL         WINAPI DAD_SetDragImage(HIMAGELIST,LPPOINT);
922 BOOL         WINAPI DAD_DragEnterEx(HWND,POINT);
923 BOOL         WINAPI DAD_DragEnterEx2(HWND,POINT,IDataObject*);
924 BOOL         WINAPI DAD_DragMove(POINT);
925 BOOL         WINAPI DAD_DragLeave(void);
926 BOOL         WINAPI DAD_AutoScroll(HWND,AUTO_SCROLL_DATA*,LPPOINT);
927 HRESULT      WINAPI SHDoDragDrop(HWND,IDataObject*,IDropSource*,DWORD,LPDWORD);
928
929 /*****************************************************************************
930  * IFileSystemBindData interface
931  */
932 #ifndef __IFileSystemBindData_FWD_DEFINED__
933 #define __IFileSystemBindData_FWD_DEFINED__
934 typedef struct IFileSystemBindData IFileSystemBindData;
935 #endif
936
937 #ifndef __IFileSystemBindData_INTERFACE_DEFINED__
938 #define __IFileSystemBindData_INTERFACE_DEFINED__
939
940 DEFINE_GUID(IID_IFileSystemBindData, 0x01e18d10, 0x4d8b, 0x11d2, 0x85,0x5d, 0x00,0x60,0x08,0x05,0x93,0x67);
941 #if defined(__cplusplus) && !defined(CINTERFACE)
942 struct IFileSystemBindData : public IUnknown
943 {
944     virtual HRESULT STDMETHODCALLTYPE SetFindData(
945         const WIN32_FIND_DATAW* pfd) = 0;
946
947     virtual HRESULT STDMETHODCALLTYPE GetFindData(
948         WIN32_FIND_DATAW* pfd) = 0;
949
950 };
951 #else
952 typedef struct IFileSystemBindDataVtbl IFileSystemBindDataVtbl;
953 struct IFileSystemBindData {
954     const IFileSystemBindDataVtbl* lpVtbl;
955 };
956 struct IFileSystemBindDataVtbl {
957     ICOM_MSVTABLE_COMPAT_FIELDS
958
959     /*** IUnknown methods ***/
960     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
961         IFileSystemBindData* This,
962         REFIID riid,
963         void** ppvObject);
964
965     ULONG (STDMETHODCALLTYPE *AddRef)(
966         IFileSystemBindData* This);
967
968     ULONG (STDMETHODCALLTYPE *Release)(
969         IFileSystemBindData* This);
970
971     /*** IFileSystemBindData methods ***/
972     HRESULT (STDMETHODCALLTYPE *SetFindData)(
973         IFileSystemBindData* This,
974         const WIN32_FIND_DATAW* pfd);
975
976     HRESULT (STDMETHODCALLTYPE *GetFindData)(
977         IFileSystemBindData* This,
978         WIN32_FIND_DATAW* pfd);
979
980 };
981
982 /*** IUnknown methods ***/
983 #define IFileSystemBindData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
984 #define IFileSystemBindData_AddRef(p) (p)->lpVtbl->AddRef(p)
985 #define IFileSystemBindData_Release(p) (p)->lpVtbl->Release(p)
986 /*** IFileSystemBindData methods ***/
987 #define IFileSystemBindData_GetFindData(p,a) (p)->lpVtbl->GetFindData(p,a)
988 #define IFileSystemBindData_SetFindData(p,a) (p)->lpVtbl->SetFindData(p,a)
989
990 #endif
991
992 #define IFileSystemBindData_METHODS \
993     ICOM_MSVTABLE_COMPAT_FIELDS \
994     /*** IUnknown methods ***/ \
995     STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; \
996     STDMETHOD_(ULONG,AddRef)(THIS) PURE; \
997     STDMETHOD_(ULONG,Release)(THIS) PURE; \
998     /*** IFileSystemBindData methods ***/ \
999     STDMETHOD_(HRESULT,GetFindData)(THIS_ WIN32_FIND_DATAW* pfd) PURE; \
1000     STDMETHOD_(HRESULT,SetFindData)(THIS_ const WIN32_FIND_DATAW* pfd) PURE;
1001
1002 #endif  /* __IFileSystemBindData_INTERFACE_DEFINED__ */
1003
1004 LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST,LPCSHITEMID,BOOL);
1005 LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
1006 LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
1007 LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR);
1008 LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR);
1009 #define             ILCreateFromPath WINELIB_NAME_AW(ILCreateFromPath)
1010 LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST,LPCITEMIDLIST);
1011 LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST,LPCITEMIDLIST);
1012 LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
1013 void         WINAPI ILFree(LPITEMIDLIST);
1014 LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
1015 UINT         WINAPI ILGetSize(LPCITEMIDLIST);
1016 BOOL         WINAPI ILIsEqual(LPCITEMIDLIST,LPCITEMIDLIST);
1017 BOOL         WINAPI ILIsParent(LPCITEMIDLIST,LPCITEMIDLIST,BOOL);
1018 BOOL         WINAPI ILRemoveLastID(LPITEMIDLIST);
1019
1020 #ifdef __cplusplus
1021 } /* extern "C" */
1022 #endif /* defined(__cplusplus) */
1023
1024 #endif /* __WINE_SHLOBJ_H */