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_void; 7 use shared::guiddef::REFIID; 8 use shared::minwindef::{BOOL, ULONG}; 9 use um::winnt::HRESULT; 10 RIDL!{#[uuid(0x00000000, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 11 interface IUnknown(IUnknownVtbl) { 12 fn QueryInterface( 13 riid: REFIID, 14 ppvObject: *mut *mut c_void, 15 ) -> HRESULT, 16 fn AddRef() -> ULONG, 17 fn Release() -> ULONG, 18 }} 19 pub type LPUNKNOWN = *mut IUnknown; 20 RIDL!{#[uuid(0x000e0000, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 21 interface AsyncIUnknown(AsyncIUnknownVtbl): IUnknown(IUnknownVtbl) { 22 fn Begin_QueryInterface( 23 riid: REFIID, 24 ) -> HRESULT, 25 fn Finish_QueryInterface( 26 ppvObject: *mut *mut c_void, 27 ) -> HRESULT, 28 fn Begin_AddRef() -> HRESULT, 29 fn Finish_AddRef() -> ULONG, 30 fn Begin_Release() -> HRESULT, 31 fn Finish_Release() -> ULONG, 32 }} 33 RIDL!{#[uuid(0x00000001, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)] 34 interface IClassFactory(IClassFactoryVtbl): IUnknown(IUnknownVtbl) { 35 fn CreateInstance( 36 pUnkOuter: *mut IUnknown, 37 riid: REFIID, 38 ppvObject: *mut *mut c_void, 39 ) -> HRESULT, 40 fn LockServer( 41 fLock: BOOL, 42 ) -> HRESULT, 43 }} 44