Reactos
1#ifndef _SHELLAPI_H
2#define _SHELLAPI_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7#ifdef _MSC_VER
8#pragma warning(push)
9#pragma warning(disable:4201)
10#endif
11
12#if !defined(_WIN64)
13#include <pshpack1.h>
14#endif
15
16#define WINSHELLAPI DECLSPEC_IMPORT
17#define ABE_LEFT 0
18#define ABE_TOP 1
19#define ABE_RIGHT 2
20#define ABE_BOTTOM 3
21#define ABS_AUTOHIDE 1
22#define ABS_ALWAYSONTOP 2
23
24#define SEE_MASK_DEFAULT 0x00000000
25#define SEE_MASK_CLASSNAME 0x00000001
26#define SEE_MASK_CLASSKEY 0x00000003
27#define SEE_MASK_IDLIST 0x00000004
28#define SEE_MASK_INVOKEIDLIST 0x0000000C
29#if (NTDDI_VERSION < NTDDI_VISTA) || defined(__REACTOS__)
30#define SEE_MASK_ICON 0x00000010
31#endif
32#define SEE_MASK_HOTKEY 0x00000020
33#define SEE_MASK_NOCLOSEPROCESS 0x00000040
34#define SEE_MASK_CONNECTNETDRV 0x00000080
35#define SEE_MASK_NOASYNC 0x00000100
36#define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
37#define SEE_MASK_DOENVSUBST 0x00000200
38#define SEE_MASK_FLAG_NO_UI 0x00000400
39// 0x00001000 is undocumented.
40#define SEE_MASK_UNICODE 0x00004000
41#define SEE_MASK_NO_CONSOLE 0x00008000
42// 0x00010000 .. 0x00080000 are undocumented.
43#define SEE_MASK_ASYNCOK 0x00100000
44#if (NTDDI_VERSION >= NTDDI_WIN2K)
45#define SEE_MASK_HMONITOR 0x00200000
46#endif
47#if (NTDDI_VERSION >= NTDDI_WINXPSP1)
48#define SEE_MASK_NOZONECHECKS 0x00800000
49#endif
50#if (NTDDI_VERSION >= NTDDI_WIN2K)
51#define SEE_MASK_NOQUERYCLASSSTORE 0x01000000
52#define SEE_MASK_WAITFORINPUTIDLE 0x02000000
53#endif
54#if (NTDDI_VERSION >= NTDDI_WINXP)
55#define SEE_MASK_FLAG_LOG_USAGE 0x04000000
56#endif
57#if (NTDDI_VERSION >= NTDDI_VISTA)
58#define SEE_MASK_FLAG_HINST_IS_SITE 0x08000000
59#endif
60
61#define ABM_NEW 0
62#define ABM_REMOVE 1
63#define ABM_QUERYPOS 2
64#define ABM_SETPOS 3
65#define ABM_GETSTATE 4
66#define ABM_GETTASKBARPOS 5
67#define ABM_ACTIVATE 6
68#define ABM_GETAUTOHIDEBAR 7
69#define ABM_SETAUTOHIDEBAR 8
70#define ABM_WINDOWPOSCHANGED 9
71#define ABM_SETSTATE 10
72#define ABN_STATECHANGE 0
73#define ABN_POSCHANGED 1
74#define ABN_FULLSCREENAPP 2
75#define ABN_WINDOWARRANGE 3
76
77#if (_WIN32_IE >= 0x0500)
78#define NIN_SELECT (WM_USER + 0)
79#define NINF_KEY 1
80#define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
81#endif
82
83#if (_WIN32_IE >= 0x0501)
84#define NIN_BALLOONSHOW (WM_USER + 2)
85#define NIN_BALLOONHIDE (WM_USER + 3)
86#define NIN_BALLOONTIMEOUT (WM_USER + 4)
87#define NIN_BALLOONUSERCLICK (WM_USER + 5)
88#endif
89#if (NTDDI_VERSION >= NTDDI_VISTA)
90#define NIN_POPUPOPEN (WM_USER + 6)
91#define NIN_POPUPCLOSE (WM_USER + 7)
92#endif
93
94#define NIM_ADD 0
95#define NIM_MODIFY 1
96#define NIM_DELETE 2
97#if _WIN32_IE >= 0x0500
98#define NIM_SETFOCUS 3
99#define NIM_SETVERSION 4
100#define NOTIFYICON_VERSION 3
101#if (NTDDI_VERSION >= NTDDI_VISTA)
102#define NOTIFYICON_VERSION_4 4
103#endif
104#endif
105#define NIF_MESSAGE 1
106#define NIF_ICON 2
107#define NIF_TIP 4
108#if _WIN32_IE >= 0x0500
109#define NIF_STATE 8
110#define NIF_INFO 16
111#define NIS_HIDDEN 1
112#define NIS_SHAREDICON 2
113#define NIIF_NONE 0
114#define NIIF_INFO 1
115#define NIIF_WARNING 2
116#define NIIF_ERROR 3
117#define NIIF_USER 4
118#if _WIN32_IE >= 0x0600
119#define NIF_GUID 32
120#define NIIF_ICON_MASK 0xf
121#define NIIF_NOSOUND 0x10
122#endif /* _WIN32_IE >= 0x0600 */
123#endif /* _WIN32_IE >= 0x0500 */
124
125#define SE_ERR_FNF 2
126#define SE_ERR_PNF 3
127#define SE_ERR_ACCESSDENIED 5
128#define SE_ERR_OOM 8
129#define SE_ERR_DLLNOTFOUND 32
130#define SE_ERR_SHARE 26
131#define SE_ERR_ASSOCINCOMPLETE 27
132#define SE_ERR_DDETIMEOUT 28
133#define SE_ERR_DDEFAIL 29
134#define SE_ERR_DDEBUSY 30
135#define SE_ERR_NOASSOC 31
136#define FO_MOVE 1
137#define FO_COPY 2
138#define FO_DELETE 3
139#define FO_RENAME 4
140
141#define FOF_MULTIDESTFILES 0x0001
142#define FOF_CONFIRMMOUSE 0x0002
143#define FOF_SILENT 0x0004
144#define FOF_RENAMEONCOLLISION 0x0008
145#define FOF_NOCONFIRMATION 0x0010
146#define FOF_WANTMAPPINGHANDLE 0x0020
147#define FOF_ALLOWUNDO 0x0040
148#define FOF_FILESONLY 0x0080
149#define FOF_SIMPLEPROGRESS 0x0100
150#define FOF_NOCONFIRMMKDIR 0x0200
151#define FOF_NOERRORUI 0x0400
152#define FOF_NOCOPYSECURITYATTRIBS 0x0800
153#define FOF_NORECURSION 0x1000 /* don't do recursion into directories */
154#define FOF_NO_CONNECTED_ELEMENTS 0x2000 /* don't do connected files */
155#define FOF_WANTNUKEWARNING 0x4000 /* during delete operation, warn if delete instead
156 of recycling (even if FOF_NOCONFIRMATION) */
157#define FOF_NORECURSEREPARSE 0x8000 /* don't do recursion into reparse points */
158
159#define PO_DELETE 19
160#define PO_RENAME 20
161#define PO_PORTCHANGE 32
162#define PO_REN_PORT 52
163#define SHGFI_ADDOVERLAYS 32
164#define SHGFI_OVERLAYINDEX 64
165#define SHGFI_ICON 256
166#define SHGSI_ICON SHGFI_ICON
167#define SHGFI_DISPLAYNAME 512
168#define SHGFI_TYPENAME 1024
169#define SHGFI_ATTRIBUTES 2048
170#define SHGFI_ICONLOCATION 4096
171#define SHGFI_EXETYPE 8192
172#define SHGFI_SYSICONINDEX 16384
173#define SHGFI_LINKOVERLAY 32768
174#define SHGFI_SELECTED 65536
175#define SHGFI_ATTR_SPECIFIED 131072
176#define SHGFI_LARGEICON 0
177#define SHGFI_SMALLICON 1
178#define SHGSI_SMALLICON SHGFI_SMALLICON
179#define SHGFI_OPENICON 2
180#define SHGFI_SHELLICONSIZE 4
181#define SHGFI_PIDL 8
182#define SHGFI_USEFILEATTRIBUTES 16
183
184#if (NTDDI_VERSION >= NTDDI_WINXP)
185#define SHIL_LARGE 0x0
186#define SHIL_SMALL 0x1
187#define SHIL_EXTRALARGE 0x2
188#define SHIL_SYSSMALL 0x3
189#if (NTDDI_VERSION >= NTDDI_VISTA)
190#define SHIL_JUMBO 0x4
191#define SHIL_LAST SHIL_JUMBO
192#else
193#define SHIL_LAST SHIL_SYSSMALL
194#endif
195#endif
196
197typedef struct _SHCREATEPROCESSINFOW
198{
199 DWORD cbSize;
200 ULONG fMask;
201 HWND hwnd;
202 LPCWSTR pszFile;
203 LPCWSTR pszParameters;
204 LPCWSTR pszCurrentDirectory;
205 IN HANDLE hUserToken;
206 IN LPSECURITY_ATTRIBUTES lpProcessAttributes;
207 IN LPSECURITY_ATTRIBUTES lpThreadAttributes;
208 IN BOOL bInheritHandles;
209 IN DWORD dwCreationFlags;
210 IN LPSTARTUPINFOW lpStartupInfo;
211 OUT LPPROCESS_INFORMATION lpProcessInformation;
212} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
213
214typedef WORD FILEOP_FLAGS;
215typedef WORD PRINTEROP_FLAGS;
216
217typedef struct _AppBarData {
218 DWORD cbSize;
219 HWND hWnd;
220 UINT uCallbackMessage;
221 UINT uEdge;
222 RECT rc;
223 LPARAM lParam;
224} APPBARDATA,*PAPPBARDATA;
225DECLARE_HANDLE(HDROP);
226
227typedef struct _NOTIFYICONDATAA {
228 DWORD cbSize;
229 HWND hWnd;
230 UINT uID;
231 UINT uFlags;
232 UINT uCallbackMessage;
233 HICON hIcon;
234#if (NTDDI_VERSION < NTDDI_WIN2K)
235 CHAR szTip[64];
236#endif
237#if (NTDDI_VERSION >= NTDDI_WIN2K)
238 CHAR szTip[128];
239 DWORD dwState;
240 DWORD dwStateMask;
241 CHAR szInfo[256];
242 _ANONYMOUS_UNION union {
243 UINT uTimeout;
244 UINT uVersion;
245 } DUMMYUNIONNAME;
246 CHAR szInfoTitle[64];
247 DWORD dwInfoFlags;
248#endif
249#if (NTDDI_VERSION >= NTDDI_WINXP)
250 GUID guidItem;
251#endif
252#if (NTDDI_VERSION >= NTDDI_VISTA)
253 HICON hBalloonIcon;
254#endif
255} NOTIFYICONDATAA,*PNOTIFYICONDATAA;
256
257typedef struct _NOTIFYICONDATAW {
258 DWORD cbSize;
259 HWND hWnd;
260 UINT uID;
261 UINT uFlags;
262 UINT uCallbackMessage;
263 HICON hIcon;
264#if (NTDDI_VERSION < NTDDI_WIN2K)
265 WCHAR szTip[64];
266#endif
267#if (NTDDI_VERSION >= NTDDI_WIN2K)
268 WCHAR szTip[128];
269 DWORD dwState;
270 DWORD dwStateMask;
271 WCHAR szInfo[256];
272 _ANONYMOUS_UNION union {
273 UINT uTimeout;
274 UINT uVersion;
275 } DUMMYUNIONNAME;
276 WCHAR szInfoTitle[64];
277 DWORD dwInfoFlags;
278#endif
279#if (NTDDI_VERSION >= NTDDI_WINXP)
280 GUID guidItem;
281#endif
282#if (NTDDI_VERSION >= NTDDI_VISTA)
283 HICON hBalloonIcon;
284#endif
285} NOTIFYICONDATAW,*PNOTIFYICONDATAW;
286
287#define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAA, szTip[64])
288#define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET(NOTIFYICONDATAW, szTip[64])
289#define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAA, guidItem)
290#define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET(NOTIFYICONDATAW, guidItem)
291#define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAA, hBalloonIcon)
292#define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET(NOTIFYICONDATAW, hBalloonIcon)
293
294#if WINVER >= 0x400
295typedef struct _DRAGINFOA {
296 UINT uSize;
297 POINT pt;
298 BOOL fNC;
299 LPSTR lpFileList;
300 DWORD grfKeyState;
301} DRAGINFOA,*LPDRAGINFOA;
302typedef struct _DRAGINFOW {
303 UINT uSize;
304 POINT pt;
305 BOOL fNC;
306 LPWSTR lpFileList;
307 DWORD grfKeyState;
308} DRAGINFOW,*LPDRAGINFOW;
309#endif
310
311typedef struct _SHELLEXECUTEINFOA {
312 DWORD cbSize;
313 ULONG fMask;
314 HWND hwnd;
315 LPCSTR lpVerb;
316 LPCSTR lpFile;
317 LPCSTR lpParameters;
318 LPCSTR lpDirectory;
319 int nShow;
320 HINSTANCE hInstApp;
321 /* Optional fields */
322 PVOID lpIDList;
323 LPCSTR lpClass;
324 HKEY hkeyClass;
325 DWORD dwHotKey;
326 _ANONYMOUS_UNION union {
327 HANDLE hIcon;
328#if (NTDDI_VERSION >= NTDDI_WIN2K)
329 HANDLE hMonitor;
330#endif
331 } DUMMYUNIONNAME;
332 HANDLE hProcess;
333} SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
334typedef struct _SHELLEXECUTEINFOW {
335 DWORD cbSize;
336 ULONG fMask;
337 HWND hwnd;
338 LPCWSTR lpVerb;
339 LPCWSTR lpFile;
340 LPCWSTR lpParameters;
341 LPCWSTR lpDirectory;
342 int nShow;
343 HINSTANCE hInstApp;
344 /* Optional fields */
345 PVOID lpIDList;
346 LPCWSTR lpClass;
347 HKEY hkeyClass;
348 DWORD dwHotKey;
349 _ANONYMOUS_UNION union {
350 HANDLE hIcon;
351#if (NTDDI_VERSION >= NTDDI_WIN2K)
352 HANDLE hMonitor;
353#endif
354 } DUMMYUNIONNAME;
355 HANDLE hProcess;
356} SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
357typedef struct _SHFILEOPSTRUCTA {
358 HWND hwnd;
359 UINT wFunc;
360 LPCSTR pFrom;
361 LPCSTR pTo;
362 FILEOP_FLAGS fFlags;
363 BOOL fAnyOperationsAborted;
364 PVOID hNameMappings;
365 LPCSTR lpszProgressTitle;
366} SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
367typedef struct _SHFILEOPSTRUCTW {
368 HWND hwnd;
369 UINT wFunc;
370 LPCWSTR pFrom;
371 LPCWSTR pTo;
372 FILEOP_FLAGS fFlags;
373 BOOL fAnyOperationsAborted;
374 PVOID hNameMappings;
375 LPCWSTR lpszProgressTitle;
376} SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
377typedef struct _SHFILEINFOA {
378 HICON hIcon;
379 int iIcon;
380 DWORD dwAttributes;
381 CHAR szDisplayName[MAX_PATH];
382 CHAR szTypeName[80];
383} SHFILEINFOA;
384typedef struct _SHFILEINFOW {
385 HICON hIcon;
386 int iIcon;
387 DWORD dwAttributes;
388 WCHAR szDisplayName[MAX_PATH];
389 WCHAR szTypeName[80];
390} SHFILEINFOW;
391typedef struct _SHQUERYRBINFO {
392 DWORD cbSize;
393 __int64 i64Size;
394 __int64 i64NumItems;
395} SHQUERYRBINFO, *LPSHQUERYRBINFO;
396typedef struct _SHNAMEMAPPINGA {
397 LPSTR pszOldPath;
398 LPSTR pszNewPath;
399 int cchOldPath;
400 int cchNewPath;
401} SHNAMEMAPPINGA, *LPSHNAMEMAPPINGA;
402typedef struct _SHNAMEMAPPINGW {
403 LPWSTR pszOldPath;
404 LPWSTR pszNewPath;
405 int cchOldPath;
406 int cchNewPath;
407} SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW;
408
409#define SHERB_NOCONFIRMATION 0x1
410#define SHERB_NOPROGRESSUI 0x2
411#define SHERB_NOSOUND 0x4
412
413/******************************************
414 * Links
415 */
416
417#define SHGNLI_PIDL 0x01
418#define SHGNLI_PREFIXNAME 0x02
419#define SHGNLI_NOUNIQUE 0x04
420#define SHGNLI_NOLNK 0x08
421
422LPWSTR * WINAPI CommandLineToArgvW(_In_ LPCWSTR, _Out_ int*);
423void WINAPI DragAcceptFiles(_In_ HWND, _In_ BOOL);
424void WINAPI DragFinish(_In_ HDROP);
425
426_Success_(return != 0)
427UINT
428WINAPI
429DragQueryFileA(
430 _In_ HDROP hDrop,
431 _In_ UINT iFile,
432 _Out_writes_opt_(cch) LPSTR lpszFile,
433 _In_ UINT cch);
434
435_Success_(return != 0)
436UINT
437WINAPI
438DragQueryFileW(
439 _In_ HDROP hDrop,
440 _In_ UINT iFile,
441 _Out_writes_opt_(cch) LPWSTR lpszFile,
442 _In_ UINT cch);
443
444BOOL WINAPI DragQueryPoint(_In_ HDROP, _Out_ LPPOINT);
445
446HICON
447WINAPI
448ExtractAssociatedIconA(
449 _Reserved_ HINSTANCE hInst,
450 _Inout_updates_(128) LPSTR pszIconPath,
451 _Inout_ WORD *piIcon);
452
453HICON
454WINAPI
455ExtractAssociatedIconW(
456 _Reserved_ HINSTANCE hInst,
457 _Inout_updates_(128) LPWSTR pszIconPath,
458 _Inout_ WORD *piIcon);
459
460HICON
461WINAPI
462ExtractIconA(
463 _Reserved_ HINSTANCE hInst,
464 _In_ LPCSTR pszExeFileName,
465 UINT nIconIndex);
466
467HICON
468WINAPI
469ExtractIconW(
470 _Reserved_ HINSTANCE hInst,
471 _In_ LPCWSTR pszExeFileName,
472 UINT nIconIndex);
473
474UINT
475WINAPI
476ExtractIconExA(
477 _In_ LPCSTR lpszFile,
478 _In_ int nIconIndex,
479 _Out_writes_opt_(nIcons) HICON *phiconLarge,
480 _Out_writes_opt_(nIcons) HICON *phiconSmall,
481 _In_ UINT nIcons);
482
483UINT
484WINAPI
485ExtractIconExW(
486 _In_ LPCWSTR lpszFile,
487 _In_ int nIconIndex,
488 _Out_writes_opt_(nIcons) HICON *phiconLarge,
489 _Out_writes_opt_(nIcons) HICON *phiconSmall,
490 _In_ UINT nIcons);
491
492_Success_(return > 32)
493HINSTANCE
494WINAPI
495FindExecutableA(
496 _In_ LPCSTR lpFile,
497 _In_opt_ LPCSTR lpDirectory,
498 _Out_writes_(MAX_PATH) LPSTR lpResult);
499
500_Success_(return > 32)
501HINSTANCE
502WINAPI
503FindExecutableW(
504 _In_ LPCWSTR lpFile,
505 _In_opt_ LPCWSTR lpDirectory,
506 _Out_writes_(MAX_PATH) LPWSTR lpResult);
507
508UINT_PTR
509WINAPI
510SHAppBarMessage(
511 _In_ DWORD dwMessage,
512 _Inout_ PAPPBARDATA pData);
513
514BOOL WINAPI Shell_NotifyIconA(_In_ DWORD, _In_ PNOTIFYICONDATAA);
515BOOL WINAPI Shell_NotifyIconW(_In_ DWORD, _In_ PNOTIFYICONDATAW);
516
517int
518WINAPI
519ShellAboutA(
520 _In_opt_ HWND hWnd,
521 _In_ LPCSTR szApp,
522 _In_opt_ LPCSTR szOtherStuff,
523 _In_opt_ HICON hIcon);
524
525int
526WINAPI
527ShellAboutW(
528 _In_opt_ HWND hWnd,
529 _In_ LPCWSTR szApp,
530 _In_opt_ LPCWSTR szOtherStuff,
531 _In_opt_ HICON hIcon);
532
533int
534WINAPIV
535ShellMessageBoxA(
536 _In_opt_ HINSTANCE hAppInst,
537 _In_opt_ HWND hWnd,
538 _In_ LPCSTR lpcText,
539 _In_opt_ LPCSTR lpcTitle,
540 _In_ UINT fuStyle,
541 ...);
542
543int
544WINAPIV
545ShellMessageBoxW(
546 _In_opt_ HINSTANCE hAppInst,
547 _In_opt_ HWND hWnd,
548 _In_ LPCWSTR lpcText,
549 _In_opt_ LPCWSTR lpcTitle,
550 _In_ UINT fuStyle,
551 ...);
552
553HINSTANCE
554WINAPI
555ShellExecuteA(
556 _In_opt_ HWND hwnd,
557 _In_opt_ LPCSTR lpOperation,
558 _In_ LPCSTR lpFile,
559 _In_opt_ LPCSTR lpParameters,
560 _In_opt_ LPCSTR lpDirectory,
561 _In_ INT nShowCmd);
562
563HINSTANCE
564WINAPI
565ShellExecuteW(
566 _In_opt_ HWND hwnd,
567 _In_opt_ LPCWSTR lpOperation,
568 _In_ LPCWSTR lpFile,
569 _In_opt_ LPCWSTR lpParameters,
570 _In_opt_ LPCWSTR lpDirectory,
571 _In_ INT nShowCmd);
572
573BOOL WINAPI ShellExecuteExA(_Inout_ LPSHELLEXECUTEINFOA);
574BOOL WINAPI ShellExecuteExW(_Inout_ LPSHELLEXECUTEINFOW);
575int WINAPI SHFileOperationA(_Inout_ LPSHFILEOPSTRUCTA);
576int WINAPI SHFileOperationW(_Inout_ LPSHFILEOPSTRUCTW);
577void WINAPI SHFreeNameMappings(_In_opt_ HANDLE);
578
579DWORD_PTR
580WINAPI
581SHGetFileInfoA(
582 _In_ LPCSTR pszPath,
583 DWORD dwFileAttributes,
584 _Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOA *psfi,
585 UINT cbFileInfo,
586 UINT uFlags);
587
588DWORD_PTR
589WINAPI
590SHGetFileInfoW(
591 _In_ LPCWSTR pszPath,
592 DWORD dwFileAttributes,
593 _Inout_updates_bytes_opt_(cbFileInfo) SHFILEINFOW *psfi,
594 UINT cbFileInfo,
595 UINT uFlags);
596
597_Success_(return != 0)
598BOOL
599WINAPI
600SHGetNewLinkInfoA(
601 _In_ LPCSTR pszLinkTo,
602 _In_ LPCSTR pszDir,
603 _Out_writes_(MAX_PATH) LPSTR pszName,
604 _Out_ BOOL *pfMustCopy,
605 _In_ UINT uFlags);
606
607_Success_(return != 0)
608BOOL
609WINAPI
610SHGetNewLinkInfoW(
611 _In_ LPCWSTR pszLinkTo,
612 _In_ LPCWSTR pszDir,
613 _Out_writes_(MAX_PATH) LPWSTR pszName,
614 _Out_ BOOL *pfMustCopy,
615 _In_ UINT uFlags);
616
617HRESULT
618WINAPI
619SHQueryRecycleBinA(
620 _In_opt_ LPCSTR pszRootPath,
621 _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
622
623HRESULT
624WINAPI
625SHQueryRecycleBinW(
626 _In_opt_ LPCWSTR pszRootPath,
627 _Inout_ LPSHQUERYRBINFO pSHQueryRBInfo);
628
629HRESULT
630WINAPI
631SHEmptyRecycleBinA(
632 _In_opt_ HWND hwnd,
633 _In_opt_ LPCSTR pszRootPath,
634 DWORD dwFlags);
635
636HRESULT
637WINAPI
638SHEmptyRecycleBinW(
639 _In_opt_ HWND hwnd,
640 _In_opt_ LPCWSTR pszRootPath,
641 DWORD dwFlags);
642
643BOOL WINAPI SHCreateProcessAsUserW(_Inout_ PSHCREATEPROCESSINFOW);
644
645DWORD
646WINAPI
647DoEnvironmentSubstA(
648 _Inout_updates_(cchSrc) LPSTR pszSrc,
649 UINT cchSrc);
650
651DWORD
652WINAPI
653DoEnvironmentSubstW(
654 _Inout_updates_(cchSrc) LPWSTR pszSrc,
655 UINT cchSrc);
656
657HRESULT WINAPI
658SHSetUnreadMailCountW(
659 _In_ PCWSTR pszMailAddress,
660 _In_ DWORD dwCount,
661 _In_ PCWSTR pszShellExecuteCommand);
662
663#if (_WIN32_IE >= 0x0601)
664BOOL
665WINAPI
666SHTestTokenMembership(
667 _In_opt_ HANDLE hToken,
668 _In_ ULONG ulRID);
669#endif
670
671HRESULT WINAPI
672SHEnumerateUnreadMailAccountsW(
673 _In_opt_ HKEY hKeyUser,
674 _In_ DWORD dwIndex,
675 _Out_writes_(cchMailAddress) PWSTR pszMailAddress,
676 _In_ INT cchMailAddress);
677
678HRESULT WINAPI
679SHGetUnreadMailCountW(
680 _In_opt_ HKEY hKeyUser,
681 _In_opt_ PCWSTR pszMailAddress,
682 _Out_opt_ PDWORD pdwCount,
683 _Inout_opt_ PFILETIME pFileTime,
684 _Out_writes_opt_(cchShellExecuteCommand) PWSTR pszShellExecuteCommand,
685 _In_ INT cchShellExecuteCommand);
686
687#ifdef UNICODE
688#define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
689#define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAW_V2_SIZE
690#define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAW_V3_SIZE
691typedef NOTIFYICONDATAW NOTIFYICONDATA,*PNOTIFYICONDATA;
692typedef DRAGINFOW DRAGINFO,*LPDRAGINFO;
693typedef SHELLEXECUTEINFOW SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
694typedef SHFILEOPSTRUCTW SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
695typedef SHFILEINFOW SHFILEINFO;
696typedef SHNAMEMAPPINGW SHNAMEMAPPING;
697typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
698#define DragQueryFile DragQueryFileW
699#define ExtractAssociatedIcon ExtractAssociatedIconW
700#define ExtractIcon ExtractIconW
701#define ExtractIconEx ExtractIconExW
702#define FindExecutable FindExecutableW
703#define Shell_NotifyIcon Shell_NotifyIconW
704#define ShellAbout ShellAboutW
705#define ShellExecute ShellExecuteW
706#define ShellExecuteEx ShellExecuteExW
707#define ShellMessageBox ShellMessageBoxW
708#define SHFileOperation SHFileOperationW
709#define SHGetFileInfo SHGetFileInfoW
710#define SHQueryRecycleBin SHQueryRecycleBinW
711#define SHEmptyRecycleBin SHEmptyRecycleBinW
712#define SHGetNewLinkInfo SHGetNewLinkInfoW
713#define DoEnvironmentSubst DoEnvironmentSubstW
714
715#else
716#define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
717#define NOTIFYICONDATA_V2_SIZE NOTIFYICONDATAA_V2_SIZE
718#define NOTIFYICONDATA_V3_SIZE NOTIFYICONDATAA_V3_SIZE
719typedef NOTIFYICONDATAA NOTIFYICONDATA,*PNOTIFYICONDATA;
720typedef DRAGINFOA DRAGINFO,*LPDRAGINFO;
721typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO,*LPSHELLEXECUTEINFO;
722typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT,*LPSHFILEOPSTRUCT;
723typedef SHFILEINFOA SHFILEINFO;
724typedef SHNAMEMAPPINGA SHNAMEMAPPING;
725typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
726#define DragQueryFile DragQueryFileA
727#define ExtractAssociatedIcon ExtractAssociatedIconA
728#define ExtractIcon ExtractIconA
729#define ExtractIconEx ExtractIconExA
730#define FindExecutable FindExecutableA
731#define Shell_NotifyIcon Shell_NotifyIconA
732#define ShellAbout ShellAboutA
733#define ShellExecute ShellExecuteA
734#define ShellExecuteEx ShellExecuteExA
735#define ShellMessageBox ShellMessageBoxA
736#define SHFileOperation SHFileOperationA
737#define SHGetFileInfo SHGetFileInfoA
738#define SHQueryRecycleBin SHQueryRecycleBinA
739#define SHEmptyRecycleBin SHEmptyRecycleBinA
740#define SHGetNewLinkInfo SHGetNewLinkInfoA
741#define DoEnvironmentSubst DoEnvironmentSubstA
742#endif
743
744#if (NTDDI_VERSION >= NTDDI_VISTA)
745
746typedef struct _SHSTOCKICONINFO {
747 DWORD cbSize;
748 HICON hIcon;
749 int iSysImageIndex;
750 int iIcon;
751 WCHAR szPath[MAX_PATH];
752} SHSTOCKICONINFO;
753
754#define SHGSI_ICONLOCATION 0
755
756typedef enum SHSTOCKICONID
757{
758 SIID_INVALID=-1,
759 SIID_DOCNOASSOC,
760 SIID_DOCASSOC,
761 SIID_APPLICATION,
762 SIID_FOLDER,
763 SIID_FOLDEROPEN,
764 SIID_DRIVE525,
765 SIID_DRIVE35,
766 SIID_DRIVERREMOVE,
767 SIID_DRIVERFIXED,
768 SIID_DRIVERNET,
769 SIID_DRIVERNETDISABLE,
770 SIID_DRIVERCD,
771 SIID_DRIVERRAM,
772 SIID_WORLD,
773 /* Missing: 14 */
774 SIID_SERVER = 15,
775 SIID_PRINTER,
776 SIID_MYNETWORK,
777 /* Missing: 18 - 21 */
778 SIID_FIND = 22,
779 SIID_HELP,
780 /* Missing: 24 - 27 */
781 SIID_SHARE = 28,
782 SIID_LINK,
783 SIID_SLOWFILE,
784 SIID_RECYCLER,
785 SIID_RECYCLERFULL,
786 /* Missing: 33 - 39 */
787 SIID_MEDIACDAUDIO = 40,
788 /* Missing: 41 - 46 */
789 SIID_LOCK = 47,
790 /* Missing: 48 */
791 SIID_AUTOLIST = 49,
792 SIID_PRINTERNET,
793 SIID_SERVERSHARE,
794 SIID_PRINTERFAX,
795 SIID_PRINTERFAXNET,
796 SIID_PRINTERFILE,
797 SIID_STACK,
798 SIID_MEDIASVCD,
799 SIID_STUFFEDFOLDER,
800 SIID_DRIVEUNKNOWN,
801 SIID_DRIVEDVD,
802 SIID_MEDIADVD,
803 SIID_MEDIADVDRAM,
804 SIID_MEDIADVDRW,
805 SIID_MEDIADVDR,
806 SIID_MEDIADVDROM,
807 SIID_MEDIACDAUDIOPLUS,
808 SIID_MEDIACDRW,
809 SIID_MEDIACDR,
810 SIID_MEDIACDBURN,
811 SIID_MEDIABLANKCD,
812 SIID_MEDIACDROM,
813 SIID_AUDIOFILES,
814 SIID_IMAGEFILES,
815 SIID_VIDEOFILES,
816 SIID_MIXEDFILES,
817 SIID_FOLDERBACK,
818 SIID_FOLDERFRONT,
819 SIID_SHIELD,
820 SIID_WARNING,
821 SIID_INFO,
822 SIID_ERROR,
823 SIID_KEY,
824 SIID_SOFTWARE,
825 SIID_RENAME,
826 SIID_DELETE,
827 SIID_MEDIAAUDIODVD,
828 SIID_MEDIAMOVIEDVD,
829 SIID_MEDIAENHANCEDCD,
830 SIID_MEDIAENHANCEDDVD,
831 SIID_MEDIAHDDVD,
832 SIID_MEDIABLUERAY,
833 SIID_MEDIAVCD,
834 SIID_MEDIADVDPLUSR,
835 SIID_MEDIADVDPLUSRW,
836 SIID_DESKTOPPC,
837 SIID_MOBILEPC,
838 SIID_USERS,
839 SIID_MEDIASMARTMEDIA,
840 SIID_MEDIACOMPACTFLASH,
841 SIID_DEVICECELLPHONE,
842 SIID_DEVICECAMERA,
843 SIID_DEVICEVIDEOCAMERA,
844 SIID_DEVICEAUDIOPLAYER,
845 SIID_NETWORKCONNECT,
846 SIID_INTERNET,
847 SIID_ZIPFILE,
848 SIID_SETTINGS,
849 /* Missing: 107 - 131 */
850 SIID_DRIVEHDDVD = 132,
851 SIID_DRIVEBD,
852 SIID_MEDIAHDDVDROM,
853 SIID_MEDIAHDDVDR,
854 SIID_MEDIAHDDVDRAM,
855 SIID_MEDIABDROM,
856 SIID_MEDIABDR,
857 SIID_MEDIABDRE,
858 SIID_CLUSTEREDDRIVE,
859 /* Missing: 141 - 174 */
860 SIID_MAX_ICONS = 175
861} SHSTOCKICONID;
862
863#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
864
865#if !defined(_WIN64)
866#include <poppack.h>
867#endif
868
869#ifdef _MSC_VER
870#pragma warning(pop)
871#endif
872#ifdef __cplusplus
873}
874#endif
875#endif