1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 use ctypes::{c_int, c_void}; 7 use shared::guiddef::{REFGUID, REFIID}; 8 use shared::minwindef::{BOOL, DWORD, UINT, ULONG, WORD}; 9 use shared::windef::{COLORREF, HICON, HWND, RECT}; 10 use um::commctrl::HIMAGELIST; 11 use um::minwinbase::{WIN32_FIND_DATAA, WIN32_FIND_DATAW}; 12 use um::objidl::IBindCtx; 13 use um::propkeydef::REFPROPERTYKEY; 14 use um::propsys::GETPROPERTYSTOREFLAGS; 15 use um::shtypes::{PCIDLIST_ABSOLUTE, PIDLIST_ABSOLUTE}; 16 use um::unknwnbase::{IUnknown, IUnknownVtbl}; 17 use um::winnt::{HRESULT, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, ULONGLONG, WCHAR}; 18 DEFINE_GUID!{CLSID_DesktopWallpaper, 19 0xc2cf3110, 0x460e, 0x4fc1, 0xb9, 0xd0, 0x8a, 0x1c, 0x0c, 0x9c, 0xc4, 0xbd} 20 DEFINE_GUID!{CLSID_TaskbarList, 21 0x56fdf344, 0xfd6d, 0x11d0, 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90} 22 DEFINE_GUID!{CLSID_FileOpenDialog, 23 0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5, 0xa1, 0x60, 0xf8, 0x2a, 0x20, 0xae, 0xf7} 24 DEFINE_GUID!{CLSID_FileSaveDialog, 25 0xc0b4e2f3, 0xba21, 0x4773, 0x8d, 0xba, 0x33, 0x5e, 0xc9, 0x46, 0xeb, 0x8b} 26 //4498 27 ENUM!{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 }} 42 pub type SFGAOF = ULONG; 43 //9466 44 ENUM!{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 }} 56 ENUM!{enum SICHINTF { 57 SICHINT_DISPLAY = 0, 58 SICHINT_ALLFIELDS = 0x80000000, 59 SICHINT_CANONICAL = 0x10000000, 60 SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000, 61 }} 62 RIDL!{#[uuid(0x43826d1e, 0xe718, 0x42ee, 0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe)] 63 interface 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 }} 87 ENUM!{enum SIATTRIBFLAGS { 88 SIATTRIBFLAGS_AND = 0x1, 89 SIATTRIBFLAGS_OR = 0x2, 90 SIATTRIBFLAGS_APPCOMPAT = 0x3, 91 SIATTRIBFLAGS_MASK = 0x3, 92 SIATTRIBFLAGS_ALLITEMS = 0x4000, 93 }} 94 RIDL!{#[uuid(0xb63ea76d, 0x1f85, 0x456f, 0xa1, 0x9c, 0x48, 0x15, 0x9e, 0xfa, 0x85, 0x8b)] 95 interface 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 // TODO: Add IEnumShellItems 125 //fn EnumItems( 126 // ppenumShellItems: *mut *mut IEnumShellItems, 127 //) -> HRESULT, 128 }} 129 //20869 130 RIDL!{#[uuid(0xb4db1657, 0x70d7, 0x485e, 0x8e, 0x3e, 0x6f, 0xcb, 0x5a, 0x5c, 0x18, 0x02)] 131 interface IModalWindow(IModalWindowVtbl): IUnknown(IUnknownVtbl) { 132 fn Show( 133 hwndOwner: HWND, 134 ) -> HRESULT, 135 }} 136 //22307 137 //27457 138 RIDL!{#[uuid(0x2659b475, 0xeeb8, 0x48b7, 0x8f, 0x07, 0xb3, 0x78, 0x81, 0x0f, 0x48, 0xcf)] 139 interface 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 }} 148 RIDL!{#[uuid(0x56fdf342, 0xfd6d, 0x11d0, 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90)] 149 interface 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 }} 164 RIDL!{#[uuid(0x602d4995, 0xb13a, 0x429b, 0xa6, 0x6e, 0x19, 0x35, 0xe4, 0x4f, 0x43, 0x17)] 165 interface ITaskbarList2(ITaskbarList2Vtbl): ITaskbarList(ITaskbarListVtbl) { 166 fn MarkFullscreenWindow( 167 hwnd: HWND, 168 fFullscreen: BOOL, 169 ) -> HRESULT, 170 }} 171 ENUM!{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 }} 179 ENUM!{enum THUMBBUTTONMASK { 180 THB_BITMAP = 0x1, 181 THB_ICON = 0x2, 182 THB_TOOLTIP = 0x4, 183 THB_FLAGS = 0x8, 184 }} 185 STRUCT!{struct THUMBBUTTON { 186 dwMask: THUMBBUTTONMASK, 187 iId: UINT, 188 iBitmap: UINT, 189 hIcon: HICON, 190 szTip: [WCHAR; 260], 191 dwFlags: THUMBBUTTONFLAGS, 192 }} 193 pub type LPTHUMBBUTTON = *mut THUMBBUTTON; 194 pub const THBN_CLICKED: WORD = 0x1800; 195 ENUM!{enum TBPFLAG { 196 TBPF_NOPROGRESS = 0, 197 TBPF_INDETERMINATE = 0x1, 198 TBPF_NORMAL = 0x2, 199 TBPF_ERROR = 0x4, 200 TBPF_PAUSED = 0x8, 201 }} 202 RIDL!{#[uuid(0xea1afb91, 0x9e28, 0x4b86, 0x90, 0xe9, 0x9e, 0x9f, 0x8a, 0x5e, 0xef, 0xaf)] 203 interface 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 }} 257 ENUM!{enum STPFLAG { 258 STPF_NONE = 0, 259 STPF_USEAPPTHUMBNAILALWAYS = 0x1, 260 STPF_USEAPPTHUMBNAILWHENACTIVE = 0x2, 261 STPF_USEAPPPEEKALWAYS = 0x4, 262 STPF_USEAPPPEEKWHENACTIVE = 0x8, 263 }} 264 RIDL!{#[uuid(0xc43dc798, 0x95d1, 0x4bea, 0x90, 0x30, 0xbb, 0x99, 0xe2, 0x98, 0x3a, 0x1a)] 265 interface ITaskbarList4(ITaskbarList4Vtbl): ITaskbarList3(ITaskbarList3Vtbl) { 266 fn SetTabProperties( 267 hwndTab: HWND, 268 stpFlags: STPFLAG, 269 ) -> HRESULT, 270 }} 271 ENUM!{enum DESKTOP_SLIDESHOW_OPTIONS { 272 DSO_SHUFFLEIMAGES = 0x1, 273 }} 274 ENUM!{enum DESKTOP_SLIDESHOW_STATE { 275 DSS_ENABLED = 0x1, 276 DSS_SLIDESHOW = 0x2, 277 DSS_DISABLED_BY_REMOTE_SESSION = 0x4, 278 }} 279 ENUM!{enum DESKTOP_SLIDESHOW_DIRECTION { 280 DSD_FORWARD = 0, 281 DSD_BACKWARD = 1, 282 }} 283 ENUM!{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 }} 291 RIDL!{#[uuid(0xb92b56a9, 0x8b55, 0x4e14, 0x9a, 0x89, 0x01, 0x99, 0xbb, 0xb6, 0xf9, 0x3b)] 292 interface 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 }} 349 RIDL!{#[uuid(0x000214ee, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 350 interface 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 }} 417 RIDL!{#[uuid(0x000214f9, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 418 interface 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 }} 485 RIDL!{#[uuid(0xc2cf3110, 0x460e, 0x4fc1, 0xb9, 0xd0, 0x8a, 0x1c, 0x0c, 0x9c, 0xc4, 0xbd)] 486 class DesktopWallpaper;} 487 RIDL!{#[uuid(0x00021400, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 488 class ShellDesktop;} 489 RIDL!{#[uuid(0xf3364ba0, 0x65b9, 0x11ce, 0xa9, 0xba, 0x00, 0xaa, 0x00, 0x4a, 0xe8, 0x37)] 490 class ShellFSFolder;} 491 RIDL!{#[uuid(0x208d2c60, 0x3aea, 0x1069, 0xa2, 0xd7, 0x08, 0x00, 0x2b, 0x30, 0x30, 0x9d)] 492 class NetworkPlaces;} 493 RIDL!{#[uuid(0x00021401, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 494 class ShellLink;} 495 RIDL!{#[uuid(0x94357b53, 0xca29, 0x4b78, 0x83, 0xae, 0xe8, 0xfe, 0x74, 0x09, 0x13, 0x4f)] 496 class DriveSizeCategorizer;} 497 RIDL!{#[uuid(0xb0a8f3cf, 0x4333, 0x4bab, 0x88, 0x73, 0x1c, 0xcb, 0x1c, 0xad, 0xa4, 0x8b)] 498 class DriveTypeCategorizer;} 499 RIDL!{#[uuid(0xb5607793, 0x24ac, 0x44c7, 0x82, 0xe2, 0x83, 0x17, 0x26, 0xaa, 0x6c, 0xb7)] 500 class FreeSpaceCategorizer;} 501 RIDL!{#[uuid(0x55d7b852, 0xf6d1, 0x42f2, 0xaa, 0x75, 0x87, 0x28, 0xa1, 0xb2, 0xd2, 0x64)] 502 class SizeCategorizer;} 503 RIDL!{#[uuid(0xd912f8cf, 0x0396, 0x4915, 0x88, 0x4e, 0xfb, 0x42, 0x5d, 0x32, 0x94, 0x3b)] 504 class PropertiesUI;} 505 RIDL!{#[uuid(0x0010890e, 0x8789, 0x413c, 0xad, 0xbc, 0x48, 0xf5, 0xb5, 0x11, 0xb3, 0xaf)] 506 class UserNotification;} 507 RIDL!{#[uuid(0x56fdf344, 0xfd6d, 0x11d0, 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90)] 508 class TaskbarList;} 509 RIDL!{#[uuid(0x9ac9fbe1, 0xe0a2, 0x4ad6, 0xb4, 0xee, 0xe2, 0x12, 0x01, 0x3e, 0xa9, 0x17)] 510 class ShellItem;} 511 RIDL!{#[uuid(0x72eb61e0, 0x8672, 0x4303, 0x91, 0x75, 0xf2, 0xe4, 0xc6, 0x8b, 0x2e, 0x7c)] 512 class NamespaceWalker;} 513 RIDL!{#[uuid(0x3ad05575, 0x8857, 0x4850, 0x92, 0x77, 0x11, 0xb8, 0x5b, 0xdb, 0x8e, 0x09)] 514 class FileOperation;} 515 RIDL!{#[uuid(0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5, 0xa1, 0x60, 0xf8, 0x2a, 0x20, 0xae, 0xf7)] 516 class FileOpenDialog;} 517 RIDL!{#[uuid(0xc0b4e2f3, 0xba21, 0x4773, 0x8d, 0xba, 0x33, 0x5e, 0xc9, 0x46, 0xeb, 0x8b)] 518 class FileSaveDialog;} 519 RIDL!{#[uuid(0x4df0c730, 0xdf9d, 0x4ae3, 0x91, 0x53, 0xaa, 0x6b, 0x82, 0xe9, 0x79, 0x5a)] 520 class KnownFolderManager;} 521 RIDL!{#[uuid(0x49f371e1, 0x8c5c, 0x4d9c, 0x9a, 0x3b, 0x54, 0xa6, 0x82, 0x7f, 0x51, 0x3c)] 522 class SharingConfigurationManager;} 523 RIDL!{#[uuid(0x7007acc7, 0x3202, 0x11d1, 0xaa, 0xd2, 0x00, 0x80, 0x5f, 0xc1, 0x27, 0x0e)] 524 class NetworkConnections;} 525 RIDL!{#[uuid(0xd6277990, 0x4c6a, 0x11cf, 0x8d, 0x87, 0x00, 0xaa, 0x00, 0x60, 0xf5, 0xbf)] 526 class ScheduledTasks;} 527 RIDL!{#[uuid(0x591209c7, 0x767b, 0x42b2, 0x9f, 0xba, 0x44, 0xee, 0x46, 0x15, 0xf2, 0xc7)] 528 class ApplicationAssociationRegistration;} 529 RIDL!{#[uuid(0x14010e02, 0xbbbd, 0x41f0, 0x88, 0xe3, 0xed, 0xa3, 0x71, 0x21, 0x65, 0x84)] 530 class SearchFolderItemFactory;} 531 RIDL!{#[uuid(0x06622d85, 0x6856, 0x4460, 0x8d, 0xe1, 0xa8, 0x19, 0x21, 0xb4, 0x1c, 0x4b)] 532 class OpenControlPanel;} 533 RIDL!{#[uuid(0x9e56be60, 0xc50f, 0x11cf, 0x9a, 0x2c, 0x00, 0xa0, 0xc9, 0x0a, 0x90, 0xce)] 534 class MailRecipient;} 535 RIDL!{#[uuid(0xf02c1a0d, 0xbe21, 0x4350, 0x88, 0xb0, 0x73, 0x67, 0xfc, 0x96, 0xef, 0x3c)] 536 class NetworkExplorerFolder;} 537 RIDL!{#[uuid(0x77f10cf0, 0x3db5, 0x4966, 0xb5, 0x20, 0xb7, 0xc5, 0x4f, 0xd3, 0x5e, 0xd6)] 538 class DestinationList;} 539 RIDL!{#[uuid(0x86c14003, 0x4d6b, 0x4ef3, 0xa7, 0xb4, 0x05, 0x06, 0x66, 0x3b, 0x2e, 0x68)] 540 class ApplicationDestinations;} 541 RIDL!{#[uuid(0x86bec222, 0x30f2, 0x47e0, 0x9f, 0x25, 0x60, 0xd1, 0x1c, 0xd7, 0x5c, 0x28)] 542 class ApplicationDocumentLists;} 543 RIDL!{#[uuid(0xde77ba04, 0x3c92, 0x4d11, 0xa1, 0xa5, 0x42, 0x35, 0x2a, 0x53, 0xe0, 0xe3)] 544 class HomeGroup;} 545 RIDL!{#[uuid(0xd9b3211d, 0xe57f, 0x4426, 0xaa, 0xef, 0x30, 0xa8, 0x06, 0xad, 0xd3, 0x97)] 546 class ShellLibrary;} 547 RIDL!{#[uuid(0x273eb5e7, 0x88b0, 0x4843, 0xbf, 0xef, 0xe2, 0xc8, 0x1d, 0x43, 0xaa, 0xe5)] 548 class AppStartupLink;} 549 RIDL!{#[uuid(0x2d3468c1, 0x36a7, 0x43b6, 0xac, 0x24, 0xd3, 0xf0, 0x2f, 0xd9, 0x60, 0x7a)] 550 class EnumerableObjectCollection;} 551 RIDL!{#[uuid(0xd5120aa3, 0x46ba, 0x44c5, 0x82, 0x2d, 0xca, 0x80, 0x92, 0xc1, 0xfc, 0x72)] 552 class FrameworkInputPane;} 553 RIDL!{#[uuid(0xc63382be, 0x7933, 0x48d0, 0x9a, 0xc8, 0x85, 0xfb, 0x46, 0xbe, 0x2f, 0xdd)] 554 class DefFolderMenu;} 555 RIDL!{#[uuid(0x7e5fe3d9, 0x985f, 0x4908, 0x91, 0xf9, 0xee, 0x19, 0xf9, 0xfd, 0x15, 0x14)] 556 class AppVisibility;} 557 RIDL!{#[uuid(0x4ed3a719, 0xcea8, 0x4bd9, 0x91, 0x0d, 0xe2, 0x52, 0xf9, 0x97, 0xaf, 0xc2)] 558 class AppShellVerbHandler;} 559 RIDL!{#[uuid(0xe44e9428, 0xbdbc, 0x4987, 0xa0, 0x99, 0x40, 0xdc, 0x8f, 0xd2, 0x55, 0xe7)] 560 class ExecuteUnknown;} 561 RIDL!{#[uuid(0xb1aec16f, 0x2383, 0x4852, 0xb0, 0xe9, 0x8f, 0x0b, 0x1d, 0xc6, 0x6b, 0x4d)] 562 class PackageDebugSettings;} 563 RIDL!{#[uuid(0x6b273fc5, 0x61fd, 0x4918, 0x95, 0xa2, 0xc3, 0xb5, 0xe9, 0xd7, 0xf5, 0x81)] 564 class SuspensionDependencyManager;} 565 RIDL!{#[uuid(0x45ba127d, 0x10a8, 0x46ea, 0x8a, 0xb7, 0x56, 0xea, 0x90, 0x78, 0x94, 0x3c)] 566 class ApplicationActivationManager;} 567 RIDL!{#[uuid(0x958a6fb5, 0xdcb2, 0x4faf, 0xaa, 0xfd, 0x7f, 0xb0, 0x54, 0xad, 0x1a, 0x3b)] 568 class ApplicationDesignModeSettings;} 569 extern "system" { SHCreateItemFromParsingName( pszPath: PCWSTR, pbc: *mut IBindCtx, riid: REFIID, ppv: *mut *mut c_void ) -> HRESULT570 pub fn SHCreateItemFromParsingName( 571 pszPath: PCWSTR, 572 pbc: *mut IBindCtx, 573 riid: REFIID, 574 ppv: *mut *mut c_void 575 ) -> HRESULT; 576 } 577