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 //! this ALWAYS GENERATED file contains the definitions for the interfaces 7 use ctypes::c_void; 8 use shared::basetsd::UINT64; 9 use shared::guiddef::{CLSID, IID, REFCLSID, REFIID}; 10 use shared::minwindef::{BOOL, BYTE, DWORD, FILETIME, HGLOBAL, ULONG, WORD}; 11 use shared::ntdef::LONG; 12 use shared::windef::{HBITMAP, HENHMETAFILE}; 13 use shared::wtypes::{CLIPFORMAT, HMETAFILEPICT}; 14 use shared::wtypesbase::{LPOLESTR, OLECHAR}; 15 use um::objidlbase::{IEnumString, IStream, STATSTG}; 16 use um::unknwnbase::{IUnknown, IUnknownVtbl}; 17 use um::winnt::{HRESULT, ULARGE_INTEGER}; 18 //8402 19 STRUCT!{struct BIND_OPTS { 20 cbStruct: DWORD, 21 grfFlags: DWORD, 22 grfMode: DWORD, 23 dwTickCountDeadline: DWORD, 24 }} 25 pub type LPBIND_OPTS = *mut BIND_OPTS; 26 //8479 27 RIDL!{#[uuid(0x0000000e, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 28 interface IBindCtx(IBindCtxVtbl): IUnknown(IUnknownVtbl) { 29 fn RegisterObjectBound( 30 punk: *mut IUnknown, 31 ) -> HRESULT, 32 fn RevokeObjectBound( 33 punk: *mut IUnknown, 34 ) -> HRESULT, 35 fn ReleaseBoundObjects() -> HRESULT, 36 fn SetBindOptions( 37 pbindopts: *mut BIND_OPTS, 38 ) -> HRESULT, 39 fn GetBindOptions( 40 pbindopts: *mut BIND_OPTS, 41 ) -> HRESULT, 42 fn GetRunningObjectTable( 43 pprot: *mut *mut IRunningObjectTable, 44 ) -> HRESULT, 45 fn RegisterObjectParam( 46 pszKey: LPOLESTR, 47 punk: *mut IUnknown, 48 ) -> HRESULT, 49 fn GetObjectParam( 50 pszKey: LPOLESTR, 51 ppunk: *mut *mut IUnknown, 52 ) -> HRESULT, 53 fn EnumObjectParam( 54 ppenum: *mut *mut IEnumString, 55 ) -> HRESULT, 56 fn RevokeObjectParam( 57 pszKey: LPOLESTR, 58 ) -> HRESULT, 59 }} 60 //8681 61 RIDL!{#[uuid(0x00000102, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 62 interface IEnumMoniker(IEnumMonikerVtbl): IUnknown(IUnknownVtbl) { 63 fn Next( 64 celt: ULONG, 65 rgelt: *mut *mut IMoniker, 66 pceltFetched: *mut ULONG, 67 ) -> HRESULT, 68 fn Skip( 69 celt: ULONG, 70 ) -> HRESULT, 71 fn Reset() -> HRESULT, 72 fn Clone( 73 ppenum: *mut *mut IEnumMoniker, 74 ) -> HRESULT, 75 }} 76 //8958 77 RIDL!{#[uuid(0x00000010, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 78 interface IRunningObjectTable(IRunningObjectTableVtbl): IUnknown(IUnknownVtbl) { 79 fn Register( 80 grfFlags: DWORD, 81 punkObject: *mut IUnknown, 82 pmkObjectName: *mut IMoniker, 83 pdwRegister: *mut DWORD, 84 ) -> HRESULT, 85 fn Revoke( 86 dwRegister: DWORD, 87 ) -> HRESULT, 88 fn IsRunning( 89 pmkObjectName: *mut IMoniker, 90 ) -> HRESULT, 91 fn GetObject( 92 pmkObjectName: *mut IMoniker, 93 ppunkObject: *mut *mut IUnknown, 94 ) -> HRESULT, 95 fn NoteChangeTime( 96 dwRegister: DWORD, 97 pfiletime: *mut FILETIME, 98 ) -> HRESULT, 99 fn GetTimeOfLastChange( 100 pmkObjectName: *mut IMoniker, 101 pfiletime: *mut FILETIME, 102 ) -> HRESULT, 103 fn EnumRunning( 104 ppenumMoniker: *mut *mut IEnumMoniker, 105 ) -> HRESULT, 106 }} 107 //9125 108 RIDL!{#[uuid(0x0000010c, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 109 interface IPersist(IPersistVtbl): IUnknown(IUnknownVtbl) { 110 fn GetClassID( 111 pClassID: *mut CLSID, 112 ) -> HRESULT, 113 }} 114 //9207 115 RIDL!{#[uuid(0x00000109, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 116 interface IPersistStream(IPersistStreamVtbl): IPersist(IPersistVtbl) { 117 fn IsDirty() -> HRESULT, 118 fn Load( 119 pStm: *mut IStream, 120 ) -> HRESULT, 121 fn Save( 122 pStm: *mut IStream, 123 fClearDirty: BOOL, 124 ) -> HRESULT, 125 fn GetSizeMax( 126 pcbSize: *mut ULARGE_INTEGER, 127 ) -> HRESULT, 128 }} 129 //9350 130 RIDL!{#[uuid(0x0000000f, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 131 interface IMoniker(IMonikerVtbl): IPersistStream(IPersistStreamVtbl) { 132 fn BindToObject( 133 pbc: *mut IBindCtx, 134 pmkToLeft: *mut IMoniker, 135 riidResult: REFIID, 136 ppvResult: *mut *mut c_void, 137 ) -> HRESULT, 138 fn BindToStorage( 139 pbc: *mut IBindCtx, 140 pmkToLeft: *mut IMoniker, 141 riid: REFIID, 142 ppvObj: *mut *mut c_void, 143 ) -> HRESULT, 144 fn Reduce( 145 pbc: *mut IBindCtx, 146 dwReduceHowFar: DWORD, 147 ppmkToLeft: *mut *mut IMoniker, 148 ppmkReduced: *mut *mut IMoniker, 149 ) -> HRESULT, 150 fn ComposeWith( 151 pmkRight: *mut IMoniker, 152 fOnlyIfNotGeneric: BOOL, 153 ppmkComposite: *mut *mut IMoniker, 154 ) -> HRESULT, 155 fn Enum( 156 fForward: BOOL, 157 ppenumMoniker: *mut *mut IEnumMoniker, 158 ) -> HRESULT, 159 fn IsEqual( 160 pmkOtherMoniker: *mut IMoniker, 161 ) -> HRESULT, 162 fn Hash( 163 pdwHash: *mut DWORD, 164 ) -> HRESULT, 165 fn IsRunning( 166 pbc: *mut IBindCtx, 167 pmkToLeft: *mut IMoniker, 168 pmkNewlyRunning: *mut IMoniker, 169 ) -> HRESULT, 170 fn GetTimeOfLastChange( 171 pbc: *mut IBindCtx, 172 pmkToLeft: *mut IMoniker, 173 pFileTime: *mut FILETIME, 174 ) -> HRESULT, 175 fn Inverse( 176 ppmk: *mut *mut IMoniker, 177 ) -> HRESULT, 178 fn CommonPrefixWith( 179 pmkOther: *mut IMoniker, 180 ppmkPrefix: *mut *mut IMoniker, 181 ) -> HRESULT, 182 fn RelativePathTo( 183 pmkOther: *mut IMoniker, 184 ppmkRelPath: *mut *mut IMoniker, 185 ) -> HRESULT, 186 fn GetDisplayName( 187 pbc: *mut IBindCtx, 188 pmkToLeft: *mut IMoniker, 189 ppszDisplayName: *mut LPOLESTR, 190 ) -> HRESULT, 191 fn ParseDisplayName( 192 pbc: *mut IBindCtx, 193 pmkToLeft: *mut IMoniker, 194 pszDisplayName: LPOLESTR, 195 pchEaten: *mut ULONG, 196 ppmkOut: *mut *mut IMoniker, 197 ) -> HRESULT, 198 fn IsSystemMoniker( 199 pdwMksys: *mut DWORD, 200 ) -> HRESULT, 201 }} 202 ENUM!{enum EOLE_AUTHENTICATION_CAPABILITIES { 203 EOAC_NONE = 0, 204 EOAC_MUTUAL_AUTH = 0x1, 205 EOAC_STATIC_CLOAKING = 0x20, 206 EOAC_DYNAMIC_CLOAKING = 0x40, 207 EOAC_ANY_AUTHORITY = 0x80, 208 EOAC_MAKE_FULLSIC = 0x100, 209 EOAC_DEFAULT = 0x800, 210 EOAC_SECURE_REFS = 0x2, 211 EOAC_ACCESS_CONTROL = 0x4, 212 EOAC_APPID = 0x8, 213 EOAC_DYNAMIC = 0x10, 214 EOAC_REQUIRE_FULLSIC = 0x200, 215 EOAC_AUTO_IMPERSONATE = 0x400, 216 EOAC_NO_CUSTOM_MARSHAL = 0x2000, 217 EOAC_DISABLE_AAA = 0x1000, 218 }} 219 STRUCT!{struct SOLE_AUTHENTICATION_SERVICE { 220 dwAuthnSvc: DWORD, 221 dwAuthzSvc: DWORD, 222 pPrincipalName: *mut OLECHAR, 223 hr: HRESULT, 224 }} 225 RIDL!{#[uuid(0x0000000d, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 226 interface IEnumSTATSTG(IEnumSTATSTGVtbl): IUnknown(IUnknownVtbl) { 227 fn Next( 228 celt: ULONG, 229 rgelt: *mut STATSTG, 230 pceltFetched: *mut ULONG, 231 ) -> HRESULT, 232 fn Skip( 233 celt: ULONG, 234 ) -> HRESULT, 235 fn Reset() -> HRESULT, 236 fn Clone( 237 ppenum: *mut *mut IEnumSTATSTG, 238 ) -> HRESULT, 239 }} 240 pub type SNB = *const *const OLECHAR; 241 RIDL!{#[uuid(0x0000000b, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 242 interface IStorage(IStorageVtbl): IUnknown(IUnknownVtbl) { 243 fn CreateStream( 244 pwcsName: *const OLECHAR, 245 grfMode: DWORD, 246 reserved1: DWORD, 247 reserved2: DWORD, 248 ppstm: *mut *mut IStream, 249 ) -> HRESULT, 250 fn OpenStream( 251 pwcsName: *const OLECHAR, 252 reserved1: *const c_void, 253 grfMode: DWORD, 254 reserved2: DWORD, 255 ppstm: *mut *mut IStream, 256 ) -> HRESULT, 257 fn CreateStorage( 258 pwcsName: *const OLECHAR, 259 grfMode: DWORD, 260 reserved1: DWORD, 261 reserved2: DWORD, 262 ppstg: *mut *mut IStorage, 263 ) -> HRESULT, 264 fn OpenStorage( 265 pwcsName: *const OLECHAR, 266 pstgPriority: IStorage, 267 grfMode: DWORD, 268 snbExclude: SNB, 269 reserved: DWORD, 270 ppstg: *mut *mut IStorage, 271 ) -> HRESULT, 272 fn CopyTo( 273 ciidExclude: DWORD, 274 rgiidExclude: *const IID, 275 snbExclude: SNB, 276 pstgDest: *const IStorage, 277 ) -> HRESULT, 278 fn MoveElementTo( 279 pwcsName: *const OLECHAR, 280 pstgDest: *const IStorage, 281 pwcsNewName: *const OLECHAR, 282 grfFlags: DWORD, 283 ) -> HRESULT, 284 fn Commit( 285 grfCommitFlags: DWORD, 286 ) -> HRESULT, 287 fn Revert() -> HRESULT, 288 fn EnumElements( 289 reserved1: DWORD, 290 reserved2: *const c_void, 291 reserved3: DWORD, 292 ppenum: *mut *mut IEnumSTATSTG, 293 ) -> HRESULT, 294 fn DestroyElement( 295 pwcsName: *const OLECHAR, 296 ) -> HRESULT, 297 fn RenameElement( 298 pwcsOldName: *const OLECHAR, 299 pwcsNewName: *const OLECHAR, 300 ) -> HRESULT, 301 fn SetElementTimes( 302 pwcsName: *const OLECHAR, 303 pctime: *const FILETIME, 304 patime: *const FILETIME, 305 pmtime: *const FILETIME, 306 ) -> HRESULT, 307 fn SetClass( 308 clsid: REFCLSID, 309 ) -> HRESULT, 310 fn SetStateBits( 311 grfStateBits: DWORD, 312 grfMask: DWORD, 313 ) -> HRESULT, 314 fn Stat( 315 pstatstg: *mut STATSTG, 316 grfStatFlag: DWORD, 317 ) -> HRESULT, 318 }} 319 STRUCT!{struct DVTARGETDEVICE { 320 tdSize: DWORD, 321 tdDriverNameOffset: WORD, 322 tdDeviceNameOffset: WORD, 323 tdPortNameOffset: WORD, 324 tdExtDevmodeOFfset: WORD, 325 tdData: [BYTE; 1], 326 }} 327 STRUCT!{struct FORMATETC { 328 cfFormat: CLIPFORMAT, 329 ptd: *const DVTARGETDEVICE, 330 dwAspect: DWORD, 331 lindex: LONG, 332 tymed: DWORD, 333 }} 334 RIDL!{#[uuid(0x00000103, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 335 interface IEnumFORMATETC(IEnumFORMATETCVtbl): IUnknown(IUnknownVtbl) { 336 fn Next( 337 celt: ULONG, 338 rgelt: *mut FORMATETC, 339 pceltFetched: *mut ULONG, 340 ) -> HRESULT, 341 fn Skip( 342 celt: ULONG, 343 ) -> HRESULT, 344 fn Reset() -> HRESULT, 345 fn Clone( 346 ppenum: *mut *mut IEnumFORMATETC, 347 ) -> HRESULT, 348 }} 349 ENUM!{enum ADVF { 350 ADVF_NODATA = 1, 351 ADVF_PRIMEFIRST = 2, 352 ADVF_ONLYONCE = 4, 353 ADVF_DATAONSTOP = 64, 354 ADVFCACHE_NOHANDLER = 8, 355 ADVFCACHE_FORCEBUILTIN = 16, 356 ADVFCACHE_ONSAVE = 32, 357 }} 358 STRUCT!{struct STATDATA { 359 formatetc: FORMATETC, 360 advf: DWORD, 361 pAdvSInk: *mut IAdviseSink, 362 dwConnection: DWORD, 363 }} 364 RIDL!{#[uuid(0x00000105, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 365 interface IEnumSTATDATA(IEnumSTATDATAVtbl): IUnknown(IUnknownVtbl) { 366 fn Next( 367 celt: ULONG, 368 rgelt: *mut STATDATA, 369 pceltFetched: *mut ULONG, 370 ) -> HRESULT, 371 fn Skip( 372 celt: ULONG, 373 ) -> HRESULT, 374 fn Reset() -> HRESULT, 375 fn Clone( 376 ppenum: *mut *mut IEnumSTATDATA, 377 ) -> HRESULT, 378 }} 379 ENUM!{enum TYMED { 380 TYMED_HGLOBAL = 1, 381 TYMED_FILE = 2, 382 TYMED_ISTREAM = 4, 383 TYMED_ISTORAGE = 8, 384 TYMED_GDI = 16, 385 TYMED_MFPICT = 32, 386 TYMED_ENHMF = 64, 387 TYMED_NULL = 0, 388 }} 389 UNION!{union STGMEDIUM_u { 390 [u64; 7], //TODO: I guessed to move on 391 hBitmap hBitmap_mut: HBITMAP, 392 hMetaFilePict hMetaFilePict_mut: HMETAFILEPICT, 393 hEnhMetaFile hEnhMetaFile_mut: HENHMETAFILE, 394 hGlobal hGlobal_mut: HGLOBAL, 395 lpszFileName lpszFileName_mut: LPOLESTR, 396 pstm pstm_mut: *mut IStream, 397 pstg pstg_mut: *mut IStorage, 398 }} 399 STRUCT!{struct STGMEDIUM { 400 tymed: DWORD, 401 u: *mut STGMEDIUM_u, 402 pUnkForRelease: *mut IUnknown, 403 }} 404 RIDL!{#[uuid(0x0000010f, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 405 interface IAdviseSink(IAdviseSinkVtbl): IUnknown(IUnknownVtbl) { 406 fn OnDataChange( 407 pformatetc: *mut FORMATETC, 408 pStgmed: *mut STGMEDIUM, 409 ) -> c_void, 410 fn OnViewChange( 411 dwAspect: DWORD, 412 lindex: LONG, 413 ) -> c_void, 414 fn OnRename( 415 pmk: *mut IMoniker, 416 ) -> c_void, 417 fn OnSave() -> c_void, 418 fn OnClose() -> c_void, 419 }} 420 ENUM!{enum DATADIR { 421 DATADIR_GET = 1, 422 DATADIR_SET = 2, 423 }} 424 pub type LPDATAOBJECT = *mut IDataObject; 425 RIDL!{#[uuid(0x0000010e, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 426 interface IDataObject(IDataObjectVtbl): IUnknown(IUnknownVtbl) { 427 fn GetData( 428 pformatetcIn: *const FORMATETC, 429 pmedium: *mut STGMEDIUM, 430 ) -> HRESULT, 431 fn GetDataHere( 432 pformatetc: *const FORMATETC, 433 pmedium: *mut STGMEDIUM, 434 ) -> HRESULT, 435 fn QueryGetData( 436 pformatetc: *const FORMATETC, 437 ) -> HRESULT, 438 fn GetCanonicalFormatEtc( 439 pformatetcIn: *const FORMATETC, 440 pformatetcOut: *mut FORMATETC, 441 ) -> HRESULT, 442 fn SetData( 443 pformatetc: *const FORMATETC, 444 pformatetcOut: *const FORMATETC, 445 fRelease: BOOL, 446 ) -> HRESULT, 447 fn EnumFormatEtc( 448 dwDirection: DWORD, 449 ppenumFormatEtc: *mut *mut IEnumFORMATETC, 450 ) -> HRESULT, 451 fn DAdvise( 452 pformatetc: *const FORMATETC, 453 advf: DWORD, 454 pAdvSInk: *const IAdviseSink, 455 pdwConnection: *mut DWORD, 456 ) -> HRESULT, 457 fn DUnadvise( 458 dwConnection: DWORD, 459 ) -> HRESULT, 460 fn EnumDAdvise( 461 ppenumAdvise: *const *const IEnumSTATDATA, 462 ) -> HRESULT, 463 }} 464 RIDL!{#[uuid(0xa2f05a09, 0x27a2, 0x42b5, 0xbc, 0x0e, 0xac, 0x16, 0x3e, 0xf4, 0x9d, 0x9b)] 465 interface IApartmentShutdown(IApartmentShutdownVtbl): IUnknown(IUnknownVtbl) { 466 fn OnUninitialize( 467 ui64ApartmentIdentifier: UINT64, 468 ) -> (), 469 }} 470 RIDL!{#[uuid(0x00000003, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 471 interface IMarshal(IMarshalVtbl): IUnknown(IUnknownVtbl) { 472 fn GetUnmarshalClass( 473 riid: REFIID, 474 pv: *mut c_void, 475 dwDestContext: DWORD, 476 pvDestContext: *mut c_void, 477 mshlflags: DWORD, 478 pCid: *mut CLSID, 479 ) -> HRESULT, 480 fn GetMarshalSizeMax( 481 riid: REFIID, 482 pv: *mut c_void, 483 dwDestContext: DWORD, 484 pvDestContext: *mut c_void, 485 mshlflags: DWORD, 486 pSize: *mut DWORD, 487 ) -> HRESULT, 488 fn MarshalInterface( 489 pStm: *mut IStream, 490 riid: REFIID, 491 pv: *mut c_void, 492 dwDestContext: DWORD, 493 pvDestContext: *mut c_void, 494 mshlflags: DWORD, 495 ) -> HRESULT, 496 fn UnmarshalInterface( 497 pStm: *mut IStream, 498 riid: REFIID, 499 ppv: *mut *mut c_void, 500 ) -> HRESULT, 501 fn ReleaseMarshalData( 502 pStm: *mut IStream, 503 ) -> HRESULT, 504 fn DisconnectObject( 505 dwReserved: DWORD, 506 ) -> HRESULT, 507 }} 508