1 // Copyright © 2015, Peter Atashian
2 // Licensed under the MIT License <LICENSE.md>
3 //! this ALWAYS GENERATED file contains the definitions for the interfaces
4 RIDL!(
5 interface IMalloc(IMallocVtbl): IUnknown(IUnknownVtbl) {
6     fn Alloc(&mut self, cb: ::SIZE_T) -> *mut ::c_void,
7     fn Realloc(&mut self, pv: *mut ::c_void, cb: ::SIZE_T) -> *mut ::c_void,
8     fn Free(&mut self, pv: *mut ::c_void) -> (),
9     fn GetSize(&mut self, pv: *mut ::c_void) -> ::SIZE_T,
10     fn DidAlloc(&mut self, pv: *mut ::c_void) -> ::c_int,
11     fn HeapMinimize(&mut self) -> ()
12 }
13 );
14 pub type LPMALLOC = *mut IMalloc;
15 STRUCT!{struct STATSTG {
16     pwcsName: ::LPOLESTR,
17     type_: ::DWORD,
18     cbSize: ::ULARGE_INTEGER,
19     mtime: ::FILETIME,
20     ctime: ::FILETIME,
21     atime: ::FILETIME,
22     grfMode: ::DWORD,
23     grfLocksSupported: ::DWORD,
24     clsid: ::CLSID,
25     grfStateBits: ::DWORD,
26     reserved: ::DWORD,
27 }}
28 //1945
29 pub type IEnumString = ::IUnknown; // TODO
30 //2075
31 RIDL!(
32 interface ISequentialStream(ISequentialStreamVtbl): IUnknown(IUnknownVtbl) {
33     fn Read(&mut self, pv: *mut ::c_void, cb: ::ULONG, pcbRead: *mut ::ULONG) -> ::HRESULT,
34     fn Write(&mut self, pv: *const ::c_void, cb: ::ULONG, pcbWritten: *mut ::ULONG) -> ::HRESULT
35 }
36 );
37 ENUM!{enum STGTY {
38     STGTY_STORAGE = 1,
39     STGTY_STREAM = 2,
40     STGTY_LOCKBYTES = 3,
41     STGTY_PROPERTY = 4,
42 }}
43 ENUM!{enum STREAM_SEEK {
44     STREAM_SEEK_SET = 0,
45     STREAM_SEEK_CUR = 1,
46     STREAM_SEEK_END = 2,
47 }}
48 ENUM!{enum LOCKTYPE {
49     LOCK_WRITE = 1,
50     LOCK_EXCLUSIVE = 2,
51     LOCK_ONLYONCE = 4,
52 }}
53 //2255
54 RIDL!(
55 interface IStream(IStreamVtbl): ISequentialStream(ISequentialStreamVtbl) {
56     fn Seek(
57         &mut self, dlibMove: ::LARGE_INTEGER, dwOrigin: ::DWORD,
58         plibNewPosition: *mut ::ULARGE_INTEGER
59     ) -> ::HRESULT,
60     fn SetSize(&mut self, libNewSize: ::ULARGE_INTEGER) -> ::HRESULT,
61     fn CopyTo(
62         &mut self, pstm: *mut IStream, cb: ::ULARGE_INTEGER, pcbRead: *mut ::ULARGE_INTEGER,
63         pcbWritten: *mut ::ULARGE_INTEGER
64     ) -> ::HRESULT,
65     fn Commit(&mut self, grfCommitFlags: ::DWORD) -> ::HRESULT,
66     fn Revert(&mut self) -> ::HRESULT,
67     fn LockRegion(
68         &mut self, libOffset: ::ULARGE_INTEGER, cb: ::ULARGE_INTEGER, dwLockType: ::DWORD
69     ) -> ::HRESULT,
70     fn UnlockRegion(
71         &mut self, libOffset: ::ULARGE_INTEGER, cb: ::ULARGE_INTEGER, dwLockType: ::DWORD
72     ) -> ::HRESULT,
73     fn Stat(&mut self, pstatstg: *mut STATSTG, grfStatFlag: ::DWORD) -> ::HRESULT,
74     fn Clone(&mut self, ppstm: *mut *mut IStream) -> ::HRESULT
75 }
76 );
77 pub type LPSTREAM = *mut IStream;
78 ENUM!{enum APTTYPEQUALIFIER {
79     APTTYPEQUALIFIER_NONE = 0,
80     APTTYPEQUALIFIER_IMPLICIT_MTA = 1,
81     APTTYPEQUALIFIER_NA_ON_MTA = 2,
82     APTTYPEQUALIFIER_NA_ON_STA = 3,
83     APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4,
84     APTTYPEQUALIFIER_NA_ON_MAINSTA = 5,
85     APTTYPEQUALIFIER_APPLICATION_STA= 6,
86 }}
87 ENUM!{enum APTTYPE {
88     APTTYPE_CURRENT = -1i32 as u32,
89     APTTYPE_STA = 0,
90     APTTYPE_MTA = 1,
91     APTTYPE_NA = 2,
92     APTTYPE_MAINSTA = 3,
93 }}
94