1#![allow(
2 non_snake_case,
3 non_upper_case_globals,
4 non_camel_case_types,
5 dead_code,
6 clippy::all
7)]
8
9#[inline]
10pub unsafe fn CoCreateGuid() -> windows_core::Result<windows_core::GUID> {
11 windows_link::link!("ole32.dll" "system" fn CoCreateGuid(pguid : *mut windows_core::GUID) -> windows_core::HRESULT);
12 unsafe {
13 let mut result__: GUID = core::mem::zeroed();
14 CoCreateGuid(&mut result__).map(|| result__)
15 }
16}
17#[inline]
18pub unsafe fn RoGetAgileReference<P2>(
19 options: AgileReferenceOptions,
20 riid: *const windows_core::GUID,
21 punk: P2,
22) -> windows_core::Result<IAgileReference>
23where
24 P2: windows_core::Param<windows_core::IUnknown>,
25{
26 windows_link::link!("ole32.dll" "system" fn RoGetAgileReference(options : AgileReferenceOptions, riid : *const windows_core::GUID, punk : * mut core::ffi::c_void, ppagilereference : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
27 unsafe {
28 let mut result__: *mut c_void = core::mem::zeroed();
29 RoGetAgileReference(options, riid, punk.param().abi(), &mut result__)
30 .and_then(|| windows_core::Type::from_abi(result__))
31 }
32}
33pub const AGILEREFERENCE_DEFAULT: AgileReferenceOptions = AgileReferenceOptions(0i32);
34#[repr(transparent)]
35#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
36pub struct AgileReferenceOptions(pub i32);
37pub const CO_E_NOTINITIALIZED: windows_core::HRESULT = windows_core::HRESULT(0x800401F0_u32 as _);
38pub const E_INVALIDARG: windows_core::HRESULT = windows_core::HRESULT(0x80070057_u32 as _);
39pub const E_NOINTERFACE: windows_core::HRESULT = windows_core::HRESULT(0x80004002_u32 as _);
40pub const E_POINTER: windows_core::HRESULT = windows_core::HRESULT(0x80004003_u32 as _);
41windows_core::imp::define_interface!(
42 IAgileObject,
43 IAgileObject_Vtbl,
44 0x94ea2b94_e9cc_49e0_c0ff_ee64ca8f5b90
45);
46windows_core::imp::interface_hierarchy!(IAgileObject, windows_core::IUnknown);
47#[repr(C)]
48#[doc(hidden)]
49pub struct IAgileObject_Vtbl {
50 pub base__: windows_core::IUnknown_Vtbl,
51}
52pub trait IAgileObject_Impl: windows_core::IUnknownImpl {}
53impl IAgileObject_Vtbl {
54 pub const fn new<Identity: IAgileObject_Impl, const OFFSET: isize>() -> Self {
55 Self {
56 base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
57 }
58 }
59 pub fn matches(iid: &windows_core::GUID) -> bool {
60 iid == &<IAgileObject as windows_core::Interface>::IID
61 }
62}
63impl windows_core::RuntimeName for IAgileObject {}
64windows_core::imp::define_interface!(
65 IAgileReference,
66 IAgileReference_Vtbl,
67 0xc03f6a43_65a4_9818_987e_e0b810d2a6f2
68);
69windows_core::imp::interface_hierarchy!(IAgileReference, windows_core::IUnknown);
70impl IAgileReference {
71 pub unsafe fn Resolve<T>(&self) -> windows_core::Result<T>
72 where
73 T: windows_core::Interface,
74 {
75 let mut result__: *mut c_void = core::ptr::null_mut();
76 unsafe {
77 (windows_core::Interface::vtable(self).Resolve)(
78 windows_core::Interface::as_raw(self),
79 &T::IID,
80 &mut result__,
81 )
82 .and_then(|| windows_core::Type::from_abi(result__))
83 }
84 }
85}
86#[repr(C)]
87#[doc(hidden)]
88pub struct IAgileReference_Vtbl {
89 pub base__: windows_core::IUnknown_Vtbl,
90 pub Resolve: unsafe extern "system" fn(
91 *mut core::ffi::c_void,
92 *const windows_core::GUID,
93 *mut *mut core::ffi::c_void,
94 ) -> windows_core::HRESULT,
95}
96pub trait IAgileReference_Impl: windows_core::IUnknownImpl {
97 fn Resolve(
98 &self,
99 riid: *const windows_core::GUID,
100 ppvobjectreference: *mut *mut core::ffi::c_void,
101 ) -> windows_core::Result<()>;
102}
103impl IAgileReference_Vtbl {
104 pub const fn new<Identity: IAgileReference_Impl, const OFFSET: isize>() -> Self {
105 unsafe extern "system" fn Resolve<Identity: IAgileReference_Impl, const OFFSET: isize>(
106 this: *mut core::ffi::c_void,
107 riid: *const windows_core::GUID,
108 ppvobjectreference: *mut *mut core::ffi::c_void,
109 ) -> windows_core::HRESULT {
110 unsafe {
111 let this: &Identity =
112 &*((this as *const *const ()).offset(OFFSET) as *const Identity);
113 IAgileReference_Impl::Resolve(
114 this,
115 core::mem::transmute_copy(&riid),
116 core::mem::transmute_copy(&ppvobjectreference),
117 )
118 .into()
119 }
120 }
121 Self {
122 base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
123 Resolve: Resolve::<Identity, OFFSET>,
124 }
125 }
126 pub fn matches(iid: &windows_core::GUID) -> bool {
127 iid == &<IAgileReference as windows_core::Interface>::IID
128 }
129}
130impl windows_core::RuntimeName for IAgileReference {}
131windows_core::imp::define_interface!(
132 IWeakReference,
133 IWeakReference_Vtbl,
134 0x00000037_0000_0000_c000_000000000046
135);
136windows_core::imp::interface_hierarchy!(IWeakReference, windows_core::IUnknown);
137impl IWeakReference {
138 pub unsafe fn Resolve<T>(&self) -> windows_core::Result<T>
139 where
140 T: windows_core::Interface,
141 {
142 let mut result__: *mut c_void = core::ptr::null_mut();
143 unsafe {
144 (windows_core::Interface::vtable(self).Resolve)(
145 windows_core::Interface::as_raw(self),
146 &T::IID,
147 &mut result__,
148 )
149 .and_then(|| windows_core::Type::from_abi(result__))
150 }
151 }
152}
153#[repr(C)]
154#[doc(hidden)]
155pub struct IWeakReference_Vtbl {
156 pub base__: windows_core::IUnknown_Vtbl,
157 pub Resolve: unsafe extern "system" fn(
158 *mut core::ffi::c_void,
159 *const windows_core::GUID,
160 *mut *mut core::ffi::c_void,
161 ) -> windows_core::HRESULT,
162}
163pub trait IWeakReference_Impl: windows_core::IUnknownImpl {
164 fn Resolve(
165 &self,
166 riid: *const windows_core::GUID,
167 objectreference: *mut *mut core::ffi::c_void,
168 ) -> windows_core::Result<()>;
169}
170impl IWeakReference_Vtbl {
171 pub const fn new<Identity: IWeakReference_Impl, const OFFSET: isize>() -> Self {
172 unsafe extern "system" fn Resolve<Identity: IWeakReference_Impl, const OFFSET: isize>(
173 this: *mut core::ffi::c_void,
174 riid: *const windows_core::GUID,
175 objectreference: *mut *mut core::ffi::c_void,
176 ) -> windows_core::HRESULT {
177 unsafe {
178 let this: &Identity =
179 &*((this as *const *const ()).offset(OFFSET) as *const Identity);
180 IWeakReference_Impl::Resolve(
181 this,
182 core::mem::transmute_copy(&riid),
183 core::mem::transmute_copy(&objectreference),
184 )
185 .into()
186 }
187 }
188 Self {
189 base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
190 Resolve: Resolve::<Identity, OFFSET>,
191 }
192 }
193 pub fn matches(iid: &windows_core::GUID) -> bool {
194 iid == &<IWeakReference as windows_core::Interface>::IID
195 }
196}
197impl windows_core::RuntimeName for IWeakReference {}
198windows_core::imp::define_interface!(
199 IWeakReferenceSource,
200 IWeakReferenceSource_Vtbl,
201 0x00000038_0000_0000_c000_000000000046
202);
203windows_core::imp::interface_hierarchy!(IWeakReferenceSource, windows_core::IUnknown);
204impl IWeakReferenceSource {
205 pub unsafe fn GetWeakReference(&self) -> windows_core::Result<IWeakReference> {
206 unsafe {
207 let mut result__: *mut c_void = core::mem::zeroed();
208 (windows_core::Interface::vtable(self).GetWeakReference)(
209 windows_core::Interface::as_raw(self),
210 &mut result__,
211 )
212 .and_then(|| windows_core::Type::from_abi(result__))
213 }
214 }
215}
216#[repr(C)]
217#[doc(hidden)]
218pub struct IWeakReferenceSource_Vtbl {
219 pub base__: windows_core::IUnknown_Vtbl,
220 pub GetWeakReference: unsafe extern "system" fn(
221 *mut core::ffi::c_void,
222 *mut *mut core::ffi::c_void,
223 ) -> windows_core::HRESULT,
224}
225pub trait IWeakReferenceSource_Impl: windows_core::IUnknownImpl {
226 fn GetWeakReference(&self) -> windows_core::Result<IWeakReference>;
227}
228impl IWeakReferenceSource_Vtbl {
229 pub const fn new<Identity: IWeakReferenceSource_Impl, const OFFSET: isize>() -> Self {
230 unsafe extern "system" fn GetWeakReference<
231 Identity: IWeakReferenceSource_Impl,
232 const OFFSET: isize,
233 >(
234 this: *mut core::ffi::c_void,
235 weakreference: *mut *mut core::ffi::c_void,
236 ) -> windows_core::HRESULT {
237 unsafe {
238 let this: &Identity =
239 &*((this as *const *const ()).offset(OFFSET) as *const Identity);
240 match IWeakReferenceSource_Impl::GetWeakReference(this) {
241 Ok(ok__) => {
242 weakreference.write(core::mem::transmute(ok__));
243 windows_core::HRESULT(0)
244 }
245 Err(err) => err.into(),
246 }
247 }
248 }
249 Self {
250 base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
251 GetWeakReference: GetWeakReference::<Identity, OFFSET>,
252 }
253 }
254 pub fn matches(iid: &windows_core::GUID) -> bool {
255 iid == &<IWeakReferenceSource as windows_core::Interface>::IID
256 }
257}
258impl windows_core::RuntimeName for IWeakReferenceSource {}
259pub const JSCRIPT_E_CANTEXECUTE: windows_core::HRESULT = windows_core::HRESULT(0x89020001_u32 as _);
260pub const REGDB_E_CLASSNOTREG: windows_core::HRESULT = windows_core::HRESULT(0x80040154_u32 as _);
261pub const RPC_E_DISCONNECTED: windows_core::HRESULT = windows_core::HRESULT(0x80010108_u32 as _);
262pub const S_OK: windows_core::HRESULT = windows_core::HRESULT(0x0_u32 as _);
263