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