1 #![allow(unused_variables, non_upper_case_globals, non_snake_case, unused_unsafe, non_camel_case_types, dead_code, clippy::all)]
2 #[cfg(feature = "Devices_Bluetooth_Advertisement")]
3 pub mod Advertisement;
4 #[cfg(feature = "Devices_Bluetooth_Background")]
5 pub mod Background;
6 #[cfg(feature = "Devices_Bluetooth_GenericAttributeProfile")]
7 pub mod GenericAttributeProfile;
8 #[cfg(feature = "Devices_Bluetooth_Rfcomm")]
9 pub mod Rfcomm;
10 #[repr(transparent)]
11 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
12 pub struct BluetoothAdapter(::windows::runtime::IInspectable);
13 impl BluetoothAdapter {
14     pub fn DeviceId(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
15         let this = self;
16         unsafe {
17             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
18             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
19         }
20     }
21     pub fn BluetoothAddress(&self) -> ::windows::runtime::Result<u64> {
22         let this = self;
hostFromSockFD(SockFD * sfd,lcb_host_t * tgt)23         unsafe {
24             let mut result__: u64 = ::std::mem::zeroed();
25             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
26         }
27     }
28     pub fn IsClassicSupported(&self) -> ::windows::runtime::Result<bool> {
29         let this = self;
30         unsafe {
31             let mut result__: bool = ::std::mem::zeroed();
32             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
33         }
34     }
35     pub fn IsLowEnergySupported(&self) -> ::windows::runtime::Result<bool> {
36         let this = self;
onFlushDone(ESocket * s,size_t,size_t n)37         unsafe {
38             let mut result__: bool = ::std::mem::zeroed();
39             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
40         }
41     }
42     pub fn IsPeripheralRoleSupported(&self) -> ::windows::runtime::Result<bool> {
43         let this = self;
44         unsafe {
45             let mut result__: bool = ::std::mem::zeroed();
46             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
47         }
48     }
49     pub fn IsCentralRoleSupported(&self) -> ::windows::runtime::Result<bool> {
50         let this = self;
51         unsafe {
52             let mut result__: bool = ::std::mem::zeroed();
53             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
54         }
55     }
56     pub fn IsAdvertisementOffloadSupported(&self) -> ::windows::runtime::Result<bool> {
57         let this = self;
58         unsafe {
59             let mut result__: bool = ::std::mem::zeroed();
60             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
61         }
62     }
63     #[cfg(all(feature = "Devices_Radios", feature = "Foundation"))]
64     pub fn GetRadioAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<super::Radios::Radio>> {
65         let this = self;
66         unsafe {
67             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
68             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<super::Radios::Radio>>(result__)
69         }
70     }
71     pub fn GetDeviceSelector() -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
72         Self::IBluetoothAdapterStatics(|this| unsafe {
73             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
74             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
75         })
76     }
77     #[cfg(feature = "Foundation")]
78     pub fn FromIdAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(deviceid: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<BluetoothAdapter>> {
79         Self::IBluetoothAdapterStatics(|this| unsafe {
80             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
81             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), deviceid.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<BluetoothAdapter>>(result__)
82         })
83     }
84     #[cfg(feature = "Foundation")]
85     pub fn GetDefaultAsync() -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<BluetoothAdapter>> {
86         Self::IBluetoothAdapterStatics(|this| unsafe {
87             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
88             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<BluetoothAdapter>>(result__)
89         })
90     }
91     pub fn AreClassicSecureConnectionsSupported(&self) -> ::windows::runtime::Result<bool> {
92         let this = &::windows::runtime::Interface::cast::<IBluetoothAdapter2>(self)?;
93         unsafe {
94             let mut result__: bool = ::std::mem::zeroed();
95             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
96         }
97     }
98     pub fn AreLowEnergySecureConnectionsSupported(&self) -> ::windows::runtime::Result<bool> {
99         let this = &::windows::runtime::Interface::cast::<IBluetoothAdapter2>(self)?;
100         unsafe {
101             let mut result__: bool = ::std::mem::zeroed();
102             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
103         }
104     }
105     pub fn IsExtendedAdvertisingSupported(&self) -> ::windows::runtime::Result<bool> {
106         let this = &::windows::runtime::Interface::cast::<IBluetoothAdapter3>(self)?;
107         unsafe {
108             let mut result__: bool = ::std::mem::zeroed();
109             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
110         }
111     }
112     pub fn MaxAdvertisementDataLength(&self) -> ::windows::runtime::Result<u32> {
113         let this = &::windows::runtime::Interface::cast::<IBluetoothAdapter3>(self)?;
114         unsafe {
115             let mut result__: u32 = ::std::mem::zeroed();
116             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
ESocketESocket117         }
118     }
119     pub fn IBluetoothAdapterStatics<R, F: FnOnce(&IBluetoothAdapterStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
120         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothAdapter, IBluetoothAdapterStatics> = ::windows::runtime::FactoryCache::new();
121         unsafe { SHARED.call(callback) }
122     }
123 }
124 unsafe impl ::windows::runtime::RuntimeType for BluetoothAdapter {
125     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothAdapter;{7974f04c-5f7a-4a34-9225-a855f84b1a8b})");
126 }
127 unsafe impl ::windows::runtime::Interface for BluetoothAdapter {
128     type Vtable = IBluetoothAdapter_abi;
129     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2037706828, 24442, 18996, [146, 37, 168, 85, 248, 75, 26, 139]);
130 }
131 impl ::windows::runtime::RuntimeName for BluetoothAdapter {
132     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothAdapter";
clearESocket133 }
134 impl ::std::convert::From<BluetoothAdapter> for ::windows::runtime::IUnknown {
135     fn from(value: BluetoothAdapter) -> Self {
136         unsafe { ::std::mem::transmute(value) }
137     }
138 }
139 impl ::std::convert::From<&BluetoothAdapter> for ::windows::runtime::IUnknown {
140     fn from(value: &BluetoothAdapter) -> Self {
141         ::std::convert::From::from(::std::clone::Clone::clone(value))
142     }
143 }
putESocket144 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothAdapter {
145     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
146         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
147     }
148 }
149 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothAdapter {
150     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
151         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
152     }
153 }
154 impl ::std::convert::From<BluetoothAdapter> for ::windows::runtime::IInspectable {
155     fn from(value: BluetoothAdapter) -> Self {
156         value.0
reqrdESocket157     }
158 }
159 impl ::std::convert::From<&BluetoothAdapter> for ::windows::runtime::IInspectable {
160     fn from(value: &BluetoothAdapter) -> Self {
161         value.0.clone()
162     }
163 }
164 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothAdapter {
165     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
166         ::windows::runtime::Param::Owned(self.0)
167     }
168 }
169 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothAdapter {
170     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
getReceivedESocket171         ::windows::runtime::Param::Borrowed(&self.0)
172     }
173 }
174 unsafe impl ::std::marker::Send for BluetoothAdapter {}
175 unsafe impl ::std::marker::Sync for BluetoothAdapter {}
getUnreadSizeESocket176 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
177 #[repr(transparent)]
178 pub struct BluetoothAddressType(pub i32);
179 impl BluetoothAddressType {
setActionsESocket180     pub const Public: BluetoothAddressType = BluetoothAddressType(0i32);
181     pub const Random: BluetoothAddressType = BluetoothAddressType(1i32);
182     pub const Unspecified: BluetoothAddressType = BluetoothAddressType(2i32);
183 }
184 impl ::std::convert::From<i32> for BluetoothAddressType {
185     fn from(value: i32) -> Self {
186         Self(value)
187     }
188 }
189 unsafe impl ::windows::runtime::Abi for BluetoothAddressType {
190     type Abi = Self;
191     type DefaultType = Self;
192 }
193 unsafe impl ::windows::runtime::RuntimeType for BluetoothAddressType {
194     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Bluetooth.BluetoothAddressType;i4)");
195 }
196 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
197 #[repr(transparent)]
198 pub struct BluetoothCacheMode(pub i32);
199 impl BluetoothCacheMode {
200     pub const Cached: BluetoothCacheMode = BluetoothCacheMode(0i32);
201     pub const Uncached: BluetoothCacheMode = BluetoothCacheMode(1i32);
202 }
203 impl ::std::convert::From<i32> for BluetoothCacheMode {
204     fn from(value: i32) -> Self {
205         Self(value)
206     }
207 }
208 unsafe impl ::windows::runtime::Abi for BluetoothCacheMode {
209     type Abi = Self;
210     type DefaultType = Self;
211 }
212 unsafe impl ::windows::runtime::RuntimeType for BluetoothCacheMode {
213     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Bluetooth.BluetoothCacheMode;i4)");
214 }
215 #[repr(transparent)]
216 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
217 pub struct BluetoothClassOfDevice(::windows::runtime::IInspectable);
218 impl BluetoothClassOfDevice {
219     pub fn RawValue(&self) -> ::windows::runtime::Result<u32> {
220         let this = self;
221         unsafe {
222             let mut result__: u32 = ::std::mem::zeroed();
223             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
224         }
225     }
226     pub fn MajorClass(&self) -> ::windows::runtime::Result<BluetoothMajorClass> {
227         let this = self;
228         unsafe {
229             let mut result__: BluetoothMajorClass = ::std::mem::zeroed();
230             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothMajorClass>(result__)
231         }
232     }
233     pub fn MinorClass(&self) -> ::windows::runtime::Result<BluetoothMinorClass> {
234         let this = self;
235         unsafe {
236             let mut result__: BluetoothMinorClass = ::std::mem::zeroed();
237             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothMinorClass>(result__)
~BreakCondition()238         }
239     }
240     pub fn ServiceCapabilities(&self) -> ::windows::runtime::Result<BluetoothServiceCapabilities> {
241         let this = self;
242         unsafe {
243             let mut result__: BluetoothServiceCapabilities = ::std::mem::zeroed();
244             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothServiceCapabilities>(result__)
245         }
246     }
247     pub fn FromRawValue(rawvalue: u32) -> ::windows::runtime::Result<BluetoothClassOfDevice> {
248         Self::IBluetoothClassOfDeviceStatics(|this| unsafe {
didBreak()249             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
250             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), rawvalue, &mut result__).from_abi::<BluetoothClassOfDevice>(result__)
251         })
252     }
253     pub fn FromParts(majorclass: BluetoothMajorClass, minorclass: BluetoothMinorClass, servicecapabilities: BluetoothServiceCapabilities) -> ::windows::runtime::Result<BluetoothClassOfDevice> {
254         Self::IBluetoothClassOfDeviceStatics(|this| unsafe {
255             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
256             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), majorclass, minorclass, servicecapabilities, &mut result__).from_abi::<BluetoothClassOfDevice>(result__)
257         })
258     }
259     pub fn IBluetoothClassOfDeviceStatics<R, F: FnOnce(&IBluetoothClassOfDeviceStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
260         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothClassOfDevice, IBluetoothClassOfDeviceStatics> = ::windows::runtime::FactoryCache::new();
261         unsafe { SHARED.call(callback) }
262     }
263 }
264 unsafe impl ::windows::runtime::RuntimeType for BluetoothClassOfDevice {
265     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothClassOfDevice;{d640227e-d7d7-4661-9454-65039ca17a2b})");
266 }
267 unsafe impl ::windows::runtime::Interface for BluetoothClassOfDevice {
268     type Vtable = IBluetoothClassOfDevice_abi;
269     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3594527358, 55255, 18017, [148, 84, 101, 3, 156, 161, 122, 43]);
270 }
FutureBreakCondition(Future * ft)271 impl ::windows::runtime::RuntimeName for BluetoothClassOfDevice {
272     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothClassOfDevice";
273 }
274 impl ::std::convert::From<BluetoothClassOfDevice> for ::windows::runtime::IUnknown {
shouldBreakImpl()275     fn from(value: BluetoothClassOfDevice) -> Self {
276         unsafe { ::std::mem::transmute(value) }
277     }
278 }
279 impl ::std::convert::From<&BluetoothClassOfDevice> for ::windows::runtime::IUnknown {
280     fn from(value: &BluetoothClassOfDevice) -> Self {
281         ::std::convert::From::from(::std::clone::Clone::clone(value))
282     }
283 }
284 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothClassOfDevice {
285     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
286         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
FlushedBreakCondition(ESocket * s)287     }
288 }
289 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothClassOfDevice {
290     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
291         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
292     }
293 }
294 impl ::std::convert::From<BluetoothClassOfDevice> for ::windows::runtime::IInspectable {
295     fn from(value: BluetoothClassOfDevice) -> Self {
296         value.0
297     }
298 }
299 impl ::std::convert::From<&BluetoothClassOfDevice> for ::windows::runtime::IInspectable {
300     fn from(value: &BluetoothClassOfDevice) -> Self {
301         value.0.clone()
302     }
303 }
304 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothClassOfDevice {
ReadBreakCondition(ESocket * s,unsigned nr)305     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
306         ::windows::runtime::Param::Owned(self.0)
307     }
308 }
309 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothClassOfDevice {
310     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
311         ::windows::runtime::Param::Borrowed(&self.0)
312     }
313 }
314 unsafe impl ::std::marker::Send for BluetoothClassOfDevice {}
315 unsafe impl ::std::marker::Sync for BluetoothClassOfDevice {}
316 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
317 #[repr(transparent)]
318 pub struct BluetoothConnectionStatus(pub i32);
319 impl BluetoothConnectionStatus {
320     pub const Disconnected: BluetoothConnectionStatus = BluetoothConnectionStatus(0i32);
321     pub const Connected: BluetoothConnectionStatus = BluetoothConnectionStatus(1i32);
322 }
323 impl ::std::convert::From<i32> for BluetoothConnectionStatus {
ErrorBreakCondition(ESocket * s)324     fn from(value: i32) -> Self {
325         Self(value)
326     }
shouldBreakImpl()327 }
328 unsafe impl ::windows::runtime::Abi for BluetoothConnectionStatus {
329     type Abi = Self;
330     type DefaultType = Self;
331 }
332 unsafe impl ::windows::runtime::RuntimeType for BluetoothConnectionStatus {
333     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Bluetooth.BluetoothConnectionStatus;i4)");
CtxCloseBreakCondition(ESocket * sock)334 }
335 #[repr(transparent)]
336 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
337 pub struct BluetoothDevice(::windows::runtime::IInspectable);
338 impl BluetoothDevice {
gotDtor()339     pub fn DeviceId(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
340         let this = self;
341         unsafe {
342             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
343             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
344         }
345     }
346     #[cfg(feature = "Networking")]
347     pub fn HostName(&self) -> ::windows::runtime::Result<super::super::Networking::HostName> {
shouldBreakImpl()348         let this = self;
349         unsafe {
350             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
351             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Networking::HostName>(result__)
352         }
353     }
354     pub fn Name(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
355         let this = self;
shouldBreakImpl()356         unsafe {
357             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
358             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
359         }
360     }
361     pub fn ClassOfDevice(&self) -> ::windows::runtime::Result<BluetoothClassOfDevice> {
362         let this = self;
363         unsafe {
364             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
365             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothClassOfDevice>(result__)
366         }
367     }
368     #[cfg(all(feature = "Foundation_Collections", feature = "Storage_Streams"))]
369     pub fn SdpRecords(&self) -> ::windows::runtime::Result<super::super::Foundation::Collections::IVectorView<super::super::Storage::Streams::IBuffer>> {
370         let this = self;
371         unsafe {
372             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
373             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::Collections::IVectorView<super::super::Storage::Streams::IBuffer>>(result__)
374         }
375     }
376     #[cfg(feature = "deprecated")]
377     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation_Collections"))]
378     pub fn RfcommServices(&self) -> ::windows::runtime::Result<super::super::Foundation::Collections::IVectorView<Rfcomm::RfcommDeviceService>> {
379         let this = self;
380         unsafe {
381             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
382             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::Collections::IVectorView<Rfcomm::RfcommDeviceService>>(result__)
383         }
384     }
385     pub fn ConnectionStatus(&self) -> ::windows::runtime::Result<BluetoothConnectionStatus> {
386         let this = self;
387         unsafe {
388             let mut result__: BluetoothConnectionStatus = ::std::mem::zeroed();
389             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothConnectionStatus>(result__)
390         }
391     }
392     pub fn BluetoothAddress(&self) -> ::windows::runtime::Result<u64> {
393         let this = self;
394         unsafe {
395             let mut result__: u64 = ::std::mem::zeroed();
396             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
397         }
398     }
399     #[cfg(feature = "Foundation")]
400     pub fn NameChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TypedEventHandler<BluetoothDevice, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::Foundation::EventRegistrationToken> {
401         let this = self;
402         unsafe {
403             let mut result__: super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
404             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::EventRegistrationToken>(result__)
405         }
406     }
407     #[cfg(feature = "Foundation")]
408     pub fn RemoveNameChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
409         let this = self;
410         unsafe { (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
411     }
setBreakCondition(BreakCondition * bc)412     #[cfg(feature = "Foundation")]
413     pub fn SdpRecordsChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TypedEventHandler<BluetoothDevice, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::Foundation::EventRegistrationToken> {
414         let this = self;
415         unsafe {
416             let mut result__: super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
417             (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::EventRegistrationToken>(result__)
418         }
419     }
420     #[cfg(feature = "Foundation")]
421     pub fn RemoveSdpRecordsChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
422         let this = self;
423         unsafe { (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
424     }
425     #[cfg(feature = "Foundation")]
426     pub fn ConnectionStatusChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TypedEventHandler<BluetoothDevice, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::Foundation::EventRegistrationToken> {
427         let this = self;
428         unsafe {
429             let mut result__: super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
430             (::windows::runtime::Interface::vtable(this).18)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::EventRegistrationToken>(result__)
431         }
432     }
433     #[cfg(feature = "Foundation")]
434     pub fn RemoveConnectionStatusChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
435         let this = self;
SetUp()436         unsafe { (::windows::runtime::Interface::vtable(this).19)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
437     }
438     #[cfg(feature = "Foundation")]
439     pub fn Close(&self) -> ::windows::runtime::Result<()> {
440         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
441         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
442     }
443     #[cfg(feature = "Foundation")]
TearDown()444     pub fn FromIdAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(deviceid: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<BluetoothDevice>> {
445         Self::IBluetoothDeviceStatics(|this| unsafe {
446             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
447             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), deviceid.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<BluetoothDevice>>(result__)
448         })
449     }
450     #[cfg(all(feature = "Foundation", feature = "Networking"))]
451     pub fn FromHostNameAsync<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Networking::HostName>>(hostname: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<BluetoothDevice>> {
452         Self::IBluetoothDeviceStatics(|this| unsafe {
453             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
454             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), hostname.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<BluetoothDevice>>(result__)
455         })
456     }
457     #[cfg(feature = "Foundation")]
458     pub fn FromBluetoothAddressAsync(address: u64) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<BluetoothDevice>> {
459         Self::IBluetoothDeviceStatics(|this| unsafe {
460             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
461             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), address, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<BluetoothDevice>>(result__)
462         })
463     }
464     pub fn GetDeviceSelector() -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
465         Self::IBluetoothDeviceStatics(|this| unsafe {
466             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
467             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
468         })
469     }
470     #[cfg(feature = "Devices_Enumeration")]
471     pub fn DeviceInformation(&self) -> ::windows::runtime::Result<super::Enumeration::DeviceInformation> {
472         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice2>(self)?;
473         unsafe {
474             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
475             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::Enumeration::DeviceInformation>(result__)
476         }
477     }
478     pub fn GetDeviceSelectorFromPairingState(pairingstate: bool) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
479         Self::IBluetoothDeviceStatics2(|this| unsafe {
480             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
481             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), pairingstate, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
482         })
483     }
484     pub fn GetDeviceSelectorFromConnectionStatus(connectionstatus: BluetoothConnectionStatus) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
485         Self::IBluetoothDeviceStatics2(|this| unsafe {
486             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
487             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), connectionstatus, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
488         })
489     }
490     pub fn GetDeviceSelectorFromDeviceName<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(devicename: Param0) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
491         Self::IBluetoothDeviceStatics2(|this| unsafe {
492             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
493             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), devicename.into_param().abi(), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
494         })
495     }
496     pub fn GetDeviceSelectorFromBluetoothAddress(bluetoothaddress: u64) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
497         Self::IBluetoothDeviceStatics2(|this| unsafe {
498             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
499             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), bluetoothaddress, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
500         })
501     }
502     pub fn GetDeviceSelectorFromClassOfDevice<'a, Param0: ::windows::runtime::IntoParam<'a, BluetoothClassOfDevice>>(classofdevice: Param0) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
503         Self::IBluetoothDeviceStatics2(|this| unsafe {
504             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
505             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), classofdevice.into_param().abi(), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
506         })
507     }
508     #[cfg(feature = "Devices_Enumeration")]
509     pub fn DeviceAccessInformation(&self) -> ::windows::runtime::Result<super::Enumeration::DeviceAccessInformation> {
510         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice3>(self)?;
511         unsafe {
512             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
513             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::Enumeration::DeviceAccessInformation>(result__)
514         }
515     }
516     #[cfg(all(feature = "Devices_Enumeration", feature = "Foundation"))]
517     pub fn RequestAccessAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<super::Enumeration::DeviceAccessStatus>> {
518         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice3>(self)?;
519         unsafe {
520             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
521             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<super::Enumeration::DeviceAccessStatus>>(result__)
522         }
523     }
524     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation"))]
525     pub fn GetRfcommServicesAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<Rfcomm::RfcommDeviceServicesResult>> {
526         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice3>(self)?;
527         unsafe {
528             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
529             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<Rfcomm::RfcommDeviceServicesResult>>(result__)
530         }
531     }
532     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation"))]
533     pub fn GetRfcommServicesWithCacheModeAsync(&self, cachemode: BluetoothCacheMode) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<Rfcomm::RfcommDeviceServicesResult>> {
534         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice3>(self)?;
535         unsafe {
536             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
537             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), cachemode, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<Rfcomm::RfcommDeviceServicesResult>>(result__)
538         }
539     }
540     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation"))]
541     pub fn GetRfcommServicesForIdAsync<'a, Param0: ::windows::runtime::IntoParam<'a, Rfcomm::RfcommServiceId>>(&self, serviceid: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<Rfcomm::RfcommDeviceServicesResult>> {
542         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice3>(self)?;
543         unsafe {
544             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
545             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), serviceid.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<Rfcomm::RfcommDeviceServicesResult>>(result__)
546         }
547     }
548     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation"))]
549     pub fn GetRfcommServicesForIdWithCacheModeAsync<'a, Param0: ::windows::runtime::IntoParam<'a, Rfcomm::RfcommServiceId>>(&self, serviceid: Param0, cachemode: BluetoothCacheMode) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<Rfcomm::RfcommDeviceServicesResult>> {
550         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice3>(self)?;
551         unsafe {
552             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
553             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), serviceid.into_param().abi(), cachemode, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<Rfcomm::RfcommDeviceServicesResult>>(result__)
554         }
555     }
556     pub fn BluetoothDeviceId(&self) -> ::windows::runtime::Result<BluetoothDeviceId> {
557         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice4>(self)?;
558         unsafe {
559             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
560             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothDeviceId>(result__)
561         }
562     }
563     pub fn WasSecureConnectionUsedForPairing(&self) -> ::windows::runtime::Result<bool> {
564         let this = &::windows::runtime::Interface::cast::<IBluetoothDevice5>(self)?;
565         unsafe {
566             let mut result__: bool = ::std::mem::zeroed();
567             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
568         }
569     }
570     pub fn IBluetoothDeviceStatics<R, F: FnOnce(&IBluetoothDeviceStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
571         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothDevice, IBluetoothDeviceStatics> = ::windows::runtime::FactoryCache::new();
572         unsafe { SHARED.call(callback) }
573     }
574     pub fn IBluetoothDeviceStatics2<R, F: FnOnce(&IBluetoothDeviceStatics2) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
575         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothDevice, IBluetoothDeviceStatics2> = ::windows::runtime::FactoryCache::new();
576         unsafe { SHARED.call(callback) }
577     }
578 }
579 unsafe impl ::windows::runtime::RuntimeType for BluetoothDevice {
580     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothDevice;{2335b156-90d2-4a04-aef5-0e20b9e6b707})");
581 }
582 unsafe impl ::windows::runtime::Interface for BluetoothDevice {
583     type Vtable = IBluetoothDevice_abi;
584     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(590721366, 37074, 18948, [174, 245, 14, 32, 185, 230, 183, 7]);
585 }
586 impl ::windows::runtime::RuntimeName for BluetoothDevice {
587     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothDevice";
588 }
589 impl ::std::convert::From<BluetoothDevice> for ::windows::runtime::IUnknown {
590     fn from(value: BluetoothDevice) -> Self {
591         unsafe { ::std::mem::transmute(value) }
592     }
593 }
594 impl ::std::convert::From<&BluetoothDevice> for ::windows::runtime::IUnknown {
595     fn from(value: &BluetoothDevice) -> Self {
596         ::std::convert::From::from(::std::clone::Clone::clone(value))
597     }
598 }
599 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothDevice {
600     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
601         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
602     }
603 }
604 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothDevice {
605     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
606         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
607     }
608 }
609 impl ::std::convert::From<BluetoothDevice> for ::windows::runtime::IInspectable {
610     fn from(value: BluetoothDevice) -> Self {
611         value.0
612     }
613 }
614 impl ::std::convert::From<&BluetoothDevice> for ::windows::runtime::IInspectable {
615     fn from(value: &BluetoothDevice) -> Self {
616         value.0.clone()
617     }
618 }
619 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothDevice {
620     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
621         ::windows::runtime::Param::Owned(self.0)
622     }
623 }
624 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothDevice {
625     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
626         ::windows::runtime::Param::Borrowed(&self.0)
627     }
628 }
629 #[cfg(feature = "Foundation")]
630 impl ::std::convert::TryFrom<BluetoothDevice> for super::super::Foundation::IClosable {
631     type Error = ::windows::runtime::Error;
632     fn try_from(value: BluetoothDevice) -> ::windows::runtime::Result<Self> {
633         ::std::convert::TryFrom::try_from(&value)
634     }
635 }
636 #[cfg(feature = "Foundation")]
637 impl ::std::convert::TryFrom<&BluetoothDevice> for super::super::Foundation::IClosable {
638     type Error = ::windows::runtime::Error;
639     fn try_from(value: &BluetoothDevice) -> ::windows::runtime::Result<Self> {
640         ::windows::runtime::Interface::cast(value)
641     }
642 }
643 #[cfg(feature = "Foundation")]
644 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for BluetoothDevice {
645     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
646         ::windows::runtime::IntoParam::into_param(&self)
647     }
648 }
649 #[cfg(feature = "Foundation")]
650 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &BluetoothDevice {
651     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
652         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
653     }
654 }
655 unsafe impl ::std::marker::Send for BluetoothDevice {}
656 unsafe impl ::std::marker::Sync for BluetoothDevice {}
657 #[repr(transparent)]
658 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
659 pub struct BluetoothDeviceId(::windows::runtime::IInspectable);
660 impl BluetoothDeviceId {
661     pub fn Id(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
662         let this = self;
663         unsafe {
664             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
665             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
666         }
667     }
668     pub fn IsClassicDevice(&self) -> ::windows::runtime::Result<bool> {
669         let this = self;
670         unsafe {
671             let mut result__: bool = ::std::mem::zeroed();
672             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
673         }
674     }
675     pub fn IsLowEnergyDevice(&self) -> ::windows::runtime::Result<bool> {
676         let this = self;
677         unsafe {
678             let mut result__: bool = ::std::mem::zeroed();
679             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
680         }
681     }
682     pub fn FromId<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(deviceid: Param0) -> ::windows::runtime::Result<BluetoothDeviceId> {
683         Self::IBluetoothDeviceIdStatics(|this| unsafe {
684             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
685             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), deviceid.into_param().abi(), &mut result__).from_abi::<BluetoothDeviceId>(result__)
686         })
687     }
688     pub fn IBluetoothDeviceIdStatics<R, F: FnOnce(&IBluetoothDeviceIdStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
689         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothDeviceId, IBluetoothDeviceIdStatics> = ::windows::runtime::FactoryCache::new();
690         unsafe { SHARED.call(callback) }
691     }
692 }
693 unsafe impl ::windows::runtime::RuntimeType for BluetoothDeviceId {
694     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothDeviceId;{c17949af-57c1-4642-bcce-e6c06b20ae76})");
695 }
696 unsafe impl ::windows::runtime::Interface for BluetoothDeviceId {
697     type Vtable = IBluetoothDeviceId_abi;
698     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3245951407, 22465, 17986, [188, 206, 230, 192, 107, 32, 174, 118]);
699 }
700 impl ::windows::runtime::RuntimeName for BluetoothDeviceId {
701     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothDeviceId";
702 }
703 impl ::std::convert::From<BluetoothDeviceId> for ::windows::runtime::IUnknown {
704     fn from(value: BluetoothDeviceId) -> Self {
705         unsafe { ::std::mem::transmute(value) }
706     }
707 }
708 impl ::std::convert::From<&BluetoothDeviceId> for ::windows::runtime::IUnknown {
709     fn from(value: &BluetoothDeviceId) -> Self {
710         ::std::convert::From::from(::std::clone::Clone::clone(value))
711     }
712 }
713 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothDeviceId {
714     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
715         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
716     }
717 }
718 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothDeviceId {
719     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
720         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
721     }
722 }
723 impl ::std::convert::From<BluetoothDeviceId> for ::windows::runtime::IInspectable {
724     fn from(value: BluetoothDeviceId) -> Self {
725         value.0
726     }
727 }
728 impl ::std::convert::From<&BluetoothDeviceId> for ::windows::runtime::IInspectable {
729     fn from(value: &BluetoothDeviceId) -> Self {
730         value.0.clone()
731     }
732 }
733 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothDeviceId {
734     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
735         ::windows::runtime::Param::Owned(self.0)
736     }
737 }
738 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothDeviceId {
739     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
740         ::windows::runtime::Param::Borrowed(&self.0)
741     }
742 }
743 unsafe impl ::std::marker::Send for BluetoothDeviceId {}
744 unsafe impl ::std::marker::Sync for BluetoothDeviceId {}
745 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
746 #[repr(transparent)]
747 pub struct BluetoothError(pub i32);
748 impl BluetoothError {
749     pub const Success: BluetoothError = BluetoothError(0i32);
750     pub const RadioNotAvailable: BluetoothError = BluetoothError(1i32);
751     pub const ResourceInUse: BluetoothError = BluetoothError(2i32);
752     pub const DeviceNotConnected: BluetoothError = BluetoothError(3i32);
753     pub const OtherError: BluetoothError = BluetoothError(4i32);
754     pub const DisabledByPolicy: BluetoothError = BluetoothError(5i32);
755     pub const NotSupported: BluetoothError = BluetoothError(6i32);
756     pub const DisabledByUser: BluetoothError = BluetoothError(7i32);
757     pub const ConsentRequired: BluetoothError = BluetoothError(8i32);
758     pub const TransportNotSupported: BluetoothError = BluetoothError(9i32);
759 }
760 impl ::std::convert::From<i32> for BluetoothError {
761     fn from(value: i32) -> Self {
762         Self(value)
763     }
764 }
765 unsafe impl ::windows::runtime::Abi for BluetoothError {
766     type Abi = Self;
767     type DefaultType = Self;
768 }
769 unsafe impl ::windows::runtime::RuntimeType for BluetoothError {
770     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Bluetooth.BluetoothError;i4)");
771 }
772 #[repr(transparent)]
773 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
774 pub struct BluetoothLEAppearance(::windows::runtime::IInspectable);
775 impl BluetoothLEAppearance {
776     pub fn RawValue(&self) -> ::windows::runtime::Result<u16> {
777         let this = self;
778         unsafe {
779             let mut result__: u16 = ::std::mem::zeroed();
780             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
781         }
782     }
783     pub fn Category(&self) -> ::windows::runtime::Result<u16> {
784         let this = self;
785         unsafe {
786             let mut result__: u16 = ::std::mem::zeroed();
787             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
788         }
789     }
790     pub fn SubCategory(&self) -> ::windows::runtime::Result<u16> {
791         let this = self;
792         unsafe {
793             let mut result__: u16 = ::std::mem::zeroed();
794             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
795         }
796     }
797     pub fn FromRawValue(rawvalue: u16) -> ::windows::runtime::Result<BluetoothLEAppearance> {
798         Self::IBluetoothLEAppearanceStatics(|this| unsafe {
799             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
800             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), rawvalue, &mut result__).from_abi::<BluetoothLEAppearance>(result__)
801         })
802     }
803     pub fn FromParts(appearancecategory: u16, appearancesubcategory: u16) -> ::windows::runtime::Result<BluetoothLEAppearance> {
804         Self::IBluetoothLEAppearanceStatics(|this| unsafe {
805             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
806             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), appearancecategory, appearancesubcategory, &mut result__).from_abi::<BluetoothLEAppearance>(result__)
807         })
808     }
809     pub fn IBluetoothLEAppearanceStatics<R, F: FnOnce(&IBluetoothLEAppearanceStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
810         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothLEAppearance, IBluetoothLEAppearanceStatics> = ::windows::runtime::FactoryCache::new();
811         unsafe { SHARED.call(callback) }
812     }
813 }
814 unsafe impl ::windows::runtime::RuntimeType for BluetoothLEAppearance {
815     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothLEAppearance;{5d2079f2-66a8-4258-985e-02b4d9509f18})");
816 }
817 unsafe impl ::windows::runtime::Interface for BluetoothLEAppearance {
818     type Vtable = IBluetoothLEAppearance_abi;
819     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1562409458, 26280, 16984, [152, 94, 2, 180, 217, 80, 159, 24]);
820 }
821 impl ::windows::runtime::RuntimeName for BluetoothLEAppearance {
822     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEAppearance";
823 }
824 impl ::std::convert::From<BluetoothLEAppearance> for ::windows::runtime::IUnknown {
825     fn from(value: BluetoothLEAppearance) -> Self {
826         unsafe { ::std::mem::transmute(value) }
827     }
828 }
829 impl ::std::convert::From<&BluetoothLEAppearance> for ::windows::runtime::IUnknown {
830     fn from(value: &BluetoothLEAppearance) -> Self {
831         ::std::convert::From::from(::std::clone::Clone::clone(value))
832     }
833 }
834 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothLEAppearance {
835     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
836         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
837     }
838 }
839 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothLEAppearance {
840     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
841         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
842     }
843 }
844 impl ::std::convert::From<BluetoothLEAppearance> for ::windows::runtime::IInspectable {
845     fn from(value: BluetoothLEAppearance) -> Self {
846         value.0
847     }
848 }
849 impl ::std::convert::From<&BluetoothLEAppearance> for ::windows::runtime::IInspectable {
850     fn from(value: &BluetoothLEAppearance) -> Self {
851         value.0.clone()
852     }
853 }
854 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothLEAppearance {
855     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
856         ::windows::runtime::Param::Owned(self.0)
857     }
858 }
859 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothLEAppearance {
860     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
861         ::windows::runtime::Param::Borrowed(&self.0)
862     }
863 }
864 unsafe impl ::std::marker::Send for BluetoothLEAppearance {}
865 unsafe impl ::std::marker::Sync for BluetoothLEAppearance {}
866 pub struct BluetoothLEAppearanceCategories {}
867 impl BluetoothLEAppearanceCategories {
868     pub fn Uncategorized() -> ::windows::runtime::Result<u16> {
869         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
870             let mut result__: u16 = ::std::mem::zeroed();
871             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
872         })
873     }
874     pub fn Phone() -> ::windows::runtime::Result<u16> {
875         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
876             let mut result__: u16 = ::std::mem::zeroed();
877             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
878         })
879     }
880     pub fn Computer() -> ::windows::runtime::Result<u16> {
881         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
882             let mut result__: u16 = ::std::mem::zeroed();
883             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
884         })
885     }
886     pub fn Watch() -> ::windows::runtime::Result<u16> {
887         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
888             let mut result__: u16 = ::std::mem::zeroed();
889             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
890         })
891     }
892     pub fn Clock() -> ::windows::runtime::Result<u16> {
893         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
894             let mut result__: u16 = ::std::mem::zeroed();
895             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
896         })
897     }
898     pub fn Display() -> ::windows::runtime::Result<u16> {
899         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
900             let mut result__: u16 = ::std::mem::zeroed();
901             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
902         })
903     }
904     pub fn RemoteControl() -> ::windows::runtime::Result<u16> {
905         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
906             let mut result__: u16 = ::std::mem::zeroed();
907             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
908         })
909     }
910     pub fn EyeGlasses() -> ::windows::runtime::Result<u16> {
911         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
912             let mut result__: u16 = ::std::mem::zeroed();
913             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
914         })
915     }
916     pub fn Tag() -> ::windows::runtime::Result<u16> {
917         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
918             let mut result__: u16 = ::std::mem::zeroed();
919             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
920         })
921     }
922     pub fn Keyring() -> ::windows::runtime::Result<u16> {
923         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
924             let mut result__: u16 = ::std::mem::zeroed();
925             (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
926         })
927     }
928     pub fn MediaPlayer() -> ::windows::runtime::Result<u16> {
929         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
930             let mut result__: u16 = ::std::mem::zeroed();
931             (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
932         })
933     }
934     pub fn BarcodeScanner() -> ::windows::runtime::Result<u16> {
935         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
936             let mut result__: u16 = ::std::mem::zeroed();
937             (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
938         })
939     }
940     pub fn Thermometer() -> ::windows::runtime::Result<u16> {
941         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
942             let mut result__: u16 = ::std::mem::zeroed();
943             (::windows::runtime::Interface::vtable(this).18)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
944         })
945     }
946     pub fn HeartRate() -> ::windows::runtime::Result<u16> {
947         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
948             let mut result__: u16 = ::std::mem::zeroed();
949             (::windows::runtime::Interface::vtable(this).19)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
950         })
951     }
952     pub fn BloodPressure() -> ::windows::runtime::Result<u16> {
953         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
954             let mut result__: u16 = ::std::mem::zeroed();
955             (::windows::runtime::Interface::vtable(this).20)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
956         })
957     }
958     pub fn HumanInterfaceDevice() -> ::windows::runtime::Result<u16> {
959         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
960             let mut result__: u16 = ::std::mem::zeroed();
961             (::windows::runtime::Interface::vtable(this).21)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
962         })
963     }
964     pub fn GlucoseMeter() -> ::windows::runtime::Result<u16> {
965         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
966             let mut result__: u16 = ::std::mem::zeroed();
967             (::windows::runtime::Interface::vtable(this).22)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
968         })
969     }
970     pub fn RunningWalking() -> ::windows::runtime::Result<u16> {
971         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
972             let mut result__: u16 = ::std::mem::zeroed();
973             (::windows::runtime::Interface::vtable(this).23)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
974         })
975     }
976     pub fn Cycling() -> ::windows::runtime::Result<u16> {
977         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
978             let mut result__: u16 = ::std::mem::zeroed();
979             (::windows::runtime::Interface::vtable(this).24)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
980         })
981     }
982     pub fn PulseOximeter() -> ::windows::runtime::Result<u16> {
983         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
984             let mut result__: u16 = ::std::mem::zeroed();
985             (::windows::runtime::Interface::vtable(this).25)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
986         })
987     }
988     pub fn WeightScale() -> ::windows::runtime::Result<u16> {
989         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
990             let mut result__: u16 = ::std::mem::zeroed();
991             (::windows::runtime::Interface::vtable(this).26)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
992         })
993     }
994     pub fn OutdoorSportActivity() -> ::windows::runtime::Result<u16> {
995         Self::IBluetoothLEAppearanceCategoriesStatics(|this| unsafe {
996             let mut result__: u16 = ::std::mem::zeroed();
997             (::windows::runtime::Interface::vtable(this).27)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
998         })
999     }
1000     pub fn IBluetoothLEAppearanceCategoriesStatics<R, F: FnOnce(&IBluetoothLEAppearanceCategoriesStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
1001         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothLEAppearanceCategories, IBluetoothLEAppearanceCategoriesStatics> = ::windows::runtime::FactoryCache::new();
1002         unsafe { SHARED.call(callback) }
1003     }
1004 }
1005 impl ::windows::runtime::RuntimeName for BluetoothLEAppearanceCategories {
1006     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEAppearanceCategories";
1007 }
1008 pub struct BluetoothLEAppearanceSubcategories {}
1009 impl BluetoothLEAppearanceSubcategories {
1010     pub fn Generic() -> ::windows::runtime::Result<u16> {
1011         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1012             let mut result__: u16 = ::std::mem::zeroed();
1013             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1014         })
1015     }
1016     pub fn SportsWatch() -> ::windows::runtime::Result<u16> {
1017         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1018             let mut result__: u16 = ::std::mem::zeroed();
1019             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1020         })
1021     }
1022     pub fn ThermometerEar() -> ::windows::runtime::Result<u16> {
1023         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1024             let mut result__: u16 = ::std::mem::zeroed();
1025             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1026         })
1027     }
1028     pub fn HeartRateBelt() -> ::windows::runtime::Result<u16> {
1029         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1030             let mut result__: u16 = ::std::mem::zeroed();
1031             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1032         })
1033     }
1034     pub fn BloodPressureArm() -> ::windows::runtime::Result<u16> {
1035         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1036             let mut result__: u16 = ::std::mem::zeroed();
1037             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1038         })
1039     }
1040     pub fn BloodPressureWrist() -> ::windows::runtime::Result<u16> {
1041         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1042             let mut result__: u16 = ::std::mem::zeroed();
1043             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1044         })
1045     }
1046     pub fn Keyboard() -> ::windows::runtime::Result<u16> {
1047         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1048             let mut result__: u16 = ::std::mem::zeroed();
1049             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1050         })
1051     }
1052     pub fn Mouse() -> ::windows::runtime::Result<u16> {
1053         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1054             let mut result__: u16 = ::std::mem::zeroed();
1055             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1056         })
1057     }
1058     pub fn Joystick() -> ::windows::runtime::Result<u16> {
1059         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1060             let mut result__: u16 = ::std::mem::zeroed();
1061             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1062         })
1063     }
1064     pub fn Gamepad() -> ::windows::runtime::Result<u16> {
1065         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1066             let mut result__: u16 = ::std::mem::zeroed();
1067             (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1068         })
1069     }
1070     pub fn DigitizerTablet() -> ::windows::runtime::Result<u16> {
1071         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1072             let mut result__: u16 = ::std::mem::zeroed();
1073             (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1074         })
1075     }
1076     pub fn CardReader() -> ::windows::runtime::Result<u16> {
1077         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1078             let mut result__: u16 = ::std::mem::zeroed();
1079             (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1080         })
1081     }
1082     pub fn DigitalPen() -> ::windows::runtime::Result<u16> {
1083         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1084             let mut result__: u16 = ::std::mem::zeroed();
1085             (::windows::runtime::Interface::vtable(this).18)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1086         })
1087     }
1088     pub fn BarcodeScanner() -> ::windows::runtime::Result<u16> {
1089         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1090             let mut result__: u16 = ::std::mem::zeroed();
1091             (::windows::runtime::Interface::vtable(this).19)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1092         })
1093     }
1094     pub fn RunningWalkingInShoe() -> ::windows::runtime::Result<u16> {
1095         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1096             let mut result__: u16 = ::std::mem::zeroed();
1097             (::windows::runtime::Interface::vtable(this).20)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1098         })
1099     }
1100     pub fn RunningWalkingOnShoe() -> ::windows::runtime::Result<u16> {
1101         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1102             let mut result__: u16 = ::std::mem::zeroed();
1103             (::windows::runtime::Interface::vtable(this).21)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1104         })
1105     }
1106     pub fn RunningWalkingOnHip() -> ::windows::runtime::Result<u16> {
1107         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1108             let mut result__: u16 = ::std::mem::zeroed();
1109             (::windows::runtime::Interface::vtable(this).22)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1110         })
1111     }
1112     pub fn CyclingComputer() -> ::windows::runtime::Result<u16> {
1113         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1114             let mut result__: u16 = ::std::mem::zeroed();
1115             (::windows::runtime::Interface::vtable(this).23)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1116         })
1117     }
1118     pub fn CyclingSpeedSensor() -> ::windows::runtime::Result<u16> {
1119         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1120             let mut result__: u16 = ::std::mem::zeroed();
1121             (::windows::runtime::Interface::vtable(this).24)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1122         })
1123     }
1124     pub fn CyclingCadenceSensor() -> ::windows::runtime::Result<u16> {
1125         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1126             let mut result__: u16 = ::std::mem::zeroed();
1127             (::windows::runtime::Interface::vtable(this).25)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1128         })
1129     }
1130     pub fn CyclingPowerSensor() -> ::windows::runtime::Result<u16> {
1131         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1132             let mut result__: u16 = ::std::mem::zeroed();
1133             (::windows::runtime::Interface::vtable(this).26)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1134         })
1135     }
1136     pub fn CyclingSpeedCadenceSensor() -> ::windows::runtime::Result<u16> {
1137         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1138             let mut result__: u16 = ::std::mem::zeroed();
1139             (::windows::runtime::Interface::vtable(this).27)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1140         })
1141     }
1142     pub fn OximeterFingertip() -> ::windows::runtime::Result<u16> {
1143         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1144             let mut result__: u16 = ::std::mem::zeroed();
1145             (::windows::runtime::Interface::vtable(this).28)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1146         })
1147     }
1148     pub fn OximeterWristWorn() -> ::windows::runtime::Result<u16> {
1149         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1150             let mut result__: u16 = ::std::mem::zeroed();
1151             (::windows::runtime::Interface::vtable(this).29)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1152         })
1153     }
1154     pub fn LocationDisplay() -> ::windows::runtime::Result<u16> {
1155         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1156             let mut result__: u16 = ::std::mem::zeroed();
1157             (::windows::runtime::Interface::vtable(this).30)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1158         })
1159     }
1160     pub fn LocationNavigationDisplay() -> ::windows::runtime::Result<u16> {
1161         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1162             let mut result__: u16 = ::std::mem::zeroed();
1163             (::windows::runtime::Interface::vtable(this).31)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1164         })
1165     }
1166     pub fn LocationPod() -> ::windows::runtime::Result<u16> {
1167         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1168             let mut result__: u16 = ::std::mem::zeroed();
1169             (::windows::runtime::Interface::vtable(this).32)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1170         })
1171     }
1172     pub fn LocationNavigationPod() -> ::windows::runtime::Result<u16> {
1173         Self::IBluetoothLEAppearanceSubcategoriesStatics(|this| unsafe {
1174             let mut result__: u16 = ::std::mem::zeroed();
1175             (::windows::runtime::Interface::vtable(this).33)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1176         })
1177     }
1178     pub fn IBluetoothLEAppearanceSubcategoriesStatics<R, F: FnOnce(&IBluetoothLEAppearanceSubcategoriesStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
1179         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothLEAppearanceSubcategories, IBluetoothLEAppearanceSubcategoriesStatics> = ::windows::runtime::FactoryCache::new();
1180         unsafe { SHARED.call(callback) }
1181     }
1182 }
1183 impl ::windows::runtime::RuntimeName for BluetoothLEAppearanceSubcategories {
1184     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEAppearanceSubcategories";
1185 }
1186 #[repr(transparent)]
1187 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1188 pub struct BluetoothLEConnectionParameters(::windows::runtime::IInspectable);
1189 impl BluetoothLEConnectionParameters {
1190     pub fn LinkTimeout(&self) -> ::windows::runtime::Result<u16> {
1191         let this = self;
1192         unsafe {
1193             let mut result__: u16 = ::std::mem::zeroed();
1194             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1195         }
1196     }
1197     pub fn ConnectionLatency(&self) -> ::windows::runtime::Result<u16> {
1198         let this = self;
1199         unsafe {
1200             let mut result__: u16 = ::std::mem::zeroed();
1201             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1202         }
1203     }
1204     pub fn ConnectionInterval(&self) -> ::windows::runtime::Result<u16> {
1205         let this = self;
1206         unsafe {
1207             let mut result__: u16 = ::std::mem::zeroed();
1208             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1209         }
1210     }
1211 }
1212 unsafe impl ::windows::runtime::RuntimeType for BluetoothLEConnectionParameters {
1213     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothLEConnectionParameters;{33cb0771-8da9-508f-a366-1ca388c929ab})");
1214 }
1215 unsafe impl ::windows::runtime::Interface for BluetoothLEConnectionParameters {
1216     type Vtable = IBluetoothLEConnectionParameters_abi;
1217     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(868943729, 36265, 20623, [163, 102, 28, 163, 136, 201, 41, 171]);
1218 }
1219 impl ::windows::runtime::RuntimeName for BluetoothLEConnectionParameters {
1220     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEConnectionParameters";
1221 }
1222 impl ::std::convert::From<BluetoothLEConnectionParameters> for ::windows::runtime::IUnknown {
1223     fn from(value: BluetoothLEConnectionParameters) -> Self {
1224         unsafe { ::std::mem::transmute(value) }
1225     }
1226 }
1227 impl ::std::convert::From<&BluetoothLEConnectionParameters> for ::windows::runtime::IUnknown {
1228     fn from(value: &BluetoothLEConnectionParameters) -> Self {
1229         ::std::convert::From::from(::std::clone::Clone::clone(value))
1230     }
1231 }
1232 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothLEConnectionParameters {
1233     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1234         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1235     }
1236 }
1237 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothLEConnectionParameters {
1238     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1239         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1240     }
1241 }
1242 impl ::std::convert::From<BluetoothLEConnectionParameters> for ::windows::runtime::IInspectable {
1243     fn from(value: BluetoothLEConnectionParameters) -> Self {
1244         value.0
1245     }
1246 }
1247 impl ::std::convert::From<&BluetoothLEConnectionParameters> for ::windows::runtime::IInspectable {
1248     fn from(value: &BluetoothLEConnectionParameters) -> Self {
1249         value.0.clone()
1250     }
1251 }
1252 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothLEConnectionParameters {
1253     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1254         ::windows::runtime::Param::Owned(self.0)
1255     }
1256 }
1257 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothLEConnectionParameters {
1258     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1259         ::windows::runtime::Param::Borrowed(&self.0)
1260     }
1261 }
1262 unsafe impl ::std::marker::Send for BluetoothLEConnectionParameters {}
1263 unsafe impl ::std::marker::Sync for BluetoothLEConnectionParameters {}
1264 #[repr(transparent)]
1265 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1266 pub struct BluetoothLEConnectionPhy(::windows::runtime::IInspectable);
1267 impl BluetoothLEConnectionPhy {
1268     pub fn TransmitInfo(&self) -> ::windows::runtime::Result<BluetoothLEConnectionPhyInfo> {
1269         let this = self;
1270         unsafe {
1271             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1272             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEConnectionPhyInfo>(result__)
1273         }
1274     }
1275     pub fn ReceiveInfo(&self) -> ::windows::runtime::Result<BluetoothLEConnectionPhyInfo> {
1276         let this = self;
1277         unsafe {
1278             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1279             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEConnectionPhyInfo>(result__)
1280         }
1281     }
1282 }
1283 unsafe impl ::windows::runtime::RuntimeType for BluetoothLEConnectionPhy {
1284     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothLEConnectionPhy;{781e5e48-621e-5a7e-8be6-1b9561ff63c9})");
1285 }
1286 unsafe impl ::windows::runtime::Interface for BluetoothLEConnectionPhy {
1287     type Vtable = IBluetoothLEConnectionPhy_abi;
1288     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2015256136, 25118, 23166, [139, 230, 27, 149, 97, 255, 99, 201]);
1289 }
1290 impl ::windows::runtime::RuntimeName for BluetoothLEConnectionPhy {
1291     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEConnectionPhy";
1292 }
1293 impl ::std::convert::From<BluetoothLEConnectionPhy> for ::windows::runtime::IUnknown {
1294     fn from(value: BluetoothLEConnectionPhy) -> Self {
1295         unsafe { ::std::mem::transmute(value) }
1296     }
1297 }
1298 impl ::std::convert::From<&BluetoothLEConnectionPhy> for ::windows::runtime::IUnknown {
1299     fn from(value: &BluetoothLEConnectionPhy) -> Self {
1300         ::std::convert::From::from(::std::clone::Clone::clone(value))
1301     }
1302 }
1303 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothLEConnectionPhy {
1304     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1305         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1306     }
1307 }
1308 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothLEConnectionPhy {
1309     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1310         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1311     }
1312 }
1313 impl ::std::convert::From<BluetoothLEConnectionPhy> for ::windows::runtime::IInspectable {
1314     fn from(value: BluetoothLEConnectionPhy) -> Self {
1315         value.0
1316     }
1317 }
1318 impl ::std::convert::From<&BluetoothLEConnectionPhy> for ::windows::runtime::IInspectable {
1319     fn from(value: &BluetoothLEConnectionPhy) -> Self {
1320         value.0.clone()
1321     }
1322 }
1323 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothLEConnectionPhy {
1324     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1325         ::windows::runtime::Param::Owned(self.0)
1326     }
1327 }
1328 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothLEConnectionPhy {
1329     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1330         ::windows::runtime::Param::Borrowed(&self.0)
1331     }
1332 }
1333 unsafe impl ::std::marker::Send for BluetoothLEConnectionPhy {}
1334 unsafe impl ::std::marker::Sync for BluetoothLEConnectionPhy {}
1335 #[repr(transparent)]
1336 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1337 pub struct BluetoothLEConnectionPhyInfo(::windows::runtime::IInspectable);
1338 impl BluetoothLEConnectionPhyInfo {
1339     pub fn IsUncoded1MPhy(&self) -> ::windows::runtime::Result<bool> {
1340         let this = self;
1341         unsafe {
1342             let mut result__: bool = ::std::mem::zeroed();
1343             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
1344         }
1345     }
1346     pub fn IsUncoded2MPhy(&self) -> ::windows::runtime::Result<bool> {
1347         let this = self;
1348         unsafe {
1349             let mut result__: bool = ::std::mem::zeroed();
1350             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
1351         }
1352     }
1353     pub fn IsCodedPhy(&self) -> ::windows::runtime::Result<bool> {
1354         let this = self;
1355         unsafe {
1356             let mut result__: bool = ::std::mem::zeroed();
1357             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
1358         }
1359     }
1360 }
1361 unsafe impl ::windows::runtime::RuntimeType for BluetoothLEConnectionPhyInfo {
1362     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothLEConnectionPhyInfo;{9a100bdd-602e-5c27-a1ae-b230015a6394})");
1363 }
1364 unsafe impl ::windows::runtime::Interface for BluetoothLEConnectionPhyInfo {
1365     type Vtable = IBluetoothLEConnectionPhyInfo_abi;
1366     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2584742877, 24622, 23591, [161, 174, 178, 48, 1, 90, 99, 148]);
1367 }
1368 impl ::windows::runtime::RuntimeName for BluetoothLEConnectionPhyInfo {
1369     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEConnectionPhyInfo";
1370 }
1371 impl ::std::convert::From<BluetoothLEConnectionPhyInfo> for ::windows::runtime::IUnknown {
1372     fn from(value: BluetoothLEConnectionPhyInfo) -> Self {
1373         unsafe { ::std::mem::transmute(value) }
1374     }
1375 }
1376 impl ::std::convert::From<&BluetoothLEConnectionPhyInfo> for ::windows::runtime::IUnknown {
1377     fn from(value: &BluetoothLEConnectionPhyInfo) -> Self {
1378         ::std::convert::From::from(::std::clone::Clone::clone(value))
1379     }
1380 }
1381 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothLEConnectionPhyInfo {
1382     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1383         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1384     }
1385 }
1386 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothLEConnectionPhyInfo {
1387     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1388         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1389     }
1390 }
1391 impl ::std::convert::From<BluetoothLEConnectionPhyInfo> for ::windows::runtime::IInspectable {
1392     fn from(value: BluetoothLEConnectionPhyInfo) -> Self {
1393         value.0
1394     }
1395 }
1396 impl ::std::convert::From<&BluetoothLEConnectionPhyInfo> for ::windows::runtime::IInspectable {
1397     fn from(value: &BluetoothLEConnectionPhyInfo) -> Self {
1398         value.0.clone()
1399     }
1400 }
1401 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothLEConnectionPhyInfo {
1402     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1403         ::windows::runtime::Param::Owned(self.0)
1404     }
1405 }
1406 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothLEConnectionPhyInfo {
1407     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1408         ::windows::runtime::Param::Borrowed(&self.0)
1409     }
1410 }
1411 unsafe impl ::std::marker::Send for BluetoothLEConnectionPhyInfo {}
1412 unsafe impl ::std::marker::Sync for BluetoothLEConnectionPhyInfo {}
1413 #[repr(transparent)]
1414 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1415 pub struct BluetoothLEDevice(::windows::runtime::IInspectable);
1416 impl BluetoothLEDevice {
1417     pub fn DeviceId(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1418         let this = self;
1419         unsafe {
1420             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1421             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1422         }
1423     }
1424     pub fn Name(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1425         let this = self;
1426         unsafe {
1427             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1428             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1429         }
1430     }
1431     #[cfg(feature = "deprecated")]
1432     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation_Collections"))]
1433     pub fn GattServices(&self) -> ::windows::runtime::Result<super::super::Foundation::Collections::IVectorView<GenericAttributeProfile::GattDeviceService>> {
1434         let this = self;
1435         unsafe {
1436             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1437             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::Collections::IVectorView<GenericAttributeProfile::GattDeviceService>>(result__)
1438         }
1439     }
1440     pub fn ConnectionStatus(&self) -> ::windows::runtime::Result<BluetoothConnectionStatus> {
1441         let this = self;
1442         unsafe {
1443             let mut result__: BluetoothConnectionStatus = ::std::mem::zeroed();
1444             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothConnectionStatus>(result__)
1445         }
1446     }
1447     pub fn BluetoothAddress(&self) -> ::windows::runtime::Result<u64> {
1448         let this = self;
1449         unsafe {
1450             let mut result__: u64 = ::std::mem::zeroed();
1451             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
1452         }
1453     }
1454     #[cfg(feature = "deprecated")]
1455     #[cfg(feature = "Devices_Bluetooth_GenericAttributeProfile")]
1456     pub fn GetGattService<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::GUID>>(&self, serviceuuid: Param0) -> ::windows::runtime::Result<GenericAttributeProfile::GattDeviceService> {
1457         let this = self;
1458         unsafe {
1459             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1460             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), serviceuuid.into_param().abi(), &mut result__).from_abi::<GenericAttributeProfile::GattDeviceService>(result__)
1461         }
1462     }
1463     #[cfg(feature = "Foundation")]
1464     pub fn NameChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TypedEventHandler<BluetoothLEDevice, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::Foundation::EventRegistrationToken> {
1465         let this = self;
1466         unsafe {
1467             let mut result__: super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
1468             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::EventRegistrationToken>(result__)
1469         }
1470     }
1471     #[cfg(feature = "Foundation")]
1472     pub fn RemoveNameChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
1473         let this = self;
1474         unsafe { (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
1475     }
1476     #[cfg(feature = "Foundation")]
1477     pub fn GattServicesChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TypedEventHandler<BluetoothLEDevice, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::Foundation::EventRegistrationToken> {
1478         let this = self;
1479         unsafe {
1480             let mut result__: super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
1481             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::EventRegistrationToken>(result__)
1482         }
1483     }
1484     #[cfg(feature = "Foundation")]
1485     pub fn RemoveGattServicesChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
1486         let this = self;
1487         unsafe { (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
1488     }
1489     #[cfg(feature = "Foundation")]
1490     pub fn ConnectionStatusChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TypedEventHandler<BluetoothLEDevice, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::Foundation::EventRegistrationToken> {
1491         let this = self;
1492         unsafe {
1493             let mut result__: super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
1494             (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::EventRegistrationToken>(result__)
1495         }
1496     }
1497     #[cfg(feature = "Foundation")]
1498     pub fn RemoveConnectionStatusChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
1499         let this = self;
1500         unsafe { (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
1501     }
1502     #[cfg(feature = "Foundation")]
1503     pub fn Close(&self) -> ::windows::runtime::Result<()> {
1504         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
1505         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
1506     }
1507     #[cfg(feature = "Foundation")]
1508     pub fn FromIdAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(deviceid: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<BluetoothLEDevice>> {
1509         Self::IBluetoothLEDeviceStatics(|this| unsafe {
1510             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1511             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), deviceid.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<BluetoothLEDevice>>(result__)
1512         })
1513     }
1514     #[cfg(feature = "Foundation")]
1515     pub fn FromBluetoothAddressAsync(bluetoothaddress: u64) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<BluetoothLEDevice>> {
1516         Self::IBluetoothLEDeviceStatics(|this| unsafe {
1517             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1518             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), bluetoothaddress, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<BluetoothLEDevice>>(result__)
1519         })
1520     }
1521     pub fn GetDeviceSelector() -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1522         Self::IBluetoothLEDeviceStatics(|this| unsafe {
1523             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1524             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1525         })
1526     }
1527     #[cfg(feature = "Devices_Enumeration")]
1528     pub fn DeviceInformation(&self) -> ::windows::runtime::Result<super::Enumeration::DeviceInformation> {
1529         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice2>(self)?;
1530         unsafe {
1531             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1532             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::Enumeration::DeviceInformation>(result__)
1533         }
1534     }
1535     pub fn Appearance(&self) -> ::windows::runtime::Result<BluetoothLEAppearance> {
1536         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice2>(self)?;
1537         unsafe {
1538             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1539             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEAppearance>(result__)
1540         }
1541     }
1542     pub fn BluetoothAddressType(&self) -> ::windows::runtime::Result<BluetoothAddressType> {
1543         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice2>(self)?;
1544         unsafe {
1545             let mut result__: BluetoothAddressType = ::std::mem::zeroed();
1546             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothAddressType>(result__)
1547         }
1548     }
1549     pub fn GetDeviceSelectorFromPairingState(pairingstate: bool) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1550         Self::IBluetoothLEDeviceStatics2(|this| unsafe {
1551             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1552             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), pairingstate, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1553         })
1554     }
1555     pub fn GetDeviceSelectorFromConnectionStatus(connectionstatus: BluetoothConnectionStatus) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1556         Self::IBluetoothLEDeviceStatics2(|this| unsafe {
1557             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1558             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), connectionstatus, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1559         })
1560     }
1561     pub fn GetDeviceSelectorFromDeviceName<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(devicename: Param0) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1562         Self::IBluetoothLEDeviceStatics2(|this| unsafe {
1563             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1564             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), devicename.into_param().abi(), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1565         })
1566     }
1567     pub fn GetDeviceSelectorFromBluetoothAddress(bluetoothaddress: u64) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1568         Self::IBluetoothLEDeviceStatics2(|this| unsafe {
1569             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1570             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), bluetoothaddress, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1571         })
1572     }
1573     pub fn GetDeviceSelectorFromBluetoothAddressWithBluetoothAddressType(bluetoothaddress: u64, bluetoothaddresstype: BluetoothAddressType) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1574         Self::IBluetoothLEDeviceStatics2(|this| unsafe {
1575             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1576             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), bluetoothaddress, bluetoothaddresstype, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1577         })
1578     }
1579     pub fn GetDeviceSelectorFromAppearance<'a, Param0: ::windows::runtime::IntoParam<'a, BluetoothLEAppearance>>(appearance: Param0) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1580         Self::IBluetoothLEDeviceStatics2(|this| unsafe {
1581             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1582             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), appearance.into_param().abi(), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1583         })
1584     }
1585     #[cfg(feature = "Foundation")]
1586     pub fn FromBluetoothAddressWithBluetoothAddressTypeAsync(bluetoothaddress: u64, bluetoothaddresstype: BluetoothAddressType) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<BluetoothLEDevice>> {
1587         Self::IBluetoothLEDeviceStatics2(|this| unsafe {
1588             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1589             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), bluetoothaddress, bluetoothaddresstype, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<BluetoothLEDevice>>(result__)
1590         })
1591     }
1592     #[cfg(feature = "Devices_Enumeration")]
1593     pub fn DeviceAccessInformation(&self) -> ::windows::runtime::Result<super::Enumeration::DeviceAccessInformation> {
1594         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice3>(self)?;
1595         unsafe {
1596             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1597             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::Enumeration::DeviceAccessInformation>(result__)
1598         }
1599     }
1600     #[cfg(all(feature = "Devices_Enumeration", feature = "Foundation"))]
1601     pub fn RequestAccessAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<super::Enumeration::DeviceAccessStatus>> {
1602         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice3>(self)?;
1603         unsafe {
1604             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1605             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<super::Enumeration::DeviceAccessStatus>>(result__)
1606         }
1607     }
1608     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation"))]
1609     pub fn GetGattServicesAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<GenericAttributeProfile::GattDeviceServicesResult>> {
1610         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice3>(self)?;
1611         unsafe {
1612             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1613             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<GenericAttributeProfile::GattDeviceServicesResult>>(result__)
1614         }
1615     }
1616     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation"))]
1617     pub fn GetGattServicesWithCacheModeAsync(&self, cachemode: BluetoothCacheMode) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<GenericAttributeProfile::GattDeviceServicesResult>> {
1618         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice3>(self)?;
1619         unsafe {
1620             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1621             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), cachemode, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<GenericAttributeProfile::GattDeviceServicesResult>>(result__)
1622         }
1623     }
1624     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation"))]
1625     pub fn GetGattServicesForUuidAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::GUID>>(&self, serviceuuid: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<GenericAttributeProfile::GattDeviceServicesResult>> {
1626         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice3>(self)?;
1627         unsafe {
1628             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1629             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), serviceuuid.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<GenericAttributeProfile::GattDeviceServicesResult>>(result__)
1630         }
1631     }
1632     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation"))]
1633     pub fn GetGattServicesForUuidWithCacheModeAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::GUID>>(&self, serviceuuid: Param0, cachemode: BluetoothCacheMode) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<GenericAttributeProfile::GattDeviceServicesResult>> {
1634         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice3>(self)?;
1635         unsafe {
1636             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1637             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), serviceuuid.into_param().abi(), cachemode, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<GenericAttributeProfile::GattDeviceServicesResult>>(result__)
1638         }
1639     }
1640     pub fn BluetoothDeviceId(&self) -> ::windows::runtime::Result<BluetoothDeviceId> {
1641         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice4>(self)?;
1642         unsafe {
1643             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1644             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothDeviceId>(result__)
1645         }
1646     }
1647     pub fn WasSecureConnectionUsedForPairing(&self) -> ::windows::runtime::Result<bool> {
1648         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice5>(self)?;
1649         unsafe {
1650             let mut result__: bool = ::std::mem::zeroed();
1651             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
1652         }
1653     }
1654     pub fn GetConnectionParameters(&self) -> ::windows::runtime::Result<BluetoothLEConnectionParameters> {
1655         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice6>(self)?;
1656         unsafe {
1657             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1658             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEConnectionParameters>(result__)
1659         }
1660     }
1661     pub fn GetConnectionPhy(&self) -> ::windows::runtime::Result<BluetoothLEConnectionPhy> {
1662         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice6>(self)?;
1663         unsafe {
1664             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1665             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEConnectionPhy>(result__)
1666         }
1667     }
1668     pub fn RequestPreferredConnectionParameters<'a, Param0: ::windows::runtime::IntoParam<'a, BluetoothLEPreferredConnectionParameters>>(&self, preferredconnectionparameters: Param0) -> ::windows::runtime::Result<BluetoothLEPreferredConnectionParametersRequest> {
1669         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice6>(self)?;
1670         unsafe {
1671             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1672             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), preferredconnectionparameters.into_param().abi(), &mut result__).from_abi::<BluetoothLEPreferredConnectionParametersRequest>(result__)
1673         }
1674     }
1675     #[cfg(feature = "Foundation")]
1676     pub fn ConnectionParametersChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TypedEventHandler<BluetoothLEDevice, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::Foundation::EventRegistrationToken> {
1677         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice6>(self)?;
1678         unsafe {
1679             let mut result__: super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
1680             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::EventRegistrationToken>(result__)
1681         }
1682     }
1683     #[cfg(feature = "Foundation")]
1684     pub fn RemoveConnectionParametersChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
1685         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice6>(self)?;
1686         unsafe { (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
1687     }
1688     #[cfg(feature = "Foundation")]
1689     pub fn ConnectionPhyChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TypedEventHandler<BluetoothLEDevice, ::windows::runtime::IInspectable>>>(&self, handler: Param0) -> ::windows::runtime::Result<super::super::Foundation::EventRegistrationToken> {
1690         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice6>(self)?;
1691         unsafe {
1692             let mut result__: super::super::Foundation::EventRegistrationToken = ::std::mem::zeroed();
1693             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), handler.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::EventRegistrationToken>(result__)
1694         }
1695     }
1696     #[cfg(feature = "Foundation")]
1697     pub fn RemoveConnectionPhyChanged<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::EventRegistrationToken>>(&self, token: Param0) -> ::windows::runtime::Result<()> {
1698         let this = &::windows::runtime::Interface::cast::<IBluetoothLEDevice6>(self)?;
1699         unsafe { (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), token.into_param().abi()).ok() }
1700     }
1701     pub fn IBluetoothLEDeviceStatics<R, F: FnOnce(&IBluetoothLEDeviceStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
1702         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothLEDevice, IBluetoothLEDeviceStatics> = ::windows::runtime::FactoryCache::new();
1703         unsafe { SHARED.call(callback) }
1704     }
1705     pub fn IBluetoothLEDeviceStatics2<R, F: FnOnce(&IBluetoothLEDeviceStatics2) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
1706         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothLEDevice, IBluetoothLEDeviceStatics2> = ::windows::runtime::FactoryCache::new();
1707         unsafe { SHARED.call(callback) }
1708     }
1709 }
1710 unsafe impl ::windows::runtime::RuntimeType for BluetoothLEDevice {
1711     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothLEDevice;{b5ee2f7b-4ad8-4642-ac48-80a0b500e887})");
1712 }
1713 unsafe impl ::windows::runtime::Interface for BluetoothLEDevice {
1714     type Vtable = IBluetoothLEDevice_abi;
1715     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3052285819, 19160, 17986, [172, 72, 128, 160, 181, 0, 232, 135]);
1716 }
1717 impl ::windows::runtime::RuntimeName for BluetoothLEDevice {
1718     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEDevice";
1719 }
1720 impl ::std::convert::From<BluetoothLEDevice> for ::windows::runtime::IUnknown {
1721     fn from(value: BluetoothLEDevice) -> Self {
1722         unsafe { ::std::mem::transmute(value) }
1723     }
1724 }
1725 impl ::std::convert::From<&BluetoothLEDevice> for ::windows::runtime::IUnknown {
1726     fn from(value: &BluetoothLEDevice) -> Self {
1727         ::std::convert::From::from(::std::clone::Clone::clone(value))
1728     }
1729 }
1730 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothLEDevice {
1731     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1732         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1733     }
1734 }
1735 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothLEDevice {
1736     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1737         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1738     }
1739 }
1740 impl ::std::convert::From<BluetoothLEDevice> for ::windows::runtime::IInspectable {
1741     fn from(value: BluetoothLEDevice) -> Self {
1742         value.0
1743     }
1744 }
1745 impl ::std::convert::From<&BluetoothLEDevice> for ::windows::runtime::IInspectable {
1746     fn from(value: &BluetoothLEDevice) -> Self {
1747         value.0.clone()
1748     }
1749 }
1750 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothLEDevice {
1751     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1752         ::windows::runtime::Param::Owned(self.0)
1753     }
1754 }
1755 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothLEDevice {
1756     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1757         ::windows::runtime::Param::Borrowed(&self.0)
1758     }
1759 }
1760 #[cfg(feature = "Foundation")]
1761 impl ::std::convert::TryFrom<BluetoothLEDevice> for super::super::Foundation::IClosable {
1762     type Error = ::windows::runtime::Error;
1763     fn try_from(value: BluetoothLEDevice) -> ::windows::runtime::Result<Self> {
1764         ::std::convert::TryFrom::try_from(&value)
1765     }
1766 }
1767 #[cfg(feature = "Foundation")]
1768 impl ::std::convert::TryFrom<&BluetoothLEDevice> for super::super::Foundation::IClosable {
1769     type Error = ::windows::runtime::Error;
1770     fn try_from(value: &BluetoothLEDevice) -> ::windows::runtime::Result<Self> {
1771         ::windows::runtime::Interface::cast(value)
1772     }
1773 }
1774 #[cfg(feature = "Foundation")]
1775 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for BluetoothLEDevice {
1776     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1777         ::windows::runtime::IntoParam::into_param(&self)
1778     }
1779 }
1780 #[cfg(feature = "Foundation")]
1781 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &BluetoothLEDevice {
1782     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1783         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
1784     }
1785 }
1786 unsafe impl ::std::marker::Send for BluetoothLEDevice {}
1787 unsafe impl ::std::marker::Sync for BluetoothLEDevice {}
1788 #[repr(transparent)]
1789 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1790 pub struct BluetoothLEPreferredConnectionParameters(::windows::runtime::IInspectable);
1791 impl BluetoothLEPreferredConnectionParameters {
1792     pub fn LinkTimeout(&self) -> ::windows::runtime::Result<u16> {
1793         let this = self;
1794         unsafe {
1795             let mut result__: u16 = ::std::mem::zeroed();
1796             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1797         }
1798     }
1799     pub fn ConnectionLatency(&self) -> ::windows::runtime::Result<u16> {
1800         let this = self;
1801         unsafe {
1802             let mut result__: u16 = ::std::mem::zeroed();
1803             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1804         }
1805     }
1806     pub fn MinConnectionInterval(&self) -> ::windows::runtime::Result<u16> {
1807         let this = self;
1808         unsafe {
1809             let mut result__: u16 = ::std::mem::zeroed();
1810             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1811         }
1812     }
1813     pub fn MaxConnectionInterval(&self) -> ::windows::runtime::Result<u16> {
1814         let this = self;
1815         unsafe {
1816             let mut result__: u16 = ::std::mem::zeroed();
1817             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1818         }
1819     }
1820     pub fn Balanced() -> ::windows::runtime::Result<BluetoothLEPreferredConnectionParameters> {
1821         Self::IBluetoothLEPreferredConnectionParametersStatics(|this| unsafe {
1822             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1823             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEPreferredConnectionParameters>(result__)
1824         })
1825     }
1826     pub fn ThroughputOptimized() -> ::windows::runtime::Result<BluetoothLEPreferredConnectionParameters> {
1827         Self::IBluetoothLEPreferredConnectionParametersStatics(|this| unsafe {
1828             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1829             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEPreferredConnectionParameters>(result__)
1830         })
1831     }
1832     pub fn PowerOptimized() -> ::windows::runtime::Result<BluetoothLEPreferredConnectionParameters> {
1833         Self::IBluetoothLEPreferredConnectionParametersStatics(|this| unsafe {
1834             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1835             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEPreferredConnectionParameters>(result__)
1836         })
1837     }
1838     pub fn IBluetoothLEPreferredConnectionParametersStatics<R, F: FnOnce(&IBluetoothLEPreferredConnectionParametersStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
1839         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothLEPreferredConnectionParameters, IBluetoothLEPreferredConnectionParametersStatics> = ::windows::runtime::FactoryCache::new();
1840         unsafe { SHARED.call(callback) }
1841     }
1842 }
1843 unsafe impl ::windows::runtime::RuntimeType for BluetoothLEPreferredConnectionParameters {
1844     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothLEPreferredConnectionParameters;{f2f44344-7372-5f7b-9b34-29c944f5a715})");
1845 }
1846 unsafe impl ::windows::runtime::Interface for BluetoothLEPreferredConnectionParameters {
1847     type Vtable = IBluetoothLEPreferredConnectionParameters_abi;
1848     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(4076094276, 29554, 24443, [155, 52, 41, 201, 68, 245, 167, 21]);
1849 }
1850 impl ::windows::runtime::RuntimeName for BluetoothLEPreferredConnectionParameters {
1851     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEPreferredConnectionParameters";
1852 }
1853 impl ::std::convert::From<BluetoothLEPreferredConnectionParameters> for ::windows::runtime::IUnknown {
1854     fn from(value: BluetoothLEPreferredConnectionParameters) -> Self {
1855         unsafe { ::std::mem::transmute(value) }
1856     }
1857 }
1858 impl ::std::convert::From<&BluetoothLEPreferredConnectionParameters> for ::windows::runtime::IUnknown {
1859     fn from(value: &BluetoothLEPreferredConnectionParameters) -> Self {
1860         ::std::convert::From::from(::std::clone::Clone::clone(value))
1861     }
1862 }
1863 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothLEPreferredConnectionParameters {
1864     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1865         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1866     }
1867 }
1868 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothLEPreferredConnectionParameters {
1869     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1870         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1871     }
1872 }
1873 impl ::std::convert::From<BluetoothLEPreferredConnectionParameters> for ::windows::runtime::IInspectable {
1874     fn from(value: BluetoothLEPreferredConnectionParameters) -> Self {
1875         value.0
1876     }
1877 }
1878 impl ::std::convert::From<&BluetoothLEPreferredConnectionParameters> for ::windows::runtime::IInspectable {
1879     fn from(value: &BluetoothLEPreferredConnectionParameters) -> Self {
1880         value.0.clone()
1881     }
1882 }
1883 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothLEPreferredConnectionParameters {
1884     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1885         ::windows::runtime::Param::Owned(self.0)
1886     }
1887 }
1888 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothLEPreferredConnectionParameters {
1889     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1890         ::windows::runtime::Param::Borrowed(&self.0)
1891     }
1892 }
1893 unsafe impl ::std::marker::Send for BluetoothLEPreferredConnectionParameters {}
1894 unsafe impl ::std::marker::Sync for BluetoothLEPreferredConnectionParameters {}
1895 #[repr(transparent)]
1896 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1897 pub struct BluetoothLEPreferredConnectionParametersRequest(::windows::runtime::IInspectable);
1898 impl BluetoothLEPreferredConnectionParametersRequest {
1899     #[cfg(feature = "Foundation")]
1900     pub fn Close(&self) -> ::windows::runtime::Result<()> {
1901         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
1902         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
1903     }
1904     pub fn Status(&self) -> ::windows::runtime::Result<BluetoothLEPreferredConnectionParametersRequestStatus> {
1905         let this = self;
1906         unsafe {
1907             let mut result__: BluetoothLEPreferredConnectionParametersRequestStatus = ::std::mem::zeroed();
1908             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<BluetoothLEPreferredConnectionParametersRequestStatus>(result__)
1909         }
1910     }
1911 }
1912 unsafe impl ::windows::runtime::RuntimeType for BluetoothLEPreferredConnectionParametersRequest {
1913     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothLEPreferredConnectionParametersRequest;{8a375276-a528-5266-b661-cce6a5ff9739})");
1914 }
1915 unsafe impl ::windows::runtime::Interface for BluetoothLEPreferredConnectionParametersRequest {
1916     type Vtable = IBluetoothLEPreferredConnectionParametersRequest_abi;
1917     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2318881398, 42280, 21094, [182, 97, 204, 230, 165, 255, 151, 57]);
1918 }
1919 impl ::windows::runtime::RuntimeName for BluetoothLEPreferredConnectionParametersRequest {
1920     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothLEPreferredConnectionParametersRequest";
1921 }
1922 impl ::std::convert::From<BluetoothLEPreferredConnectionParametersRequest> for ::windows::runtime::IUnknown {
1923     fn from(value: BluetoothLEPreferredConnectionParametersRequest) -> Self {
1924         unsafe { ::std::mem::transmute(value) }
1925     }
1926 }
1927 impl ::std::convert::From<&BluetoothLEPreferredConnectionParametersRequest> for ::windows::runtime::IUnknown {
1928     fn from(value: &BluetoothLEPreferredConnectionParametersRequest) -> Self {
1929         ::std::convert::From::from(::std::clone::Clone::clone(value))
1930     }
1931 }
1932 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothLEPreferredConnectionParametersRequest {
1933     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1934         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1935     }
1936 }
1937 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothLEPreferredConnectionParametersRequest {
1938     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1939         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1940     }
1941 }
1942 impl ::std::convert::From<BluetoothLEPreferredConnectionParametersRequest> for ::windows::runtime::IInspectable {
1943     fn from(value: BluetoothLEPreferredConnectionParametersRequest) -> Self {
1944         value.0
1945     }
1946 }
1947 impl ::std::convert::From<&BluetoothLEPreferredConnectionParametersRequest> for ::windows::runtime::IInspectable {
1948     fn from(value: &BluetoothLEPreferredConnectionParametersRequest) -> Self {
1949         value.0.clone()
1950     }
1951 }
1952 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothLEPreferredConnectionParametersRequest {
1953     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1954         ::windows::runtime::Param::Owned(self.0)
1955     }
1956 }
1957 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothLEPreferredConnectionParametersRequest {
1958     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1959         ::windows::runtime::Param::Borrowed(&self.0)
1960     }
1961 }
1962 #[cfg(feature = "Foundation")]
1963 impl ::std::convert::TryFrom<BluetoothLEPreferredConnectionParametersRequest> for super::super::Foundation::IClosable {
1964     type Error = ::windows::runtime::Error;
1965     fn try_from(value: BluetoothLEPreferredConnectionParametersRequest) -> ::windows::runtime::Result<Self> {
1966         ::std::convert::TryFrom::try_from(&value)
1967     }
1968 }
1969 #[cfg(feature = "Foundation")]
1970 impl ::std::convert::TryFrom<&BluetoothLEPreferredConnectionParametersRequest> for super::super::Foundation::IClosable {
1971     type Error = ::windows::runtime::Error;
1972     fn try_from(value: &BluetoothLEPreferredConnectionParametersRequest) -> ::windows::runtime::Result<Self> {
1973         ::windows::runtime::Interface::cast(value)
1974     }
1975 }
1976 #[cfg(feature = "Foundation")]
1977 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for BluetoothLEPreferredConnectionParametersRequest {
1978     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1979         ::windows::runtime::IntoParam::into_param(&self)
1980     }
1981 }
1982 #[cfg(feature = "Foundation")]
1983 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &BluetoothLEPreferredConnectionParametersRequest {
1984     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1985         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
1986     }
1987 }
1988 unsafe impl ::std::marker::Send for BluetoothLEPreferredConnectionParametersRequest {}
1989 unsafe impl ::std::marker::Sync for BluetoothLEPreferredConnectionParametersRequest {}
1990 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
1991 #[repr(transparent)]
1992 pub struct BluetoothLEPreferredConnectionParametersRequestStatus(pub i32);
1993 impl BluetoothLEPreferredConnectionParametersRequestStatus {
1994     pub const Unspecified: BluetoothLEPreferredConnectionParametersRequestStatus = BluetoothLEPreferredConnectionParametersRequestStatus(0i32);
1995     pub const Success: BluetoothLEPreferredConnectionParametersRequestStatus = BluetoothLEPreferredConnectionParametersRequestStatus(1i32);
1996     pub const DeviceNotAvailable: BluetoothLEPreferredConnectionParametersRequestStatus = BluetoothLEPreferredConnectionParametersRequestStatus(2i32);
1997     pub const AccessDenied: BluetoothLEPreferredConnectionParametersRequestStatus = BluetoothLEPreferredConnectionParametersRequestStatus(3i32);
1998 }
1999 impl ::std::convert::From<i32> for BluetoothLEPreferredConnectionParametersRequestStatus {
2000     fn from(value: i32) -> Self {
2001         Self(value)
2002     }
2003 }
2004 unsafe impl ::windows::runtime::Abi for BluetoothLEPreferredConnectionParametersRequestStatus {
2005     type Abi = Self;
2006     type DefaultType = Self;
2007 }
2008 unsafe impl ::windows::runtime::RuntimeType for BluetoothLEPreferredConnectionParametersRequestStatus {
2009     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Bluetooth.BluetoothLEPreferredConnectionParametersRequestStatus;i4)");
2010 }
2011 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
2012 #[repr(transparent)]
2013 pub struct BluetoothMajorClass(pub i32);
2014 impl BluetoothMajorClass {
2015     pub const Miscellaneous: BluetoothMajorClass = BluetoothMajorClass(0i32);
2016     pub const Computer: BluetoothMajorClass = BluetoothMajorClass(1i32);
2017     pub const Phone: BluetoothMajorClass = BluetoothMajorClass(2i32);
2018     pub const NetworkAccessPoint: BluetoothMajorClass = BluetoothMajorClass(3i32);
2019     pub const AudioVideo: BluetoothMajorClass = BluetoothMajorClass(4i32);
2020     pub const Peripheral: BluetoothMajorClass = BluetoothMajorClass(5i32);
2021     pub const Imaging: BluetoothMajorClass = BluetoothMajorClass(6i32);
2022     pub const Wearable: BluetoothMajorClass = BluetoothMajorClass(7i32);
2023     pub const Toy: BluetoothMajorClass = BluetoothMajorClass(8i32);
2024     pub const Health: BluetoothMajorClass = BluetoothMajorClass(9i32);
2025 }
2026 impl ::std::convert::From<i32> for BluetoothMajorClass {
2027     fn from(value: i32) -> Self {
2028         Self(value)
2029     }
2030 }
2031 unsafe impl ::windows::runtime::Abi for BluetoothMajorClass {
2032     type Abi = Self;
2033     type DefaultType = Self;
2034 }
2035 unsafe impl ::windows::runtime::RuntimeType for BluetoothMajorClass {
2036     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Bluetooth.BluetoothMajorClass;i4)");
2037 }
2038 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
2039 #[repr(transparent)]
2040 pub struct BluetoothMinorClass(pub i32);
2041 impl BluetoothMinorClass {
2042     pub const Uncategorized: BluetoothMinorClass = BluetoothMinorClass(0i32);
2043     pub const ComputerDesktop: BluetoothMinorClass = BluetoothMinorClass(1i32);
2044     pub const ComputerServer: BluetoothMinorClass = BluetoothMinorClass(2i32);
2045     pub const ComputerLaptop: BluetoothMinorClass = BluetoothMinorClass(3i32);
2046     pub const ComputerHandheld: BluetoothMinorClass = BluetoothMinorClass(4i32);
2047     pub const ComputerPalmSize: BluetoothMinorClass = BluetoothMinorClass(5i32);
2048     pub const ComputerWearable: BluetoothMinorClass = BluetoothMinorClass(6i32);
2049     pub const ComputerTablet: BluetoothMinorClass = BluetoothMinorClass(7i32);
2050     pub const PhoneCellular: BluetoothMinorClass = BluetoothMinorClass(1i32);
2051     pub const PhoneCordless: BluetoothMinorClass = BluetoothMinorClass(2i32);
2052     pub const PhoneSmartPhone: BluetoothMinorClass = BluetoothMinorClass(3i32);
2053     pub const PhoneWired: BluetoothMinorClass = BluetoothMinorClass(4i32);
2054     pub const PhoneIsdn: BluetoothMinorClass = BluetoothMinorClass(5i32);
2055     pub const NetworkFullyAvailable: BluetoothMinorClass = BluetoothMinorClass(0i32);
2056     pub const NetworkUsed01To17Percent: BluetoothMinorClass = BluetoothMinorClass(8i32);
2057     pub const NetworkUsed17To33Percent: BluetoothMinorClass = BluetoothMinorClass(16i32);
2058     pub const NetworkUsed33To50Percent: BluetoothMinorClass = BluetoothMinorClass(24i32);
2059     pub const NetworkUsed50To67Percent: BluetoothMinorClass = BluetoothMinorClass(32i32);
2060     pub const NetworkUsed67To83Percent: BluetoothMinorClass = BluetoothMinorClass(40i32);
2061     pub const NetworkUsed83To99Percent: BluetoothMinorClass = BluetoothMinorClass(48i32);
2062     pub const NetworkNoServiceAvailable: BluetoothMinorClass = BluetoothMinorClass(56i32);
2063     pub const AudioVideoWearableHeadset: BluetoothMinorClass = BluetoothMinorClass(1i32);
2064     pub const AudioVideoHandsFree: BluetoothMinorClass = BluetoothMinorClass(2i32);
2065     pub const AudioVideoMicrophone: BluetoothMinorClass = BluetoothMinorClass(4i32);
2066     pub const AudioVideoLoudspeaker: BluetoothMinorClass = BluetoothMinorClass(5i32);
2067     pub const AudioVideoHeadphones: BluetoothMinorClass = BluetoothMinorClass(6i32);
2068     pub const AudioVideoPortableAudio: BluetoothMinorClass = BluetoothMinorClass(7i32);
2069     pub const AudioVideoCarAudio: BluetoothMinorClass = BluetoothMinorClass(8i32);
2070     pub const AudioVideoSetTopBox: BluetoothMinorClass = BluetoothMinorClass(9i32);
2071     pub const AudioVideoHifiAudioDevice: BluetoothMinorClass = BluetoothMinorClass(10i32);
2072     pub const AudioVideoVcr: BluetoothMinorClass = BluetoothMinorClass(11i32);
2073     pub const AudioVideoVideoCamera: BluetoothMinorClass = BluetoothMinorClass(12i32);
2074     pub const AudioVideoCamcorder: BluetoothMinorClass = BluetoothMinorClass(13i32);
2075     pub const AudioVideoVideoMonitor: BluetoothMinorClass = BluetoothMinorClass(14i32);
2076     pub const AudioVideoVideoDisplayAndLoudspeaker: BluetoothMinorClass = BluetoothMinorClass(15i32);
2077     pub const AudioVideoVideoConferencing: BluetoothMinorClass = BluetoothMinorClass(16i32);
2078     pub const AudioVideoGamingOrToy: BluetoothMinorClass = BluetoothMinorClass(18i32);
2079     pub const PeripheralJoystick: BluetoothMinorClass = BluetoothMinorClass(1i32);
2080     pub const PeripheralGamepad: BluetoothMinorClass = BluetoothMinorClass(2i32);
2081     pub const PeripheralRemoteControl: BluetoothMinorClass = BluetoothMinorClass(3i32);
2082     pub const PeripheralSensing: BluetoothMinorClass = BluetoothMinorClass(4i32);
2083     pub const PeripheralDigitizerTablet: BluetoothMinorClass = BluetoothMinorClass(5i32);
2084     pub const PeripheralCardReader: BluetoothMinorClass = BluetoothMinorClass(6i32);
2085     pub const PeripheralDigitalPen: BluetoothMinorClass = BluetoothMinorClass(7i32);
2086     pub const PeripheralHandheldScanner: BluetoothMinorClass = BluetoothMinorClass(8i32);
2087     pub const PeripheralHandheldGesture: BluetoothMinorClass = BluetoothMinorClass(9i32);
2088     pub const WearableWristwatch: BluetoothMinorClass = BluetoothMinorClass(1i32);
2089     pub const WearablePager: BluetoothMinorClass = BluetoothMinorClass(2i32);
2090     pub const WearableJacket: BluetoothMinorClass = BluetoothMinorClass(3i32);
2091     pub const WearableHelmet: BluetoothMinorClass = BluetoothMinorClass(4i32);
2092     pub const WearableGlasses: BluetoothMinorClass = BluetoothMinorClass(5i32);
2093     pub const ToyRobot: BluetoothMinorClass = BluetoothMinorClass(1i32);
2094     pub const ToyVehicle: BluetoothMinorClass = BluetoothMinorClass(2i32);
2095     pub const ToyDoll: BluetoothMinorClass = BluetoothMinorClass(3i32);
2096     pub const ToyController: BluetoothMinorClass = BluetoothMinorClass(4i32);
2097     pub const ToyGame: BluetoothMinorClass = BluetoothMinorClass(5i32);
2098     pub const HealthBloodPressureMonitor: BluetoothMinorClass = BluetoothMinorClass(1i32);
2099     pub const HealthThermometer: BluetoothMinorClass = BluetoothMinorClass(2i32);
2100     pub const HealthWeighingScale: BluetoothMinorClass = BluetoothMinorClass(3i32);
2101     pub const HealthGlucoseMeter: BluetoothMinorClass = BluetoothMinorClass(4i32);
2102     pub const HealthPulseOximeter: BluetoothMinorClass = BluetoothMinorClass(5i32);
2103     pub const HealthHeartRateMonitor: BluetoothMinorClass = BluetoothMinorClass(6i32);
2104     pub const HealthHealthDataDisplay: BluetoothMinorClass = BluetoothMinorClass(7i32);
2105     pub const HealthStepCounter: BluetoothMinorClass = BluetoothMinorClass(8i32);
2106     pub const HealthBodyCompositionAnalyzer: BluetoothMinorClass = BluetoothMinorClass(9i32);
2107     pub const HealthPeakFlowMonitor: BluetoothMinorClass = BluetoothMinorClass(10i32);
2108     pub const HealthMedicationMonitor: BluetoothMinorClass = BluetoothMinorClass(11i32);
2109     pub const HealthKneeProsthesis: BluetoothMinorClass = BluetoothMinorClass(12i32);
2110     pub const HealthAnkleProsthesis: BluetoothMinorClass = BluetoothMinorClass(13i32);
2111     pub const HealthGenericHealthManager: BluetoothMinorClass = BluetoothMinorClass(14i32);
2112     pub const HealthPersonalMobilityDevice: BluetoothMinorClass = BluetoothMinorClass(15i32);
2113 }
2114 impl ::std::convert::From<i32> for BluetoothMinorClass {
2115     fn from(value: i32) -> Self {
2116         Self(value)
2117     }
2118 }
2119 unsafe impl ::windows::runtime::Abi for BluetoothMinorClass {
2120     type Abi = Self;
2121     type DefaultType = Self;
2122 }
2123 unsafe impl ::windows::runtime::RuntimeType for BluetoothMinorClass {
2124     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Bluetooth.BluetoothMinorClass;i4)");
2125 }
2126 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
2127 #[repr(transparent)]
2128 pub struct BluetoothServiceCapabilities(pub u32);
2129 impl BluetoothServiceCapabilities {
2130     pub const None: BluetoothServiceCapabilities = BluetoothServiceCapabilities(0u32);
2131     pub const LimitedDiscoverableMode: BluetoothServiceCapabilities = BluetoothServiceCapabilities(1u32);
2132     pub const PositioningService: BluetoothServiceCapabilities = BluetoothServiceCapabilities(8u32);
2133     pub const NetworkingService: BluetoothServiceCapabilities = BluetoothServiceCapabilities(16u32);
2134     pub const RenderingService: BluetoothServiceCapabilities = BluetoothServiceCapabilities(32u32);
2135     pub const CapturingService: BluetoothServiceCapabilities = BluetoothServiceCapabilities(64u32);
2136     pub const ObjectTransferService: BluetoothServiceCapabilities = BluetoothServiceCapabilities(128u32);
2137     pub const AudioService: BluetoothServiceCapabilities = BluetoothServiceCapabilities(256u32);
2138     pub const TelephoneService: BluetoothServiceCapabilities = BluetoothServiceCapabilities(512u32);
2139     pub const InformationService: BluetoothServiceCapabilities = BluetoothServiceCapabilities(1024u32);
2140 }
2141 impl ::std::convert::From<u32> for BluetoothServiceCapabilities {
2142     fn from(value: u32) -> Self {
2143         Self(value)
2144     }
2145 }
2146 unsafe impl ::windows::runtime::Abi for BluetoothServiceCapabilities {
2147     type Abi = Self;
2148     type DefaultType = Self;
2149 }
2150 unsafe impl ::windows::runtime::RuntimeType for BluetoothServiceCapabilities {
2151     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Devices.Bluetooth.BluetoothServiceCapabilities;u4)");
2152 }
2153 impl ::std::ops::BitOr for BluetoothServiceCapabilities {
2154     type Output = Self;
2155     fn bitor(self, rhs: Self) -> Self {
2156         Self(self.0 | rhs.0)
2157     }
2158 }
2159 impl ::std::ops::BitAnd for BluetoothServiceCapabilities {
2160     type Output = Self;
2161     fn bitand(self, rhs: Self) -> Self {
2162         Self(self.0 & rhs.0)
2163     }
2164 }
2165 impl ::std::ops::BitOrAssign for BluetoothServiceCapabilities {
2166     fn bitor_assign(&mut self, rhs: Self) {
2167         self.0.bitor_assign(rhs.0)
2168     }
2169 }
2170 impl ::std::ops::BitAndAssign for BluetoothServiceCapabilities {
2171     fn bitand_assign(&mut self, rhs: Self) {
2172         self.0.bitand_assign(rhs.0)
2173     }
2174 }
2175 impl ::std::ops::Not for BluetoothServiceCapabilities {
2176     type Output = Self;
2177     fn not(self) -> Self {
2178         Self(self.0.not())
2179     }
2180 }
2181 #[repr(transparent)]
2182 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2183 pub struct BluetoothSignalStrengthFilter(::windows::runtime::IInspectable);
2184 impl BluetoothSignalStrengthFilter {
2185     pub fn new() -> ::windows::runtime::Result<Self> {
2186         Self::IActivationFactory(|f| f.activate_instance::<Self>())
2187     }
2188     fn IActivationFactory<R, F: FnOnce(&::windows::runtime::IActivationFactory) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
2189         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothSignalStrengthFilter, ::windows::runtime::IActivationFactory> = ::windows::runtime::FactoryCache::new();
2190         unsafe { SHARED.call(callback) }
2191     }
2192     #[cfg(feature = "Foundation")]
2193     pub fn InRangeThresholdInDBm(&self) -> ::windows::runtime::Result<super::super::Foundation::IReference<i16>> {
2194         let this = self;
2195         unsafe {
2196             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2197             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IReference<i16>>(result__)
2198         }
2199     }
2200     #[cfg(feature = "Foundation")]
2201     pub fn SetInRangeThresholdInDBm<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::IReference<i16>>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
2202         let this = self;
2203         unsafe { (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
2204     }
2205     #[cfg(feature = "Foundation")]
2206     pub fn OutOfRangeThresholdInDBm(&self) -> ::windows::runtime::Result<super::super::Foundation::IReference<i16>> {
2207         let this = self;
2208         unsafe {
2209             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2210             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IReference<i16>>(result__)
2211         }
2212     }
2213     #[cfg(feature = "Foundation")]
2214     pub fn SetOutOfRangeThresholdInDBm<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::IReference<i16>>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
2215         let this = self;
2216         unsafe { (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
2217     }
2218     #[cfg(feature = "Foundation")]
2219     pub fn OutOfRangeTimeout(&self) -> ::windows::runtime::Result<super::super::Foundation::IReference<super::super::Foundation::TimeSpan>> {
2220         let this = self;
2221         unsafe {
2222             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2223             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IReference<super::super::Foundation::TimeSpan>>(result__)
2224         }
2225     }
2226     #[cfg(feature = "Foundation")]
2227     pub fn SetOutOfRangeTimeout<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::IReference<super::super::Foundation::TimeSpan>>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
2228         let this = self;
2229         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
2230     }
2231     #[cfg(feature = "Foundation")]
2232     pub fn SamplingInterval(&self) -> ::windows::runtime::Result<super::super::Foundation::IReference<super::super::Foundation::TimeSpan>> {
2233         let this = self;
2234         unsafe {
2235             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2236             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IReference<super::super::Foundation::TimeSpan>>(result__)
2237         }
2238     }
2239     #[cfg(feature = "Foundation")]
2240     pub fn SetSamplingInterval<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::IReference<super::super::Foundation::TimeSpan>>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
2241         let this = self;
2242         unsafe { (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
2243     }
2244 }
2245 unsafe impl ::windows::runtime::RuntimeType for BluetoothSignalStrengthFilter {
2246     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Devices.Bluetooth.BluetoothSignalStrengthFilter;{df7b7391-6bb5-4cfe-90b1-5d7324edcf7f})");
2247 }
2248 unsafe impl ::windows::runtime::Interface for BluetoothSignalStrengthFilter {
2249     type Vtable = IBluetoothSignalStrengthFilter_abi;
2250     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3749409681, 27573, 19710, [144, 177, 93, 115, 36, 237, 207, 127]);
2251 }
2252 impl ::windows::runtime::RuntimeName for BluetoothSignalStrengthFilter {
2253     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothSignalStrengthFilter";
2254 }
2255 impl ::std::convert::From<BluetoothSignalStrengthFilter> for ::windows::runtime::IUnknown {
2256     fn from(value: BluetoothSignalStrengthFilter) -> Self {
2257         unsafe { ::std::mem::transmute(value) }
2258     }
2259 }
2260 impl ::std::convert::From<&BluetoothSignalStrengthFilter> for ::windows::runtime::IUnknown {
2261     fn from(value: &BluetoothSignalStrengthFilter) -> Self {
2262         ::std::convert::From::from(::std::clone::Clone::clone(value))
2263     }
2264 }
2265 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for BluetoothSignalStrengthFilter {
2266     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2267         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
2268     }
2269 }
2270 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &BluetoothSignalStrengthFilter {
2271     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2272         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
2273     }
2274 }
2275 impl ::std::convert::From<BluetoothSignalStrengthFilter> for ::windows::runtime::IInspectable {
2276     fn from(value: BluetoothSignalStrengthFilter) -> Self {
2277         value.0
2278     }
2279 }
2280 impl ::std::convert::From<&BluetoothSignalStrengthFilter> for ::windows::runtime::IInspectable {
2281     fn from(value: &BluetoothSignalStrengthFilter) -> Self {
2282         value.0.clone()
2283     }
2284 }
2285 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for BluetoothSignalStrengthFilter {
2286     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2287         ::windows::runtime::Param::Owned(self.0)
2288     }
2289 }
2290 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a BluetoothSignalStrengthFilter {
2291     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2292         ::windows::runtime::Param::Borrowed(&self.0)
2293     }
2294 }
2295 unsafe impl ::std::marker::Send for BluetoothSignalStrengthFilter {}
2296 unsafe impl ::std::marker::Sync for BluetoothSignalStrengthFilter {}
2297 pub struct BluetoothUuidHelper {}
2298 impl BluetoothUuidHelper {
2299     pub fn FromShortId(shortid: u32) -> ::windows::runtime::Result<::windows::runtime::GUID> {
2300         Self::IBluetoothUuidHelperStatics(|this| unsafe {
2301             let mut result__: ::windows::runtime::GUID = ::std::mem::zeroed();
2302             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), shortid, &mut result__).from_abi::<::windows::runtime::GUID>(result__)
2303         })
2304     }
2305     #[cfg(feature = "Foundation")]
2306     pub fn TryGetShortId<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::GUID>>(uuid: Param0) -> ::windows::runtime::Result<super::super::Foundation::IReference<u32>> {
2307         Self::IBluetoothUuidHelperStatics(|this| unsafe {
2308             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2309             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), uuid.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IReference<u32>>(result__)
2310         })
2311     }
2312     pub fn IBluetoothUuidHelperStatics<R, F: FnOnce(&IBluetoothUuidHelperStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
2313         static mut SHARED: ::windows::runtime::FactoryCache<BluetoothUuidHelper, IBluetoothUuidHelperStatics> = ::windows::runtime::FactoryCache::new();
2314         unsafe { SHARED.call(callback) }
2315     }
2316 }
2317 impl ::windows::runtime::RuntimeName for BluetoothUuidHelper {
2318     const NAME: &'static str = "Windows.Devices.Bluetooth.BluetoothUuidHelper";
2319 }
2320 #[repr(transparent)]
2321 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2322 #[doc(hidden)]
2323 pub struct IBluetoothAdapter(::windows::runtime::IInspectable);
2324 unsafe impl ::windows::runtime::Interface for IBluetoothAdapter {
2325     type Vtable = IBluetoothAdapter_abi;
2326     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2037706828, 24442, 18996, [146, 37, 168, 85, 248, 75, 26, 139]);
2327 }
2328 #[repr(C)]
2329 #[doc(hidden)]
2330 pub struct IBluetoothAdapter_abi(
2331     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2332     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2333     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2334     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2335     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2336     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2337     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2338     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u64) -> ::windows::runtime::HRESULT,
2339     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2340     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2341     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2342     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2343     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2344     #[cfg(all(feature = "Devices_Radios", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2345     #[cfg(not(all(feature = "Devices_Radios", feature = "Foundation")))] usize,
2346 );
2347 #[repr(transparent)]
2348 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2349 #[doc(hidden)]
2350 pub struct IBluetoothAdapter2(::windows::runtime::IInspectable);
2351 unsafe impl ::windows::runtime::Interface for IBluetoothAdapter2 {
2352     type Vtable = IBluetoothAdapter2_abi;
2353     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2895433420, 9429, 16819, [145, 109, 16, 151, 197, 11, 16, 43]);
2354 }
2355 #[repr(C)]
2356 #[doc(hidden)]
2357 pub struct IBluetoothAdapter2_abi(
2358     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2359     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2360     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2361     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2362     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2363     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2364     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2365     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2366 );
2367 #[repr(transparent)]
2368 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2369 #[doc(hidden)]
2370 pub struct IBluetoothAdapter3(::windows::runtime::IInspectable);
2371 unsafe impl ::windows::runtime::Interface for IBluetoothAdapter3 {
2372     type Vtable = IBluetoothAdapter3_abi;
2373     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2407933152, 52137, 21009, [159, 137, 58, 172, 98, 180, 198, 184]);
2374 }
2375 #[repr(C)]
2376 #[doc(hidden)]
2377 pub struct IBluetoothAdapter3_abi(
2378     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2379     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2380     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2381     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2382     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2383     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2384     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2385     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u32) -> ::windows::runtime::HRESULT,
2386 );
2387 #[repr(transparent)]
2388 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2389 #[doc(hidden)]
2390 pub struct IBluetoothAdapterStatics(::windows::runtime::IInspectable);
2391 unsafe impl ::windows::runtime::Interface for IBluetoothAdapterStatics {
2392     type Vtable = IBluetoothAdapterStatics_abi;
2393     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2332228458, 44108, 18241, [134, 97, 142, 171, 125, 23, 234, 159]);
2394 }
2395 #[repr(C)]
2396 #[doc(hidden)]
2397 pub struct IBluetoothAdapterStatics_abi(
2398     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2399     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2400     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2401     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2402     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2403     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2404     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2405     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, deviceid: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2406     #[cfg(not(feature = "Foundation"))] usize,
2407     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2408     #[cfg(not(feature = "Foundation"))] usize,
2409 );
2410 #[repr(transparent)]
2411 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2412 #[doc(hidden)]
2413 pub struct IBluetoothClassOfDevice(::windows::runtime::IInspectable);
2414 unsafe impl ::windows::runtime::Interface for IBluetoothClassOfDevice {
2415     type Vtable = IBluetoothClassOfDevice_abi;
2416     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3594527358, 55255, 18017, [148, 84, 101, 3, 156, 161, 122, 43]);
2417 }
2418 #[repr(C)]
2419 #[doc(hidden)]
2420 pub struct IBluetoothClassOfDevice_abi(
2421     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2422     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2423     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2424     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2425     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2426     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2427     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u32) -> ::windows::runtime::HRESULT,
2428     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut BluetoothMajorClass) -> ::windows::runtime::HRESULT,
2429     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut BluetoothMinorClass) -> ::windows::runtime::HRESULT,
2430     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut BluetoothServiceCapabilities) -> ::windows::runtime::HRESULT,
2431 );
2432 #[repr(transparent)]
2433 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2434 #[doc(hidden)]
2435 pub struct IBluetoothClassOfDeviceStatics(::windows::runtime::IInspectable);
2436 unsafe impl ::windows::runtime::Interface for IBluetoothClassOfDeviceStatics {
2437     type Vtable = IBluetoothClassOfDeviceStatics_abi;
2438     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3831575997, 4002, 16748, [145, 180, 193, 228, 140, 160, 97, 193]);
2439 }
2440 #[repr(C)]
2441 #[doc(hidden)]
2442 pub struct IBluetoothClassOfDeviceStatics_abi(
2443     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2444     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2445     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2446     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2447     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2448     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2449     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, rawvalue: u32, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2450     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, majorclass: BluetoothMajorClass, minorclass: BluetoothMinorClass, servicecapabilities: BluetoothServiceCapabilities, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2451 );
2452 #[repr(transparent)]
2453 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2454 #[doc(hidden)]
2455 pub struct IBluetoothDevice(::windows::runtime::IInspectable);
2456 unsafe impl ::windows::runtime::Interface for IBluetoothDevice {
2457     type Vtable = IBluetoothDevice_abi;
2458     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(590721366, 37074, 18948, [174, 245, 14, 32, 185, 230, 183, 7]);
2459 }
2460 #[repr(C)]
2461 #[doc(hidden)]
2462 pub struct IBluetoothDevice_abi(
2463     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2464     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2465     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2466     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2467     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2468     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2469     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2470     #[cfg(feature = "Networking")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2471     #[cfg(not(feature = "Networking"))] usize,
2472     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2473     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2474     #[cfg(all(feature = "Foundation_Collections", feature = "Storage_Streams"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2475     #[cfg(not(all(feature = "Foundation_Collections", feature = "Storage_Streams")))] usize,
2476     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation_Collections"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2477     #[cfg(not(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation_Collections")))] usize,
2478     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut BluetoothConnectionStatus) -> ::windows::runtime::HRESULT,
2479     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u64) -> ::windows::runtime::HRESULT,
2480     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2481     #[cfg(not(feature = "Foundation"))] usize,
2482     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2483     #[cfg(not(feature = "Foundation"))] usize,
2484     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2485     #[cfg(not(feature = "Foundation"))] usize,
2486     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2487     #[cfg(not(feature = "Foundation"))] usize,
2488     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2489     #[cfg(not(feature = "Foundation"))] usize,
2490     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2491     #[cfg(not(feature = "Foundation"))] usize,
2492 );
2493 #[repr(transparent)]
2494 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2495 #[doc(hidden)]
2496 pub struct IBluetoothDevice2(::windows::runtime::IInspectable);
2497 unsafe impl ::windows::runtime::Interface for IBluetoothDevice2 {
2498     type Vtable = IBluetoothDevice2_abi;
2499     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(20183380, 45398, 19920, [177, 245, 193, 27, 195, 26, 81, 99]);
2500 }
2501 #[repr(C)]
2502 #[doc(hidden)]
2503 pub struct IBluetoothDevice2_abi(
2504     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2505     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2506     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2507     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2508     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2509     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2510     #[cfg(feature = "Devices_Enumeration")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2511     #[cfg(not(feature = "Devices_Enumeration"))] usize,
2512 );
2513 #[repr(transparent)]
2514 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2515 #[doc(hidden)]
2516 pub struct IBluetoothDevice3(::windows::runtime::IInspectable);
2517 unsafe impl ::windows::runtime::Interface for IBluetoothDevice3 {
2518     type Vtable = IBluetoothDevice3_abi;
2519     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1476392843, 25882, 17492, [185, 15, 235, 33, 239, 11, 13, 113]);
2520 }
2521 #[repr(C)]
2522 #[doc(hidden)]
2523 pub struct IBluetoothDevice3_abi(
2524     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2525     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2526     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2527     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2528     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2529     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2530     #[cfg(feature = "Devices_Enumeration")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2531     #[cfg(not(feature = "Devices_Enumeration"))] usize,
2532     #[cfg(all(feature = "Devices_Enumeration", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2533     #[cfg(not(all(feature = "Devices_Enumeration", feature = "Foundation")))] usize,
2534     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2535     #[cfg(not(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation")))] usize,
2536     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, cachemode: BluetoothCacheMode, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2537     #[cfg(not(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation")))] usize,
2538     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, serviceid: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2539     #[cfg(not(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation")))] usize,
2540     #[cfg(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, serviceid: ::windows::runtime::RawPtr, cachemode: BluetoothCacheMode, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2541     #[cfg(not(all(feature = "Devices_Bluetooth_Rfcomm", feature = "Foundation")))] usize,
2542 );
2543 #[repr(transparent)]
2544 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2545 #[doc(hidden)]
2546 pub struct IBluetoothDevice4(::windows::runtime::IInspectable);
2547 unsafe impl ::windows::runtime::Interface for IBluetoothDevice4 {
2548     type Vtable = IBluetoothDevice4_abi;
2549     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2172400813, 3740, 17074, [168, 220, 62, 128, 148, 148, 13, 18]);
2550 }
2551 #[repr(C)]
2552 #[doc(hidden)]
2553 pub struct IBluetoothDevice4_abi(
2554     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2555     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2556     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2557     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2558     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2559     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2560     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2561 );
2562 #[repr(transparent)]
2563 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2564 #[doc(hidden)]
2565 pub struct IBluetoothDevice5(::windows::runtime::IInspectable);
2566 unsafe impl ::windows::runtime::Interface for IBluetoothDevice5 {
2567     type Vtable = IBluetoothDevice5_abi;
2568     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3051402117, 24197, 17753, [161, 13, 28, 114, 129, 55, 159, 150]);
2569 }
2570 #[repr(C)]
2571 #[doc(hidden)]
2572 pub struct IBluetoothDevice5_abi(
2573     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2574     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2575     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2576     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2577     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2578     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2579     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2580 );
2581 #[repr(transparent)]
2582 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2583 #[doc(hidden)]
2584 pub struct IBluetoothDeviceId(::windows::runtime::IInspectable);
2585 unsafe impl ::windows::runtime::Interface for IBluetoothDeviceId {
2586     type Vtable = IBluetoothDeviceId_abi;
2587     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3245951407, 22465, 17986, [188, 206, 230, 192, 107, 32, 174, 118]);
2588 }
2589 #[repr(C)]
2590 #[doc(hidden)]
2591 pub struct IBluetoothDeviceId_abi(
2592     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2593     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2594     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2595     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2596     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2597     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2598     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2599     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2600     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2601 );
2602 #[repr(transparent)]
2603 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2604 #[doc(hidden)]
2605 pub struct IBluetoothDeviceIdStatics(::windows::runtime::IInspectable);
2606 unsafe impl ::windows::runtime::Interface for IBluetoothDeviceIdStatics {
2607     type Vtable = IBluetoothDeviceIdStatics_abi;
2608     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2810728039, 16123, 20273, [187, 194, 129, 14, 9, 151, 116, 4]);
2609 }
2610 #[repr(C)]
2611 #[doc(hidden)]
2612 pub struct IBluetoothDeviceIdStatics_abi(
2613     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2614     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2615     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2616     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2617     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2618     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2619     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, deviceid: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2620 );
2621 #[repr(transparent)]
2622 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2623 #[doc(hidden)]
2624 pub struct IBluetoothDeviceStatics(::windows::runtime::IInspectable);
2625 unsafe impl ::windows::runtime::Interface for IBluetoothDeviceStatics {
2626     type Vtable = IBluetoothDeviceStatics_abi;
2627     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(160554833, 22491, 18213, [187, 215, 132, 246, 67, 39, 236, 44]);
2628 }
2629 #[repr(C)]
2630 #[doc(hidden)]
2631 pub struct IBluetoothDeviceStatics_abi(
2632     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2633     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2634     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2635     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2636     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2637     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2638     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, deviceid: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2639     #[cfg(not(feature = "Foundation"))] usize,
2640     #[cfg(all(feature = "Foundation", feature = "Networking"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, hostname: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2641     #[cfg(not(all(feature = "Foundation", feature = "Networking")))] usize,
2642     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, address: u64, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2643     #[cfg(not(feature = "Foundation"))] usize,
2644     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2645 );
2646 #[repr(transparent)]
2647 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2648 #[doc(hidden)]
2649 pub struct IBluetoothDeviceStatics2(::windows::runtime::IInspectable);
2650 unsafe impl ::windows::runtime::Interface for IBluetoothDeviceStatics2 {
2651     type Vtable = IBluetoothDeviceStatics2_abi;
2652     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3265170991, 19988, 17527, [170, 27, 184, 180, 126, 91, 126, 206]);
2653 }
2654 #[repr(C)]
2655 #[doc(hidden)]
2656 pub struct IBluetoothDeviceStatics2_abi(
2657     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2658     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2659     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2660     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2661     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2662     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2663     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, pairingstate: bool, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2664     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, connectionstatus: BluetoothConnectionStatus, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2665     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, devicename: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2666     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, bluetoothaddress: u64, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2667     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, classofdevice: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2668 );
2669 #[repr(transparent)]
2670 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2671 #[doc(hidden)]
2672 pub struct IBluetoothLEAppearance(::windows::runtime::IInspectable);
2673 unsafe impl ::windows::runtime::Interface for IBluetoothLEAppearance {
2674     type Vtable = IBluetoothLEAppearance_abi;
2675     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1562409458, 26280, 16984, [152, 94, 2, 180, 217, 80, 159, 24]);
2676 }
2677 #[repr(C)]
2678 #[doc(hidden)]
2679 pub struct IBluetoothLEAppearance_abi(
2680     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2681     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2682     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2683     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2684     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2685     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2686     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2687     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2688     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2689 );
2690 #[repr(transparent)]
2691 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2692 #[doc(hidden)]
2693 pub struct IBluetoothLEAppearanceCategoriesStatics(::windows::runtime::IInspectable);
2694 unsafe impl ::windows::runtime::Interface for IBluetoothLEAppearanceCategoriesStatics {
2695     type Vtable = IBluetoothLEAppearanceCategoriesStatics_abi;
2696     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1833784574, 1130, 16773, [170, 182, 130, 76, 240, 97, 8, 97]);
2697 }
2698 #[repr(C)]
2699 #[doc(hidden)]
2700 pub struct IBluetoothLEAppearanceCategoriesStatics_abi(
2701     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2702     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2703     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2704     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2705     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2706     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2707     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2708     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2709     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2710     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2711     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2712     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2713     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2714     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2715     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2716     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2717     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2718     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2719     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2720     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2721     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2722     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2723     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2724     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2725     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2726     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2727     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2728     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2729 );
2730 #[repr(transparent)]
2731 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2732 #[doc(hidden)]
2733 pub struct IBluetoothLEAppearanceStatics(::windows::runtime::IInspectable);
2734 unsafe impl ::windows::runtime::Interface for IBluetoothLEAppearanceStatics {
2735     type Vtable = IBluetoothLEAppearanceStatics_abi;
2736     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2710814919, 17668, 20298, [155, 165, 205, 16, 84, 229, 224, 101]);
2737 }
2738 #[repr(C)]
2739 #[doc(hidden)]
2740 pub struct IBluetoothLEAppearanceStatics_abi(
2741     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2742     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2743     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2744     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2745     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2746     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2747     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, rawvalue: u16, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2748     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, appearancecategory: u16, appearancesubcategory: u16, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2749 );
2750 #[repr(transparent)]
2751 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2752 #[doc(hidden)]
2753 pub struct IBluetoothLEAppearanceSubcategoriesStatics(::windows::runtime::IInspectable);
2754 unsafe impl ::windows::runtime::Interface for IBluetoothLEAppearanceSubcategoriesStatics {
2755     type Vtable = IBluetoothLEAppearanceSubcategoriesStatics_abi;
2756     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3850085894, 8516, 16730, [131, 18, 113, 204, 242, 145, 248, 209]);
2757 }
2758 #[repr(C)]
2759 #[doc(hidden)]
2760 pub struct IBluetoothLEAppearanceSubcategoriesStatics_abi(
2761     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2762     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2763     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2764     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2765     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2766     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2767     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2768     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2769     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2770     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2771     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2772     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2773     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2774     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2775     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2776     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2777     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2778     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2779     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2780     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2781     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2782     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2783     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2784     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2785     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2786     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2787     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2788     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2789     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2790     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2791     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2792     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2793     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2794     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2795 );
2796 #[repr(transparent)]
2797 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2798 #[doc(hidden)]
2799 pub struct IBluetoothLEConnectionParameters(::windows::runtime::IInspectable);
2800 unsafe impl ::windows::runtime::Interface for IBluetoothLEConnectionParameters {
2801     type Vtable = IBluetoothLEConnectionParameters_abi;
2802     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(868943729, 36265, 20623, [163, 102, 28, 163, 136, 201, 41, 171]);
2803 }
2804 #[repr(C)]
2805 #[doc(hidden)]
2806 pub struct IBluetoothLEConnectionParameters_abi(
2807     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2808     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2809     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2810     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2811     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2812     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2813     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2814     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2815     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2816 );
2817 #[repr(transparent)]
2818 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2819 #[doc(hidden)]
2820 pub struct IBluetoothLEConnectionPhy(::windows::runtime::IInspectable);
2821 unsafe impl ::windows::runtime::Interface for IBluetoothLEConnectionPhy {
2822     type Vtable = IBluetoothLEConnectionPhy_abi;
2823     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2015256136, 25118, 23166, [139, 230, 27, 149, 97, 255, 99, 201]);
2824 }
2825 #[repr(C)]
2826 #[doc(hidden)]
2827 pub struct IBluetoothLEConnectionPhy_abi(
2828     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2829     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2830     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2831     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2832     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2833     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2834     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2835     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2836 );
2837 #[repr(transparent)]
2838 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2839 #[doc(hidden)]
2840 pub struct IBluetoothLEConnectionPhyInfo(::windows::runtime::IInspectable);
2841 unsafe impl ::windows::runtime::Interface for IBluetoothLEConnectionPhyInfo {
2842     type Vtable = IBluetoothLEConnectionPhyInfo_abi;
2843     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2584742877, 24622, 23591, [161, 174, 178, 48, 1, 90, 99, 148]);
2844 }
2845 #[repr(C)]
2846 #[doc(hidden)]
2847 pub struct IBluetoothLEConnectionPhyInfo_abi(
2848     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2849     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2850     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2851     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2852     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2853     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2854     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2855     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2856     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2857 );
2858 #[repr(transparent)]
2859 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2860 #[doc(hidden)]
2861 pub struct IBluetoothLEDevice(::windows::runtime::IInspectable);
2862 unsafe impl ::windows::runtime::Interface for IBluetoothLEDevice {
2863     type Vtable = IBluetoothLEDevice_abi;
2864     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3052285819, 19160, 17986, [172, 72, 128, 160, 181, 0, 232, 135]);
2865 }
2866 #[repr(C)]
2867 #[doc(hidden)]
2868 pub struct IBluetoothLEDevice_abi(
2869     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2870     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2871     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2872     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2873     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2874     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2875     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2876     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2877     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation_Collections"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2878     #[cfg(not(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation_Collections")))] usize,
2879     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut BluetoothConnectionStatus) -> ::windows::runtime::HRESULT,
2880     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u64) -> ::windows::runtime::HRESULT,
2881     #[cfg(feature = "Devices_Bluetooth_GenericAttributeProfile")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, serviceuuid: ::windows::runtime::GUID, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2882     #[cfg(not(feature = "Devices_Bluetooth_GenericAttributeProfile"))] usize,
2883     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2884     #[cfg(not(feature = "Foundation"))] usize,
2885     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2886     #[cfg(not(feature = "Foundation"))] usize,
2887     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2888     #[cfg(not(feature = "Foundation"))] usize,
2889     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2890     #[cfg(not(feature = "Foundation"))] usize,
2891     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2892     #[cfg(not(feature = "Foundation"))] usize,
2893     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
2894     #[cfg(not(feature = "Foundation"))] usize,
2895 );
2896 #[repr(transparent)]
2897 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2898 #[doc(hidden)]
2899 pub struct IBluetoothLEDevice2(::windows::runtime::IInspectable);
2900 unsafe impl ::windows::runtime::Interface for IBluetoothLEDevice2 {
2901     type Vtable = IBluetoothLEDevice2_abi;
2902     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(653288115, 31470, 19761, [186, 186, 177, 185, 119, 95, 89, 22]);
2903 }
2904 #[repr(C)]
2905 #[doc(hidden)]
2906 pub struct IBluetoothLEDevice2_abi(
2907     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2908     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2909     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2910     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2911     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2912     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2913     #[cfg(feature = "Devices_Enumeration")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2914     #[cfg(not(feature = "Devices_Enumeration"))] usize,
2915     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2916     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut BluetoothAddressType) -> ::windows::runtime::HRESULT,
2917 );
2918 #[repr(transparent)]
2919 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2920 #[doc(hidden)]
2921 pub struct IBluetoothLEDevice3(::windows::runtime::IInspectable);
2922 unsafe impl ::windows::runtime::Interface for IBluetoothLEDevice3 {
2923     type Vtable = IBluetoothLEDevice3_abi;
2924     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2934563987, 17580, 16604, [175, 51, 178, 193, 60, 1, 202, 70]);
2925 }
2926 #[repr(C)]
2927 #[doc(hidden)]
2928 pub struct IBluetoothLEDevice3_abi(
2929     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2930     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2931     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2932     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2933     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2934     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2935     #[cfg(feature = "Devices_Enumeration")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2936     #[cfg(not(feature = "Devices_Enumeration"))] usize,
2937     #[cfg(all(feature = "Devices_Enumeration", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2938     #[cfg(not(all(feature = "Devices_Enumeration", feature = "Foundation")))] usize,
2939     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2940     #[cfg(not(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation")))] usize,
2941     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, cachemode: BluetoothCacheMode, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2942     #[cfg(not(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation")))] usize,
2943     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, serviceuuid: ::windows::runtime::GUID, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2944     #[cfg(not(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation")))] usize,
2945     #[cfg(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, serviceuuid: ::windows::runtime::GUID, cachemode: BluetoothCacheMode, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2946     #[cfg(not(all(feature = "Devices_Bluetooth_GenericAttributeProfile", feature = "Foundation")))] usize,
2947 );
2948 #[repr(transparent)]
2949 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2950 #[doc(hidden)]
2951 pub struct IBluetoothLEDevice4(::windows::runtime::IInspectable);
2952 unsafe impl ::windows::runtime::Interface for IBluetoothLEDevice4 {
2953     type Vtable = IBluetoothLEDevice4_abi;
2954     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(727732273, 8776, 19247, [172, 240, 124, 238, 54, 252, 88, 112]);
2955 }
2956 #[repr(C)]
2957 #[doc(hidden)]
2958 pub struct IBluetoothLEDevice4_abi(
2959     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2960     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2961     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2962     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2963     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2964     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2965     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2966 );
2967 #[repr(transparent)]
2968 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2969 #[doc(hidden)]
2970 pub struct IBluetoothLEDevice5(::windows::runtime::IInspectable);
2971 unsafe impl ::windows::runtime::Interface for IBluetoothLEDevice5 {
2972     type Vtable = IBluetoothLEDevice5_abi;
2973     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2640974432, 21127, 17806, [149, 186, 23, 200, 183, 187, 50, 110]);
2974 }
2975 #[repr(C)]
2976 #[doc(hidden)]
2977 pub struct IBluetoothLEDevice5_abi(
2978     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2979     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2980     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2981     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2982     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2983     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2984     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2985 );
2986 #[repr(transparent)]
2987 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2988 #[doc(hidden)]
2989 pub struct IBluetoothLEDevice6(::windows::runtime::IInspectable);
2990 unsafe impl ::windows::runtime::Interface for IBluetoothLEDevice6 {
2991     type Vtable = IBluetoothLEDevice6_abi;
2992     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3396440303, 3246, 22332, [161, 202, 225, 252, 91, 252, 57, 226]);
2993 }
2994 #[repr(C)]
2995 #[doc(hidden)]
2996 pub struct IBluetoothLEDevice6_abi(
2997     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2998     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2999     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3000     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3001     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3002     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3003     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3004     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3005     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, preferredconnectionparameters: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3006     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
3007     #[cfg(not(feature = "Foundation"))] usize,
3008     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
3009     #[cfg(not(feature = "Foundation"))] usize,
3010     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, handler: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
3011     #[cfg(not(feature = "Foundation"))] usize,
3012     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, token: super::super::Foundation::EventRegistrationToken) -> ::windows::runtime::HRESULT,
3013     #[cfg(not(feature = "Foundation"))] usize,
3014 );
3015 #[repr(transparent)]
3016 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3017 #[doc(hidden)]
3018 pub struct IBluetoothLEDeviceStatics(::windows::runtime::IInspectable);
3019 unsafe impl ::windows::runtime::Interface for IBluetoothLEDeviceStatics {
3020     type Vtable = IBluetoothLEDeviceStatics_abi;
3021     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3369015833, 61622, 19440, [134, 137, 65, 48, 61, 226, 217, 244]);
3022 }
3023 #[repr(C)]
3024 #[doc(hidden)]
3025 pub struct IBluetoothLEDeviceStatics_abi(
3026     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3027     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3028     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3029     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3030     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3031     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3032     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, deviceid: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3033     #[cfg(not(feature = "Foundation"))] usize,
3034     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, bluetoothaddress: u64, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3035     #[cfg(not(feature = "Foundation"))] usize,
3036     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
3037 );
3038 #[repr(transparent)]
3039 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3040 #[doc(hidden)]
3041 pub struct IBluetoothLEDeviceStatics2(::windows::runtime::IInspectable);
3042 unsafe impl ::windows::runtime::Interface for IBluetoothLEDeviceStatics2 {
3043     type Vtable = IBluetoothLEDeviceStatics2_abi;
3044     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1595064427, 15276, 17384, [173, 22, 86, 50, 113, 189, 65, 194]);
3045 }
3046 #[repr(C)]
3047 #[doc(hidden)]
3048 pub struct IBluetoothLEDeviceStatics2_abi(
3049     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3050     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3051     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3052     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3053     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3054     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3055     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, pairingstate: bool, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
3056     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, connectionstatus: BluetoothConnectionStatus, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
3057     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, devicename: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
3058     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, bluetoothaddress: u64, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
3059     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, bluetoothaddress: u64, bluetoothaddresstype: BluetoothAddressType, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
3060     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, appearance: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
3061     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, bluetoothaddress: u64, bluetoothaddresstype: BluetoothAddressType, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3062     #[cfg(not(feature = "Foundation"))] usize,
3063 );
3064 #[repr(transparent)]
3065 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3066 #[doc(hidden)]
3067 pub struct IBluetoothLEPreferredConnectionParameters(::windows::runtime::IInspectable);
3068 unsafe impl ::windows::runtime::Interface for IBluetoothLEPreferredConnectionParameters {
3069     type Vtable = IBluetoothLEPreferredConnectionParameters_abi;
3070     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(4076094276, 29554, 24443, [155, 52, 41, 201, 68, 245, 167, 21]);
3071 }
3072 #[repr(C)]
3073 #[doc(hidden)]
3074 pub struct IBluetoothLEPreferredConnectionParameters_abi(
3075     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3076     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3077     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3078     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3079     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3080     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3081     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
3082     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
3083     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
3084     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
3085 );
3086 #[repr(transparent)]
3087 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3088 #[doc(hidden)]
3089 pub struct IBluetoothLEPreferredConnectionParametersRequest(::windows::runtime::IInspectable);
3090 unsafe impl ::windows::runtime::Interface for IBluetoothLEPreferredConnectionParametersRequest {
3091     type Vtable = IBluetoothLEPreferredConnectionParametersRequest_abi;
3092     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2318881398, 42280, 21094, [182, 97, 204, 230, 165, 255, 151, 57]);
3093 }
3094 #[repr(C)]
3095 #[doc(hidden)]
3096 pub struct IBluetoothLEPreferredConnectionParametersRequest_abi(
3097     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3098     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3099     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3100     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3101     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3102     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3103     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut BluetoothLEPreferredConnectionParametersRequestStatus) -> ::windows::runtime::HRESULT,
3104 );
3105 #[repr(transparent)]
3106 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3107 #[doc(hidden)]
3108 pub struct IBluetoothLEPreferredConnectionParametersStatics(::windows::runtime::IInspectable);
3109 unsafe impl ::windows::runtime::Interface for IBluetoothLEPreferredConnectionParametersStatics {
3110     type Vtable = IBluetoothLEPreferredConnectionParametersStatics_abi;
3111     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(238980828, 10065, 21930, [168, 56, 143, 174, 238, 129, 141, 114]);
3112 }
3113 #[repr(C)]
3114 #[doc(hidden)]
3115 pub struct IBluetoothLEPreferredConnectionParametersStatics_abi(
3116     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3117     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3118     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3119     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3120     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3121     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3122     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3123     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3124     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3125 );
3126 #[repr(transparent)]
3127 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3128 #[doc(hidden)]
3129 pub struct IBluetoothSignalStrengthFilter(::windows::runtime::IInspectable);
3130 unsafe impl ::windows::runtime::Interface for IBluetoothSignalStrengthFilter {
3131     type Vtable = IBluetoothSignalStrengthFilter_abi;
3132     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3749409681, 27573, 19710, [144, 177, 93, 115, 36, 237, 207, 127]);
3133 }
3134 #[repr(C)]
3135 #[doc(hidden)]
3136 pub struct IBluetoothSignalStrengthFilter_abi(
3137     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3138     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3139     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3140     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3141     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3142     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3143     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3144     #[cfg(not(feature = "Foundation"))] usize,
3145     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3146     #[cfg(not(feature = "Foundation"))] usize,
3147     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3148     #[cfg(not(feature = "Foundation"))] usize,
3149     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3150     #[cfg(not(feature = "Foundation"))] usize,
3151     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3152     #[cfg(not(feature = "Foundation"))] usize,
3153     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3154     #[cfg(not(feature = "Foundation"))] usize,
3155     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3156     #[cfg(not(feature = "Foundation"))] usize,
3157     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3158     #[cfg(not(feature = "Foundation"))] usize,
3159 );
3160 #[repr(transparent)]
3161 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3162 #[doc(hidden)]
3163 pub struct IBluetoothUuidHelperStatics(::windows::runtime::IInspectable);
3164 unsafe impl ::windows::runtime::Interface for IBluetoothUuidHelperStatics {
3165     type Vtable = IBluetoothUuidHelperStatics_abi;
3166     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(400493784, 53108, 19233, [175, 230, 245, 122, 17, 188, 222, 160]);
3167 }
3168 #[repr(C)]
3169 #[doc(hidden)]
3170 pub struct IBluetoothUuidHelperStatics_abi(
3171     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3172     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3173     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3174     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3175     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3176     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3177     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, shortid: u32, result__: *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3178     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, uuid: ::windows::runtime::GUID, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3179     #[cfg(not(feature = "Foundation"))] usize,
3180 );
3181