1 #![allow(unused_variables, non_upper_case_globals, non_snake_case, unused_unsafe, non_camel_case_types, dead_code, clippy::all)]
2 #[repr(transparent)]
3 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
4 #[doc(hidden)]
5 pub struct IPnpObject(::windows::runtime::IInspectable);
6 unsafe impl ::windows::runtime::Interface for IPnpObject {
7     type Vtable = IPnpObject_abi;
8     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2512806488, 29499, 19087, [147, 163, 219, 7, 138, 200, 112, 193]);
b1null9 }
10 #[repr(C)]
11 #[doc(hidden)]
12 pub struct IPnpObject_abi(
13     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
14     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
15     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
16     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
17     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
18     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
19     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut PnpObjectType) -> ::windows::runtime::HRESULT,
20     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
21     #[cfg(feature = "Foundation_Collections")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
22     #[cfg(not(feature = "Foundation_Collections"))] usize,
23     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, updateinfo: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
24 );
25 #[repr(transparent)]
26 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
27 #[doc(hidden)]
28 pub struct IPnpObjectStatics(::windows::runtime::IInspectable);
29 unsafe impl ::windows::runtime::Interface for IPnpObjectStatics {
30     type Vtable = IPnpObjectStatics_abi;
31     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3015911997, 53608, 18016, [187, 243, 167, 51, 177, 75, 110, 1]);
32 }
33 #[repr(C)]
34 #[doc(hidden)]
35 pub struct IPnpObjectStatics_abi(
36     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
37     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
38     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
39     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
40     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
41     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
42     #[cfg(all(feature = "Foundation", feature = "Foundation_Collections"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, r#type: PnpObjectType, id: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, requestedproperties: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
43     #[cfg(not(all(feature = "Foundation", feature = "Foundation_Collections")))] usize,
b2null44     #[cfg(all(feature = "Foundation", feature = "Foundation_Collections"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, r#type: PnpObjectType, requestedproperties: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
45     #[cfg(not(all(feature = "Foundation", feature = "Foundation_Collections")))] usize,
46     #[cfg(all(feature = "Foundation", feature = "Foundation_Collections"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, r#type: PnpObjectType, requestedproperties: ::windows::runtime::RawPtr, aqsfilter: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
47     #[cfg(not(all(feature = "Foundation", feature = "Foundation_Collections")))] usize,
48     #[cfg(feature = "Foundation_Collections")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, r#type: PnpObjectType, requestedproperties: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
49     #[cfg(not(feature = "Foundation_Collections"))] usize,
50     #[cfg(feature = "Foundation_Collections")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, r#type: PnpObjectType, requestedproperties: ::windows::runtime::RawPtr, aqsfilter: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
51     #[cfg(not(feature = "Foundation_Collections"))] usize,
52 );
53 #[repr(transparent)]
54 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
55 #[doc(hidden)]
56 pub struct IPnpObjectUpdate(::windows::runtime::IInspectable);
57 unsafe impl ::windows::runtime::Interface for IPnpObjectUpdate {
58     type Vtable = IPnpObjectUpdate_abi;
59     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1868163090, 30, 18500, [188, 198, 67, 40, 134, 133, 106, 23]);
60 }
61 #[repr(C)]
62 #[doc(hidden)]
63 pub struct IPnpObjectUpdate_abi(
64     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
65     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
66     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
67     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
68     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
69     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
70     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut PnpObjectType) -> ::windows::runtime::HRESULT,
71     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
72     #[cfg(feature = "Foundation_Collections")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
73     #[cfg(not(feature = "Foundation_Collections"))] usize,
74 );
75 #[repr(transparent)]
76 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
77 #[doc(hidden)]
78 pub struct IPnpObjectWatcher(::windows::runtime::IInspectable);
79 unsafe impl ::windows::runtime::Interface for IPnpObjectWatcher {
80     type Vtable = IPnpObjectWatcher_abi;
81     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2211011752, 18290, 19066, [172, 168, 228, 140, 66, 168, 156, 68]);
82 }
83 #[repr(C)]
84 #[doc(hidden)]
85 pub struct IPnpObjectWatcher_abi(
86     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
87     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
88     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
89     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
90     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
91     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
92     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
93     #[cfg(not(feature = "Foundation"))] usize,
94     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
95     #[cfg(not(feature = "Foundation"))] usize,
96     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
97     #[cfg(not(feature = "Foundation"))] usize,
98     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
99     #[cfg(not(feature = "Foundation"))] usize,
100     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
101     #[cfg(not(feature = "Foundation"))] usize,
102     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
103     #[cfg(not(feature = "Foundation"))] usize,
104     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
105     #[cfg(not(feature = "Foundation"))] usize,
106     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
107     #[cfg(not(feature = "Foundation"))] usize,
108     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
109     #[cfg(not(feature = "Foundation"))] usize,
110     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
111     #[cfg(not(feature = "Foundation"))] usize,
112     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut super::DeviceWatcherStatus) -> ::windows::runtime::HRESULT,
113     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
114     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
115 );
116 #[repr(transparent)]
117 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
118 pub struct PnpObject(::windows::runtime::IInspectable);
119 impl PnpObject {
120     pub fn Type(&self) -> ::windows::runtime::Result<PnpObjectType> {
121         let this = self;
122         unsafe {
123             let mut result__: PnpObjectType = ::std::mem::zeroed();
124             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<PnpObjectType>(result__)
125         }
126     }
127     pub fn Id(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
128         let this = self;
129         unsafe {
130             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
131             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
132         }
133     }
134     #[cfg(feature = "Foundation_Collections")]
135     pub fn Properties(&self) -> ::windows::runtime::Result<super::super::super::Foundation::Collections::IMapView<::windows::runtime::HSTRING, ::windows::runtime::IInspectable>> {
136         let this = self;
137         unsafe {
138             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
139             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::super::Foundation::Collections::IMapView<::windows::runtime::HSTRING, ::windows::runtime::IInspectable>>(result__)
140         }
141     }
142     pub fn Update<'a, Param0: ::windows::runtime::IntoParam<'a, PnpObjectUpdate>>(&self, updateinfo: Param0) -> ::windows::runtime::Result<()> {
143         let this = self;
144         unsafe { (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), updateinfo.into_param().abi()).ok() }
145     }
146     #[cfg(all(feature = "Foundation", feature = "Foundation_Collections"))]
147     pub fn CreateFromIdAsync<'a, Param1: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>, Param2: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IIterable<::windows::runtime::HSTRING>>>(r#type: PnpObjectType, id: Param1, requestedproperties: Param2) -> ::windows::runtime::Result<super::super::super::Foundation::IAsyncOperation<PnpObject>> {
148         Self::IPnpObjectStatics(|this| unsafe {
149             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
150             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), r#type, id.into_param().abi(), requestedproperties.into_param().abi(), &mut result__).from_abi::<super::super::super::Foundation::IAsyncOperation<PnpObject>>(result__)
151         })
152     }
153     #[cfg(all(feature = "Foundation", feature = "Foundation_Collections"))]
154     pub fn FindAllAsync<'a, Param1: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IIterable<::windows::runtime::HSTRING>>>(r#type: PnpObjectType, requestedproperties: Param1) -> ::windows::runtime::Result<super::super::super::Foundation::IAsyncOperation<PnpObjectCollection>> {
155         Self::IPnpObjectStatics(|this| unsafe {
156             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
157             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), r#type, requestedproperties.into_param().abi(), &mut result__).from_abi::<super::super::super::Foundation::IAsyncOperation<PnpObjectCollection>>(result__)
158         })
159     }
160     #[cfg(all(feature = "Foundation", feature = "Foundation_Collections"))]
161     pub fn FindAllAsyncAqsFilter<'a, Param1: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IIterable<::windows::runtime::HSTRING>>, Param2: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(r#type: PnpObjectType, requestedproperties: Param1, aqsfilter: Param2) -> ::windows::runtime::Result<super::super::super::Foundation::IAsyncOperation<PnpObjectCollection>> {
162         Self::IPnpObjectStatics(|this| unsafe {
163             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
164             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), r#type, requestedproperties.into_param().abi(), aqsfilter.into_param().abi(), &mut result__).from_abi::<super::super::super::Foundation::IAsyncOperation<PnpObjectCollection>>(result__)
165         })
166     }
167     #[cfg(feature = "Foundation_Collections")]
168     pub fn CreateWatcher<'a, Param1: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IIterable<::windows::runtime::HSTRING>>>(r#type: PnpObjectType, requestedproperties: Param1) -> ::windows::runtime::Result<PnpObjectWatcher> {
169         Self::IPnpObjectStatics(|this| unsafe {
170             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
171             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), r#type, requestedproperties.into_param().abi(), &mut result__).from_abi::<PnpObjectWatcher>(result__)
172         })
173     }
174     #[cfg(feature = "Foundation_Collections")]
175     pub fn CreateWatcherAqsFilter<'a, Param1: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IIterable<::windows::runtime::HSTRING>>, Param2: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(r#type: PnpObjectType, requestedproperties: Param1, aqsfilter: Param2) -> ::windows::runtime::Result<PnpObjectWatcher> {
176         Self::IPnpObjectStatics(|this| unsafe {
177             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
178             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), r#type, requestedproperties.into_param().abi(), aqsfilter.into_param().abi(), &mut result__).from_abi::<PnpObjectWatcher>(result__)
179         })
180     }
181     pub fn IPnpObjectStatics<R, F: FnOnce(&IPnpObjectStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
182         static mut SHARED: ::windows::runtime::FactoryCache<PnpObject, IPnpObjectStatics> = ::windows::runtime::FactoryCache::new();
183         unsafe { SHARED.call(callback) }
184     }
185 }
186 unsafe impl ::windows::runtime::RuntimeType for PnpObject {
187     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Enumeration.Pnp.PnpObject;{95c66258-733b-4a8f-93a3-db078ac870c1})");
188 }
189 unsafe impl ::windows::runtime::Interface for PnpObject {
190     type Vtable = IPnpObject_abi;
191     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2512806488, 29499, 19087, [147, 163, 219, 7, 138, 200, 112, 193]);
192 }
193 impl ::windows::runtime::RuntimeName for PnpObject {
194     const NAME: &'static str = "Windows.Devices.Enumeration.Pnp.PnpObject";
195 }
196 impl ::std::convert::From<PnpObject> for ::windows::runtime::IUnknown {
197     fn from(value: PnpObject) -> Self {
198         unsafe { ::std::mem::transmute(value) }
199     }
200 }
201 impl ::std::convert::From<&PnpObject> for ::windows::runtime::IUnknown {
202     fn from(value: &PnpObject) -> Self {
203         ::std::convert::From::from(::std::clone::Clone::clone(value))
204     }
205 }
206 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for PnpObject {
207     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
208         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
209     }
210 }
211 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &PnpObject {
212     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
213         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
214     }
215 }
216 impl ::std::convert::From<PnpObject> for ::windows::runtime::IInspectable {
217     fn from(value: PnpObject) -> Self {
218         value.0
219     }
220 }
221 impl ::std::convert::From<&PnpObject> for ::windows::runtime::IInspectable {
222     fn from(value: &PnpObject) -> Self {
223         value.0.clone()
224     }
225 }
226 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for PnpObject {
227     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
228         ::windows::runtime::Param::Owned(self.0)
229     }
230 }
231 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a PnpObject {
232     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
233         ::windows::runtime::Param::Borrowed(&self.0)
234     }
235 }
236 unsafe impl ::std::marker::Send for PnpObject {}
237 unsafe impl ::std::marker::Sync for PnpObject {}
238 #[cfg(feature = "Foundation_Collections")]
239 #[repr(transparent)]
240 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
241 pub struct PnpObjectCollection(::windows::runtime::IInspectable);
242 #[cfg(feature = "Foundation_Collections")]
243 impl PnpObjectCollection {
244     #[cfg(feature = "Foundation_Collections")]
245     pub fn GetAt(&self, index: u32) -> ::windows::runtime::Result<PnpObject> {
246         let this = self;
247         unsafe {
248             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
249             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), index, &mut result__).from_abi::<PnpObject>(result__)
250         }
251     }
252     #[cfg(feature = "Foundation_Collections")]
253     pub fn Size(&self) -> ::windows::runtime::Result<u32> {
254         let this = self;
255         unsafe {
256             let mut result__: u32 = ::std::mem::zeroed();
257             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
258         }
259     }
260     #[cfg(feature = "Foundation_Collections")]
261     pub fn IndexOf<'a, Param0: ::windows::runtime::IntoParam<'a, PnpObject>>(&self, value: Param0, index: &mut u32) -> ::windows::runtime::Result<bool> {
262         let this = self;
263         unsafe {
264             let mut result__: bool = ::std::mem::zeroed();
265             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), value.into_param().abi(), index, &mut result__).from_abi::<bool>(result__)
266         }
267     }
268     #[cfg(feature = "Foundation_Collections")]
269     pub fn GetMany(&self, startindex: u32, items: &mut [<PnpObject as ::windows::runtime::Abi>::DefaultType]) -> ::windows::runtime::Result<u32> {
270         let this = self;
271         unsafe {
272             let mut result__: u32 = ::std::mem::zeroed();
273             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), startindex, items.len() as u32, ::std::mem::transmute_copy(&items), &mut result__).from_abi::<u32>(result__)
274         }
275     }
276     #[cfg(feature = "Foundation_Collections")]
277     pub fn First(&self) -> ::windows::runtime::Result<super::super::super::Foundation::Collections::IIterator<PnpObject>> {
278         let this = &::windows::runtime::Interface::cast::<super::super::super::Foundation::Collections::IIterable<PnpObject>>(self)?;
279         unsafe {
280             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
281             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::super::Foundation::Collections::IIterator<PnpObject>>(result__)
282         }
283     }
284 }
285 #[cfg(feature = "Foundation_Collections")]
286 unsafe impl ::windows::runtime::RuntimeType for PnpObjectCollection {
287     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Enumeration.Pnp.PnpObjectCollection;pinterface({bbe1fa4c-b0e3-4583-baef-1f1b2e483e56};rc(Windows.Devices.Enumeration.Pnp.PnpObject;{95c66258-733b-4a8f-93a3-db078ac870c1})))");
288 }
289 #[cfg(feature = "Foundation_Collections")]
290 unsafe impl ::windows::runtime::Interface for PnpObjectCollection {
291     type Vtable = super::super::super::Foundation::Collections::IVectorView_abi<PnpObject>;
292     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_signature(<super::super::super::Foundation::Collections::IVectorView<PnpObject> as ::windows::runtime::RuntimeType>::SIGNATURE);
293 }
294 #[cfg(feature = "Foundation_Collections")]
295 impl ::windows::runtime::RuntimeName for PnpObjectCollection {
296     const NAME: &'static str = "Windows.Devices.Enumeration.Pnp.PnpObjectCollection";
297 }
298 #[cfg(feature = "Foundation_Collections")]
299 impl ::std::convert::From<PnpObjectCollection> for ::windows::runtime::IUnknown {
300     fn from(value: PnpObjectCollection) -> Self {
301         unsafe { ::std::mem::transmute(value) }
302     }
303 }
304 #[cfg(feature = "Foundation_Collections")]
305 impl ::std::convert::From<&PnpObjectCollection> for ::windows::runtime::IUnknown {
306     fn from(value: &PnpObjectCollection) -> Self {
307         ::std::convert::From::from(::std::clone::Clone::clone(value))
308     }
309 }
310 #[cfg(feature = "Foundation_Collections")]
311 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for PnpObjectCollection {
312     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
313         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
314     }
315 }
316 #[cfg(feature = "Foundation_Collections")]
317 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &PnpObjectCollection {
318     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
319         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
320     }
321 }
322 #[cfg(feature = "Foundation_Collections")]
323 impl ::std::convert::From<PnpObjectCollection> for ::windows::runtime::IInspectable {
324     fn from(value: PnpObjectCollection) -> Self {
325         value.0
326     }
327 }
328 #[cfg(feature = "Foundation_Collections")]
329 impl ::std::convert::From<&PnpObjectCollection> for ::windows::runtime::IInspectable {
330     fn from(value: &PnpObjectCollection) -> Self {
331         value.0.clone()
332     }
333 }
334 #[cfg(feature = "Foundation_Collections")]
335 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for PnpObjectCollection {
336     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
337         ::windows::runtime::Param::Owned(self.0)
338     }
339 }
340 #[cfg(feature = "Foundation_Collections")]
341 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a PnpObjectCollection {
342     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
343         ::windows::runtime::Param::Borrowed(&self.0)
344     }
345 }
346 #[cfg(feature = "Foundation_Collections")]
347 impl ::std::convert::From<PnpObjectCollection> for super::super::super::Foundation::Collections::IVectorView<PnpObject> {
348     fn from(value: PnpObjectCollection) -> Self {
349         unsafe { ::std::mem::transmute(value) }
350     }
351 }
352 #[cfg(feature = "Foundation_Collections")]
353 impl ::std::convert::From<&PnpObjectCollection> for super::super::super::Foundation::Collections::IVectorView<PnpObject> {
354     fn from(value: &PnpObjectCollection) -> Self {
355         ::std::convert::From::from(::std::clone::Clone::clone(value))
356     }
357 }
358 #[cfg(feature = "Foundation_Collections")]
359 impl<'a> ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IVectorView<PnpObject>> for PnpObjectCollection {
360     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::super::Foundation::Collections::IVectorView<PnpObject>> {
361         ::windows::runtime::Param::Owned(::std::convert::Into::<super::super::super::Foundation::Collections::IVectorView<PnpObject>>::into(self))
362     }
363 }
364 #[cfg(feature = "Foundation_Collections")]
365 impl<'a> ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IVectorView<PnpObject>> for &PnpObjectCollection {
366     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::super::Foundation::Collections::IVectorView<PnpObject>> {
367         ::windows::runtime::Param::Owned(::std::convert::Into::<super::super::super::Foundation::Collections::IVectorView<PnpObject>>::into(::std::clone::Clone::clone(self)))
368     }
369 }
370 #[cfg(feature = "Foundation_Collections")]
371 impl ::std::convert::TryFrom<PnpObjectCollection> for super::super::super::Foundation::Collections::IIterable<PnpObject> {
372     type Error = ::windows::runtime::Error;
373     fn try_from(value: PnpObjectCollection) -> ::windows::runtime::Result<Self> {
374         ::std::convert::TryFrom::try_from(&value)
375     }
376 }
377 #[cfg(feature = "Foundation_Collections")]
378 impl ::std::convert::TryFrom<&PnpObjectCollection> for super::super::super::Foundation::Collections::IIterable<PnpObject> {
379     type Error = ::windows::runtime::Error;
380     fn try_from(value: &PnpObjectCollection) -> ::windows::runtime::Result<Self> {
381         ::windows::runtime::Interface::cast(value)
382     }
383 }
384 #[cfg(feature = "Foundation_Collections")]
385 impl<'a> ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IIterable<PnpObject>> for PnpObjectCollection {
386     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::super::Foundation::Collections::IIterable<PnpObject>> {
387         ::windows::runtime::IntoParam::into_param(&self)
388     }
389 }
390 #[cfg(feature = "Foundation_Collections")]
391 impl<'a> ::windows::runtime::IntoParam<'a, super::super::super::Foundation::Collections::IIterable<PnpObject>> for &PnpObjectCollection {
392     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::super::Foundation::Collections::IIterable<PnpObject>> {
393         ::std::convert::TryInto::<super::super::super::Foundation::Collections::IIterable<PnpObject>>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
394     }
395 }
396 #[cfg(feature = "Foundation_Collections")]
397 unsafe impl ::std::marker::Send for PnpObjectCollection {}
398 #[cfg(feature = "Foundation_Collections")]
399 unsafe impl ::std::marker::Sync for PnpObjectCollection {}
400 #[cfg(all(feature = "Foundation_Collections"))]
401 impl ::std::iter::IntoIterator for PnpObjectCollection {
402     type Item = PnpObject;
403     type IntoIter = super::super::super::Foundation::Collections::VectorViewIterator<Self::Item>;
404     fn into_iter(self) -> Self::IntoIter {
405         ::std::iter::IntoIterator::into_iter(&self)
406     }
407 }
408 #[cfg(all(feature = "Foundation_Collections"))]
409 impl ::std::iter::IntoIterator for &PnpObjectCollection {
410     type Item = PnpObject;
411     type IntoIter = super::super::super::Foundation::Collections::VectorViewIterator<Self::Item>;
412     fn into_iter(self) -> Self::IntoIter {
413         super::super::super::Foundation::Collections::VectorViewIterator::new(::std::convert::TryInto::try_into(self).ok())
414     }
415 }
416 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
417 #[repr(transparent)]
418 pub struct PnpObjectType(pub i32);
419 impl PnpObjectType {
420     pub const Unknown: PnpObjectType = PnpObjectType(0i32);
421     pub const DeviceInterface: PnpObjectType = PnpObjectType(1i32);
422     pub const DeviceContainer: PnpObjectType = PnpObjectType(2i32);
423     pub const Device: PnpObjectType = PnpObjectType(3i32);
424     pub const DeviceInterfaceClass: PnpObjectType = PnpObjectType(4i32);
425     pub const AssociationEndpoint: PnpObjectType = PnpObjectType(5i32);
426     pub const AssociationEndpointContainer: PnpObjectType = PnpObjectType(6i32);
427     pub const AssociationEndpointService: PnpObjectType = PnpObjectType(7i32);
428     pub const DevicePanel: PnpObjectType = PnpObjectType(8i32);
429 }
430 impl ::std::convert::From<i32> for PnpObjectType {
431     fn from(value: i32) -> Self {
432         Self(value)
433     }
434 }
435 unsafe impl ::windows::runtime::Abi for PnpObjectType {
436     type Abi = Self;
437     type DefaultType = Self;
438 }
439 unsafe impl ::windows::runtime::RuntimeType for PnpObjectType {
440     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Enumeration.Pnp.PnpObjectType;i4)");
441 }
442 #[repr(transparent)]
443 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
444 pub struct PnpObjectUpdate(::windows::runtime::IInspectable);
445 impl PnpObjectUpdate {
446     pub fn Type(&self) -> ::windows::runtime::Result<PnpObjectType> {
447         let this = self;
448         unsafe {
449             let mut result__: PnpObjectType = ::std::mem::zeroed();
450             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<PnpObjectType>(result__)
451         }
452     }
453     pub fn Id(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
454         let this = self;
455         unsafe {
456             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
457             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
458         }
459     }
460     #[cfg(feature = "Foundation_Collections")]
461     pub fn Properties(&self) -> ::windows::runtime::Result<super::super::super::Foundation::Collections::IMapView<::windows::runtime::HSTRING, ::windows::runtime::IInspectable>> {
462         let this = self;
463         unsafe {
464             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
465             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::super::Foundation::Collections::IMapView<::windows::runtime::HSTRING, ::windows::runtime::IInspectable>>(result__)
466         }
467     }
468 }
469 unsafe impl ::windows::runtime::RuntimeType for PnpObjectUpdate {
470     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Enumeration.Pnp.PnpObjectUpdate;{6f59e812-001e-4844-bcc6-432886856a17})");
471 }
472 unsafe impl ::windows::runtime::Interface for PnpObjectUpdate {
473     type Vtable = IPnpObjectUpdate_abi;
474     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1868163090, 30, 18500, [188, 198, 67, 40, 134, 133, 106, 23]);
475 }
476 impl ::windows::runtime::RuntimeName for PnpObjectUpdate {
477     const NAME: &'static str = "Windows.Devices.Enumeration.Pnp.PnpObjectUpdate";
478 }
479 impl ::std::convert::From<PnpObjectUpdate> for ::windows::runtime::IUnknown {
480     fn from(value: PnpObjectUpdate) -> Self {
481         unsafe { ::std::mem::transmute(value) }
482     }
483 }
484 impl ::std::convert::From<&PnpObjectUpdate> for ::windows::runtime::IUnknown {
485     fn from(value: &PnpObjectUpdate) -> Self {
486         ::std::convert::From::from(::std::clone::Clone::clone(value))
487     }
488 }
489 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for PnpObjectUpdate {
490     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
491         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
492     }
493 }
494 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &PnpObjectUpdate {
495     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
496         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
497     }
498 }
499 impl ::std::convert::From<PnpObjectUpdate> for ::windows::runtime::IInspectable {
500     fn from(value: PnpObjectUpdate) -> Self {
501         value.0
502     }
503 }
504 impl ::std::convert::From<&PnpObjectUpdate> for ::windows::runtime::IInspectable {
505     fn from(value: &PnpObjectUpdate) -> Self {
506         value.0.clone()
507     }
508 }
509 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for PnpObjectUpdate {
510     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
511         ::windows::runtime::Param::Owned(self.0)
512     }
513 }
514 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a PnpObjectUpdate {
515     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
516         ::windows::runtime::Param::Borrowed(&self.0)
517     }
518 }
519 unsafe impl ::std::marker::Send for PnpObjectUpdate {}
520 unsafe impl ::std::marker::Sync for PnpObjectUpdate {}
521 #[repr(transparent)]
522 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
523 pub struct PnpObjectWatcher(::windows::runtime::IInspectable);
524 impl PnpObjectWatcher {
525     #[cfg(feature = "Foundation")]
526     pub fn Added<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::TypedEventHandler<PnpObjectWatcher, PnpObject>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::super::Foundation::EventRegistrationToken> {
527         let this = self;
528         unsafe {
529             let mut result__: super::super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
530             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::super::Foundation::EventRegistrationToken>(result__)
531         }
532     }
533     #[cfg(feature = "Foundation")]
534     pub fn RemoveAdded<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
535         let this = self;
536         unsafe { (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
537     }
538     #[cfg(feature = "Foundation")]
539     pub fn Updated<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::TypedEventHandler<PnpObjectWatcher, PnpObjectUpdate>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::super::Foundation::EventRegistrationToken> {
540         let this = self;
541         unsafe {
542             let mut result__: super::super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
543             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::super::Foundation::EventRegistrationToken>(result__)
544         }
545     }
546     #[cfg(feature = "Foundation")]
547     pub fn RemoveUpdated<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
548         let this = self;
549         unsafe { (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
550     }
551     #[cfg(feature = "Foundation")]
552     pub fn Removed<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::TypedEventHandler<PnpObjectWatcher, PnpObjectUpdate>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::super::Foundation::EventRegistrationToken> {
553         let this = self;
554         unsafe {
555             let mut result__: super::super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
556             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::super::Foundation::EventRegistrationToken>(result__)
557         }
558     }
559     #[cfg(feature = "Foundation")]
560     pub fn RemoveRemoved<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
561         let this = self;
562         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
563     }
564     #[cfg(feature = "Foundation")]
565     pub fn EnumerationCompleted<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::TypedEventHandler<PnpObjectWatcher, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::super::Foundation::EventRegistrationToken> {
566         let this = self;
567         unsafe {
568             let mut result__: super::super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
569             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::super::Foundation::EventRegistrationToken>(result__)
570         }
571     }
572     #[cfg(feature = "Foundation")]
573     pub fn RemoveEnumerationCompleted<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
574         let this = self;
575         unsafe { (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
576     }
577     #[cfg(feature = "Foundation")]
578     pub fn Stopped<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::TypedEventHandler<PnpObjectWatcher, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::super::Foundation::EventRegistrationToken> {
579         let this = self;
580         unsafe {
581             let mut result__: super::super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
582             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::super::Foundation::EventRegistrationToken>(result__)
583         }
584     }
585     #[cfg(feature = "Foundation")]
586     pub fn RemoveStopped<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
587         let this = self;
588         unsafe { (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
589     }
590     pub fn Status(&self) -> ::windows::runtime::Result<super::DeviceWatcherStatus> {
591         let this = self;
592         unsafe {
593             let mut result__: super::DeviceWatcherStatus = ::std::mem::zeroed();
594             (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::DeviceWatcherStatus>(result__)
595         }
596     }
597     pub fn Start(&self) -> ::windows::runtime::Result<()> {
598         let this = self;
599         unsafe { (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this)).ok() }
600     }
601     pub fn Stop(&self) -> ::windows::runtime::Result<()> {
602         let this = self;
603         unsafe { (::windows::runtime::Interface::vtable(this).18)(::std::mem::transmute_copy(this)).ok() }
604     }
605 }
606 unsafe impl ::windows::runtime::RuntimeType for PnpObjectWatcher {
607     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Enumeration.Pnp.PnpObjectWatcher;{83c95ca8-4772-4a7a-aca8-e48c42a89c44})");
608 }
609 unsafe impl ::windows::runtime::Interface for PnpObjectWatcher {
610     type Vtable = IPnpObjectWatcher_abi;
611     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2211011752, 18290, 19066, [172, 168, 228, 140, 66, 168, 156, 68]);
612 }
613 impl ::windows::runtime::RuntimeName for PnpObjectWatcher {
614     const NAME: &'static str = "Windows.Devices.Enumeration.Pnp.PnpObjectWatcher";
615 }
616 impl ::std::convert::From<PnpObjectWatcher> for ::windows::runtime::IUnknown {
617     fn from(value: PnpObjectWatcher) -> Self {
618         unsafe { ::std::mem::transmute(value) }
619     }
620 }
621 impl ::std::convert::From<&PnpObjectWatcher> for ::windows::runtime::IUnknown {
622     fn from(value: &PnpObjectWatcher) -> Self {
623         ::std::convert::From::from(::std::clone::Clone::clone(value))
624     }
625 }
626 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for PnpObjectWatcher {
627     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
628         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
629     }
630 }
631 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &PnpObjectWatcher {
632     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
633         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
634     }
635 }
636 impl ::std::convert::From<PnpObjectWatcher> for ::windows::runtime::IInspectable {
637     fn from(value: PnpObjectWatcher) -> Self {
638         value.0
639     }
640 }
641 impl ::std::convert::From<&PnpObjectWatcher> for ::windows::runtime::IInspectable {
642     fn from(value: &PnpObjectWatcher) -> Self {
643         value.0.clone()
644     }
645 }
646 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for PnpObjectWatcher {
647     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
648         ::windows::runtime::Param::Owned(self.0)
649     }
650 }
651 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a PnpObjectWatcher {
652     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
653         ::windows::runtime::Param::Borrowed(&self.0)
654     }
655 }
656 unsafe impl ::std::marker::Send for PnpObjectWatcher {}
657 unsafe impl ::std::marker::Sync for PnpObjectWatcher {}
658