1 #![allow(unused_variables, non_upper_case_globals, non_snake_case, unused_unsafe, non_camel_case_types, dead_code, clippy::all)]
2 #[repr(transparent)]
3 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
4 pub struct Buffer(::windows::runtime::IInspectable);
5 impl Buffer {
6     pub fn Capacity(&self) -> ::windows::runtime::Result<u32> {
7         let this = self;
8         unsafe {
9             let mut result__: u32 = ::std::mem::zeroed();
10             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
11         }
12     }
13     pub fn Length(&self) -> ::windows::runtime::Result<u32> {
14         let this = self;
15         unsafe {
16             let mut result__: u32 = ::std::mem::zeroed();
17             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
18         }
19     }
20     pub fn SetLength(&self, value: u32) -> ::windows::runtime::Result<()> {
21         let this = self;
22         unsafe { (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), value).ok() }
23     }
24     pub fn Create(capacity: u32) -> ::windows::runtime::Result<Buffer> {
25         Self::IBufferFactory(|this| unsafe {
26             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
27             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), capacity, &mut result__).from_abi::<Buffer>(result__)
28         })
29     }
30     #[cfg(feature = "Foundation")]
31     pub fn CreateCopyFromMemoryBuffer<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::IMemoryBuffer>>(input: Param0) -> ::windows::runtime::Result<Buffer> {
32         Self::IBufferStatics(|this| unsafe {
33             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
34             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), input.into_param().abi(), &mut result__).from_abi::<Buffer>(result__)
35         })
36     }
37     #[cfg(feature = "Foundation")]
38     pub fn CreateMemoryBufferOverIBuffer<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(input: Param0) -> ::windows::runtime::Result<super::super::Foundation::MemoryBuffer> {
39         Self::IBufferStatics(|this| unsafe {
40             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
41             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), input.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::MemoryBuffer>(result__)
42         })
43     }
44     pub fn IBufferFactory<R, F: FnOnce(&IBufferFactory) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
45         static mut SHARED: ::windows::runtime::FactoryCache<Buffer, IBufferFactory> = ::windows::runtime::FactoryCache::new();
46         unsafe { SHARED.call(callback) }
47     }
48     pub fn IBufferStatics<R, F: FnOnce(&IBufferStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
49         static mut SHARED: ::windows::runtime::FactoryCache<Buffer, IBufferStatics> = ::windows::runtime::FactoryCache::new();
50         unsafe { SHARED.call(callback) }
51     }
52 }
53 unsafe impl ::windows::runtime::RuntimeType for Buffer {
54     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.Buffer;{905a0fe0-bc53-11df-8c49-001e4fc686da})");
55 }
56 unsafe impl ::windows::runtime::Interface for Buffer {
57     type Vtable = IBuffer_abi;
58     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821408, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
59 }
60 impl ::windows::runtime::RuntimeName for Buffer {
61     const NAME: &'static str = "Windows.Storage.Streams.Buffer";
62 }
63 impl ::std::convert::From<Buffer> for ::windows::runtime::IUnknown {
64     fn from(value: Buffer) -> Self {
65         unsafe { ::std::mem::transmute(value) }
66     }
67 }
68 impl ::std::convert::From<&Buffer> for ::windows::runtime::IUnknown {
69     fn from(value: &Buffer) -> Self {
70         ::std::convert::From::from(::std::clone::Clone::clone(value))
71     }
72 }
73 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for Buffer {
74     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
75         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
76     }
77 }
78 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &Buffer {
79     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
80         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
81     }
82 }
83 impl ::std::convert::From<Buffer> for ::windows::runtime::IInspectable {
84     fn from(value: Buffer) -> Self {
85         value.0
86     }
87 }
88 impl ::std::convert::From<&Buffer> for ::windows::runtime::IInspectable {
89     fn from(value: &Buffer) -> Self {
90         value.0.clone()
91     }
92 }
93 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for Buffer {
94     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
95         ::windows::runtime::Param::Owned(self.0)
96     }
97 }
98 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a Buffer {
99     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
100         ::windows::runtime::Param::Borrowed(&self.0)
101     }
102 }
103 impl ::std::convert::From<Buffer> for IBuffer {
104     fn from(value: Buffer) -> Self {
105         unsafe { ::std::mem::transmute(value) }
106     }
107 }
108 impl ::std::convert::From<&Buffer> for IBuffer {
109     fn from(value: &Buffer) -> Self {
110         ::std::convert::From::from(::std::clone::Clone::clone(value))
111     }
112 }
113 impl<'a> ::windows::runtime::IntoParam<'a, IBuffer> for Buffer {
114     fn into_param(self) -> ::windows::runtime::Param<'a, IBuffer> {
115         ::windows::runtime::Param::Owned(::std::convert::Into::<IBuffer>::into(self))
116     }
117 }
118 impl<'a> ::windows::runtime::IntoParam<'a, IBuffer> for &Buffer {
119     fn into_param(self) -> ::windows::runtime::Param<'a, IBuffer> {
120         ::windows::runtime::Param::Owned(::std::convert::Into::<IBuffer>::into(::std::clone::Clone::clone(self)))
121     }
122 }
123 unsafe impl ::std::marker::Send for Buffer {}
124 unsafe impl ::std::marker::Sync for Buffer {}
125 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
126 #[repr(transparent)]
127 pub struct ByteOrder(pub i32);
128 impl ByteOrder {
129     pub const LittleEndian: ByteOrder = ByteOrder(0i32);
130     pub const BigEndian: ByteOrder = ByteOrder(1i32);
131 }
132 impl ::std::convert::From<i32> for ByteOrder {
133     fn from(value: i32) -> Self {
134         Self(value)
135     }
136 }
137 unsafe impl ::windows::runtime::Abi for ByteOrder {
138     type Abi = Self;
139     type DefaultType = Self;
140 }
141 unsafe impl ::windows::runtime::RuntimeType for ByteOrder {
142     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Storage.Streams.ByteOrder;i4)");
143 }
144 #[repr(transparent)]
145 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
146 pub struct DataReader(::windows::runtime::IInspectable);
147 impl DataReader {
148     pub fn UnconsumedBufferLength(&self) -> ::windows::runtime::Result<u32> {
149         let this = self;
150         unsafe {
151             let mut result__: u32 = ::std::mem::zeroed();
152             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
153         }
154     }
155     pub fn UnicodeEncoding(&self) -> ::windows::runtime::Result<UnicodeEncoding> {
156         let this = self;
157         unsafe {
158             let mut result__: UnicodeEncoding = ::std::mem::zeroed();
159             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<UnicodeEncoding>(result__)
160         }
161     }
162     pub fn SetUnicodeEncoding(&self, value: UnicodeEncoding) -> ::windows::runtime::Result<()> {
163         let this = self;
164         unsafe { (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), value).ok() }
165     }
166     pub fn ByteOrder(&self) -> ::windows::runtime::Result<ByteOrder> {
167         let this = self;
168         unsafe {
169             let mut result__: ByteOrder = ::std::mem::zeroed();
170             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<ByteOrder>(result__)
171         }
172     }
173     pub fn SetByteOrder(&self, value: ByteOrder) -> ::windows::runtime::Result<()> {
174         let this = self;
175         unsafe { (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), value).ok() }
176     }
177     pub fn InputStreamOptions(&self) -> ::windows::runtime::Result<InputStreamOptions> {
178         let this = self;
179         unsafe {
180             let mut result__: InputStreamOptions = ::std::mem::zeroed();
181             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), &mut result__).from_abi::<InputStreamOptions>(result__)
182         }
183     }
184     pub fn SetInputStreamOptions(&self, value: InputStreamOptions) -> ::windows::runtime::Result<()> {
185         let this = self;
186         unsafe { (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), value).ok() }
187     }
188     pub fn ReadByte(&self) -> ::windows::runtime::Result<u8> {
189         let this = self;
190         unsafe {
191             let mut result__: u8 = ::std::mem::zeroed();
192             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u8>(result__)
193         }
194     }
195     pub fn ReadBytes(&self, value: &mut [<u8 as ::windows::runtime::Abi>::DefaultType]) -> ::windows::runtime::Result<()> {
196         let this = self;
197         unsafe { (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), value.len() as u32, ::std::mem::transmute_copy(&value)).ok() }
198     }
199     pub fn ReadBuffer(&self, length: u32) -> ::windows::runtime::Result<IBuffer> {
200         let this = self;
201         unsafe {
202             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
203             (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), length, &mut result__).from_abi::<IBuffer>(result__)
204         }
205     }
206     pub fn ReadBoolean(&self) -> ::windows::runtime::Result<bool> {
207         let this = self;
208         unsafe {
209             let mut result__: bool = ::std::mem::zeroed();
210             (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
211         }
212     }
213     pub fn ReadGuid(&self) -> ::windows::runtime::Result<::windows::runtime::GUID> {
214         let this = self;
215         unsafe {
216             let mut result__: ::windows::runtime::GUID = ::std::mem::zeroed();
217             (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::GUID>(result__)
218         }
219     }
220     pub fn ReadInt16(&self) -> ::windows::runtime::Result<i16> {
221         let this = self;
222         unsafe {
223             let mut result__: i16 = ::std::mem::zeroed();
224             (::windows::runtime::Interface::vtable(this).18)(::std::mem::transmute_copy(this), &mut result__).from_abi::<i16>(result__)
225         }
226     }
227     pub fn ReadInt32(&self) -> ::windows::runtime::Result<i32> {
228         let this = self;
229         unsafe {
230             let mut result__: i32 = ::std::mem::zeroed();
231             (::windows::runtime::Interface::vtable(this).19)(::std::mem::transmute_copy(this), &mut result__).from_abi::<i32>(result__)
232         }
233     }
234     pub fn ReadInt64(&self) -> ::windows::runtime::Result<i64> {
235         let this = self;
236         unsafe {
237             let mut result__: i64 = ::std::mem::zeroed();
238             (::windows::runtime::Interface::vtable(this).20)(::std::mem::transmute_copy(this), &mut result__).from_abi::<i64>(result__)
239         }
240     }
241     pub fn ReadUInt16(&self) -> ::windows::runtime::Result<u16> {
242         let this = self;
243         unsafe {
244             let mut result__: u16 = ::std::mem::zeroed();
245             (::windows::runtime::Interface::vtable(this).21)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
246         }
247     }
248     pub fn ReadUInt32(&self) -> ::windows::runtime::Result<u32> {
249         let this = self;
250         unsafe {
251             let mut result__: u32 = ::std::mem::zeroed();
252             (::windows::runtime::Interface::vtable(this).22)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
253         }
254     }
255     pub fn ReadUInt64(&self) -> ::windows::runtime::Result<u64> {
256         let this = self;
257         unsafe {
258             let mut result__: u64 = ::std::mem::zeroed();
259             (::windows::runtime::Interface::vtable(this).23)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
260         }
261     }
262     pub fn ReadSingle(&self) -> ::windows::runtime::Result<f32> {
263         let this = self;
264         unsafe {
265             let mut result__: f32 = ::std::mem::zeroed();
266             (::windows::runtime::Interface::vtable(this).24)(::std::mem::transmute_copy(this), &mut result__).from_abi::<f32>(result__)
267         }
268     }
269     pub fn ReadDouble(&self) -> ::windows::runtime::Result<f64> {
270         let this = self;
271         unsafe {
272             let mut result__: f64 = ::std::mem::zeroed();
273             (::windows::runtime::Interface::vtable(this).25)(::std::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
274         }
275     }
276     pub fn ReadString(&self, codeunitcount: u32) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
277         let this = self;
278         unsafe {
279             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
280             (::windows::runtime::Interface::vtable(this).26)(::std::mem::transmute_copy(this), codeunitcount, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
281         }
282     }
283     #[cfg(feature = "Foundation")]
284     pub fn ReadDateTime(&self) -> ::windows::runtime::Result<super::super::Foundation::DateTime> {
285         let this = self;
286         unsafe {
287             let mut result__: super::super::Foundation::DateTime = ::std::mem::zeroed();
288             (::windows::runtime::Interface::vtable(this).27)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::DateTime>(result__)
289         }
290     }
291     #[cfg(feature = "Foundation")]
292     pub fn ReadTimeSpan(&self) -> ::windows::runtime::Result<super::super::Foundation::TimeSpan> {
293         let this = self;
294         unsafe {
295             let mut result__: super::super::Foundation::TimeSpan = ::std::mem::zeroed();
296             (::windows::runtime::Interface::vtable(this).28)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::TimeSpan>(result__)
297         }
298     }
299     #[cfg(feature = "Foundation")]
300     pub fn LoadAsync(&self, count: u32) -> ::windows::runtime::Result<DataReaderLoadOperation> {
301         let this = self;
302         unsafe {
303             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
304             (::windows::runtime::Interface::vtable(this).29)(::std::mem::transmute_copy(this), count, &mut result__).from_abi::<DataReaderLoadOperation>(result__)
305         }
306     }
307     pub fn DetachBuffer(&self) -> ::windows::runtime::Result<IBuffer> {
308         let this = self;
309         unsafe {
310             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
311             (::windows::runtime::Interface::vtable(this).30)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IBuffer>(result__)
312         }
313     }
314     pub fn DetachStream(&self) -> ::windows::runtime::Result<IInputStream> {
315         let this = self;
316         unsafe {
317             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
318             (::windows::runtime::Interface::vtable(this).31)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IInputStream>(result__)
319         }
320     }
321     #[cfg(feature = "Foundation")]
322     pub fn Close(&self) -> ::windows::runtime::Result<()> {
323         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
324         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
325     }
326     pub fn CreateDataReader<'a, Param0: ::windows::runtime::IntoParam<'a, IInputStream>>(inputstream: Param0) -> ::windows::runtime::Result<DataReader> {
327         Self::IDataReaderFactory(|this| unsafe {
328             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
329             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), inputstream.into_param().abi(), &mut result__).from_abi::<DataReader>(result__)
330         })
331     }
332     pub fn FromBuffer<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(buffer: Param0) -> ::windows::runtime::Result<DataReader> {
333         Self::IDataReaderStatics(|this| unsafe {
334             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
335             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<DataReader>(result__)
336         })
337     }
338     pub fn IDataReaderFactory<R, F: FnOnce(&IDataReaderFactory) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
339         static mut SHARED: ::windows::runtime::FactoryCache<DataReader, IDataReaderFactory> = ::windows::runtime::FactoryCache::new();
340         unsafe { SHARED.call(callback) }
341     }
342     pub fn IDataReaderStatics<R, F: FnOnce(&IDataReaderStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
343         static mut SHARED: ::windows::runtime::FactoryCache<DataReader, IDataReaderStatics> = ::windows::runtime::FactoryCache::new();
344         unsafe { SHARED.call(callback) }
345     }
346 }
347 unsafe impl ::windows::runtime::RuntimeType for DataReader {
348     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.DataReader;{e2b50029-b4c1-4314-a4b8-fb813a2f275e})");
349 }
350 unsafe impl ::windows::runtime::Interface for DataReader {
351     type Vtable = IDataReader_abi;
352     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3803512873, 46273, 17172, [164, 184, 251, 129, 58, 47, 39, 94]);
353 }
354 impl ::windows::runtime::RuntimeName for DataReader {
355     const NAME: &'static str = "Windows.Storage.Streams.DataReader";
356 }
357 impl ::std::convert::From<DataReader> for ::windows::runtime::IUnknown {
358     fn from(value: DataReader) -> Self {
359         unsafe { ::std::mem::transmute(value) }
360     }
361 }
362 impl ::std::convert::From<&DataReader> for ::windows::runtime::IUnknown {
363     fn from(value: &DataReader) -> Self {
364         ::std::convert::From::from(::std::clone::Clone::clone(value))
365     }
366 }
367 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for DataReader {
368     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
369         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
370     }
371 }
372 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &DataReader {
373     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
374         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
375     }
376 }
377 impl ::std::convert::From<DataReader> for ::windows::runtime::IInspectable {
378     fn from(value: DataReader) -> Self {
379         value.0
380     }
381 }
382 impl ::std::convert::From<&DataReader> for ::windows::runtime::IInspectable {
383     fn from(value: &DataReader) -> Self {
384         value.0.clone()
385     }
386 }
387 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for DataReader {
388     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
389         ::windows::runtime::Param::Owned(self.0)
390     }
391 }
392 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a DataReader {
393     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
394         ::windows::runtime::Param::Borrowed(&self.0)
395     }
396 }
397 impl ::std::convert::From<DataReader> for IDataReader {
398     fn from(value: DataReader) -> Self {
399         unsafe { ::std::mem::transmute(value) }
400     }
401 }
402 impl ::std::convert::From<&DataReader> for IDataReader {
403     fn from(value: &DataReader) -> Self {
404         ::std::convert::From::from(::std::clone::Clone::clone(value))
405     }
406 }
407 impl<'a> ::windows::runtime::IntoParam<'a, IDataReader> for DataReader {
408     fn into_param(self) -> ::windows::runtime::Param<'a, IDataReader> {
409         ::windows::runtime::Param::Owned(::std::convert::Into::<IDataReader>::into(self))
410     }
411 }
412 impl<'a> ::windows::runtime::IntoParam<'a, IDataReader> for &DataReader {
413     fn into_param(self) -> ::windows::runtime::Param<'a, IDataReader> {
414         ::windows::runtime::Param::Owned(::std::convert::Into::<IDataReader>::into(::std::clone::Clone::clone(self)))
415     }
416 }
417 #[cfg(feature = "Foundation")]
418 impl ::std::convert::TryFrom<DataReader> for super::super::Foundation::IClosable {
419     type Error = ::windows::runtime::Error;
420     fn try_from(value: DataReader) -> ::windows::runtime::Result<Self> {
421         ::std::convert::TryFrom::try_from(&value)
422     }
423 }
424 #[cfg(feature = "Foundation")]
425 impl ::std::convert::TryFrom<&DataReader> for super::super::Foundation::IClosable {
426     type Error = ::windows::runtime::Error;
427     fn try_from(value: &DataReader) -> ::windows::runtime::Result<Self> {
428         ::windows::runtime::Interface::cast(value)
429     }
430 }
431 #[cfg(feature = "Foundation")]
432 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for DataReader {
433     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
434         ::windows::runtime::IntoParam::into_param(&self)
435     }
436 }
437 #[cfg(feature = "Foundation")]
438 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &DataReader {
439     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
440         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
441     }
442 }
443 unsafe impl ::std::marker::Send for DataReader {}
444 unsafe impl ::std::marker::Sync for DataReader {}
445 #[cfg(feature = "Foundation")]
446 #[repr(transparent)]
447 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
448 pub struct DataReaderLoadOperation(::windows::runtime::IInspectable);
449 #[cfg(feature = "Foundation")]
450 impl DataReaderLoadOperation {
451     #[cfg(feature = "Foundation")]
452     pub fn SetCompleted<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::AsyncOperationCompletedHandler<u32>>>(&self, handler: Param0) -> ::windows::runtime::Result<()> {
453         let this = self;
454         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), handler.into_param().abi()).ok() }
455     }
456     #[cfg(feature = "Foundation")]
457     pub fn Completed(&self) -> ::windows::runtime::Result<super::super::Foundation::AsyncOperationCompletedHandler<u32>> {
458         let this = self;
459         unsafe {
460             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
461             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::AsyncOperationCompletedHandler<u32>>(result__)
462         }
463     }
464     #[cfg(feature = "Foundation")]
465     pub fn GetResults(&self) -> ::windows::runtime::Result<u32> {
466         let this = self;
467         unsafe {
468             let mut result__: u32 = ::std::mem::zeroed();
469             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
470         }
471     }
472     #[cfg(feature = "Foundation")]
473     pub fn Id(&self) -> ::windows::runtime::Result<u32> {
474         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
475         unsafe {
476             let mut result__: u32 = ::std::mem::zeroed();
477             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
478         }
479     }
480     #[cfg(feature = "Foundation")]
481     pub fn Status(&self) -> ::windows::runtime::Result<super::super::Foundation::AsyncStatus> {
482         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
483         unsafe {
484             let mut result__: super::super::Foundation::AsyncStatus = ::std::mem::zeroed();
485             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::AsyncStatus>(result__)
486         }
487     }
488     #[cfg(feature = "Foundation")]
489     pub fn ErrorCode(&self) -> ::windows::runtime::Result<::windows::runtime::HRESULT> {
490         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
491         unsafe {
492             let mut result__: ::windows::runtime::HRESULT = ::std::mem::zeroed();
493             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HRESULT>(result__)
494         }
495     }
496     #[cfg(feature = "Foundation")]
497     pub fn Cancel(&self) -> ::windows::runtime::Result<()> {
498         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
499         unsafe { (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this)).ok() }
500     }
501     #[cfg(feature = "Foundation")]
502     pub fn Close(&self) -> ::windows::runtime::Result<()> {
503         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
504         unsafe { (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this)).ok() }
505     }
506     pub fn get(&self) -> ::windows::runtime::Result<u32> {
507         if self.Status()? == super::super::Foundation::AsyncStatus::Started {
508             let (waiter, signaler) = ::windows::runtime::Waiter::new();
509             self.SetCompleted(super::super::Foundation::AsyncOperationCompletedHandler::new(move |_sender, _args| {
510                 unsafe {
511                     signaler.signal();
512                 }
513                 Ok(())
514             }))?;
515         }
516         self.GetResults()
517     }
518 }
519 #[cfg(feature = "Foundation")]
520 unsafe impl ::windows::runtime::RuntimeType for DataReaderLoadOperation {
521     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.DataReaderLoadOperation;pinterface({9fc2b0bb-e446-44e2-aa61-9cab8f636af2};u4))");
522 }
523 #[cfg(feature = "Foundation")]
524 unsafe impl ::windows::runtime::Interface for DataReaderLoadOperation {
525     type Vtable = super::super::Foundation::IAsyncOperation_abi<u32>;
526     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_signature(<super::super::Foundation::IAsyncOperation<u32> as ::windows::runtime::RuntimeType>::SIGNATURE);
527 }
528 #[cfg(feature = "Foundation")]
529 impl ::windows::runtime::RuntimeName for DataReaderLoadOperation {
530     const NAME: &'static str = "Windows.Storage.Streams.DataReaderLoadOperation";
531 }
532 impl ::std::future::Future for DataReaderLoadOperation {
533     type Output = ::windows::runtime::Result<u32>;
534     fn poll(self: ::std::pin::Pin<&mut Self>, context: &mut ::std::task::Context) -> ::std::task::Poll<Self::Output> {
535         if self.Status()? == super::super::Foundation::AsyncStatus::Started {
536             let waker = context.waker().clone();
537             let _ = self.SetCompleted(super::super::Foundation::AsyncOperationCompletedHandler::new(move |_sender, _args| {
538                 waker.wake_by_ref();
539                 Ok(())
540             }));
541             ::std::task::Poll::Pending
542         } else {
543             ::std::task::Poll::Ready(self.GetResults())
544         }
545     }
546 }
547 #[cfg(feature = "Foundation")]
548 impl ::std::convert::From<DataReaderLoadOperation> for ::windows::runtime::IUnknown {
549     fn from(value: DataReaderLoadOperation) -> Self {
550         unsafe { ::std::mem::transmute(value) }
551     }
552 }
553 #[cfg(feature = "Foundation")]
554 impl ::std::convert::From<&DataReaderLoadOperation> for ::windows::runtime::IUnknown {
555     fn from(value: &DataReaderLoadOperation) -> Self {
556         ::std::convert::From::from(::std::clone::Clone::clone(value))
557     }
558 }
559 #[cfg(feature = "Foundation")]
560 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for DataReaderLoadOperation {
561     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
562         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
563     }
564 }
565 #[cfg(feature = "Foundation")]
566 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &DataReaderLoadOperation {
567     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
568         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
569     }
570 }
571 #[cfg(feature = "Foundation")]
572 impl ::std::convert::From<DataReaderLoadOperation> for ::windows::runtime::IInspectable {
573     fn from(value: DataReaderLoadOperation) -> Self {
574         value.0
575     }
576 }
577 #[cfg(feature = "Foundation")]
578 impl ::std::convert::From<&DataReaderLoadOperation> for ::windows::runtime::IInspectable {
579     fn from(value: &DataReaderLoadOperation) -> Self {
580         value.0.clone()
581     }
582 }
583 #[cfg(feature = "Foundation")]
584 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for DataReaderLoadOperation {
585     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
586         ::windows::runtime::Param::Owned(self.0)
587     }
588 }
589 #[cfg(feature = "Foundation")]
590 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a DataReaderLoadOperation {
591     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
592         ::windows::runtime::Param::Borrowed(&self.0)
593     }
594 }
595 #[cfg(feature = "Foundation")]
596 impl ::std::convert::From<DataReaderLoadOperation> for super::super::Foundation::IAsyncOperation<u32> {
597     fn from(value: DataReaderLoadOperation) -> Self {
598         unsafe { ::std::mem::transmute(value) }
599     }
600 }
601 #[cfg(feature = "Foundation")]
602 impl ::std::convert::From<&DataReaderLoadOperation> for super::super::Foundation::IAsyncOperation<u32> {
603     fn from(value: &DataReaderLoadOperation) -> Self {
604         ::std::convert::From::from(::std::clone::Clone::clone(value))
605     }
606 }
607 #[cfg(feature = "Foundation")]
608 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IAsyncOperation<u32>> for DataReaderLoadOperation {
609     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IAsyncOperation<u32>> {
610         ::windows::runtime::Param::Owned(::std::convert::Into::<super::super::Foundation::IAsyncOperation<u32>>::into(self))
611     }
612 }
613 #[cfg(feature = "Foundation")]
614 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IAsyncOperation<u32>> for &DataReaderLoadOperation {
615     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IAsyncOperation<u32>> {
616         ::windows::runtime::Param::Owned(::std::convert::Into::<super::super::Foundation::IAsyncOperation<u32>>::into(::std::clone::Clone::clone(self)))
617     }
618 }
619 #[cfg(feature = "Foundation")]
620 impl ::std::convert::TryFrom<DataReaderLoadOperation> for super::super::Foundation::IAsyncInfo {
621     type Error = ::windows::runtime::Error;
622     fn try_from(value: DataReaderLoadOperation) -> ::windows::runtime::Result<Self> {
623         ::std::convert::TryFrom::try_from(&value)
624     }
625 }
626 #[cfg(feature = "Foundation")]
627 impl ::std::convert::TryFrom<&DataReaderLoadOperation> for super::super::Foundation::IAsyncInfo {
628     type Error = ::windows::runtime::Error;
629     fn try_from(value: &DataReaderLoadOperation) -> ::windows::runtime::Result<Self> {
630         ::windows::runtime::Interface::cast(value)
631     }
632 }
633 #[cfg(feature = "Foundation")]
634 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IAsyncInfo> for DataReaderLoadOperation {
635     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IAsyncInfo> {
636         ::windows::runtime::IntoParam::into_param(&self)
637     }
638 }
639 #[cfg(feature = "Foundation")]
640 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IAsyncInfo> for &DataReaderLoadOperation {
641     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IAsyncInfo> {
642         ::std::convert::TryInto::<super::super::Foundation::IAsyncInfo>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
643     }
644 }
645 #[cfg(feature = "Foundation")]
646 unsafe impl ::std::marker::Send for DataReaderLoadOperation {}
647 #[cfg(feature = "Foundation")]
648 unsafe impl ::std::marker::Sync for DataReaderLoadOperation {}
649 #[repr(transparent)]
650 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
651 pub struct DataWriter(::windows::runtime::IInspectable);
652 impl DataWriter {
653     pub fn new() -> ::windows::runtime::Result<Self> {
654         Self::IActivationFactory(|f| f.activate_instance::<Self>())
655     }
656     fn IActivationFactory<R, F: FnOnce(&::windows::runtime::IActivationFactory) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
657         static mut SHARED: ::windows::runtime::FactoryCache<DataWriter, ::windows::runtime::IActivationFactory> = ::windows::runtime::FactoryCache::new();
658         unsafe { SHARED.call(callback) }
659     }
660     pub fn UnstoredBufferLength(&self) -> ::windows::runtime::Result<u32> {
661         let this = self;
662         unsafe {
663             let mut result__: u32 = ::std::mem::zeroed();
664             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
665         }
666     }
667     pub fn UnicodeEncoding(&self) -> ::windows::runtime::Result<UnicodeEncoding> {
668         let this = self;
669         unsafe {
670             let mut result__: UnicodeEncoding = ::std::mem::zeroed();
671             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<UnicodeEncoding>(result__)
672         }
673     }
674     pub fn SetUnicodeEncoding(&self, value: UnicodeEncoding) -> ::windows::runtime::Result<()> {
675         let this = self;
676         unsafe { (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), value).ok() }
677     }
678     pub fn ByteOrder(&self) -> ::windows::runtime::Result<ByteOrder> {
679         let this = self;
680         unsafe {
681             let mut result__: ByteOrder = ::std::mem::zeroed();
682             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<ByteOrder>(result__)
683         }
684     }
685     pub fn SetByteOrder(&self, value: ByteOrder) -> ::windows::runtime::Result<()> {
686         let this = self;
687         unsafe { (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), value).ok() }
688     }
689     pub fn WriteByte(&self, value: u8) -> ::windows::runtime::Result<()> {
690         let this = self;
691         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), value).ok() }
692     }
693     pub fn WriteBytes(&self, value: &[<u8 as ::windows::runtime::Abi>::DefaultType]) -> ::windows::runtime::Result<()> {
694         let this = self;
695         unsafe { (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), value.len() as u32, ::std::mem::transmute(value.as_ptr())).ok() }
696     }
697     pub fn WriteBuffer<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<()> {
698         let this = self;
699         unsafe { (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), buffer.into_param().abi()).ok() }
700     }
701     pub fn WriteBufferRange<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, start: u32, count: u32) -> ::windows::runtime::Result<()> {
702         let this = self;
703         unsafe { (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), buffer.into_param().abi(), start, count).ok() }
704     }
705     pub fn WriteBoolean(&self, value: bool) -> ::windows::runtime::Result<()> {
706         let this = self;
707         unsafe { (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), value).ok() }
708     }
709     pub fn WriteGuid<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::GUID>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
710         let this = self;
711         unsafe { (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
712     }
713     pub fn WriteInt16(&self, value: i16) -> ::windows::runtime::Result<()> {
714         let this = self;
715         unsafe { (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this), value).ok() }
716     }
717     pub fn WriteInt32(&self, value: i32) -> ::windows::runtime::Result<()> {
718         let this = self;
719         unsafe { (::windows::runtime::Interface::vtable(this).18)(::std::mem::transmute_copy(this), value).ok() }
720     }
721     pub fn WriteInt64(&self, value: i64) -> ::windows::runtime::Result<()> {
722         let this = self;
723         unsafe { (::windows::runtime::Interface::vtable(this).19)(::std::mem::transmute_copy(this), value).ok() }
724     }
725     pub fn WriteUInt16(&self, value: u16) -> ::windows::runtime::Result<()> {
726         let this = self;
727         unsafe { (::windows::runtime::Interface::vtable(this).20)(::std::mem::transmute_copy(this), value).ok() }
728     }
729     pub fn WriteUInt32(&self, value: u32) -> ::windows::runtime::Result<()> {
730         let this = self;
731         unsafe { (::windows::runtime::Interface::vtable(this).21)(::std::mem::transmute_copy(this), value).ok() }
732     }
733     pub fn WriteUInt64(&self, value: u64) -> ::windows::runtime::Result<()> {
734         let this = self;
735         unsafe { (::windows::runtime::Interface::vtable(this).22)(::std::mem::transmute_copy(this), value).ok() }
736     }
737     pub fn WriteSingle(&self, value: f32) -> ::windows::runtime::Result<()> {
738         let this = self;
739         unsafe { (::windows::runtime::Interface::vtable(this).23)(::std::mem::transmute_copy(this), value).ok() }
740     }
741     pub fn WriteDouble(&self, value: f64) -> ::windows::runtime::Result<()> {
742         let this = self;
743         unsafe { (::windows::runtime::Interface::vtable(this).24)(::std::mem::transmute_copy(this), value).ok() }
744     }
745     #[cfg(feature = "Foundation")]
746     pub fn WriteDateTime<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::DateTime>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
747         let this = self;
748         unsafe { (::windows::runtime::Interface::vtable(this).25)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
749     }
750     #[cfg(feature = "Foundation")]
751     pub fn WriteTimeSpan<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TimeSpan>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
752         let this = self;
753         unsafe { (::windows::runtime::Interface::vtable(this).26)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
754     }
755     pub fn WriteString<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(&self, value: Param0) -> ::windows::runtime::Result<u32> {
756         let this = self;
757         unsafe {
758             let mut result__: u32 = ::std::mem::zeroed();
759             (::windows::runtime::Interface::vtable(this).27)(::std::mem::transmute_copy(this), value.into_param().abi(), &mut result__).from_abi::<u32>(result__)
760         }
761     }
762     pub fn MeasureString<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(&self, value: Param0) -> ::windows::runtime::Result<u32> {
763         let this = self;
764         unsafe {
765             let mut result__: u32 = ::std::mem::zeroed();
766             (::windows::runtime::Interface::vtable(this).28)(::std::mem::transmute_copy(this), value.into_param().abi(), &mut result__).from_abi::<u32>(result__)
767         }
768     }
769     #[cfg(feature = "Foundation")]
770     pub fn StoreAsync(&self) -> ::windows::runtime::Result<DataWriterStoreOperation> {
771         let this = self;
772         unsafe {
773             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
774             (::windows::runtime::Interface::vtable(this).29)(::std::mem::transmute_copy(this), &mut result__).from_abi::<DataWriterStoreOperation>(result__)
775         }
776     }
777     #[cfg(feature = "Foundation")]
778     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
779         let this = self;
780         unsafe {
781             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
782             (::windows::runtime::Interface::vtable(this).30)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
783         }
784     }
785     pub fn DetachBuffer(&self) -> ::windows::runtime::Result<IBuffer> {
786         let this = self;
787         unsafe {
788             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
789             (::windows::runtime::Interface::vtable(this).31)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IBuffer>(result__)
790         }
791     }
792     pub fn DetachStream(&self) -> ::windows::runtime::Result<IOutputStream> {
793         let this = self;
794         unsafe {
795             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
796             (::windows::runtime::Interface::vtable(this).32)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IOutputStream>(result__)
797         }
798     }
799     #[cfg(feature = "Foundation")]
800     pub fn Close(&self) -> ::windows::runtime::Result<()> {
801         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
802         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
803     }
804     pub fn CreateDataWriter<'a, Param0: ::windows::runtime::IntoParam<'a, IOutputStream>>(outputstream: Param0) -> ::windows::runtime::Result<DataWriter> {
805         Self::IDataWriterFactory(|this| unsafe {
806             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
807             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), outputstream.into_param().abi(), &mut result__).from_abi::<DataWriter>(result__)
808         })
809     }
810     pub fn IDataWriterFactory<R, F: FnOnce(&IDataWriterFactory) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
811         static mut SHARED: ::windows::runtime::FactoryCache<DataWriter, IDataWriterFactory> = ::windows::runtime::FactoryCache::new();
812         unsafe { SHARED.call(callback) }
813     }
814 }
815 unsafe impl ::windows::runtime::RuntimeType for DataWriter {
816     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.DataWriter;{64b89265-d341-4922-b38a-dd4af8808c4e})");
817 }
818 unsafe impl ::windows::runtime::Interface for DataWriter {
819     type Vtable = IDataWriter_abi;
820     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1689817701, 54081, 18722, [179, 138, 221, 74, 248, 128, 140, 78]);
821 }
822 impl ::windows::runtime::RuntimeName for DataWriter {
823     const NAME: &'static str = "Windows.Storage.Streams.DataWriter";
824 }
825 impl ::std::convert::From<DataWriter> for ::windows::runtime::IUnknown {
826     fn from(value: DataWriter) -> Self {
827         unsafe { ::std::mem::transmute(value) }
828     }
829 }
830 impl ::std::convert::From<&DataWriter> for ::windows::runtime::IUnknown {
831     fn from(value: &DataWriter) -> Self {
832         ::std::convert::From::from(::std::clone::Clone::clone(value))
833     }
834 }
835 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for DataWriter {
836     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
837         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
838     }
839 }
840 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &DataWriter {
841     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
842         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
843     }
844 }
845 impl ::std::convert::From<DataWriter> for ::windows::runtime::IInspectable {
846     fn from(value: DataWriter) -> Self {
847         value.0
848     }
849 }
850 impl ::std::convert::From<&DataWriter> for ::windows::runtime::IInspectable {
851     fn from(value: &DataWriter) -> Self {
852         value.0.clone()
853     }
854 }
855 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for DataWriter {
856     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
857         ::windows::runtime::Param::Owned(self.0)
858     }
859 }
860 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a DataWriter {
861     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
862         ::windows::runtime::Param::Borrowed(&self.0)
863     }
864 }
865 impl ::std::convert::From<DataWriter> for IDataWriter {
866     fn from(value: DataWriter) -> Self {
867         unsafe { ::std::mem::transmute(value) }
868     }
869 }
870 impl ::std::convert::From<&DataWriter> for IDataWriter {
871     fn from(value: &DataWriter) -> Self {
872         ::std::convert::From::from(::std::clone::Clone::clone(value))
873     }
874 }
875 impl<'a> ::windows::runtime::IntoParam<'a, IDataWriter> for DataWriter {
876     fn into_param(self) -> ::windows::runtime::Param<'a, IDataWriter> {
877         ::windows::runtime::Param::Owned(::std::convert::Into::<IDataWriter>::into(self))
878     }
879 }
880 impl<'a> ::windows::runtime::IntoParam<'a, IDataWriter> for &DataWriter {
881     fn into_param(self) -> ::windows::runtime::Param<'a, IDataWriter> {
882         ::windows::runtime::Param::Owned(::std::convert::Into::<IDataWriter>::into(::std::clone::Clone::clone(self)))
883     }
884 }
885 #[cfg(feature = "Foundation")]
886 impl ::std::convert::TryFrom<DataWriter> for super::super::Foundation::IClosable {
887     type Error = ::windows::runtime::Error;
888     fn try_from(value: DataWriter) -> ::windows::runtime::Result<Self> {
889         ::std::convert::TryFrom::try_from(&value)
890     }
891 }
892 #[cfg(feature = "Foundation")]
893 impl ::std::convert::TryFrom<&DataWriter> for super::super::Foundation::IClosable {
894     type Error = ::windows::runtime::Error;
895     fn try_from(value: &DataWriter) -> ::windows::runtime::Result<Self> {
896         ::windows::runtime::Interface::cast(value)
897     }
898 }
899 #[cfg(feature = "Foundation")]
900 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for DataWriter {
901     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
902         ::windows::runtime::IntoParam::into_param(&self)
903     }
904 }
905 #[cfg(feature = "Foundation")]
906 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &DataWriter {
907     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
908         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
909     }
910 }
911 unsafe impl ::std::marker::Send for DataWriter {}
912 unsafe impl ::std::marker::Sync for DataWriter {}
913 #[cfg(feature = "Foundation")]
914 #[repr(transparent)]
915 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
916 pub struct DataWriterStoreOperation(::windows::runtime::IInspectable);
917 #[cfg(feature = "Foundation")]
918 impl DataWriterStoreOperation {
919     #[cfg(feature = "Foundation")]
920     pub fn SetCompleted<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::AsyncOperationCompletedHandler<u32>>>(&self, handler: Param0) -> ::windows::runtime::Result<()> {
921         let this = self;
922         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), handler.into_param().abi()).ok() }
923     }
924     #[cfg(feature = "Foundation")]
925     pub fn Completed(&self) -> ::windows::runtime::Result<super::super::Foundation::AsyncOperationCompletedHandler<u32>> {
926         let this = self;
927         unsafe {
928             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
929             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::AsyncOperationCompletedHandler<u32>>(result__)
930         }
931     }
932     #[cfg(feature = "Foundation")]
933     pub fn GetResults(&self) -> ::windows::runtime::Result<u32> {
934         let this = self;
935         unsafe {
936             let mut result__: u32 = ::std::mem::zeroed();
937             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
938         }
939     }
940     #[cfg(feature = "Foundation")]
941     pub fn Id(&self) -> ::windows::runtime::Result<u32> {
942         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
943         unsafe {
944             let mut result__: u32 = ::std::mem::zeroed();
945             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
946         }
947     }
948     #[cfg(feature = "Foundation")]
949     pub fn Status(&self) -> ::windows::runtime::Result<super::super::Foundation::AsyncStatus> {
950         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
951         unsafe {
952             let mut result__: super::super::Foundation::AsyncStatus = ::std::mem::zeroed();
953             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::AsyncStatus>(result__)
954         }
955     }
956     #[cfg(feature = "Foundation")]
957     pub fn ErrorCode(&self) -> ::windows::runtime::Result<::windows::runtime::HRESULT> {
958         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
959         unsafe {
960             let mut result__: ::windows::runtime::HRESULT = ::std::mem::zeroed();
961             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HRESULT>(result__)
962         }
963     }
964     #[cfg(feature = "Foundation")]
965     pub fn Cancel(&self) -> ::windows::runtime::Result<()> {
966         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
967         unsafe { (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this)).ok() }
968     }
969     #[cfg(feature = "Foundation")]
970     pub fn Close(&self) -> ::windows::runtime::Result<()> {
971         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IAsyncInfo>(self)?;
972         unsafe { (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this)).ok() }
973     }
974     pub fn get(&self) -> ::windows::runtime::Result<u32> {
975         if self.Status()? == super::super::Foundation::AsyncStatus::Started {
976             let (waiter, signaler) = ::windows::runtime::Waiter::new();
977             self.SetCompleted(super::super::Foundation::AsyncOperationCompletedHandler::new(move |_sender, _args| {
978                 unsafe {
979                     signaler.signal();
980                 }
981                 Ok(())
982             }))?;
983         }
984         self.GetResults()
985     }
986 }
987 #[cfg(feature = "Foundation")]
988 unsafe impl ::windows::runtime::RuntimeType for DataWriterStoreOperation {
989     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.DataWriterStoreOperation;pinterface({9fc2b0bb-e446-44e2-aa61-9cab8f636af2};u4))");
990 }
991 #[cfg(feature = "Foundation")]
992 unsafe impl ::windows::runtime::Interface for DataWriterStoreOperation {
993     type Vtable = super::super::Foundation::IAsyncOperation_abi<u32>;
994     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_signature(<super::super::Foundation::IAsyncOperation<u32> as ::windows::runtime::RuntimeType>::SIGNATURE);
995 }
996 #[cfg(feature = "Foundation")]
997 impl ::windows::runtime::RuntimeName for DataWriterStoreOperation {
998     const NAME: &'static str = "Windows.Storage.Streams.DataWriterStoreOperation";
999 }
1000 impl ::std::future::Future for DataWriterStoreOperation {
1001     type Output = ::windows::runtime::Result<u32>;
1002     fn poll(self: ::std::pin::Pin<&mut Self>, context: &mut ::std::task::Context) -> ::std::task::Poll<Self::Output> {
1003         if self.Status()? == super::super::Foundation::AsyncStatus::Started {
1004             let waker = context.waker().clone();
1005             let _ = self.SetCompleted(super::super::Foundation::AsyncOperationCompletedHandler::new(move |_sender, _args| {
1006                 waker.wake_by_ref();
1007                 Ok(())
1008             }));
1009             ::std::task::Poll::Pending
1010         } else {
1011             ::std::task::Poll::Ready(self.GetResults())
1012         }
1013     }
1014 }
1015 #[cfg(feature = "Foundation")]
1016 impl ::std::convert::From<DataWriterStoreOperation> for ::windows::runtime::IUnknown {
1017     fn from(value: DataWriterStoreOperation) -> Self {
1018         unsafe { ::std::mem::transmute(value) }
1019     }
1020 }
1021 #[cfg(feature = "Foundation")]
1022 impl ::std::convert::From<&DataWriterStoreOperation> for ::windows::runtime::IUnknown {
1023     fn from(value: &DataWriterStoreOperation) -> Self {
1024         ::std::convert::From::from(::std::clone::Clone::clone(value))
1025     }
1026 }
1027 #[cfg(feature = "Foundation")]
1028 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for DataWriterStoreOperation {
1029     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1030         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1031     }
1032 }
1033 #[cfg(feature = "Foundation")]
1034 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &DataWriterStoreOperation {
1035     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1036         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1037     }
1038 }
1039 #[cfg(feature = "Foundation")]
1040 impl ::std::convert::From<DataWriterStoreOperation> for ::windows::runtime::IInspectable {
1041     fn from(value: DataWriterStoreOperation) -> Self {
1042         value.0
1043     }
1044 }
1045 #[cfg(feature = "Foundation")]
1046 impl ::std::convert::From<&DataWriterStoreOperation> for ::windows::runtime::IInspectable {
1047     fn from(value: &DataWriterStoreOperation) -> Self {
1048         value.0.clone()
1049     }
1050 }
1051 #[cfg(feature = "Foundation")]
1052 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for DataWriterStoreOperation {
1053     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1054         ::windows::runtime::Param::Owned(self.0)
1055     }
1056 }
1057 #[cfg(feature = "Foundation")]
1058 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a DataWriterStoreOperation {
1059     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1060         ::windows::runtime::Param::Borrowed(&self.0)
1061     }
1062 }
1063 #[cfg(feature = "Foundation")]
1064 impl ::std::convert::From<DataWriterStoreOperation> for super::super::Foundation::IAsyncOperation<u32> {
1065     fn from(value: DataWriterStoreOperation) -> Self {
1066         unsafe { ::std::mem::transmute(value) }
1067     }
1068 }
1069 #[cfg(feature = "Foundation")]
1070 impl ::std::convert::From<&DataWriterStoreOperation> for super::super::Foundation::IAsyncOperation<u32> {
1071     fn from(value: &DataWriterStoreOperation) -> Self {
1072         ::std::convert::From::from(::std::clone::Clone::clone(value))
1073     }
1074 }
1075 #[cfg(feature = "Foundation")]
1076 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IAsyncOperation<u32>> for DataWriterStoreOperation {
1077     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IAsyncOperation<u32>> {
1078         ::windows::runtime::Param::Owned(::std::convert::Into::<super::super::Foundation::IAsyncOperation<u32>>::into(self))
1079     }
1080 }
1081 #[cfg(feature = "Foundation")]
1082 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IAsyncOperation<u32>> for &DataWriterStoreOperation {
1083     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IAsyncOperation<u32>> {
1084         ::windows::runtime::Param::Owned(::std::convert::Into::<super::super::Foundation::IAsyncOperation<u32>>::into(::std::clone::Clone::clone(self)))
1085     }
1086 }
1087 #[cfg(feature = "Foundation")]
1088 impl ::std::convert::TryFrom<DataWriterStoreOperation> for super::super::Foundation::IAsyncInfo {
1089     type Error = ::windows::runtime::Error;
1090     fn try_from(value: DataWriterStoreOperation) -> ::windows::runtime::Result<Self> {
1091         ::std::convert::TryFrom::try_from(&value)
1092     }
1093 }
1094 #[cfg(feature = "Foundation")]
1095 impl ::std::convert::TryFrom<&DataWriterStoreOperation> for super::super::Foundation::IAsyncInfo {
1096     type Error = ::windows::runtime::Error;
1097     fn try_from(value: &DataWriterStoreOperation) -> ::windows::runtime::Result<Self> {
1098         ::windows::runtime::Interface::cast(value)
1099     }
1100 }
1101 #[cfg(feature = "Foundation")]
1102 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IAsyncInfo> for DataWriterStoreOperation {
1103     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IAsyncInfo> {
1104         ::windows::runtime::IntoParam::into_param(&self)
1105     }
1106 }
1107 #[cfg(feature = "Foundation")]
1108 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IAsyncInfo> for &DataWriterStoreOperation {
1109     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IAsyncInfo> {
1110         ::std::convert::TryInto::<super::super::Foundation::IAsyncInfo>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
1111     }
1112 }
1113 #[cfg(feature = "Foundation")]
1114 unsafe impl ::std::marker::Send for DataWriterStoreOperation {}
1115 #[cfg(feature = "Foundation")]
1116 unsafe impl ::std::marker::Sync for DataWriterStoreOperation {}
1117 #[repr(transparent)]
1118 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1119 pub struct FileInputStream(::windows::runtime::IInspectable);
1120 impl FileInputStream {
1121     #[cfg(feature = "Foundation")]
1122     pub fn ReadAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, count: u32, options: InputStreamOptions) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>> {
1123         let this = self;
1124         unsafe {
1125             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1126             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), count, options, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>>(result__)
1127         }
1128     }
1129     #[cfg(feature = "Foundation")]
1130     pub fn Close(&self) -> ::windows::runtime::Result<()> {
1131         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
1132         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
1133     }
1134 }
1135 unsafe impl ::windows::runtime::RuntimeType for FileInputStream {
1136     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.FileInputStream;{905a0fe2-bc53-11df-8c49-001e4fc686da})");
1137 }
1138 unsafe impl ::windows::runtime::Interface for FileInputStream {
1139     type Vtable = IInputStream_abi;
1140     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821410, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
1141 }
1142 impl ::windows::runtime::RuntimeName for FileInputStream {
1143     const NAME: &'static str = "Windows.Storage.Streams.FileInputStream";
1144 }
1145 impl ::std::convert::From<FileInputStream> for ::windows::runtime::IUnknown {
1146     fn from(value: FileInputStream) -> Self {
1147         unsafe { ::std::mem::transmute(value) }
1148     }
1149 }
1150 impl ::std::convert::From<&FileInputStream> for ::windows::runtime::IUnknown {
1151     fn from(value: &FileInputStream) -> Self {
1152         ::std::convert::From::from(::std::clone::Clone::clone(value))
1153     }
1154 }
1155 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for FileInputStream {
1156     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1157         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1158     }
1159 }
1160 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &FileInputStream {
1161     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1162         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1163     }
1164 }
1165 impl ::std::convert::From<FileInputStream> for ::windows::runtime::IInspectable {
1166     fn from(value: FileInputStream) -> Self {
1167         value.0
1168     }
1169 }
1170 impl ::std::convert::From<&FileInputStream> for ::windows::runtime::IInspectable {
1171     fn from(value: &FileInputStream) -> Self {
1172         value.0.clone()
1173     }
1174 }
1175 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for FileInputStream {
1176     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1177         ::windows::runtime::Param::Owned(self.0)
1178     }
1179 }
1180 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a FileInputStream {
1181     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1182         ::windows::runtime::Param::Borrowed(&self.0)
1183     }
1184 }
1185 impl ::std::convert::From<FileInputStream> for IInputStream {
1186     fn from(value: FileInputStream) -> Self {
1187         unsafe { ::std::mem::transmute(value) }
1188     }
1189 }
1190 impl ::std::convert::From<&FileInputStream> for IInputStream {
1191     fn from(value: &FileInputStream) -> Self {
1192         ::std::convert::From::from(::std::clone::Clone::clone(value))
1193     }
1194 }
1195 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for FileInputStream {
1196     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
1197         ::windows::runtime::Param::Owned(::std::convert::Into::<IInputStream>::into(self))
1198     }
1199 }
1200 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for &FileInputStream {
1201     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
1202         ::windows::runtime::Param::Owned(::std::convert::Into::<IInputStream>::into(::std::clone::Clone::clone(self)))
1203     }
1204 }
1205 #[cfg(feature = "Foundation")]
1206 impl ::std::convert::TryFrom<FileInputStream> for super::super::Foundation::IClosable {
1207     type Error = ::windows::runtime::Error;
1208     fn try_from(value: FileInputStream) -> ::windows::runtime::Result<Self> {
1209         ::std::convert::TryFrom::try_from(&value)
1210     }
1211 }
1212 #[cfg(feature = "Foundation")]
1213 impl ::std::convert::TryFrom<&FileInputStream> for super::super::Foundation::IClosable {
1214     type Error = ::windows::runtime::Error;
1215     fn try_from(value: &FileInputStream) -> ::windows::runtime::Result<Self> {
1216         ::windows::runtime::Interface::cast(value)
1217     }
1218 }
1219 #[cfg(feature = "Foundation")]
1220 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for FileInputStream {
1221     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1222         ::windows::runtime::IntoParam::into_param(&self)
1223     }
1224 }
1225 #[cfg(feature = "Foundation")]
1226 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &FileInputStream {
1227     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1228         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
1229     }
1230 }
1231 unsafe impl ::std::marker::Send for FileInputStream {}
1232 unsafe impl ::std::marker::Sync for FileInputStream {}
1233 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
1234 #[repr(transparent)]
1235 pub struct FileOpenDisposition(pub i32);
1236 impl FileOpenDisposition {
1237     pub const OpenExisting: FileOpenDisposition = FileOpenDisposition(0i32);
1238     pub const OpenAlways: FileOpenDisposition = FileOpenDisposition(1i32);
1239     pub const CreateNew: FileOpenDisposition = FileOpenDisposition(2i32);
1240     pub const CreateAlways: FileOpenDisposition = FileOpenDisposition(3i32);
1241     pub const TruncateExisting: FileOpenDisposition = FileOpenDisposition(4i32);
1242 }
1243 impl ::std::convert::From<i32> for FileOpenDisposition {
1244     fn from(value: i32) -> Self {
1245         Self(value)
1246     }
1247 }
1248 unsafe impl ::windows::runtime::Abi for FileOpenDisposition {
1249     type Abi = Self;
1250     type DefaultType = Self;
1251 }
1252 unsafe impl ::windows::runtime::RuntimeType for FileOpenDisposition {
1253     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Storage.Streams.FileOpenDisposition;i4)");
1254 }
1255 #[repr(transparent)]
1256 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1257 pub struct FileOutputStream(::windows::runtime::IInspectable);
1258 impl FileOutputStream {
1259     #[cfg(feature = "Foundation")]
1260     pub fn WriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>> {
1261         let this = self;
1262         unsafe {
1263             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1264             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>>(result__)
1265         }
1266     }
1267     #[cfg(feature = "Foundation")]
1268     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
1269         let this = self;
1270         unsafe {
1271             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1272             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
1273         }
1274     }
1275     #[cfg(feature = "Foundation")]
1276     pub fn Close(&self) -> ::windows::runtime::Result<()> {
1277         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
1278         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
1279     }
1280 }
1281 unsafe impl ::windows::runtime::RuntimeType for FileOutputStream {
1282     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.FileOutputStream;{905a0fe6-bc53-11df-8c49-001e4fc686da})");
1283 }
1284 unsafe impl ::windows::runtime::Interface for FileOutputStream {
1285     type Vtable = IOutputStream_abi;
1286     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821414, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
1287 }
1288 impl ::windows::runtime::RuntimeName for FileOutputStream {
1289     const NAME: &'static str = "Windows.Storage.Streams.FileOutputStream";
1290 }
1291 impl ::std::convert::From<FileOutputStream> for ::windows::runtime::IUnknown {
1292     fn from(value: FileOutputStream) -> Self {
1293         unsafe { ::std::mem::transmute(value) }
1294     }
1295 }
1296 impl ::std::convert::From<&FileOutputStream> for ::windows::runtime::IUnknown {
1297     fn from(value: &FileOutputStream) -> Self {
1298         ::std::convert::From::from(::std::clone::Clone::clone(value))
1299     }
1300 }
1301 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for FileOutputStream {
1302     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1303         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1304     }
1305 }
1306 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &FileOutputStream {
1307     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1308         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1309     }
1310 }
1311 impl ::std::convert::From<FileOutputStream> for ::windows::runtime::IInspectable {
1312     fn from(value: FileOutputStream) -> Self {
1313         value.0
1314     }
1315 }
1316 impl ::std::convert::From<&FileOutputStream> for ::windows::runtime::IInspectable {
1317     fn from(value: &FileOutputStream) -> Self {
1318         value.0.clone()
1319     }
1320 }
1321 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for FileOutputStream {
1322     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1323         ::windows::runtime::Param::Owned(self.0)
1324     }
1325 }
1326 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a FileOutputStream {
1327     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1328         ::windows::runtime::Param::Borrowed(&self.0)
1329     }
1330 }
1331 impl ::std::convert::From<FileOutputStream> for IOutputStream {
1332     fn from(value: FileOutputStream) -> Self {
1333         unsafe { ::std::mem::transmute(value) }
1334     }
1335 }
1336 impl ::std::convert::From<&FileOutputStream> for IOutputStream {
1337     fn from(value: &FileOutputStream) -> Self {
1338         ::std::convert::From::from(::std::clone::Clone::clone(value))
1339     }
1340 }
1341 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for FileOutputStream {
1342     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
1343         ::windows::runtime::Param::Owned(::std::convert::Into::<IOutputStream>::into(self))
1344     }
1345 }
1346 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for &FileOutputStream {
1347     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
1348         ::windows::runtime::Param::Owned(::std::convert::Into::<IOutputStream>::into(::std::clone::Clone::clone(self)))
1349     }
1350 }
1351 #[cfg(feature = "Foundation")]
1352 impl ::std::convert::TryFrom<FileOutputStream> for super::super::Foundation::IClosable {
1353     type Error = ::windows::runtime::Error;
1354     fn try_from(value: FileOutputStream) -> ::windows::runtime::Result<Self> {
1355         ::std::convert::TryFrom::try_from(&value)
1356     }
1357 }
1358 #[cfg(feature = "Foundation")]
1359 impl ::std::convert::TryFrom<&FileOutputStream> for super::super::Foundation::IClosable {
1360     type Error = ::windows::runtime::Error;
1361     fn try_from(value: &FileOutputStream) -> ::windows::runtime::Result<Self> {
1362         ::windows::runtime::Interface::cast(value)
1363     }
1364 }
1365 #[cfg(feature = "Foundation")]
1366 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for FileOutputStream {
1367     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1368         ::windows::runtime::IntoParam::into_param(&self)
1369     }
1370 }
1371 #[cfg(feature = "Foundation")]
1372 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &FileOutputStream {
1373     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1374         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
1375     }
1376 }
1377 unsafe impl ::std::marker::Send for FileOutputStream {}
1378 unsafe impl ::std::marker::Sync for FileOutputStream {}
1379 #[repr(transparent)]
1380 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1381 pub struct FileRandomAccessStream(::windows::runtime::IInspectable);
1382 impl FileRandomAccessStream {
1383     pub fn Size(&self) -> ::windows::runtime::Result<u64> {
1384         let this = self;
1385         unsafe {
1386             let mut result__: u64 = ::std::mem::zeroed();
1387             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
1388         }
1389     }
1390     pub fn SetSize(&self, value: u64) -> ::windows::runtime::Result<()> {
1391         let this = self;
1392         unsafe { (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), value).ok() }
1393     }
1394     pub fn GetInputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IInputStream> {
1395         let this = self;
1396         unsafe {
1397             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1398             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IInputStream>(result__)
1399         }
1400     }
1401     pub fn GetOutputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IOutputStream> {
1402         let this = self;
1403         unsafe {
1404             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1405             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IOutputStream>(result__)
1406         }
1407     }
1408     pub fn Position(&self) -> ::windows::runtime::Result<u64> {
1409         let this = self;
1410         unsafe {
1411             let mut result__: u64 = ::std::mem::zeroed();
1412             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
1413         }
1414     }
1415     pub fn Seek(&self, position: u64) -> ::windows::runtime::Result<()> {
1416         let this = self;
1417         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), position).ok() }
1418     }
1419     pub fn CloneStream(&self) -> ::windows::runtime::Result<IRandomAccessStream> {
1420         let this = self;
1421         unsafe {
1422             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1423             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IRandomAccessStream>(result__)
1424         }
1425     }
1426     pub fn CanRead(&self) -> ::windows::runtime::Result<bool> {
1427         let this = self;
1428         unsafe {
1429             let mut result__: bool = ::std::mem::zeroed();
1430             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
1431         }
1432     }
1433     pub fn CanWrite(&self) -> ::windows::runtime::Result<bool> {
1434         let this = self;
1435         unsafe {
1436             let mut result__: bool = ::std::mem::zeroed();
1437             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
1438         }
1439     }
1440     #[cfg(feature = "Foundation")]
1441     pub fn Close(&self) -> ::windows::runtime::Result<()> {
1442         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
1443         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
1444     }
1445     #[cfg(feature = "Foundation")]
1446     pub fn ReadAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, count: u32, options: InputStreamOptions) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>> {
1447         let this = &::windows::runtime::Interface::cast::<IInputStream>(self)?;
1448         unsafe {
1449             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1450             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), count, options, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>>(result__)
1451         }
1452     }
1453     #[cfg(feature = "Foundation")]
1454     pub fn WriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>> {
1455         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
1456         unsafe {
1457             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1458             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>>(result__)
1459         }
1460     }
1461     #[cfg(feature = "Foundation")]
1462     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
1463         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
1464         unsafe {
1465             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1466             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
1467         }
1468     }
1469     #[cfg(feature = "Foundation")]
1470     pub fn OpenAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(filepath: Param0, accessmode: super::FileAccessMode) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<IRandomAccessStream>> {
1471         Self::IFileRandomAccessStreamStatics(|this| unsafe {
1472             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1473             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), filepath.into_param().abi(), accessmode, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<IRandomAccessStream>>(result__)
1474         })
1475     }
1476     #[cfg(feature = "Foundation")]
1477     pub fn OpenWithOptionsAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(filepath: Param0, accessmode: super::FileAccessMode, sharingoptions: super::StorageOpenOptions, opendisposition: FileOpenDisposition) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<IRandomAccessStream>> {
1478         Self::IFileRandomAccessStreamStatics(|this| unsafe {
1479             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1480             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), filepath.into_param().abi(), accessmode, sharingoptions, opendisposition, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<IRandomAccessStream>>(result__)
1481         })
1482     }
1483     #[cfg(feature = "Foundation")]
1484     pub fn OpenTransactedWriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(filepath: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<super::StorageStreamTransaction>> {
1485         Self::IFileRandomAccessStreamStatics(|this| unsafe {
1486             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1487             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), filepath.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<super::StorageStreamTransaction>>(result__)
1488         })
1489     }
1490     #[cfg(feature = "Foundation")]
1491     pub fn OpenTransactedWriteWithOptionsAsync<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(filepath: Param0, openoptions: super::StorageOpenOptions, opendisposition: FileOpenDisposition) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<super::StorageStreamTransaction>> {
1492         Self::IFileRandomAccessStreamStatics(|this| unsafe {
1493             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1494             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), filepath.into_param().abi(), openoptions, opendisposition, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<super::StorageStreamTransaction>>(result__)
1495         })
1496     }
1497     #[cfg(all(feature = "Foundation", feature = "System"))]
1498     pub fn OpenForUserAsync<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::System::User>, Param1: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(user: Param0, filepath: Param1, accessmode: super::FileAccessMode) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<IRandomAccessStream>> {
1499         Self::IFileRandomAccessStreamStatics(|this| unsafe {
1500             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1501             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), user.into_param().abi(), filepath.into_param().abi(), accessmode, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<IRandomAccessStream>>(result__)
1502         })
1503     }
1504     #[cfg(all(feature = "Foundation", feature = "System"))]
1505     pub fn OpenForUserWithOptionsAsync<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::System::User>, Param1: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(user: Param0, filepath: Param1, accessmode: super::FileAccessMode, sharingoptions: super::StorageOpenOptions, opendisposition: FileOpenDisposition) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<IRandomAccessStream>> {
1506         Self::IFileRandomAccessStreamStatics(|this| unsafe {
1507             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1508             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), user.into_param().abi(), filepath.into_param().abi(), accessmode, sharingoptions, opendisposition, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<IRandomAccessStream>>(result__)
1509         })
1510     }
1511     #[cfg(all(feature = "Foundation", feature = "System"))]
1512     pub fn OpenTransactedWriteForUserAsync<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::System::User>, Param1: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(user: Param0, filepath: Param1) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<super::StorageStreamTransaction>> {
1513         Self::IFileRandomAccessStreamStatics(|this| unsafe {
1514             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1515             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), user.into_param().abi(), filepath.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<super::StorageStreamTransaction>>(result__)
1516         })
1517     }
1518     #[cfg(all(feature = "Foundation", feature = "System"))]
1519     pub fn OpenTransactedWriteForUserWithOptionsAsync<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::System::User>, Param1: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(user: Param0, filepath: Param1, openoptions: super::StorageOpenOptions, opendisposition: FileOpenDisposition) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<super::StorageStreamTransaction>> {
1520         Self::IFileRandomAccessStreamStatics(|this| unsafe {
1521             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1522             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), user.into_param().abi(), filepath.into_param().abi(), openoptions, opendisposition, &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<super::StorageStreamTransaction>>(result__)
1523         })
1524     }
1525     pub fn IFileRandomAccessStreamStatics<R, F: FnOnce(&IFileRandomAccessStreamStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
1526         static mut SHARED: ::windows::runtime::FactoryCache<FileRandomAccessStream, IFileRandomAccessStreamStatics> = ::windows::runtime::FactoryCache::new();
1527         unsafe { SHARED.call(callback) }
1528     }
1529 }
1530 unsafe impl ::windows::runtime::RuntimeType for FileRandomAccessStream {
1531     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.FileRandomAccessStream;{905a0fe1-bc53-11df-8c49-001e4fc686da})");
1532 }
1533 unsafe impl ::windows::runtime::Interface for FileRandomAccessStream {
1534     type Vtable = IRandomAccessStream_abi;
1535     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821409, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
1536 }
1537 impl ::windows::runtime::RuntimeName for FileRandomAccessStream {
1538     const NAME: &'static str = "Windows.Storage.Streams.FileRandomAccessStream";
1539 }
1540 impl ::std::convert::From<FileRandomAccessStream> for ::windows::runtime::IUnknown {
1541     fn from(value: FileRandomAccessStream) -> Self {
1542         unsafe { ::std::mem::transmute(value) }
1543     }
1544 }
1545 impl ::std::convert::From<&FileRandomAccessStream> for ::windows::runtime::IUnknown {
1546     fn from(value: &FileRandomAccessStream) -> Self {
1547         ::std::convert::From::from(::std::clone::Clone::clone(value))
1548     }
1549 }
1550 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for FileRandomAccessStream {
1551     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1552         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1553     }
1554 }
1555 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &FileRandomAccessStream {
1556     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1557         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1558     }
1559 }
1560 impl ::std::convert::From<FileRandomAccessStream> for ::windows::runtime::IInspectable {
1561     fn from(value: FileRandomAccessStream) -> Self {
1562         value.0
1563     }
1564 }
1565 impl ::std::convert::From<&FileRandomAccessStream> for ::windows::runtime::IInspectable {
1566     fn from(value: &FileRandomAccessStream) -> Self {
1567         value.0.clone()
1568     }
1569 }
1570 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for FileRandomAccessStream {
1571     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1572         ::windows::runtime::Param::Owned(self.0)
1573     }
1574 }
1575 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a FileRandomAccessStream {
1576     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1577         ::windows::runtime::Param::Borrowed(&self.0)
1578     }
1579 }
1580 impl ::std::convert::From<FileRandomAccessStream> for IRandomAccessStream {
1581     fn from(value: FileRandomAccessStream) -> Self {
1582         unsafe { ::std::mem::transmute(value) }
1583     }
1584 }
1585 impl ::std::convert::From<&FileRandomAccessStream> for IRandomAccessStream {
1586     fn from(value: &FileRandomAccessStream) -> Self {
1587         ::std::convert::From::from(::std::clone::Clone::clone(value))
1588     }
1589 }
1590 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStream> for FileRandomAccessStream {
1591     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStream> {
1592         ::windows::runtime::Param::Owned(::std::convert::Into::<IRandomAccessStream>::into(self))
1593     }
1594 }
1595 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStream> for &FileRandomAccessStream {
1596     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStream> {
1597         ::windows::runtime::Param::Owned(::std::convert::Into::<IRandomAccessStream>::into(::std::clone::Clone::clone(self)))
1598     }
1599 }
1600 #[cfg(feature = "Foundation")]
1601 impl ::std::convert::TryFrom<FileRandomAccessStream> for super::super::Foundation::IClosable {
1602     type Error = ::windows::runtime::Error;
1603     fn try_from(value: FileRandomAccessStream) -> ::windows::runtime::Result<Self> {
1604         ::std::convert::TryFrom::try_from(&value)
1605     }
1606 }
1607 #[cfg(feature = "Foundation")]
1608 impl ::std::convert::TryFrom<&FileRandomAccessStream> for super::super::Foundation::IClosable {
1609     type Error = ::windows::runtime::Error;
1610     fn try_from(value: &FileRandomAccessStream) -> ::windows::runtime::Result<Self> {
1611         ::windows::runtime::Interface::cast(value)
1612     }
1613 }
1614 #[cfg(feature = "Foundation")]
1615 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for FileRandomAccessStream {
1616     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1617         ::windows::runtime::IntoParam::into_param(&self)
1618     }
1619 }
1620 #[cfg(feature = "Foundation")]
1621 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &FileRandomAccessStream {
1622     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
1623         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
1624     }
1625 }
1626 impl ::std::convert::TryFrom<FileRandomAccessStream> for IInputStream {
1627     type Error = ::windows::runtime::Error;
1628     fn try_from(value: FileRandomAccessStream) -> ::windows::runtime::Result<Self> {
1629         ::std::convert::TryFrom::try_from(&value)
1630     }
1631 }
1632 impl ::std::convert::TryFrom<&FileRandomAccessStream> for IInputStream {
1633     type Error = ::windows::runtime::Error;
1634     fn try_from(value: &FileRandomAccessStream) -> ::windows::runtime::Result<Self> {
1635         ::windows::runtime::Interface::cast(value)
1636     }
1637 }
1638 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for FileRandomAccessStream {
1639     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
1640         ::windows::runtime::IntoParam::into_param(&self)
1641     }
1642 }
1643 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for &FileRandomAccessStream {
1644     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
1645         ::std::convert::TryInto::<IInputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
1646     }
1647 }
1648 impl ::std::convert::TryFrom<FileRandomAccessStream> for IOutputStream {
1649     type Error = ::windows::runtime::Error;
1650     fn try_from(value: FileRandomAccessStream) -> ::windows::runtime::Result<Self> {
1651         ::std::convert::TryFrom::try_from(&value)
1652     }
1653 }
1654 impl ::std::convert::TryFrom<&FileRandomAccessStream> for IOutputStream {
1655     type Error = ::windows::runtime::Error;
1656     fn try_from(value: &FileRandomAccessStream) -> ::windows::runtime::Result<Self> {
1657         ::windows::runtime::Interface::cast(value)
1658     }
1659 }
1660 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for FileRandomAccessStream {
1661     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
1662         ::windows::runtime::IntoParam::into_param(&self)
1663     }
1664 }
1665 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for &FileRandomAccessStream {
1666     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
1667         ::std::convert::TryInto::<IOutputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
1668     }
1669 }
1670 unsafe impl ::std::marker::Send for FileRandomAccessStream {}
1671 unsafe impl ::std::marker::Sync for FileRandomAccessStream {}
1672 #[repr(transparent)]
1673 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1674 pub struct IBuffer(::windows::runtime::IInspectable);
1675 unsafe impl ::windows::runtime::Interface for IBuffer {
1676     type Vtable = IBuffer_abi;
1677     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821408, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
1678 }
1679 impl IBuffer {
1680     pub fn Capacity(&self) -> ::windows::runtime::Result<u32> {
1681         let this = self;
1682         unsafe {
1683             let mut result__: u32 = ::std::mem::zeroed();
1684             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
1685         }
1686     }
1687     pub fn Length(&self) -> ::windows::runtime::Result<u32> {
1688         let this = self;
1689         unsafe {
1690             let mut result__: u32 = ::std::mem::zeroed();
1691             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
1692         }
1693     }
1694     pub fn SetLength(&self, value: u32) -> ::windows::runtime::Result<()> {
1695         let this = self;
1696         unsafe { (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), value).ok() }
1697     }
1698 }
1699 unsafe impl ::windows::runtime::RuntimeType for IBuffer {
1700     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{905a0fe0-bc53-11df-8c49-001e4fc686da}");
1701 }
1702 impl ::std::convert::From<IBuffer> for ::windows::runtime::IUnknown {
1703     fn from(value: IBuffer) -> Self {
1704         unsafe { ::std::mem::transmute(value) }
1705     }
1706 }
1707 impl ::std::convert::From<&IBuffer> for ::windows::runtime::IUnknown {
1708     fn from(value: &IBuffer) -> Self {
1709         ::std::convert::From::from(::std::clone::Clone::clone(value))
1710     }
1711 }
1712 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IBuffer {
1713     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1714         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1715     }
1716 }
1717 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IBuffer {
1718     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1719         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1720     }
1721 }
1722 impl ::std::convert::From<IBuffer> for ::windows::runtime::IInspectable {
1723     fn from(value: IBuffer) -> Self {
1724         value.0
1725     }
1726 }
1727 impl ::std::convert::From<&IBuffer> for ::windows::runtime::IInspectable {
1728     fn from(value: &IBuffer) -> Self {
1729         value.0.clone()
1730     }
1731 }
1732 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IBuffer {
1733     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1734         ::windows::runtime::Param::Owned(self.0)
1735     }
1736 }
1737 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IBuffer {
1738     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1739         ::windows::runtime::Param::Borrowed(&self.0)
1740     }
1741 }
1742 #[repr(C)]
1743 #[doc(hidden)]
1744 pub struct IBuffer_abi(
1745     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1746     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
1747     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
1748     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
1749     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1750     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
1751     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u32) -> ::windows::runtime::HRESULT,
1752     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u32) -> ::windows::runtime::HRESULT,
1753     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: u32) -> ::windows::runtime::HRESULT,
1754 );
1755 #[repr(transparent)]
1756 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1757 #[doc(hidden)]
1758 pub struct IBufferFactory(::windows::runtime::IInspectable);
1759 unsafe impl ::windows::runtime::Interface for IBufferFactory {
1760     type Vtable = IBufferFactory_abi;
1761     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1907331405, 49423, 18507, [188, 80, 20, 188, 98, 59, 58, 39]);
1762 }
1763 #[repr(C)]
1764 #[doc(hidden)]
1765 pub struct IBufferFactory_abi(
1766     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1767     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
1768     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
1769     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
1770     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1771     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
1772     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, capacity: u32, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1773 );
1774 #[repr(transparent)]
1775 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1776 #[doc(hidden)]
1777 pub struct IBufferStatics(::windows::runtime::IInspectable);
1778 unsafe impl ::windows::runtime::Interface for IBufferStatics {
1779     type Vtable = IBufferStatics_abi;
1780     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3909215835, 55062, 18266, [169, 10, 175, 114, 41, 177, 231, 65]);
1781 }
1782 #[repr(C)]
1783 #[doc(hidden)]
1784 pub struct IBufferStatics_abi(
1785     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1786     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
1787     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
1788     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
1789     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1790     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
1791     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, input: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1792     #[cfg(not(feature = "Foundation"))] usize,
1793     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, input: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1794     #[cfg(not(feature = "Foundation"))] usize,
1795 );
1796 #[repr(transparent)]
1797 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1798 pub struct IContentTypeProvider(::windows::runtime::IInspectable);
1799 unsafe impl ::windows::runtime::Interface for IContentTypeProvider {
1800     type Vtable = IContentTypeProvider_abi;
1801     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2547030181, 15257, 19945, [136, 165, 225, 29, 47, 80, 199, 149]);
1802 }
1803 impl IContentTypeProvider {
1804     pub fn ContentType(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
1805         let this = self;
1806         unsafe {
1807             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
1808             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
1809         }
1810     }
1811 }
1812 unsafe impl ::windows::runtime::RuntimeType for IContentTypeProvider {
1813     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{97d098a5-3b99-4de9-88a5-e11d2f50c795}");
1814 }
1815 impl ::std::convert::From<IContentTypeProvider> for ::windows::runtime::IUnknown {
1816     fn from(value: IContentTypeProvider) -> Self {
1817         unsafe { ::std::mem::transmute(value) }
1818     }
1819 }
1820 impl ::std::convert::From<&IContentTypeProvider> for ::windows::runtime::IUnknown {
1821     fn from(value: &IContentTypeProvider) -> Self {
1822         ::std::convert::From::from(::std::clone::Clone::clone(value))
1823     }
1824 }
1825 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IContentTypeProvider {
1826     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1827         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
1828     }
1829 }
1830 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IContentTypeProvider {
1831     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
1832         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
1833     }
1834 }
1835 impl ::std::convert::From<IContentTypeProvider> for ::windows::runtime::IInspectable {
1836     fn from(value: IContentTypeProvider) -> Self {
1837         value.0
1838     }
1839 }
1840 impl ::std::convert::From<&IContentTypeProvider> for ::windows::runtime::IInspectable {
1841     fn from(value: &IContentTypeProvider) -> Self {
1842         value.0.clone()
1843     }
1844 }
1845 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IContentTypeProvider {
1846     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1847         ::windows::runtime::Param::Owned(self.0)
1848     }
1849 }
1850 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IContentTypeProvider {
1851     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
1852         ::windows::runtime::Param::Borrowed(&self.0)
1853     }
1854 }
1855 #[repr(C)]
1856 #[doc(hidden)]
1857 pub struct IContentTypeProvider_abi(
1858     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1859     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
1860     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
1861     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
1862     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
1863     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
1864     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
1865 );
1866 #[repr(transparent)]
1867 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
1868 pub struct IDataReader(::windows::runtime::IInspectable);
1869 unsafe impl ::windows::runtime::Interface for IDataReader {
1870     type Vtable = IDataReader_abi;
1871     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3803512873, 46273, 17172, [164, 184, 251, 129, 58, 47, 39, 94]);
1872 }
1873 impl IDataReader {
1874     pub fn UnconsumedBufferLength(&self) -> ::windows::runtime::Result<u32> {
1875         let this = self;
1876         unsafe {
1877             let mut result__: u32 = ::std::mem::zeroed();
1878             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
1879         }
1880     }
1881     pub fn UnicodeEncoding(&self) -> ::windows::runtime::Result<UnicodeEncoding> {
1882         let this = self;
1883         unsafe {
1884             let mut result__: UnicodeEncoding = ::std::mem::zeroed();
1885             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<UnicodeEncoding>(result__)
1886         }
1887     }
1888     pub fn SetUnicodeEncoding(&self, value: UnicodeEncoding) -> ::windows::runtime::Result<()> {
1889         let this = self;
1890         unsafe { (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), value).ok() }
1891     }
1892     pub fn ByteOrder(&self) -> ::windows::runtime::Result<ByteOrder> {
1893         let this = self;
1894         unsafe {
1895             let mut result__: ByteOrder = ::std::mem::zeroed();
1896             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<ByteOrder>(result__)
1897         }
1898     }
1899     pub fn SetByteOrder(&self, value: ByteOrder) -> ::windows::runtime::Result<()> {
1900         let this = self;
1901         unsafe { (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), value).ok() }
1902     }
1903     pub fn InputStreamOptions(&self) -> ::windows::runtime::Result<InputStreamOptions> {
1904         let this = self;
1905         unsafe {
1906             let mut result__: InputStreamOptions = ::std::mem::zeroed();
1907             (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), &mut result__).from_abi::<InputStreamOptions>(result__)
1908         }
1909     }
1910     pub fn SetInputStreamOptions(&self, value: InputStreamOptions) -> ::windows::runtime::Result<()> {
1911         let this = self;
1912         unsafe { (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), value).ok() }
1913     }
1914     pub fn ReadByte(&self) -> ::windows::runtime::Result<u8> {
1915         let this = self;
1916         unsafe {
1917             let mut result__: u8 = ::std::mem::zeroed();
1918             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u8>(result__)
1919         }
1920     }
1921     pub fn ReadBytes(&self, value: &mut [<u8 as ::windows::runtime::Abi>::DefaultType]) -> ::windows::runtime::Result<()> {
1922         let this = self;
1923         unsafe { (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), value.len() as u32, ::std::mem::transmute_copy(&value)).ok() }
1924     }
1925     pub fn ReadBuffer(&self, length: u32) -> ::windows::runtime::Result<IBuffer> {
1926         let this = self;
1927         unsafe {
1928             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
1929             (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), length, &mut result__).from_abi::<IBuffer>(result__)
1930         }
1931     }
1932     pub fn ReadBoolean(&self) -> ::windows::runtime::Result<bool> {
1933         let this = self;
1934         unsafe {
1935             let mut result__: bool = ::std::mem::zeroed();
1936             (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
1937         }
1938     }
1939     pub fn ReadGuid(&self) -> ::windows::runtime::Result<::windows::runtime::GUID> {
1940         let this = self;
1941         unsafe {
1942             let mut result__: ::windows::runtime::GUID = ::std::mem::zeroed();
1943             (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::GUID>(result__)
1944         }
1945     }
1946     pub fn ReadInt16(&self) -> ::windows::runtime::Result<i16> {
1947         let this = self;
1948         unsafe {
1949             let mut result__: i16 = ::std::mem::zeroed();
1950             (::windows::runtime::Interface::vtable(this).18)(::std::mem::transmute_copy(this), &mut result__).from_abi::<i16>(result__)
1951         }
1952     }
1953     pub fn ReadInt32(&self) -> ::windows::runtime::Result<i32> {
1954         let this = self;
1955         unsafe {
1956             let mut result__: i32 = ::std::mem::zeroed();
1957             (::windows::runtime::Interface::vtable(this).19)(::std::mem::transmute_copy(this), &mut result__).from_abi::<i32>(result__)
1958         }
1959     }
1960     pub fn ReadInt64(&self) -> ::windows::runtime::Result<i64> {
1961         let this = self;
1962         unsafe {
1963             let mut result__: i64 = ::std::mem::zeroed();
1964             (::windows::runtime::Interface::vtable(this).20)(::std::mem::transmute_copy(this), &mut result__).from_abi::<i64>(result__)
1965         }
1966     }
1967     pub fn ReadUInt16(&self) -> ::windows::runtime::Result<u16> {
1968         let this = self;
1969         unsafe {
1970             let mut result__: u16 = ::std::mem::zeroed();
1971             (::windows::runtime::Interface::vtable(this).21)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u16>(result__)
1972         }
1973     }
1974     pub fn ReadUInt32(&self) -> ::windows::runtime::Result<u32> {
1975         let this = self;
1976         unsafe {
1977             let mut result__: u32 = ::std::mem::zeroed();
1978             (::windows::runtime::Interface::vtable(this).22)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
1979         }
1980     }
1981     pub fn ReadUInt64(&self) -> ::windows::runtime::Result<u64> {
1982         let this = self;
1983         unsafe {
1984             let mut result__: u64 = ::std::mem::zeroed();
1985             (::windows::runtime::Interface::vtable(this).23)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
1986         }
1987     }
1988     pub fn ReadSingle(&self) -> ::windows::runtime::Result<f32> {
1989         let this = self;
1990         unsafe {
1991             let mut result__: f32 = ::std::mem::zeroed();
1992             (::windows::runtime::Interface::vtable(this).24)(::std::mem::transmute_copy(this), &mut result__).from_abi::<f32>(result__)
1993         }
1994     }
1995     pub fn ReadDouble(&self) -> ::windows::runtime::Result<f64> {
1996         let this = self;
1997         unsafe {
1998             let mut result__: f64 = ::std::mem::zeroed();
1999             (::windows::runtime::Interface::vtable(this).25)(::std::mem::transmute_copy(this), &mut result__).from_abi::<f64>(result__)
2000         }
2001     }
2002     pub fn ReadString(&self, codeunitcount: u32) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
2003         let this = self;
2004         unsafe {
2005             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
2006             (::windows::runtime::Interface::vtable(this).26)(::std::mem::transmute_copy(this), codeunitcount, &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
2007         }
2008     }
2009     #[cfg(feature = "Foundation")]
2010     pub fn ReadDateTime(&self) -> ::windows::runtime::Result<super::super::Foundation::DateTime> {
2011         let this = self;
2012         unsafe {
2013             let mut result__: super::super::Foundation::DateTime = ::std::mem::zeroed();
2014             (::windows::runtime::Interface::vtable(this).27)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::DateTime>(result__)
2015         }
2016     }
2017     #[cfg(feature = "Foundation")]
2018     pub fn ReadTimeSpan(&self) -> ::windows::runtime::Result<super::super::Foundation::TimeSpan> {
2019         let this = self;
2020         unsafe {
2021             let mut result__: super::super::Foundation::TimeSpan = ::std::mem::zeroed();
2022             (::windows::runtime::Interface::vtable(this).28)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::TimeSpan>(result__)
2023         }
2024     }
2025     #[cfg(feature = "Foundation")]
2026     pub fn LoadAsync(&self, count: u32) -> ::windows::runtime::Result<DataReaderLoadOperation> {
2027         let this = self;
2028         unsafe {
2029             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2030             (::windows::runtime::Interface::vtable(this).29)(::std::mem::transmute_copy(this), count, &mut result__).from_abi::<DataReaderLoadOperation>(result__)
2031         }
2032     }
2033     pub fn DetachBuffer(&self) -> ::windows::runtime::Result<IBuffer> {
2034         let this = self;
2035         unsafe {
2036             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2037             (::windows::runtime::Interface::vtable(this).30)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IBuffer>(result__)
2038         }
2039     }
2040     pub fn DetachStream(&self) -> ::windows::runtime::Result<IInputStream> {
2041         let this = self;
2042         unsafe {
2043             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2044             (::windows::runtime::Interface::vtable(this).31)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IInputStream>(result__)
2045         }
2046     }
2047 }
2048 unsafe impl ::windows::runtime::RuntimeType for IDataReader {
2049     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{e2b50029-b4c1-4314-a4b8-fb813a2f275e}");
2050 }
2051 impl ::std::convert::From<IDataReader> for ::windows::runtime::IUnknown {
2052     fn from(value: IDataReader) -> Self {
2053         unsafe { ::std::mem::transmute(value) }
2054     }
2055 }
2056 impl ::std::convert::From<&IDataReader> for ::windows::runtime::IUnknown {
2057     fn from(value: &IDataReader) -> Self {
2058         ::std::convert::From::from(::std::clone::Clone::clone(value))
2059     }
2060 }
2061 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IDataReader {
2062     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2063         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
2064     }
2065 }
2066 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IDataReader {
2067     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2068         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
2069     }
2070 }
2071 impl ::std::convert::From<IDataReader> for ::windows::runtime::IInspectable {
2072     fn from(value: IDataReader) -> Self {
2073         value.0
2074     }
2075 }
2076 impl ::std::convert::From<&IDataReader> for ::windows::runtime::IInspectable {
2077     fn from(value: &IDataReader) -> Self {
2078         value.0.clone()
2079     }
2080 }
2081 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IDataReader {
2082     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2083         ::windows::runtime::Param::Owned(self.0)
2084     }
2085 }
2086 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IDataReader {
2087     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2088         ::windows::runtime::Param::Borrowed(&self.0)
2089     }
2090 }
2091 #[repr(C)]
2092 #[doc(hidden)]
2093 pub struct IDataReader_abi(
2094     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2095     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2096     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2097     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2098     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2099     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2100     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u32) -> ::windows::runtime::HRESULT,
2101     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut UnicodeEncoding) -> ::windows::runtime::HRESULT,
2102     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: UnicodeEncoding) -> ::windows::runtime::HRESULT,
2103     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ByteOrder) -> ::windows::runtime::HRESULT,
2104     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ByteOrder) -> ::windows::runtime::HRESULT,
2105     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut InputStreamOptions) -> ::windows::runtime::HRESULT,
2106     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: InputStreamOptions) -> ::windows::runtime::HRESULT,
2107     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u8) -> ::windows::runtime::HRESULT,
2108     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value_array_size: u32, value: *mut u8) -> ::windows::runtime::HRESULT,
2109     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, length: u32, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2110     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
2111     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2112     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut i16) -> ::windows::runtime::HRESULT,
2113     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut i32) -> ::windows::runtime::HRESULT,
2114     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut i64) -> ::windows::runtime::HRESULT,
2115     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u16) -> ::windows::runtime::HRESULT,
2116     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u32) -> ::windows::runtime::HRESULT,
2117     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u64) -> ::windows::runtime::HRESULT,
2118     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut f32) -> ::windows::runtime::HRESULT,
2119     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut f64) -> ::windows::runtime::HRESULT,
2120     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, codeunitcount: u32, result__: *mut ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>) -> ::windows::runtime::HRESULT,
2121     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::DateTime) -> ::windows::runtime::HRESULT,
2122     #[cfg(not(feature = "Foundation"))] usize,
2123     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut super::super::Foundation::TimeSpan) -> ::windows::runtime::HRESULT,
2124     #[cfg(not(feature = "Foundation"))] usize,
2125     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: u32, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2126     #[cfg(not(feature = "Foundation"))] usize,
2127     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2128     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2129 );
2130 #[repr(transparent)]
2131 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2132 #[doc(hidden)]
2133 pub struct IDataReaderFactory(::windows::runtime::IInspectable);
2134 unsafe impl ::windows::runtime::Interface for IDataReaderFactory {
2135     type Vtable = IDataReaderFactory_abi;
2136     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3612506183, 22490, 19989, [145, 76, 6, 128, 102, 153, 160, 152]);
2137 }
2138 #[repr(C)]
2139 #[doc(hidden)]
2140 pub struct IDataReaderFactory_abi(
2141     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2142     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2143     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2144     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2145     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2146     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2147     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, inputstream: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2148 );
2149 #[repr(transparent)]
2150 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2151 #[doc(hidden)]
2152 pub struct IDataReaderStatics(::windows::runtime::IInspectable);
2153 unsafe impl ::windows::runtime::Interface for IDataReaderStatics {
2154     type Vtable = IDataReaderStatics_abi;
2155     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(301776840, 63802, 18203, [177, 33, 243, 121, 227, 73, 49, 60]);
2156 }
2157 #[repr(C)]
2158 #[doc(hidden)]
2159 pub struct IDataReaderStatics_abi(
2160     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2161     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2162     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2163     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2164     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2165     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2166     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, buffer: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2167 );
2168 #[repr(transparent)]
2169 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2170 pub struct IDataWriter(::windows::runtime::IInspectable);
2171 unsafe impl ::windows::runtime::Interface for IDataWriter {
2172     type Vtable = IDataWriter_abi;
2173     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1689817701, 54081, 18722, [179, 138, 221, 74, 248, 128, 140, 78]);
2174 }
2175 impl IDataWriter {
2176     pub fn UnstoredBufferLength(&self) -> ::windows::runtime::Result<u32> {
2177         let this = self;
2178         unsafe {
2179             let mut result__: u32 = ::std::mem::zeroed();
2180             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u32>(result__)
2181         }
2182     }
2183     pub fn UnicodeEncoding(&self) -> ::windows::runtime::Result<UnicodeEncoding> {
2184         let this = self;
2185         unsafe {
2186             let mut result__: UnicodeEncoding = ::std::mem::zeroed();
2187             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<UnicodeEncoding>(result__)
2188         }
2189     }
2190     pub fn SetUnicodeEncoding(&self, value: UnicodeEncoding) -> ::windows::runtime::Result<()> {
2191         let this = self;
2192         unsafe { (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), value).ok() }
2193     }
2194     pub fn ByteOrder(&self) -> ::windows::runtime::Result<ByteOrder> {
2195         let this = self;
2196         unsafe {
2197             let mut result__: ByteOrder = ::std::mem::zeroed();
2198             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), &mut result__).from_abi::<ByteOrder>(result__)
2199         }
2200     }
2201     pub fn SetByteOrder(&self, value: ByteOrder) -> ::windows::runtime::Result<()> {
2202         let this = self;
2203         unsafe { (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), value).ok() }
2204     }
2205     pub fn WriteByte(&self, value: u8) -> ::windows::runtime::Result<()> {
2206         let this = self;
2207         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), value).ok() }
2208     }
2209     pub fn WriteBytes(&self, value: &[<u8 as ::windows::runtime::Abi>::DefaultType]) -> ::windows::runtime::Result<()> {
2210         let this = self;
2211         unsafe { (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), value.len() as u32, ::std::mem::transmute(value.as_ptr())).ok() }
2212     }
2213     pub fn WriteBuffer<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<()> {
2214         let this = self;
2215         unsafe { (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), buffer.into_param().abi()).ok() }
2216     }
2217     pub fn WriteBufferRange<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, start: u32, count: u32) -> ::windows::runtime::Result<()> {
2218         let this = self;
2219         unsafe { (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), buffer.into_param().abi(), start, count).ok() }
2220     }
2221     pub fn WriteBoolean(&self, value: bool) -> ::windows::runtime::Result<()> {
2222         let this = self;
2223         unsafe { (::windows::runtime::Interface::vtable(this).15)(::std::mem::transmute_copy(this), value).ok() }
2224     }
2225     pub fn WriteGuid<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::GUID>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
2226         let this = self;
2227         unsafe { (::windows::runtime::Interface::vtable(this).16)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
2228     }
2229     pub fn WriteInt16(&self, value: i16) -> ::windows::runtime::Result<()> {
2230         let this = self;
2231         unsafe { (::windows::runtime::Interface::vtable(this).17)(::std::mem::transmute_copy(this), value).ok() }
2232     }
2233     pub fn WriteInt32(&self, value: i32) -> ::windows::runtime::Result<()> {
2234         let this = self;
2235         unsafe { (::windows::runtime::Interface::vtable(this).18)(::std::mem::transmute_copy(this), value).ok() }
2236     }
2237     pub fn WriteInt64(&self, value: i64) -> ::windows::runtime::Result<()> {
2238         let this = self;
2239         unsafe { (::windows::runtime::Interface::vtable(this).19)(::std::mem::transmute_copy(this), value).ok() }
2240     }
2241     pub fn WriteUInt16(&self, value: u16) -> ::windows::runtime::Result<()> {
2242         let this = self;
2243         unsafe { (::windows::runtime::Interface::vtable(this).20)(::std::mem::transmute_copy(this), value).ok() }
2244     }
2245     pub fn WriteUInt32(&self, value: u32) -> ::windows::runtime::Result<()> {
2246         let this = self;
2247         unsafe { (::windows::runtime::Interface::vtable(this).21)(::std::mem::transmute_copy(this), value).ok() }
2248     }
2249     pub fn WriteUInt64(&self, value: u64) -> ::windows::runtime::Result<()> {
2250         let this = self;
2251         unsafe { (::windows::runtime::Interface::vtable(this).22)(::std::mem::transmute_copy(this), value).ok() }
2252     }
2253     pub fn WriteSingle(&self, value: f32) -> ::windows::runtime::Result<()> {
2254         let this = self;
2255         unsafe { (::windows::runtime::Interface::vtable(this).23)(::std::mem::transmute_copy(this), value).ok() }
2256     }
2257     pub fn WriteDouble(&self, value: f64) -> ::windows::runtime::Result<()> {
2258         let this = self;
2259         unsafe { (::windows::runtime::Interface::vtable(this).24)(::std::mem::transmute_copy(this), value).ok() }
2260     }
2261     #[cfg(feature = "Foundation")]
2262     pub fn WriteDateTime<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::DateTime>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
2263         let this = self;
2264         unsafe { (::windows::runtime::Interface::vtable(this).25)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
2265     }
2266     #[cfg(feature = "Foundation")]
2267     pub fn WriteTimeSpan<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::TimeSpan>>(&self, value: Param0) -> ::windows::runtime::Result<()> {
2268         let this = self;
2269         unsafe { (::windows::runtime::Interface::vtable(this).26)(::std::mem::transmute_copy(this), value.into_param().abi()).ok() }
2270     }
2271     pub fn WriteString<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(&self, value: Param0) -> ::windows::runtime::Result<u32> {
2272         let this = self;
2273         unsafe {
2274             let mut result__: u32 = ::std::mem::zeroed();
2275             (::windows::runtime::Interface::vtable(this).27)(::std::mem::transmute_copy(this), value.into_param().abi(), &mut result__).from_abi::<u32>(result__)
2276         }
2277     }
2278     pub fn MeasureString<'a, Param0: ::windows::runtime::IntoParam<'a, ::windows::runtime::HSTRING>>(&self, value: Param0) -> ::windows::runtime::Result<u32> {
2279         let this = self;
2280         unsafe {
2281             let mut result__: u32 = ::std::mem::zeroed();
2282             (::windows::runtime::Interface::vtable(this).28)(::std::mem::transmute_copy(this), value.into_param().abi(), &mut result__).from_abi::<u32>(result__)
2283         }
2284     }
2285     #[cfg(feature = "Foundation")]
2286     pub fn StoreAsync(&self) -> ::windows::runtime::Result<DataWriterStoreOperation> {
2287         let this = self;
2288         unsafe {
2289             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2290             (::windows::runtime::Interface::vtable(this).29)(::std::mem::transmute_copy(this), &mut result__).from_abi::<DataWriterStoreOperation>(result__)
2291         }
2292     }
2293     #[cfg(feature = "Foundation")]
2294     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
2295         let this = self;
2296         unsafe {
2297             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2298             (::windows::runtime::Interface::vtable(this).30)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
2299         }
2300     }
2301     pub fn DetachBuffer(&self) -> ::windows::runtime::Result<IBuffer> {
2302         let this = self;
2303         unsafe {
2304             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2305             (::windows::runtime::Interface::vtable(this).31)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IBuffer>(result__)
2306         }
2307     }
2308     pub fn DetachStream(&self) -> ::windows::runtime::Result<IOutputStream> {
2309         let this = self;
2310         unsafe {
2311             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2312             (::windows::runtime::Interface::vtable(this).32)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IOutputStream>(result__)
2313         }
2314     }
2315 }
2316 unsafe impl ::windows::runtime::RuntimeType for IDataWriter {
2317     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{64b89265-d341-4922-b38a-dd4af8808c4e}");
2318 }
2319 impl ::std::convert::From<IDataWriter> for ::windows::runtime::IUnknown {
2320     fn from(value: IDataWriter) -> Self {
2321         unsafe { ::std::mem::transmute(value) }
2322     }
2323 }
2324 impl ::std::convert::From<&IDataWriter> for ::windows::runtime::IUnknown {
2325     fn from(value: &IDataWriter) -> Self {
2326         ::std::convert::From::from(::std::clone::Clone::clone(value))
2327     }
2328 }
2329 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IDataWriter {
2330     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2331         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
2332     }
2333 }
2334 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IDataWriter {
2335     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2336         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
2337     }
2338 }
2339 impl ::std::convert::From<IDataWriter> for ::windows::runtime::IInspectable {
2340     fn from(value: IDataWriter) -> Self {
2341         value.0
2342     }
2343 }
2344 impl ::std::convert::From<&IDataWriter> for ::windows::runtime::IInspectable {
2345     fn from(value: &IDataWriter) -> Self {
2346         value.0.clone()
2347     }
2348 }
2349 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IDataWriter {
2350     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2351         ::windows::runtime::Param::Owned(self.0)
2352     }
2353 }
2354 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IDataWriter {
2355     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2356         ::windows::runtime::Param::Borrowed(&self.0)
2357     }
2358 }
2359 #[repr(C)]
2360 #[doc(hidden)]
2361 pub struct IDataWriter_abi(
2362     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2363     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2364     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2365     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2366     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2367     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2368     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u32) -> ::windows::runtime::HRESULT,
2369     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut UnicodeEncoding) -> ::windows::runtime::HRESULT,
2370     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: UnicodeEncoding) -> ::windows::runtime::HRESULT,
2371     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ByteOrder) -> ::windows::runtime::HRESULT,
2372     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ByteOrder) -> ::windows::runtime::HRESULT,
2373     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: u8) -> ::windows::runtime::HRESULT,
2374     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value_array_size: u32, value: *const u8) -> ::windows::runtime::HRESULT,
2375     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, buffer: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2376     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, buffer: ::windows::runtime::RawPtr, start: u32, count: u32) -> ::windows::runtime::HRESULT,
2377     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: bool) -> ::windows::runtime::HRESULT,
2378     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2379     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: i16) -> ::windows::runtime::HRESULT,
2380     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: i32) -> ::windows::runtime::HRESULT,
2381     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: i64) -> ::windows::runtime::HRESULT,
2382     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: u16) -> ::windows::runtime::HRESULT,
2383     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: u32) -> ::windows::runtime::HRESULT,
2384     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: u64) -> ::windows::runtime::HRESULT,
2385     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: f32) -> ::windows::runtime::HRESULT,
2386     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: f64) -> ::windows::runtime::HRESULT,
2387     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: super::super::Foundation::DateTime) -> ::windows::runtime::HRESULT,
2388     #[cfg(not(feature = "Foundation"))] usize,
2389     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: super::super::Foundation::TimeSpan) -> ::windows::runtime::HRESULT,
2390     #[cfg(not(feature = "Foundation"))] usize,
2391     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut u32) -> ::windows::runtime::HRESULT,
2392     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut u32) -> ::windows::runtime::HRESULT,
2393     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2394     #[cfg(not(feature = "Foundation"))] usize,
2395     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2396     #[cfg(not(feature = "Foundation"))] usize,
2397     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2398     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2399 );
2400 #[repr(transparent)]
2401 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2402 #[doc(hidden)]
2403 pub struct IDataWriterFactory(::windows::runtime::IInspectable);
2404 unsafe impl ::windows::runtime::Interface for IDataWriterFactory {
2405     type Vtable = IDataWriterFactory_abi;
2406     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(864839618, 35716, 19499, [156, 80, 123, 135, 103, 132, 122, 31]);
2407 }
2408 #[repr(C)]
2409 #[doc(hidden)]
2410 pub struct IDataWriterFactory_abi(
2411     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2412     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2413     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2414     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2415     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2416     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2417     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, outputstream: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2418 );
2419 #[repr(transparent)]
2420 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2421 #[doc(hidden)]
2422 pub struct IFileRandomAccessStreamStatics(::windows::runtime::IInspectable);
2423 unsafe impl ::windows::runtime::Interface for IFileRandomAccessStreamStatics {
2424     type Vtable = IFileRandomAccessStreamStatics_abi;
2425     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1934950663, 15191, 19293, [131, 69, 85, 77, 47, 198, 33, 240]);
2426 }
2427 #[repr(C)]
2428 #[doc(hidden)]
2429 pub struct IFileRandomAccessStreamStatics_abi(
2430     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2431     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2432     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2433     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2434     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2435     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2436     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, filepath: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, accessmode: super::FileAccessMode, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2437     #[cfg(not(feature = "Foundation"))] usize,
2438     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, filepath: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, accessmode: super::FileAccessMode, sharingoptions: super::StorageOpenOptions, opendisposition: FileOpenDisposition, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2439     #[cfg(not(feature = "Foundation"))] usize,
2440     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, filepath: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2441     #[cfg(not(feature = "Foundation"))] usize,
2442     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, filepath: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, openoptions: super::StorageOpenOptions, opendisposition: FileOpenDisposition, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2443     #[cfg(not(feature = "Foundation"))] usize,
2444     #[cfg(all(feature = "Foundation", feature = "System"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, user: ::windows::runtime::RawPtr, filepath: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, accessmode: super::FileAccessMode, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2445     #[cfg(not(all(feature = "Foundation", feature = "System")))] usize,
2446     #[cfg(all(feature = "Foundation", feature = "System"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, user: ::windows::runtime::RawPtr, filepath: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, accessmode: super::FileAccessMode, sharingoptions: super::StorageOpenOptions, opendisposition: FileOpenDisposition, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2447     #[cfg(not(all(feature = "Foundation", feature = "System")))] usize,
2448     #[cfg(all(feature = "Foundation", feature = "System"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, user: ::windows::runtime::RawPtr, filepath: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2449     #[cfg(not(all(feature = "Foundation", feature = "System")))] usize,
2450     #[cfg(all(feature = "Foundation", feature = "System"))] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, user: ::windows::runtime::RawPtr, filepath: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING>, openoptions: super::StorageOpenOptions, opendisposition: FileOpenDisposition, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2451     #[cfg(not(all(feature = "Foundation", feature = "System")))] usize,
2452 );
2453 #[repr(transparent)]
2454 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2455 pub struct IInputStream(::windows::runtime::IInspectable);
2456 unsafe impl ::windows::runtime::Interface for IInputStream {
2457     type Vtable = IInputStream_abi;
2458     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821410, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
2459 }
2460 impl IInputStream {
2461     #[cfg(feature = "Foundation")]
2462     pub fn ReadAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, count: u32, options: InputStreamOptions) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>> {
2463         let this = self;
2464         unsafe {
2465             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2466             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), count, options, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>>(result__)
2467         }
2468     }
2469     #[cfg(feature = "Foundation")]
2470     pub fn Close(&self) -> ::windows::runtime::Result<()> {
2471         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
2472         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
2473     }
2474 }
2475 unsafe impl ::windows::runtime::RuntimeType for IInputStream {
2476     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{905a0fe2-bc53-11df-8c49-001e4fc686da}");
2477 }
2478 impl ::std::convert::From<IInputStream> for ::windows::runtime::IUnknown {
2479     fn from(value: IInputStream) -> Self {
2480         unsafe { ::std::mem::transmute(value) }
2481     }
2482 }
2483 impl ::std::convert::From<&IInputStream> for ::windows::runtime::IUnknown {
2484     fn from(value: &IInputStream) -> Self {
2485         ::std::convert::From::from(::std::clone::Clone::clone(value))
2486     }
2487 }
2488 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IInputStream {
2489     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2490         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
2491     }
2492 }
2493 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IInputStream {
2494     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2495         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
2496     }
2497 }
2498 impl ::std::convert::From<IInputStream> for ::windows::runtime::IInspectable {
2499     fn from(value: IInputStream) -> Self {
2500         value.0
2501     }
2502 }
2503 impl ::std::convert::From<&IInputStream> for ::windows::runtime::IInspectable {
2504     fn from(value: &IInputStream) -> Self {
2505         value.0.clone()
2506     }
2507 }
2508 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IInputStream {
2509     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2510         ::windows::runtime::Param::Owned(self.0)
2511     }
2512 }
2513 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IInputStream {
2514     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2515         ::windows::runtime::Param::Borrowed(&self.0)
2516     }
2517 }
2518 #[cfg(feature = "Foundation")]
2519 impl ::std::convert::TryFrom<IInputStream> for super::super::Foundation::IClosable {
2520     type Error = ::windows::runtime::Error;
2521     fn try_from(value: IInputStream) -> ::windows::runtime::Result<Self> {
2522         ::std::convert::TryFrom::try_from(&value)
2523     }
2524 }
2525 #[cfg(feature = "Foundation")]
2526 impl ::std::convert::TryFrom<&IInputStream> for super::super::Foundation::IClosable {
2527     type Error = ::windows::runtime::Error;
2528     fn try_from(value: &IInputStream) -> ::windows::runtime::Result<Self> {
2529         ::windows::runtime::Interface::cast(value)
2530     }
2531 }
2532 #[cfg(feature = "Foundation")]
2533 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for IInputStream {
2534     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
2535         ::windows::runtime::IntoParam::into_param(&self)
2536     }
2537 }
2538 #[cfg(feature = "Foundation")]
2539 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &IInputStream {
2540     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
2541         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
2542     }
2543 }
2544 #[repr(C)]
2545 #[doc(hidden)]
2546 pub struct IInputStream_abi(
2547     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2548     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2549     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2550     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2551     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2552     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2553     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, buffer: ::windows::runtime::RawPtr, count: u32, options: InputStreamOptions, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2554     #[cfg(not(feature = "Foundation"))] usize,
2555 );
2556 #[repr(transparent)]
2557 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2558 pub struct IInputStreamReference(::windows::runtime::IInspectable);
2559 unsafe impl ::windows::runtime::Interface for IInputStreamReference {
2560     type Vtable = IInputStreamReference_abi;
2561     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1133681944, 24265, 19290, [145, 156, 66, 5, 176, 200, 4, 182]);
2562 }
2563 impl IInputStreamReference {
2564     #[cfg(feature = "Foundation")]
2565     pub fn OpenSequentialReadAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<IInputStream>> {
2566         let this = self;
2567         unsafe {
2568             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2569             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<IInputStream>>(result__)
2570         }
2571     }
2572 }
2573 unsafe impl ::windows::runtime::RuntimeType for IInputStreamReference {
2574     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{43929d18-5ec9-4b5a-919c-4205b0c804b6}");
2575 }
2576 impl ::std::convert::From<IInputStreamReference> for ::windows::runtime::IUnknown {
2577     fn from(value: IInputStreamReference) -> Self {
2578         unsafe { ::std::mem::transmute(value) }
2579     }
2580 }
2581 impl ::std::convert::From<&IInputStreamReference> for ::windows::runtime::IUnknown {
2582     fn from(value: &IInputStreamReference) -> Self {
2583         ::std::convert::From::from(::std::clone::Clone::clone(value))
2584     }
2585 }
2586 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IInputStreamReference {
2587     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2588         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
2589     }
2590 }
2591 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IInputStreamReference {
2592     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2593         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
2594     }
2595 }
2596 impl ::std::convert::From<IInputStreamReference> for ::windows::runtime::IInspectable {
2597     fn from(value: IInputStreamReference) -> Self {
2598         value.0
2599     }
2600 }
2601 impl ::std::convert::From<&IInputStreamReference> for ::windows::runtime::IInspectable {
2602     fn from(value: &IInputStreamReference) -> Self {
2603         value.0.clone()
2604     }
2605 }
2606 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IInputStreamReference {
2607     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2608         ::windows::runtime::Param::Owned(self.0)
2609     }
2610 }
2611 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IInputStreamReference {
2612     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2613         ::windows::runtime::Param::Borrowed(&self.0)
2614     }
2615 }
2616 #[repr(C)]
2617 #[doc(hidden)]
2618 pub struct IInputStreamReference_abi(
2619     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2620     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2621     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2622     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2623     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2624     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2625     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2626     #[cfg(not(feature = "Foundation"))] usize,
2627 );
2628 #[repr(transparent)]
2629 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2630 pub struct IOutputStream(::windows::runtime::IInspectable);
2631 unsafe impl ::windows::runtime::Interface for IOutputStream {
2632     type Vtable = IOutputStream_abi;
2633     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821414, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
2634 }
2635 impl IOutputStream {
2636     #[cfg(feature = "Foundation")]
2637     pub fn WriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>> {
2638         let this = self;
2639         unsafe {
2640             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2641             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>>(result__)
2642         }
2643     }
2644     #[cfg(feature = "Foundation")]
2645     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
2646         let this = self;
2647         unsafe {
2648             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2649             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
2650         }
2651     }
2652     #[cfg(feature = "Foundation")]
2653     pub fn Close(&self) -> ::windows::runtime::Result<()> {
2654         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
2655         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
2656     }
2657 }
2658 unsafe impl ::windows::runtime::RuntimeType for IOutputStream {
2659     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{905a0fe6-bc53-11df-8c49-001e4fc686da}");
2660 }
2661 impl ::std::convert::From<IOutputStream> for ::windows::runtime::IUnknown {
2662     fn from(value: IOutputStream) -> Self {
2663         unsafe { ::std::mem::transmute(value) }
2664     }
2665 }
2666 impl ::std::convert::From<&IOutputStream> for ::windows::runtime::IUnknown {
2667     fn from(value: &IOutputStream) -> Self {
2668         ::std::convert::From::from(::std::clone::Clone::clone(value))
2669     }
2670 }
2671 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IOutputStream {
2672     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2673         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
2674     }
2675 }
2676 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IOutputStream {
2677     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2678         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
2679     }
2680 }
2681 impl ::std::convert::From<IOutputStream> for ::windows::runtime::IInspectable {
2682     fn from(value: IOutputStream) -> Self {
2683         value.0
2684     }
2685 }
2686 impl ::std::convert::From<&IOutputStream> for ::windows::runtime::IInspectable {
2687     fn from(value: &IOutputStream) -> Self {
2688         value.0.clone()
2689     }
2690 }
2691 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IOutputStream {
2692     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2693         ::windows::runtime::Param::Owned(self.0)
2694     }
2695 }
2696 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IOutputStream {
2697     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2698         ::windows::runtime::Param::Borrowed(&self.0)
2699     }
2700 }
2701 #[cfg(feature = "Foundation")]
2702 impl ::std::convert::TryFrom<IOutputStream> for super::super::Foundation::IClosable {
2703     type Error = ::windows::runtime::Error;
2704     fn try_from(value: IOutputStream) -> ::windows::runtime::Result<Self> {
2705         ::std::convert::TryFrom::try_from(&value)
2706     }
2707 }
2708 #[cfg(feature = "Foundation")]
2709 impl ::std::convert::TryFrom<&IOutputStream> for super::super::Foundation::IClosable {
2710     type Error = ::windows::runtime::Error;
2711     fn try_from(value: &IOutputStream) -> ::windows::runtime::Result<Self> {
2712         ::windows::runtime::Interface::cast(value)
2713     }
2714 }
2715 #[cfg(feature = "Foundation")]
2716 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for IOutputStream {
2717     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
2718         ::windows::runtime::IntoParam::into_param(&self)
2719     }
2720 }
2721 #[cfg(feature = "Foundation")]
2722 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &IOutputStream {
2723     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
2724         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
2725     }
2726 }
2727 #[repr(C)]
2728 #[doc(hidden)]
2729 pub struct IOutputStream_abi(
2730     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2731     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2732     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2733     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2734     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2735     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2736     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, buffer: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2737     #[cfg(not(feature = "Foundation"))] usize,
2738     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2739     #[cfg(not(feature = "Foundation"))] usize,
2740 );
2741 #[repr(transparent)]
2742 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2743 pub struct IPropertySetSerializer(::windows::runtime::IInspectable);
2744 unsafe impl ::windows::runtime::Interface for IPropertySetSerializer {
2745     type Vtable = IPropertySetSerializer_abi;
2746     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1854848796, 61245, 17270, [178, 14, 91, 230, 56, 174, 172, 119]);
2747 }
2748 impl IPropertySetSerializer {
2749     #[cfg(feature = "Foundation_Collections")]
2750     pub fn Serialize<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::Collections::IPropertySet>>(&self, propertyset: Param0) -> ::windows::runtime::Result<IBuffer> {
2751         let this = self;
2752         unsafe {
2753             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2754             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), propertyset.into_param().abi(), &mut result__).from_abi::<IBuffer>(result__)
2755         }
2756     }
2757     #[cfg(feature = "Foundation_Collections")]
2758     pub fn Deserialize<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::Collections::IPropertySet>, Param1: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, propertyset: Param0, buffer: Param1) -> ::windows::runtime::Result<()> {
2759         let this = self;
2760         unsafe { (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), propertyset.into_param().abi(), buffer.into_param().abi()).ok() }
2761     }
2762 }
2763 unsafe impl ::windows::runtime::RuntimeType for IPropertySetSerializer {
2764     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{6e8ebf1c-ef3d-4376-b20e-5be638aeac77}");
2765 }
2766 impl ::std::convert::From<IPropertySetSerializer> for ::windows::runtime::IUnknown {
2767     fn from(value: IPropertySetSerializer) -> Self {
2768         unsafe { ::std::mem::transmute(value) }
2769     }
2770 }
2771 impl ::std::convert::From<&IPropertySetSerializer> for ::windows::runtime::IUnknown {
2772     fn from(value: &IPropertySetSerializer) -> Self {
2773         ::std::convert::From::from(::std::clone::Clone::clone(value))
2774     }
2775 }
2776 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IPropertySetSerializer {
2777     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2778         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
2779     }
2780 }
2781 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IPropertySetSerializer {
2782     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2783         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
2784     }
2785 }
2786 impl ::std::convert::From<IPropertySetSerializer> for ::windows::runtime::IInspectable {
2787     fn from(value: IPropertySetSerializer) -> Self {
2788         value.0
2789     }
2790 }
2791 impl ::std::convert::From<&IPropertySetSerializer> for ::windows::runtime::IInspectable {
2792     fn from(value: &IPropertySetSerializer) -> Self {
2793         value.0.clone()
2794     }
2795 }
2796 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IPropertySetSerializer {
2797     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2798         ::windows::runtime::Param::Owned(self.0)
2799     }
2800 }
2801 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IPropertySetSerializer {
2802     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2803         ::windows::runtime::Param::Borrowed(&self.0)
2804     }
2805 }
2806 #[repr(C)]
2807 #[doc(hidden)]
2808 pub struct IPropertySetSerializer_abi(
2809     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2810     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2811     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
2812     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
2813     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2814     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
2815     #[cfg(feature = "Foundation_Collections")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, propertyset: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2816     #[cfg(not(feature = "Foundation_Collections"))] usize,
2817     #[cfg(feature = "Foundation_Collections")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, propertyset: ::windows::runtime::RawPtr, buffer: ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
2818     #[cfg(not(feature = "Foundation_Collections"))] usize,
2819 );
2820 #[repr(transparent)]
2821 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
2822 pub struct IRandomAccessStream(::windows::runtime::IInspectable);
2823 unsafe impl ::windows::runtime::Interface for IRandomAccessStream {
2824     type Vtable = IRandomAccessStream_abi;
2825     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821409, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
2826 }
2827 impl IRandomAccessStream {
2828     pub fn Size(&self) -> ::windows::runtime::Result<u64> {
2829         let this = self;
2830         unsafe {
2831             let mut result__: u64 = ::std::mem::zeroed();
2832             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
2833         }
2834     }
2835     pub fn SetSize(&self, value: u64) -> ::windows::runtime::Result<()> {
2836         let this = self;
2837         unsafe { (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), value).ok() }
2838     }
2839     pub fn GetInputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IInputStream> {
2840         let this = self;
2841         unsafe {
2842             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2843             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IInputStream>(result__)
2844         }
2845     }
2846     pub fn GetOutputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IOutputStream> {
2847         let this = self;
2848         unsafe {
2849             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2850             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IOutputStream>(result__)
2851         }
2852     }
2853     pub fn Position(&self) -> ::windows::runtime::Result<u64> {
2854         let this = self;
2855         unsafe {
2856             let mut result__: u64 = ::std::mem::zeroed();
2857             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
2858         }
2859     }
2860     pub fn Seek(&self, position: u64) -> ::windows::runtime::Result<()> {
2861         let this = self;
2862         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), position).ok() }
2863     }
2864     pub fn CloneStream(&self) -> ::windows::runtime::Result<IRandomAccessStream> {
2865         let this = self;
2866         unsafe {
2867             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2868             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IRandomAccessStream>(result__)
2869         }
2870     }
2871     pub fn CanRead(&self) -> ::windows::runtime::Result<bool> {
2872         let this = self;
2873         unsafe {
2874             let mut result__: bool = ::std::mem::zeroed();
2875             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
2876         }
2877     }
2878     pub fn CanWrite(&self) -> ::windows::runtime::Result<bool> {
2879         let this = self;
2880         unsafe {
2881             let mut result__: bool = ::std::mem::zeroed();
2882             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
2883         }
2884     }
2885     #[cfg(feature = "Foundation")]
2886     pub fn Close(&self) -> ::windows::runtime::Result<()> {
2887         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
2888         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
2889     }
2890     #[cfg(feature = "Foundation")]
2891     pub fn ReadAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, count: u32, options: InputStreamOptions) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>> {
2892         let this = &::windows::runtime::Interface::cast::<IInputStream>(self)?;
2893         unsafe {
2894             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2895             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), count, options, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>>(result__)
2896         }
2897     }
2898     #[cfg(feature = "Foundation")]
2899     pub fn WriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>> {
2900         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
2901         unsafe {
2902             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2903             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>>(result__)
2904         }
2905     }
2906     #[cfg(feature = "Foundation")]
2907     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
2908         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
2909         unsafe {
2910             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
2911             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
2912         }
2913     }
2914 }
2915 unsafe impl ::windows::runtime::RuntimeType for IRandomAccessStream {
2916     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{905a0fe1-bc53-11df-8c49-001e4fc686da}");
2917 }
2918 impl ::std::convert::From<IRandomAccessStream> for ::windows::runtime::IUnknown {
2919     fn from(value: IRandomAccessStream) -> Self {
2920         unsafe { ::std::mem::transmute(value) }
2921     }
2922 }
2923 impl ::std::convert::From<&IRandomAccessStream> for ::windows::runtime::IUnknown {
2924     fn from(value: &IRandomAccessStream) -> Self {
2925         ::std::convert::From::from(::std::clone::Clone::clone(value))
2926     }
2927 }
2928 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IRandomAccessStream {
2929     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2930         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
2931     }
2932 }
2933 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IRandomAccessStream {
2934     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
2935         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
2936     }
2937 }
2938 impl ::std::convert::From<IRandomAccessStream> for ::windows::runtime::IInspectable {
2939     fn from(value: IRandomAccessStream) -> Self {
2940         value.0
2941     }
2942 }
2943 impl ::std::convert::From<&IRandomAccessStream> for ::windows::runtime::IInspectable {
2944     fn from(value: &IRandomAccessStream) -> Self {
2945         value.0.clone()
2946     }
2947 }
2948 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IRandomAccessStream {
2949     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2950         ::windows::runtime::Param::Owned(self.0)
2951     }
2952 }
2953 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IRandomAccessStream {
2954     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
2955         ::windows::runtime::Param::Borrowed(&self.0)
2956     }
2957 }
2958 #[cfg(feature = "Foundation")]
2959 impl ::std::convert::TryFrom<IRandomAccessStream> for super::super::Foundation::IClosable {
2960     type Error = ::windows::runtime::Error;
2961     fn try_from(value: IRandomAccessStream) -> ::windows::runtime::Result<Self> {
2962         ::std::convert::TryFrom::try_from(&value)
2963     }
2964 }
2965 #[cfg(feature = "Foundation")]
2966 impl ::std::convert::TryFrom<&IRandomAccessStream> for super::super::Foundation::IClosable {
2967     type Error = ::windows::runtime::Error;
2968     fn try_from(value: &IRandomAccessStream) -> ::windows::runtime::Result<Self> {
2969         ::windows::runtime::Interface::cast(value)
2970     }
2971 }
2972 #[cfg(feature = "Foundation")]
2973 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for IRandomAccessStream {
2974     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
2975         ::windows::runtime::IntoParam::into_param(&self)
2976     }
2977 }
2978 #[cfg(feature = "Foundation")]
2979 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &IRandomAccessStream {
2980     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
2981         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
2982     }
2983 }
2984 impl ::std::convert::TryFrom<IRandomAccessStream> for IInputStream {
2985     type Error = ::windows::runtime::Error;
2986     fn try_from(value: IRandomAccessStream) -> ::windows::runtime::Result<Self> {
2987         ::std::convert::TryFrom::try_from(&value)
2988     }
2989 }
2990 impl ::std::convert::TryFrom<&IRandomAccessStream> for IInputStream {
2991     type Error = ::windows::runtime::Error;
2992     fn try_from(value: &IRandomAccessStream) -> ::windows::runtime::Result<Self> {
2993         ::windows::runtime::Interface::cast(value)
2994     }
2995 }
2996 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for IRandomAccessStream {
2997     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
2998         ::windows::runtime::IntoParam::into_param(&self)
2999     }
3000 }
3001 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for &IRandomAccessStream {
3002     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
3003         ::std::convert::TryInto::<IInputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3004     }
3005 }
3006 impl ::std::convert::TryFrom<IRandomAccessStream> for IOutputStream {
3007     type Error = ::windows::runtime::Error;
3008     fn try_from(value: IRandomAccessStream) -> ::windows::runtime::Result<Self> {
3009         ::std::convert::TryFrom::try_from(&value)
3010     }
3011 }
3012 impl ::std::convert::TryFrom<&IRandomAccessStream> for IOutputStream {
3013     type Error = ::windows::runtime::Error;
3014     fn try_from(value: &IRandomAccessStream) -> ::windows::runtime::Result<Self> {
3015         ::windows::runtime::Interface::cast(value)
3016     }
3017 }
3018 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for IRandomAccessStream {
3019     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
3020         ::windows::runtime::IntoParam::into_param(&self)
3021     }
3022 }
3023 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for &IRandomAccessStream {
3024     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
3025         ::std::convert::TryInto::<IOutputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3026     }
3027 }
3028 #[repr(C)]
3029 #[doc(hidden)]
3030 pub struct IRandomAccessStream_abi(
3031     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3032     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3033     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3034     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3035     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3036     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3037     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u64) -> ::windows::runtime::HRESULT,
3038     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: u64) -> ::windows::runtime::HRESULT,
3039     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, position: u64, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3040     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, position: u64, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3041     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut u64) -> ::windows::runtime::HRESULT,
3042     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, position: u64) -> ::windows::runtime::HRESULT,
3043     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3044     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
3045     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut bool) -> ::windows::runtime::HRESULT,
3046 );
3047 #[repr(transparent)]
3048 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3049 pub struct IRandomAccessStreamReference(::windows::runtime::IInspectable);
3050 unsafe impl ::windows::runtime::Interface for IRandomAccessStreamReference {
3051     type Vtable = IRandomAccessStreamReference_abi;
3052     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(871248180, 7638, 20026, [128, 103, 209, 193, 98, 232, 100, 43]);
3053 }
3054 impl IRandomAccessStreamReference {
3055     #[cfg(feature = "Foundation")]
3056     pub fn OpenReadAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<IRandomAccessStreamWithContentType>> {
3057         let this = self;
3058         unsafe {
3059             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3060             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<IRandomAccessStreamWithContentType>>(result__)
3061         }
3062     }
3063 }
3064 unsafe impl ::windows::runtime::RuntimeType for IRandomAccessStreamReference {
3065     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{33ee3134-1dd6-4e3a-8067-d1c162e8642b}");
3066 }
3067 impl ::std::convert::From<IRandomAccessStreamReference> for ::windows::runtime::IUnknown {
3068     fn from(value: IRandomAccessStreamReference) -> Self {
3069         unsafe { ::std::mem::transmute(value) }
3070     }
3071 }
3072 impl ::std::convert::From<&IRandomAccessStreamReference> for ::windows::runtime::IUnknown {
3073     fn from(value: &IRandomAccessStreamReference) -> Self {
3074         ::std::convert::From::from(::std::clone::Clone::clone(value))
3075     }
3076 }
3077 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IRandomAccessStreamReference {
3078     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3079         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
3080     }
3081 }
3082 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IRandomAccessStreamReference {
3083     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3084         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
3085     }
3086 }
3087 impl ::std::convert::From<IRandomAccessStreamReference> for ::windows::runtime::IInspectable {
3088     fn from(value: IRandomAccessStreamReference) -> Self {
3089         value.0
3090     }
3091 }
3092 impl ::std::convert::From<&IRandomAccessStreamReference> for ::windows::runtime::IInspectable {
3093     fn from(value: &IRandomAccessStreamReference) -> Self {
3094         value.0.clone()
3095     }
3096 }
3097 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IRandomAccessStreamReference {
3098     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3099         ::windows::runtime::Param::Owned(self.0)
3100     }
3101 }
3102 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IRandomAccessStreamReference {
3103     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3104         ::windows::runtime::Param::Borrowed(&self.0)
3105     }
3106 }
3107 #[repr(C)]
3108 #[doc(hidden)]
3109 pub struct IRandomAccessStreamReference_abi(
3110     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3111     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3112     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3113     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3114     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3115     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3116     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3117     #[cfg(not(feature = "Foundation"))] usize,
3118 );
3119 #[repr(transparent)]
3120 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3121 #[doc(hidden)]
3122 pub struct IRandomAccessStreamReferenceStatics(::windows::runtime::IInspectable);
3123 unsafe impl ::windows::runtime::Interface for IRandomAccessStreamReferenceStatics {
3124     type Vtable = IRandomAccessStreamReferenceStatics_abi;
3125     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2238908892, 16319, 20093, [152, 111, 239, 59, 26, 7, 169, 100]);
3126 }
3127 #[repr(C)]
3128 #[doc(hidden)]
3129 pub struct IRandomAccessStreamReferenceStatics_abi(
3130     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3131     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3132     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3133     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3134     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3135     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3136     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, file: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3137     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, uri: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3138     #[cfg(not(feature = "Foundation"))] usize,
3139     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, stream: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3140 );
3141 #[repr(transparent)]
3142 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3143 #[doc(hidden)]
3144 pub struct IRandomAccessStreamStatics(::windows::runtime::IInspectable);
3145 unsafe impl ::windows::runtime::Interface for IRandomAccessStreamStatics {
3146     type Vtable = IRandomAccessStreamStatics_abi;
3147     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(1380773327, 28201, 19685, [149, 115, 107, 117, 61, 182, 108, 58]);
3148 }
3149 #[repr(C)]
3150 #[doc(hidden)]
3151 pub struct IRandomAccessStreamStatics_abi(
3152     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3153     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3154     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3155     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3156     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3157     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3158     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, source: ::windows::runtime::RawPtr, destination: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3159     #[cfg(not(feature = "Foundation"))] usize,
3160     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, source: ::windows::runtime::RawPtr, destination: ::windows::runtime::RawPtr, bytestocopy: u64, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3161     #[cfg(not(feature = "Foundation"))] usize,
3162     #[cfg(feature = "Foundation")] pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, source: ::windows::runtime::RawPtr, destination: ::windows::runtime::RawPtr, result__: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3163     #[cfg(not(feature = "Foundation"))] usize,
3164 );
3165 #[repr(transparent)]
3166 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3167 pub struct IRandomAccessStreamWithContentType(::windows::runtime::IInspectable);
3168 unsafe impl ::windows::runtime::Interface for IRandomAccessStreamWithContentType {
3169     type Vtable = IRandomAccessStreamWithContentType_abi;
3170     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(3424995367, 19261, 17295, [146, 50, 16, 199, 107, 199, 224, 56]);
3171 }
3172 impl IRandomAccessStreamWithContentType {
3173     #[cfg(feature = "Foundation")]
3174     pub fn Close(&self) -> ::windows::runtime::Result<()> {
3175         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
3176         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
3177     }
3178     pub fn ContentType(&self) -> ::windows::runtime::Result<::windows::runtime::HSTRING> {
3179         let this = &::windows::runtime::Interface::cast::<IContentTypeProvider>(self)?;
3180         unsafe {
3181             let mut result__: ::std::mem::ManuallyDrop<::windows::runtime::HSTRING> = ::std::mem::zeroed();
3182             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<::windows::runtime::HSTRING>(result__)
3183         }
3184     }
3185     #[cfg(feature = "Foundation")]
3186     pub fn ReadAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, count: u32, options: InputStreamOptions) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>> {
3187         let this = &::windows::runtime::Interface::cast::<IInputStream>(self)?;
3188         unsafe {
3189             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3190             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), count, options, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>>(result__)
3191         }
3192     }
3193     #[cfg(feature = "Foundation")]
3194     pub fn WriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>> {
3195         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
3196         unsafe {
3197             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3198             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>>(result__)
3199         }
3200     }
3201     #[cfg(feature = "Foundation")]
3202     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
3203         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
3204         unsafe {
3205             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3206             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
3207         }
3208     }
3209     pub fn Size(&self) -> ::windows::runtime::Result<u64> {
3210         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3211         unsafe {
3212             let mut result__: u64 = ::std::mem::zeroed();
3213             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
3214         }
3215     }
3216     pub fn SetSize(&self, value: u64) -> ::windows::runtime::Result<()> {
3217         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3218         unsafe { (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), value).ok() }
3219     }
3220     pub fn GetInputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IInputStream> {
3221         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3222         unsafe {
3223             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3224             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IInputStream>(result__)
3225         }
3226     }
3227     pub fn GetOutputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IOutputStream> {
3228         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3229         unsafe {
3230             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3231             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IOutputStream>(result__)
3232         }
3233     }
3234     pub fn Position(&self) -> ::windows::runtime::Result<u64> {
3235         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3236         unsafe {
3237             let mut result__: u64 = ::std::mem::zeroed();
3238             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
3239         }
3240     }
3241     pub fn Seek(&self, position: u64) -> ::windows::runtime::Result<()> {
3242         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3243         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), position).ok() }
3244     }
3245     pub fn CloneStream(&self) -> ::windows::runtime::Result<IRandomAccessStream> {
3246         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3247         unsafe {
3248             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3249             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IRandomAccessStream>(result__)
3250         }
3251     }
3252     pub fn CanRead(&self) -> ::windows::runtime::Result<bool> {
3253         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3254         unsafe {
3255             let mut result__: bool = ::std::mem::zeroed();
3256             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
3257         }
3258     }
3259     pub fn CanWrite(&self) -> ::windows::runtime::Result<bool> {
3260         let this = &::windows::runtime::Interface::cast::<IRandomAccessStream>(self)?;
3261         unsafe {
3262             let mut result__: bool = ::std::mem::zeroed();
3263             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
3264         }
3265     }
3266 }
3267 unsafe impl ::windows::runtime::RuntimeType for IRandomAccessStreamWithContentType {
3268     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"{cc254827-4b3d-438f-9232-10c76bc7e038}");
3269 }
3270 impl ::std::convert::From<IRandomAccessStreamWithContentType> for ::windows::runtime::IUnknown {
3271     fn from(value: IRandomAccessStreamWithContentType) -> Self {
3272         unsafe { ::std::mem::transmute(value) }
3273     }
3274 }
3275 impl ::std::convert::From<&IRandomAccessStreamWithContentType> for ::windows::runtime::IUnknown {
3276     fn from(value: &IRandomAccessStreamWithContentType) -> Self {
3277         ::std::convert::From::from(::std::clone::Clone::clone(value))
3278     }
3279 }
3280 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for IRandomAccessStreamWithContentType {
3281     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3282         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
3283     }
3284 }
3285 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &IRandomAccessStreamWithContentType {
3286     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3287         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
3288     }
3289 }
3290 impl ::std::convert::From<IRandomAccessStreamWithContentType> for ::windows::runtime::IInspectable {
3291     fn from(value: IRandomAccessStreamWithContentType) -> Self {
3292         value.0
3293     }
3294 }
3295 impl ::std::convert::From<&IRandomAccessStreamWithContentType> for ::windows::runtime::IInspectable {
3296     fn from(value: &IRandomAccessStreamWithContentType) -> Self {
3297         value.0.clone()
3298     }
3299 }
3300 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for IRandomAccessStreamWithContentType {
3301     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3302         ::windows::runtime::Param::Owned(self.0)
3303     }
3304 }
3305 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a IRandomAccessStreamWithContentType {
3306     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3307         ::windows::runtime::Param::Borrowed(&self.0)
3308     }
3309 }
3310 #[cfg(feature = "Foundation")]
3311 impl ::std::convert::TryFrom<IRandomAccessStreamWithContentType> for super::super::Foundation::IClosable {
3312     type Error = ::windows::runtime::Error;
3313     fn try_from(value: IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3314         ::std::convert::TryFrom::try_from(&value)
3315     }
3316 }
3317 #[cfg(feature = "Foundation")]
3318 impl ::std::convert::TryFrom<&IRandomAccessStreamWithContentType> for super::super::Foundation::IClosable {
3319     type Error = ::windows::runtime::Error;
3320     fn try_from(value: &IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3321         ::windows::runtime::Interface::cast(value)
3322     }
3323 }
3324 #[cfg(feature = "Foundation")]
3325 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for IRandomAccessStreamWithContentType {
3326     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
3327         ::windows::runtime::IntoParam::into_param(&self)
3328     }
3329 }
3330 #[cfg(feature = "Foundation")]
3331 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &IRandomAccessStreamWithContentType {
3332     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
3333         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3334     }
3335 }
3336 impl ::std::convert::TryFrom<IRandomAccessStreamWithContentType> for IContentTypeProvider {
3337     type Error = ::windows::runtime::Error;
3338     fn try_from(value: IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3339         ::std::convert::TryFrom::try_from(&value)
3340     }
3341 }
3342 impl ::std::convert::TryFrom<&IRandomAccessStreamWithContentType> for IContentTypeProvider {
3343     type Error = ::windows::runtime::Error;
3344     fn try_from(value: &IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3345         ::windows::runtime::Interface::cast(value)
3346     }
3347 }
3348 impl<'a> ::windows::runtime::IntoParam<'a, IContentTypeProvider> for IRandomAccessStreamWithContentType {
3349     fn into_param(self) -> ::windows::runtime::Param<'a, IContentTypeProvider> {
3350         ::windows::runtime::IntoParam::into_param(&self)
3351     }
3352 }
3353 impl<'a> ::windows::runtime::IntoParam<'a, IContentTypeProvider> for &IRandomAccessStreamWithContentType {
3354     fn into_param(self) -> ::windows::runtime::Param<'a, IContentTypeProvider> {
3355         ::std::convert::TryInto::<IContentTypeProvider>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3356     }
3357 }
3358 impl ::std::convert::TryFrom<IRandomAccessStreamWithContentType> for IInputStream {
3359     type Error = ::windows::runtime::Error;
3360     fn try_from(value: IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3361         ::std::convert::TryFrom::try_from(&value)
3362     }
3363 }
3364 impl ::std::convert::TryFrom<&IRandomAccessStreamWithContentType> for IInputStream {
3365     type Error = ::windows::runtime::Error;
3366     fn try_from(value: &IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3367         ::windows::runtime::Interface::cast(value)
3368     }
3369 }
3370 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for IRandomAccessStreamWithContentType {
3371     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
3372         ::windows::runtime::IntoParam::into_param(&self)
3373     }
3374 }
3375 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for &IRandomAccessStreamWithContentType {
3376     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
3377         ::std::convert::TryInto::<IInputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3378     }
3379 }
3380 impl ::std::convert::TryFrom<IRandomAccessStreamWithContentType> for IOutputStream {
3381     type Error = ::windows::runtime::Error;
3382     fn try_from(value: IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3383         ::std::convert::TryFrom::try_from(&value)
3384     }
3385 }
3386 impl ::std::convert::TryFrom<&IRandomAccessStreamWithContentType> for IOutputStream {
3387     type Error = ::windows::runtime::Error;
3388     fn try_from(value: &IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3389         ::windows::runtime::Interface::cast(value)
3390     }
3391 }
3392 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for IRandomAccessStreamWithContentType {
3393     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
3394         ::windows::runtime::IntoParam::into_param(&self)
3395     }
3396 }
3397 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for &IRandomAccessStreamWithContentType {
3398     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
3399         ::std::convert::TryInto::<IOutputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3400     }
3401 }
3402 impl ::std::convert::TryFrom<IRandomAccessStreamWithContentType> for IRandomAccessStream {
3403     type Error = ::windows::runtime::Error;
3404     fn try_from(value: IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3405         ::std::convert::TryFrom::try_from(&value)
3406     }
3407 }
3408 impl ::std::convert::TryFrom<&IRandomAccessStreamWithContentType> for IRandomAccessStream {
3409     type Error = ::windows::runtime::Error;
3410     fn try_from(value: &IRandomAccessStreamWithContentType) -> ::windows::runtime::Result<Self> {
3411         ::windows::runtime::Interface::cast(value)
3412     }
3413 }
3414 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStream> for IRandomAccessStreamWithContentType {
3415     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStream> {
3416         ::windows::runtime::IntoParam::into_param(&self)
3417     }
3418 }
3419 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStream> for &IRandomAccessStreamWithContentType {
3420     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStream> {
3421         ::std::convert::TryInto::<IRandomAccessStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3422     }
3423 }
3424 #[repr(C)]
3425 #[doc(hidden)]
3426 pub struct IRandomAccessStreamWithContentType_abi(
3427     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, iid: &::windows::runtime::GUID, interface: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3428     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3429     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr) -> u32,
3430     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, count: *mut u32, values: *mut *mut ::windows::runtime::GUID) -> ::windows::runtime::HRESULT,
3431     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut ::windows::runtime::RawPtr) -> ::windows::runtime::HRESULT,
3432     pub unsafe extern "system" fn(this: ::windows::runtime::RawPtr, value: *mut i32) -> ::windows::runtime::HRESULT,
3433 );
3434 #[repr(transparent)]
3435 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3436 pub struct InMemoryRandomAccessStream(::windows::runtime::IInspectable);
3437 impl InMemoryRandomAccessStream {
3438     pub fn new() -> ::windows::runtime::Result<Self> {
3439         Self::IActivationFactory(|f| f.activate_instance::<Self>())
3440     }
3441     fn IActivationFactory<R, F: FnOnce(&::windows::runtime::IActivationFactory) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
3442         static mut SHARED: ::windows::runtime::FactoryCache<InMemoryRandomAccessStream, ::windows::runtime::IActivationFactory> = ::windows::runtime::FactoryCache::new();
3443         unsafe { SHARED.call(callback) }
3444     }
3445     pub fn Size(&self) -> ::windows::runtime::Result<u64> {
3446         let this = self;
3447         unsafe {
3448             let mut result__: u64 = ::std::mem::zeroed();
3449             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
3450         }
3451     }
3452     pub fn SetSize(&self, value: u64) -> ::windows::runtime::Result<()> {
3453         let this = self;
3454         unsafe { (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), value).ok() }
3455     }
3456     pub fn GetInputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IInputStream> {
3457         let this = self;
3458         unsafe {
3459             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3460             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IInputStream>(result__)
3461         }
3462     }
3463     pub fn GetOutputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IOutputStream> {
3464         let this = self;
3465         unsafe {
3466             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3467             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IOutputStream>(result__)
3468         }
3469     }
3470     pub fn Position(&self) -> ::windows::runtime::Result<u64> {
3471         let this = self;
3472         unsafe {
3473             let mut result__: u64 = ::std::mem::zeroed();
3474             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
3475         }
3476     }
3477     pub fn Seek(&self, position: u64) -> ::windows::runtime::Result<()> {
3478         let this = self;
3479         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), position).ok() }
3480     }
3481     pub fn CloneStream(&self) -> ::windows::runtime::Result<IRandomAccessStream> {
3482         let this = self;
3483         unsafe {
3484             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3485             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IRandomAccessStream>(result__)
3486         }
3487     }
3488     pub fn CanRead(&self) -> ::windows::runtime::Result<bool> {
3489         let this = self;
3490         unsafe {
3491             let mut result__: bool = ::std::mem::zeroed();
3492             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
3493         }
3494     }
3495     pub fn CanWrite(&self) -> ::windows::runtime::Result<bool> {
3496         let this = self;
3497         unsafe {
3498             let mut result__: bool = ::std::mem::zeroed();
3499             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
3500         }
3501     }
3502     #[cfg(feature = "Foundation")]
3503     pub fn Close(&self) -> ::windows::runtime::Result<()> {
3504         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
3505         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
3506     }
3507     #[cfg(feature = "Foundation")]
3508     pub fn ReadAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, count: u32, options: InputStreamOptions) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>> {
3509         let this = &::windows::runtime::Interface::cast::<IInputStream>(self)?;
3510         unsafe {
3511             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3512             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), count, options, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>>(result__)
3513         }
3514     }
3515     #[cfg(feature = "Foundation")]
3516     pub fn WriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>> {
3517         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
3518         unsafe {
3519             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3520             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>>(result__)
3521         }
3522     }
3523     #[cfg(feature = "Foundation")]
3524     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
3525         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
3526         unsafe {
3527             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3528             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
3529         }
3530     }
3531 }
3532 unsafe impl ::windows::runtime::RuntimeType for InMemoryRandomAccessStream {
3533     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.InMemoryRandomAccessStream;{905a0fe1-bc53-11df-8c49-001e4fc686da})");
3534 }
3535 unsafe impl ::windows::runtime::Interface for InMemoryRandomAccessStream {
3536     type Vtable = IRandomAccessStream_abi;
3537     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821409, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
3538 }
3539 impl ::windows::runtime::RuntimeName for InMemoryRandomAccessStream {
3540     const NAME: &'static str = "Windows.Storage.Streams.InMemoryRandomAccessStream";
3541 }
3542 impl ::std::convert::From<InMemoryRandomAccessStream> for ::windows::runtime::IUnknown {
3543     fn from(value: InMemoryRandomAccessStream) -> Self {
3544         unsafe { ::std::mem::transmute(value) }
3545     }
3546 }
3547 impl ::std::convert::From<&InMemoryRandomAccessStream> for ::windows::runtime::IUnknown {
3548     fn from(value: &InMemoryRandomAccessStream) -> Self {
3549         ::std::convert::From::from(::std::clone::Clone::clone(value))
3550     }
3551 }
3552 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for InMemoryRandomAccessStream {
3553     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3554         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
3555     }
3556 }
3557 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &InMemoryRandomAccessStream {
3558     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3559         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
3560     }
3561 }
3562 impl ::std::convert::From<InMemoryRandomAccessStream> for ::windows::runtime::IInspectable {
3563     fn from(value: InMemoryRandomAccessStream) -> Self {
3564         value.0
3565     }
3566 }
3567 impl ::std::convert::From<&InMemoryRandomAccessStream> for ::windows::runtime::IInspectable {
3568     fn from(value: &InMemoryRandomAccessStream) -> Self {
3569         value.0.clone()
3570     }
3571 }
3572 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for InMemoryRandomAccessStream {
3573     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3574         ::windows::runtime::Param::Owned(self.0)
3575     }
3576 }
3577 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a InMemoryRandomAccessStream {
3578     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3579         ::windows::runtime::Param::Borrowed(&self.0)
3580     }
3581 }
3582 impl ::std::convert::From<InMemoryRandomAccessStream> for IRandomAccessStream {
3583     fn from(value: InMemoryRandomAccessStream) -> Self {
3584         unsafe { ::std::mem::transmute(value) }
3585     }
3586 }
3587 impl ::std::convert::From<&InMemoryRandomAccessStream> for IRandomAccessStream {
3588     fn from(value: &InMemoryRandomAccessStream) -> Self {
3589         ::std::convert::From::from(::std::clone::Clone::clone(value))
3590     }
3591 }
3592 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStream> for InMemoryRandomAccessStream {
3593     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStream> {
3594         ::windows::runtime::Param::Owned(::std::convert::Into::<IRandomAccessStream>::into(self))
3595     }
3596 }
3597 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStream> for &InMemoryRandomAccessStream {
3598     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStream> {
3599         ::windows::runtime::Param::Owned(::std::convert::Into::<IRandomAccessStream>::into(::std::clone::Clone::clone(self)))
3600     }
3601 }
3602 #[cfg(feature = "Foundation")]
3603 impl ::std::convert::TryFrom<InMemoryRandomAccessStream> for super::super::Foundation::IClosable {
3604     type Error = ::windows::runtime::Error;
3605     fn try_from(value: InMemoryRandomAccessStream) -> ::windows::runtime::Result<Self> {
3606         ::std::convert::TryFrom::try_from(&value)
3607     }
3608 }
3609 #[cfg(feature = "Foundation")]
3610 impl ::std::convert::TryFrom<&InMemoryRandomAccessStream> for super::super::Foundation::IClosable {
3611     type Error = ::windows::runtime::Error;
3612     fn try_from(value: &InMemoryRandomAccessStream) -> ::windows::runtime::Result<Self> {
3613         ::windows::runtime::Interface::cast(value)
3614     }
3615 }
3616 #[cfg(feature = "Foundation")]
3617 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for InMemoryRandomAccessStream {
3618     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
3619         ::windows::runtime::IntoParam::into_param(&self)
3620     }
3621 }
3622 #[cfg(feature = "Foundation")]
3623 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &InMemoryRandomAccessStream {
3624     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
3625         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3626     }
3627 }
3628 impl ::std::convert::TryFrom<InMemoryRandomAccessStream> for IInputStream {
3629     type Error = ::windows::runtime::Error;
3630     fn try_from(value: InMemoryRandomAccessStream) -> ::windows::runtime::Result<Self> {
3631         ::std::convert::TryFrom::try_from(&value)
3632     }
3633 }
3634 impl ::std::convert::TryFrom<&InMemoryRandomAccessStream> for IInputStream {
3635     type Error = ::windows::runtime::Error;
3636     fn try_from(value: &InMemoryRandomAccessStream) -> ::windows::runtime::Result<Self> {
3637         ::windows::runtime::Interface::cast(value)
3638     }
3639 }
3640 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for InMemoryRandomAccessStream {
3641     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
3642         ::windows::runtime::IntoParam::into_param(&self)
3643     }
3644 }
3645 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for &InMemoryRandomAccessStream {
3646     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
3647         ::std::convert::TryInto::<IInputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3648     }
3649 }
3650 impl ::std::convert::TryFrom<InMemoryRandomAccessStream> for IOutputStream {
3651     type Error = ::windows::runtime::Error;
3652     fn try_from(value: InMemoryRandomAccessStream) -> ::windows::runtime::Result<Self> {
3653         ::std::convert::TryFrom::try_from(&value)
3654     }
3655 }
3656 impl ::std::convert::TryFrom<&InMemoryRandomAccessStream> for IOutputStream {
3657     type Error = ::windows::runtime::Error;
3658     fn try_from(value: &InMemoryRandomAccessStream) -> ::windows::runtime::Result<Self> {
3659         ::windows::runtime::Interface::cast(value)
3660     }
3661 }
3662 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for InMemoryRandomAccessStream {
3663     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
3664         ::windows::runtime::IntoParam::into_param(&self)
3665     }
3666 }
3667 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for &InMemoryRandomAccessStream {
3668     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
3669         ::std::convert::TryInto::<IOutputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3670     }
3671 }
3672 unsafe impl ::std::marker::Send for InMemoryRandomAccessStream {}
3673 unsafe impl ::std::marker::Sync for InMemoryRandomAccessStream {}
3674 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
3675 #[repr(transparent)]
3676 pub struct InputStreamOptions(pub u32);
3677 impl InputStreamOptions {
3678     pub const None: InputStreamOptions = InputStreamOptions(0u32);
3679     pub const Partial: InputStreamOptions = InputStreamOptions(1u32);
3680     pub const ReadAhead: InputStreamOptions = InputStreamOptions(2u32);
3681 }
3682 impl ::std::convert::From<u32> for InputStreamOptions {
3683     fn from(value: u32) -> Self {
3684         Self(value)
3685     }
3686 }
3687 unsafe impl ::windows::runtime::Abi for InputStreamOptions {
3688     type Abi = Self;
3689     type DefaultType = Self;
3690 }
3691 unsafe impl ::windows::runtime::RuntimeType for InputStreamOptions {
3692     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Storage.Streams.InputStreamOptions;u4)");
3693 }
3694 impl ::std::ops::BitOr for InputStreamOptions {
3695     type Output = Self;
3696     fn bitor(self, rhs: Self) -> Self {
3697         Self(self.0 | rhs.0)
3698     }
3699 }
3700 impl ::std::ops::BitAnd for InputStreamOptions {
3701     type Output = Self;
3702     fn bitand(self, rhs: Self) -> Self {
3703         Self(self.0 & rhs.0)
3704     }
3705 }
3706 impl ::std::ops::BitOrAssign for InputStreamOptions {
3707     fn bitor_assign(&mut self, rhs: Self) {
3708         self.0.bitor_assign(rhs.0)
3709     }
3710 }
3711 impl ::std::ops::BitAndAssign for InputStreamOptions {
3712     fn bitand_assign(&mut self, rhs: Self) {
3713         self.0.bitand_assign(rhs.0)
3714     }
3715 }
3716 impl ::std::ops::Not for InputStreamOptions {
3717     type Output = Self;
3718     fn not(self) -> Self {
3719         Self(self.0.not())
3720     }
3721 }
3722 #[repr(transparent)]
3723 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3724 pub struct InputStreamOverStream(::windows::runtime::IInspectable);
3725 impl InputStreamOverStream {
3726     #[cfg(feature = "Foundation")]
3727     pub fn ReadAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, count: u32, options: InputStreamOptions) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>> {
3728         let this = self;
3729         unsafe {
3730             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3731             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), count, options, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>>(result__)
3732         }
3733     }
3734     #[cfg(feature = "Foundation")]
3735     pub fn Close(&self) -> ::windows::runtime::Result<()> {
3736         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
3737         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
3738     }
3739 }
3740 unsafe impl ::windows::runtime::RuntimeType for InputStreamOverStream {
3741     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.InputStreamOverStream;{905a0fe2-bc53-11df-8c49-001e4fc686da})");
3742 }
3743 unsafe impl ::windows::runtime::Interface for InputStreamOverStream {
3744     type Vtable = IInputStream_abi;
3745     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821410, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
3746 }
3747 impl ::windows::runtime::RuntimeName for InputStreamOverStream {
3748     const NAME: &'static str = "Windows.Storage.Streams.InputStreamOverStream";
3749 }
3750 impl ::std::convert::From<InputStreamOverStream> for ::windows::runtime::IUnknown {
3751     fn from(value: InputStreamOverStream) -> Self {
3752         unsafe { ::std::mem::transmute(value) }
3753     }
3754 }
3755 impl ::std::convert::From<&InputStreamOverStream> for ::windows::runtime::IUnknown {
3756     fn from(value: &InputStreamOverStream) -> Self {
3757         ::std::convert::From::from(::std::clone::Clone::clone(value))
3758     }
3759 }
3760 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for InputStreamOverStream {
3761     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3762         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
3763     }
3764 }
3765 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &InputStreamOverStream {
3766     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3767         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
3768     }
3769 }
3770 impl ::std::convert::From<InputStreamOverStream> for ::windows::runtime::IInspectable {
3771     fn from(value: InputStreamOverStream) -> Self {
3772         value.0
3773     }
3774 }
3775 impl ::std::convert::From<&InputStreamOverStream> for ::windows::runtime::IInspectable {
3776     fn from(value: &InputStreamOverStream) -> Self {
3777         value.0.clone()
3778     }
3779 }
3780 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for InputStreamOverStream {
3781     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3782         ::windows::runtime::Param::Owned(self.0)
3783     }
3784 }
3785 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a InputStreamOverStream {
3786     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3787         ::windows::runtime::Param::Borrowed(&self.0)
3788     }
3789 }
3790 impl ::std::convert::From<InputStreamOverStream> for IInputStream {
3791     fn from(value: InputStreamOverStream) -> Self {
3792         unsafe { ::std::mem::transmute(value) }
3793     }
3794 }
3795 impl ::std::convert::From<&InputStreamOverStream> for IInputStream {
3796     fn from(value: &InputStreamOverStream) -> Self {
3797         ::std::convert::From::from(::std::clone::Clone::clone(value))
3798     }
3799 }
3800 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for InputStreamOverStream {
3801     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
3802         ::windows::runtime::Param::Owned(::std::convert::Into::<IInputStream>::into(self))
3803     }
3804 }
3805 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for &InputStreamOverStream {
3806     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
3807         ::windows::runtime::Param::Owned(::std::convert::Into::<IInputStream>::into(::std::clone::Clone::clone(self)))
3808     }
3809 }
3810 #[cfg(feature = "Foundation")]
3811 impl ::std::convert::TryFrom<InputStreamOverStream> for super::super::Foundation::IClosable {
3812     type Error = ::windows::runtime::Error;
3813     fn try_from(value: InputStreamOverStream) -> ::windows::runtime::Result<Self> {
3814         ::std::convert::TryFrom::try_from(&value)
3815     }
3816 }
3817 #[cfg(feature = "Foundation")]
3818 impl ::std::convert::TryFrom<&InputStreamOverStream> for super::super::Foundation::IClosable {
3819     type Error = ::windows::runtime::Error;
3820     fn try_from(value: &InputStreamOverStream) -> ::windows::runtime::Result<Self> {
3821         ::windows::runtime::Interface::cast(value)
3822     }
3823 }
3824 #[cfg(feature = "Foundation")]
3825 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for InputStreamOverStream {
3826     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
3827         ::windows::runtime::IntoParam::into_param(&self)
3828     }
3829 }
3830 #[cfg(feature = "Foundation")]
3831 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &InputStreamOverStream {
3832     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
3833         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3834     }
3835 }
3836 unsafe impl ::std::marker::Send for InputStreamOverStream {}
3837 unsafe impl ::std::marker::Sync for InputStreamOverStream {}
3838 #[repr(transparent)]
3839 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3840 pub struct OutputStreamOverStream(::windows::runtime::IInspectable);
3841 impl OutputStreamOverStream {
3842     #[cfg(feature = "Foundation")]
3843     pub fn WriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>> {
3844         let this = self;
3845         unsafe {
3846             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3847             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>>(result__)
3848         }
3849     }
3850     #[cfg(feature = "Foundation")]
3851     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
3852         let this = self;
3853         unsafe {
3854             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3855             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
3856         }
3857     }
3858     #[cfg(feature = "Foundation")]
3859     pub fn Close(&self) -> ::windows::runtime::Result<()> {
3860         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
3861         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
3862     }
3863 }
3864 unsafe impl ::windows::runtime::RuntimeType for OutputStreamOverStream {
3865     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.OutputStreamOverStream;{905a0fe6-bc53-11df-8c49-001e4fc686da})");
3866 }
3867 unsafe impl ::windows::runtime::Interface for OutputStreamOverStream {
3868     type Vtable = IOutputStream_abi;
3869     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821414, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
3870 }
3871 impl ::windows::runtime::RuntimeName for OutputStreamOverStream {
3872     const NAME: &'static str = "Windows.Storage.Streams.OutputStreamOverStream";
3873 }
3874 impl ::std::convert::From<OutputStreamOverStream> for ::windows::runtime::IUnknown {
3875     fn from(value: OutputStreamOverStream) -> Self {
3876         unsafe { ::std::mem::transmute(value) }
3877     }
3878 }
3879 impl ::std::convert::From<&OutputStreamOverStream> for ::windows::runtime::IUnknown {
3880     fn from(value: &OutputStreamOverStream) -> Self {
3881         ::std::convert::From::from(::std::clone::Clone::clone(value))
3882     }
3883 }
3884 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for OutputStreamOverStream {
3885     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3886         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
3887     }
3888 }
3889 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &OutputStreamOverStream {
3890     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
3891         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
3892     }
3893 }
3894 impl ::std::convert::From<OutputStreamOverStream> for ::windows::runtime::IInspectable {
3895     fn from(value: OutputStreamOverStream) -> Self {
3896         value.0
3897     }
3898 }
3899 impl ::std::convert::From<&OutputStreamOverStream> for ::windows::runtime::IInspectable {
3900     fn from(value: &OutputStreamOverStream) -> Self {
3901         value.0.clone()
3902     }
3903 }
3904 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for OutputStreamOverStream {
3905     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3906         ::windows::runtime::Param::Owned(self.0)
3907     }
3908 }
3909 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a OutputStreamOverStream {
3910     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
3911         ::windows::runtime::Param::Borrowed(&self.0)
3912     }
3913 }
3914 impl ::std::convert::From<OutputStreamOverStream> for IOutputStream {
3915     fn from(value: OutputStreamOverStream) -> Self {
3916         unsafe { ::std::mem::transmute(value) }
3917     }
3918 }
3919 impl ::std::convert::From<&OutputStreamOverStream> for IOutputStream {
3920     fn from(value: &OutputStreamOverStream) -> Self {
3921         ::std::convert::From::from(::std::clone::Clone::clone(value))
3922     }
3923 }
3924 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for OutputStreamOverStream {
3925     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
3926         ::windows::runtime::Param::Owned(::std::convert::Into::<IOutputStream>::into(self))
3927     }
3928 }
3929 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for &OutputStreamOverStream {
3930     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
3931         ::windows::runtime::Param::Owned(::std::convert::Into::<IOutputStream>::into(::std::clone::Clone::clone(self)))
3932     }
3933 }
3934 #[cfg(feature = "Foundation")]
3935 impl ::std::convert::TryFrom<OutputStreamOverStream> for super::super::Foundation::IClosable {
3936     type Error = ::windows::runtime::Error;
3937     fn try_from(value: OutputStreamOverStream) -> ::windows::runtime::Result<Self> {
3938         ::std::convert::TryFrom::try_from(&value)
3939     }
3940 }
3941 #[cfg(feature = "Foundation")]
3942 impl ::std::convert::TryFrom<&OutputStreamOverStream> for super::super::Foundation::IClosable {
3943     type Error = ::windows::runtime::Error;
3944     fn try_from(value: &OutputStreamOverStream) -> ::windows::runtime::Result<Self> {
3945         ::windows::runtime::Interface::cast(value)
3946     }
3947 }
3948 #[cfg(feature = "Foundation")]
3949 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for OutputStreamOverStream {
3950     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
3951         ::windows::runtime::IntoParam::into_param(&self)
3952     }
3953 }
3954 #[cfg(feature = "Foundation")]
3955 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &OutputStreamOverStream {
3956     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
3957         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
3958     }
3959 }
3960 unsafe impl ::std::marker::Send for OutputStreamOverStream {}
3961 unsafe impl ::std::marker::Sync for OutputStreamOverStream {}
3962 pub struct RandomAccessStream {}
3963 impl RandomAccessStream {
3964     #[cfg(feature = "Foundation")]
3965     pub fn CopyAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IInputStream>, Param1: ::windows::runtime::IntoParam<'a, IOutputStream>>(source: Param0, destination: Param1) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u64, u64>> {
3966         Self::IRandomAccessStreamStatics(|this| unsafe {
3967             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3968             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), source.into_param().abi(), destination.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u64, u64>>(result__)
3969         })
3970     }
3971     #[cfg(feature = "Foundation")]
3972     pub fn CopySizeAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IInputStream>, Param1: ::windows::runtime::IntoParam<'a, IOutputStream>>(source: Param0, destination: Param1, bytestocopy: u64) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u64, u64>> {
3973         Self::IRandomAccessStreamStatics(|this| unsafe {
3974             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3975             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), source.into_param().abi(), destination.into_param().abi(), bytestocopy, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u64, u64>>(result__)
3976         })
3977     }
3978     #[cfg(feature = "Foundation")]
3979     pub fn CopyAndCloseAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IInputStream>, Param1: ::windows::runtime::IntoParam<'a, IOutputStream>>(source: Param0, destination: Param1) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u64, u64>> {
3980         Self::IRandomAccessStreamStatics(|this| unsafe {
3981             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
3982             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), source.into_param().abi(), destination.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u64, u64>>(result__)
3983         })
3984     }
3985     pub fn IRandomAccessStreamStatics<R, F: FnOnce(&IRandomAccessStreamStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
3986         static mut SHARED: ::windows::runtime::FactoryCache<RandomAccessStream, IRandomAccessStreamStatics> = ::windows::runtime::FactoryCache::new();
3987         unsafe { SHARED.call(callback) }
3988     }
3989 }
3990 impl ::windows::runtime::RuntimeName for RandomAccessStream {
3991     const NAME: &'static str = "Windows.Storage.Streams.RandomAccessStream";
3992 }
3993 #[repr(transparent)]
3994 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
3995 pub struct RandomAccessStreamOverStream(::windows::runtime::IInspectable);
3996 impl RandomAccessStreamOverStream {
3997     pub fn Size(&self) -> ::windows::runtime::Result<u64> {
3998         let this = self;
3999         unsafe {
4000             let mut result__: u64 = ::std::mem::zeroed();
4001             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
4002         }
4003     }
4004     pub fn SetSize(&self, value: u64) -> ::windows::runtime::Result<()> {
4005         let this = self;
4006         unsafe { (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), value).ok() }
4007     }
4008     pub fn GetInputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IInputStream> {
4009         let this = self;
4010         unsafe {
4011             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4012             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IInputStream>(result__)
4013         }
4014     }
4015     pub fn GetOutputStreamAt(&self, position: u64) -> ::windows::runtime::Result<IOutputStream> {
4016         let this = self;
4017         unsafe {
4018             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4019             (::windows::runtime::Interface::vtable(this).9)(::std::mem::transmute_copy(this), position, &mut result__).from_abi::<IOutputStream>(result__)
4020         }
4021     }
4022     pub fn Position(&self) -> ::windows::runtime::Result<u64> {
4023         let this = self;
4024         unsafe {
4025             let mut result__: u64 = ::std::mem::zeroed();
4026             (::windows::runtime::Interface::vtable(this).10)(::std::mem::transmute_copy(this), &mut result__).from_abi::<u64>(result__)
4027         }
4028     }
4029     pub fn Seek(&self, position: u64) -> ::windows::runtime::Result<()> {
4030         let this = self;
4031         unsafe { (::windows::runtime::Interface::vtable(this).11)(::std::mem::transmute_copy(this), position).ok() }
4032     }
4033     pub fn CloneStream(&self) -> ::windows::runtime::Result<IRandomAccessStream> {
4034         let this = self;
4035         unsafe {
4036             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4037             (::windows::runtime::Interface::vtable(this).12)(::std::mem::transmute_copy(this), &mut result__).from_abi::<IRandomAccessStream>(result__)
4038         }
4039     }
4040     pub fn CanRead(&self) -> ::windows::runtime::Result<bool> {
4041         let this = self;
4042         unsafe {
4043             let mut result__: bool = ::std::mem::zeroed();
4044             (::windows::runtime::Interface::vtable(this).13)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
4045         }
4046     }
4047     pub fn CanWrite(&self) -> ::windows::runtime::Result<bool> {
4048         let this = self;
4049         unsafe {
4050             let mut result__: bool = ::std::mem::zeroed();
4051             (::windows::runtime::Interface::vtable(this).14)(::std::mem::transmute_copy(this), &mut result__).from_abi::<bool>(result__)
4052         }
4053     }
4054     #[cfg(feature = "Foundation")]
4055     pub fn Close(&self) -> ::windows::runtime::Result<()> {
4056         let this = &::windows::runtime::Interface::cast::<super::super::Foundation::IClosable>(self)?;
4057         unsafe { (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this)).ok() }
4058     }
4059     #[cfg(feature = "Foundation")]
4060     pub fn ReadAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0, count: u32, options: InputStreamOptions) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>> {
4061         let this = &::windows::runtime::Interface::cast::<IInputStream>(self)?;
4062         unsafe {
4063             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4064             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), count, options, &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<IBuffer, u32>>(result__)
4065         }
4066     }
4067     #[cfg(feature = "Foundation")]
4068     pub fn WriteAsync<'a, Param0: ::windows::runtime::IntoParam<'a, IBuffer>>(&self, buffer: Param0) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>> {
4069         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
4070         unsafe {
4071             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4072             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), buffer.into_param().abi(), &mut result__).from_abi::<super::super::Foundation::IAsyncOperationWithProgress<u32, u32>>(result__)
4073         }
4074     }
4075     #[cfg(feature = "Foundation")]
4076     pub fn FlushAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<bool>> {
4077         let this = &::windows::runtime::Interface::cast::<IOutputStream>(self)?;
4078         unsafe {
4079             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4080             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<bool>>(result__)
4081         }
4082     }
4083 }
4084 unsafe impl ::windows::runtime::RuntimeType for RandomAccessStreamOverStream {
4085     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.RandomAccessStreamOverStream;{905a0fe1-bc53-11df-8c49-001e4fc686da})");
4086 }
4087 unsafe impl ::windows::runtime::Interface for RandomAccessStreamOverStream {
4088     type Vtable = IRandomAccessStream_abi;
4089     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(2421821409, 48211, 4575, [140, 73, 0, 30, 79, 198, 134, 218]);
4090 }
4091 impl ::windows::runtime::RuntimeName for RandomAccessStreamOverStream {
4092     const NAME: &'static str = "Windows.Storage.Streams.RandomAccessStreamOverStream";
4093 }
4094 impl ::std::convert::From<RandomAccessStreamOverStream> for ::windows::runtime::IUnknown {
4095     fn from(value: RandomAccessStreamOverStream) -> Self {
4096         unsafe { ::std::mem::transmute(value) }
4097     }
4098 }
4099 impl ::std::convert::From<&RandomAccessStreamOverStream> for ::windows::runtime::IUnknown {
4100     fn from(value: &RandomAccessStreamOverStream) -> Self {
4101         ::std::convert::From::from(::std::clone::Clone::clone(value))
4102     }
4103 }
4104 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for RandomAccessStreamOverStream {
4105     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
4106         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
4107     }
4108 }
4109 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &RandomAccessStreamOverStream {
4110     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
4111         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
4112     }
4113 }
4114 impl ::std::convert::From<RandomAccessStreamOverStream> for ::windows::runtime::IInspectable {
4115     fn from(value: RandomAccessStreamOverStream) -> Self {
4116         value.0
4117     }
4118 }
4119 impl ::std::convert::From<&RandomAccessStreamOverStream> for ::windows::runtime::IInspectable {
4120     fn from(value: &RandomAccessStreamOverStream) -> Self {
4121         value.0.clone()
4122     }
4123 }
4124 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for RandomAccessStreamOverStream {
4125     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
4126         ::windows::runtime::Param::Owned(self.0)
4127     }
4128 }
4129 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a RandomAccessStreamOverStream {
4130     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
4131         ::windows::runtime::Param::Borrowed(&self.0)
4132     }
4133 }
4134 impl ::std::convert::From<RandomAccessStreamOverStream> for IRandomAccessStream {
4135     fn from(value: RandomAccessStreamOverStream) -> Self {
4136         unsafe { ::std::mem::transmute(value) }
4137     }
4138 }
4139 impl ::std::convert::From<&RandomAccessStreamOverStream> for IRandomAccessStream {
4140     fn from(value: &RandomAccessStreamOverStream) -> Self {
4141         ::std::convert::From::from(::std::clone::Clone::clone(value))
4142     }
4143 }
4144 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStream> for RandomAccessStreamOverStream {
4145     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStream> {
4146         ::windows::runtime::Param::Owned(::std::convert::Into::<IRandomAccessStream>::into(self))
4147     }
4148 }
4149 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStream> for &RandomAccessStreamOverStream {
4150     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStream> {
4151         ::windows::runtime::Param::Owned(::std::convert::Into::<IRandomAccessStream>::into(::std::clone::Clone::clone(self)))
4152     }
4153 }
4154 #[cfg(feature = "Foundation")]
4155 impl ::std::convert::TryFrom<RandomAccessStreamOverStream> for super::super::Foundation::IClosable {
4156     type Error = ::windows::runtime::Error;
4157     fn try_from(value: RandomAccessStreamOverStream) -> ::windows::runtime::Result<Self> {
4158         ::std::convert::TryFrom::try_from(&value)
4159     }
4160 }
4161 #[cfg(feature = "Foundation")]
4162 impl ::std::convert::TryFrom<&RandomAccessStreamOverStream> for super::super::Foundation::IClosable {
4163     type Error = ::windows::runtime::Error;
4164     fn try_from(value: &RandomAccessStreamOverStream) -> ::windows::runtime::Result<Self> {
4165         ::windows::runtime::Interface::cast(value)
4166     }
4167 }
4168 #[cfg(feature = "Foundation")]
4169 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for RandomAccessStreamOverStream {
4170     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
4171         ::windows::runtime::IntoParam::into_param(&self)
4172     }
4173 }
4174 #[cfg(feature = "Foundation")]
4175 impl<'a> ::windows::runtime::IntoParam<'a, super::super::Foundation::IClosable> for &RandomAccessStreamOverStream {
4176     fn into_param(self) -> ::windows::runtime::Param<'a, super::super::Foundation::IClosable> {
4177         ::std::convert::TryInto::<super::super::Foundation::IClosable>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
4178     }
4179 }
4180 impl ::std::convert::TryFrom<RandomAccessStreamOverStream> for IInputStream {
4181     type Error = ::windows::runtime::Error;
4182     fn try_from(value: RandomAccessStreamOverStream) -> ::windows::runtime::Result<Self> {
4183         ::std::convert::TryFrom::try_from(&value)
4184     }
4185 }
4186 impl ::std::convert::TryFrom<&RandomAccessStreamOverStream> for IInputStream {
4187     type Error = ::windows::runtime::Error;
4188     fn try_from(value: &RandomAccessStreamOverStream) -> ::windows::runtime::Result<Self> {
4189         ::windows::runtime::Interface::cast(value)
4190     }
4191 }
4192 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for RandomAccessStreamOverStream {
4193     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
4194         ::windows::runtime::IntoParam::into_param(&self)
4195     }
4196 }
4197 impl<'a> ::windows::runtime::IntoParam<'a, IInputStream> for &RandomAccessStreamOverStream {
4198     fn into_param(self) -> ::windows::runtime::Param<'a, IInputStream> {
4199         ::std::convert::TryInto::<IInputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
4200     }
4201 }
4202 impl ::std::convert::TryFrom<RandomAccessStreamOverStream> for IOutputStream {
4203     type Error = ::windows::runtime::Error;
4204     fn try_from(value: RandomAccessStreamOverStream) -> ::windows::runtime::Result<Self> {
4205         ::std::convert::TryFrom::try_from(&value)
4206     }
4207 }
4208 impl ::std::convert::TryFrom<&RandomAccessStreamOverStream> for IOutputStream {
4209     type Error = ::windows::runtime::Error;
4210     fn try_from(value: &RandomAccessStreamOverStream) -> ::windows::runtime::Result<Self> {
4211         ::windows::runtime::Interface::cast(value)
4212     }
4213 }
4214 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for RandomAccessStreamOverStream {
4215     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
4216         ::windows::runtime::IntoParam::into_param(&self)
4217     }
4218 }
4219 impl<'a> ::windows::runtime::IntoParam<'a, IOutputStream> for &RandomAccessStreamOverStream {
4220     fn into_param(self) -> ::windows::runtime::Param<'a, IOutputStream> {
4221         ::std::convert::TryInto::<IOutputStream>::try_into(self).map(::windows::runtime::Param::Owned).unwrap_or(::windows::runtime::Param::None)
4222     }
4223 }
4224 unsafe impl ::std::marker::Send for RandomAccessStreamOverStream {}
4225 unsafe impl ::std::marker::Sync for RandomAccessStreamOverStream {}
4226 #[repr(transparent)]
4227 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: clone :: Clone, :: std :: fmt :: Debug)]
4228 pub struct RandomAccessStreamReference(::windows::runtime::IInspectable);
4229 impl RandomAccessStreamReference {
4230     #[cfg(feature = "Foundation")]
4231     pub fn OpenReadAsync(&self) -> ::windows::runtime::Result<super::super::Foundation::IAsyncOperation<IRandomAccessStreamWithContentType>> {
4232         let this = self;
4233         unsafe {
4234             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4235             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), &mut result__).from_abi::<super::super::Foundation::IAsyncOperation<IRandomAccessStreamWithContentType>>(result__)
4236         }
4237     }
4238     pub fn CreateFromFile<'a, Param0: ::windows::runtime::IntoParam<'a, super::IStorageFile>>(file: Param0) -> ::windows::runtime::Result<RandomAccessStreamReference> {
4239         Self::IRandomAccessStreamReferenceStatics(|this| unsafe {
4240             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4241             (::windows::runtime::Interface::vtable(this).6)(::std::mem::transmute_copy(this), file.into_param().abi(), &mut result__).from_abi::<RandomAccessStreamReference>(result__)
4242         })
4243     }
4244     #[cfg(feature = "Foundation")]
4245     pub fn CreateFromUri<'a, Param0: ::windows::runtime::IntoParam<'a, super::super::Foundation::Uri>>(uri: Param0) -> ::windows::runtime::Result<RandomAccessStreamReference> {
4246         Self::IRandomAccessStreamReferenceStatics(|this| unsafe {
4247             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4248             (::windows::runtime::Interface::vtable(this).7)(::std::mem::transmute_copy(this), uri.into_param().abi(), &mut result__).from_abi::<RandomAccessStreamReference>(result__)
4249         })
4250     }
4251     pub fn CreateFromStream<'a, Param0: ::windows::runtime::IntoParam<'a, IRandomAccessStream>>(stream: Param0) -> ::windows::runtime::Result<RandomAccessStreamReference> {
4252         Self::IRandomAccessStreamReferenceStatics(|this| unsafe {
4253             let mut result__: ::windows::runtime::RawPtr = ::std::mem::zeroed();
4254             (::windows::runtime::Interface::vtable(this).8)(::std::mem::transmute_copy(this), stream.into_param().abi(), &mut result__).from_abi::<RandomAccessStreamReference>(result__)
4255         })
4256     }
4257     pub fn IRandomAccessStreamReferenceStatics<R, F: FnOnce(&IRandomAccessStreamReferenceStatics) -> ::windows::runtime::Result<R>>(callback: F) -> ::windows::runtime::Result<R> {
4258         static mut SHARED: ::windows::runtime::FactoryCache<RandomAccessStreamReference, IRandomAccessStreamReferenceStatics> = ::windows::runtime::FactoryCache::new();
4259         unsafe { SHARED.call(callback) }
4260     }
4261 }
4262 unsafe impl ::windows::runtime::RuntimeType for RandomAccessStreamReference {
4263     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"rc(Windows.Storage.Streams.RandomAccessStreamReference;{33ee3134-1dd6-4e3a-8067-d1c162e8642b})");
4264 }
4265 unsafe impl ::windows::runtime::Interface for RandomAccessStreamReference {
4266     type Vtable = IRandomAccessStreamReference_abi;
4267     const IID: ::windows::runtime::GUID = ::windows::runtime::GUID::from_values(871248180, 7638, 20026, [128, 103, 209, 193, 98, 232, 100, 43]);
4268 }
4269 impl ::windows::runtime::RuntimeName for RandomAccessStreamReference {
4270     const NAME: &'static str = "Windows.Storage.Streams.RandomAccessStreamReference";
4271 }
4272 impl ::std::convert::From<RandomAccessStreamReference> for ::windows::runtime::IUnknown {
4273     fn from(value: RandomAccessStreamReference) -> Self {
4274         unsafe { ::std::mem::transmute(value) }
4275     }
4276 }
4277 impl ::std::convert::From<&RandomAccessStreamReference> for ::windows::runtime::IUnknown {
4278     fn from(value: &RandomAccessStreamReference) -> Self {
4279         ::std::convert::From::from(::std::clone::Clone::clone(value))
4280     }
4281 }
4282 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for RandomAccessStreamReference {
4283     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
4284         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(self))
4285     }
4286 }
4287 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IUnknown> for &RandomAccessStreamReference {
4288     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IUnknown> {
4289         ::windows::runtime::Param::Owned(::std::convert::Into::<::windows::runtime::IUnknown>::into(::std::clone::Clone::clone(self)))
4290     }
4291 }
4292 impl ::std::convert::From<RandomAccessStreamReference> for ::windows::runtime::IInspectable {
4293     fn from(value: RandomAccessStreamReference) -> Self {
4294         value.0
4295     }
4296 }
4297 impl ::std::convert::From<&RandomAccessStreamReference> for ::windows::runtime::IInspectable {
4298     fn from(value: &RandomAccessStreamReference) -> Self {
4299         value.0.clone()
4300     }
4301 }
4302 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for RandomAccessStreamReference {
4303     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
4304         ::windows::runtime::Param::Owned(self.0)
4305     }
4306 }
4307 impl<'a> ::windows::runtime::IntoParam<'a, ::windows::runtime::IInspectable> for &'a RandomAccessStreamReference {
4308     fn into_param(self) -> ::windows::runtime::Param<'a, ::windows::runtime::IInspectable> {
4309         ::windows::runtime::Param::Borrowed(&self.0)
4310     }
4311 }
4312 impl ::std::convert::From<RandomAccessStreamReference> for IRandomAccessStreamReference {
4313     fn from(value: RandomAccessStreamReference) -> Self {
4314         unsafe { ::std::mem::transmute(value) }
4315     }
4316 }
4317 impl ::std::convert::From<&RandomAccessStreamReference> for IRandomAccessStreamReference {
4318     fn from(value: &RandomAccessStreamReference) -> Self {
4319         ::std::convert::From::from(::std::clone::Clone::clone(value))
4320     }
4321 }
4322 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStreamReference> for RandomAccessStreamReference {
4323     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStreamReference> {
4324         ::windows::runtime::Param::Owned(::std::convert::Into::<IRandomAccessStreamReference>::into(self))
4325     }
4326 }
4327 impl<'a> ::windows::runtime::IntoParam<'a, IRandomAccessStreamReference> for &RandomAccessStreamReference {
4328     fn into_param(self) -> ::windows::runtime::Param<'a, IRandomAccessStreamReference> {
4329         ::windows::runtime::Param::Owned(::std::convert::Into::<IRandomAccessStreamReference>::into(::std::clone::Clone::clone(self)))
4330     }
4331 }
4332 unsafe impl ::std::marker::Send for RandomAccessStreamReference {}
4333 unsafe impl ::std::marker::Sync for RandomAccessStreamReference {}
4334 #[derive(:: std :: cmp :: PartialEq, :: std :: cmp :: Eq, :: std :: marker :: Copy, :: std :: clone :: Clone, :: std :: default :: Default, :: std :: fmt :: Debug)]
4335 #[repr(transparent)]
4336 pub struct UnicodeEncoding(pub i32);
4337 impl UnicodeEncoding {
4338     pub const Utf8: UnicodeEncoding = UnicodeEncoding(0i32);
4339     pub const Utf16LE: UnicodeEncoding = UnicodeEncoding(1i32);
4340     pub const Utf16BE: UnicodeEncoding = UnicodeEncoding(2i32);
4341 }
4342 impl ::std::convert::From<i32> for UnicodeEncoding {
4343     fn from(value: i32) -> Self {
4344         Self(value)
4345     }
4346 }
4347 unsafe impl ::windows::runtime::Abi for UnicodeEncoding {
4348     type Abi = Self;
4349     type DefaultType = Self;
4350 }
4351 unsafe impl ::windows::runtime::RuntimeType for UnicodeEncoding {
4352     const SIGNATURE: ::windows::runtime::ConstBuffer = ::windows::runtime::ConstBuffer::from_slice(b"enum(Windows.Storage.Streams.UnicodeEncoding;i4)");
4353 }
4354