1use ctypes::{c_int, c_void};
7use shared::guiddef::{REFGUID, REFIID};
8use shared::minwindef::{BOOL, DWORD, UINT, ULONG, WORD};
9use shared::windef::{COLORREF, HICON, HWND, RECT};
10use um::commctrl::HIMAGELIST;
11use um::minwinbase::{WIN32_FIND_DATAA, WIN32_FIND_DATAW};
12use um::objidl::IBindCtx;
13use um::propkeydef::REFPROPERTYKEY;
14use um::propsys::GETPROPERTYSTOREFLAGS;
15use um::shtypes::{PCIDLIST_ABSOLUTE, PIDLIST_ABSOLUTE};
16use um::unknwnbase::{IUnknown, IUnknownVtbl};
17use um::winnt::{HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, ULONGLONG, WCHAR};
18DEFINE_GUID!{CLSID_DesktopWallpaper,
19 0xc2cf3110, 0x460e, 0x4fc1, 0xb9, 0xd0, 0x8a, 0x1c, 0x0c, 0x9c, 0xc4, 0xbd}
20DEFINE_GUID!{CLSID_TaskbarList,
21 0x56fdf344, 0xfd6d, 0x11d0, 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90}
22DEFINE_GUID!{CLSID_FileOpenDialog,
23 0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5, 0xa1, 0x60, 0xf8, 0x2a, 0x20, 0xae, 0xf7}
24DEFINE_GUID!{CLSID_FileSaveDialog,
25 0xc0b4e2f3, 0xba21, 0x4773, 0x8d, 0xba, 0x33, 0x5e, 0xc9, 0x46, 0xeb, 0x8b}
26ENUM!{enum SHCONTF {
28 SHCONTF_CHECKING_FOR_CHILDREN = 0x10,
29 SHCONTF_FOLDERS = 0x20,
30 SHCONTF_NONFOLDERS = 0x40,
31 SHCONTF_INCLUDEHIDDEN = 0x80,
32 SHCONTF_INIT_ON_FIRST_NEXT = 0x100,
33 SHCONTF_NETPRINTERSRCH = 0x200,
34 SHCONTF_SHAREABLE = 0x400,
35 SHCONTF_STORAGE = 0x800,
36 SHCONTF_NAVIGATION_ENUM = 0x1000,
37 SHCONTF_FASTITEMS = 0x2000,
38 SHCONTF_FLATLIST = 0x4000,
39 SHCONTF_ENABLE_ASYNC = 0x8000,
40 SHCONTF_INCLUDESUPERHIDDEN = 0x10000,
41}}
42pub type SFGAOF = ULONG;
43ENUM!{enum SIGDN {
45 SIGDN_NORMALDISPLAY = 0,
46 SIGDN_PARENTRELATIVEPARSING = 0x80018001,
47 SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000,
48 SIGDN_PARENTRELATIVEEDITING = 0x80031001,
49 SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000,
50 SIGDN_FILESYSPATH = 0x80058000,
51 SIGDN_URL = 0x80068000,
52 SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001,
53 SIGDN_PARENTRELATIVE = 0x80080001,
54 SIGDN_PARENTRELATIVEFORUI = 0x80094001,
55}}
56ENUM!{enum SICHINTF {
57 SICHINT_DISPLAY = 0,
58 SICHINT_ALLFIELDS = 0x80000000,
59 SICHINT_CANONICAL = 0x10000000,
60 SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000,
61}}
62RIDL!{#[uuid(0x43826d1e, 0xe718, 0x42ee, 0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe)]
63interface IShellItem(IShellItemVtbl): IUnknown(IUnknownVtbl) {
64 fn BindToHandler(
65 pbc: *mut IBindCtx,
66 bhid: REFGUID,
67 riid: REFIID,
68 ppv: *mut *mut c_void,
69 ) -> HRESULT,
70 fn GetParent(
71 ppsi: *mut *mut IShellItem,
72 ) -> HRESULT,
73 fn GetDisplayName(
74 sigdnName: SIGDN,
75 ppszName: *mut LPWSTR,
76 ) -> HRESULT,
77 fn GetAttributes(
78 sfgaoMask: SFGAOF,
79 psfgaoAttribs: *mut SFGAOF,
80 ) -> HRESULT,
81 fn Compare(
82 psi: *mut IShellItem,
83 hint: SICHINTF,
84 piOrder: *mut c_int,
85 ) -> HRESULT,
86}}
87ENUM!{enum SIATTRIBFLAGS {
88 SIATTRIBFLAGS_AND = 0x1,
89 SIATTRIBFLAGS_OR = 0x2,
90 SIATTRIBFLAGS_APPCOMPAT = 0x3,
91 SIATTRIBFLAGS_MASK = 0x3,
92 SIATTRIBFLAGS_ALLITEMS = 0x4000,
93}}
94RIDL!{#[uuid(0xb63ea76d, 0x1f85, 0x456f, 0xa1, 0x9c, 0x48, 0x15, 0x9e, 0xfa, 0x85, 0x8b)]
95interface IShellItemArray(IShellItemArrayVtbl): IUnknown(IUnknownVtbl) {
96 fn BindToHandler(
97 pbc: *mut IBindCtx,
98 bhid: REFGUID,
99 riid: REFIID,
100 ppvOut: *mut *mut c_void,
101 ) -> HRESULT,
102 fn GetPropertyStore(
103 flags: GETPROPERTYSTOREFLAGS,
104 riid: REFIID,
105 ppv: *mut *mut c_void,
106 ) -> HRESULT,
107 fn GetPropertyDescriptionList(
108 keyType: REFPROPERTYKEY,
109 riid: REFIID,
110 ppv: *mut *mut c_void,
111 ) -> HRESULT,
112 fn GetAttributes(
113 AttribFlags: SIATTRIBFLAGS,
114 sfgaoMask: SFGAOF,
115 psfgaoAttribs: *mut SFGAOF,
116 ) -> HRESULT,
117 fn GetCount(
118 pdwNumItems: *mut DWORD,
119 ) -> HRESULT,
120 fn GetItemAt(
121 dwIndex: DWORD,
122 ppsi: *mut *mut IShellItem,
123 ) -> HRESULT,
124 }}
129RIDL!{#[uuid(0xb4db1657, 0x70d7, 0x485e, 0x8e, 0x3e, 0x6f, 0xcb, 0x5a, 0x5c, 0x18, 0x02)]
131interface IModalWindow(IModalWindowVtbl): IUnknown(IUnknownVtbl) {
132 fn Show(
133 hwndOwner: HWND,
134 ) -> HRESULT,
135}}
136RIDL!{#[uuid(0x2659b475, 0xeeb8, 0x48b7, 0x8f, 0x07, 0xb3, 0x78, 0x81, 0x0f, 0x48, 0xcf)]
139interface IShellItemFilter(IShellItemFilterVtbl): IUnknown(IUnknownVtbl) {
140 fn IncludeItem(
141 psi: *mut IShellItem,
142 ) -> HRESULT,
143 fn GetEnumFlagsForItem(
144 psi: *mut IShellItem,
145 pgrfFlags: *mut SHCONTF,
146 ) -> HRESULT,
147}}
148RIDL!{#[uuid(0x56fdf342, 0xfd6d, 0x11d0, 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90)]
149interface ITaskbarList(ITaskbarListVtbl): IUnknown(IUnknownVtbl) {
150 fn HrInit() -> HRESULT,
151 fn AddTab(
152 hwnd: HWND,
153 ) -> HRESULT,
154 fn DeleteTab(
155 hwnd: HWND,
156 ) -> HRESULT,
157 fn ActivateTab(
158 hwnd: HWND,
159 ) -> HRESULT,
160 fn SetActiveAlt(
161 hwnd: HWND,
162 ) -> HRESULT,
163}}
164RIDL!{#[uuid(0x602d4995, 0xb13a, 0x429b, 0xa6, 0x6e, 0x19, 0x35, 0xe4, 0x4f, 0x43, 0x17)]
165interface ITaskbarList2(ITaskbarList2Vtbl): ITaskbarList(ITaskbarListVtbl) {
166 fn MarkFullscreenWindow(
167 hwnd: HWND,
168 fFullscreen: BOOL,
169 ) -> HRESULT,
170}}
171ENUM!{enum THUMBBUTTONFLAGS {
172 THBF_ENABLED = 0,
173 THBF_DISABLED = 0x1,
174 THBF_DISMISSONCLICK = 0x2,
175 THBF_NOBACKGROUND = 0x4,
176 THBF_HIDDEN = 0x8,
177 THBF_NONINTERACTIVE = 0x10,
178}}
179ENUM!{enum THUMBBUTTONMASK {
180 THB_BITMAP = 0x1,
181 THB_ICON = 0x2,
182 THB_TOOLTIP = 0x4,
183 THB_FLAGS = 0x8,
184}}
185STRUCT!{struct THUMBBUTTON {
186 dwMask: THUMBBUTTONMASK,
187 iId: UINT,
188 iBitmap: UINT,
189 hIcon: HICON,
190 szTip: [WCHAR; 260],
191 dwFlags: THUMBBUTTONFLAGS,
192}}
193pub type LPTHUMBBUTTON = *mut THUMBBUTTON;
194pub const THBN_CLICKED: WORD = 0x1800;
195ENUM!{enum TBPFLAG {
196 TBPF_NOPROGRESS = 0,
197 TBPF_INDETERMINATE = 0x1,
198 TBPF_NORMAL = 0x2,
199 TBPF_ERROR = 0x4,
200 TBPF_PAUSED = 0x8,
201}}
202RIDL!{#[uuid(0xea1afb91, 0x9e28, 0x4b86, 0x90, 0xe9, 0x9e, 0x9f, 0x8a, 0x5e, 0xef, 0xaf)]
203interface ITaskbarList3(ITaskbarList3Vtbl): ITaskbarList2(ITaskbarList2Vtbl) {
204 fn SetProgressValue(
205 hwnd: HWND,
206 ullCompleted: ULONGLONG,
207 ullTotal: ULONGLONG,
208 ) -> HRESULT,
209 fn SetProgressState(
210 hwnd: HWND,
211 tbpFlags: TBPFLAG,
212 ) -> HRESULT,
213 fn RegisterTab(
214 hwndTab: HWND,
215 hwndMDI: HWND,
216 ) -> HRESULT,
217 fn UnregisterTab(
218 hwndTab: HWND,
219 ) -> HRESULT,
220 fn SetTabOrder(
221 hwndTab: HWND,
222 hwndInsertBefore: HWND,
223 ) -> HRESULT,
224 fn SetTabActive(
225 hwndTab: HWND,
226 hwndMDI: HWND,
227 dwReserved: DWORD,
228 ) -> HRESULT,
229 fn ThumbBarAddButtons(
230 hwnd: HWND,
231 cButtons: UINT,
232 pButton: LPTHUMBBUTTON,
233 ) -> HRESULT,
234 fn ThumbBarUpdateButtons(
235 hwnd: HWND,
236 cButtons: UINT,
237 pButton: LPTHUMBBUTTON,
238 ) -> HRESULT,
239 fn ThumbBarSetImageList(
240 hwnd: HWND,
241 himl: HIMAGELIST,
242 ) -> HRESULT,
243 fn SetOverlayIcon(
244 hwnd: HWND,
245 hIcon: HICON,
246 pszDescription: LPCWSTR,
247 ) -> HRESULT,
248 fn SetThumbnailTooltip(
249 hwnd: HWND,
250 pszTip: LPCWSTR,
251 ) -> HRESULT,
252 fn SetThumbnailClip(
253 hwnd: HWND,
254 prcClip: *mut RECT,
255 ) -> HRESULT,
256}}
257ENUM!{enum STPFLAG {
258 STPF_NONE = 0,
259 STPF_USEAPPTHUMBNAILALWAYS = 0x1,
260 STPF_USEAPPTHUMBNAILWHENACTIVE = 0x2,
261 STPF_USEAPPPEEKALWAYS = 0x4,
262 STPF_USEAPPPEEKWHENACTIVE = 0x8,
263}}
264RIDL!{#[uuid(0xc43dc798, 0x95d1, 0x4bea, 0x90, 0x30, 0xbb, 0x99, 0xe2, 0x98, 0x3a, 0x1a)]
265interface ITaskbarList4(ITaskbarList4Vtbl): ITaskbarList3(ITaskbarList3Vtbl) {
266 fn SetTabProperties(
267 hwndTab: HWND,
268 stpFlags: STPFLAG,
269 ) -> HRESULT,
270}}
271ENUM!{enum DESKTOP_SLIDESHOW_OPTIONS {
272 DSO_SHUFFLEIMAGES = 0x1,
273}}
274ENUM!{enum DESKTOP_SLIDESHOW_STATE {
275 DSS_ENABLED = 0x1,
276 DSS_SLIDESHOW = 0x2,
277 DSS_DISABLED_BY_REMOTE_SESSION = 0x4,
278}}
279ENUM!{enum DESKTOP_SLIDESHOW_DIRECTION {
280 DSD_FORWARD = 0,
281 DSD_BACKWARD = 1,
282}}
283ENUM!{enum DESKTOP_WALLPAPER_POSITION {
284 DWPOS_CENTER = 0,
285 DWPOS_TILE = 1,
286 DWPOS_STRETCH = 2,
287 DWPOS_FIT = 3,
288 DWPOS_FILL = 4,
289 DWPOS_SPAN = 5,
290}}
291RIDL!{#[uuid(0xb92b56a9, 0x8b55, 0x4e14, 0x9a, 0x89, 0x01, 0x99, 0xbb, 0xb6, 0xf9, 0x3b)]
292interface IDesktopWallpaper(IDesktopWallpaperVtbl): IUnknown(IUnknownVtbl) {
293 fn SetWallpaper(
294 monitorID: LPCWSTR,
295 wallpaper: LPCWSTR,
296 ) -> HRESULT,
297 fn GetWallpaper(
298 monitorID: LPCWSTR,
299 wallpaper: *mut LPWSTR,
300 ) -> HRESULT,
301 fn GetMonitorDevicePathAt(
302 monitorIndex: UINT,
303 monitorID: *mut LPWSTR,
304 ) -> HRESULT,
305 fn GetMonitorDevicePathCount(
306 count: *mut UINT,
307 ) -> HRESULT,
308 fn GetMonitorRECT(
309 monitorID: LPCWSTR,
310 displayRect: *mut RECT,
311 ) -> HRESULT,
312 fn SetBackgroundColor(
313 color: COLORREF,
314 ) -> HRESULT,
315 fn GetBackgroundColor(
316 color: *mut COLORREF,
317 ) -> HRESULT,
318 fn SetPosition(
319 position: DESKTOP_WALLPAPER_POSITION,
320 ) -> HRESULT,
321 fn GetPosition(
322 position: *mut DESKTOP_WALLPAPER_POSITION,
323 ) -> HRESULT,
324 fn SetSlideshow(
325 items: *mut IShellItemArray,
326 ) -> HRESULT,
327 fn GetSlideshow(
328 items: *mut *mut IShellItemArray,
329 ) -> HRESULT,
330 fn SetSlideshowOptions(
331 options: DESKTOP_SLIDESHOW_OPTIONS,
332 slideshowTick: UINT,
333 ) -> HRESULT,
334 fn GetSlideshowOptions(
335 options: *mut DESKTOP_SLIDESHOW_OPTIONS,
336 slideshowTick: *mut UINT,
337 ) -> HRESULT,
338 fn AdvanceSlideshow(
339 monitorID: LPCWSTR,
340 direction: DESKTOP_SLIDESHOW_DIRECTION,
341 ) -> HRESULT,
342 fn GetStatus(
343 state: *mut DESKTOP_SLIDESHOW_STATE,
344 ) -> HRESULT,
345 fn Enable(
346 enable: BOOL,
347 ) -> HRESULT,
348}}
349RIDL!{#[uuid(0x000214ee, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
350interface IShellLinkA(IShellLinkAVtbl): IUnknown(IUnknownVtbl) {
351 fn GetPath(
352 pszFile: LPSTR,
353 cch: c_int,
354 pfd: *mut WIN32_FIND_DATAA,
355 fFlags: DWORD,
356 ) -> HRESULT,
357 fn GetIDList(
358 ppidl: *mut PIDLIST_ABSOLUTE,
359 ) -> HRESULT,
360 fn SetIDList(
361 pidl: PCIDLIST_ABSOLUTE,
362 ) -> HRESULT,
363 fn GetDescription(
364 pszName: LPSTR,
365 cch: c_int,
366 ) -> HRESULT,
367 fn SetDescription(
368 pszName: LPCSTR,
369 ) -> HRESULT,
370 fn GetWorkingDirectory(
371 pszDir: LPSTR,
372 cch: c_int,
373 ) -> HRESULT,
374 fn SetWorkingDirectory(
375 pszDir: LPCSTR,
376 ) -> HRESULT,
377 fn GetArguments(
378 pszArgs: LPSTR,
379 cch: c_int,
380 ) -> HRESULT,
381 fn SetArguments(
382 pszArgs: LPCSTR,
383 ) -> HRESULT,
384 fn GetHotkey(
385 pwHotkey: *mut WORD,
386 ) -> HRESULT,
387 fn SetHotkey(
388 wHotkey: WORD,
389 ) -> HRESULT,
390 fn GetShowCmd(
391 piShowCmd: *mut c_int,
392 ) -> HRESULT,
393 fn SetShowCmd(
394 iShowCmd: c_int,
395 ) -> HRESULT,
396 fn GetIconLocation(
397 pszIconPath: LPSTR,
398 cch: c_int,
399 piIcon: *mut c_int,
400 ) -> HRESULT,
401 fn SetIconLocation(
402 pszIconPath: LPCSTR,
403 iIcon: c_int,
404 ) -> HRESULT,
405 fn SetRelativePath(
406 pszPathRel: LPCSTR,
407 dwReserved: DWORD,
408 ) -> HRESULT,
409 fn Resolve(
410 hwnd: HWND,
411 fFlags: DWORD,
412 ) -> HRESULT,
413 fn SetPath(
414 pszFile: LPCSTR,
415 ) -> HRESULT,
416}}
417RIDL!{#[uuid(0x000214f9, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
418interface IShellLinkW(IShellLinkWVtbl): IUnknown(IUnknownVtbl) {
419 fn GetPath(
420 pszFile: LPWSTR,
421 cch: c_int,
422 pfd: *mut WIN32_FIND_DATAW,
423 fFlags: DWORD,
424 ) -> HRESULT,
425 fn GetIDList(
426 ppidl: *mut PIDLIST_ABSOLUTE,
427 ) -> HRESULT,
428 fn SetIDList(
429 pidl: PCIDLIST_ABSOLUTE,
430 ) -> HRESULT,
431 fn GetDescription(
432 pszName: LPWSTR,
433 cch: c_int,
434 ) -> HRESULT,
435 fn SetDescription(
436 pszName: LPCWSTR,
437 ) -> HRESULT,
438 fn GetWorkingDirectory(
439 pszDir: LPWSTR,
440 cch: c_int,
441 ) -> HRESULT,
442 fn SetWorkingDirectory(
443 pszDir: LPCWSTR,
444 ) -> HRESULT,
445 fn GetArguments(
446 pszArgs: LPWSTR,
447 cch: c_int,
448 ) -> HRESULT,
449 fn SetArguments(
450 pszArgs: LPCWSTR,
451 ) -> HRESULT,
452 fn GetHotkey(
453 pwHotkey: *mut WORD,
454 ) -> HRESULT,
455 fn SetHotkey(
456 wHotkey: WORD,
457 ) -> HRESULT,
458 fn GetShowCmd(
459 piShowCmd: *mut c_int,
460 ) -> HRESULT,
461 fn SetShowCmd(
462 iShowCmd: c_int,
463 ) -> HRESULT,
464 fn GetIconLocation(
465 pszIconPath: LPWSTR,
466 cch: c_int,
467 piIcon: *mut c_int,
468 ) -> HRESULT,
469 fn SetIconLocation(
470 pszIconPath: LPCWSTR,
471 iIcon: c_int,
472 ) -> HRESULT,
473 fn SetRelativePath(
474 pszPathRel: LPCWSTR,
475 dwReserved: DWORD,
476 ) -> HRESULT,
477 fn Resolve(
478 hwnd: HWND,
479 fFlags: DWORD,
480 ) -> HRESULT,
481 fn SetPath(
482 pszFile: LPCWSTR,
483 ) -> HRESULT,
484}}
485RIDL!{#[uuid(0xc2cf3110, 0x460e, 0x4fc1, 0xb9, 0xd0, 0x8a, 0x1c, 0x0c, 0x9c, 0xc4, 0xbd)]
486class DesktopWallpaper;}
487RIDL!{#[uuid(0x00021400, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
488class ShellDesktop;}
489RIDL!{#[uuid(0xf3364ba0, 0x65b9, 0x11ce, 0xa9, 0xba, 0x00, 0xaa, 0x00, 0x4a, 0xe8, 0x37)]
490class ShellFSFolder;}
491RIDL!{#[uuid(0x208d2c60, 0x3aea, 0x1069, 0xa2, 0xd7, 0x08, 0x00, 0x2b, 0x30, 0x30, 0x9d)]
492class NetworkPlaces;}
493RIDL!{#[uuid(0x00021401, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)]
494class ShellLink;}
495RIDL!{#[uuid(0x94357b53, 0xca29, 0x4b78, 0x83, 0xae, 0xe8, 0xfe, 0x74, 0x09, 0x13, 0x4f)]
496class DriveSizeCategorizer;}
497RIDL!{#[uuid(0xb0a8f3cf, 0x4333, 0x4bab, 0x88, 0x73, 0x1c, 0xcb, 0x1c, 0xad, 0xa4, 0x8b)]
498class DriveTypeCategorizer;}
499RIDL!{#[uuid(0xb5607793, 0x24ac, 0x44c7, 0x82, 0xe2, 0x83, 0x17, 0x26, 0xaa, 0x6c, 0xb7)]
500class FreeSpaceCategorizer;}
501RIDL!{#[uuid(0x55d7b852, 0xf6d1, 0x42f2, 0xaa, 0x75, 0x87, 0x28, 0xa1, 0xb2, 0xd2, 0x64)]
502class SizeCategorizer;}
503RIDL!{#[uuid(0xd912f8cf, 0x0396, 0x4915, 0x88, 0x4e, 0xfb, 0x42, 0x5d, 0x32, 0x94, 0x3b)]
504class PropertiesUI;}
505RIDL!{#[uuid(0x0010890e, 0x8789, 0x413c, 0xad, 0xbc, 0x48, 0xf5, 0xb5, 0x11, 0xb3, 0xaf)]
506class UserNotification;}
507RIDL!{#[uuid(0x56fdf344, 0xfd6d, 0x11d0, 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90)]
508class TaskbarList;}
509RIDL!{#[uuid(0x9ac9fbe1, 0xe0a2, 0x4ad6, 0xb4, 0xee, 0xe2, 0x12, 0x01, 0x3e, 0xa9, 0x17)]
510class ShellItem;}
511RIDL!{#[uuid(0x72eb61e0, 0x8672, 0x4303, 0x91, 0x75, 0xf2, 0xe4, 0xc6, 0x8b, 0x2e, 0x7c)]
512class NamespaceWalker;}
513RIDL!{#[uuid(0x3ad05575, 0x8857, 0x4850, 0x92, 0x77, 0x11, 0xb8, 0x5b, 0xdb, 0x8e, 0x09)]
514class FileOperation;}
515RIDL!{#[uuid(0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5, 0xa1, 0x60, 0xf8, 0x2a, 0x20, 0xae, 0xf7)]
516class FileOpenDialog;}
517RIDL!{#[uuid(0xc0b4e2f3, 0xba21, 0x4773, 0x8d, 0xba, 0x33, 0x5e, 0xc9, 0x46, 0xeb, 0x8b)]
518class FileSaveDialog;}
519RIDL!{#[uuid(0x4df0c730, 0xdf9d, 0x4ae3, 0x91, 0x53, 0xaa, 0x6b, 0x82, 0xe9, 0x79, 0x5a)]
520class KnownFolderManager;}
521RIDL!{#[uuid(0x49f371e1, 0x8c5c, 0x4d9c, 0x9a, 0x3b, 0x54, 0xa6, 0x82, 0x7f, 0x51, 0x3c)]
522class SharingConfigurationManager;}
523RIDL!{#[uuid(0x7007acc7, 0x3202, 0x11d1, 0xaa, 0xd2, 0x00, 0x80, 0x5f, 0xc1, 0x27, 0x0e)]
524class NetworkConnections;}
525RIDL!{#[uuid(0xd6277990, 0x4c6a, 0x11cf, 0x8d, 0x87, 0x00, 0xaa, 0x00, 0x60, 0xf5, 0xbf)]
526class ScheduledTasks;}
527RIDL!{#[uuid(0x591209c7, 0x767b, 0x42b2, 0x9f, 0xba, 0x44, 0xee, 0x46, 0x15, 0xf2, 0xc7)]
528class ApplicationAssociationRegistration;}
529RIDL!{#[uuid(0x14010e02, 0xbbbd, 0x41f0, 0x88, 0xe3, 0xed, 0xa3, 0x71, 0x21, 0x65, 0x84)]
530class SearchFolderItemFactory;}
531RIDL!{#[uuid(0x06622d85, 0x6856, 0x4460, 0x8d, 0xe1, 0xa8, 0x19, 0x21, 0xb4, 0x1c, 0x4b)]
532class OpenControlPanel;}
533RIDL!{#[uuid(0x9e56be60, 0xc50f, 0x11cf, 0x9a, 0x2c, 0x00, 0xa0, 0xc9, 0x0a, 0x90, 0xce)]
534class MailRecipient;}
535RIDL!{#[uuid(0xf02c1a0d, 0xbe21, 0x4350, 0x88, 0xb0, 0x73, 0x67, 0xfc, 0x96, 0xef, 0x3c)]
536class NetworkExplorerFolder;}
537RIDL!{#[uuid(0x77f10cf0, 0x3db5, 0x4966, 0xb5, 0x20, 0xb7, 0xc5, 0x4f, 0xd3, 0x5e, 0xd6)]
538class DestinationList;}
539RIDL!{#[uuid(0x86c14003, 0x4d6b, 0x4ef3, 0xa7, 0xb4, 0x05, 0x06, 0x66, 0x3b, 0x2e, 0x68)]
540class ApplicationDestinations;}
541RIDL!{#[uuid(0x86bec222, 0x30f2, 0x47e0, 0x9f, 0x25, 0x60, 0xd1, 0x1c, 0xd7, 0x5c, 0x28)]
542class ApplicationDocumentLists;}
543RIDL!{#[uuid(0xde77ba04, 0x3c92, 0x4d11, 0xa1, 0xa5, 0x42, 0x35, 0x2a, 0x53, 0xe0, 0xe3)]
544class HomeGroup;}
545RIDL!{#[uuid(0xd9b3211d, 0xe57f, 0x4426, 0xaa, 0xef, 0x30, 0xa8, 0x06, 0xad, 0xd3, 0x97)]
546class ShellLibrary;}
547RIDL!{#[uuid(0x273eb5e7, 0x88b0, 0x4843, 0xbf, 0xef, 0xe2, 0xc8, 0x1d, 0x43, 0xaa, 0xe5)]
548class AppStartupLink;}
549RIDL!{#[uuid(0x2d3468c1, 0x36a7, 0x43b6, 0xac, 0x24, 0xd3, 0xf0, 0x2f, 0xd9, 0x60, 0x7a)]
550class EnumerableObjectCollection;}
551RIDL!{#[uuid(0xd5120aa3, 0x46ba, 0x44c5, 0x82, 0x2d, 0xca, 0x80, 0x92, 0xc1, 0xfc, 0x72)]
552class FrameworkInputPane;}
553RIDL!{#[uuid(0xc63382be, 0x7933, 0x48d0, 0x9a, 0xc8, 0x85, 0xfb, 0x46, 0xbe, 0x2f, 0xdd)]
554class DefFolderMenu;}
555RIDL!{#[uuid(0x7e5fe3d9, 0x985f, 0x4908, 0x91, 0xf9, 0xee, 0x19, 0xf9, 0xfd, 0x15, 0x14)]
556class AppVisibility;}
557RIDL!{#[uuid(0x4ed3a719, 0xcea8, 0x4bd9, 0x91, 0x0d, 0xe2, 0x52, 0xf9, 0x97, 0xaf, 0xc2)]
558class AppShellVerbHandler;}
559RIDL!{#[uuid(0xe44e9428, 0xbdbc, 0x4987, 0xa0, 0x99, 0x40, 0xdc, 0x8f, 0xd2, 0x55, 0xe7)]
560class ExecuteUnknown;}
561RIDL!{#[uuid(0xb1aec16f, 0x2383, 0x4852, 0xb0, 0xe9, 0x8f, 0x0b, 0x1d, 0xc6, 0x6b, 0x4d)]
562class PackageDebugSettings;}
563RIDL!{#[uuid(0x6b273fc5, 0x61fd, 0x4918, 0x95, 0xa2, 0xc3, 0xb5, 0xe9, 0xd7, 0xf5, 0x81)]
564class SuspensionDependencyManager;}
565RIDL!{#[uuid(0x45ba127d, 0x10a8, 0x46ea, 0x8a, 0xb7, 0x56, 0xea, 0x90, 0x78, 0x94, 0x3c)]
566class ApplicationActivationManager;}
567RIDL!{#[uuid(0x958a6fb5, 0xdcb2, 0x4faf, 0xaa, 0xfd, 0x7f, 0xb0, 0x54, 0xad, 0x1a, 0x3b)]
568class ApplicationDesignModeSettings;}
569extern "system" {
570 pub fn SHCreateItemFromParsingName(
571 pszPath: PCWSTR,
572 pbc: *mut IBindCtx,
573 riid: REFIID,
574 ppv: *mut *mut c_void
575 ) -> HRESULT;
576}