windows 0.51.1

Rust for Windows
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
#[repr(transparent)]
pub struct IObjectArray(::windows_core::IUnknown);
impl IObjectArray {
    pub unsafe fn GetCount(&self) -> ::windows_core::Result<u32> {
        let mut result__ = ::std::mem::zeroed();
        (::windows_core::Interface::vtable(self).GetCount)(::windows_core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetAt<T>(&self, uiindex: u32) -> ::windows_core::Result<T>
    where
        T: ::windows_core::ComInterface,
    {
        let mut result__ = ::std::ptr::null_mut();
        (::windows_core::Interface::vtable(self).GetAt)(::windows_core::Interface::as_raw(self), uiindex, &<T as ::windows_core::ComInterface>::IID, &mut result__).from_abi(result__)
    }
}
::windows_core::imp::interface_hierarchy!(IObjectArray, ::windows_core::IUnknown);
impl ::core::cmp::PartialEq for IObjectArray {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IObjectArray {}
impl ::core::fmt::Debug for IObjectArray {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IObjectArray").field(&self.0).finish()
    }
}
unsafe impl ::windows_core::Interface for IObjectArray {
    type Vtable = IObjectArray_Vtbl;
}
impl ::core::clone::Clone for IObjectArray {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows_core::ComInterface for IObjectArray {
    const IID: ::windows_core::GUID = ::windows_core::GUID::from_u128(0x92ca9dcd_5622_4bba_a805_5e9f541bd8c9);
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectArray_Vtbl {
    pub base__: ::windows_core::IUnknown_Vtbl,
    pub GetCount: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcobjects: *mut u32) -> ::windows_core::HRESULT,
    pub GetAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uiindex: u32, riid: *const ::windows_core::GUID, ppv: *mut *mut ::core::ffi::c_void) -> ::windows_core::HRESULT,
}
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
#[repr(transparent)]
pub struct IObjectCollection(::windows_core::IUnknown);
impl IObjectCollection {
    pub unsafe fn GetCount(&self) -> ::windows_core::Result<u32> {
        let mut result__ = ::std::mem::zeroed();
        (::windows_core::Interface::vtable(self).base__.GetCount)(::windows_core::Interface::as_raw(self), &mut result__).from_abi(result__)
    }
    pub unsafe fn GetAt<T>(&self, uiindex: u32) -> ::windows_core::Result<T>
    where
        T: ::windows_core::ComInterface,
    {
        let mut result__ = ::std::ptr::null_mut();
        (::windows_core::Interface::vtable(self).base__.GetAt)(::windows_core::Interface::as_raw(self), uiindex, &<T as ::windows_core::ComInterface>::IID, &mut result__).from_abi(result__)
    }
    pub unsafe fn AddObject<P0>(&self, punk: P0) -> ::windows_core::Result<()>
    where
        P0: ::windows_core::IntoParam<::windows_core::IUnknown>,
    {
        (::windows_core::Interface::vtable(self).AddObject)(::windows_core::Interface::as_raw(self), punk.into_param().abi()).ok()
    }
    pub unsafe fn AddFromArray<P0>(&self, poasource: P0) -> ::windows_core::Result<()>
    where
        P0: ::windows_core::IntoParam<IObjectArray>,
    {
        (::windows_core::Interface::vtable(self).AddFromArray)(::windows_core::Interface::as_raw(self), poasource.into_param().abi()).ok()
    }
    pub unsafe fn RemoveObjectAt(&self, uiindex: u32) -> ::windows_core::Result<()> {
        (::windows_core::Interface::vtable(self).RemoveObjectAt)(::windows_core::Interface::as_raw(self), uiindex).ok()
    }
    pub unsafe fn Clear(&self) -> ::windows_core::Result<()> {
        (::windows_core::Interface::vtable(self).Clear)(::windows_core::Interface::as_raw(self)).ok()
    }
}
::windows_core::imp::interface_hierarchy!(IObjectCollection, ::windows_core::IUnknown, IObjectArray);
impl ::core::cmp::PartialEq for IObjectCollection {
    fn eq(&self, other: &Self) -> bool {
        self.0 == other.0
    }
}
impl ::core::cmp::Eq for IObjectCollection {}
impl ::core::fmt::Debug for IObjectCollection {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("IObjectCollection").field(&self.0).finish()
    }
}
unsafe impl ::windows_core::Interface for IObjectCollection {
    type Vtable = IObjectCollection_Vtbl;
}
impl ::core::clone::Clone for IObjectCollection {
    fn clone(&self) -> Self {
        Self(self.0.clone())
    }
}
unsafe impl ::windows_core::ComInterface for IObjectCollection {
    const IID: ::windows_core::GUID = ::windows_core::GUID::from_u128(0x5632b1a4_e38a_400a_928a_d4cd63230295);
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectCollection_Vtbl {
    pub base__: IObjectArray_Vtbl,
    pub AddObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, punk: *mut ::core::ffi::c_void) -> ::windows_core::HRESULT,
    pub AddFromArray: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, poasource: *mut ::core::ffi::c_void) -> ::windows_core::HRESULT,
    pub RemoveObjectAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uiindex: u32) -> ::windows_core::HRESULT,
    pub Clear: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows_core::HRESULT,
}
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const DEVICE_SCALE_FACTOR_INVALID: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(0i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVEDFLAG_GDIPLUS: u32 = 16u32;
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVEDFLAG_HARDCODED: u32 = 2u32;
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVEDFLAG_NATIVESUPPORT: u32 = 4u32;
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVEDFLAG_SOFTCODED: u32 = 1u32;
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVEDFLAG_UNDEFINED: u32 = 0u32;
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVEDFLAG_WMSDK: u32 = 32u32;
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVEDFLAG_ZIPFOLDER: u32 = 64u32;
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_APPLICATION: PERCEIVED = PERCEIVED(8i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_AUDIO: PERCEIVED = PERCEIVED(3i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_COMPRESSED: PERCEIVED = PERCEIVED(5i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_CONTACTS: PERCEIVED = PERCEIVED(10i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_CUSTOM: PERCEIVED = PERCEIVED(-3i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_DOCUMENT: PERCEIVED = PERCEIVED(6i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_FIRST: PERCEIVED = PERCEIVED(-3i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_FOLDER: PERCEIVED = PERCEIVED(-1i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_GAMEMEDIA: PERCEIVED = PERCEIVED(9i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_IMAGE: PERCEIVED = PERCEIVED(2i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_LAST: PERCEIVED = PERCEIVED(10i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_SYSTEM: PERCEIVED = PERCEIVED(7i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_TEXT: PERCEIVED = PERCEIVED(1i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_UNKNOWN: PERCEIVED = PERCEIVED(0i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_UNSPECIFIED: PERCEIVED = PERCEIVED(-2i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const PERCEIVED_TYPE_VIDEO: PERCEIVED = PERCEIVED(4i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_100_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(100i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_120_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(120i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_125_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(125i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_140_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(140i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_150_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(150i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_160_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(160i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_175_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(175i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_180_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(180i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_200_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(200i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_225_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(225i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_250_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(250i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_300_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(300i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_350_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(350i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_400_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(400i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_450_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(450i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SCALE_500_PERCENT: DEVICE_SCALE_FACTOR = DEVICE_SCALE_FACTOR(500i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_BATCHREAD: SHCOLSTATE = SHCOLSTATE(131072i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_DEFAULT: SHCOLSTATE = SHCOLSTATE(0i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_DISPLAYMASK: SHCOLSTATE = SHCOLSTATE(61440i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_EXTENDED: SHCOLSTATE = SHCOLSTATE(64i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_FIXED_RATIO: SHCOLSTATE = SHCOLSTATE(16384i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_FIXED_WIDTH: SHCOLSTATE = SHCOLSTATE(4096i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_HIDDEN: SHCOLSTATE = SHCOLSTATE(256i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_NODPISCALE: SHCOLSTATE = SHCOLSTATE(8192i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_NOSORTBYFOLDERNESS: SHCOLSTATE = SHCOLSTATE(2048i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_NO_GROUPBY: SHCOLSTATE = SHCOLSTATE(262144i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_ONBYDEFAULT: SHCOLSTATE = SHCOLSTATE(16i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_PREFER_FMTCMP: SHCOLSTATE = SHCOLSTATE(1024i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_PREFER_VARCMP: SHCOLSTATE = SHCOLSTATE(512i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_SECONDARYUI: SHCOLSTATE = SHCOLSTATE(128i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_SLOW: SHCOLSTATE = SHCOLSTATE(32i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_TYPEMASK: SHCOLSTATE = SHCOLSTATE(15i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_TYPE_DATE: SHCOLSTATE = SHCOLSTATE(3i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_TYPE_INT: SHCOLSTATE = SHCOLSTATE(2i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_TYPE_STR: SHCOLSTATE = SHCOLSTATE(1i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const SHCOLSTATE_VIEWONLY: SHCOLSTATE = SHCOLSTATE(65536i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const STRRET_CSTR: STRRET_TYPE = STRRET_TYPE(2i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const STRRET_OFFSET: STRRET_TYPE = STRRET_TYPE(1i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub const STRRET_WSTR: STRRET_TYPE = STRRET_TYPE(0i32);
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct DEVICE_SCALE_FACTOR(pub i32);
impl ::core::marker::Copy for DEVICE_SCALE_FACTOR {}
impl ::core::clone::Clone for DEVICE_SCALE_FACTOR {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for DEVICE_SCALE_FACTOR {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows_core::TypeKind for DEVICE_SCALE_FACTOR {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::fmt::Debug for DEVICE_SCALE_FACTOR {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("DEVICE_SCALE_FACTOR").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct PERCEIVED(pub i32);
impl ::core::marker::Copy for PERCEIVED {}
impl ::core::clone::Clone for PERCEIVED {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for PERCEIVED {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows_core::TypeKind for PERCEIVED {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::fmt::Debug for PERCEIVED {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("PERCEIVED").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct SHCOLSTATE(pub i32);
impl ::core::marker::Copy for SHCOLSTATE {}
impl ::core::clone::Clone for SHCOLSTATE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for SHCOLSTATE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows_core::TypeKind for SHCOLSTATE {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::fmt::Debug for SHCOLSTATE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("SHCOLSTATE").field(&self.0).finish()
    }
}
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
#[repr(transparent)]
#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
pub struct STRRET_TYPE(pub i32);
impl ::core::marker::Copy for STRRET_TYPE {}
impl ::core::clone::Clone for STRRET_TYPE {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::default::Default for STRRET_TYPE {
    fn default() -> Self {
        Self(0)
    }
}
impl ::windows_core::TypeKind for STRRET_TYPE {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::fmt::Debug for STRRET_TYPE {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_tuple("STRRET_TYPE").field(&self.0).finish()
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub struct COMDLG_FILTERSPEC {
    pub pszName: ::windows_core::PCWSTR,
    pub pszSpec: ::windows_core::PCWSTR,
}
impl ::core::marker::Copy for COMDLG_FILTERSPEC {}
impl ::core::clone::Clone for COMDLG_FILTERSPEC {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::core::fmt::Debug for COMDLG_FILTERSPEC {
    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
        f.debug_struct("COMDLG_FILTERSPEC").field("pszName", &self.pszName).field("pszSpec", &self.pszSpec).finish()
    }
}
impl ::windows_core::TypeKind for COMDLG_FILTERSPEC {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::cmp::PartialEq for COMDLG_FILTERSPEC {
    fn eq(&self, other: &Self) -> bool {
        self.pszName == other.pszName && self.pszSpec == other.pszSpec
    }
}
impl ::core::cmp::Eq for COMDLG_FILTERSPEC {}
impl ::core::default::Default for COMDLG_FILTERSPEC {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub struct ITEMIDLIST {
    pub mkid: SHITEMID,
}
impl ::core::marker::Copy for ITEMIDLIST {}
impl ::core::clone::Clone for ITEMIDLIST {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows_core::TypeKind for ITEMIDLIST {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::default::Default for ITEMIDLIST {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub struct SHELLDETAILS {
    pub fmt: i32,
    pub cxChar: i32,
    pub str: STRRET,
}
impl ::core::marker::Copy for SHELLDETAILS {}
impl ::core::clone::Clone for SHELLDETAILS {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows_core::TypeKind for SHELLDETAILS {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::default::Default for SHELLDETAILS {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub struct SHITEMID {
    pub cb: u16,
    pub abID: [u8; 1],
}
impl ::core::marker::Copy for SHITEMID {}
impl ::core::clone::Clone for SHITEMID {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows_core::TypeKind for SHITEMID {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::default::Default for SHITEMID {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub struct STRRET {
    pub uType: u32,
    pub Anonymous: STRRET_0,
}
impl ::core::marker::Copy for STRRET {}
impl ::core::clone::Clone for STRRET {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows_core::TypeKind for STRRET {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::default::Default for STRRET {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[repr(C)]
#[doc = "*Required features: `\"Win32_UI_Shell_Common\"`*"]
pub union STRRET_0 {
    pub pOleStr: ::windows_core::PWSTR,
    pub uOffset: u32,
    pub cStr: [u8; 260],
}
impl ::core::marker::Copy for STRRET_0 {}
impl ::core::clone::Clone for STRRET_0 {
    fn clone(&self) -> Self {
        *self
    }
}
impl ::windows_core::TypeKind for STRRET_0 {
    type TypeKind = ::windows_core::CopyType;
}
impl ::core::default::Default for STRRET_0 {
    fn default() -> Self {
        unsafe { ::core::mem::zeroed() }
    }
}
#[cfg(feature = "implement")]
::core::include!("impl.rs");