OSDN Git Service

Prepare environment for Earnie's tools.
[mingw/mingw-org-wsl.git] / wslapi / include / shlobj.h
1 #ifndef _SHLOBJ_H
2 #define _SHLOBJ_H
3 #if __GNUC__ >= 3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 #include <ole2.h>
12 #include <shlguid.h>
13 #include <shellapi.h>
14 #pragma pack(push,1)
15 #include <commctrl.h>
16
17 #define BIF_RETURNONLYFSDIRS 1
18 #define BIF_DONTGOBELOWDOMAIN 2
19 #define BIF_STATUSTEXT 4
20 #define BIF_RETURNFSANCESTORS 8
21 #define BIF_EDITBOX 16
22 #define BIF_VALIDATE 32
23 #define BIF_NEWDIALOGSTYLE 64
24 #define BIF_BROWSEINCLUDEURLS 128
25 #define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE )
26 #define BIF_BROWSEFORCOMPUTER 0x1000
27 #define BIF_BROWSEFORPRINTER 0x2000
28 #define BIF_BROWSEINCLUDEFILES 0x4000
29 #define BIF_SHAREABLE 0x8000
30 #define BFFM_INITIALIZED 1
31 #define BFFM_SELCHANGED 2
32 #define BFFM_VALIDATEFAILEDA 3
33 #define BFFM_VALIDATEFAILEDW 4
34 #define BFFM_SETSTATUSTEXTA (WM_USER + 100)
35 #define BFFM_SETSTATUSTEXTW (WM_USER + 104)
36 #define BFFM_ENABLEOK (WM_USER + 101)
37 #define BFFM_SETSELECTIONA (WM_USER + 102)
38 #define BFFM_SETSELECTIONW (WM_USER + 103)
39 #define BFFM_SETOKTEXT (WM_USER + 105)
40 #define BFFM_SETEXPANDED (WM_USER + 106)
41 #ifdef UNICODE
42 #define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTW
43 #define BFFM_SETSELECTION   BFFM_SETSELECTIONW
44 #define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW
45 #else
46 #define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTA
47 #define BFFM_SETSELECTION   BFFM_SETSELECTIONA
48 #define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA
49 #endif
50 #define DVASPECT_SHORTNAME 2
51 typedef enum tagSHARD {
52     SHARD_PIDL = 0x00000001,
53     SHARD_PATHA = 0x00000002,
54     SHARD_PATHW = 0x00000003,
55     SHARD_APPIDINFO = 0x00000004,
56     SHARD_APPIDINFOIDLIST = 0x00000005,
57     SHARD_LINK = 0x00000006,
58     SHARD_APPIDINFOLINK = 0x00000007,
59     SHARD_SHELLITEM = 0x00000008
60 } SHARD;
61 #ifdef UNICODE
62 #define SHARD_PATH SHARD_PATHW
63 #else
64 #define SHARD_PATH SHARD_PATHA
65 #endif
66 #define SHCNE_RENAMEITEM        1
67 #define SHCNE_CREATE    2
68 #define SHCNE_DELETE    4
69 #define SHCNE_MKDIR     8
70 #define SHCNE_RMDIR     16
71 #define SHCNE_MEDIAINSERTED     32
72 #define SHCNE_MEDIAREMOVED      64
73 #define SHCNE_DRIVEREMOVED      128
74 #define SHCNE_DRIVEADD  256
75 #define SHCNE_NETSHARE  512
76 #define SHCNE_NETUNSHARE        1024
77 #define SHCNE_ATTRIBUTES        2048
78 #define SHCNE_UPDATEDIR 4096
79 #define SHCNE_UPDATEITEM        8192
80 #define SHCNE_SERVERDISCONNECT  16384
81 #define SHCNE_UPDATEIMAGE       32768
82 #define SHCNE_DRIVEADDGUI       65536
83 #define SHCNE_RENAMEFOLDER      0x20000
84 #define SHCNE_FREESPACE 0x40000
85 #define SHCNE_ASSOCCHANGED      0x8000000
86 #define SHCNE_DISKEVENTS        0x2381F
87 #define SHCNE_GLOBALEVENTS      0xC0581E0
88 #define SHCNE_ALLEVENTS 0x7FFFFFFF
89 #define SHCNE_INTERRUPT 0x80000000
90 #define SHCNF_IDLIST    0
91 #define SHCNF_PATHA     1
92 #define SHCNF_PRINTERA  2
93 #define SHCNF_DWORD     3
94 #define SHCNF_PATHW     5
95 #define SHCNF_PRINTERW  6
96 #define SHCNF_TYPE      0xFF
97 #define SHCNF_FLUSH     0x1000
98 #define SHCNF_FLUSHNOWAIT       0x2000
99 #ifdef UNICODE
100 #define SHCNF_PATH      SHCNF_PATHW
101 #define SHCNF_PRINTER   SHCNF_PRINTERW
102 #else
103 #define SHCNF_PATH      SHCNF_PATHA
104 #define SHCNF_PRINTER   SHCNF_PRINTERA
105 #endif
106 #define SFGAO_CANCOPY   DROPEFFECT_COPY
107 #define SFGAO_CANMOVE   DROPEFFECT_MOVE
108 #define SFGAO_CANLINK   DROPEFFECT_LINK
109 #define SFGAO_CANRENAME         0x00000010L
110 #define SFGAO_CANDELETE         0x00000020L
111 #define SFGAO_HASPROPSHEET      0x00000040L
112 #define SFGAO_DROPTARGET        0x00000100L
113 #define SFGAO_CAPABILITYMASK    0x00000177L
114 #define SFGAO_ISSLOW            0x00004000L
115 #define SFGAO_GHOSTED           0x00008000L
116 #define SFGAO_LINK              0x00010000L
117 #define SFGAO_SHARE             0x00020000L
118 #define SFGAO_READONLY          0x00040000L
119 #define SFGAO_HIDDEN            0x00080000L
120 #define SFGAO_DISPLAYATTRMASK   (SFGAO_ISSLOW \
121                                  | SFGAO_GHOSTED \
122                                  | SFGAO_LINK \
123                                  | SFGAO_SHARE \
124                                  | SFGAO_READONLY \
125                                  | SFGAO_HIDDEN)
126 #define SFGAO_FILESYSANCESTOR   0x10000000L
127 #define SFGAO_FOLDER            0x20000000L
128 #define SFGAO_FILESYSTEM        0x40000000L
129 #define SFGAO_HASSUBFOLDER      0x80000000L
130 #define SFGAO_CONTENTSMASK      0x80000000L
131 #define SFGAO_VALIDATE          0x01000000L
132 #define SFGAO_REMOVABLE         0x02000000L
133 #define SFGAO_COMPRESSED        0x04000000L
134 #define STRRET_WSTR     0
135 #define STRRET_OFFSET   1
136 #define STRRET_CSTR     2
137 #define SHGDFIL_FINDDATA        1
138 #define SHGDFIL_NETRESOURCE     2
139 #define SHGDFIL_DESCRIPTIONID   3
140 #define SHDID_ROOT_REGITEM      1
141 #define SHDID_FS_FILE   2
142 #define SHDID_FS_DIRECTORY      3
143 #define SHDID_FS_OTHER  4
144 #define SHDID_COMPUTER_DRIVE35  5
145 #define SHDID_COMPUTER_DRIVE525 6
146 #define SHDID_COMPUTER_REMOVABLE        7
147 #define SHDID_COMPUTER_FIXED    8
148 #define SHDID_COMPUTER_NETDRIVE 9
149 #define SHDID_COMPUTER_CDROM    10
150 #define SHDID_COMPUTER_RAMDISK  11
151 #define SHDID_COMPUTER_OTHER    12
152 #define SHDID_NET_DOMAIN        13
153 #define SHDID_NET_SERVER        14
154 #define SHDID_NET_SHARE 15
155 #define SHDID_NET_RESTOFNET     16
156 #define SHDID_NET_OTHER 17
157 #ifndef REGSTR_PATH_EXPLORER
158 #define REGSTR_PATH_EXPLORER    TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
159 #endif
160 #define REGSTR_PATH_SPECIAL_FOLDERS     REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
161 #define CSIDL_DESKTOP   0
162 #define CSIDL_INTERNET  1
163 #define CSIDL_PROGRAMS  2
164 #define CSIDL_CONTROLS  3
165 #define CSIDL_PRINTERS  4
166 #define CSIDL_PERSONAL  5
167 #define CSIDL_FAVORITES 6
168 #define CSIDL_STARTUP   7
169 #define CSIDL_RECENT    8
170 #define CSIDL_SENDTO    9
171 #define CSIDL_BITBUCKET 10
172 #define CSIDL_STARTMENU 11
173 #define CSIDL_MYMUSIC   13
174 #define CSIDL_MYVIDEO   14
175 #define CSIDL_DESKTOPDIRECTORY  16
176 #define CSIDL_DRIVES    17
177 #define CSIDL_NETWORK   18
178 #define CSIDL_NETHOOD   19
179 #define CSIDL_FONTS     20
180 #define CSIDL_TEMPLATES 21
181 #define CSIDL_COMMON_STARTMENU  22
182 #define CSIDL_COMMON_PROGRAMS   23
183 #define CSIDL_COMMON_STARTUP    24
184 #define CSIDL_COMMON_DESKTOPDIRECTORY   25
185 #define CSIDL_APPDATA   26
186 #define CSIDL_PRINTHOOD 27
187 #define CSIDL_LOCAL_APPDATA 28
188 #define CSIDL_ALTSTARTUP    29
189 #define CSIDL_COMMON_ALTSTARTUP 30
190 #define CSIDL_COMMON_FAVORITES  31
191 #define CSIDL_INTERNET_CACHE   32
192 #define CSIDL_COOKIES   33
193 #define CSIDL_HISTORY   34
194 #define CSIDL_COMMON_APPDATA    35
195 #define CSIDL_WINDOWS   36
196 #define CSIDL_SYSTEM    37
197 #define CSIDL_PROGRAM_FILES     38
198 #define CSIDL_MYPICTURES        39
199 #define CSIDL_PROFILE   40
200 #define CSIDL_SYSTEMX86 41
201 #define CSIDL_PROGRAM_FILESX86  42
202 #define CSIDL_PROGRAM_FILES_COMMON      43
203 #define CSIDL_PROGRAM_FILES_COMMONX86   44
204 #define CSIDL_COMMON_TEMPLATES  45
205 #define CSIDL_COMMON_DOCUMENTS  46
206 #define CSIDL_COMMON_ADMINTOOLS 47
207 #define CSIDL_ADMINTOOLS        48
208 #define CSIDL_CONNECTIONS       49
209 #define CSIDL_COMMON_MUSIC      53
210 #define CSIDL_COMMON_PICTURES   54
211 #define CSIDL_COMMON_VIDEO      55
212 #define CSIDL_RESOURCES 56
213 #define CSIDL_RESOURCES_LOCALIZED       57
214 #define CSIDL_COMMON_OEM_LINKS  58
215 #define CSIDL_CDBURN_AREA       59
216 #define CSIDL_COMPUTERSNEARME   61
217 #define CSIDL_FLAG_DONT_VERIFY  0x4000
218 #define CSIDL_FLAG_CREATE       0x8000
219 #define CSIDL_FLAG_MASK 0xFF00
220 #define CFSTR_SHELLIDLIST       TEXT("Shell IDList Array")
221 #define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets")
222 #define CFSTR_NETRESOURCES      TEXT("Net Resource")
223 #define CFSTR_FILECONTENTS      TEXT("FileContents")
224 #define CFSTR_FILENAMEA         TEXT("FileName")
225 #define CFSTR_FILENAMEMAPA      TEXT("FileNameMap")
226 #define CFSTR_FILEDESCRIPTORA   TEXT("FileGroupDescriptor")
227 #define CFSTR_INETURLA          TEXT("UniformResourceLocator")
228 #define CFSTR_SHELLURL          CFSTR_INETURLA
229 #define CFSTR_FILENAMEW         TEXT("FileNameW")
230 #define CFSTR_FILENAMEMAPW      TEXT("FileNameMapW")
231 #define CFSTR_FILEDESCRIPTORW   TEXT("FileGroupDescriptorW")
232 #define CFSTR_INETURLW          TEXT("UniformResourceLocatorW")
233 #ifdef UNICODE
234 #define CFSTR_FILENAME          CFSTR_FILENAMEW
235 #define CFSTR_FILENAMEMAP       CFSTR_FILENAMEMAPW
236 #define CFSTR_FILEDESCRIPTOR    CFSTR_FILEDESCRIPTORW
237 #define CFSTR_INETURL           CFSTR_INETURLW
238 #else
239 #define CFSTR_FILENAME          CFSTR_FILENAMEA
240 #define CFSTR_FILENAMEMAP       CFSTR_FILENAMEMAPA
241 #define CFSTR_FILEDESCRIPTOR    CFSTR_FILEDESCRIPTORA
242 #define CFSTR_INETURL           CFSTR_INETURLA
243 #endif
244 #define CFSTR_PRINTERGROUP      TEXT("PrinterFriendlyName")
245 #define CFSTR_INDRAGLOOP        TEXT("InShellDragLoop")
246 #define CFSTR_PASTESUCCEEDED    TEXT("Paste Succeeded")
247 #define CFSTR_PERFORMEDDROPEFFECT       TEXT("Performed DropEffect")
248 #define CFSTR_PREFERREDDROPEFFECT       TEXT("Preferred DropEffect")
249 #define CMF_NORMAL      0
250 #define CMF_DEFAULTONLY 1
251 #define CMF_VERBSONLY   2
252 #define CMF_EXPLORE     4
253 #define CMF_NOVERBS     8
254 #define CMF_CANRENAME   16
255 #define CMF_NODEFAULT   32
256 #define CMF_INCLUDESTATIC       64
257 #define CMF_RESERVED    0xffff0000
258 #define GCS_VERBA        0
259 #define GCS_HELPTEXTA    1
260 #define GCS_VALIDATEA    2
261 #define GCS_VERBW        4
262 #define GCS_HELPTEXTW    5
263 #define GCS_VALIDATEW    6
264 #define GCS_UNICODE      4
265 #ifdef UNICODE
266 #define GCS_VERB        GCS_VERBW
267 #define GCS_HELPTEXT    GCS_HELPTEXTW
268 #define GCS_VALIDATE    GCS_VALIDATEW
269 #else
270 #define GCS_VERB        GCS_VERBA
271 #define GCS_HELPTEXT    GCS_HELPTEXTA
272 #define GCS_VALIDATE    GCS_VALIDATEA
273 #endif
274 #define CMDSTR_NEWFOLDERA       "NewFolder"
275 #define CMDSTR_VIEWLISTA        "ViewList"
276 #define CMDSTR_VIEWDETAILSA     "ViewDetails"
277 #define CMDSTR_NEWFOLDERW       L"NewFolder"
278 #define CMDSTR_VIEWLISTW        L"ViewList"
279 #define CMDSTR_VIEWDETAILSW     L"ViewDetails"
280 #ifdef UNICODE
281 #define CMDSTR_NEWFOLDER        CMDSTR_NEWFOLDERW
282 #define CMDSTR_VIEWLIST         CMDSTR_VIEWLISTW
283 #define CMDSTR_VIEWDETAILS      CMDSTR_VIEWDETAILSW
284 #else
285 #define CMDSTR_NEWFOLDER        CMDSTR_NEWFOLDER
286 #define CMDSTR_VIEWLIST         CMDSTR_VIEWLIST
287 #define CMDSTR_VIEWDETAILS      CMDSTR_VIEWDETAILS
288 #endif
289 #define CMIC_MASK_HOTKEY        SEE_MASK_HOTKEY
290 #define CMIC_MASK_ICON  SEE_MASK_ICON
291 #define CMIC_MASK_FLAG_NO_UI    SEE_MASK_FLAG_NO_UI
292 #define CMIC_MASK_MODAL 0x80000000
293 #define CMIC_VALID_SEE_FLAGS    SEE_VALID_CMIC_FLAGS
294 #define GIL_OPENICON    1
295 #define GIL_FORSHELL    2
296 #define GIL_SIMULATEDOC 1
297 #define GIL_PERINSTANCE 2
298 #define GIL_PERCLASS    4
299 #define GIL_NOTFILENAME 8
300 #define GIL_DONTCACHE   16
301 #define FVSIF_RECT      1
302 #define FVSIF_PINNED    2
303 #define FVSIF_NEWFAILED 0x8000000
304 #define FVSIF_NEWFILE   0x80000000
305 #define FVSIF_CANVIEWIT 0x40000000
306 #define CDBOSC_SETFOCUS 0
307 #define CDBOSC_KILLFOCUS        1
308 #define CDBOSC_SELCHANGE        2
309 #define CDBOSC_RENAME   3
310 #define FCIDM_SHVIEWFIRST       0
311 #define FCIDM_SHVIEWLAST        0x7fff
312 #define FCIDM_BROWSERFIRST      0xa000
313 #define FCIDM_BROWSERLAST       0xbf00
314 #define FCIDM_GLOBALFIRST       0x8000
315 #define FCIDM_GLOBALLAST        0x9fff
316 #define FCIDM_MENU_FILE FCIDM_GLOBALFIRST
317 #define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
318 #define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
319 #define FCIDM_MENU_VIEW_SEP_OPTIONS     (FCIDM_GLOBALFIRST+0x0081)
320 #define FCIDM_MENU_TOOLS        (FCIDM_GLOBALFIRST+0x00c0)
321 #define FCIDM_MENU_TOOLS_SEP_GOTO       (FCIDM_GLOBALFIRST+0x00c1)
322 #define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
323 #define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
324 #define FCIDM_MENU_EXPLORE      (FCIDM_GLOBALFIRST+0x0150)
325 #define FCIDM_MENU_FAVORITES    (FCIDM_GLOBALFIRST+0x0170)
326 #define FCIDM_TOOLBAR   FCIDM_BROWSERFIRST
327 #define FCIDM_STATUS    (FCIDM_BROWSERFIRST+1)
328 #define SBSP_DEFBROWSER 0
329 #define SBSP_SAMEBROWSER        1
330 #define SBSP_NEWBROWSER 2
331 #define SBSP_DEFMODE    0
332 #define SBSP_OPENMODE   16
333 #define SBSP_EXPLOREMODE        32
334 #define SBSP_ABSOLUTE   0
335 #define SBSP_RELATIVE   0x1000
336 #define SBSP_PARENT     0x2000
337 #define SBSP_INITIATEDBYHLINKFRAME      0x80000000
338 #define SBSP_REDIRECT   0x40000000
339 #define FCW_STATUS      1
340 #define FCW_TOOLBAR     2
341 #define FCW_TREE        3
342 #define FCT_MERGE       1
343 #define FCT_CONFIGABLE  2
344 #define FCT_ADDTOEND    4
345 #define SVSI_DESELECT   0
346 #define SVSI_SELECT     1
347 #define SVSI_EDIT       3
348 #define SVSI_DESELECTOTHERS     4
349 #define SVSI_ENSUREVISIBLE      8
350 #define SVSI_FOCUSED    16
351 #define SVGIO_BACKGROUND        0
352 #define SVGIO_SELECTION 1
353 #define SVGIO_ALLVIEW   2
354 #define SV2GV_CURRENTVIEW ((UINT)-1)
355 #define SV2GV_DEFAULTVIEW ((UINT)-2)
356
357 typedef ULONG SFGAOF;
358 typedef DWORD SHGDNF;
359
360 typedef struct _IDA {
361         UINT cidl;
362         UINT aoffset[1];
363 } CIDA,*LPIDA;
364 typedef struct _SHITEMID {
365         USHORT  cb;
366         BYTE    abID[1];
367 } SHITEMID, * LPSHITEMID;
368 typedef const SHITEMID *LPCSHITEMID;
369 typedef struct _ITEMIDLIST {
370         SHITEMID mkid;
371 } ITEMIDLIST,*LPITEMIDLIST;
372 typedef const ITEMIDLIST *LPCITEMIDLIST;
373 typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
374 typedef struct _browseinfoA {
375         HWND    hwndOwner;
376         LPCITEMIDLIST   pidlRoot;
377         LPSTR   pszDisplayName;
378         LPCSTR  lpszTitle;
379         UINT    ulFlags;
380         BFFCALLBACK     lpfn;
381         LPARAM  lParam;
382         int     iImage;
383 } BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
384 typedef struct _browseinfoW {
385         HWND    hwndOwner;
386         LPCITEMIDLIST   pidlRoot;
387         LPWSTR  pszDisplayName;
388         LPCWSTR lpszTitle;
389         UINT    ulFlags;
390         BFFCALLBACK     lpfn;
391         LPARAM  lParam;
392         int     iImage;
393 } BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
394 typedef struct _CMInvokeCommandInfo {
395         DWORD cbSize;
396         DWORD fMask;
397         HWND hwnd;
398         LPCSTR lpVerb;
399         LPCSTR lpParameters;
400         LPCSTR lpDirectory;
401         int nShow;
402         DWORD dwHotKey;
403         HANDLE hIcon;
404 } CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
405 typedef struct _DROPFILES {
406         DWORD pFiles;
407         POINT pt;
408         BOOL fNC;
409         BOOL fWide;
410 } DROPFILES,*LPDROPFILES;
411 typedef enum tagSHGDN {
412         SHGDN_NORMAL=0,
413         SHGDN_INFOLDER,
414         SHGDN_FOREDITING=0x1000,
415         SHGDN_INCLUDE_NONFILESYS=0x2000,
416         SHGDN_FORADDRESSBAR=0x4000,
417         SHGDN_FORPARSING=0x8000
418 } SHGNO;
419 typedef enum tagSHCONTF {
420         SHCONTF_FOLDERS = 32,
421         SHCONTF_NONFOLDERS = 64,
422         SHCONTF_INCLUDEHIDDEN = 128,
423         SHCONTF_INIT_ON_FIRST_NEXT = 256,
424         SHCONTF_NETPRINTERSRCH = 512,
425         SHCONTF_SHAREABLE = 1024,
426         SHCONTF_STORAGE = 2048
427 } SHCONTF;
428 typedef struct _STRRET {
429         UINT uType;
430         _ANONYMOUS_UNION union {
431                 LPWSTR pOleStr;
432                 UINT uOffset;
433                 char cStr[MAX_PATH];
434         } DUMMYUNIONNAME;
435 } STRRET,*LPSTRRET;
436 typedef enum {
437         FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16,
438         FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000
439 } FD_FLAGS;
440 typedef struct _FILEDESCRIPTORA {
441         DWORD dwFlags;
442         CLSID clsid;
443         SIZEL sizel;
444         POINTL pointl;
445         DWORD dwFileAttributes;
446         FILETIME ftCreationTime;
447         FILETIME ftLastAccessTime;
448         FILETIME ftLastWriteTime;
449         DWORD nFileSizeHigh;
450         DWORD nFileSizeLow;
451         CHAR cFileName[MAX_PATH];
452 } FILEDESCRIPTORA,*LPFILEDESCRIPTORA;
453 typedef struct _FILEDESCRIPTORW {
454         DWORD dwFlags;
455         CLSID clsid;
456         SIZEL sizel;
457         POINTL pointl;
458         DWORD dwFileAttributes;
459         FILETIME ftCreationTime;
460         FILETIME ftLastAccessTime;
461         FILETIME ftLastWriteTime;
462         DWORD nFileSizeHigh;
463         DWORD nFileSizeLow;
464         WCHAR cFileName[MAX_PATH];
465 } FILEDESCRIPTORW,*LPFILEDESCRIPTORW;
466 typedef struct _FILEGROUPDESCRIPTORA {
467         UINT cItems;
468         FILEDESCRIPTORA fgd[1];
469 } FILEGROUPDESCRIPTORA,*LPFILEGROUPDESCRIPTORA;
470 typedef struct _FILEGROUPDESCRIPTORW {
471         UINT cItems;
472         FILEDESCRIPTORW fgd[1];
473 } FILEGROUPDESCRIPTORW,*LPFILEGROUPDESCRIPTORW;
474 typedef enum {
475         SLR_NO_UI=1,
476         SLR_ANY_MATCH=2,
477         SLR_UPDATE=4,
478         SLR_NOUPDATE=8,
479         SLR_NOSEARCH=16,
480         SLR_NOTRACK=32,
481         SLR_NOLINKINFO=64,
482         SLR_INVOKE_MSI=128
483 } SLR_FLAGS;
484 typedef enum {
485         SLGP_SHORTPATH=1,
486         SLGP_UNCPRIORITY=2,
487         SLGP_RAWPATH=4
488 } SLGP_FLAGS;
489 typedef PBYTE LPVIEWSETTINGS;
490 typedef enum {
491         FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8,
492         FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128,
493         FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800,
494         FWF_SINGLECLICKACTIVATE=0x8000
495 } FOLDERFLAGS;
496 typedef enum {
497         FVM_ICON=1,
498         FVM_SMALLICON,
499         FVM_LIST,
500         FVM_DETAILS
501 } FOLDERVIEWMODE;
502 typedef struct {
503         UINT ViewMode;
504         UINT fFlags;
505 } FOLDERSETTINGS,*LPFOLDERSETTINGS;
506 typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
507 typedef struct {
508     DWORD cbSize;
509         HWND hwndOwner;
510         int iShow;
511         DWORD dwFlags;
512         RECT rect;
513         LPUNKNOWN punkRel;
514         OLECHAR strNewFile[MAX_PATH];
515 } FVSHOWINFO,*LPFVSHOWINFO;
516 typedef struct _NRESARRAY {
517         UINT cItems;
518         NETRESOURCE nr[1];
519 } NRESARRAY, *LPNRESARRAY;
520 enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY };
521 enum {
522         SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION,
523         SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS
524 };
525 typedef enum {
526         SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS,
527         SVUIA_INPLACEACTIVATE
528 } SVUIA_STATUS;
529 #if (_WIN32_IE >= 0x0500)
530 typedef struct tagEXTRASEARCH
531 {
532         GUID guidSearch;
533         WCHAR wszFriendlyName[80];
534         WCHAR wszUrl[2084];
535 } EXTRASEARCH, *LPEXTRASEARCH;
536 typedef DWORD SHCOLSTATEF;
537 typedef struct
538 {
539         GUID fmtid;
540         DWORD pid;
541 } SHCOLUMNID, *LPSHCOLUMNID;
542 typedef const SHCOLUMNID *LPCSHCOLUMNID;
543 typedef struct _SHELLDETAILS
544 {
545         int fmt;
546         int cxChar;
547         STRRET str;
548 } SHELLDETAILS, *LPSHELLDETAILS;
549 typedef struct
550 {
551         LPITEMIDLIST pidlTargetFolder;
552         WCHAR szTargetParsingName[MAX_PATH];
553         WCHAR szNetworkProvider[MAX_PATH];
554         DWORD dwAttributes;
555         int csidl;
556 } PERSIST_FOLDER_TARGET_INFO;
557
558 typedef enum {
559         SHGFP_TYPE_CURRENT = 0,
560         SHGFP_TYPE_DEFAULT = 1,
561 } SHGFP_TYPE;
562 #endif
563
564
565 DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
566 typedef IEnumIDList *LPENUMIDLIST;
567
568 #ifdef COBJMACROS
569 #define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
570 #define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T)
571 #define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T)
572 #define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c)
573 #define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a)
574 #define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T)
575 #define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a)
576 #endif
577
578 #define INTERFACE IObjMgr
579 DECLARE_INTERFACE_(IObjMgr, IUnknown)
580 {
581         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
582         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
583         STDMETHOD_(ULONG,Release)(THIS) PURE;
584         STDMETHOD(Append)(THIS_ IUnknown*) PURE;
585         STDMETHOD(Remove)(THIS_ IUnknown*) PURE;
586 };
587 #undef INTERFACE
588
589 #define INTERFACE IContextMenu
590 DECLARE_INTERFACE_(IContextMenu,IUnknown)
591 {
592         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
593         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
594         STDMETHOD_(ULONG,Release)(THIS) PURE;
595         STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
596         STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
597         STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
598 };
599 #undef INTERFACE
600 typedef IContextMenu *LPCONTEXTMENU;
601
602 #ifdef COBJMACROS
603 #define IContextMenu_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
604 #define IContextMenu_AddRef(T) (T)->lpVtbl->AddRef(T)
605 #define IContextMenu_Release(T) (T)->lpVtbl->Release(T)
606 #define IContextMenu_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
607 #define IContextMenu_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
608 #define IContextMenu_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
609 #endif
610
611 #define INTERFACE IContextMenu2
612 DECLARE_INTERFACE_(IContextMenu2,IContextMenu)
613 {
614         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
615         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
616         STDMETHOD_(ULONG,Release)(THIS) PURE;
617         STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
618         STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
619         STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
620         STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
621 };
622 #undef INTERFACE
623 typedef IContextMenu2 *LPCONTEXTMENU2;
624
625 #define INTERFACE IContextMenu3
626 DECLARE_INTERFACE_(IContextMenu3,IContextMenu2)
627 {
628  STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
629  STDMETHOD_(ULONG,AddRef)(THIS) PURE;
630  STDMETHOD_(ULONG,Release)(THIS) PURE;
631  STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
632  STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
633  STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
634  STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
635  STDMETHOD(HandleMenuMsg2)(THIS_ UINT,WPARAM,LPARAM,LRESULT*) PURE;
636 };
637 #undef INTERFACE
638 typedef IContextMenu3 *LPCONTEXTMENU3;
639
640 #if (_WIN32_IE >= 0x0500)
641 #pragma pack(push,8)
642 typedef struct {
643         ULONG dwFlags;
644         ULONG dwReserved;
645         WCHAR wszFolder[MAX_PATH];
646 } SHCOLUMNINIT,*LPSHCOLUMNINIT;
647 typedef const SHCOLUMNINIT* LPCSHCOLUMNINIT;
648 typedef struct {
649         ULONG dwFlags;
650         DWORD dwFileAttributes;
651         ULONG dwReserved;
652         WCHAR *pwszExt;
653         WCHAR wszFile[MAX_PATH];
654 } SHCOLUMNDATA,*LPSHCOLUMNDATA;
655 typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA;
656 #pragma pack(pop)
657
658 #define MAX_COLUMN_NAME_LEN 80
659 #define MAX_COLUMN_DESC_LEN 128
660
661 #pragma pack(push,1)
662 typedef struct {
663         SHCOLUMNID scid;
664         VARTYPE vt;
665         DWORD fmt;
666         UINT cChars;
667         DWORD csFlags;
668         WCHAR wszTitle[MAX_COLUMN_NAME_LEN];
669         WCHAR wszDescription[MAX_COLUMN_DESC_LEN];
670 } SHCOLUMNINFO,*LPSHCOLUMNINFO;
671 typedef const SHCOLUMNINFO* LPCSHCOLUMNINFO;
672 #pragma pack(pop)
673
674 typedef enum {
675         SHCOLSTATE_TYPE_STR = 0x00000001,
676         SHCOLSTATE_TYPE_INT = 0x00000002,
677         SHCOLSTATE_TYPE_DATE = 0x00000003,
678         SHCOLSTATE_TYPEMASK = 0x0000000f,
679         SHCOLSTATE_ONBYDEFAULT = 0x00000010,
680         SHCOLSTATE_SLOW = 0x00000020,
681         SHCOLSTATE_EXTENDED = 0x00000040,
682         SHCOLSTATE_SECONDARYUI = 0x00000080,
683         SHCOLSTATE_HIDDEN = 0x00000100,
684         SHCOLSTATE_PREFER_VARCMP = 0x00000200
685 } SHCOLSTATE;
686
687 #ifdef COBJMACROS
688 #define IContextMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
689 #define IContextMenu2_AddRef(T) (T)->lpVtbl->AddRef(T)
690 #define IContextMenu2_Release(T) (T)->lpVtbl->Release(T)
691 #define IContextMenu2_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
692 #define IContextMenu2_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
693 #define IContextMenu2_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
694 #define IContextMenu2_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c)
695 #endif
696
697 #ifdef COBJMACROS
698 #define IContextMenu3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
699 #define IContextMenu3_AddRef(T) (T)->lpVtbl->AddRef(T)
700 #define IContextMenu3_Release(T) (T)->lpVtbl->Release(T)
701 #define IContextMenu3_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
702 #define IContextMenu3_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
703 #define IContextMenu3_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
704 #define IContextMenu3_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c)
705 #define IContextMenu3_HandleMenuMsg2(T,a,b,c,d) (T)->lpVtbl->HandleMenuMsg(T,a,b,c,d)
706 #endif
707
708 #define INTERFACE IColumnProvider
709 DECLARE_INTERFACE_(IColumnProvider,IUnknown)
710 {
711         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
712         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
713         STDMETHOD_(ULONG,Release)(THIS) PURE;
714         STDMETHOD(Initialize)(THIS_ LPCSHCOLUMNINIT) PURE;
715         STDMETHOD(GetColumnInfo)(THIS_ DWORD,SHCOLUMNINFO*) PURE;
716         STDMETHOD(GetItemData)(THIS_ LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*) PURE;
717 };
718 #undef INTERFACE
719 #endif  /* _WIN32_IE >= 0x0500 */
720
721 #define INTERFACE IQueryInfo
722 DECLARE_INTERFACE_(IQueryInfo,IUnknown)
723 {
724         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
725         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
726         STDMETHOD_(ULONG,Release)(THIS) PURE;
727         STDMETHOD(GetInfoTip)(THIS_ DWORD,WCHAR**) PURE;
728         STDMETHOD(GetInfoFlags)(THIS_ DWORD*) PURE;
729 };
730 #undef INTERFACE
731
732 #define INTERFACE IShellExtInit
733 DECLARE_INTERFACE_(IShellExtInit, IUnknown)
734 {
735         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
736         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
737         STDMETHOD_(ULONG,Release)(THIS) PURE;
738         STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE;
739 };
740 #undef INTERFACE
741 typedef IShellExtInit *LPSHELLEXTINIT;
742
743 #define INTERFACE IShellPropSheetExt
744 DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
745 {
746         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
747         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
748         STDMETHOD_(ULONG,Release)(THIS) PURE;
749         STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE;
750         STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
751 };
752 #undef INTERFACE
753 typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
754
755 #define INTERFACE IExtractIconA
756 DECLARE_INTERFACE_(IExtractIconA, IUnknown)
757 {
758         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
759         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
760         STDMETHOD_(ULONG,Release)(THIS) PURE;
761         STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
762         STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
763 };
764 #undef INTERFACE
765 typedef IExtractIconA *LPEXTRACTICONA;
766
767 #ifdef COBJMACROS
768 #define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
769 #define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T)
770 #define IExtractIconA_Release(T) (T)->lpVtbl->Release(T)
771 #define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
772 #define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
773 #endif
774
775 #define INTERFACE IExtractIconW
776 DECLARE_INTERFACE_(IExtractIconW, IUnknown)
777 {
778         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
779         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
780         STDMETHOD_(ULONG,Release)(THIS) PURE;
781         STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE;
782         STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE;
783 };
784 #undef INTERFACE
785 typedef IExtractIconW *LPEXTRACTICONW;
786
787 #ifdef COBJMACROS
788 #define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
789 #define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T)
790 #define IExtractIconW_Release(T) (T)->lpVtbl->Release(T)
791 #define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
792 #define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
793 #endif
794
795 #ifdef UNICODE
796 #define IExtractIcon IExtractIconW
797 #define LPEXTRACTICON LPEXTRACTICONW
798 #else
799 #define IExtractIcon IExtractIconA
800 #define LPEXTRACTICON LPEXTRACTICONA
801 #endif
802
803 #define INTERFACE IShellLinkA
804 DECLARE_INTERFACE_(IShellLinkA, IUnknown)
805 {
806         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
807         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
808         STDMETHOD_(ULONG,Release)(THIS) PURE;
809         STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE;
810         STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
811         STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
812         STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE;
813         STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE;
814         STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE;
815         STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE;
816         STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE;
817         STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE;
818         STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
819         STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
820         STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
821         STDMETHOD(SetShowCmd)(THIS_ int) PURE;
822         STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE;
823         STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE;
824         STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE;
825         STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
826         STDMETHOD(SetPath)(THIS_ LPCSTR) PURE;
827 };
828 #undef INTERFACE
829
830 #ifdef COBJMACROS
831 #define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
832 #define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T)
833 #define IShellLinkA_Release(T) (T)->lpVtbl->Release(T)
834 #define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
835 #define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
836 #define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
837 #define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
838 #define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
839 #define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
840 #define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
841 #define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
842 #define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
843 #define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
844 #define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
845 #define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
846 #define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
847 #define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
848 #define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
849 #define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
850 #define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
851 #define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
852 #endif
853
854 #define INTERFACE IShellLinkW
855 DECLARE_INTERFACE_(IShellLinkW, IUnknown)
856 {
857         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
858         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
859         STDMETHOD_(ULONG,Release)(THIS) PURE;
860         STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE;
861         STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
862         STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
863         STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE;
864         STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE;
865         STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE;
866         STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE;
867         STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE;
868         STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE;
869         STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
870         STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
871         STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
872         STDMETHOD(SetShowCmd)(THIS_ int) PURE;
873         STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE;
874         STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE;
875         STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE;
876         STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
877         STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE;
878 };
879 #undef INTERFACE
880
881 #ifdef COBJMACROS
882 #define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
883 #define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T)
884 #define IShellLinkW_Release(T) (T)->lpVtbl->Release(T)
885 #define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
886 #define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
887 #define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
888 #define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
889 #define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
890 #define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
891 #define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
892 #define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
893 #define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
894 #define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
895 #define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
896 #define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
897 #define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
898 #define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
899 #define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
900 #define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
901 #define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
902 #define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
903 #endif
904
905 #define INTERFACE IShellFolder
906 DECLARE_INTERFACE_(IShellFolder, IUnknown)
907 {
908         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
909         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
910         STDMETHOD_(ULONG,Release)(THIS) PURE;
911         STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
912         STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
913         STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
914         STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
915         STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
916         STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
917         STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
918         STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
919         STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
920         STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
921 };
922 #undef INTERFACE
923 typedef IShellFolder *LPSHELLFOLDER;
924
925 #ifdef COBJMACROS
926 #define IShellFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
927 #define IShellFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
928 #define IShellFolder_Release(T) (T)->lpVtbl->Release(T)
929 #define IShellFolder_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
930 #define IShellFolder_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
931 #define IShellFolder_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
932 #define IShellFolder_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
933 #define IShellFolder_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
934 #define IShellFolder_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b)
935 #define IShellFolder_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
936 #define IShellFolder_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
937 #define IShellFolder_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
938 #define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
939 #endif
940
941 #if (_WIN32_IE >= 0x0500)
942
943 DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH);
944 typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
945
946 #define INTERFACE IShellFolder2
947 DECLARE_INTERFACE_(IShellFolder2, IShellFolder)
948 {
949         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
950         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
951         STDMETHOD_(ULONG,Release)(THIS) PURE;
952         STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
953         STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
954         STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
955         STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
956         STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
957         STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
958         STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
959         STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
960         STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
961         STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
962         STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE;
963         STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE;
964         STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE;
965         STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE;
966         STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE;
967         STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE;
968         STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE;
969 };
970 #undef INTERFACE
971 typedef IShellFolder2 *LPSHELLFOLDER2;
972
973 #ifdef COBJMACROS
974 #define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
975 #define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
976 #define IShellFolder2_Release(T) (T)->lpVtbl->Release(T)
977 #define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
978 #define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
979 #define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
980 #define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
981 #define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
982 #define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b)
983 #define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
984 #define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
985 #define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
986 #define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
987 #define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a)
988 #define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a)
989 #define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c)
990 #define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b)
991 #define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c)
992 #define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c)
993 #define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b)
994 #endif
995
996 #endif /* _WIN32_IE >= 0x0500 */
997 #define INTERFACE ICopyHook
998 DECLARE_INTERFACE_(ICopyHook, IUnknown)
999 {
1000         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1001         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1002         STDMETHOD_(ULONG,Release)(THIS) PURE;
1003         STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE;
1004 };
1005 #undef INTERFACE
1006 typedef ICopyHook *LPCOPYHOOK;
1007
1008 #define INTERFACE IFileViewerSite
1009 DECLARE_INTERFACE(IFileViewerSite)
1010 {
1011         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1012         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1013         STDMETHOD_(ULONG,Release)(THIS) PURE;
1014         STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE;
1015         STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE;
1016 };
1017 #undef INTERFACE
1018 typedef IFileViewerSite *LPFILEVIEWERSITE;
1019
1020 #define INTERFACE IFileViewer
1021 DECLARE_INTERFACE(IFileViewer)
1022 {
1023         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1024         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1025         STDMETHOD_(ULONG,Release)(THIS) PURE;
1026         STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE;
1027         STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE;
1028         STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE;
1029 };
1030 #undef INTERFACE
1031 typedef IFileViewer *LPFILEVIEWER;
1032
1033 #define INTERFACE IFileSystemBindData
1034 DECLARE_INTERFACE_(IFileSystemBindData, IUnknown)
1035 {
1036         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1037         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1038         STDMETHOD_(ULONG,Release)(THIS) PURE;
1039         STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE;
1040         STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE;
1041 };
1042 #undef INTERFACE
1043
1044 #define INTERFACE IPersistFolder
1045 DECLARE_INTERFACE_(IPersistFolder,IPersist)
1046 {
1047         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1048         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1049         STDMETHOD_(ULONG,Release)(THIS) PURE;
1050         STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
1051         STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
1052 };
1053 #undef INTERFACE
1054 typedef IPersistFolder *LPPERSISTFOLDER;
1055
1056 #ifdef COBJMACROS
1057 #define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1058 #define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
1059 #define IPersistFolder_Release(T) (T)->lpVtbl->Release(T)
1060 #define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
1061 #define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
1062 #endif
1063
1064 #if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500)
1065
1066 #define INTERFACE IPersistFolder2
1067 DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder)
1068 {
1069         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1070         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1071         STDMETHOD_(ULONG,Release)(THIS) PURE;
1072         STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
1073         STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
1074         STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
1075 };
1076 #undef INTERFACE
1077 typedef IPersistFolder2 *LPPERSISTFOLDER2;
1078
1079 #ifdef COBJMACROS
1080 #define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1081 #define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
1082 #define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T)
1083 #define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
1084 #define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
1085 #define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
1086 #endif
1087
1088 #endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */
1089
1090 #if (_WIN32_IE >= 0x0500)
1091
1092 #define INTERFACE IPersistFolder3
1093 DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2)
1094 {
1095         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1096         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1097         STDMETHOD_(ULONG,Release)(THIS) PURE;
1098         STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
1099         STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
1100         STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
1101         STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE;
1102         STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE;
1103 };
1104 #undef INTERFACE
1105 typedef IPersistFolder3 *LPPERSISTFOLDER3;
1106
1107 #ifdef COBJMACROS
1108 #define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1109 #define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T)
1110 #define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T)
1111 #define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
1112 #define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
1113 #define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
1114 #define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c)
1115 #define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a)
1116 #endif
1117
1118 #endif /* _WIN32_IE >= 0x0500 */
1119
1120 typedef _COM_interface IShellBrowser *LPSHELLBROWSER;
1121 typedef _COM_interface IShellView *LPSHELLVIEW;
1122
1123 #define INTERFACE IShellBrowser
1124 DECLARE_INTERFACE_(IShellBrowser,IOleWindow)
1125 {
1126         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1127         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1128         STDMETHOD_(ULONG,Release)(THIS) PURE;
1129         STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
1130         STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
1131         STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
1132         STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE;
1133         STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE;
1134         STDMETHOD(SetStatusTextSB)(THIS_ LPCOLESTR) PURE;
1135         STDMETHOD(EnableModelessSB)(THIS_ BOOL) PURE;
1136         STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE;
1137         STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE;
1138         STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE;
1139         STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE;
1140         STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE;
1141         STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE;
1142         STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE;
1143         STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE;
1144 };
1145 #undef INTERFACE
1146
1147 #ifdef COBJMACROS
1148 #define IShellBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1149 #define IShellBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
1150 #define IShellBrowser_Release(T) (T)->lpVtbl->Release(T)
1151 #define IShellBrowser_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
1152 #define IShellBrowser_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
1153 #define IShellBrowser_InsertMenusSB(T,a,b) (T)->lpVtbl->InsertMenusSB(T,a,b)
1154 #define IShellBrowser_SetMenuSB(T,a,b,c) (T)->lpVtbl->SetMenuSB(T,a,b,c)
1155 #define IShellBrowser_RemoveMenusSB(T,a) (T)->lpVtbl->RemoveMenusSB(T,a)
1156 #define IShellBrowser_SetStatusTextSB(T,a) (T)->lpVtbl->SetStatusTextSB(T,a)
1157 #define IShellBrowser_EnableModelessSB(T,a) (T)->lpVtbl->EnableModelessSB(T,a)
1158 #define IShellBrowser_TranslateAcceleratorSB(T,a,b) (T)->lpVtbl->TranslateAcceleratorSB(T,a,b)
1159 #define IShellBrowser_BrowseObject(T,a,b) (T)->lpVtbl->BrowseObject(T,a,b)
1160 #define IShellBrowser_GetViewStateStream(T,a,b) (T)->lpVtbl->GetViewStateStream(T,a,b)
1161 #define IShellBrowser_GetControlWindow(T,a,b) (T)->lpVtbl->GetControlWindow(T,a,b)
1162 #define IShellBrowser_SendControlMsg(T,a,b,c,d,e) (T)->lpVtbl->SendControlMsg(T,a,b,c,d,e)
1163 #define IShellBrowser_QueryActiveShellView(T,a) (T)->lpVtbl->QueryActiveShellView(T,a)
1164 #define IShellBrowser_OnViewWindowActive(T,a) (T)->lpVtbl->OnViewWindowActive(T,a)
1165 #define IShellBrowser_SetToolbarItems(T,a,b,c) (T)->lpVtbl->SetToolbarItems(T,a,b,c)
1166 #endif
1167
1168 #define INTERFACE IShellView
1169 DECLARE_INTERFACE_(IShellView,IOleWindow)
1170 {
1171         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1172         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1173         STDMETHOD_(ULONG,Release)(THIS) PURE;
1174         STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
1175         STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
1176         STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
1177 #ifdef _FIX_ENABLEMODELESS_CONFLICT
1178         STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
1179 #else
1180         STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
1181 #endif
1182         STDMETHOD(UIActivate)(THIS_ UINT) PURE;
1183         STDMETHOD(Refresh) (THIS) PURE;
1184         STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
1185         STDMETHOD(DestroyViewWindow)(THIS) PURE;
1186         STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
1187         STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
1188         STDMETHOD(SaveViewState)(THIS) PURE;
1189         STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
1190         STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
1191 };
1192 #undef INTERFACE
1193
1194 #ifdef COBJMACROS
1195 #define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1196 #define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T)
1197 #define IShellView_Release(T) (T)->lpVtbl->Release(T)
1198 #define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
1199 #define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
1200 #define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a)
1201 #ifdef _FIX_ENABLEMODELESS_CONFLICT
1202 #define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a)
1203 #else
1204 #define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a)
1205 #endif
1206 #define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a)
1207 #define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T)
1208 #define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e)
1209 #define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T)
1210 #define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a)
1211 #define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c)
1212 #define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T)
1213 #define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b)
1214 #define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c)
1215 #endif
1216
1217 #define INTERFACE ICommDlgBrowser
1218 DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
1219 {
1220         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1221         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1222         STDMETHOD_(ULONG,Release)(THIS) PURE;
1223         STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE;
1224         STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE;
1225         STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE;
1226 };
1227 #undef INTERFACE
1228 typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
1229
1230 #ifdef COBJMACROS
1231 #define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
1232 #define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
1233 #define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T)
1234 #define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a)
1235 #define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b)
1236 #define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b)
1237 #endif
1238
1239 typedef GUID SHELLVIEWID;
1240 typedef struct _SV2CVW2_PARAMS {
1241         DWORD cbSize;
1242         IShellView *psvPrev;
1243         FOLDERSETTINGS const *pfs;
1244         IShellBrowser *psbOwner;
1245         RECT *prcView;
1246         SHELLVIEWID const *pvid;
1247         HWND hwndView;
1248 } SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS;
1249 #define INTERFACE IShellView2
1250 DECLARE_INTERFACE_(IShellView2,IShellView)
1251 {
1252
1253         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1254         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1255         STDMETHOD_(ULONG,Release)(THIS) PURE;
1256         STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
1257         STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
1258         STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
1259 #ifdef _FIX_ENABLEMODELESS_CONFLICT
1260         STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
1261 #else
1262         STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
1263 #endif
1264         STDMETHOD(UIActivate)(THIS_ UINT) PURE;
1265         STDMETHOD(Refresh) (THIS) PURE;
1266         STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
1267         STDMETHOD(DestroyViewWindow)(THIS) PURE;
1268         STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
1269         STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
1270         STDMETHOD(SaveViewState)(THIS) PURE;
1271         STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
1272         STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
1273         STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
1274         STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
1275 };
1276 #undef INTERFACE
1277
1278 #define INTERFACE IShellExecuteHookA
1279 DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)
1280 {
1281         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1282         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1283         STDMETHOD_(ULONG,Release)(THIS) PURE;
1284         STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE;
1285 };
1286 #undef INTERFACE
1287
1288 #define INTERFACE IShellExecuteHookW
1289 DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)
1290 {
1291         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1292         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1293         STDMETHOD_(ULONG,Release)(THIS) PURE;
1294         STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE;
1295 };
1296 #undef INTERFACE
1297
1298 #define INTERFACE IShellIcon
1299 DECLARE_INTERFACE_(IShellIcon,IUnknown)
1300 {
1301         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1302         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1303         STDMETHOD_(ULONG,Release)(THIS) PURE;
1304         STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE;
1305 };
1306 #undef INTERFACE
1307 typedef IShellIcon *LPSHELLICON;
1308
1309 typedef struct {
1310         BOOL fShowAllObjects : 1;
1311         BOOL fShowExtensions : 1;
1312         BOOL fNoConfirmRecycle : 1;
1313         BOOL fShowSysFiles : 1;
1314         BOOL fShowCompColor : 1;
1315         BOOL fDoubleClickInWebView : 1;
1316         BOOL fDesktopHTML : 1;
1317         BOOL fWin95Classic : 1;
1318         BOOL fDontPrettyPath : 1;
1319         BOOL fShowAttribCol : 1;
1320         BOOL fMapNetDrvBtn : 1;
1321         BOOL fShowInfoTip : 1;
1322         BOOL fHideIcons : 1;
1323         UINT fRestFlags : 3;
1324 } SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
1325
1326 #define SSF_SHOWALLOBJECTS 0x1
1327 #define SSF_SHOWEXTENSIONS 0x2
1328 #define SSF_SHOWCOMPCOLOR 0x8
1329 #define SSF_SHOWSYSFILES 0x20
1330 #define SSF_DOUBLECLICKINWEBVIEW 0x80
1331 #define SSF_SHOWATTRIBCOL 0x100
1332 #define SSF_DESKTOPHTML 0x200
1333 #define SSF_WIN95CLASSIC 0x400
1334 #define SSF_DONTPRETTYPATH 0x800
1335 #define SSF_MAPNETDRVBUTTON 0x1000
1336 #define SSF_SHOWINFOTIP 0x2000
1337 #define SSF_HIDEICONS 0x4000
1338 #define SSF_NOCONFIRMRECYCLE 0x8000
1339
1340 #define INTERFACE IShellIconOverlayIdentifier
1341 DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown)
1342 {
1343         STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1344         STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1345         STDMETHOD_(ULONG,Release)(THIS) PURE;
1346         STDMETHOD(IsMemberOf)(THIS_ LPCWSTR,DWORD) PURE;
1347         STDMETHOD(GetOverlayInfo)(THIS_ LPWSTR,int,int*,DWORD*) PURE;
1348         STDMETHOD(GetPriority)(THIS_ int*) PURE;
1349 };
1350 #undef INTERFACE
1351
1352 #if (_WIN32_WINNT >= 0x0501) /* WXP */
1353 typedef _COM_interface IFolderView *LPFOLDERVIEW;
1354
1355 #define INTERFACE IFolderView
1356 DECLARE_INTERFACE_(IFolderView,IUnknown)
1357 {
1358    STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
1359    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
1360    STDMETHOD_(ULONG,Release)(THIS) PURE;
1361    STDMETHOD(GetAutoArrange)(THIS) PURE;
1362    STDMETHOD(GetCurrentViewMode)(THIS_ UINT) PURE;
1363    STDMETHOD(GetDefaultSpacing)(THIS_ POINT*) PURE;
1364    STDMETHOD(GetFocusedItem)(THIS_ int*) PURE;
1365    STDMETHOD(GetFolder)(THIS_ REFIID,PVOID*) PURE;
1366    STDMETHOD(GetItemPosition)(THIS_ LPCITEMIDLIST,POINT*) PURE;
1367    STDMETHOD(GetSelectionMarkedItem)(THIS_ int*) PURE;
1368    STDMETHOD(GetSpacing)(THIS_ POINT*) PURE;
1369    STDMETHOD(Item)(THIS_ int,LPITEMIDLIST*) PURE;
1370    STDMETHOD(ItemCount)(THIS_ UINT,int*) PURE;
1371    STDMETHOD(Items)(THIS_ UINT,REFIID,PVOID*) PURE;
1372    STDMETHOD(SelectAndPositionItems)(THIS_ UINT,LPCITEMIDLIST*,POINT*,DWORD) PURE;
1373    STDMETHOD(SelectItem)(THIS_ int,DWORD) PURE;
1374    STDMETHOD(SetCurrentViewMode)(THIS_ UINT) PURE;
1375 };
1376 #undef INTERFACE
1377 #endif /* _WIN32_WINNT >= 0x0501 */
1378
1379 #define ISIOI_ICONFILE 0x00000001
1380 #define ISIOI_ICONINDEX 0x00000002
1381
1382 #if (_WIN32_WINNT >= 0x0500) /* W2K */
1383 typedef struct {
1384         BOOL fShowAllObjects : 1;
1385         BOOL fShowExtensions : 1;
1386         BOOL fNoConfirmRecycle : 1;
1387         BOOL fShowSysFiles : 1;
1388         BOOL fShowCompColor : 1;
1389         BOOL fDoubleClickInWebView : 1;
1390         BOOL fDesktopHTML : 1;
1391         BOOL fWin95Classic : 1;
1392         BOOL fDontPrettyPath : 1;
1393         BOOL fShowAttribCol : 1;
1394         BOOL fMapNetDrvBtn : 1;
1395         BOOL fShowInfoTip : 1;
1396         BOOL fHideIcons : 1;
1397         BOOL fWebView : 1;
1398         BOOL fFilter : 1;
1399         BOOL fShowSuperHidden : 1;
1400         BOOL fNoNetCrawling : 1;
1401         DWORD dwWin95Unused;
1402         UINT uWin95Unused;
1403         LONG lParamSort;
1404         int iSortDirection;
1405         UINT version;
1406         UINT uNotUsed;
1407         BOOL fSepProcess : 1;
1408         BOOL fStartPanelOn : 1;
1409         BOOL fShowStartPage : 1;
1410         UINT fSpareFlags : 13;
1411 } SHELLSTATE, *LPSHELLSTATE;
1412 #endif /* _WIN32_WINNT >= 0x0500 */
1413
1414 #if (_WIN32_IE >= 0x0500)
1415 #pragma pack(push,8)
1416 typedef struct
1417 {
1418         SIZE sizeDragImage;
1419         POINT ptOffset;
1420         HBITMAP hbmpDragImage;
1421         COLORREF crColorKey;
1422 } SHDRAGIMAGE, *LPSHDRAGIMAGE;
1423 #pragma pack(pop)
1424
1425 #define INTERFACE IDragSourceHelper
1426 DECLARE_INTERFACE_(IDragSourceHelper, IUnknown)
1427 {
1428         STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
1429         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1430         STDMETHOD_(ULONG, Release) (THIS) PURE;
1431         STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE;
1432         STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE;
1433 };
1434 #undef INTERFACE
1435
1436 #define INTERFACE IDropTargetHelper
1437 DECLARE_INTERFACE_(IDropTargetHelper, IUnknown)
1438 {
1439         STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE;
1440         STDMETHOD_(ULONG, AddRef) (THIS) PURE;
1441         STDMETHOD_(ULONG, Release) (THIS) PURE;
1442         STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
1443         STDMETHOD (DragLeave)(THIS) PURE;
1444         STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE;
1445         STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
1446         STDMETHOD (Show)(THIS_ BOOL fShow) PURE;
1447 };
1448 #undef INTERFACE
1449 #endif /* _WIN32_IE >= 0x0500 */
1450
1451 #if (_WIN32_WINNT >= 0x0500)
1452 BOOL WINAPI PathResolve(LPWSTR, LPCWSTR*, UINT);
1453 #define PRF_VERIFYEXISTS            0x0001
1454 #define PRF_TRYPROGRAMEXTENSIONS    (0x0002 | PRF_VERIFYEXISTS)
1455 #define PRF_FIRSTDIRDEF             0x0004
1456 #define PRF_DONTFINDLNK             0x0008
1457 #define IDO_SHGIOI_SHARE            0x0FFFFFFF
1458 #define IDO_SHGIOI_LINK             0x0FFFFFFE
1459 #define IDO_SHGIOI_SLOWFILE         0x0FFFFFFD
1460 #define IDO_SHGIOI_DEFAULT          0x0FFFFFFC
1461 #endif
1462
1463 void WINAPI SHAddToRecentDocs(UINT,PCVOID);
1464 LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA);
1465 LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW);
1466 void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
1467 HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
1468 HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
1469 HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*);
1470 HRESULT WINAPI SHGetInstanceExplorer(IUnknown **);
1471 HRESULT WINAPI SHGetMalloc(LPMALLOC*);
1472 BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
1473 BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
1474 HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
1475 HRESULT WINAPI SHLoadInProc(REFCLSID);
1476 #if (_WIN32_IE >= 0x0400)
1477 BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL);
1478 BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL);
1479 #endif
1480 /* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */
1481 HRESULT WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR);
1482 HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR);
1483 #if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */
1484 HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*);
1485 #endif
1486 #if (_WIN32_WINNT >= 0x0500)
1487 INT WINAPI SHGetIconOverlayIndexW(LPCWSTR pszIconPath, int iIconIndex);
1488 INT WINAPI SHGetIconOverlayIndexA(LPCSTR pszIconPath, int iIconIndex);
1489 INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES);
1490 INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES);
1491 HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*);
1492 #endif
1493 #if (_WIN32_WINNT >= 0x0501) /* XP */
1494 HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
1495 HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
1496 HRESULT WINAPI SHParseDisplayName(LPCWSTR,IBindCtx*,LPITEMIDLIST,SFGAOF,SFGAOF*);
1497 #endif
1498 void WINAPI SHGetSettings(LPSHELLFLAGSTATE,DWORD);
1499 #if (_WIN32_WINNT >= 0x0500) /* W2K */
1500 void WINAPI SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL);
1501 #endif
1502
1503 #if (_WIN32_WINNT >= 0x0500) /* W2K */
1504 BOOL WINAPI ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST);
1505 BOOL WINAPI ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL);
1506 BOOL WINAPI ILRemoveLastID(LPITEMIDLIST);
1507 HRESULT WINAPI ILLoadFromStream(IStream*, LPITEMIDLIST*);
1508 HRESULT WINAPI ILSaveToStream(IStream*, LPCITEMIDLIST);
1509 LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL);
1510 LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
1511 LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
1512 LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST, LPCITEMIDLIST);
1513 LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST);
1514 LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
1515 LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
1516 UINT WINAPI ILGetSize(LPCITEMIDLIST);
1517 void WINAPI ILFree(LPITEMIDLIST);
1518
1519 HRESULT WINAPI SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**);
1520 #endif
1521
1522 #ifdef UNICODE
1523 typedef IShellExecuteHookW IShellExecuteHook;
1524 typedef IShellLinkW IShellLink;
1525 typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
1526 #define SHBrowseForFolder SHBrowseForFolderW
1527 #define SHGetDataFromIDList SHGetDataFromIDListW
1528 #define SHGetPathFromIDList SHGetPathFromIDListW
1529 #if (_WIN32_IE >= 0x0400)
1530 #define SHGetSpecialFolderPath SHGetSpecialFolderPathW
1531 #endif
1532 #define SHGetFolderPath SHGetFolderPathW
1533 #if (_WIN32_WINNT >= 0x0500)
1534 #define SHGetIconOverlayIndex SHGetIconOverlayIndexW
1535 #define SHCreateDirectoryEx SHCreateDirectoryExW
1536 #endif
1537 #if (_WIN32_WINNT >= 0x0501)
1538 #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW
1539 #endif
1540 #define FILEDESCRIPTOR FILEDESCRIPTORW
1541 #define LPFILEDESCRIPTOR LPFILEDESCRIPTORW
1542 #define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORW
1543 #define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORW
1544
1545 #else
1546 typedef IShellExecuteHookA IShellExecuteHook;
1547 typedef IShellLinkA IShellLink;
1548 typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
1549 #define SHBrowseForFolder SHBrowseForFolderA
1550 #define SHGetDataFromIDList SHGetDataFromIDListA
1551 #define SHGetPathFromIDList SHGetPathFromIDListA
1552 #if (_WIN32_IE >= 0x0400)
1553 #define SHGetSpecialFolderPath SHGetSpecialFolderPathA
1554 #endif
1555 #define SHGetFolderPath SHGetFolderPathA
1556 #if (_WIN32_WINNT >= 0x0500)
1557 #define SHGetIconOverlayIndex SHGetIconOverlayIndexA
1558 #define SHCreateDirectoryEx SHCreateDirectoryExA
1559 #endif
1560 #if (_WIN32_WINNT >= 0x0501)
1561 #define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA
1562 #endif
1563 #define FILEDESCRIPTOR FILEDESCRIPTORA
1564 #define LPFILEDESCRIPTOR LPFILEDESCRIPTORA
1565 #define FILEGROUPDESCRIPTOR FILEGROUPDESCRIPTORA
1566 #define LPFILEGROUPDESCRIPTOR LPFILEGROUPDESCRIPTORA
1567 #endif /* UNICODE */
1568
1569 DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT);
1570
1571 #define SHFMT_ID_DEFAULT 0xFFFF
1572 #define SHFMT_OPT_FULL 1
1573 #define SHFMT_OPT_SYSONLY 2
1574 #define SHFMT_ERROR 0xFFFFFFFF
1575 #define SHFMT_CANCEL 0xFFFFFFFE
1576 #define SHFMT_NOFORMAT 0xFFFFFFFD
1577
1578 #pragma pack(pop)
1579 #ifdef __cplusplus
1580 }
1581 #endif
1582
1583
1584 #endif /* _SHLOBJ_H */