1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
RIDL!(
interface IMalloc(IMallocVtbl): IUnknown(IUnknownVtbl) {
fn Alloc(&mut self, cb: ::SIZE_T) -> *mut ::c_void,
fn Realloc(&mut self, pv: *mut ::c_void, cb: ::SIZE_T) -> *mut ::c_void,
fn Free(&mut self, pv: *mut ::c_void) -> (),
fn GetSize(&mut self, pv: *mut ::c_void) -> ::SIZE_T,
fn DidAlloc(&mut self, pv: *mut ::c_void) -> ::c_int,
fn HeapMinimize(&mut self) -> ()
}
);
pub type LPMALLOC = *mut IMalloc;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub struct STATSTG {
pub pwcsName: ::LPOLESTR,
pub type_: ::DWORD,
pub cbSize: ::ULARGE_INTEGER,
pub mtime: ::FILETIME,
pub ctime: ::FILETIME,
pub atime: ::FILETIME,
pub grfMode: ::DWORD,
pub grfLocksSupported: ::DWORD,
pub clsid: ::CLSID,
pub grfStateBits: ::DWORD,
pub reserved: ::DWORD,
}
pub type IEnumString = ::IUnknown;
RIDL!(
interface ISequentialStream(ISequentialStreamVtbl): IUnknown(IUnknownVtbl) {
fn Read(&mut self, pv: *mut ::c_void, cb: ::ULONG, pcbRead: *mut ::ULONG) -> ::HRESULT,
fn Write(&mut self, pv: *const ::c_void, cb: ::ULONG, pcbWritten: *mut ::ULONG) -> ::HRESULT
}
);
RIDL!(
interface IStream(IStreamVtbl): ISequentialStream(ISequentialStreamVtbl) {
fn Seek(
&mut self, dlibMove: ::LARGE_INTEGER, dwOrigin: ::DWORD,
plibNewPosition: *mut ::ULARGE_INTEGER
) -> ::HRESULT,
fn SetSize(&mut self, libNewSize: ::ULARGE_INTEGER) -> ::HRESULT,
fn CopyTo(
&mut self, pstm: *mut IStream, cb: ::ULARGE_INTEGER, pcbRead: *mut ::ULARGE_INTEGER,
pcbWritten: *mut ::ULARGE_INTEGER
) -> ::HRESULT,
fn Commit(&mut self, grfCommitFlags: ::DWORD) -> ::HRESULT,
fn Revert(&mut self) -> ::HRESULT,
fn LockRegion(
&mut self, libOffset: ::ULARGE_INTEGER, cb: ::ULARGE_INTEGER, dwLockType: ::DWORD
) -> ::HRESULT,
fn UnlockRegion(
&mut self, libOffset: ::ULARGE_INTEGER, cb: ::ULARGE_INTEGER, dwLockType: ::DWORD
) -> ::HRESULT,
fn Stat(&mut self, pstatstg: *mut STATSTG, grfStatFlag: ::DWORD) -> ::HRESULT,
fn Clone(&mut self, ppstm: *mut *mut IStream) -> ::HRESULT
}
);
pub type LPSTREAM = *mut IStream;
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub enum APTTYPEQUALIFIER {
APTTYPEQUALIFIER_NONE = 0,
APTTYPEQUALIFIER_IMPLICIT_MTA = 1,
APTTYPEQUALIFIER_NA_ON_MTA = 2,
APTTYPEQUALIFIER_NA_ON_STA = 3,
APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4,
APTTYPEQUALIFIER_NA_ON_MAINSTA = 5,
APTTYPEQUALIFIER_APPLICATION_STA= 6,
}
#[repr(C)] #[derive(Clone, Copy, Debug)]
pub enum APTTYPE {
APTTYPE_CURRENT = -1,
APTTYPE_STA = 0,
APTTYPE_MTA = 1,
APTTYPE_NA = 2,
APTTYPE_MAINSTA = 3,
}