Skip to main content

outlook_mapi_sys/
bindings.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT license.
3
4// Bindings generated by `windows-bindgen` 0.66.0
5
6#[inline]
7pub unsafe fn BuildDisplayTable<P3>(
8    lpallocatebuffer: LPALLOCATEBUFFER,
9    lpallocatemore: LPALLOCATEMORE,
10    lpfreebuffer: LPFREEBUFFER,
11    lpmalloc: P3,
12    hinstance: windows::Win32::Foundation::HINSTANCE,
13    cpages: u32,
14    lppage: *mut DTPAGE,
15    ulflags: u32,
16    lpptable: *mut Option<IMAPITable>,
17    lpptbldata: *mut Option<ITableData>,
18) -> windows_core::Result<()>
19where
20    P3: windows_core::Param<windows::Win32::System::Com::IMalloc>,
21{
22    windows_core::link!("mapi32" "system" fn BuildDisplayTable(lpallocatebuffer : LPALLOCATEBUFFER, lpallocatemore : LPALLOCATEMORE, lpfreebuffer : LPFREEBUFFER, lpmalloc : * mut core::ffi::c_void, hinstance : windows::Win32::Foundation:: HINSTANCE, cpages : u32, lppage : *mut DTPAGE, ulflags : u32, lpptable : *mut * mut core::ffi::c_void, lpptbldata : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
23    unsafe {
24        BuildDisplayTable(
25            lpallocatebuffer,
26            lpallocatemore,
27            lpfreebuffer,
28            lpmalloc.param().abi(),
29            hinstance,
30            cpages,
31            lppage as _,
32            ulflags,
33            core::mem::transmute(lpptable),
34            core::mem::transmute(lpptbldata),
35        )
36        .ok()
37    }
38}
39#[inline]
40pub unsafe fn ChangeIdleRoutine(
41    ftg: *mut core::ffi::c_void,
42    lpfnidle: PFNIDLE,
43    lpvidleparam: *mut core::ffi::c_void,
44    priidle: i16,
45    csecidle: u32,
46    iroidle: u16,
47    ircidle: u16,
48) {
49    windows_core::link!("mapi32" "system" fn ChangeIdleRoutine(ftg : *mut core::ffi::c_void, lpfnidle : PFNIDLE, lpvidleparam : *mut core::ffi::c_void, priidle : i16, csecidle : u32, iroidle : u16, ircidle : u16));
50    unsafe {
51        ChangeIdleRoutine(
52            ftg as _,
53            lpfnidle,
54            lpvidleparam as _,
55            priidle,
56            csecidle,
57            iroidle,
58            ircidle,
59        )
60    }
61}
62#[inline]
63pub unsafe fn CloseIMsgSession(lpmsgsess: windows::Win32::Storage::Imapi::LPMSGSESS) {
64    windows_core::link!("mapi32" "system" fn CloseIMsgSession(lpmsgsess : windows::Win32::Storage::Imapi:: LPMSGSESS));
65    unsafe { CloseIMsgSession(lpmsgsess) }
66}
67#[inline]
68pub unsafe fn CreateIProp(
69    lpinterface: *mut windows_core::GUID,
70    lpallocatebuffer: LPALLOCATEBUFFER,
71    lpallocatemore: LPALLOCATEMORE,
72    lpfreebuffer: LPFREEBUFFER,
73    lpvreserved: *mut core::ffi::c_void,
74    lpppropdata: *mut Option<IPropData>,
75) -> i32 {
76    windows_core::link!("mapi32" "system" fn CreateIProp(lpinterface : *mut windows_core::GUID, lpallocatebuffer : LPALLOCATEBUFFER, lpallocatemore : LPALLOCATEMORE, lpfreebuffer : LPFREEBUFFER, lpvreserved : *mut core::ffi::c_void, lpppropdata : *mut * mut core::ffi::c_void) -> i32);
77    unsafe {
78        CreateIProp(
79            lpinterface as _,
80            lpallocatebuffer,
81            lpallocatemore,
82            lpfreebuffer,
83            lpvreserved as _,
84            core::mem::transmute(lpppropdata),
85        )
86    }
87}
88#[inline]
89pub unsafe fn CreateTable(
90    lpinterface: *mut windows_core::GUID,
91    lpallocatebuffer: LPALLOCATEBUFFER,
92    lpallocatemore: LPALLOCATEMORE,
93    lpfreebuffer: LPFREEBUFFER,
94    lpvreserved: *mut core::ffi::c_void,
95    ultabletype: u32,
96    ulproptagindexcolumn: u32,
97    lpsproptagarraycolumns: *mut SPropTagArray,
98    lpptabledata: *mut Option<ITableData>,
99) -> i32 {
100    windows_core::link!("mapi32" "system" fn CreateTable(lpinterface : *mut windows_core::GUID, lpallocatebuffer : LPALLOCATEBUFFER, lpallocatemore : LPALLOCATEMORE, lpfreebuffer : LPFREEBUFFER, lpvreserved : *mut core::ffi::c_void, ultabletype : u32, ulproptagindexcolumn : u32, lpsproptagarraycolumns : *mut SPropTagArray, lpptabledata : *mut * mut core::ffi::c_void) -> i32);
101    unsafe {
102        CreateTable(
103            lpinterface as _,
104            lpallocatebuffer,
105            lpallocatemore,
106            lpfreebuffer,
107            lpvreserved as _,
108            ultabletype,
109            ulproptagindexcolumn,
110            lpsproptagarraycolumns as _,
111            core::mem::transmute(lpptabledata),
112        )
113    }
114}
115#[inline]
116pub unsafe fn DeinitMapiUtil() {
117    windows_core::link!("mapi32" "system" fn DeinitMapiUtil());
118    unsafe { DeinitMapiUtil() }
119}
120#[inline]
121pub unsafe fn DeregisterIdleRoutine(ftg: *mut core::ffi::c_void) {
122    windows_core::link!("mapi32" "system" fn DeregisterIdleRoutine(ftg : *mut core::ffi::c_void));
123    unsafe { DeregisterIdleRoutine(ftg as _) }
124}
125#[inline]
126pub unsafe fn EnableIdleRoutine(ftg: *mut core::ffi::c_void, fenable: bool) {
127    windows_core::link!("mapi32" "system" fn EnableIdleRoutine(ftg : *mut core::ffi::c_void, fenable : windows_core::BOOL));
128    unsafe { EnableIdleRoutine(ftg as _, fenable.into()) }
129}
130#[inline]
131pub unsafe fn FBadColumnSet(lpptacols: *mut SPropTagArray) -> u32 {
132    windows_core::link!("mapi32" "system" fn FBadColumnSet(lpptacols : *mut SPropTagArray) -> u32);
133    unsafe { FBadColumnSet(lpptacols as _) }
134}
135#[inline]
136pub unsafe fn FBadEntryList(lpentrylist: *mut SBinaryArray) -> windows_core::BOOL {
137    windows_core::link!("mapi32" "system" fn FBadEntryList(lpentrylist : *mut SBinaryArray) -> windows_core::BOOL);
138    unsafe { FBadEntryList(lpentrylist as _) }
139}
140#[inline]
141pub unsafe fn FBadProp(lpprop: *mut SPropValue) -> u32 {
142    windows_core::link!("mapi32" "system" fn FBadProp(lpprop : *mut SPropValue) -> u32);
143    unsafe { FBadProp(lpprop as _) }
144}
145#[inline]
146pub unsafe fn FBadPropTag(ulproptag: u32) -> u32 {
147    windows_core::link!("mapi32" "system" fn FBadPropTag(ulproptag : u32) -> u32);
148    unsafe { FBadPropTag(ulproptag) }
149}
150#[inline]
151pub unsafe fn FBadRestriction(lpres: *mut SRestriction) -> u32 {
152    windows_core::link!("mapi32" "system" fn FBadRestriction(lpres : *mut SRestriction) -> u32);
153    unsafe { FBadRestriction(lpres as _) }
154}
155#[inline]
156pub unsafe fn FBadRglpNameID(lppnameid: *mut *mut MAPINAMEID, cnames: u32) -> windows_core::BOOL {
157    windows_core::link!("mapi32" "system" fn FBadRglpNameID(lppnameid : *mut *mut MAPINAMEID, cnames : u32) -> windows_core::BOOL);
158    unsafe { FBadRglpNameID(lppnameid as _, cnames) }
159}
160#[inline]
161pub unsafe fn FBadRglpszW(
162    lppszw: *const windows_core::PCWSTR,
163    cstrings: u32,
164) -> windows_core::BOOL {
165    windows_core::link!("mapi32" "system" fn FBadRglpszW(lppszw : *const windows_core::PCWSTR, cstrings : u32) -> windows_core::BOOL);
166    unsafe { FBadRglpszW(lppszw, cstrings) }
167}
168#[inline]
169pub unsafe fn FBadRow(lprow: *mut SRow) -> u32 {
170    windows_core::link!("mapi32" "system" fn FBadRow(lprow : *mut SRow) -> u32);
171    unsafe { FBadRow(lprow as _) }
172}
173#[inline]
174pub unsafe fn FBadRowSet(lprowset: *mut SRowSet) -> windows_core::BOOL {
175    windows_core::link!("mapi32" "system" fn FBadRowSet(lprowset : *mut SRowSet) -> windows_core::BOOL);
176    unsafe { FBadRowSet(lprowset as _) }
177}
178#[inline]
179pub unsafe fn FBadSortOrderSet(lpsos: *mut SSortOrderSet) -> u32 {
180    windows_core::link!("mapi32" "system" fn FBadSortOrderSet(lpsos : *mut SSortOrderSet) -> u32);
181    unsafe { FBadSortOrderSet(lpsos as _) }
182}
183#[inline]
184pub unsafe fn FBinFromHex(lpsz: *const i8, lpb: *mut u8) -> windows_core::BOOL {
185    windows_core::link!("mapi32" "system" fn FBinFromHex(lpsz : *const i8, lpb : *mut u8) -> windows_core::BOOL);
186    unsafe { FBinFromHex(lpsz, lpb as _) }
187}
188#[inline]
189pub unsafe fn FEqualNames(
190    lpname1: *mut MAPINAMEID,
191    lpname2: *mut MAPINAMEID,
192) -> windows_core::BOOL {
193    windows_core::link!("mapi32" "system" fn FEqualNames(lpname1 : *mut MAPINAMEID, lpname2 : *mut MAPINAMEID) -> windows_core::BOOL);
194    unsafe { FEqualNames(lpname1 as _, lpname2 as _) }
195}
196#[inline]
197pub unsafe fn FPropCompareProp(
198    lpspropvalue1: *mut SPropValue,
199    ulrelop: u32,
200    lpspropvalue2: *mut SPropValue,
201) -> windows_core::BOOL {
202    windows_core::link!("mapi32" "system" fn FPropCompareProp(lpspropvalue1 : *mut SPropValue, ulrelop : u32, lpspropvalue2 : *mut SPropValue) -> windows_core::BOOL);
203    unsafe { FPropCompareProp(lpspropvalue1 as _, ulrelop, lpspropvalue2 as _) }
204}
205#[inline]
206pub unsafe fn FPropContainsProp(
207    lpspropvaluedst: *mut SPropValue,
208    lpspropvaluesrc: *mut SPropValue,
209    ulfuzzylevel: u32,
210) -> windows_core::BOOL {
211    windows_core::link!("mapi32" "system" fn FPropContainsProp(lpspropvaluedst : *mut SPropValue, lpspropvaluesrc : *mut SPropValue, ulfuzzylevel : u32) -> windows_core::BOOL);
212    unsafe { FPropContainsProp(lpspropvaluedst as _, lpspropvaluesrc as _, ulfuzzylevel) }
213}
214#[inline]
215pub unsafe fn FPropExists<P0>(lpmapiprop: P0, ulproptag: u32) -> windows_core::BOOL
216where
217    P0: windows_core::Param<IMAPIProp>,
218{
219    windows_core::link!("mapi32" "system" fn FPropExists(lpmapiprop : * mut core::ffi::c_void, ulproptag : u32) -> windows_core::BOOL);
220    unsafe { FPropExists(lpmapiprop.param().abi(), ulproptag) }
221}
222#[inline]
223pub unsafe fn FreePadrlist(lpadrlist: *mut ADRLIST) {
224    windows_core::link!("mapi32" "system" fn FreePadrlist(lpadrlist : *mut ADRLIST));
225    unsafe { FreePadrlist(lpadrlist as _) }
226}
227#[inline]
228pub unsafe fn FreeProws(lprows: *mut SRowSet) {
229    windows_core::link!("mapi32" "system" fn FreeProws(lprows : *mut SRowSet));
230    unsafe { FreeProws(lprows as _) }
231}
232#[inline]
233pub unsafe fn FtAddFt(
234    ftaddend1: windows::Win32::Foundation::FILETIME,
235    ftaddend2: windows::Win32::Foundation::FILETIME,
236) -> windows::Win32::Foundation::FILETIME {
237    windows_core::link!("mapi32" "system" fn FtAddFt(ftaddend1 : windows::Win32::Foundation:: FILETIME, ftaddend2 : windows::Win32::Foundation:: FILETIME) -> windows::Win32::Foundation:: FILETIME);
238    unsafe {
239        FtAddFt(
240            core::mem::transmute(ftaddend1),
241            core::mem::transmute(ftaddend2),
242        )
243    }
244}
245#[inline]
246pub unsafe fn FtMulDw(
247    ftmultiplier: u32,
248    ftmultiplicand: windows::Win32::Foundation::FILETIME,
249) -> windows::Win32::Foundation::FILETIME {
250    windows_core::link!("mapi32" "system" fn FtMulDw(ftmultiplier : u32, ftmultiplicand : windows::Win32::Foundation:: FILETIME) -> windows::Win32::Foundation:: FILETIME);
251    unsafe { FtMulDw(ftmultiplier, core::mem::transmute(ftmultiplicand)) }
252}
253#[inline]
254pub unsafe fn FtMulDwDw(
255    ftmultiplicand: u32,
256    ftmultiplier: u32,
257) -> windows::Win32::Foundation::FILETIME {
258    windows_core::link!("mapi32" "system" fn FtMulDwDw(ftmultiplicand : u32, ftmultiplier : u32) -> windows::Win32::Foundation:: FILETIME);
259    unsafe { FtMulDwDw(ftmultiplicand, ftmultiplier) }
260}
261#[inline]
262pub unsafe fn FtNegFt(
263    ft: windows::Win32::Foundation::FILETIME,
264) -> windows::Win32::Foundation::FILETIME {
265    windows_core::link!("mapi32" "system" fn FtNegFt(ft : windows::Win32::Foundation:: FILETIME) -> windows::Win32::Foundation:: FILETIME);
266    unsafe { FtNegFt(core::mem::transmute(ft)) }
267}
268#[inline]
269pub unsafe fn FtSubFt(
270    ftminuend: windows::Win32::Foundation::FILETIME,
271    ftsubtrahend: windows::Win32::Foundation::FILETIME,
272) -> windows::Win32::Foundation::FILETIME {
273    windows_core::link!("mapi32" "system" fn FtSubFt(ftminuend : windows::Win32::Foundation:: FILETIME, ftsubtrahend : windows::Win32::Foundation:: FILETIME) -> windows::Win32::Foundation:: FILETIME);
274    unsafe {
275        FtSubFt(
276            core::mem::transmute(ftminuend),
277            core::mem::transmute(ftsubtrahend),
278        )
279    }
280}
281#[inline]
282pub unsafe fn FtgRegisterIdleRoutine(
283    lpfnidle: PFNIDLE,
284    lpvidleparam: *mut core::ffi::c_void,
285    priidle: i16,
286    csecidle: u32,
287    iroidle: u16,
288) -> *mut core::ffi::c_void {
289    windows_core::link!("mapi32" "system" fn FtgRegisterIdleRoutine(lpfnidle : PFNIDLE, lpvidleparam : *mut core::ffi::c_void, priidle : i16, csecidle : u32, iroidle : u16) -> *mut core::ffi::c_void);
290    unsafe { FtgRegisterIdleRoutine(lpfnidle, lpvidleparam as _, priidle, csecidle, iroidle) }
291}
292#[inline]
293pub unsafe fn GetAttribIMsgOnIStg(
294    lpobject: *mut core::ffi::c_void,
295    lpproptagarray: *mut SPropTagArray,
296    lpppropattrarray: *mut *mut SPropAttrArray,
297) -> windows_core::Result<()> {
298    windows_core::link!("mapi32" "system" fn GetAttribIMsgOnIStg(lpobject : *mut core::ffi::c_void, lpproptagarray : *mut SPropTagArray, lpppropattrarray : *mut *mut SPropAttrArray) -> windows_core::HRESULT);
299    unsafe { GetAttribIMsgOnIStg(lpobject as _, lpproptagarray as _, lpppropattrarray as _).ok() }
300}
301#[inline]
302pub unsafe fn HexFromBin(lpb: *mut u8, cb: i32, lpsz: *const i8) {
303    windows_core::link!("mapi32" "system" fn HexFromBin(lpb : *mut u8, cb : i32, lpsz : *const i8));
304    unsafe { HexFromBin(lpb as _, cb, lpsz) }
305}
306#[inline]
307pub unsafe fn HrAddColumns<P0>(
308    lptbl: P0,
309    lpproptagcolumnsnew: *mut SPropTagArray,
310    lpallocatebuffer: LPALLOCATEBUFFER,
311    lpfreebuffer: LPFREEBUFFER,
312) -> windows_core::Result<()>
313where
314    P0: windows_core::Param<IMAPITable>,
315{
316    windows_core::link!("mapi32" "system" fn HrAddColumns(lptbl : * mut core::ffi::c_void, lpproptagcolumnsnew : *mut SPropTagArray, lpallocatebuffer : LPALLOCATEBUFFER, lpfreebuffer : LPFREEBUFFER) -> windows_core::HRESULT);
317    unsafe {
318        HrAddColumns(
319            lptbl.param().abi(),
320            lpproptagcolumnsnew as _,
321            lpallocatebuffer,
322            lpfreebuffer,
323        )
324        .ok()
325    }
326}
327#[inline]
328pub unsafe fn HrAddColumnsEx<P0>(
329    lptbl: P0,
330    lpproptagcolumnsnew: *mut SPropTagArray,
331    lpallocatebuffer: LPALLOCATEBUFFER,
332    lpfreebuffer: LPFREEBUFFER,
333    lpfnfiltercolumns: isize,
334) -> windows_core::Result<()>
335where
336    P0: windows_core::Param<IMAPITable>,
337{
338    windows_core::link!("mapi32" "system" fn HrAddColumnsEx(lptbl : * mut core::ffi::c_void, lpproptagcolumnsnew : *mut SPropTagArray, lpallocatebuffer : LPALLOCATEBUFFER, lpfreebuffer : LPFREEBUFFER, lpfnfiltercolumns : isize) -> windows_core::HRESULT);
339    unsafe {
340        HrAddColumnsEx(
341            lptbl.param().abi(),
342            lpproptagcolumnsnew as _,
343            lpallocatebuffer,
344            lpfreebuffer,
345            lpfnfiltercolumns,
346        )
347        .ok()
348    }
349}
350#[inline]
351pub unsafe fn HrAllocAdviseSink(
352    lpfncallback: LPNOTIFCALLBACK,
353    lpvcontext: *mut core::ffi::c_void,
354    lppadvisesink: *mut Option<IMAPIAdviseSink>,
355) -> windows_core::Result<()> {
356    windows_core::link!("mapi32" "system" fn HrAllocAdviseSink(lpfncallback : LPNOTIFCALLBACK, lpvcontext : *mut core::ffi::c_void, lppadvisesink : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
357    unsafe {
358        HrAllocAdviseSink(
359            lpfncallback,
360            lpvcontext as _,
361            core::mem::transmute(lppadvisesink),
362        )
363        .ok()
364    }
365}
366#[inline]
367pub unsafe fn HrCompareABEntryIDsWithExchangeContext<P0, P2>(
368    pmsess: P0,
369    pemsmdbuid: *const MAPIUID,
370    paddrbook: P2,
371    cbentryid1: u32,
372    lpentryid1: *mut ENTRYID,
373    cbentryid2: u32,
374    lpentryid2: *mut ENTRYID,
375    ulflags: u32,
376    lpulresult: *mut u32,
377) -> windows_core::Result<()>
378where
379    P0: windows_core::Param<IMAPISession>,
380    P2: windows_core::Param<IAddrBook>,
381{
382    windows_core::link!("olmapi32" "system" fn HrCompareABEntryIDsWithExchangeContext(pmsess : * mut core::ffi::c_void, pemsmdbuid : *const MAPIUID, paddrbook : * mut core::ffi::c_void, cbentryid1 : u32, lpentryid1 : *mut ENTRYID, cbentryid2 : u32, lpentryid2 : *mut ENTRYID, ulflags : u32, lpulresult : *mut u32) -> windows_core::HRESULT);
383    unsafe {
384        HrCompareABEntryIDsWithExchangeContext(
385            pmsess.param().abi(),
386            pemsmdbuid,
387            paddrbook.param().abi(),
388            cbentryid1,
389            lpentryid1 as _,
390            cbentryid2,
391            lpentryid2 as _,
392            ulflags,
393            lpulresult as _,
394        )
395        .ok()
396    }
397}
398#[inline]
399pub unsafe fn HrComposeEID<P0>(
400    lpsession: P0,
401    cbstorerecordkey: u32,
402    lpstorerecordkey: *mut u8,
403    cbmsgentryid: u32,
404    lpmsgentryid: *mut ENTRYID,
405    lpcbeid: *mut u32,
406    lppentryid: *mut *mut ENTRYID,
407) -> windows_core::Result<()>
408where
409    P0: windows_core::Param<IMAPISession>,
410{
411    windows_core::link!("mapi32" "system" fn HrComposeEID(lpsession : * mut core::ffi::c_void, cbstorerecordkey : u32, lpstorerecordkey : *mut u8, cbmsgentryid : u32, lpmsgentryid : *mut ENTRYID, lpcbeid : *mut u32, lppentryid : *mut *mut ENTRYID) -> windows_core::HRESULT);
412    unsafe {
413        HrComposeEID(
414            lpsession.param().abi(),
415            cbstorerecordkey,
416            lpstorerecordkey as _,
417            cbmsgentryid,
418            lpmsgentryid as _,
419            lpcbeid as _,
420            lppentryid as _,
421        )
422        .ok()
423    }
424}
425#[inline]
426pub unsafe fn HrComposeMsgID<P0>(
427    lpsession: P0,
428    cbstoresearchkey: u32,
429    pstoresearchkey: *mut u8,
430    cbmsgentryid: u32,
431    lpmsgentryid: *mut ENTRYID,
432    lpszmsgid: *const *const i8,
433) -> windows_core::Result<()>
434where
435    P0: windows_core::Param<IMAPISession>,
436{
437    windows_core::link!("mapi32" "system" fn HrComposeMsgID(lpsession : * mut core::ffi::c_void, cbstoresearchkey : u32, pstoresearchkey : *mut u8, cbmsgentryid : u32, lpmsgentryid : *mut ENTRYID, lpszmsgid : *const *const i8) -> windows_core::HRESULT);
438    unsafe {
439        HrComposeMsgID(
440            lpsession.param().abi(),
441            cbstoresearchkey,
442            pstoresearchkey as _,
443            cbmsgentryid,
444            lpmsgentryid as _,
445            lpszmsgid,
446        )
447        .ok()
448    }
449}
450#[inline]
451pub unsafe fn HrDecomposeEID<P0>(
452    lpsession: P0,
453    cbentryid: u32,
454    lpentryid: *mut ENTRYID,
455    lpcbstoreentryid: *mut u32,
456    lppstoreentryid: *mut *mut ENTRYID,
457    lpcbmsgentryid: *mut u32,
458    lppmsgentryid: *mut *mut ENTRYID,
459) -> windows_core::Result<()>
460where
461    P0: windows_core::Param<IMAPISession>,
462{
463    windows_core::link!("mapi32" "system" fn HrDecomposeEID(lpsession : * mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpcbstoreentryid : *mut u32, lppstoreentryid : *mut *mut ENTRYID, lpcbmsgentryid : *mut u32, lppmsgentryid : *mut *mut ENTRYID) -> windows_core::HRESULT);
464    unsafe {
465        HrDecomposeEID(
466            lpsession.param().abi(),
467            cbentryid,
468            lpentryid as _,
469            lpcbstoreentryid as _,
470            lppstoreentryid as _,
471            lpcbmsgentryid as _,
472            lppmsgentryid as _,
473        )
474        .ok()
475    }
476}
477#[inline]
478pub unsafe fn HrDecomposeMsgID<P0>(
479    lpsession: P0,
480    lpszmsgid: *const i8,
481    lpcbstoreentryid: *mut u32,
482    lppstoreentryid: *mut *mut ENTRYID,
483    lppcbmsgentryid: *mut u32,
484    lppmsgentryid: *mut *mut ENTRYID,
485) -> windows_core::Result<()>
486where
487    P0: windows_core::Param<IMAPISession>,
488{
489    windows_core::link!("mapi32" "system" fn HrDecomposeMsgID(lpsession : * mut core::ffi::c_void, lpszmsgid : *const i8, lpcbstoreentryid : *mut u32, lppstoreentryid : *mut *mut ENTRYID, lppcbmsgentryid : *mut u32, lppmsgentryid : *mut *mut ENTRYID) -> windows_core::HRESULT);
490    unsafe {
491        HrDecomposeMsgID(
492            lpsession.param().abi(),
493            lpszmsgid,
494            lpcbstoreentryid as _,
495            lppstoreentryid as _,
496            lppcbmsgentryid as _,
497            lppmsgentryid as _,
498        )
499        .ok()
500    }
501}
502#[inline]
503pub unsafe fn HrDispatchNotifications(ulflags: u32) -> windows_core::Result<()> {
504    windows_core::link!("mapi32" "system" fn HrDispatchNotifications(ulflags : u32) -> windows_core::HRESULT);
505    unsafe { HrDispatchNotifications(ulflags).ok() }
506}
507#[inline]
508pub unsafe fn HrDoABDetailsWithExchangeContext<P0, P2>(
509    pmsess: P0,
510    pemsmdbuid: *const MAPIUID,
511    paddrbook: P2,
512    lpuluiparam: *mut usize,
513    lpfndismiss: LPFNDISMISS,
514    lpvdismisscontext: *mut core::ffi::c_void,
515    cbentryid: u32,
516    lpentryid: *mut ENTRYID,
517    lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
518    lpvbuttoncontext: *mut core::ffi::c_void,
519    lpszbuttontext: *mut i8,
520    ulflags: u32,
521) -> windows_core::Result<()>
522where
523    P0: windows_core::Param<IMAPISession>,
524    P2: windows_core::Param<IAddrBook>,
525{
526    windows_core::link!("olmapi32" "system" fn HrDoABDetailsWithExchangeContext(pmsess : * mut core::ffi::c_void, pemsmdbuid : *const MAPIUID, paddrbook : * mut core::ffi::c_void, lpuluiparam : *mut usize, lpfndismiss : LPFNDISMISS, lpvdismisscontext : *mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpfbuttoncallback : windows::Win32::System::AddressBook:: LPFNBUTTON, lpvbuttoncontext : *mut core::ffi::c_void, lpszbuttontext : *mut i8, ulflags : u32) -> windows_core::HRESULT);
527    unsafe {
528        HrDoABDetailsWithExchangeContext(
529            pmsess.param().abi(),
530            pemsmdbuid,
531            paddrbook.param().abi(),
532            lpuluiparam as _,
533            lpfndismiss,
534            lpvdismisscontext as _,
535            cbentryid,
536            lpentryid as _,
537            lpfbuttoncallback,
538            lpvbuttoncontext as _,
539            lpszbuttontext as _,
540            ulflags,
541        )
542        .ok()
543    }
544}
545#[inline]
546pub unsafe fn HrDoABDetailsWithProviderUID<P1>(
547    pemsabpuid: *const MAPIUID,
548    paddrbook: P1,
549    lpuluiparam: *mut usize,
550    lpfndismiss: LPFNDISMISS,
551    lpvdismisscontext: *mut core::ffi::c_void,
552    cbentryid: u32,
553    lpentryid: *mut ENTRYID,
554    lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
555    lpvbuttoncontext: *mut core::ffi::c_void,
556    lpszbuttontext: *mut i8,
557    ulflags: u32,
558) -> windows_core::Result<()>
559where
560    P1: windows_core::Param<IAddrBook>,
561{
562    windows_core::link!("olmapi32" "system" fn HrDoABDetailsWithProviderUID(pemsabpuid : *const MAPIUID, paddrbook : * mut core::ffi::c_void, lpuluiparam : *mut usize, lpfndismiss : LPFNDISMISS, lpvdismisscontext : *mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpfbuttoncallback : windows::Win32::System::AddressBook:: LPFNBUTTON, lpvbuttoncontext : *mut core::ffi::c_void, lpszbuttontext : *mut i8, ulflags : u32) -> windows_core::HRESULT);
563    unsafe {
564        HrDoABDetailsWithProviderUID(
565            pemsabpuid,
566            paddrbook.param().abi(),
567            lpuluiparam as _,
568            lpfndismiss,
569            lpvdismisscontext as _,
570            cbentryid,
571            lpentryid as _,
572            lpfbuttoncallback,
573            lpvbuttoncontext as _,
574            lpszbuttontext as _,
575            ulflags,
576        )
577        .ok()
578    }
579}
580#[inline]
581pub unsafe fn HrEntryIDFromSz(
582    lpsz: *const i8,
583    lpcb: *mut u32,
584    lppentryid: *mut *mut ENTRYID,
585) -> windows_core::Result<()> {
586    windows_core::link!("mapi32" "system" fn HrEntryIDFromSz(lpsz : *const i8, lpcb : *mut u32, lppentryid : *mut *mut ENTRYID) -> windows_core::HRESULT);
587    unsafe { HrEntryIDFromSz(lpsz, lpcb as _, lppentryid as _).ok() }
588}
589#[inline]
590pub unsafe fn HrGetGALFromEmsmdbUID<P0, P1>(
591    psess: P0,
592    lpadrbook: P1,
593    pemsmdbuid: *const MAPIUID,
594    lpcbeid: *mut u32,
595    lppeid: *mut *mut ENTRYID,
596) -> windows_core::Result<()>
597where
598    P0: windows_core::Param<IMAPISession>,
599    P1: windows_core::Param<IAddrBook>,
600{
601    windows_core::link!("olmapi32" "system" fn HrGetGALFromEmsmdbUID(psess : * mut core::ffi::c_void, lpadrbook : * mut core::ffi::c_void, pemsmdbuid : *const MAPIUID, lpcbeid : *mut u32, lppeid : *mut *mut ENTRYID) -> windows_core::HRESULT);
602    unsafe {
603        HrGetGALFromEmsmdbUID(
604            psess.param().abi(),
605            lpadrbook.param().abi(),
606            pemsmdbuid,
607            lpcbeid as _,
608            lppeid as _,
609        )
610        .ok()
611    }
612}
613#[inline]
614pub unsafe fn HrGetOneProp<P0>(
615    lpmapiprop: P0,
616    ulproptag: u32,
617    lppprop: *mut *mut SPropValue,
618) -> windows_core::Result<()>
619where
620    P0: windows_core::Param<IMAPIProp>,
621{
622    windows_core::link!("mapi32" "system" fn HrGetOneProp(lpmapiprop : * mut core::ffi::c_void, ulproptag : u32, lppprop : *mut *mut SPropValue) -> windows_core::HRESULT);
623    unsafe { HrGetOneProp(lpmapiprop.param().abi(), ulproptag, lppprop as _).ok() }
624}
625#[inline]
626pub unsafe fn HrIStorageFromStream<P0>(
627    lpunkin: P0,
628    lpinterface: *mut windows_core::GUID,
629    ulflags: u32,
630    lppstorageout: *mut Option<windows::Win32::System::Com::StructuredStorage::IStorage>,
631) -> windows_core::Result<()>
632where
633    P0: windows_core::Param<windows_core::IUnknown>,
634{
635    windows_core::link!("mapi32" "system" fn HrIStorageFromStream(lpunkin : * mut core::ffi::c_void, lpinterface : *mut windows_core::GUID, ulflags : u32, lppstorageout : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
636    unsafe {
637        HrIStorageFromStream(
638            lpunkin.param().abi(),
639            lpinterface as _,
640            ulflags,
641            core::mem::transmute(lppstorageout),
642        )
643        .ok()
644    }
645}
646#[inline]
647pub unsafe fn HrOpenABEntryUsingDefaultContext<P0, P1>(
648    pmsess: P0,
649    paddrbook: P1,
650    cbentryid: u32,
651    lpentryid: *mut ENTRYID,
652    lpinterface: *mut windows_core::GUID,
653    ulflags: u32,
654    lpulobjtype: *mut u32,
655    lppunk: *mut Option<windows_core::IUnknown>,
656) -> windows_core::Result<()>
657where
658    P0: windows_core::Param<IMAPISession>,
659    P1: windows_core::Param<IAddrBook>,
660{
661    windows_core::link!("olmapi32" "system" fn HrOpenABEntryUsingDefaultContext(pmsess : * mut core::ffi::c_void, paddrbook : * mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpinterface : *mut windows_core::GUID, ulflags : u32, lpulobjtype : *mut u32, lppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
662    unsafe {
663        HrOpenABEntryUsingDefaultContext(
664            pmsess.param().abi(),
665            paddrbook.param().abi(),
666            cbentryid,
667            lpentryid as _,
668            lpinterface as _,
669            ulflags,
670            lpulobjtype as _,
671            core::mem::transmute(lppunk),
672        )
673        .ok()
674    }
675}
676#[inline]
677pub unsafe fn HrOpenABEntryWithExchangeContext<P0, P2>(
678    pmsess: P0,
679    pemsmdbuid: *const MAPIUID,
680    paddrbook: P2,
681    cbentryid: u32,
682    lpentryid: *mut ENTRYID,
683    lpinterface: *mut windows_core::GUID,
684    ulflags: u32,
685    lpulobjtype: *mut u32,
686    lppunk: *mut Option<windows_core::IUnknown>,
687) -> windows_core::Result<()>
688where
689    P0: windows_core::Param<IMAPISession>,
690    P2: windows_core::Param<IAddrBook>,
691{
692    windows_core::link!("olmapi32" "system" fn HrOpenABEntryWithExchangeContext(pmsess : * mut core::ffi::c_void, pemsmdbuid : *const MAPIUID, paddrbook : * mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpinterface : *mut windows_core::GUID, ulflags : u32, lpulobjtype : *mut u32, lppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
693    unsafe {
694        HrOpenABEntryWithExchangeContext(
695            pmsess.param().abi(),
696            pemsmdbuid,
697            paddrbook.param().abi(),
698            cbentryid,
699            lpentryid as _,
700            lpinterface as _,
701            ulflags,
702            lpulobjtype as _,
703            core::mem::transmute(lppunk),
704        )
705        .ok()
706    }
707}
708#[inline]
709pub unsafe fn HrOpenABEntryWithProviderUID<P1>(
710    pemsabpuid: *const MAPIUID,
711    paddrbook: P1,
712    cbentryid: u32,
713    lpentryid: *mut ENTRYID,
714    lpinterface: *mut windows_core::GUID,
715    ulflags: u32,
716    lpulobjtype: *mut u32,
717    lppunk: *mut Option<windows_core::IUnknown>,
718) -> windows_core::Result<()>
719where
720    P1: windows_core::Param<IAddrBook>,
721{
722    windows_core::link!("olmapi32" "system" fn HrOpenABEntryWithProviderUID(pemsabpuid : *const MAPIUID, paddrbook : * mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpinterface : *mut windows_core::GUID, ulflags : u32, lpulobjtype : *mut u32, lppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
723    unsafe {
724        HrOpenABEntryWithProviderUID(
725            pemsabpuid,
726            paddrbook.param().abi(),
727            cbentryid,
728            lpentryid as _,
729            lpinterface as _,
730            ulflags,
731            lpulobjtype as _,
732            core::mem::transmute(lppunk),
733        )
734        .ok()
735    }
736}
737#[inline]
738pub unsafe fn HrOpenABEntryWithProviderUIDSupport<P1>(
739    pemsabpuid: *const MAPIUID,
740    lpsup: P1,
741    cbentryid: u32,
742    lpentryid: *mut ENTRYID,
743    lpinterface: *mut windows_core::GUID,
744    ulflags: u32,
745    lpulobjtype: *mut u32,
746    lppunk: *mut Option<windows_core::IUnknown>,
747) -> windows_core::Result<()>
748where
749    P1: windows_core::Param<IMAPISupport>,
750{
751    windows_core::link!("olmapi32" "system" fn HrOpenABEntryWithProviderUIDSupport(pemsabpuid : *const MAPIUID, lpsup : * mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpinterface : *mut windows_core::GUID, ulflags : u32, lpulobjtype : *mut u32, lppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
752    unsafe {
753        HrOpenABEntryWithProviderUIDSupport(
754            pemsabpuid,
755            lpsup.param().abi(),
756            cbentryid,
757            lpentryid as _,
758            lpinterface as _,
759            ulflags,
760            lpulobjtype as _,
761            core::mem::transmute(lppunk),
762        )
763        .ok()
764    }
765}
766#[inline]
767pub unsafe fn HrOpenABEntryWithResolvedRow<P1>(
768    prwresolved: *mut SRow,
769    paddrbook: P1,
770    cbentryid: u32,
771    lpentryid: *mut ENTRYID,
772    lpinterface: *mut windows_core::GUID,
773    ulflags: u32,
774    lpulobjtype: *mut u32,
775    lppunk: *mut Option<windows_core::IUnknown>,
776) -> windows_core::Result<()>
777where
778    P1: windows_core::Param<IAddrBook>,
779{
780    windows_core::link!("olmapi32" "system" fn HrOpenABEntryWithResolvedRow(prwresolved : *mut SRow, paddrbook : * mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpinterface : *mut windows_core::GUID, ulflags : u32, lpulobjtype : *mut u32, lppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
781    unsafe {
782        HrOpenABEntryWithResolvedRow(
783            prwresolved as _,
784            paddrbook.param().abi(),
785            cbentryid,
786            lpentryid as _,
787            lpinterface as _,
788            ulflags,
789            lpulobjtype as _,
790            core::mem::transmute(lppunk),
791        )
792        .ok()
793    }
794}
795#[inline]
796pub unsafe fn HrOpenABEntryWithSupport<P0>(
797    lpsup: P0,
798    cbentryid: u32,
799    lpentryid: *mut ENTRYID,
800    lpinterface: *mut windows_core::GUID,
801    ulflags: u32,
802    lpulobjtype: *mut u32,
803    lppunk: *mut Option<windows_core::IUnknown>,
804) -> windows_core::Result<()>
805where
806    P0: windows_core::Param<IMAPISupport>,
807{
808    windows_core::link!("olmapi32" "system" fn HrOpenABEntryWithSupport(lpsup : * mut core::ffi::c_void, cbentryid : u32, lpentryid : *mut ENTRYID, lpinterface : *mut windows_core::GUID, ulflags : u32, lpulobjtype : *mut u32, lppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
809    unsafe {
810        HrOpenABEntryWithSupport(
811            lpsup.param().abi(),
812            cbentryid,
813            lpentryid as _,
814            lpinterface as _,
815            ulflags,
816            lpulobjtype as _,
817            core::mem::transmute(lppunk),
818        )
819        .ok()
820    }
821}
822#[inline]
823pub unsafe fn HrQueryAllRows<P0>(
824    lptable: P0,
825    lpproptags: *mut SPropTagArray,
826    lprestriction: *mut SRestriction,
827    lpsortorderset: *mut SSortOrderSet,
828    crowsmax: i32,
829    lpprows: *mut *mut SRowSet,
830) -> windows_core::Result<()>
831where
832    P0: windows_core::Param<IMAPITable>,
833{
834    windows_core::link!("mapi32" "system" fn HrQueryAllRows(lptable : * mut core::ffi::c_void, lpproptags : *mut SPropTagArray, lprestriction : *mut SRestriction, lpsortorderset : *mut SSortOrderSet, crowsmax : i32, lpprows : *mut *mut SRowSet) -> windows_core::HRESULT);
835    unsafe {
836        HrQueryAllRows(
837            lptable.param().abi(),
838            lpproptags as _,
839            lprestriction as _,
840            lpsortorderset as _,
841            crowsmax,
842            lpprows as _,
843        )
844        .ok()
845    }
846}
847#[inline]
848pub unsafe fn HrSetOneProp<P0>(lpmapiprop: P0, lpprop: *mut SPropValue) -> windows_core::Result<()>
849where
850    P0: windows_core::Param<IMAPIProp>,
851{
852    windows_core::link!("mapi32" "system" fn HrSetOneProp(lpmapiprop : * mut core::ffi::c_void, lpprop : *mut SPropValue) -> windows_core::HRESULT);
853    unsafe { HrSetOneProp(lpmapiprop.param().abi(), lpprop as _).ok() }
854}
855#[inline]
856pub unsafe fn HrSzFromEntryID(
857    cb: u32,
858    lpentryid: *mut ENTRYID,
859    lpsz: *const *const i8,
860) -> windows_core::Result<()> {
861    windows_core::link!("mapi32" "system" fn HrSzFromEntryID(cb : u32, lpentryid : *mut ENTRYID, lpsz : *const *const i8) -> windows_core::HRESULT);
862    unsafe { HrSzFromEntryID(cb, lpentryid as _, lpsz).ok() }
863}
864#[inline]
865pub unsafe fn HrThisThreadAdviseSink<P0>(lpadvisesink: P0) -> windows_core::Result<IMAPIAdviseSink>
866where
867    P0: windows_core::Param<IMAPIAdviseSink>,
868{
869    windows_core::link!("mapi32" "system" fn HrThisThreadAdviseSink(lpadvisesink : * mut core::ffi::c_void, lppadvisesink : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
870    unsafe {
871        let mut result__ = core::mem::zeroed();
872        HrThisThreadAdviseSink(lpadvisesink.param().abi(), &mut result__)
873            .and_then(|| windows_core::Type::from_abi(result__))
874    }
875}
876#[inline]
877pub unsafe fn HrValidateIPMSubtree<P0>(
878    lpmdb: P0,
879    ulflags: u32,
880    lpcvalues: *mut u32,
881    lppvalues: *mut *mut SPropValue,
882    lpperr: *mut *mut MAPIERROR,
883) -> windows_core::Result<()>
884where
885    P0: windows_core::Param<IMsgStore>,
886{
887    windows_core::link!("mapi32" "system" fn HrValidateIPMSubtree(lpmdb : * mut core::ffi::c_void, ulflags : u32, lpcvalues : *mut u32, lppvalues : *mut *mut SPropValue, lpperr : *mut *mut MAPIERROR) -> windows_core::HRESULT);
888    unsafe {
889        HrValidateIPMSubtree(
890            lpmdb.param().abi(),
891            ulflags,
892            lpcvalues as _,
893            lppvalues as _,
894            lpperr as _,
895        )
896        .ok()
897    }
898}
899#[inline]
900pub unsafe fn HrValidateParameters(
901    emethod: METHODS,
902    ppfirstarg: *mut *mut core::ffi::c_void,
903) -> windows_core::Result<()> {
904    windows_core::link!("olmapi32" "system" fn HrValidateParameters(emethod : METHODS, ppfirstarg : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
905    unsafe { HrValidateParameters(emethod, ppfirstarg as _).ok() }
906}
907#[inline]
908pub unsafe fn IsBadBoundedStringPtr(
909    lpsz: *const core::ffi::c_void,
910    cchmax: u32,
911) -> windows_core::BOOL {
912    windows_core::link!("mapi32" "system" fn IsBadBoundedStringPtr(lpsz : *const core::ffi::c_void, cchmax : u32) -> windows_core::BOOL);
913    unsafe { IsBadBoundedStringPtr(lpsz, cchmax) }
914}
915#[inline]
916pub unsafe fn LPropCompareProp(
917    lpspropvaluea: *mut SPropValue,
918    lpspropvalueb: *mut SPropValue,
919) -> i32 {
920    windows_core::link!("mapi32" "system" fn LPropCompareProp(lpspropvaluea : *mut SPropValue, lpspropvalueb : *mut SPropValue) -> i32);
921    unsafe { LPropCompareProp(lpspropvaluea as _, lpspropvalueb as _) }
922}
923#[inline]
924pub unsafe fn LpValFindProp(
925    ulproptag: u32,
926    cvalues: u32,
927    lpproparray: *mut SPropValue,
928) -> *mut SPropValue {
929    windows_core::link!("mapi32" "system" fn LpValFindProp(ulproptag : u32, cvalues : u32, lpproparray : *mut SPropValue) -> *mut SPropValue);
930    unsafe { LpValFindProp(ulproptag, cvalues, lpproparray as _) }
931}
932#[inline]
933pub unsafe fn MAPIAddress<P2, P4>(
934    param0: usize,
935    param1: usize,
936    param2: P2,
937    param3: u32,
938    param4: P4,
939    param5: u32,
940    param6: *mut MapiRecipDesc,
941    param7: u32,
942    param8: u32,
943    param9: *mut u32,
944    param10: *mut *mut MapiRecipDesc,
945) -> u32
946where
947    P2: windows_core::Param<windows_core::PCSTR>,
948    P4: windows_core::Param<windows_core::PCSTR>,
949{
950    windows_core::link!("mapi32" "system" fn MAPIAddress(param0 : usize, param1 : usize, param2 : windows_core::PCSTR, param3 : u32, param4 : windows_core::PCSTR, param5 : u32, param6 : *mut MapiRecipDesc, param7 : u32, param8 : u32, param9 : *mut u32, param10 : *mut *mut MapiRecipDesc) -> u32);
951    unsafe {
952        MAPIAddress(
953            param0,
954            param1,
955            param2.param().abi(),
956            param3,
957            param4.param().abi(),
958            param5,
959            param6 as _,
960            param7,
961            param8,
962            param9 as _,
963            param10 as _,
964        )
965    }
966}
967#[inline]
968pub unsafe fn MAPIAdminProfiles(param0: u32) -> windows_core::Result<IProfAdmin> {
969    windows_core::link!("mapi32" "system" fn MAPIAdminProfiles(param0 : u32, param1 : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
970    unsafe {
971        let mut result__ = core::mem::zeroed();
972        MAPIAdminProfiles(param0, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
973    }
974}
975#[inline]
976pub unsafe fn MAPIAllocateBuffer(param0: u32, param1: *mut *mut core::ffi::c_void) -> i32 {
977    windows_core::link!("mapi32" "system" fn MAPIAllocateBuffer(param0 : u32, param1 : *mut *mut core::ffi::c_void) -> i32);
978    unsafe { MAPIAllocateBuffer(param0, param1 as _) }
979}
980#[inline]
981pub unsafe fn MAPIAllocateMore(
982    param0: u32,
983    param1: *mut core::ffi::c_void,
984    param2: *mut *mut core::ffi::c_void,
985) -> i32 {
986    windows_core::link!("mapi32" "system" fn MAPIAllocateMore(param0 : u32, param1 : *mut core::ffi::c_void, param2 : *mut *mut core::ffi::c_void) -> i32);
987    unsafe { MAPIAllocateMore(param0, param1 as _, param2 as _) }
988}
989#[inline]
990pub unsafe fn MAPIDeinitIdle() {
991    windows_core::link!("mapi32" "system" fn MAPIDeinitIdle());
992    unsafe { MAPIDeinitIdle() }
993}
994#[inline]
995pub unsafe fn MAPIDeleteMail<P2>(
996    param0: usize,
997    param1: usize,
998    param2: P2,
999    param3: u32,
1000    param4: u32,
1001) -> u32
1002where
1003    P2: windows_core::Param<windows_core::PCSTR>,
1004{
1005    windows_core::link!("mapi32" "system" fn MAPIDeleteMail(param0 : usize, param1 : usize, param2 : windows_core::PCSTR, param3 : u32, param4 : u32) -> u32);
1006    unsafe { MAPIDeleteMail(param0, param1, param2.param().abi(), param3, param4) }
1007}
1008#[inline]
1009pub unsafe fn MAPIDetails(
1010    param0: usize,
1011    param1: usize,
1012    param2: *mut MapiRecipDesc,
1013    param3: u32,
1014    param4: u32,
1015) -> u32 {
1016    windows_core::link!("mapi32" "system" fn MAPIDetails(param0 : usize, param1 : usize, param2 : *mut MapiRecipDesc, param3 : u32, param4 : u32) -> u32);
1017    unsafe { MAPIDetails(param0, param1, param2 as _, param3, param4) }
1018}
1019#[inline]
1020pub unsafe fn MAPIFindNext<P2, P3, P6>(
1021    param0: usize,
1022    param1: usize,
1023    param2: P2,
1024    param3: P3,
1025    param4: u32,
1026    param5: u32,
1027    param6: P6,
1028) -> u32
1029where
1030    P2: windows_core::Param<windows_core::PCSTR>,
1031    P3: windows_core::Param<windows_core::PCSTR>,
1032    P6: windows_core::Param<windows_core::PCSTR>,
1033{
1034    windows_core::link!("mapi32" "system" fn MAPIFindNext(param0 : usize, param1 : usize, param2 : windows_core::PCSTR, param3 : windows_core::PCSTR, param4 : u32, param5 : u32, param6 : windows_core::PCSTR) -> u32);
1035    unsafe {
1036        MAPIFindNext(
1037            param0,
1038            param1,
1039            param2.param().abi(),
1040            param3.param().abi(),
1041            param4,
1042            param5,
1043            param6.param().abi(),
1044        )
1045    }
1046}
1047#[inline]
1048pub unsafe fn MAPIFreeBuffer(param0: *mut core::ffi::c_void) -> u32 {
1049    windows_core::link!("mapi32" "system" fn MAPIFreeBuffer(param0 : *mut core::ffi::c_void) -> u32);
1050    unsafe { MAPIFreeBuffer(param0 as _) }
1051}
1052#[inline]
1053pub unsafe fn MAPIGetDefaultMalloc() -> Option<windows::Win32::System::Com::IMalloc> {
1054    windows_core::link!("mapi32" "system" fn MAPIGetDefaultMalloc() -> Option < windows::Win32::System::Com:: IMalloc >);
1055    unsafe { MAPIGetDefaultMalloc() }
1056}
1057#[inline]
1058pub unsafe fn MAPIInitIdle(lpvreserved: *mut core::ffi::c_void) -> i32 {
1059    windows_core::link!("mapi32" "system" fn MAPIInitIdle(lpvreserved : *mut core::ffi::c_void) -> i32);
1060    unsafe { MAPIInitIdle(lpvreserved as _) }
1061}
1062#[inline]
1063pub unsafe fn MAPIInitialize(param0: *mut core::ffi::c_void) -> windows_core::Result<()> {
1064    windows_core::link!("mapi32" "system" fn MAPIInitialize(param0 : *mut core::ffi::c_void) -> windows_core::HRESULT);
1065    unsafe { MAPIInitialize(param0 as _).ok() }
1066}
1067#[inline]
1068pub unsafe fn MAPILogoff(param0: usize, param1: usize, param2: u32, param3: u32) -> u32 {
1069    windows_core::link!("mapi32" "system" fn MAPILogoff(param0 : usize, param1 : usize, param2 : u32, param3 : u32) -> u32);
1070    unsafe { MAPILogoff(param0, param1, param2, param3) }
1071}
1072#[inline]
1073pub unsafe fn MAPILogon<P1, P2>(
1074    param0: usize,
1075    param1: P1,
1076    param2: P2,
1077    param3: u32,
1078    param4: u32,
1079    param5: *mut usize,
1080) -> u32
1081where
1082    P1: windows_core::Param<windows_core::PCSTR>,
1083    P2: windows_core::Param<windows_core::PCSTR>,
1084{
1085    windows_core::link!("mapi32" "system" fn MAPILogon(param0 : usize, param1 : windows_core::PCSTR, param2 : windows_core::PCSTR, param3 : u32, param4 : u32, param5 : *mut usize) -> u32);
1086    unsafe {
1087        MAPILogon(
1088            param0,
1089            param1.param().abi(),
1090            param2.param().abi(),
1091            param3,
1092            param4,
1093            param5 as _,
1094        )
1095    }
1096}
1097#[inline]
1098pub unsafe fn MAPILogonEx(
1099    param0: usize,
1100    param1: *mut i8,
1101    param2: *mut i8,
1102    param3: u32,
1103    param4: *mut Option<IMAPISession>,
1104) -> windows_core::Result<()> {
1105    windows_core::link!("mapi32" "system" fn MAPILogonEx(param0 : usize, param1 : *mut i8, param2 : *mut i8, param3 : u32, param4 : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
1106    unsafe {
1107        MAPILogonEx(
1108            param0,
1109            param1 as _,
1110            param2 as _,
1111            param3,
1112            core::mem::transmute(param4),
1113        )
1114        .ok()
1115    }
1116}
1117#[inline]
1118pub unsafe fn MAPIOpenFormMgr<P0>(psession: P0) -> windows_core::Result<IMAPIFormMgr>
1119where
1120    P0: windows_core::Param<IMAPISession>,
1121{
1122    windows_core::link!("mapi32" "system" fn MAPIOpenFormMgr(psession : * mut core::ffi::c_void, ppmgr : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
1123    unsafe {
1124        let mut result__ = core::mem::zeroed();
1125        MAPIOpenFormMgr(psession.param().abi(), &mut result__)
1126            .and_then(|| windows_core::Type::from_abi(result__))
1127    }
1128}
1129#[inline]
1130pub unsafe fn MAPIOpenLocalFormContainer() -> windows_core::Result<IMAPIFormContainer> {
1131    windows_core::link!("mapi32" "system" fn MAPIOpenLocalFormContainer(ppfcnt : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
1132    unsafe {
1133        let mut result__ = core::mem::zeroed();
1134        MAPIOpenLocalFormContainer(&mut result__)
1135            .and_then(|| windows_core::Type::from_abi(result__))
1136    }
1137}
1138#[inline]
1139pub unsafe fn MAPIReadMail<P2>(
1140    param0: usize,
1141    param1: usize,
1142    param2: P2,
1143    param3: u32,
1144    param4: u32,
1145    param5: *mut *mut MapiMessage,
1146) -> u32
1147where
1148    P2: windows_core::Param<windows_core::PCSTR>,
1149{
1150    windows_core::link!("mapi32" "system" fn MAPIReadMail(param0 : usize, param1 : usize, param2 : windows_core::PCSTR, param3 : u32, param4 : u32, param5 : *mut *mut MapiMessage) -> u32);
1151    unsafe {
1152        MAPIReadMail(
1153            param0,
1154            param1,
1155            param2.param().abi(),
1156            param3,
1157            param4,
1158            param5 as _,
1159        )
1160    }
1161}
1162#[inline]
1163pub unsafe fn MAPIResolveName<P2>(
1164    param0: usize,
1165    param1: usize,
1166    param2: P2,
1167    param3: u32,
1168    param4: u32,
1169    param5: *mut *mut MapiRecipDesc,
1170) -> u32
1171where
1172    P2: windows_core::Param<windows_core::PCSTR>,
1173{
1174    windows_core::link!("mapi32" "system" fn MAPIResolveName(param0 : usize, param1 : usize, param2 : windows_core::PCSTR, param3 : u32, param4 : u32, param5 : *mut *mut MapiRecipDesc) -> u32);
1175    unsafe {
1176        MAPIResolveName(
1177            param0,
1178            param1,
1179            param2.param().abi(),
1180            param3,
1181            param4,
1182            param5 as _,
1183        )
1184    }
1185}
1186#[inline]
1187pub unsafe fn MAPISaveMail<P5>(
1188    param0: usize,
1189    param1: usize,
1190    param2: *mut MapiMessage,
1191    param3: u32,
1192    param4: u32,
1193    param5: P5,
1194) -> u32
1195where
1196    P5: windows_core::Param<windows_core::PCSTR>,
1197{
1198    windows_core::link!("mapi32" "system" fn MAPISaveMail(param0 : usize, param1 : usize, param2 : *mut MapiMessage, param3 : u32, param4 : u32, param5 : windows_core::PCSTR) -> u32);
1199    unsafe {
1200        MAPISaveMail(
1201            param0,
1202            param1,
1203            param2 as _,
1204            param3,
1205            param4,
1206            param5.param().abi(),
1207        )
1208    }
1209}
1210#[inline]
1211pub unsafe fn MAPISendDocuments<P1, P2, P3>(
1212    param0: usize,
1213    param1: P1,
1214    param2: P2,
1215    param3: P3,
1216    param4: u32,
1217) -> u32
1218where
1219    P1: windows_core::Param<windows_core::PCSTR>,
1220    P2: windows_core::Param<windows_core::PCSTR>,
1221    P3: windows_core::Param<windows_core::PCSTR>,
1222{
1223    windows_core::link!("mapi32" "system" fn MAPISendDocuments(param0 : usize, param1 : windows_core::PCSTR, param2 : windows_core::PCSTR, param3 : windows_core::PCSTR, param4 : u32) -> u32);
1224    unsafe {
1225        MAPISendDocuments(
1226            param0,
1227            param1.param().abi(),
1228            param2.param().abi(),
1229            param3.param().abi(),
1230            param4,
1231        )
1232    }
1233}
1234#[inline]
1235pub unsafe fn MAPISendMail(
1236    param0: usize,
1237    param1: usize,
1238    param2: *mut MapiMessage,
1239    param3: u32,
1240    param4: u32,
1241) -> u32 {
1242    windows_core::link!("mapi32" "system" fn MAPISendMail(param0 : usize, param1 : usize, param2 : *mut MapiMessage, param3 : u32, param4 : u32) -> u32);
1243    unsafe { MAPISendMail(param0, param1, param2 as _, param3, param4) }
1244}
1245#[inline]
1246pub unsafe fn MAPIUninitialize() {
1247    windows_core::link!("mapi32" "system" fn MAPIUninitialize());
1248    unsafe { MAPIUninitialize() }
1249}
1250#[inline]
1251pub unsafe fn MNLS_CompareStringW<P2, P4>(
1252    locale: u32,
1253    dwcmpflags: u32,
1254    lpstring1: P2,
1255    cchcount1: i32,
1256    lpstring2: P4,
1257    cchcount2: i32,
1258) -> i32
1259where
1260    P2: windows_core::Param<windows_core::PCWSTR>,
1261    P4: windows_core::Param<windows_core::PCWSTR>,
1262{
1263    windows_core::link!("mapi32" "system" fn MNLS_CompareStringW(locale : u32, dwcmpflags : u32, lpstring1 : windows_core::PCWSTR, cchcount1 : i32, lpstring2 : windows_core::PCWSTR, cchcount2 : i32) -> i32);
1264    unsafe {
1265        MNLS_CompareStringW(
1266            locale,
1267            dwcmpflags,
1268            lpstring1.param().abi(),
1269            cchcount1,
1270            lpstring2.param().abi(),
1271            cchcount2,
1272        )
1273    }
1274}
1275#[inline]
1276pub unsafe fn MNLS_IsBadStringPtrW<P0>(lpsz: P0, ucchmax: u32) -> windows_core::BOOL
1277where
1278    P0: windows_core::Param<windows_core::PCWSTR>,
1279{
1280    windows_core::link!("mapi32" "system" fn MNLS_IsBadStringPtrW(lpsz : windows_core::PCWSTR, ucchmax : u32) -> windows_core::BOOL);
1281    unsafe { MNLS_IsBadStringPtrW(lpsz.param().abi(), ucchmax) }
1282}
1283#[inline]
1284pub unsafe fn MNLS_MultiByteToWideChar<P2, P4>(
1285    ucodepage: u32,
1286    dwflags: u32,
1287    lpmultibytestr: P2,
1288    cchmultibyte: i32,
1289    lpwidecharstr: P4,
1290    cchwidechar: i32,
1291) -> i32
1292where
1293    P2: windows_core::Param<windows_core::PCSTR>,
1294    P4: windows_core::Param<windows_core::PCWSTR>,
1295{
1296    windows_core::link!("mapi32" "system" fn MNLS_MultiByteToWideChar(ucodepage : u32, dwflags : u32, lpmultibytestr : windows_core::PCSTR, cchmultibyte : i32, lpwidecharstr : windows_core::PCWSTR, cchwidechar : i32) -> i32);
1297    unsafe {
1298        MNLS_MultiByteToWideChar(
1299            ucodepage,
1300            dwflags,
1301            lpmultibytestr.param().abi(),
1302            cchmultibyte,
1303            lpwidecharstr.param().abi(),
1304            cchwidechar,
1305        )
1306    }
1307}
1308#[inline]
1309pub unsafe fn MNLS_WideCharToMultiByte<P2, P4, P6>(
1310    ucodepage: u32,
1311    dwflags: u32,
1312    lpwidecharstr: P2,
1313    cchwidechar: i32,
1314    lpmultibytestr: P4,
1315    cchmultibyte: i32,
1316    lpdefaultchar: P6,
1317    lpfuseddefaultchar: *mut windows_core::BOOL,
1318) -> i32
1319where
1320    P2: windows_core::Param<windows_core::PCWSTR>,
1321    P4: windows_core::Param<windows_core::PCSTR>,
1322    P6: windows_core::Param<windows_core::PCSTR>,
1323{
1324    windows_core::link!("mapi32" "system" fn MNLS_WideCharToMultiByte(ucodepage : u32, dwflags : u32, lpwidecharstr : windows_core::PCWSTR, cchwidechar : i32, lpmultibytestr : windows_core::PCSTR, cchmultibyte : i32, lpdefaultchar : windows_core::PCSTR, lpfuseddefaultchar : *mut windows_core::BOOL) -> i32);
1325    unsafe {
1326        MNLS_WideCharToMultiByte(
1327            ucodepage,
1328            dwflags,
1329            lpwidecharstr.param().abi(),
1330            cchwidechar,
1331            lpmultibytestr.param().abi(),
1332            cchmultibyte,
1333            lpdefaultchar.param().abi(),
1334            lpfuseddefaultchar as _,
1335        )
1336    }
1337}
1338#[inline]
1339pub unsafe fn MNLS_lstrcmpW<P0, P1>(lpstring1: P0, lpstring2: P1) -> i32
1340where
1341    P0: windows_core::Param<windows_core::PCWSTR>,
1342    P1: windows_core::Param<windows_core::PCWSTR>,
1343{
1344    windows_core::link!("mapi32" "system" fn MNLS_lstrcmpW(lpstring1 : windows_core::PCWSTR, lpstring2 : windows_core::PCWSTR) -> i32);
1345    unsafe { MNLS_lstrcmpW(lpstring1.param().abi(), lpstring2.param().abi()) }
1346}
1347#[inline]
1348pub unsafe fn MNLS_lstrcpyW<P0, P1>(lpstring1: P0, lpstring2: P1) -> windows_core::PWSTR
1349where
1350    P0: windows_core::Param<windows_core::PCWSTR>,
1351    P1: windows_core::Param<windows_core::PCWSTR>,
1352{
1353    windows_core::link!("mapi32" "system" fn MNLS_lstrcpyW(lpstring1 : windows_core::PCWSTR, lpstring2 : windows_core::PCWSTR) -> windows_core::PWSTR);
1354    unsafe { MNLS_lstrcpyW(lpstring1.param().abi(), lpstring2.param().abi()) }
1355}
1356#[inline]
1357pub unsafe fn MNLS_lstrlenW<P0>(lpstring: P0) -> i32
1358where
1359    P0: windows_core::Param<windows_core::PCWSTR>,
1360{
1361    windows_core::link!("mapi32" "system" fn MNLS_lstrlenW(lpstring : windows_core::PCWSTR) -> i32);
1362    unsafe { MNLS_lstrlenW(lpstring.param().abi()) }
1363}
1364#[inline]
1365pub unsafe fn MSProviderInit<P1>(
1366    param0: windows::Win32::Foundation::HINSTANCE,
1367    param1: P1,
1368    param2: LPALLOCATEBUFFER,
1369    param3: LPALLOCATEMORE,
1370    param4: LPFREEBUFFER,
1371    param5: u32,
1372    param6: u32,
1373    param7: *mut u32,
1374    param8: *mut Option<IMSProvider>,
1375) -> windows_core::Result<()>
1376where
1377    P1: windows_core::Param<windows::Win32::System::Com::IMalloc>,
1378{
1379    windows_core::link!("olmapi32" "C" fn MSProviderInit(param0 : windows::Win32::Foundation:: HINSTANCE, param1 : * mut core::ffi::c_void, param2 : LPALLOCATEBUFFER, param3 : LPALLOCATEMORE, param4 : LPFREEBUFFER, param5 : u32, param6 : u32, param7 : *mut u32, param8 : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
1380    unsafe {
1381        MSProviderInit(
1382            param0,
1383            param1.param().abi(),
1384            param2,
1385            param3,
1386            param4,
1387            param5,
1388            param6,
1389            param7 as _,
1390            core::mem::transmute(param8),
1391        )
1392        .ok()
1393    }
1394}
1395#[inline]
1396pub unsafe fn MapStorageSCode(stgscode: i32) -> i32 {
1397    windows_core::link!("mapi32" "system" fn MapStorageSCode(stgscode : i32) -> i32);
1398    unsafe { MapStorageSCode(stgscode) }
1399}
1400#[inline]
1401pub unsafe fn OpenIMsgOnIStg<P4, P6>(
1402    lpmsgsess: windows::Win32::Storage::Imapi::LPMSGSESS,
1403    lpallocatebuffer: LPALLOCATEBUFFER,
1404    lpallocatemore: LPALLOCATEMORE,
1405    lpfreebuffer: LPFREEBUFFER,
1406    lpmalloc: P4,
1407    lpmapisup: *mut core::ffi::c_void,
1408    lpstg: P6,
1409    lpfmsgcallrelease: *mut windows::Win32::Storage::Imapi::MSGCALLRELEASE,
1410    ulcallerdata: u32,
1411    ulflags: u32,
1412    lppmsg: *mut Option<IMessage>,
1413) -> i32
1414where
1415    P4: windows_core::Param<windows::Win32::System::Com::IMalloc>,
1416    P6: windows_core::Param<windows::Win32::System::Com::StructuredStorage::IStorage>,
1417{
1418    windows_core::link!("mapi32" "system" fn OpenIMsgOnIStg(lpmsgsess : windows::Win32::Storage::Imapi:: LPMSGSESS, lpallocatebuffer : LPALLOCATEBUFFER, lpallocatemore : LPALLOCATEMORE, lpfreebuffer : LPFREEBUFFER, lpmalloc : * mut core::ffi::c_void, lpmapisup : *mut core::ffi::c_void, lpstg : * mut core::ffi::c_void, lpfmsgcallrelease : *mut windows::Win32::Storage::Imapi:: MSGCALLRELEASE, ulcallerdata : u32, ulflags : u32, lppmsg : *mut * mut core::ffi::c_void) -> i32);
1419    unsafe {
1420        OpenIMsgOnIStg(
1421            lpmsgsess,
1422            lpallocatebuffer,
1423            lpallocatemore,
1424            lpfreebuffer,
1425            lpmalloc.param().abi(),
1426            lpmapisup as _,
1427            lpstg.param().abi(),
1428            lpfmsgcallrelease as _,
1429            ulcallerdata,
1430            ulflags,
1431            core::mem::transmute(lppmsg),
1432        )
1433    }
1434}
1435#[inline]
1436pub unsafe fn OpenIMsgSession<P0>(
1437    lpmalloc: P0,
1438    ulflags: u32,
1439    lppmsgsess: *mut windows::Win32::Storage::Imapi::LPMSGSESS,
1440) -> i32
1441where
1442    P0: windows_core::Param<windows::Win32::System::Com::IMalloc>,
1443{
1444    windows_core::link!("mapi32" "system" fn OpenIMsgSession(lpmalloc : * mut core::ffi::c_void, ulflags : u32, lppmsgsess : *mut windows::Win32::Storage::Imapi:: LPMSGSESS) -> i32);
1445    unsafe { OpenIMsgSession(lpmalloc.param().abi(), ulflags, lppmsgsess as _) }
1446}
1447#[inline]
1448pub unsafe fn OpenStreamOnFile(
1449    lpallocatebuffer: LPALLOCATEBUFFER,
1450    lpfreebuffer: LPFREEBUFFER,
1451    ulflags: u32,
1452    lpszfilename: *const i8,
1453    lpszprefix: Option<*const i8>,
1454) -> windows_core::Result<windows::Win32::System::Com::IStream> {
1455    windows_core::link!("mapi32" "system" fn OpenStreamOnFile(lpallocatebuffer : LPALLOCATEBUFFER, lpfreebuffer : LPFREEBUFFER, ulflags : u32, lpszfilename : *const i8, lpszprefix : *const i8, lppstream : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
1456    unsafe {
1457        let mut result__ = core::mem::zeroed();
1458        OpenStreamOnFile(
1459            lpallocatebuffer,
1460            lpfreebuffer,
1461            ulflags,
1462            lpszfilename,
1463            lpszprefix.unwrap_or(core::mem::zeroed()) as _,
1464            &mut result__,
1465        )
1466        .and_then(|| windows_core::Type::from_abi(result__))
1467    }
1468}
1469#[inline]
1470pub unsafe fn OpenStreamOnFileW<P3, P4>(
1471    lpallocatebuffer: LPALLOCATEBUFFER,
1472    lpfreebuffer: LPFREEBUFFER,
1473    ulflags: u32,
1474    lpszfilename: P3,
1475    lpszprefix: P4,
1476) -> windows_core::Result<windows::Win32::System::Com::IStream>
1477where
1478    P3: windows_core::Param<windows_core::PCWSTR>,
1479    P4: windows_core::Param<windows_core::PCWSTR>,
1480{
1481    windows_core::link!("olmapi32" "system" fn OpenStreamOnFileW(lpallocatebuffer : LPALLOCATEBUFFER, lpfreebuffer : LPFREEBUFFER, ulflags : u32, lpszfilename : windows_core::PCWSTR, lpszprefix : windows_core::PCWSTR, lppstream : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
1482    unsafe {
1483        let mut result__ = core::mem::zeroed();
1484        OpenStreamOnFileW(
1485            lpallocatebuffer,
1486            lpfreebuffer,
1487            ulflags,
1488            lpszfilename.param().abi(),
1489            lpszprefix.param().abi(),
1490            &mut result__,
1491        )
1492        .and_then(|| windows_core::Type::from_abi(result__))
1493    }
1494}
1495#[inline]
1496pub unsafe fn PpropFindProp(
1497    lpproparray: *mut SPropValue,
1498    cvalues: u32,
1499    ulproptag: u32,
1500) -> *mut SPropValue {
1501    windows_core::link!("mapi32" "system" fn PpropFindProp(lpproparray : *mut SPropValue, cvalues : u32, ulproptag : u32) -> *mut SPropValue);
1502    unsafe { PpropFindProp(lpproparray as _, cvalues, ulproptag) }
1503}
1504#[inline]
1505pub unsafe fn PropCopyMore(
1506    lpspropvaluedest: *mut SPropValue,
1507    lpspropvaluesrc: *mut SPropValue,
1508    lpfallocmore: LPALLOCATEMORE,
1509    lpvobject: *mut core::ffi::c_void,
1510) -> i32 {
1511    windows_core::link!("mapi32" "system" fn PropCopyMore(lpspropvaluedest : *mut SPropValue, lpspropvaluesrc : *mut SPropValue, lpfallocmore : LPALLOCATEMORE, lpvobject : *mut core::ffi::c_void) -> i32);
1512    unsafe {
1513        PropCopyMore(
1514            lpspropvaluedest as _,
1515            lpspropvaluesrc as _,
1516            lpfallocmore,
1517            lpvobject as _,
1518        )
1519    }
1520}
1521#[inline]
1522pub unsafe fn RTFSync<P0>(lpmessage: P0, ulflags: u32) -> windows_core::Result<windows_core::BOOL>
1523where
1524    P0: windows_core::Param<IMessage>,
1525{
1526    windows_core::link!("mapi32" "system" fn RTFSync(lpmessage : * mut core::ffi::c_void, ulflags : u32, lpfmessageupdated : *mut windows_core::BOOL) -> windows_core::HRESULT);
1527    unsafe {
1528        let mut result__ = core::mem::zeroed();
1529        RTFSync(lpmessage.param().abi(), ulflags, &mut result__).map(|| result__)
1530    }
1531}
1532#[inline]
1533pub unsafe fn ScBinFromHexBounded(lpsz: *const i8, lpb: *mut u8, cb: u32) -> i32 {
1534    windows_core::link!("mapi32" "system" fn ScBinFromHexBounded(lpsz : *const i8, lpb : *mut u8, cb : u32) -> i32);
1535    unsafe { ScBinFromHexBounded(lpsz, lpb as _, cb) }
1536}
1537#[inline]
1538pub unsafe fn ScCopyNotifications(
1539    cnotification: i32,
1540    lpnotifications: *mut NOTIFICATION,
1541    lpvdst: *mut core::ffi::c_void,
1542    lpcb: *mut u32,
1543) -> i32 {
1544    windows_core::link!("mapi32" "system" fn ScCopyNotifications(cnotification : i32, lpnotifications : *mut NOTIFICATION, lpvdst : *mut core::ffi::c_void, lpcb : *mut u32) -> i32);
1545    unsafe { ScCopyNotifications(cnotification, lpnotifications as _, lpvdst as _, lpcb as _) }
1546}
1547#[inline]
1548pub unsafe fn ScCopyProps(
1549    cvalues: i32,
1550    lpproparray: *mut SPropValue,
1551    lpvdst: *mut core::ffi::c_void,
1552    lpcb: *mut u32,
1553) -> i32 {
1554    windows_core::link!("mapi32" "system" fn ScCopyProps(cvalues : i32, lpproparray : *mut SPropValue, lpvdst : *mut core::ffi::c_void, lpcb : *mut u32) -> i32);
1555    unsafe { ScCopyProps(cvalues, lpproparray as _, lpvdst as _, lpcb as _) }
1556}
1557#[inline]
1558pub unsafe fn ScCountNotifications(
1559    cnotifications: i32,
1560    lpnotifications: *mut NOTIFICATION,
1561    lpcb: *mut u32,
1562) -> i32 {
1563    windows_core::link!("mapi32" "system" fn ScCountNotifications(cnotifications : i32, lpnotifications : *mut NOTIFICATION, lpcb : *mut u32) -> i32);
1564    unsafe { ScCountNotifications(cnotifications, lpnotifications as _, lpcb as _) }
1565}
1566#[inline]
1567pub unsafe fn ScCountProps(cvalues: i32, lpproparray: *mut SPropValue, lpcb: *mut u32) -> i32 {
1568    windows_core::link!("mapi32" "system" fn ScCountProps(cvalues : i32, lpproparray : *mut SPropValue, lpcb : *mut u32) -> i32);
1569    unsafe { ScCountProps(cvalues, lpproparray as _, lpcb as _) }
1570}
1571#[inline]
1572pub unsafe fn ScCreateConversationIndex(
1573    cbparent: u32,
1574    lpbparent: *mut u8,
1575    lpcbconvindex: *mut u32,
1576    lppbconvindex: *mut *mut u8,
1577) -> i32 {
1578    windows_core::link!("mapi32" "system" fn ScCreateConversationIndex(cbparent : u32, lpbparent : *mut u8, lpcbconvindex : *mut u32, lppbconvindex : *mut *mut u8) -> i32);
1579    unsafe {
1580        ScCreateConversationIndex(
1581            cbparent,
1582            lpbparent as _,
1583            lpcbconvindex as _,
1584            lppbconvindex as _,
1585        )
1586    }
1587}
1588#[inline]
1589pub unsafe fn ScDupPropset(
1590    cvalues: i32,
1591    lpproparray: *mut SPropValue,
1592    lpallocatebuffer: LPALLOCATEBUFFER,
1593    lppproparray: *mut *mut SPropValue,
1594) -> i32 {
1595    windows_core::link!("mapi32" "system" fn ScDupPropset(cvalues : i32, lpproparray : *mut SPropValue, lpallocatebuffer : LPALLOCATEBUFFER, lppproparray : *mut *mut SPropValue) -> i32);
1596    unsafe {
1597        ScDupPropset(
1598            cvalues,
1599            lpproparray as _,
1600            lpallocatebuffer,
1601            lppproparray as _,
1602        )
1603    }
1604}
1605#[inline]
1606pub unsafe fn ScInitMapiUtil(ulflags: u32) -> i32 {
1607    windows_core::link!("mapi32" "system" fn ScInitMapiUtil(ulflags : u32) -> i32);
1608    unsafe { ScInitMapiUtil(ulflags) }
1609}
1610#[inline]
1611pub unsafe fn ScLocalPathFromUNC<P0, P1>(lpszunc: P0, lpszlocal: P1, cchlocal: u32) -> i32
1612where
1613    P0: windows_core::Param<windows_core::PCSTR>,
1614    P1: windows_core::Param<windows_core::PCSTR>,
1615{
1616    windows_core::link!("mapi32" "system" fn ScLocalPathFromUNC(lpszunc : windows_core::PCSTR, lpszlocal : windows_core::PCSTR, cchlocal : u32) -> i32);
1617    unsafe { ScLocalPathFromUNC(lpszunc.param().abi(), lpszlocal.param().abi(), cchlocal) }
1618}
1619#[inline]
1620pub unsafe fn ScMAPIXFromSMAPI(
1621    lhsimplesession: usize,
1622    ulflags: u32,
1623    lpinterface: *mut windows_core::GUID,
1624    lppmapisession: *mut Option<IMAPISession>,
1625) -> i32 {
1626    windows_core::link!("mapi32" "system" fn ScMAPIXFromSMAPI(lhsimplesession : usize, ulflags : u32, lpinterface : *mut windows_core::GUID, lppmapisession : *mut * mut core::ffi::c_void) -> i32);
1627    unsafe {
1628        ScMAPIXFromSMAPI(
1629            lhsimplesession,
1630            ulflags,
1631            lpinterface as _,
1632            core::mem::transmute(lppmapisession),
1633        )
1634    }
1635}
1636#[inline]
1637pub unsafe fn ScRelocNotifications(
1638    cnotification: i32,
1639    lpnotifications: *mut NOTIFICATION,
1640    lpvbaseold: *mut core::ffi::c_void,
1641    lpvbasenew: *mut core::ffi::c_void,
1642    lpcb: *mut u32,
1643) -> i32 {
1644    windows_core::link!("mapi32" "system" fn ScRelocNotifications(cnotification : i32, lpnotifications : *mut NOTIFICATION, lpvbaseold : *mut core::ffi::c_void, lpvbasenew : *mut core::ffi::c_void, lpcb : *mut u32) -> i32);
1645    unsafe {
1646        ScRelocNotifications(
1647            cnotification,
1648            lpnotifications as _,
1649            lpvbaseold as _,
1650            lpvbasenew as _,
1651            lpcb as _,
1652        )
1653    }
1654}
1655#[inline]
1656pub unsafe fn ScRelocProps(
1657    cvalues: i32,
1658    lpproparray: *mut SPropValue,
1659    lpvbaseold: *mut core::ffi::c_void,
1660    lpvbasenew: *mut core::ffi::c_void,
1661    lpcb: *mut u32,
1662) -> i32 {
1663    windows_core::link!("mapi32" "system" fn ScRelocProps(cvalues : i32, lpproparray : *mut SPropValue, lpvbaseold : *mut core::ffi::c_void, lpvbasenew : *mut core::ffi::c_void, lpcb : *mut u32) -> i32);
1664    unsafe {
1665        ScRelocProps(
1666            cvalues,
1667            lpproparray as _,
1668            lpvbaseold as _,
1669            lpvbasenew as _,
1670            lpcb as _,
1671        )
1672    }
1673}
1674#[inline]
1675pub unsafe fn ScUNCFromLocalPath<P0, P1>(lpszlocal: P0, lpszunc: P1, cchunc: u32) -> i32
1676where
1677    P0: windows_core::Param<windows_core::PCSTR>,
1678    P1: windows_core::Param<windows_core::PCSTR>,
1679{
1680    windows_core::link!("mapi32" "system" fn ScUNCFromLocalPath(lpszlocal : windows_core::PCSTR, lpszunc : windows_core::PCSTR, cchunc : u32) -> i32);
1681    unsafe { ScUNCFromLocalPath(lpszlocal.param().abi(), lpszunc.param().abi(), cchunc) }
1682}
1683#[inline]
1684pub unsafe fn SetAttribIMsgOnIStg(
1685    lpobject: *mut core::ffi::c_void,
1686    lpproptags: *mut SPropTagArray,
1687    lppropattrs: *mut SPropAttrArray,
1688    lpppropproblems: *mut *mut SPropProblemArray,
1689) -> windows_core::Result<()> {
1690    windows_core::link!("mapi32" "system" fn SetAttribIMsgOnIStg(lpobject : *mut core::ffi::c_void, lpproptags : *mut SPropTagArray, lppropattrs : *mut SPropAttrArray, lpppropproblems : *mut *mut SPropProblemArray) -> windows_core::HRESULT);
1691    unsafe {
1692        SetAttribIMsgOnIStg(
1693            lpobject as _,
1694            lpproptags as _,
1695            lppropattrs as _,
1696            lpppropproblems as _,
1697        )
1698        .ok()
1699    }
1700}
1701#[inline]
1702pub unsafe fn SzFindCh(lpsz: *mut i8, ch: u16) -> *mut i8 {
1703    windows_core::link!("mapi32" "system" fn SzFindCh(lpsz : *mut i8, ch : u16) -> *mut i8);
1704    unsafe { SzFindCh(lpsz as _, ch) }
1705}
1706#[inline]
1707pub unsafe fn SzFindLastCh(lpsz: *mut i8, ch: u16) -> *mut i8 {
1708    windows_core::link!("mapi32" "system" fn SzFindLastCh(lpsz : *mut i8, ch : u16) -> *mut i8);
1709    unsafe { SzFindLastCh(lpsz as _, ch) }
1710}
1711#[inline]
1712pub unsafe fn SzFindSz(lpsz: *mut i8, lpszkey: *mut i8) -> *mut i8 {
1713    windows_core::link!("mapi32" "system" fn SzFindSz(lpsz : *mut i8, lpszkey : *mut i8) -> *mut i8);
1714    unsafe { SzFindSz(lpsz as _, lpszkey as _) }
1715}
1716#[inline]
1717pub unsafe fn UFromSz(lpsz: *mut i8) -> u32 {
1718    windows_core::link!("mapi32" "system" fn UFromSz(lpsz : *mut i8) -> u32);
1719    unsafe { UFromSz(lpsz as _) }
1720}
1721#[inline]
1722pub unsafe fn UlAddRef(lpunk: *mut core::ffi::c_void) -> u32 {
1723    windows_core::link!("mapi32" "system" fn UlAddRef(lpunk : *mut core::ffi::c_void) -> u32);
1724    unsafe { UlAddRef(lpunk as _) }
1725}
1726#[inline]
1727pub unsafe fn UlFromSzHex(lpsz: *mut i8) -> u32 {
1728    windows_core::link!("mapi32" "system" fn UlFromSzHex(lpsz : *mut i8) -> u32);
1729    unsafe { UlFromSzHex(lpsz as _) }
1730}
1731#[inline]
1732pub unsafe fn UlPropSize(lpspropvalue: *mut SPropValue) -> u32 {
1733    windows_core::link!("mapi32" "system" fn UlPropSize(lpspropvalue : *mut SPropValue) -> u32);
1734    unsafe { UlPropSize(lpspropvalue as _) }
1735}
1736#[inline]
1737pub unsafe fn UlRelease(lpunk: *mut core::ffi::c_void) -> u32 {
1738    windows_core::link!("mapi32" "system" fn UlRelease(lpunk : *mut core::ffi::c_void) -> u32);
1739    unsafe { UlRelease(lpunk as _) }
1740}
1741#[inline]
1742pub unsafe fn WrapCompressedRTFStream<P0>(
1743    lpcompressedrtfstream: P0,
1744    ulflags: u32,
1745) -> windows_core::Result<windows::Win32::System::Com::IStream>
1746where
1747    P0: windows_core::Param<windows::Win32::System::Com::IStream>,
1748{
1749    windows_core::link!("mapi32" "system" fn WrapCompressedRTFStream(lpcompressedrtfstream : * mut core::ffi::c_void, ulflags : u32, lpuncompressedrtfstream : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
1750    unsafe {
1751        let mut result__ = core::mem::zeroed();
1752        WrapCompressedRTFStream(lpcompressedrtfstream.param().abi(), ulflags, &mut result__)
1753            .and_then(|| windows_core::Type::from_abi(result__))
1754    }
1755}
1756#[inline]
1757pub unsafe fn WrapCompressedRTFStreamEx<P0>(
1758    pcompressedrtfstream: P0,
1759    pwcsinfo: *const RTF_WCSINFO,
1760    ppuncompressedrtfstream: *mut Option<windows::Win32::System::Com::IStream>,
1761    pretinfo: *mut RTF_WCSRETINFO,
1762) -> windows_core::Result<()>
1763where
1764    P0: windows_core::Param<windows::Win32::System::Com::IStream>,
1765{
1766    windows_core::link!("olmapi32" "system" fn WrapCompressedRTFStreamEx(pcompressedrtfstream : * mut core::ffi::c_void, pwcsinfo : *const RTF_WCSINFO, ppuncompressedrtfstream : *mut * mut core::ffi::c_void, pretinfo : *mut RTF_WCSRETINFO) -> windows_core::HRESULT);
1767    unsafe {
1768        WrapCompressedRTFStreamEx(
1769            pcompressedrtfstream.param().abi(),
1770            pwcsinfo,
1771            core::mem::transmute(ppuncompressedrtfstream),
1772            pretinfo as _,
1773        )
1774        .ok()
1775    }
1776}
1777#[inline]
1778pub unsafe fn WrapStoreEntryID(
1779    ulflags: u32,
1780    lpszdllname: *const i8,
1781    cborigentry: u32,
1782    lporigentry: *mut ENTRYID,
1783    lpcbwrappedentry: *mut u32,
1784    lppwrappedentry: *mut *mut ENTRYID,
1785) -> windows_core::Result<()> {
1786    windows_core::link!("mapi32" "system" fn WrapStoreEntryID(ulflags : u32, lpszdllname : *const i8, cborigentry : u32, lporigentry : *mut ENTRYID, lpcbwrappedentry : *mut u32, lppwrappedentry : *mut *mut ENTRYID) -> windows_core::HRESULT);
1787    unsafe {
1788        WrapStoreEntryID(
1789            ulflags,
1790            lpszdllname,
1791            cborigentry,
1792            lporigentry as _,
1793            lpcbwrappedentry as _,
1794            lppwrappedentry as _,
1795        )
1796        .ok()
1797    }
1798}
1799#[inline]
1800pub unsafe fn __CPPValidateParameters(
1801    emethod: METHODS,
1802    ppfirst: *const core::ffi::c_void,
1803) -> windows_core::Result<()> {
1804    windows_core::link!("mapi32" "system" fn __CPPValidateParameters(emethod : METHODS, ppfirst : *const core::ffi::c_void) -> windows_core::HRESULT);
1805    unsafe { __CPPValidateParameters(emethod, ppfirst).ok() }
1806}
1807#[inline]
1808pub unsafe fn __ValidateParameters(
1809    emethod: METHODS,
1810    ppthis: *mut core::ffi::c_void,
1811) -> windows_core::Result<()> {
1812    windows_core::link!("mapi32" "system" fn __ValidateParameters(emethod : METHODS, ppthis : *mut core::ffi::c_void) -> windows_core::HRESULT);
1813    unsafe { __ValidateParameters(emethod, ppthis as _).ok() }
1814}
1815pub const ABORT_XP_HEADER_OPERATION: u32 = 2097152u32;
1816pub type ABPROVIDERINIT = Option<
1817    unsafe extern "system" fn(
1818        hinstance: windows::Win32::Foundation::HINSTANCE,
1819        lpmalloc: windows_core::Ref<windows::Win32::System::Com::IMalloc>,
1820        lpallocatebuffer: LPALLOCATEBUFFER,
1821        lpallocatemore: LPALLOCATEMORE,
1822        lpfreebuffer: LPFREEBUFFER,
1823        ulflags: u32,
1824        ulmapiver: u32,
1825        lpulproviderver: *mut u32,
1826        lppabprovider: windows_core::OutRef<IABProvider>,
1827    ) -> windows_core::HRESULT,
1828>;
1829pub const AB_FIND_ON_OPEN: u32 = 16u32;
1830pub const AB_MODIFIABLE: u32 = 4u32;
1831pub const AB_NOT_DEFAULT: u32 = 32u32;
1832pub const AB_NO_DIALOG: u32 = 1u32;
1833pub const AB_RECIPIENTS: u32 = 1u32;
1834pub const AB_RESOLVE: u32 = 32u32;
1835pub const AB_SELECTONLY: u32 = 16u32;
1836pub const AB_SHOW_OTHERS: u32 = 4u32;
1837pub const AB_SHOW_PHANTOMS: u32 = 2u32;
1838pub const AB_SUBCONTAINERS: u32 = 2u32;
1839pub const AB_UNICODEUI: u32 = 64u32;
1840pub const AB_UNMODIFIABLE: u32 = 8u32;
1841pub const ACCTUI_NO_WARNING: u32 = 256u32;
1842pub const ACCTUI_SHOW_ACCTWIZARD: u32 = 1024u32;
1843pub const ACCTUI_SHOW_DATA_TAB: u32 = 512u32;
1844#[repr(C)]
1845#[derive(Clone, Copy, Debug, PartialEq)]
1846pub struct ACCT_BIN {
1847    pub cb: u32,
1848    pub pb: *mut u8,
1849}
1850impl Default for ACCT_BIN {
1851    fn default() -> Self {
1852        unsafe { core::mem::zeroed() }
1853    }
1854}
1855pub const ACCT_INIT_NOSYNCH_MAPI_ACCTS: u32 = 1u32;
1856#[repr(C)]
1857#[derive(Clone, Copy)]
1858pub struct ACCT_VARIANT {
1859    pub dwType: u32,
1860    pub Val: ACCT_VARIANT_0,
1861}
1862impl Default for ACCT_VARIANT {
1863    fn default() -> Self {
1864        unsafe { core::mem::zeroed() }
1865    }
1866}
1867#[repr(C)]
1868#[derive(Clone, Copy)]
1869pub union ACCT_VARIANT_0 {
1870    pub dw: u32,
1871    pub pwsz: windows_core::PWSTR,
1872    pub bin: ACCT_BIN,
1873}
1874impl Default for ACCT_VARIANT_0 {
1875    fn default() -> Self {
1876        unsafe { core::mem::zeroed() }
1877    }
1878}
1879pub const ACLTABLE_FREEBUSY: u32 = 2u32;
1880#[repr(C)]
1881#[derive(Clone, Copy)]
1882pub struct ACTION {
1883    pub acttype: ACTTYPE,
1884    pub ulActionFlavor: u32,
1885    pub lpRes: *mut SRestriction,
1886    pub lpPropTagArray: *mut SPropTagArray,
1887    pub ulFlags: u32,
1888    pub dwAlignPad: u32,
1889    pub Anonymous: ACTION_0,
1890}
1891impl Default for ACTION {
1892    fn default() -> Self {
1893        unsafe { core::mem::zeroed() }
1894    }
1895}
1896#[repr(C)]
1897#[derive(Clone, Copy)]
1898pub union ACTION_0 {
1899    pub actMoveCopy: ACTION_0_0,
1900    pub actReply: ACTION_0_1,
1901    pub actDeferAction: ACTION_0_2,
1902    pub scBounceCode: i32,
1903    pub lpadrlist: *mut ADRLIST,
1904    pub propTag: SPropValue,
1905}
1906impl Default for ACTION_0 {
1907    fn default() -> Self {
1908        unsafe { core::mem::zeroed() }
1909    }
1910}
1911#[repr(C)]
1912#[derive(Clone, Copy, Debug, PartialEq)]
1913pub struct ACTION_0_2 {
1914    pub cbData: u32,
1915    pub pbData: *mut u8,
1916}
1917impl Default for ACTION_0_2 {
1918    fn default() -> Self {
1919        unsafe { core::mem::zeroed() }
1920    }
1921}
1922#[repr(C)]
1923#[derive(Clone, Copy, Debug, PartialEq)]
1924pub struct ACTION_0_0 {
1925    pub cbStoreEntryId: u32,
1926    pub lpStoreEntryId: *mut ENTRYID,
1927    pub cbFldEntryId: u32,
1928    pub lpFldEntryId: *mut ENTRYID,
1929}
1930impl Default for ACTION_0_0 {
1931    fn default() -> Self {
1932        unsafe { core::mem::zeroed() }
1933    }
1934}
1935#[repr(C)]
1936#[derive(Clone, Copy, Debug, PartialEq)]
1937pub struct ACTION_0_1 {
1938    pub cbEntryId: u32,
1939    pub lpEntryId: *mut ENTRYID,
1940    pub guidReplyTemplate: windows_core::GUID,
1941}
1942impl Default for ACTION_0_1 {
1943    fn default() -> Self {
1944        unsafe { core::mem::zeroed() }
1945    }
1946}
1947#[repr(C)]
1948#[derive(Clone, Copy, Debug, PartialEq)]
1949pub struct ACTIONS {
1950    pub ulVersion: u32,
1951    pub cActions: u32,
1952    pub lpAction: *mut ACTION,
1953}
1954impl Default for ACTIONS {
1955    fn default() -> Self {
1956        unsafe { core::mem::zeroed() }
1957    }
1958}
1959#[repr(transparent)]
1960#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
1961pub struct ACTTYPE(pub i32);
1962#[repr(transparent)]
1963#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
1964pub struct ADDRESSFORMAT(pub i32);
1965#[repr(C)]
1966#[derive(Clone, Copy, Debug, PartialEq)]
1967pub struct ADDRESSLIST {
1968    pub cAdrs: u32,
1969    pub prgAdr: *mut ADDRESSPROPS,
1970}
1971impl Default for ADDRESSLIST {
1972    fn default() -> Self {
1973        unsafe { core::mem::zeroed() }
1974    }
1975}
1976#[repr(C)]
1977#[derive(Clone, Copy, Debug, PartialEq)]
1978pub struct ADDRESSPROPS {
1979    pub dwProps: u32,
1980    pub hAddress: *mut HADDRESS__,
1981    pub ietFriendly: ENCODINGTYPE,
1982    pub hCharset: *mut HCHARSET__,
1983    pub dwAdrType: u32,
1984    pub pszFriendly: windows_core::PSTR,
1985    pub pwszReserved: windows_core::PWSTR,
1986    pub pszEmail: windows_core::PSTR,
1987    pub certstate: CERTSTATE,
1988    pub tbSigning: windows::Win32::System::Com::BLOB,
1989    pub tbEncryption: windows::Win32::System::Com::BLOB,
1990    pub dwCookie: u32,
1991    pub dwReserved1: u32,
1992    pub dwReserved2: u32,
1993}
1994impl Default for ADDRESSPROPS {
1995    fn default() -> Self {
1996        unsafe { core::mem::zeroed() }
1997    }
1998}
1999pub const ADDRESS_ONE: u32 = 8u32;
2000pub const ADMN_PAD: u32 = 3u32;
2001#[repr(C)]
2002#[derive(Clone, Copy, Debug, PartialEq)]
2003pub struct ADRENTRY {
2004    pub ulReserved1: u32,
2005    pub cValues: u32,
2006    pub rgPropVals: *mut SPropValue,
2007}
2008impl Default for ADRENTRY {
2009    fn default() -> Self {
2010        unsafe { core::mem::zeroed() }
2011    }
2012}
2013#[repr(C)]
2014#[derive(Clone, Copy, Debug, PartialEq)]
2015pub struct ADRLIST {
2016    pub cEntries: u32,
2017    pub aEntries: [ADRENTRY; 1],
2018}
2019impl Default for ADRLIST {
2020    fn default() -> Self {
2021        unsafe { core::mem::zeroed() }
2022    }
2023}
2024#[repr(C)]
2025#[derive(Clone, Copy, Debug)]
2026pub struct ADRPARM {
2027    pub cbABContEntryID: u32,
2028    pub lpABContEntryID: *mut ENTRYID,
2029    pub ulFlags: u32,
2030    pub lpReserved: *mut core::ffi::c_void,
2031    pub ulHelpContext: u32,
2032    pub lpszHelpFileName: *mut i8,
2033    pub lpfnABSDI: LPFNABSDI,
2034    pub lpfnDismiss: LPFNDISMISS,
2035    pub lpvDismissContext: *mut core::ffi::c_void,
2036    pub lpszCaption: *mut i8,
2037    pub lpszNewEntryTitle: *mut i8,
2038    pub lpszDestWellsTitle: *mut i8,
2039    pub cDestFields: u32,
2040    pub nDestFieldFocus: u32,
2041    pub lppszDestTitles: *mut *mut i8,
2042    pub lpulDestComps: *mut u32,
2043    pub lpContRestriction: *mut SRestriction,
2044    pub lpHierRestriction: *mut SRestriction,
2045}
2046impl Default for ADRPARM {
2047    fn default() -> Self {
2048        unsafe { core::mem::zeroed() }
2049    }
2050}
2051pub const ADRPARM_HELP_CTX: u32 = 0u32;
2052pub const AFT_DISPLAY_BOTH: ADDRESSFORMAT = ADDRESSFORMAT(2i32);
2053pub const AFT_DISPLAY_EMAIL: ADDRESSFORMAT = ADDRESSFORMAT(1i32);
2054pub const AFT_DISPLAY_FRIENDLY: ADDRESSFORMAT = ADDRESSFORMAT(0i32);
2055pub const AFT_RFC822_DECODED: ADDRESSFORMAT = ADDRESSFORMAT(3i32);
2056pub const AFT_RFC822_ENCODED: ADDRESSFORMAT = ADDRESSFORMAT(4i32);
2057pub const AFT_RFC822_TRANSMIT: ADDRESSFORMAT = ADDRESSFORMAT(5i32);
2058pub const AG_DAYS: u32 = 2u32;
2059pub const AG_MONTHS: u32 = 0u32;
2060pub const AG_WEEKS: u32 = 1u32;
2061pub const ANTIVIRUS_SCAN_NO_VIRUS: u32 = 0u32;
2062pub const ANTIVIRUS_SCAN_VIRUS_CLEANED: u32 = 2u32;
2063pub const ANTIVIRUS_SCAN_VIRUS_DELETED: u32 = 3u32;
2064pub const ANTIVIRUS_SCAN_VIRUS_PRESENT: u32 = 1u32;
2065pub const ATTACH_BY_REFERENCE: u32 = 2u32;
2066pub const ATTACH_BY_REF_ONLY: u32 = 4u32;
2067pub const ATTACH_BY_REF_RESOLVE: u32 = 3u32;
2068pub const ATTACH_BY_VALUE: u32 = 1u32;
2069pub const ATTACH_BY_WEBREFERENCE: u32 = 7u32;
2070pub const ATTACH_DIALOG: u32 = 1u32;
2071pub const ATTACH_EMBEDDED_MSG: u32 = 5u32;
2072pub const ATTACH_OLE: u32 = 6u32;
2073pub const AUTO_RESPONSE_SUPPRESS_AUTO_REPLY: u32 = 32u32;
2074pub const AUTO_RESPONSE_SUPPRESS_DR: u32 = 1u32;
2075pub const AUTO_RESPONSE_SUPPRESS_NDR: u32 = 2u32;
2076pub const AUTO_RESPONSE_SUPPRESS_NORFC821FROM: u32 = 64u32;
2077pub const AUTO_RESPONSE_SUPPRESS_NRN: u32 = 8u32;
2078pub const AUTO_RESPONSE_SUPPRESS_OOF: u32 = 16u32;
2079pub const AUTO_RESPONSE_SUPPRESS_RN: u32 = 4u32;
2080pub const BACKGROUND_SEARCH: u32 = 32u32;
2081pub const BEGIN_DEFERRED: u32 = 1u32;
2082pub const BMR_EQZ: u32 = 0u32;
2083pub const BMR_NEZ: u32 = 1u32;
2084#[repr(transparent)]
2085#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2086pub struct BODYLOCATION(pub i32);
2087#[repr(C)]
2088#[derive(Clone, Copy, Debug, Default, PartialEq)]
2089pub struct BODYOFFSETS {
2090    pub cbBoundaryStart: u32,
2091    pub cbHeaderStart: u32,
2092    pub cbBodyStart: u32,
2093    pub cbBodyEnd: u32,
2094}
2095pub const BOOKMARK_BEGINNING: u32 = 0u32;
2096pub const BOOKMARK_CURRENT: u32 = 1u32;
2097pub const BOOKMARK_END: u32 = 2u32;
2098pub const CALLBACK_DISCONTINUE: u32 = 2147483648u32;
2099pub type CALLERRELEASE = Option<
2100    unsafe extern "system" fn(
2101        ulcallerdata: usize,
2102        lptbldata: windows_core::Ref<ITableData>,
2103        lpvue: windows_core::Ref<IMAPITable>,
2104    ),
2105>;
2106pub const CB_OID_1: u32 = 9u32;
2107pub const CB_OID_2: u32 = 10u32;
2108pub const CB_OID_3: u32 = 11u32;
2109pub const CB_OID_4: u32 = 12u32;
2110pub const CB_OID_MAC_BINARY: u32 = 9u32;
2111pub const CB_OID_MIMETAG: u32 = 9u32;
2112pub const CB_OID_OLE: u32 = 9u32;
2113pub const CB_OID_OLE1: u32 = 10u32;
2114pub const CB_OID_OLE1_STORAGE: u32 = 11u32;
2115pub const CB_OID_OLE2: u32 = 10u32;
2116pub const CB_OID_OLE2_STORAGE: u32 = 11u32;
2117pub const CB_OID_TNEF: u32 = 9u32;
2118pub const CCHMAX_CID: u32 = 255u32;
2119pub const CCHMAX_CSET_NAME: u32 = 128u32;
2120pub const CCHMAX_FACE_NAME: u32 = 128u32;
2121pub const CCHMAX_HEADER_LINE: u32 = 1000u32;
2122pub const CCHMAX_INTERNET_DATE: u32 = 50u32;
2123pub const CCHMAX_LANG_NAME: u32 = 128u32;
2124pub const CCHMAX_MID: u32 = 255u32;
2125pub const CDID_EMAIL: CERTDATAID = CERTDATAID(0i32);
2126pub const CDID_MAX: CERTDATAID = CERTDATAID(1i32);
2127#[repr(transparent)]
2128#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2129pub struct CERTDATAID(pub i32);
2130pub const CERTIFICATE_CHAIN_TOO_LONG: CERTSTATE = CERTSTATE(3i32);
2131pub const CERTIFICATE_CRL_LISTED: CERTSTATE = CERTSTATE(5i32);
2132pub const CERTIFICATE_ERROR: CERTSTATE = CERTSTATE(8i32);
2133pub const CERTIFICATE_EXPIRED: CERTSTATE = CERTSTATE(2i32);
2134pub const CERTIFICATE_INVALID: CERTSTATE = CERTSTATE(7i32);
2135pub const CERTIFICATE_MISSING_ISSUER: CERTSTATE = CERTSTATE(4i32);
2136pub const CERTIFICATE_NOPRINT: CERTSTATE = CERTSTATE(9i32);
2137pub const CERTIFICATE_NOT_PRESENT: CERTSTATE = CERTSTATE(1i32);
2138pub const CERTIFICATE_NOT_TRUSTED: CERTSTATE = CERTSTATE(6i32);
2139pub const CERTIFICATE_OK: CERTSTATE = CERTSTATE(0i32);
2140pub const CERTIFICATE_UNKNOWN: CERTSTATE = CERTSTATE(10i32);
2141#[repr(transparent)]
2142#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2143pub struct CERTNAMETYPE(pub i32);
2144#[repr(transparent)]
2145#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2146pub struct CERTSTATE(pub i32);
2147#[repr(transparent)]
2148#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2149pub struct CHARSETTYPE(pub i32);
2150pub const CHARSET_BODY: CHARSETTYPE = CHARSETTYPE(0i32);
2151pub const CHARSET_HEADER: CHARSETTYPE = CHARSETTYPE(1i32);
2152pub const CHARSET_WEB: CHARSETTYPE = CHARSETTYPE(2i32);
2153pub const CHECK_SENDER: u32 = 1u32;
2154pub const CLEAR_NRN_PENDING: u32 = 64u32;
2155pub const CLEAR_READ_FLAG: u32 = 4u32;
2156pub const CLEAR_RN_PENDING: u32 = 32u32;
2157pub const CLSID_IMimeHtmlProtocol: windows_core::GUID =
2158    windows_core::GUID::from_u128(0x05300401_bcbc_11d0_85e3_00c04fd85ab4);
2159pub const CLSID_IVirtualStream: windows_core::GUID =
2160    windows_core::GUID::from_u128(0xfd853cdf_7f86_11d0_8252_00c04fd85ab4);
2161pub const CLSID_MimeEdit: windows_core::GUID =
2162    windows_core::GUID::from_u128(0x1c82ead9_508e_11d1_8dcf_00c04fb951f9);
2163pub const CLSID_OlkAccountManager: windows_core::GUID =
2164    windows_core::GUID::from_u128(0xed475410_b0d6_11d2_8c3b_00104b2a6676);
2165pub const CLSID_OlkAddressBook: windows_core::GUID =
2166    windows_core::GUID::from_u128(0xed475419_b0d6_11d2_8c3b_00104b2a6676);
2167pub const CLSID_OlkHotmailAccount: windows_core::GUID =
2168    windows_core::GUID::from_u128(0x4db5cbf0_3b77_4852_bc8e_bb81908861f3);
2169pub const CLSID_OlkIMAP4Account: windows_core::GUID =
2170    windows_core::GUID::from_u128(0xed475412_b0d6_11d2_8c3b_00104b2a6676);
2171pub const CLSID_OlkLDAPAccount: windows_core::GUID =
2172    windows_core::GUID::from_u128(0x4db5cbf2_3b77_4852_bc8e_bb81908861f3);
2173pub const CLSID_OlkMAPIAccount: windows_core::GUID =
2174    windows_core::GUID::from_u128(0xed475414_b0d6_11d2_8c3b_00104b2a6676);
2175pub const CLSID_OlkMail: windows_core::GUID =
2176    windows_core::GUID::from_u128(0xed475418_b0d6_11d2_8c3b_00104b2a6676);
2177pub const CLSID_OlkPOP3Account: windows_core::GUID =
2178    windows_core::GUID::from_u128(0xed475411_b0d6_11d2_8c3b_00104b2a6676);
2179pub const CLSID_OlkStore: windows_core::GUID =
2180    windows_core::GUID::from_u128(0xed475420_b0d6_11d2_8c3b_00104b2a6676);
2181pub const CMDSETID_MimeEdit: windows_core::GUID =
2182    windows_core::GUID::from_u128(0x1c82eada_508e_11d1_8dcf_00c04fb951f9);
2183pub const CMDSETID_MimeEditHost: windows_core::GUID =
2184    windows_core::GUID::from_u128(0x1c82eadb_508e_11d1_8dcf_00c04fb951f9);
2185#[repr(C)]
2186#[derive(Clone, Copy, Debug, PartialEq)]
2187pub struct CODEPAGEINFO {
2188    pub dwMask: u32,
2189    pub cpiCodePage: u32,
2190    pub fIsValidCodePage: windows_core::BOOL,
2191    pub ulMaxCharSize: u32,
2192    pub fInternetCP: windows_core::BOOL,
2193    pub cpiFamily: u32,
2194    pub szName: [i8; 128],
2195    pub szBodyCset: [i8; 128],
2196    pub szHeaderCset: [i8; 128],
2197    pub szWebCset: [i8; 128],
2198    pub szFixedFont: [i8; 128],
2199    pub szVariableFont: [i8; 128],
2200    pub ietNewsDefault: ENCODINGTYPE,
2201    pub ietMailDefault: ENCODINGTYPE,
2202    pub dwReserved1: u32,
2203}
2204impl Default for CODEPAGEINFO {
2205    fn default() -> Self {
2206        unsafe { core::mem::zeroed() }
2207    }
2208}
2209pub const COMMIT_ONLYIFDIRTY: u32 = 1u32;
2210pub const COMMIT_REUSESTORAGE: u32 = 2u32;
2211pub const COMMIT_SMIMETRANSFERENCODE: u32 = 4u32;
2212pub const CONFIG_CHANGED: u32 = 1048576u32;
2213pub const CONFIG_NO_AUTO_DETECT: u32 = 16u32;
2214pub const CONFIG_OST_CACHE_ONLY: u32 = 32u32;
2215pub const CONFIG_PROMPT_FOR_CREDENTIALS: u32 = 8u32;
2216pub const CONFIG_SERVICE: u32 = 1u32;
2217pub const CONFIG_SHOW_CONNECT_UI: u32 = 4u32;
2218pub const CONFIG_SHOW_STARTUP_UI: u32 = 2u32;
2219pub const CONNECT_ANONYMOUS_ACCESS: u32 = 16u32;
2220pub const CONNECT_NO_ADDRESS_RESOLUTION: u32 = 64u32;
2221pub const CONNECT_NO_NOTIFICATIONS: u32 = 32u32;
2222pub const CONNECT_NO_RPC_ENCRYPTION: u32 = 2u32;
2223pub const CONNECT_NO_TABLE_NOTIFICATIONS: u32 = 32u32;
2224pub const CONNECT_NO_UNDER_COVER_CONNECTION: u32 = 8u32;
2225pub const CONNECT_RESTORE_DATABASE: u32 = 128u32;
2226pub const CONNECT_USE_ADMIN_PRIVILEGE: u32 = 1u32;
2227pub const CONNECT_USE_SEPARATE_CONNECTION: u32 = 4u32;
2228pub const CONVENIENT_DEPTH: u32 = 1u32;
2229pub const COPY_SUBFOLDERS: u32 = 16u32;
2230pub const COUNTRY_PAD: u32 = 0u32;
2231pub const CP_ACP: u32 = 0u32;
2232pub const CP_ISO2022JPESC: u32 = 50221u32;
2233pub const CP_ISO2022JPSIO: u32 = 50222u32;
2234pub const CP_JAUTODETECT: u32 = 50932u32;
2235pub const CP_KAUTODETECT: u32 = 50949u32;
2236pub const CP_OEMCP: u32 = 1u32;
2237pub const CP_UNICODE: u32 = 1200u32;
2238pub const CP_USASCII: u32 = 1252u32;
2239pub const CREATE_ALWAYS: u32 = 2u32;
2240pub const CREATE_CHECK_DUP_LOOSE: u32 = 2u32;
2241pub const CREATE_CHECK_DUP_STRICT: u32 = 1u32;
2242pub const CREATE_NEW: u32 = 1u32;
2243pub const CREATE_REPLACE: u32 = 4u32;
2244#[repr(transparent)]
2245#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2246pub struct CSETAPPLYTYPE(pub i32);
2247pub const CSET_APPLY_ALL: CSETAPPLYTYPE = CSETAPPLYTYPE(1i32);
2248pub const CSET_APPLY_TAG_ALL: CSETAPPLYTYPE = CSETAPPLYTYPE(2i32);
2249pub const CSET_APPLY_UNTAGGED: CSETAPPLYTYPE = CSETAPPLYTYPE(0i32);
2250pub const CURRENT_SPI_VERSION: i32 = 65552i32;
2251pub const DEF_ALLOW_8BIT_HEADER: u32 = 0u32;
2252pub const DEF_BODY_REMOVE_NBSP: u32 = 1u32;
2253pub const DEF_CAN_INLINE_TEXT_BODIES: u32 = 0u32;
2254pub const DEF_CBMAX_BODY_LINE: u32 = 74u32;
2255pub const DEF_CBMAX_HEADER_LINE: u32 = 1000u32;
2256pub const DEF_CLEANUP_TREE_ON_SAVE: u32 = 1u32;
2257pub const DEF_DBCS_ESCAPE_IS_8BIT: u32 = 0u32;
2258pub const DEF_DECODE_RFC1154: u32 = 0u32;
2259pub const DEF_ENCRYPTION_ALG_ID: u32 = 26114u32;
2260pub const DEF_GENERATE_MESSAGE_ID: u32 = 0u32;
2261pub const DEF_HANDSOFF_ONSAVE: u32 = 0u32;
2262pub const DEF_HASH_ALG_ID: u32 = 32772u32;
2263pub const DEF_HIDE_TNEF_ATTACHMENTS: u32 = 1u32;
2264pub const DEF_INCLUDE_SENDER_CERT: u32 = 0u32;
2265pub const DEF_LOAD_USE_BIND_FILE: u32 = 0u32;
2266pub const DEF_NO_DEFAULT_CNTTYPE: u32 = 0u32;
2267pub const DEF_SAVEBODY_KEEPBOUNDARY: u32 = 0u32;
2268pub const DEF_SECURITY_IGNOREMASK: u32 = 0u32;
2269pub const DEF_SHOW_MACBINARY: u32 = 0u32;
2270pub const DEF_SUPPORT_EXTERNAL_BODY: u32 = 0u32;
2271pub const DEF_WRAP_BODY_TEXT: u32 = 1u32;
2272pub const DEINIT_HURRY: u32 = 2147483648u32;
2273pub const DEINIT_NORMAL: u32 = 1u32;
2274pub const DELETE_CHILDREN_ONLY: u32 = 2u32;
2275pub const DELETE_HARD_DELETE: u32 = 16u32;
2276pub const DELETE_PROMOTE_CHILDREN: u32 = 1u32;
2277pub const DEL_ASSOCIATED: u32 = 8u32;
2278pub const DEL_FOLDERS: u32 = 4u32;
2279pub const DEL_MESSAGES: u32 = 1u32;
2280pub const DIALOG_ALLOW_CANCEL: u32 = 128u32;
2281pub const DIALOG_ATTACH: u32 = 8u32;
2282pub const DIALOG_CONFIRM_CANCEL: u32 = 256u32;
2283pub const DIALOG_COPY: u32 = 32u32;
2284pub const DIALOG_DELETE: u32 = 64u32;
2285pub const DIALOG_FOLDER: u32 = 1u32;
2286pub const DIALOG_MESSAGE: u32 = 2u32;
2287pub const DIALOG_MODAL: u32 = 1u32;
2288pub const DIALOG_MOVE: u32 = 16u32;
2289pub const DIALOG_OPTIONS: u32 = 4u32;
2290pub const DIALOG_PROP: u32 = 4u32;
2291pub const DIALOG_SDI: u32 = 2u32;
2292pub const DIR_BACKWARD: u32 = 1u32;
2293pub const DO_NOT_SEND_TO_ORIGINATOR: u32 = 1u32;
2294#[repr(C)]
2295#[derive(Clone, Copy, Debug, Default, PartialEq)]
2296pub struct DTBLBUTTON {
2297    pub ulbLpszLabel: u32,
2298    pub ulFlags: u32,
2299    pub ulPRControl: u32,
2300}
2301#[repr(C)]
2302#[derive(Clone, Copy, Debug, Default, PartialEq)]
2303pub struct DTBLCHECKBOX {
2304    pub ulbLpszLabel: u32,
2305    pub ulFlags: u32,
2306    pub ulPRPropertyName: u32,
2307}
2308#[repr(C)]
2309#[derive(Clone, Copy, Debug, Default, PartialEq)]
2310pub struct DTBLCOMBOBOX {
2311    pub ulbLpszCharsAllowed: u32,
2312    pub ulFlags: u32,
2313    pub ulNumCharsAllowed: u32,
2314    pub ulPRPropertyName: u32,
2315    pub ulPRTableName: u32,
2316}
2317#[repr(C)]
2318#[derive(Clone, Copy, Debug, Default, PartialEq)]
2319pub struct DTBLDDLBX {
2320    pub ulFlags: u32,
2321    pub ulPRDisplayProperty: u32,
2322    pub ulPRSetProperty: u32,
2323    pub ulPRTableName: u32,
2324}
2325#[repr(C)]
2326#[derive(Clone, Copy, Debug, Default, PartialEq)]
2327pub struct DTBLEDIT {
2328    pub ulbLpszCharsAllowed: u32,
2329    pub ulFlags: u32,
2330    pub ulNumCharsAllowed: u32,
2331    pub ulPropTag: u32,
2332}
2333#[repr(C)]
2334#[derive(Clone, Copy, Debug, Default, PartialEq)]
2335pub struct DTBLGROUPBOX {
2336    pub ulbLpszLabel: u32,
2337    pub ulFlags: u32,
2338}
2339#[repr(C)]
2340#[derive(Clone, Copy, Debug, Default, PartialEq)]
2341pub struct DTBLLABEL {
2342    pub ulbLpszLabelName: u32,
2343    pub ulFlags: u32,
2344}
2345#[repr(C)]
2346#[derive(Clone, Copy, Debug, Default, PartialEq)]
2347pub struct DTBLLBX {
2348    pub ulFlags: u32,
2349    pub ulPRSetProperty: u32,
2350    pub ulPRTableName: u32,
2351}
2352#[repr(C)]
2353#[derive(Clone, Copy, Debug, Default, PartialEq)]
2354pub struct DTBLMVDDLBX {
2355    pub ulFlags: u32,
2356    pub ulMVPropTag: u32,
2357}
2358#[repr(C)]
2359#[derive(Clone, Copy, Debug, Default, PartialEq)]
2360pub struct DTBLMVLISTBOX {
2361    pub ulFlags: u32,
2362    pub ulMVPropTag: u32,
2363}
2364#[repr(C)]
2365#[derive(Clone, Copy, Debug, Default, PartialEq)]
2366pub struct DTBLPAGE {
2367    pub ulbLpszLabel: u32,
2368    pub ulFlags: u32,
2369    pub ulbLpszComponent: u32,
2370    pub ulContext: u32,
2371}
2372#[repr(C)]
2373#[derive(Clone, Copy, Debug, Default, PartialEq)]
2374pub struct DTBLRADIOBUTTON {
2375    pub ulbLpszLabel: u32,
2376    pub ulFlags: u32,
2377    pub ulcButtons: u32,
2378    pub ulPropTag: u32,
2379    pub lReturnValue: i32,
2380}
2381#[repr(C)]
2382#[derive(Clone, Copy)]
2383pub struct DTCTL {
2384    pub ulCtlType: u32,
2385    pub ulCtlFlags: u32,
2386    pub lpbNotif: *mut u8,
2387    pub cbNotif: u32,
2388    pub lpszFilter: *mut i8,
2389    pub ulItemID: u32,
2390    pub ctl: DTCTL_0,
2391}
2392impl Default for DTCTL {
2393    fn default() -> Self {
2394        unsafe { core::mem::zeroed() }
2395    }
2396}
2397#[repr(C)]
2398#[derive(Clone, Copy)]
2399pub union DTCTL_0 {
2400    pub lpv: *mut core::ffi::c_void,
2401    pub lplabel: *mut DTBLLABEL,
2402    pub lpedit: *mut DTBLEDIT,
2403    pub lplbx: *mut DTBLLBX,
2404    pub lpcombobox: *mut DTBLCOMBOBOX,
2405    pub lpddlbx: *mut DTBLDDLBX,
2406    pub lpcheckbox: *mut DTBLCHECKBOX,
2407    pub lpgroupbox: *mut DTBLGROUPBOX,
2408    pub lpbutton: *mut DTBLBUTTON,
2409    pub lpradiobutton: *mut DTBLRADIOBUTTON,
2410    pub lpmvlbx: *mut DTBLMVLISTBOX,
2411    pub lpmvddlbx: *mut DTBLMVDDLBX,
2412    pub lppage: *mut DTBLPAGE,
2413}
2414impl Default for DTCTL_0 {
2415    fn default() -> Self {
2416        unsafe { core::mem::zeroed() }
2417    }
2418}
2419pub const DTCT_BUTTON: u32 = 7u32;
2420pub const DTCT_CHECKBOX: u32 = 5u32;
2421pub const DTCT_COMBOBOX: u32 = 3u32;
2422pub const DTCT_DDLBX: u32 = 4u32;
2423pub const DTCT_EDIT: u32 = 1u32;
2424pub const DTCT_GROUPBOX: u32 = 6u32;
2425pub const DTCT_LABEL: u32 = 0u32;
2426pub const DTCT_LBX: u32 = 2u32;
2427pub const DTCT_MVDDLBX: u32 = 12u32;
2428pub const DTCT_MVLISTBOX: u32 = 11u32;
2429pub const DTCT_PAGE: u32 = 8u32;
2430pub const DTCT_RADIOBUTTON: u32 = 9u32;
2431pub const DTE_FLAG_ACL_CAPABLE: u32 = 1073741824u32;
2432pub const DTE_FLAG_REMOTE_VALID: u32 = 2147483648u32;
2433pub const DTE_MASK_LOCAL: u32 = 255u32;
2434pub const DTE_MASK_REMOTE: u32 = 65280u32;
2435#[repr(C)]
2436#[derive(Clone, Copy)]
2437pub struct DTPAGE {
2438    pub cctl: u32,
2439    pub lpszResourceName: *mut i8,
2440    pub Anonymous: DTPAGE_0,
2441    pub lpctl: *mut DTCTL,
2442}
2443impl Default for DTPAGE {
2444    fn default() -> Self {
2445        unsafe { core::mem::zeroed() }
2446    }
2447}
2448#[repr(C)]
2449#[derive(Clone, Copy)]
2450pub union DTPAGE_0 {
2451    pub lpszComponent: *mut i8,
2452    pub ulItemID: u32,
2453}
2454impl Default for DTPAGE_0 {
2455    fn default() -> Self {
2456        unsafe { core::mem::zeroed() }
2457    }
2458}
2459pub const DT_ACCEPT_DBCS: u32 = 32u32;
2460pub const DT_AGENT: u32 = 3u32;
2461pub const DT_DISTLIST: u32 = 1u32;
2462pub const DT_EDITABLE: u32 = 2u32;
2463pub const DT_EQUIPMENT: u32 = 8u32;
2464pub const DT_FOLDER: u32 = 16777216u32;
2465pub const DT_FOLDER_LINK: u32 = 33554432u32;
2466pub const DT_FOLDER_SPECIAL: u32 = 67108864u32;
2467pub const DT_FORUM: u32 = 2u32;
2468pub const DT_GLOBAL: u32 = 131072u32;
2469pub const DT_LOCAL: u32 = 196608u32;
2470pub const DT_MAILUSER: u32 = 0u32;
2471pub const DT_MODIFIABLE: u32 = 65536u32;
2472pub const DT_MULTILINE: u32 = 1u32;
2473pub const DT_NOT_SPECIFIC: u32 = 327680u32;
2474pub const DT_ORGANIZATION: u32 = 4u32;
2475pub const DT_PASSWORD_EDIT: u32 = 16u32;
2476pub const DT_PRIVATE_DISTLIST: u32 = 5u32;
2477pub const DT_REMOTE_MAILUSER: u32 = 6u32;
2478pub const DT_REQUIRED: u32 = 4u32;
2479pub const DT_ROOM: u32 = 7u32;
2480pub const DT_SEC_DISTLIST: u32 = 9u32;
2481pub const DT_SET_IMMEDIATE: u32 = 8u32;
2482pub const DT_SET_SELECTION: u32 = 64u32;
2483pub const DT_WAN: u32 = 262144u32;
2484pub const EBF_COMMITIFDIRTY: u32 = 131072u32;
2485pub const EBF_MASK: u32 = 4294901760u32;
2486pub const EBF_RECURSE: u32 = 65536u32;
2487pub const EDITOR_FORMAT_DONTKNOW: u32 = 0u32;
2488pub const EDITOR_FORMAT_HTML: u32 = 2u32;
2489pub const EDITOR_FORMAT_PLAINTEXT: u32 = 1u32;
2490pub const EDITOR_FORMAT_RTF: u32 = 3u32;
2491pub const EDK_RULES_VERSION: u32 = 1u32;
2492pub const EMS_AB_ADDRESS_LOOKUP: u32 = 1u32;
2493#[repr(transparent)]
2494#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2495pub struct ENCODINGTYPE(pub i32);
2496pub const END_DONT_RESEND: u32 = 262144u32;
2497pub const END_RESEND_LATER: u32 = 131072u32;
2498pub const END_RESEND_NOW: u32 = 65536u32;
2499#[repr(C)]
2500#[derive(Clone, Copy, Debug, PartialEq)]
2501pub struct ENTRYID {
2502    pub abFlags: [u8; 4],
2503    pub ab: [u8; 1],
2504}
2505impl Default for ENTRYID {
2506    fn default() -> Self {
2507        unsafe { core::mem::zeroed() }
2508    }
2509}
2510#[repr(C)]
2511#[derive(Clone, Copy, Debug, PartialEq)]
2512pub struct ENUMHEADERROW {
2513    pub hRow: *mut HHEADERROW__,
2514    pub pszHeader: windows_core::PSTR,
2515    pub pszData: windows_core::PSTR,
2516    pub cchData: u32,
2517    pub dwReserved: u32,
2518}
2519impl Default for ENUMHEADERROW {
2520    fn default() -> Self {
2521        unsafe { core::mem::zeroed() }
2522    }
2523}
2524#[repr(C)]
2525#[derive(Clone, Copy, Debug, PartialEq)]
2526pub struct ENUMPROPERTY {
2527    pub pszName: windows_core::PSTR,
2528    pub hRow: *mut HHEADERROW__,
2529    pub dwPropId: u32,
2530}
2531impl Default for ENUMPROPERTY {
2532    fn default() -> Self {
2533        unsafe { core::mem::zeroed() }
2534    }
2535}
2536pub const ENV_BLANK: u32 = 0u32;
2537pub const ENV_MSG_EXT: u32 = 2u32;
2538pub const ENV_RECIP_EXT: u32 = 4u32;
2539pub const ENV_RECIP_NUM: u32 = 1u32;
2540pub const EPF_NONAME: u32 = 1u32;
2541#[repr(C)]
2542#[derive(Clone, Copy, Debug, PartialEq)]
2543pub struct ERROR_NOTIFICATION {
2544    pub cbEntryID: u32,
2545    pub lpEntryID: *mut ENTRYID,
2546    pub scode: i32,
2547    pub ulFlags: u32,
2548    pub lpMAPIError: *mut MAPIERROR,
2549}
2550impl Default for ERROR_NOTIFICATION {
2551    fn default() -> Self {
2552        unsafe { core::mem::zeroed() }
2553    }
2554}
2555pub const EXCHANGE_RM_SET_EXPLICIT_SD: u32 = 1u32;
2556pub const EXCHIVERB_FORWARD: u32 = 104u32;
2557pub const EXCHIVERB_OPEN: u32 = 0u32;
2558pub const EXCHIVERB_PRINT: u32 = 105u32;
2559pub const EXCHIVERB_REPLYTOALL: u32 = 103u32;
2560pub const EXCHIVERB_REPLYTOFOLDER: u32 = 108u32;
2561pub const EXCHIVERB_REPLYTOSENDER: u32 = 102u32;
2562pub const EXCHIVERB_RESERVED_COMPOSE: u32 = 100u32;
2563pub const EXCHIVERB_RESERVED_DELIVERY: u32 = 107u32;
2564pub const EXCHIVERB_RESERVED_OPEN: u32 = 101u32;
2565pub const EXCHIVERB_SAVEAS: u32 = 106u32;
2566#[repr(C)]
2567#[derive(Clone, Copy, Debug, PartialEq)]
2568pub struct EXTENDED_NOTIFICATION {
2569    pub ulEvent: u32,
2570    pub cb: u32,
2571    pub pbEventParameters: *mut u8,
2572}
2573impl Default for EXTENDED_NOTIFICATION {
2574    fn default() -> Self {
2575        unsafe { core::mem::zeroed() }
2576    }
2577}
2578pub const E_ACCT_NOT_FOUND: u32 = 2148303105u32;
2579pub const E_ACCT_WRONG_SORT_ORDER: u32 = 2148303109u32;
2580pub const E_OLK_ALREADY_INITIALIZED: u32 = 2148302850u32;
2581pub const E_OLK_NOT_INITIALIZED: u32 = 2148302853u32;
2582pub const E_OLK_PARAM_NOT_SUPPORTED: u32 = 2148302851u32;
2583pub const E_OLK_PROP_READ_ONLY: u32 = 2148302861u32;
2584pub const E_OLK_REGISTRY: u32 = 2148302850u32;
2585pub const FACILITY_INTERNET: u32 = 12u32;
2586pub type FGETCOMPONENTPATH = Option<
2587    unsafe extern "system" fn(
2588        szcomponent: *mut i8,
2589        szqualifier: *mut i8,
2590        szdllpath: *mut i8,
2591        cchbuffersize: u32,
2592        finstall: windows_core::BOOL,
2593    ) -> windows_core::BOOL,
2594>;
2595pub const FILE_ATTRIBUTE_ARCHIVE: u32 = 32u32;
2596pub const FILE_ATTRIBUTE_DIRECTORY: u32 = 16u32;
2597pub const FILE_ATTRIBUTE_HIDDEN: u32 = 2u32;
2598pub const FILE_ATTRIBUTE_NORMAL: u32 = 128u32;
2599pub const FILE_ATTRIBUTE_READONLY: u32 = 1u32;
2600pub const FILE_ATTRIBUTE_SYSTEM: u32 = 4u32;
2601pub const FILE_ATTRIBUTE_TEMPORARY: u32 = 256u32;
2602pub const FILE_FLAG_RANDOM_ACCESS: u32 = 268435456u32;
2603pub const FILE_FLAG_SEQUENTIAL_SCAN: u32 = 134217728u32;
2604pub const FILE_FLAG_WRITE_THROUGH: u32 = 2147483648u32;
2605pub const FILL_ENTRY: u32 = 1u32;
2606#[repr(C)]
2607#[derive(Clone, Copy, Debug, Default, PartialEq)]
2608pub struct FINDBODY {
2609    pub pszPriType: windows_core::PSTR,
2610    pub pszSubType: windows_core::PSTR,
2611    pub dwReserved: u32,
2612}
2613#[repr(C)]
2614#[derive(Clone, Copy, Debug, Default, PartialEq)]
2615pub struct FINDHEADER {
2616    pub pszHeader: windows_core::PCSTR,
2617    pub dwReserved: u32,
2618}
2619#[repr(C)]
2620#[derive(Clone, Copy, Debug, PartialEq)]
2621pub struct FLATENTRY {
2622    pub cb: u32,
2623    pub abEntry: [u8; 1],
2624}
2625impl Default for FLATENTRY {
2626    fn default() -> Self {
2627        unsafe { core::mem::zeroed() }
2628    }
2629}
2630#[repr(C)]
2631#[derive(Clone, Copy, Debug, PartialEq)]
2632pub struct FLATENTRYLIST {
2633    pub cEntries: u32,
2634    pub cbEntries: u32,
2635    pub abEntries: [u8; 1],
2636}
2637impl Default for FLATENTRYLIST {
2638    fn default() -> Self {
2639        unsafe { core::mem::zeroed() }
2640    }
2641}
2642#[repr(C)]
2643#[derive(Clone, Copy, Debug, PartialEq)]
2644pub struct FLATMTSIDLIST {
2645    pub cMTSIDs: u32,
2646    pub cbMTSIDs: u32,
2647    pub abMTSIDs: [u8; 1],
2648}
2649impl Default for FLATMTSIDLIST {
2650    fn default() -> Self {
2651        unsafe { core::mem::zeroed() }
2652    }
2653}
2654pub const FLDSTATUS_DELMARKED: u32 = 8u32;
2655pub const FLDSTATUS_HIDDEN: u32 = 4u32;
2656pub const FLDSTATUS_HIGHLIGHTED: u32 = 1u32;
2657pub const FLDSTATUS_TAGGED: u32 = 2u32;
2658pub const FLUSH_ASYNC_OK: u32 = 32u32;
2659pub const FLUSH_DOWNLOAD: u32 = 4u32;
2660pub const FLUSH_FORCE: u32 = 8u32;
2661pub const FLUSH_NO_UI: u32 = 16u32;
2662pub const FLUSH_UPLOAD: u32 = 2u32;
2663pub const FL_FULLSTRING: u32 = 0u32;
2664pub const FL_IGNORECASE: u32 = 65536u32;
2665pub const FL_IGNORENONSPACE: u32 = 131072u32;
2666pub const FL_LOOSE: u32 = 262144u32;
2667pub const FL_PREFIX: u32 = 2u32;
2668pub const FL_SUBSTRING: u32 = 1u32;
2669#[repr(transparent)]
2670#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2671pub struct FNTSYSTYPE(pub i32);
2672pub const FNT_SYS_ICON: FNTSYSTYPE = FNTSYSTYPE(0i32);
2673pub const FNT_SYS_ICON_BOLD: FNTSYSTYPE = FNTSYSTYPE(1i32);
2674pub const FNT_SYS_ICON_STRIKEOUT: FNTSYSTYPE = FNTSYSTYPE(3i32);
2675pub const FNT_SYS_LAST: FNTSYSTYPE = FNTSYSTYPE(4i32);
2676pub const FNT_SYS_MENU: FNTSYSTYPE = FNTSYSTYPE(2i32);
2677pub const FOLDER_COMMON_VIEWS_VALID: u32 = 64u32;
2678pub const FOLDER_DIALOG: u32 = 2u32;
2679pub const FOLDER_FINDER_VALID: u32 = 128u32;
2680pub const FOLDER_GENERIC: u32 = 1u32;
2681pub const FOLDER_IPM_INBOX_VALID: u32 = 2u32;
2682pub const FOLDER_IPM_OUTBOX_VALID: u32 = 4u32;
2683pub const FOLDER_IPM_SENTMAIL_VALID: u32 = 16u32;
2684pub const FOLDER_IPM_SUBTREE_VALID: u32 = 1u32;
2685pub const FOLDER_IPM_WASTEBASKET_VALID: u32 = 8u32;
2686pub const FOLDER_MOVE: u32 = 1u32;
2687pub const FOLDER_ROOT: u32 = 0u32;
2688pub const FOLDER_SEARCH: u32 = 2u32;
2689pub const FOLDER_VIEWS_VALID: u32 = 32u32;
2690pub const FORCE_SAVE: u32 = 4u32;
2691pub const FORCE_SUBMIT: u32 = 1u32;
2692pub const FORCE_XP_CONNECT: u32 = 262144u32;
2693pub const FORCE_XP_DISCONNECT: u32 = 524288u32;
2694pub const FOREGROUND_SEARCH: u32 = 16u32;
2695#[repr(C)]
2696#[derive(Clone, Copy, Debug, Default, PartialEq)]
2697pub struct FORMPRINTSETUP {
2698    pub ulFlags: u32,
2699    pub hDevMode: windows::Win32::Foundation::HGLOBAL,
2700    pub hDevNames: windows::Win32::Foundation::HGLOBAL,
2701    pub ulFirstPageNumber: u32,
2702    pub fPrintAttachments: u32,
2703}
2704pub const FORMPROPSET_INTERSECTION: u32 = 1u32;
2705pub const FORMPROPSET_UNION: u32 = 0u32;
2706pub const FPST_ENUM_PROP: u32 = 1u32;
2707pub const FPST_VANILLA: u32 = 0u32;
2708pub const FWD_AS_ATTACHMENT: u32 = 4u32;
2709pub const FWD_DO_NOT_MUNGE_MSG: u32 = 2u32;
2710pub const FWD_PRESERVE_SENDER: u32 = 1u32;
2711#[repr(C)]
2712#[derive(Clone, Copy, Debug, PartialEq)]
2713pub struct FlagList {
2714    pub cFlags: u32,
2715    pub ulFlag: [u32; 1],
2716}
2717impl Default for FlagList {
2718    fn default() -> Self {
2719        unsafe { core::mem::zeroed() }
2720    }
2721}
2722pub const GENERATE_RECEIPT_ONLY: u32 = 16u32;
2723#[repr(C)]
2724#[derive(Clone, Copy, Debug, Default, PartialEq)]
2725pub struct HADDRESS__ {
2726    pub unused: u32,
2727}
2728#[repr(C)]
2729#[derive(Clone, Copy, Debug, Default, PartialEq)]
2730pub struct HBODY__ {
2731    pub unused: u32,
2732}
2733#[repr(C)]
2734#[derive(Clone, Copy, Debug, Default, PartialEq)]
2735pub struct HCHARSET__ {
2736    pub unused: u32,
2737}
2738#[repr(C)]
2739#[derive(Clone, Copy, Debug, Default, PartialEq)]
2740pub struct HEADERROWINFO {
2741    pub dwRowNumber: u32,
2742    pub cboffStart: u32,
2743    pub cboffColon: u32,
2744    pub cboffEnd: u32,
2745}
2746#[repr(transparent)]
2747#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
2748pub struct HEADERTABLEFLAGS(pub i32);
2749pub const HFRMREG_DEFAULT: u32 = 0u32;
2750pub const HFRMREG_FOLDER: u32 = 3u32;
2751pub const HFRMREG_LOCAL: u32 = 1u32;
2752pub const HFRMREG_PERSONAL: u32 = 2u32;
2753pub const HF_NO_DUPLICATES: u32 = 1u32;
2754#[repr(C)]
2755#[derive(Clone, Copy, Debug, Default, PartialEq)]
2756pub struct HHEADERROW__ {
2757    pub unused: u32,
2758}
2759pub const HOOK_CANCEL: u32 = 2u32;
2760pub const HOOK_DELETE: u32 = 1u32;
2761pub const HOOK_INBOUND: u32 = 512u32;
2762pub const HOOK_OUTBOUND: u32 = 1024u32;
2763pub type HPPROVIDERINIT = Option<
2764    unsafe extern "system" fn(
2765        lpsession: windows_core::Ref<IMAPISession>,
2766        hinstance: windows::Win32::Foundation::HINSTANCE,
2767        lpallocatebuffer: LPALLOCATEBUFFER,
2768        lpallocatemore: LPALLOCATEMORE,
2769        lpfreebuffer: LPFREEBUFFER,
2770        lpsectionuid: *mut MAPIUID,
2771        ulflags: u32,
2772        lppspoolerhook: windows_core::OutRef<ISpoolerHook>,
2773    ) -> windows_core::HRESULT,
2774>;
2775pub const HTF_ENUMHANDLESONLY: HEADERTABLEFLAGS = HEADERTABLEFLAGS(2i32);
2776pub const HTF_NAMEINDATA: HEADERTABLEFLAGS = HEADERTABLEFLAGS(1i32);
2777windows_core::imp::define_interface!(
2778    IABContainer,
2779    IABContainer_Vtbl,
2780    0x0002030d_0000_0000_c000_000000000046
2781);
2782impl core::ops::Deref for IABContainer {
2783    type Target = IMAPIContainer;
2784    fn deref(&self) -> &Self::Target {
2785        unsafe { core::mem::transmute(self) }
2786    }
2787}
2788windows_core::imp::interface_hierarchy!(
2789    IABContainer,
2790    windows_core::IUnknown,
2791    IMAPIProp,
2792    IMAPIContainer
2793);
2794impl IABContainer {
2795    pub unsafe fn CreateEntry(
2796        &self,
2797        cbentryid: u32,
2798        lpentryid: *mut ENTRYID,
2799        ulcreateflags: u32,
2800        lppmapipropentry: *mut Option<IMAPIProp>,
2801    ) -> windows_core::Result<()> {
2802        unsafe {
2803            (windows_core::Interface::vtable(self).CreateEntry)(
2804                windows_core::Interface::as_raw(self),
2805                cbentryid,
2806                lpentryid as _,
2807                ulcreateflags,
2808                core::mem::transmute(lppmapipropentry),
2809            )
2810            .ok()
2811        }
2812    }
2813    pub unsafe fn CopyEntries<P2>(
2814        &self,
2815        lpentries: *mut SBinaryArray,
2816        uluiparam: usize,
2817        lpprogress: P2,
2818        ulflags: u32,
2819    ) -> windows_core::Result<()>
2820    where
2821        P2: windows_core::Param<IMAPIProgress>,
2822    {
2823        unsafe {
2824            (windows_core::Interface::vtable(self).CopyEntries)(
2825                windows_core::Interface::as_raw(self),
2826                lpentries as _,
2827                uluiparam,
2828                lpprogress.param().abi(),
2829                ulflags,
2830            )
2831            .ok()
2832        }
2833    }
2834    pub unsafe fn DeleteEntries(
2835        &self,
2836        lpentries: *mut SBinaryArray,
2837        ulflags: u32,
2838    ) -> windows_core::Result<()> {
2839        unsafe {
2840            (windows_core::Interface::vtable(self).DeleteEntries)(
2841                windows_core::Interface::as_raw(self),
2842                lpentries as _,
2843                ulflags,
2844            )
2845            .ok()
2846        }
2847    }
2848    pub unsafe fn ResolveNames(
2849        &self,
2850        lpproptagarray: *mut SPropTagArray,
2851        ulflags: u32,
2852        lpadrlist: *mut ADRLIST,
2853        lpflaglist: *mut FlagList,
2854    ) -> windows_core::Result<()> {
2855        unsafe {
2856            (windows_core::Interface::vtable(self).ResolveNames)(
2857                windows_core::Interface::as_raw(self),
2858                lpproptagarray as _,
2859                ulflags,
2860                lpadrlist as _,
2861                lpflaglist as _,
2862            )
2863            .ok()
2864        }
2865    }
2866}
2867#[repr(C)]
2868#[doc(hidden)]
2869pub struct IABContainer_Vtbl {
2870    pub base__: IMAPIContainer_Vtbl,
2871    pub CreateEntry: unsafe extern "system" fn(
2872        *mut core::ffi::c_void,
2873        u32,
2874        *mut ENTRYID,
2875        u32,
2876        *mut *mut core::ffi::c_void,
2877    ) -> windows_core::HRESULT,
2878    pub CopyEntries: unsafe extern "system" fn(
2879        *mut core::ffi::c_void,
2880        *mut SBinaryArray,
2881        usize,
2882        *mut core::ffi::c_void,
2883        u32,
2884    ) -> windows_core::HRESULT,
2885    pub DeleteEntries: unsafe extern "system" fn(
2886        *mut core::ffi::c_void,
2887        *mut SBinaryArray,
2888        u32,
2889    ) -> windows_core::HRESULT,
2890    pub ResolveNames: unsafe extern "system" fn(
2891        *mut core::ffi::c_void,
2892        *mut SPropTagArray,
2893        u32,
2894        *mut ADRLIST,
2895        *mut FlagList,
2896    ) -> windows_core::HRESULT,
2897}
2898pub trait IABContainer_Impl: IMAPIContainer_Impl {
2899    fn CreateEntry(
2900        &self,
2901        cbentryid: u32,
2902        lpentryid: *mut ENTRYID,
2903        ulcreateflags: u32,
2904        lppmapipropentry: windows_core::OutRef<IMAPIProp>,
2905    ) -> windows_core::Result<()>;
2906    fn CopyEntries(
2907        &self,
2908        lpentries: *mut SBinaryArray,
2909        uluiparam: usize,
2910        lpprogress: windows_core::Ref<IMAPIProgress>,
2911        ulflags: u32,
2912    ) -> windows_core::Result<()>;
2913    fn DeleteEntries(&self, lpentries: *mut SBinaryArray, ulflags: u32)
2914        -> windows_core::Result<()>;
2915    fn ResolveNames(
2916        &self,
2917        lpproptagarray: *mut SPropTagArray,
2918        ulflags: u32,
2919        lpadrlist: *mut ADRLIST,
2920        lpflaglist: *mut FlagList,
2921    ) -> windows_core::Result<()>;
2922}
2923impl IABContainer_Vtbl {
2924    pub const fn new<Identity: IABContainer_Impl, const OFFSET: isize>() -> Self {
2925        unsafe extern "system" fn CreateEntry<Identity: IABContainer_Impl, const OFFSET: isize>(
2926            this: *mut core::ffi::c_void,
2927            cbentryid: u32,
2928            lpentryid: *mut ENTRYID,
2929            ulcreateflags: u32,
2930            lppmapipropentry: *mut *mut core::ffi::c_void,
2931        ) -> windows_core::HRESULT {
2932            unsafe {
2933                let this: &Identity =
2934                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2935                IABContainer_Impl::CreateEntry(
2936                    this,
2937                    core::mem::transmute_copy(&cbentryid),
2938                    core::mem::transmute_copy(&lpentryid),
2939                    core::mem::transmute_copy(&ulcreateflags),
2940                    core::mem::transmute_copy(&lppmapipropentry),
2941                )
2942                .into()
2943            }
2944        }
2945        unsafe extern "system" fn CopyEntries<Identity: IABContainer_Impl, const OFFSET: isize>(
2946            this: *mut core::ffi::c_void,
2947            lpentries: *mut SBinaryArray,
2948            uluiparam: usize,
2949            lpprogress: *mut core::ffi::c_void,
2950            ulflags: u32,
2951        ) -> windows_core::HRESULT {
2952            unsafe {
2953                let this: &Identity =
2954                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2955                IABContainer_Impl::CopyEntries(
2956                    this,
2957                    core::mem::transmute_copy(&lpentries),
2958                    core::mem::transmute_copy(&uluiparam),
2959                    core::mem::transmute_copy(&lpprogress),
2960                    core::mem::transmute_copy(&ulflags),
2961                )
2962                .into()
2963            }
2964        }
2965        unsafe extern "system" fn DeleteEntries<
2966            Identity: IABContainer_Impl,
2967            const OFFSET: isize,
2968        >(
2969            this: *mut core::ffi::c_void,
2970            lpentries: *mut SBinaryArray,
2971            ulflags: u32,
2972        ) -> windows_core::HRESULT {
2973            unsafe {
2974                let this: &Identity =
2975                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2976                IABContainer_Impl::DeleteEntries(
2977                    this,
2978                    core::mem::transmute_copy(&lpentries),
2979                    core::mem::transmute_copy(&ulflags),
2980                )
2981                .into()
2982            }
2983        }
2984        unsafe extern "system" fn ResolveNames<Identity: IABContainer_Impl, const OFFSET: isize>(
2985            this: *mut core::ffi::c_void,
2986            lpproptagarray: *mut SPropTagArray,
2987            ulflags: u32,
2988            lpadrlist: *mut ADRLIST,
2989            lpflaglist: *mut FlagList,
2990        ) -> windows_core::HRESULT {
2991            unsafe {
2992                let this: &Identity =
2993                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
2994                IABContainer_Impl::ResolveNames(
2995                    this,
2996                    core::mem::transmute_copy(&lpproptagarray),
2997                    core::mem::transmute_copy(&ulflags),
2998                    core::mem::transmute_copy(&lpadrlist),
2999                    core::mem::transmute_copy(&lpflaglist),
3000                )
3001                .into()
3002            }
3003        }
3004        Self {
3005            base__: IMAPIContainer_Vtbl::new::<Identity, OFFSET>(),
3006            CreateEntry: CreateEntry::<Identity, OFFSET>,
3007            CopyEntries: CopyEntries::<Identity, OFFSET>,
3008            DeleteEntries: DeleteEntries::<Identity, OFFSET>,
3009            ResolveNames: ResolveNames::<Identity, OFFSET>,
3010        }
3011    }
3012    pub fn matches(iid: &windows_core::GUID) -> bool {
3013        iid == &<IABContainer as windows_core::Interface>::IID
3014            || iid == &<IMAPIProp as windows_core::Interface>::IID
3015            || iid == &<IMAPIContainer as windows_core::Interface>::IID
3016    }
3017}
3018impl windows_core::RuntimeName for IABContainer {}
3019pub const IABContainer_CopyEntries: METHODS = METHODS(43i32);
3020pub const IABContainer_CreateEntry: METHODS = METHODS(42i32);
3021pub const IABContainer_DeleteEntries: METHODS = METHODS(44i32);
3022pub const IABContainer_ResolveNames: METHODS = METHODS(45i32);
3023windows_core::imp::define_interface!(
3024    IABLogon,
3025    IABLogon_Vtbl,
3026    0x00020314_0000_0000_c000_000000000046
3027);
3028windows_core::imp::interface_hierarchy!(IABLogon, windows_core::IUnknown);
3029impl IABLogon {
3030    pub unsafe fn GetLastError(
3031        &self,
3032        hresult: windows_core::HRESULT,
3033        ulflags: u32,
3034        lppmapierror: *mut *mut MAPIERROR,
3035    ) -> windows_core::Result<()> {
3036        unsafe {
3037            (windows_core::Interface::vtable(self).GetLastError)(
3038                windows_core::Interface::as_raw(self),
3039                hresult,
3040                ulflags,
3041                lppmapierror as _,
3042            )
3043            .ok()
3044        }
3045    }
3046    pub unsafe fn Logoff(&self, ulflags: u32) -> windows_core::Result<()> {
3047        unsafe {
3048            (windows_core::Interface::vtable(self).Logoff)(
3049                windows_core::Interface::as_raw(self),
3050                ulflags,
3051            )
3052            .ok()
3053        }
3054    }
3055    pub unsafe fn OpenEntry(
3056        &self,
3057        cbentryid: u32,
3058        lpentryid: *mut ENTRYID,
3059        lpinterface: *mut windows_core::GUID,
3060        ulflags: u32,
3061        lpulobjtype: *mut u32,
3062        lppunk: *mut Option<windows_core::IUnknown>,
3063    ) -> windows_core::Result<()> {
3064        unsafe {
3065            (windows_core::Interface::vtable(self).OpenEntry)(
3066                windows_core::Interface::as_raw(self),
3067                cbentryid,
3068                lpentryid as _,
3069                lpinterface as _,
3070                ulflags,
3071                lpulobjtype as _,
3072                core::mem::transmute(lppunk),
3073            )
3074            .ok()
3075        }
3076    }
3077    pub unsafe fn CompareEntryIDs(
3078        &self,
3079        cbentryid1: u32,
3080        lpentryid1: *mut ENTRYID,
3081        cbentryid2: u32,
3082        lpentryid2: *mut ENTRYID,
3083        ulflags: u32,
3084        lpulresult: *mut u32,
3085    ) -> windows_core::Result<()> {
3086        unsafe {
3087            (windows_core::Interface::vtable(self).CompareEntryIDs)(
3088                windows_core::Interface::as_raw(self),
3089                cbentryid1,
3090                lpentryid1 as _,
3091                cbentryid2,
3092                lpentryid2 as _,
3093                ulflags,
3094                lpulresult as _,
3095            )
3096            .ok()
3097        }
3098    }
3099    pub unsafe fn Advise<P3>(
3100        &self,
3101        cbentryid: u32,
3102        lpentryid: *mut ENTRYID,
3103        uleventmask: u32,
3104        lpadvisesink: P3,
3105        lpulconnection: *mut usize,
3106    ) -> windows_core::Result<()>
3107    where
3108        P3: windows_core::Param<IMAPIAdviseSink>,
3109    {
3110        unsafe {
3111            (windows_core::Interface::vtable(self).Advise)(
3112                windows_core::Interface::as_raw(self),
3113                cbentryid,
3114                lpentryid as _,
3115                uleventmask,
3116                lpadvisesink.param().abi(),
3117                lpulconnection as _,
3118            )
3119            .ok()
3120        }
3121    }
3122    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
3123        unsafe {
3124            (windows_core::Interface::vtable(self).Unadvise)(
3125                windows_core::Interface::as_raw(self),
3126                ulconnection,
3127            )
3128            .ok()
3129        }
3130    }
3131    pub unsafe fn OpenStatusEntry(
3132        &self,
3133        lpinterface: *mut windows_core::GUID,
3134        ulflags: u32,
3135        lpulobjtype: *mut u32,
3136        lppentry: *mut Option<IMAPIStatus>,
3137    ) -> windows_core::Result<()> {
3138        unsafe {
3139            (windows_core::Interface::vtable(self).OpenStatusEntry)(
3140                windows_core::Interface::as_raw(self),
3141                lpinterface as _,
3142                ulflags,
3143                lpulobjtype as _,
3144                core::mem::transmute(lppentry),
3145            )
3146            .ok()
3147        }
3148    }
3149    pub unsafe fn OpenTemplateID<P3, P6>(
3150        &self,
3151        cbtemplateid: u32,
3152        lptemplateid: *mut ENTRYID,
3153        ultemplateflags: u32,
3154        lpmapipropdata: P3,
3155        lpinterface: *mut windows_core::GUID,
3156        lppmapipropnew: *mut Option<IMAPIProp>,
3157        lpmapipropsibling: P6,
3158    ) -> windows_core::Result<()>
3159    where
3160        P3: windows_core::Param<IMAPIProp>,
3161        P6: windows_core::Param<IMAPIProp>,
3162    {
3163        unsafe {
3164            (windows_core::Interface::vtable(self).OpenTemplateID)(
3165                windows_core::Interface::as_raw(self),
3166                cbtemplateid,
3167                lptemplateid as _,
3168                ultemplateflags,
3169                lpmapipropdata.param().abi(),
3170                lpinterface as _,
3171                core::mem::transmute(lppmapipropnew),
3172                lpmapipropsibling.param().abi(),
3173            )
3174            .ok()
3175        }
3176    }
3177    pub unsafe fn GetOneOffTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
3178        unsafe {
3179            let mut result__ = core::mem::zeroed();
3180            (windows_core::Interface::vtable(self).GetOneOffTable)(
3181                windows_core::Interface::as_raw(self),
3182                ulflags,
3183                &mut result__,
3184            )
3185            .and_then(|| windows_core::Type::from_abi(result__))
3186        }
3187    }
3188    pub unsafe fn PrepareRecips(
3189        &self,
3190        ulflags: u32,
3191        lpproptagarray: *mut SPropTagArray,
3192        lpreciplist: *mut ADRLIST,
3193    ) -> windows_core::Result<()> {
3194        unsafe {
3195            (windows_core::Interface::vtable(self).PrepareRecips)(
3196                windows_core::Interface::as_raw(self),
3197                ulflags,
3198                lpproptagarray as _,
3199                lpreciplist as _,
3200            )
3201            .ok()
3202        }
3203    }
3204}
3205#[repr(C)]
3206#[doc(hidden)]
3207pub struct IABLogon_Vtbl {
3208    pub base__: windows_core::IUnknown_Vtbl,
3209    pub GetLastError: unsafe extern "system" fn(
3210        *mut core::ffi::c_void,
3211        windows_core::HRESULT,
3212        u32,
3213        *mut *mut MAPIERROR,
3214    ) -> windows_core::HRESULT,
3215    pub Logoff: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
3216    pub OpenEntry: unsafe extern "system" fn(
3217        *mut core::ffi::c_void,
3218        u32,
3219        *mut ENTRYID,
3220        *mut windows_core::GUID,
3221        u32,
3222        *mut u32,
3223        *mut *mut core::ffi::c_void,
3224    ) -> windows_core::HRESULT,
3225    pub CompareEntryIDs: unsafe extern "system" fn(
3226        *mut core::ffi::c_void,
3227        u32,
3228        *mut ENTRYID,
3229        u32,
3230        *mut ENTRYID,
3231        u32,
3232        *mut u32,
3233    ) -> windows_core::HRESULT,
3234    pub Advise: unsafe extern "system" fn(
3235        *mut core::ffi::c_void,
3236        u32,
3237        *mut ENTRYID,
3238        u32,
3239        *mut core::ffi::c_void,
3240        *mut usize,
3241    ) -> windows_core::HRESULT,
3242    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
3243    pub OpenStatusEntry: unsafe extern "system" fn(
3244        *mut core::ffi::c_void,
3245        *mut windows_core::GUID,
3246        u32,
3247        *mut u32,
3248        *mut *mut core::ffi::c_void,
3249    ) -> windows_core::HRESULT,
3250    pub OpenTemplateID: unsafe extern "system" fn(
3251        *mut core::ffi::c_void,
3252        u32,
3253        *mut ENTRYID,
3254        u32,
3255        *mut core::ffi::c_void,
3256        *mut windows_core::GUID,
3257        *mut *mut core::ffi::c_void,
3258        *mut core::ffi::c_void,
3259    ) -> windows_core::HRESULT,
3260    pub GetOneOffTable: unsafe extern "system" fn(
3261        *mut core::ffi::c_void,
3262        u32,
3263        *mut *mut core::ffi::c_void,
3264    ) -> windows_core::HRESULT,
3265    pub PrepareRecips: unsafe extern "system" fn(
3266        *mut core::ffi::c_void,
3267        u32,
3268        *mut SPropTagArray,
3269        *mut ADRLIST,
3270    ) -> windows_core::HRESULT,
3271}
3272pub trait IABLogon_Impl: windows_core::IUnknownImpl {
3273    fn GetLastError(
3274        &self,
3275        hresult: windows_core::HRESULT,
3276        ulflags: u32,
3277        lppmapierror: *mut *mut MAPIERROR,
3278    ) -> windows_core::Result<()>;
3279    fn Logoff(&self, ulflags: u32) -> windows_core::Result<()>;
3280    fn OpenEntry(
3281        &self,
3282        cbentryid: u32,
3283        lpentryid: *mut ENTRYID,
3284        lpinterface: *mut windows_core::GUID,
3285        ulflags: u32,
3286        lpulobjtype: *mut u32,
3287        lppunk: windows_core::OutRef<windows_core::IUnknown>,
3288    ) -> windows_core::Result<()>;
3289    fn CompareEntryIDs(
3290        &self,
3291        cbentryid1: u32,
3292        lpentryid1: *mut ENTRYID,
3293        cbentryid2: u32,
3294        lpentryid2: *mut ENTRYID,
3295        ulflags: u32,
3296        lpulresult: *mut u32,
3297    ) -> windows_core::Result<()>;
3298    fn Advise(
3299        &self,
3300        cbentryid: u32,
3301        lpentryid: *mut ENTRYID,
3302        uleventmask: u32,
3303        lpadvisesink: windows_core::Ref<IMAPIAdviseSink>,
3304        lpulconnection: *mut usize,
3305    ) -> windows_core::Result<()>;
3306    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
3307    fn OpenStatusEntry(
3308        &self,
3309        lpinterface: *mut windows_core::GUID,
3310        ulflags: u32,
3311        lpulobjtype: *mut u32,
3312        lppentry: windows_core::OutRef<IMAPIStatus>,
3313    ) -> windows_core::Result<()>;
3314    fn OpenTemplateID(
3315        &self,
3316        cbtemplateid: u32,
3317        lptemplateid: *mut ENTRYID,
3318        ultemplateflags: u32,
3319        lpmapipropdata: windows_core::Ref<IMAPIProp>,
3320        lpinterface: *mut windows_core::GUID,
3321        lppmapipropnew: windows_core::OutRef<IMAPIProp>,
3322        lpmapipropsibling: windows_core::Ref<IMAPIProp>,
3323    ) -> windows_core::Result<()>;
3324    fn GetOneOffTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
3325    fn PrepareRecips(
3326        &self,
3327        ulflags: u32,
3328        lpproptagarray: *mut SPropTagArray,
3329        lpreciplist: *mut ADRLIST,
3330    ) -> windows_core::Result<()>;
3331}
3332impl IABLogon_Vtbl {
3333    pub const fn new<Identity: IABLogon_Impl, const OFFSET: isize>() -> Self {
3334        unsafe extern "system" fn GetLastError<Identity: IABLogon_Impl, const OFFSET: isize>(
3335            this: *mut core::ffi::c_void,
3336            hresult: windows_core::HRESULT,
3337            ulflags: u32,
3338            lppmapierror: *mut *mut MAPIERROR,
3339        ) -> windows_core::HRESULT {
3340            unsafe {
3341                let this: &Identity =
3342                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3343                IABLogon_Impl::GetLastError(
3344                    this,
3345                    core::mem::transmute_copy(&hresult),
3346                    core::mem::transmute_copy(&ulflags),
3347                    core::mem::transmute_copy(&lppmapierror),
3348                )
3349                .into()
3350            }
3351        }
3352        unsafe extern "system" fn Logoff<Identity: IABLogon_Impl, const OFFSET: isize>(
3353            this: *mut core::ffi::c_void,
3354            ulflags: u32,
3355        ) -> windows_core::HRESULT {
3356            unsafe {
3357                let this: &Identity =
3358                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3359                IABLogon_Impl::Logoff(this, core::mem::transmute_copy(&ulflags)).into()
3360            }
3361        }
3362        unsafe extern "system" fn OpenEntry<Identity: IABLogon_Impl, const OFFSET: isize>(
3363            this: *mut core::ffi::c_void,
3364            cbentryid: u32,
3365            lpentryid: *mut ENTRYID,
3366            lpinterface: *mut windows_core::GUID,
3367            ulflags: u32,
3368            lpulobjtype: *mut u32,
3369            lppunk: *mut *mut core::ffi::c_void,
3370        ) -> windows_core::HRESULT {
3371            unsafe {
3372                let this: &Identity =
3373                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3374                IABLogon_Impl::OpenEntry(
3375                    this,
3376                    core::mem::transmute_copy(&cbentryid),
3377                    core::mem::transmute_copy(&lpentryid),
3378                    core::mem::transmute_copy(&lpinterface),
3379                    core::mem::transmute_copy(&ulflags),
3380                    core::mem::transmute_copy(&lpulobjtype),
3381                    core::mem::transmute_copy(&lppunk),
3382                )
3383                .into()
3384            }
3385        }
3386        unsafe extern "system" fn CompareEntryIDs<Identity: IABLogon_Impl, const OFFSET: isize>(
3387            this: *mut core::ffi::c_void,
3388            cbentryid1: u32,
3389            lpentryid1: *mut ENTRYID,
3390            cbentryid2: u32,
3391            lpentryid2: *mut ENTRYID,
3392            ulflags: u32,
3393            lpulresult: *mut u32,
3394        ) -> windows_core::HRESULT {
3395            unsafe {
3396                let this: &Identity =
3397                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3398                IABLogon_Impl::CompareEntryIDs(
3399                    this,
3400                    core::mem::transmute_copy(&cbentryid1),
3401                    core::mem::transmute_copy(&lpentryid1),
3402                    core::mem::transmute_copy(&cbentryid2),
3403                    core::mem::transmute_copy(&lpentryid2),
3404                    core::mem::transmute_copy(&ulflags),
3405                    core::mem::transmute_copy(&lpulresult),
3406                )
3407                .into()
3408            }
3409        }
3410        unsafe extern "system" fn Advise<Identity: IABLogon_Impl, const OFFSET: isize>(
3411            this: *mut core::ffi::c_void,
3412            cbentryid: u32,
3413            lpentryid: *mut ENTRYID,
3414            uleventmask: u32,
3415            lpadvisesink: *mut core::ffi::c_void,
3416            lpulconnection: *mut usize,
3417        ) -> windows_core::HRESULT {
3418            unsafe {
3419                let this: &Identity =
3420                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3421                IABLogon_Impl::Advise(
3422                    this,
3423                    core::mem::transmute_copy(&cbentryid),
3424                    core::mem::transmute_copy(&lpentryid),
3425                    core::mem::transmute_copy(&uleventmask),
3426                    core::mem::transmute_copy(&lpadvisesink),
3427                    core::mem::transmute_copy(&lpulconnection),
3428                )
3429                .into()
3430            }
3431        }
3432        unsafe extern "system" fn Unadvise<Identity: IABLogon_Impl, const OFFSET: isize>(
3433            this: *mut core::ffi::c_void,
3434            ulconnection: usize,
3435        ) -> windows_core::HRESULT {
3436            unsafe {
3437                let this: &Identity =
3438                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3439                IABLogon_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
3440            }
3441        }
3442        unsafe extern "system" fn OpenStatusEntry<Identity: IABLogon_Impl, const OFFSET: isize>(
3443            this: *mut core::ffi::c_void,
3444            lpinterface: *mut windows_core::GUID,
3445            ulflags: u32,
3446            lpulobjtype: *mut u32,
3447            lppentry: *mut *mut core::ffi::c_void,
3448        ) -> windows_core::HRESULT {
3449            unsafe {
3450                let this: &Identity =
3451                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3452                IABLogon_Impl::OpenStatusEntry(
3453                    this,
3454                    core::mem::transmute_copy(&lpinterface),
3455                    core::mem::transmute_copy(&ulflags),
3456                    core::mem::transmute_copy(&lpulobjtype),
3457                    core::mem::transmute_copy(&lppentry),
3458                )
3459                .into()
3460            }
3461        }
3462        unsafe extern "system" fn OpenTemplateID<Identity: IABLogon_Impl, const OFFSET: isize>(
3463            this: *mut core::ffi::c_void,
3464            cbtemplateid: u32,
3465            lptemplateid: *mut ENTRYID,
3466            ultemplateflags: u32,
3467            lpmapipropdata: *mut core::ffi::c_void,
3468            lpinterface: *mut windows_core::GUID,
3469            lppmapipropnew: *mut *mut core::ffi::c_void,
3470            lpmapipropsibling: *mut core::ffi::c_void,
3471        ) -> windows_core::HRESULT {
3472            unsafe {
3473                let this: &Identity =
3474                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3475                IABLogon_Impl::OpenTemplateID(
3476                    this,
3477                    core::mem::transmute_copy(&cbtemplateid),
3478                    core::mem::transmute_copy(&lptemplateid),
3479                    core::mem::transmute_copy(&ultemplateflags),
3480                    core::mem::transmute_copy(&lpmapipropdata),
3481                    core::mem::transmute_copy(&lpinterface),
3482                    core::mem::transmute_copy(&lppmapipropnew),
3483                    core::mem::transmute_copy(&lpmapipropsibling),
3484                )
3485                .into()
3486            }
3487        }
3488        unsafe extern "system" fn GetOneOffTable<Identity: IABLogon_Impl, const OFFSET: isize>(
3489            this: *mut core::ffi::c_void,
3490            ulflags: u32,
3491            lpptable: *mut *mut core::ffi::c_void,
3492        ) -> windows_core::HRESULT {
3493            unsafe {
3494                let this: &Identity =
3495                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3496                match IABLogon_Impl::GetOneOffTable(this, core::mem::transmute_copy(&ulflags)) {
3497                    Ok(ok__) => {
3498                        lpptable.write(core::mem::transmute(ok__));
3499                        windows_core::HRESULT(0)
3500                    }
3501                    Err(err) => err.into(),
3502                }
3503            }
3504        }
3505        unsafe extern "system" fn PrepareRecips<Identity: IABLogon_Impl, const OFFSET: isize>(
3506            this: *mut core::ffi::c_void,
3507            ulflags: u32,
3508            lpproptagarray: *mut SPropTagArray,
3509            lpreciplist: *mut ADRLIST,
3510        ) -> windows_core::HRESULT {
3511            unsafe {
3512                let this: &Identity =
3513                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3514                IABLogon_Impl::PrepareRecips(
3515                    this,
3516                    core::mem::transmute_copy(&ulflags),
3517                    core::mem::transmute_copy(&lpproptagarray),
3518                    core::mem::transmute_copy(&lpreciplist),
3519                )
3520                .into()
3521            }
3522        }
3523        Self {
3524            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3525            GetLastError: GetLastError::<Identity, OFFSET>,
3526            Logoff: Logoff::<Identity, OFFSET>,
3527            OpenEntry: OpenEntry::<Identity, OFFSET>,
3528            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
3529            Advise: Advise::<Identity, OFFSET>,
3530            Unadvise: Unadvise::<Identity, OFFSET>,
3531            OpenStatusEntry: OpenStatusEntry::<Identity, OFFSET>,
3532            OpenTemplateID: OpenTemplateID::<Identity, OFFSET>,
3533            GetOneOffTable: GetOneOffTable::<Identity, OFFSET>,
3534            PrepareRecips: PrepareRecips::<Identity, OFFSET>,
3535        }
3536    }
3537    pub fn matches(iid: &windows_core::GUID) -> bool {
3538        iid == &<IABLogon as windows_core::Interface>::IID
3539    }
3540}
3541impl windows_core::RuntimeName for IABLogon {}
3542pub const IABLogon_Advise: METHODS = METHODS(88i32);
3543pub const IABLogon_CompareEntryIDs: METHODS = METHODS(87i32);
3544pub const IABLogon_GetLastError: METHODS = METHODS(84i32);
3545pub const IABLogon_GetOneOffTable: METHODS = METHODS(92i32);
3546pub const IABLogon_Logoff: METHODS = METHODS(85i32);
3547pub const IABLogon_OpenEntry: METHODS = METHODS(86i32);
3548pub const IABLogon_OpenStatusEntry: METHODS = METHODS(90i32);
3549pub const IABLogon_OpenTemplateID: METHODS = METHODS(91i32);
3550pub const IABLogon_PrepareRecips: METHODS = METHODS(93i32);
3551pub const IABLogon_Unadvise: METHODS = METHODS(89i32);
3552windows_core::imp::define_interface!(
3553    IABProvider,
3554    IABProvider_Vtbl,
3555    0x00020311_0000_0000_c000_000000000046
3556);
3557windows_core::imp::interface_hierarchy!(IABProvider, windows_core::IUnknown);
3558impl IABProvider {
3559    pub unsafe fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
3560        unsafe {
3561            (windows_core::Interface::vtable(self).Shutdown)(
3562                windows_core::Interface::as_raw(self),
3563                lpulflags as _,
3564            )
3565            .ok()
3566        }
3567    }
3568    pub unsafe fn Logon<P0>(
3569        &self,
3570        lpmapisup: P0,
3571        uluiparam: usize,
3572        lpszprofilename: *mut i8,
3573        ulflags: u32,
3574        lpulpcbsecurity: *mut u32,
3575        lppbsecurity: *mut *mut u8,
3576        lppmapierror: *mut *mut MAPIERROR,
3577        lppablogon: *mut Option<IABLogon>,
3578    ) -> windows_core::Result<()>
3579    where
3580        P0: windows_core::Param<IMAPISupport>,
3581    {
3582        unsafe {
3583            (windows_core::Interface::vtable(self).Logon)(
3584                windows_core::Interface::as_raw(self),
3585                lpmapisup.param().abi(),
3586                uluiparam,
3587                lpszprofilename as _,
3588                ulflags,
3589                lpulpcbsecurity as _,
3590                lppbsecurity as _,
3591                lppmapierror as _,
3592                core::mem::transmute(lppablogon),
3593            )
3594            .ok()
3595        }
3596    }
3597}
3598#[repr(C)]
3599#[doc(hidden)]
3600pub struct IABProvider_Vtbl {
3601    pub base__: windows_core::IUnknown_Vtbl,
3602    pub Shutdown:
3603        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
3604    pub Logon: unsafe extern "system" fn(
3605        *mut core::ffi::c_void,
3606        *mut core::ffi::c_void,
3607        usize,
3608        *mut i8,
3609        u32,
3610        *mut u32,
3611        *mut *mut u8,
3612        *mut *mut MAPIERROR,
3613        *mut *mut core::ffi::c_void,
3614    ) -> windows_core::HRESULT,
3615}
3616pub trait IABProvider_Impl: windows_core::IUnknownImpl {
3617    fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
3618    fn Logon(
3619        &self,
3620        lpmapisup: windows_core::Ref<IMAPISupport>,
3621        uluiparam: usize,
3622        lpszprofilename: *mut i8,
3623        ulflags: u32,
3624        lpulpcbsecurity: *mut u32,
3625        lppbsecurity: *mut *mut u8,
3626        lppmapierror: *mut *mut MAPIERROR,
3627        lppablogon: windows_core::OutRef<IABLogon>,
3628    ) -> windows_core::Result<()>;
3629}
3630impl IABProvider_Vtbl {
3631    pub const fn new<Identity: IABProvider_Impl, const OFFSET: isize>() -> Self {
3632        unsafe extern "system" fn Shutdown<Identity: IABProvider_Impl, const OFFSET: isize>(
3633            this: *mut core::ffi::c_void,
3634            lpulflags: *mut u32,
3635        ) -> windows_core::HRESULT {
3636            unsafe {
3637                let this: &Identity =
3638                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3639                IABProvider_Impl::Shutdown(this, core::mem::transmute_copy(&lpulflags)).into()
3640            }
3641        }
3642        unsafe extern "system" fn Logon<Identity: IABProvider_Impl, const OFFSET: isize>(
3643            this: *mut core::ffi::c_void,
3644            lpmapisup: *mut core::ffi::c_void,
3645            uluiparam: usize,
3646            lpszprofilename: *mut i8,
3647            ulflags: u32,
3648            lpulpcbsecurity: *mut u32,
3649            lppbsecurity: *mut *mut u8,
3650            lppmapierror: *mut *mut MAPIERROR,
3651            lppablogon: *mut *mut core::ffi::c_void,
3652        ) -> windows_core::HRESULT {
3653            unsafe {
3654                let this: &Identity =
3655                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
3656                IABProvider_Impl::Logon(
3657                    this,
3658                    core::mem::transmute_copy(&lpmapisup),
3659                    core::mem::transmute_copy(&uluiparam),
3660                    core::mem::transmute_copy(&lpszprofilename),
3661                    core::mem::transmute_copy(&ulflags),
3662                    core::mem::transmute_copy(&lpulpcbsecurity),
3663                    core::mem::transmute_copy(&lppbsecurity),
3664                    core::mem::transmute_copy(&lppmapierror),
3665                    core::mem::transmute_copy(&lppablogon),
3666                )
3667                .into()
3668            }
3669        }
3670        Self {
3671            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
3672            Shutdown: Shutdown::<Identity, OFFSET>,
3673            Logon: Logon::<Identity, OFFSET>,
3674        }
3675    }
3676    pub fn matches(iid: &windows_core::GUID) -> bool {
3677        iid == &<IABProvider as windows_core::Interface>::IID
3678    }
3679}
3680impl windows_core::RuntimeName for IABProvider {}
3681pub const IABProvider_Logon: METHODS = METHODS(83i32);
3682pub const IABProvider_Shutdown: METHODS = METHODS(82i32);
3683pub const IAP_ADRTYPE: u32 = 4u32;
3684pub const IAP_ALL: u32 = 4294967295u32;
3685pub const IAP_CERTSTATE: u32 = 256u32;
3686pub const IAP_CHARSET: u32 = 1u32;
3687pub const IAP_COOKIE: u32 = 4096u32;
3688pub const IAP_EMAIL: u32 = 32u32;
3689pub const IAP_ENCODING: u32 = 2048u32;
3690pub const IAP_ENCRYPTION_PRINT: u32 = 1024u32;
3691pub const IAP_FRIENDLY: u32 = 8u32;
3692pub const IAP_HANDLE: u32 = 2u32;
3693pub const IAP_SIGNING_PRINT: u32 = 512u32;
3694pub const IAT_ALL: u32 = 4294967295u32;
3695pub const IAT_APPARTO: u32 = 512u32;
3696pub const IAT_BCC: u32 = 16u32;
3697pub const IAT_CC: u32 = 8u32;
3698pub const IAT_FROM: u32 = 1u32;
3699pub const IAT_REPLYTO: u32 = 32u32;
3700pub const IAT_RETRCPTTO: u32 = 128u32;
3701pub const IAT_RETURNPATH: u32 = 64u32;
3702pub const IAT_RR: u32 = 256u32;
3703pub const IAT_SENDER: u32 = 2u32;
3704pub const IAT_TO: u32 = 4u32;
3705pub const IAT_UNKNOWN: u32 = 0u32;
3706windows_core::imp::define_interface!(
3707    IAddrBook,
3708    IAddrBook_Vtbl,
3709    0x00020309_0000_0000_c000_000000000046
3710);
3711impl core::ops::Deref for IAddrBook {
3712    type Target = IMAPIProp;
3713    fn deref(&self) -> &Self::Target {
3714        unsafe { core::mem::transmute(self) }
3715    }
3716}
3717windows_core::imp::interface_hierarchy!(IAddrBook, windows_core::IUnknown, IMAPIProp);
3718impl IAddrBook {
3719    pub unsafe fn OpenEntry(
3720        &self,
3721        cbentryid: u32,
3722        lpentryid: *mut ENTRYID,
3723        lpinterface: *mut windows_core::GUID,
3724        ulflags: u32,
3725        lpulobjtype: *mut u32,
3726        lppunk: *mut Option<windows_core::IUnknown>,
3727    ) -> windows_core::Result<()> {
3728        unsafe {
3729            (windows_core::Interface::vtable(self).OpenEntry)(
3730                windows_core::Interface::as_raw(self),
3731                cbentryid,
3732                lpentryid as _,
3733                lpinterface as _,
3734                ulflags,
3735                lpulobjtype as _,
3736                core::mem::transmute(lppunk),
3737            )
3738            .ok()
3739        }
3740    }
3741    pub unsafe fn CompareEntryIDs(
3742        &self,
3743        cbentryid1: u32,
3744        lpentryid1: *mut ENTRYID,
3745        cbentryid2: u32,
3746        lpentryid2: *mut ENTRYID,
3747        ulflags: u32,
3748        lpulresult: *mut u32,
3749    ) -> windows_core::Result<()> {
3750        unsafe {
3751            (windows_core::Interface::vtable(self).CompareEntryIDs)(
3752                windows_core::Interface::as_raw(self),
3753                cbentryid1,
3754                lpentryid1 as _,
3755                cbentryid2,
3756                lpentryid2 as _,
3757                ulflags,
3758                lpulresult as _,
3759            )
3760            .ok()
3761        }
3762    }
3763    pub unsafe fn Advise<P3>(
3764        &self,
3765        cbentryid: u32,
3766        lpentryid: *mut ENTRYID,
3767        uleventmask: u32,
3768        lpadvisesink: P3,
3769        lpulconnection: *mut usize,
3770    ) -> windows_core::Result<()>
3771    where
3772        P3: windows_core::Param<IMAPIAdviseSink>,
3773    {
3774        unsafe {
3775            (windows_core::Interface::vtable(self).Advise)(
3776                windows_core::Interface::as_raw(self),
3777                cbentryid,
3778                lpentryid as _,
3779                uleventmask,
3780                lpadvisesink.param().abi(),
3781                lpulconnection as _,
3782            )
3783            .ok()
3784        }
3785    }
3786    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
3787        unsafe {
3788            (windows_core::Interface::vtable(self).Unadvise)(
3789                windows_core::Interface::as_raw(self),
3790                ulconnection,
3791            )
3792            .ok()
3793        }
3794    }
3795    pub unsafe fn CreateOneOff(
3796        &self,
3797        lpszname: *mut i8,
3798        lpszadrtype: *mut i8,
3799        lpszaddress: *mut i8,
3800        ulflags: u32,
3801        lpcbentryid: *mut u32,
3802        lppentryid: *mut *mut ENTRYID,
3803    ) -> windows_core::Result<()> {
3804        unsafe {
3805            (windows_core::Interface::vtable(self).CreateOneOff)(
3806                windows_core::Interface::as_raw(self),
3807                lpszname as _,
3808                lpszadrtype as _,
3809                lpszaddress as _,
3810                ulflags,
3811                lpcbentryid as _,
3812                lppentryid as _,
3813            )
3814            .ok()
3815        }
3816    }
3817    pub unsafe fn NewEntry(
3818        &self,
3819        uluiparam: usize,
3820        ulflags: u32,
3821        cbeidcontainer: u32,
3822        lpeidcontainer: *mut ENTRYID,
3823        cbeidnewentrytpl: u32,
3824        lpeidnewentrytpl: *mut ENTRYID,
3825        lpcbeidnewentry: *mut u32,
3826        lppeidnewentry: *mut *mut ENTRYID,
3827    ) -> windows_core::Result<()> {
3828        unsafe {
3829            (windows_core::Interface::vtable(self).NewEntry)(
3830                windows_core::Interface::as_raw(self),
3831                uluiparam,
3832                ulflags,
3833                cbeidcontainer,
3834                lpeidcontainer as _,
3835                cbeidnewentrytpl,
3836                lpeidnewentrytpl as _,
3837                lpcbeidnewentry as _,
3838                lppeidnewentry as _,
3839            )
3840            .ok()
3841        }
3842    }
3843    pub unsafe fn ResolveName(
3844        &self,
3845        uluiparam: usize,
3846        ulflags: u32,
3847        lpsznewentrytitle: *mut i8,
3848        lpadrlist: *mut ADRLIST,
3849    ) -> windows_core::Result<()> {
3850        unsafe {
3851            (windows_core::Interface::vtable(self).ResolveName)(
3852                windows_core::Interface::as_raw(self),
3853                uluiparam,
3854                ulflags,
3855                lpsznewentrytitle as _,
3856                lpadrlist as _,
3857            )
3858            .ok()
3859        }
3860    }
3861    pub unsafe fn Address(
3862        &self,
3863        lpuluiparam: *mut usize,
3864        lpadrparms: *mut ADRPARM,
3865        lppadrlist: *mut *mut ADRLIST,
3866    ) -> windows_core::Result<()> {
3867        unsafe {
3868            (windows_core::Interface::vtable(self).Address)(
3869                windows_core::Interface::as_raw(self),
3870                lpuluiparam as _,
3871                lpadrparms as _,
3872                lppadrlist as _,
3873            )
3874            .ok()
3875        }
3876    }
3877    pub unsafe fn Details(
3878        &self,
3879        lpuluiparam: *mut usize,
3880        lpfndismiss: LPFNDISMISS,
3881        lpvdismisscontext: *mut core::ffi::c_void,
3882        cbentryid: u32,
3883        lpentryid: *mut ENTRYID,
3884        lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
3885        lpvbuttoncontext: *mut core::ffi::c_void,
3886        lpszbuttontext: *mut i8,
3887        ulflags: u32,
3888    ) -> windows_core::Result<()> {
3889        unsafe {
3890            (windows_core::Interface::vtable(self).Details)(
3891                windows_core::Interface::as_raw(self),
3892                lpuluiparam as _,
3893                lpfndismiss,
3894                lpvdismisscontext as _,
3895                cbentryid,
3896                lpentryid as _,
3897                lpfbuttoncallback,
3898                lpvbuttoncontext as _,
3899                lpszbuttontext as _,
3900                ulflags,
3901            )
3902            .ok()
3903        }
3904    }
3905    pub unsafe fn RecipOptions(
3906        &self,
3907        uluiparam: usize,
3908        ulflags: u32,
3909        lprecip: *mut ADRENTRY,
3910    ) -> windows_core::Result<()> {
3911        unsafe {
3912            (windows_core::Interface::vtable(self).RecipOptions)(
3913                windows_core::Interface::as_raw(self),
3914                uluiparam,
3915                ulflags,
3916                lprecip as _,
3917            )
3918            .ok()
3919        }
3920    }
3921    pub unsafe fn QueryDefaultRecipOpt(
3922        &self,
3923        lpszadrtype: *mut i8,
3924        ulflags: u32,
3925        lpcvalues: *mut u32,
3926        lppoptions: *mut *mut SPropValue,
3927    ) -> windows_core::Result<()> {
3928        unsafe {
3929            (windows_core::Interface::vtable(self).QueryDefaultRecipOpt)(
3930                windows_core::Interface::as_raw(self),
3931                lpszadrtype as _,
3932                ulflags,
3933                lpcvalues as _,
3934                lppoptions as _,
3935            )
3936            .ok()
3937        }
3938    }
3939    pub unsafe fn GetPAB(
3940        &self,
3941        lpcbentryid: *mut u32,
3942        lppentryid: *mut *mut ENTRYID,
3943    ) -> windows_core::Result<()> {
3944        unsafe {
3945            (windows_core::Interface::vtable(self).GetPAB)(
3946                windows_core::Interface::as_raw(self),
3947                lpcbentryid as _,
3948                lppentryid as _,
3949            )
3950            .ok()
3951        }
3952    }
3953    pub unsafe fn SetPAB(
3954        &self,
3955        cbentryid: u32,
3956        lpentryid: *mut ENTRYID,
3957    ) -> windows_core::Result<()> {
3958        unsafe {
3959            (windows_core::Interface::vtable(self).SetPAB)(
3960                windows_core::Interface::as_raw(self),
3961                cbentryid,
3962                lpentryid as _,
3963            )
3964            .ok()
3965        }
3966    }
3967    pub unsafe fn GetDefaultDir(
3968        &self,
3969        lpcbentryid: *mut u32,
3970        lppentryid: *mut *mut ENTRYID,
3971    ) -> windows_core::Result<()> {
3972        unsafe {
3973            (windows_core::Interface::vtable(self).GetDefaultDir)(
3974                windows_core::Interface::as_raw(self),
3975                lpcbentryid as _,
3976                lppentryid as _,
3977            )
3978            .ok()
3979        }
3980    }
3981    pub unsafe fn SetDefaultDir(
3982        &self,
3983        cbentryid: u32,
3984        lpentryid: *mut ENTRYID,
3985    ) -> windows_core::Result<()> {
3986        unsafe {
3987            (windows_core::Interface::vtable(self).SetDefaultDir)(
3988                windows_core::Interface::as_raw(self),
3989                cbentryid,
3990                lpentryid as _,
3991            )
3992            .ok()
3993        }
3994    }
3995    pub unsafe fn GetSearchPath(
3996        &self,
3997        ulflags: u32,
3998        lppsearchpath: *mut *mut SRowSet,
3999    ) -> windows_core::Result<()> {
4000        unsafe {
4001            (windows_core::Interface::vtable(self).GetSearchPath)(
4002                windows_core::Interface::as_raw(self),
4003                ulflags,
4004                lppsearchpath as _,
4005            )
4006            .ok()
4007        }
4008    }
4009    pub unsafe fn SetSearchPath(
4010        &self,
4011        ulflags: u32,
4012        lpsearchpath: *mut SRowSet,
4013    ) -> windows_core::Result<()> {
4014        unsafe {
4015            (windows_core::Interface::vtable(self).SetSearchPath)(
4016                windows_core::Interface::as_raw(self),
4017                ulflags,
4018                lpsearchpath as _,
4019            )
4020            .ok()
4021        }
4022    }
4023    pub unsafe fn PrepareRecips(
4024        &self,
4025        ulflags: u32,
4026        lpproptagarray: *mut SPropTagArray,
4027        lpreciplist: *mut ADRLIST,
4028    ) -> windows_core::Result<()> {
4029        unsafe {
4030            (windows_core::Interface::vtable(self).PrepareRecips)(
4031                windows_core::Interface::as_raw(self),
4032                ulflags,
4033                lpproptagarray as _,
4034                lpreciplist as _,
4035            )
4036            .ok()
4037        }
4038    }
4039}
4040#[repr(C)]
4041#[doc(hidden)]
4042pub struct IAddrBook_Vtbl {
4043    pub base__: IMAPIProp_Vtbl,
4044    pub OpenEntry: unsafe extern "system" fn(
4045        *mut core::ffi::c_void,
4046        u32,
4047        *mut ENTRYID,
4048        *mut windows_core::GUID,
4049        u32,
4050        *mut u32,
4051        *mut *mut core::ffi::c_void,
4052    ) -> windows_core::HRESULT,
4053    pub CompareEntryIDs: unsafe extern "system" fn(
4054        *mut core::ffi::c_void,
4055        u32,
4056        *mut ENTRYID,
4057        u32,
4058        *mut ENTRYID,
4059        u32,
4060        *mut u32,
4061    ) -> windows_core::HRESULT,
4062    pub Advise: unsafe extern "system" fn(
4063        *mut core::ffi::c_void,
4064        u32,
4065        *mut ENTRYID,
4066        u32,
4067        *mut core::ffi::c_void,
4068        *mut usize,
4069    ) -> windows_core::HRESULT,
4070    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
4071    pub CreateOneOff: unsafe extern "system" fn(
4072        *mut core::ffi::c_void,
4073        *mut i8,
4074        *mut i8,
4075        *mut i8,
4076        u32,
4077        *mut u32,
4078        *mut *mut ENTRYID,
4079    ) -> windows_core::HRESULT,
4080    pub NewEntry: unsafe extern "system" fn(
4081        *mut core::ffi::c_void,
4082        usize,
4083        u32,
4084        u32,
4085        *mut ENTRYID,
4086        u32,
4087        *mut ENTRYID,
4088        *mut u32,
4089        *mut *mut ENTRYID,
4090    ) -> windows_core::HRESULT,
4091    pub ResolveName: unsafe extern "system" fn(
4092        *mut core::ffi::c_void,
4093        usize,
4094        u32,
4095        *mut i8,
4096        *mut ADRLIST,
4097    ) -> windows_core::HRESULT,
4098    pub Address: unsafe extern "system" fn(
4099        *mut core::ffi::c_void,
4100        *mut usize,
4101        *mut ADRPARM,
4102        *mut *mut ADRLIST,
4103    ) -> windows_core::HRESULT,
4104    pub Details: unsafe extern "system" fn(
4105        *mut core::ffi::c_void,
4106        *mut usize,
4107        LPFNDISMISS,
4108        *mut core::ffi::c_void,
4109        u32,
4110        *mut ENTRYID,
4111        windows::Win32::System::AddressBook::LPFNBUTTON,
4112        *mut core::ffi::c_void,
4113        *mut i8,
4114        u32,
4115    ) -> windows_core::HRESULT,
4116    pub RecipOptions: unsafe extern "system" fn(
4117        *mut core::ffi::c_void,
4118        usize,
4119        u32,
4120        *mut ADRENTRY,
4121    ) -> windows_core::HRESULT,
4122    pub QueryDefaultRecipOpt: unsafe extern "system" fn(
4123        *mut core::ffi::c_void,
4124        *mut i8,
4125        u32,
4126        *mut u32,
4127        *mut *mut SPropValue,
4128    ) -> windows_core::HRESULT,
4129    pub GetPAB: unsafe extern "system" fn(
4130        *mut core::ffi::c_void,
4131        *mut u32,
4132        *mut *mut ENTRYID,
4133    ) -> windows_core::HRESULT,
4134    pub SetPAB: unsafe extern "system" fn(
4135        *mut core::ffi::c_void,
4136        u32,
4137        *mut ENTRYID,
4138    ) -> windows_core::HRESULT,
4139    pub GetDefaultDir: unsafe extern "system" fn(
4140        *mut core::ffi::c_void,
4141        *mut u32,
4142        *mut *mut ENTRYID,
4143    ) -> windows_core::HRESULT,
4144    pub SetDefaultDir: unsafe extern "system" fn(
4145        *mut core::ffi::c_void,
4146        u32,
4147        *mut ENTRYID,
4148    ) -> windows_core::HRESULT,
4149    pub GetSearchPath: unsafe extern "system" fn(
4150        *mut core::ffi::c_void,
4151        u32,
4152        *mut *mut SRowSet,
4153    ) -> windows_core::HRESULT,
4154    pub SetSearchPath: unsafe extern "system" fn(
4155        *mut core::ffi::c_void,
4156        u32,
4157        *mut SRowSet,
4158    ) -> windows_core::HRESULT,
4159    pub PrepareRecips: unsafe extern "system" fn(
4160        *mut core::ffi::c_void,
4161        u32,
4162        *mut SPropTagArray,
4163        *mut ADRLIST,
4164    ) -> windows_core::HRESULT,
4165}
4166pub trait IAddrBook_Impl: IMAPIProp_Impl {
4167    fn OpenEntry(
4168        &self,
4169        cbentryid: u32,
4170        lpentryid: *mut ENTRYID,
4171        lpinterface: *mut windows_core::GUID,
4172        ulflags: u32,
4173        lpulobjtype: *mut u32,
4174        lppunk: windows_core::OutRef<windows_core::IUnknown>,
4175    ) -> windows_core::Result<()>;
4176    fn CompareEntryIDs(
4177        &self,
4178        cbentryid1: u32,
4179        lpentryid1: *mut ENTRYID,
4180        cbentryid2: u32,
4181        lpentryid2: *mut ENTRYID,
4182        ulflags: u32,
4183        lpulresult: *mut u32,
4184    ) -> windows_core::Result<()>;
4185    fn Advise(
4186        &self,
4187        cbentryid: u32,
4188        lpentryid: *mut ENTRYID,
4189        uleventmask: u32,
4190        lpadvisesink: windows_core::Ref<IMAPIAdviseSink>,
4191        lpulconnection: *mut usize,
4192    ) -> windows_core::Result<()>;
4193    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
4194    fn CreateOneOff(
4195        &self,
4196        lpszname: *mut i8,
4197        lpszadrtype: *mut i8,
4198        lpszaddress: *mut i8,
4199        ulflags: u32,
4200        lpcbentryid: *mut u32,
4201        lppentryid: *mut *mut ENTRYID,
4202    ) -> windows_core::Result<()>;
4203    fn NewEntry(
4204        &self,
4205        uluiparam: usize,
4206        ulflags: u32,
4207        cbeidcontainer: u32,
4208        lpeidcontainer: *mut ENTRYID,
4209        cbeidnewentrytpl: u32,
4210        lpeidnewentrytpl: *mut ENTRYID,
4211        lpcbeidnewentry: *mut u32,
4212        lppeidnewentry: *mut *mut ENTRYID,
4213    ) -> windows_core::Result<()>;
4214    fn ResolveName(
4215        &self,
4216        uluiparam: usize,
4217        ulflags: u32,
4218        lpsznewentrytitle: *mut i8,
4219        lpadrlist: *mut ADRLIST,
4220    ) -> windows_core::Result<()>;
4221    fn Address(
4222        &self,
4223        lpuluiparam: *mut usize,
4224        lpadrparms: *mut ADRPARM,
4225        lppadrlist: *mut *mut ADRLIST,
4226    ) -> windows_core::Result<()>;
4227    fn Details(
4228        &self,
4229        lpuluiparam: *mut usize,
4230        lpfndismiss: LPFNDISMISS,
4231        lpvdismisscontext: *mut core::ffi::c_void,
4232        cbentryid: u32,
4233        lpentryid: *mut ENTRYID,
4234        lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
4235        lpvbuttoncontext: *mut core::ffi::c_void,
4236        lpszbuttontext: *mut i8,
4237        ulflags: u32,
4238    ) -> windows_core::Result<()>;
4239    fn RecipOptions(
4240        &self,
4241        uluiparam: usize,
4242        ulflags: u32,
4243        lprecip: *mut ADRENTRY,
4244    ) -> windows_core::Result<()>;
4245    fn QueryDefaultRecipOpt(
4246        &self,
4247        lpszadrtype: *mut i8,
4248        ulflags: u32,
4249        lpcvalues: *mut u32,
4250        lppoptions: *mut *mut SPropValue,
4251    ) -> windows_core::Result<()>;
4252    fn GetPAB(
4253        &self,
4254        lpcbentryid: *mut u32,
4255        lppentryid: *mut *mut ENTRYID,
4256    ) -> windows_core::Result<()>;
4257    fn SetPAB(&self, cbentryid: u32, lpentryid: *mut ENTRYID) -> windows_core::Result<()>;
4258    fn GetDefaultDir(
4259        &self,
4260        lpcbentryid: *mut u32,
4261        lppentryid: *mut *mut ENTRYID,
4262    ) -> windows_core::Result<()>;
4263    fn SetDefaultDir(&self, cbentryid: u32, lpentryid: *mut ENTRYID) -> windows_core::Result<()>;
4264    fn GetSearchPath(
4265        &self,
4266        ulflags: u32,
4267        lppsearchpath: *mut *mut SRowSet,
4268    ) -> windows_core::Result<()>;
4269    fn SetSearchPath(&self, ulflags: u32, lpsearchpath: *mut SRowSet) -> windows_core::Result<()>;
4270    fn PrepareRecips(
4271        &self,
4272        ulflags: u32,
4273        lpproptagarray: *mut SPropTagArray,
4274        lpreciplist: *mut ADRLIST,
4275    ) -> windows_core::Result<()>;
4276}
4277impl IAddrBook_Vtbl {
4278    pub const fn new<Identity: IAddrBook_Impl, const OFFSET: isize>() -> Self {
4279        unsafe extern "system" fn OpenEntry<Identity: IAddrBook_Impl, const OFFSET: isize>(
4280            this: *mut core::ffi::c_void,
4281            cbentryid: u32,
4282            lpentryid: *mut ENTRYID,
4283            lpinterface: *mut windows_core::GUID,
4284            ulflags: u32,
4285            lpulobjtype: *mut u32,
4286            lppunk: *mut *mut core::ffi::c_void,
4287        ) -> windows_core::HRESULT {
4288            unsafe {
4289                let this: &Identity =
4290                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4291                IAddrBook_Impl::OpenEntry(
4292                    this,
4293                    core::mem::transmute_copy(&cbentryid),
4294                    core::mem::transmute_copy(&lpentryid),
4295                    core::mem::transmute_copy(&lpinterface),
4296                    core::mem::transmute_copy(&ulflags),
4297                    core::mem::transmute_copy(&lpulobjtype),
4298                    core::mem::transmute_copy(&lppunk),
4299                )
4300                .into()
4301            }
4302        }
4303        unsafe extern "system" fn CompareEntryIDs<Identity: IAddrBook_Impl, const OFFSET: isize>(
4304            this: *mut core::ffi::c_void,
4305            cbentryid1: u32,
4306            lpentryid1: *mut ENTRYID,
4307            cbentryid2: u32,
4308            lpentryid2: *mut ENTRYID,
4309            ulflags: u32,
4310            lpulresult: *mut u32,
4311        ) -> windows_core::HRESULT {
4312            unsafe {
4313                let this: &Identity =
4314                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4315                IAddrBook_Impl::CompareEntryIDs(
4316                    this,
4317                    core::mem::transmute_copy(&cbentryid1),
4318                    core::mem::transmute_copy(&lpentryid1),
4319                    core::mem::transmute_copy(&cbentryid2),
4320                    core::mem::transmute_copy(&lpentryid2),
4321                    core::mem::transmute_copy(&ulflags),
4322                    core::mem::transmute_copy(&lpulresult),
4323                )
4324                .into()
4325            }
4326        }
4327        unsafe extern "system" fn Advise<Identity: IAddrBook_Impl, const OFFSET: isize>(
4328            this: *mut core::ffi::c_void,
4329            cbentryid: u32,
4330            lpentryid: *mut ENTRYID,
4331            uleventmask: u32,
4332            lpadvisesink: *mut core::ffi::c_void,
4333            lpulconnection: *mut usize,
4334        ) -> windows_core::HRESULT {
4335            unsafe {
4336                let this: &Identity =
4337                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4338                IAddrBook_Impl::Advise(
4339                    this,
4340                    core::mem::transmute_copy(&cbentryid),
4341                    core::mem::transmute_copy(&lpentryid),
4342                    core::mem::transmute_copy(&uleventmask),
4343                    core::mem::transmute_copy(&lpadvisesink),
4344                    core::mem::transmute_copy(&lpulconnection),
4345                )
4346                .into()
4347            }
4348        }
4349        unsafe extern "system" fn Unadvise<Identity: IAddrBook_Impl, const OFFSET: isize>(
4350            this: *mut core::ffi::c_void,
4351            ulconnection: usize,
4352        ) -> windows_core::HRESULT {
4353            unsafe {
4354                let this: &Identity =
4355                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4356                IAddrBook_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
4357            }
4358        }
4359        unsafe extern "system" fn CreateOneOff<Identity: IAddrBook_Impl, const OFFSET: isize>(
4360            this: *mut core::ffi::c_void,
4361            lpszname: *mut i8,
4362            lpszadrtype: *mut i8,
4363            lpszaddress: *mut i8,
4364            ulflags: u32,
4365            lpcbentryid: *mut u32,
4366            lppentryid: *mut *mut ENTRYID,
4367        ) -> windows_core::HRESULT {
4368            unsafe {
4369                let this: &Identity =
4370                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4371                IAddrBook_Impl::CreateOneOff(
4372                    this,
4373                    core::mem::transmute_copy(&lpszname),
4374                    core::mem::transmute_copy(&lpszadrtype),
4375                    core::mem::transmute_copy(&lpszaddress),
4376                    core::mem::transmute_copy(&ulflags),
4377                    core::mem::transmute_copy(&lpcbentryid),
4378                    core::mem::transmute_copy(&lppentryid),
4379                )
4380                .into()
4381            }
4382        }
4383        unsafe extern "system" fn NewEntry<Identity: IAddrBook_Impl, const OFFSET: isize>(
4384            this: *mut core::ffi::c_void,
4385            uluiparam: usize,
4386            ulflags: u32,
4387            cbeidcontainer: u32,
4388            lpeidcontainer: *mut ENTRYID,
4389            cbeidnewentrytpl: u32,
4390            lpeidnewentrytpl: *mut ENTRYID,
4391            lpcbeidnewentry: *mut u32,
4392            lppeidnewentry: *mut *mut ENTRYID,
4393        ) -> windows_core::HRESULT {
4394            unsafe {
4395                let this: &Identity =
4396                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4397                IAddrBook_Impl::NewEntry(
4398                    this,
4399                    core::mem::transmute_copy(&uluiparam),
4400                    core::mem::transmute_copy(&ulflags),
4401                    core::mem::transmute_copy(&cbeidcontainer),
4402                    core::mem::transmute_copy(&lpeidcontainer),
4403                    core::mem::transmute_copy(&cbeidnewentrytpl),
4404                    core::mem::transmute_copy(&lpeidnewentrytpl),
4405                    core::mem::transmute_copy(&lpcbeidnewentry),
4406                    core::mem::transmute_copy(&lppeidnewentry),
4407                )
4408                .into()
4409            }
4410        }
4411        unsafe extern "system" fn ResolveName<Identity: IAddrBook_Impl, const OFFSET: isize>(
4412            this: *mut core::ffi::c_void,
4413            uluiparam: usize,
4414            ulflags: u32,
4415            lpsznewentrytitle: *mut i8,
4416            lpadrlist: *mut ADRLIST,
4417        ) -> windows_core::HRESULT {
4418            unsafe {
4419                let this: &Identity =
4420                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4421                IAddrBook_Impl::ResolveName(
4422                    this,
4423                    core::mem::transmute_copy(&uluiparam),
4424                    core::mem::transmute_copy(&ulflags),
4425                    core::mem::transmute_copy(&lpsznewentrytitle),
4426                    core::mem::transmute_copy(&lpadrlist),
4427                )
4428                .into()
4429            }
4430        }
4431        unsafe extern "system" fn Address<Identity: IAddrBook_Impl, const OFFSET: isize>(
4432            this: *mut core::ffi::c_void,
4433            lpuluiparam: *mut usize,
4434            lpadrparms: *mut ADRPARM,
4435            lppadrlist: *mut *mut ADRLIST,
4436        ) -> windows_core::HRESULT {
4437            unsafe {
4438                let this: &Identity =
4439                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4440                IAddrBook_Impl::Address(
4441                    this,
4442                    core::mem::transmute_copy(&lpuluiparam),
4443                    core::mem::transmute_copy(&lpadrparms),
4444                    core::mem::transmute_copy(&lppadrlist),
4445                )
4446                .into()
4447            }
4448        }
4449        unsafe extern "system" fn Details<Identity: IAddrBook_Impl, const OFFSET: isize>(
4450            this: *mut core::ffi::c_void,
4451            lpuluiparam: *mut usize,
4452            lpfndismiss: LPFNDISMISS,
4453            lpvdismisscontext: *mut core::ffi::c_void,
4454            cbentryid: u32,
4455            lpentryid: *mut ENTRYID,
4456            lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
4457            lpvbuttoncontext: *mut core::ffi::c_void,
4458            lpszbuttontext: *mut i8,
4459            ulflags: u32,
4460        ) -> windows_core::HRESULT {
4461            unsafe {
4462                let this: &Identity =
4463                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4464                IAddrBook_Impl::Details(
4465                    this,
4466                    core::mem::transmute_copy(&lpuluiparam),
4467                    core::mem::transmute_copy(&lpfndismiss),
4468                    core::mem::transmute_copy(&lpvdismisscontext),
4469                    core::mem::transmute_copy(&cbentryid),
4470                    core::mem::transmute_copy(&lpentryid),
4471                    core::mem::transmute_copy(&lpfbuttoncallback),
4472                    core::mem::transmute_copy(&lpvbuttoncontext),
4473                    core::mem::transmute_copy(&lpszbuttontext),
4474                    core::mem::transmute_copy(&ulflags),
4475                )
4476                .into()
4477            }
4478        }
4479        unsafe extern "system" fn RecipOptions<Identity: IAddrBook_Impl, const OFFSET: isize>(
4480            this: *mut core::ffi::c_void,
4481            uluiparam: usize,
4482            ulflags: u32,
4483            lprecip: *mut ADRENTRY,
4484        ) -> windows_core::HRESULT {
4485            unsafe {
4486                let this: &Identity =
4487                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4488                IAddrBook_Impl::RecipOptions(
4489                    this,
4490                    core::mem::transmute_copy(&uluiparam),
4491                    core::mem::transmute_copy(&ulflags),
4492                    core::mem::transmute_copy(&lprecip),
4493                )
4494                .into()
4495            }
4496        }
4497        unsafe extern "system" fn QueryDefaultRecipOpt<
4498            Identity: IAddrBook_Impl,
4499            const OFFSET: isize,
4500        >(
4501            this: *mut core::ffi::c_void,
4502            lpszadrtype: *mut i8,
4503            ulflags: u32,
4504            lpcvalues: *mut u32,
4505            lppoptions: *mut *mut SPropValue,
4506        ) -> windows_core::HRESULT {
4507            unsafe {
4508                let this: &Identity =
4509                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4510                IAddrBook_Impl::QueryDefaultRecipOpt(
4511                    this,
4512                    core::mem::transmute_copy(&lpszadrtype),
4513                    core::mem::transmute_copy(&ulflags),
4514                    core::mem::transmute_copy(&lpcvalues),
4515                    core::mem::transmute_copy(&lppoptions),
4516                )
4517                .into()
4518            }
4519        }
4520        unsafe extern "system" fn GetPAB<Identity: IAddrBook_Impl, const OFFSET: isize>(
4521            this: *mut core::ffi::c_void,
4522            lpcbentryid: *mut u32,
4523            lppentryid: *mut *mut ENTRYID,
4524        ) -> windows_core::HRESULT {
4525            unsafe {
4526                let this: &Identity =
4527                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4528                IAddrBook_Impl::GetPAB(
4529                    this,
4530                    core::mem::transmute_copy(&lpcbentryid),
4531                    core::mem::transmute_copy(&lppentryid),
4532                )
4533                .into()
4534            }
4535        }
4536        unsafe extern "system" fn SetPAB<Identity: IAddrBook_Impl, const OFFSET: isize>(
4537            this: *mut core::ffi::c_void,
4538            cbentryid: u32,
4539            lpentryid: *mut ENTRYID,
4540        ) -> windows_core::HRESULT {
4541            unsafe {
4542                let this: &Identity =
4543                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4544                IAddrBook_Impl::SetPAB(
4545                    this,
4546                    core::mem::transmute_copy(&cbentryid),
4547                    core::mem::transmute_copy(&lpentryid),
4548                )
4549                .into()
4550            }
4551        }
4552        unsafe extern "system" fn GetDefaultDir<Identity: IAddrBook_Impl, const OFFSET: isize>(
4553            this: *mut core::ffi::c_void,
4554            lpcbentryid: *mut u32,
4555            lppentryid: *mut *mut ENTRYID,
4556        ) -> windows_core::HRESULT {
4557            unsafe {
4558                let this: &Identity =
4559                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4560                IAddrBook_Impl::GetDefaultDir(
4561                    this,
4562                    core::mem::transmute_copy(&lpcbentryid),
4563                    core::mem::transmute_copy(&lppentryid),
4564                )
4565                .into()
4566            }
4567        }
4568        unsafe extern "system" fn SetDefaultDir<Identity: IAddrBook_Impl, const OFFSET: isize>(
4569            this: *mut core::ffi::c_void,
4570            cbentryid: u32,
4571            lpentryid: *mut ENTRYID,
4572        ) -> windows_core::HRESULT {
4573            unsafe {
4574                let this: &Identity =
4575                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4576                IAddrBook_Impl::SetDefaultDir(
4577                    this,
4578                    core::mem::transmute_copy(&cbentryid),
4579                    core::mem::transmute_copy(&lpentryid),
4580                )
4581                .into()
4582            }
4583        }
4584        unsafe extern "system" fn GetSearchPath<Identity: IAddrBook_Impl, const OFFSET: isize>(
4585            this: *mut core::ffi::c_void,
4586            ulflags: u32,
4587            lppsearchpath: *mut *mut SRowSet,
4588        ) -> windows_core::HRESULT {
4589            unsafe {
4590                let this: &Identity =
4591                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4592                IAddrBook_Impl::GetSearchPath(
4593                    this,
4594                    core::mem::transmute_copy(&ulflags),
4595                    core::mem::transmute_copy(&lppsearchpath),
4596                )
4597                .into()
4598            }
4599        }
4600        unsafe extern "system" fn SetSearchPath<Identity: IAddrBook_Impl, const OFFSET: isize>(
4601            this: *mut core::ffi::c_void,
4602            ulflags: u32,
4603            lpsearchpath: *mut SRowSet,
4604        ) -> windows_core::HRESULT {
4605            unsafe {
4606                let this: &Identity =
4607                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4608                IAddrBook_Impl::SetSearchPath(
4609                    this,
4610                    core::mem::transmute_copy(&ulflags),
4611                    core::mem::transmute_copy(&lpsearchpath),
4612                )
4613                .into()
4614            }
4615        }
4616        unsafe extern "system" fn PrepareRecips<Identity: IAddrBook_Impl, const OFFSET: isize>(
4617            this: *mut core::ffi::c_void,
4618            ulflags: u32,
4619            lpproptagarray: *mut SPropTagArray,
4620            lpreciplist: *mut ADRLIST,
4621        ) -> windows_core::HRESULT {
4622            unsafe {
4623                let this: &Identity =
4624                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4625                IAddrBook_Impl::PrepareRecips(
4626                    this,
4627                    core::mem::transmute_copy(&ulflags),
4628                    core::mem::transmute_copy(&lpproptagarray),
4629                    core::mem::transmute_copy(&lpreciplist),
4630                )
4631                .into()
4632            }
4633        }
4634        Self {
4635            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
4636            OpenEntry: OpenEntry::<Identity, OFFSET>,
4637            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
4638            Advise: Advise::<Identity, OFFSET>,
4639            Unadvise: Unadvise::<Identity, OFFSET>,
4640            CreateOneOff: CreateOneOff::<Identity, OFFSET>,
4641            NewEntry: NewEntry::<Identity, OFFSET>,
4642            ResolveName: ResolveName::<Identity, OFFSET>,
4643            Address: Address::<Identity, OFFSET>,
4644            Details: Details::<Identity, OFFSET>,
4645            RecipOptions: RecipOptions::<Identity, OFFSET>,
4646            QueryDefaultRecipOpt: QueryDefaultRecipOpt::<Identity, OFFSET>,
4647            GetPAB: GetPAB::<Identity, OFFSET>,
4648            SetPAB: SetPAB::<Identity, OFFSET>,
4649            GetDefaultDir: GetDefaultDir::<Identity, OFFSET>,
4650            SetDefaultDir: SetDefaultDir::<Identity, OFFSET>,
4651            GetSearchPath: GetSearchPath::<Identity, OFFSET>,
4652            SetSearchPath: SetSearchPath::<Identity, OFFSET>,
4653            PrepareRecips: PrepareRecips::<Identity, OFFSET>,
4654        }
4655    }
4656    pub fn matches(iid: &windows_core::GUID) -> bool {
4657        iid == &<IAddrBook as windows_core::Interface>::IID
4658            || iid == &<IMAPIProp as windows_core::Interface>::IID
4659    }
4660}
4661impl windows_core::RuntimeName for IAddrBook {}
4662windows_core::imp::define_interface!(IAttach, IAttach_Vtbl, 0);
4663impl core::ops::Deref for IAttach {
4664    type Target = IMAPIProp;
4665    fn deref(&self) -> &Self::Target {
4666        unsafe { core::mem::transmute(self) }
4667    }
4668}
4669windows_core::imp::interface_hierarchy!(IAttach, windows_core::IUnknown, IMAPIProp);
4670#[repr(C)]
4671#[doc(hidden)]
4672pub struct IAttach_Vtbl {
4673    pub base__: IMAPIProp_Vtbl,
4674}
4675pub trait IAttach_Impl: IMAPIProp_Impl {}
4676impl IAttach_Vtbl {
4677    pub const fn new<Identity: IAttach_Impl, const OFFSET: isize>() -> Self {
4678        Self {
4679            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
4680        }
4681    }
4682    pub fn matches(iid: &windows_core::GUID) -> bool {
4683        iid == &<IAttach as windows_core::Interface>::IID
4684            || iid == &<IMAPIProp as windows_core::Interface>::IID
4685    }
4686}
4687impl windows_core::RuntimeName for IAttach {}
4688pub const IBL_FIRST: BODYLOCATION = BODYLOCATION(2i32);
4689pub const IBL_LAST: BODYLOCATION = BODYLOCATION(3i32);
4690pub const IBL_NEXT: BODYLOCATION = BODYLOCATION(4i32);
4691pub const IBL_PARENT: BODYLOCATION = BODYLOCATION(1i32);
4692pub const IBL_PREVIOUS: BODYLOCATION = BODYLOCATION(5i32);
4693pub const IBL_ROOT: BODYLOCATION = BODYLOCATION(0i32);
4694pub const IBT_ATTACHMENT: IMSGBODYTYPE = IMSGBODYTYPE(1i32);
4695pub const IBT_AUTOATTACH: IMSGBODYTYPE = IMSGBODYTYPE(4i32);
4696pub const IBT_CSETTAGGED: IMSGBODYTYPE = IMSGBODYTYPE(3i32);
4697pub const IBT_EMPTY: IMSGBODYTYPE = IMSGBODYTYPE(2i32);
4698pub const IBT_SECURE: IMSGBODYTYPE = IMSGBODYTYPE(0i32);
4699pub const ICON_INDEX_ACCEPT: u32 = 1029u32;
4700pub const ICON_INDEX_ASSIGNEE_TASK: u32 = 1282u32;
4701pub const ICON_INDEX_ASSIGNER_TASK: u32 = 1283u32;
4702pub const ICON_INDEX_CANCELATION: u32 = 1032u32;
4703pub const ICON_INDEX_CONTACT: u32 = 512u32;
4704pub const ICON_INDEX_DECLINE: u32 = 1030u32;
4705pub const ICON_INDEX_DELIVERY_MAIL: u32 = 264u32;
4706pub const ICON_INDEX_DISTRIBUTION_LIST: u32 = 514u32;
4707pub const ICON_INDEX_FORWARDED_MAIL: u32 = 262u32;
4708pub const ICON_INDEX_INFORMATIONAL_UPDATE: u32 = 1033u32;
4709pub const ICON_INDEX_IRM_COMPOSE_MAIL: u32 = 309u32;
4710pub const ICON_INDEX_IRM_FORWARDED_MAIL: u32 = 307u32;
4711pub const ICON_INDEX_IRM_READ_MAIL: u32 = 305u32;
4712pub const ICON_INDEX_IRM_REPLIED_MAIL: u32 = 308u32;
4713pub const ICON_INDEX_IRM_UNREAD_MAIL: u32 = 306u32;
4714pub const ICON_INDEX_JOURNAL_CONVERSATION: u32 = 1537u32;
4715pub const ICON_INDEX_JOURNAL_DOCUMENT: u32 = 1554u32;
4716pub const ICON_INDEX_JOURNAL_EMAIL_MESSAGE: u32 = 1538u32;
4717pub const ICON_INDEX_JOURNAL_FAX: u32 = 1545u32;
4718pub const ICON_INDEX_JOURNAL_LETTER: u32 = 1548u32;
4719pub const ICON_INDEX_JOURNAL_MEETING: u32 = 1555u32;
4720pub const ICON_INDEX_JOURNAL_MEETING_CANCELLATION: u32 = 1556u32;
4721pub const ICON_INDEX_JOURNAL_MEETING_REQUEST: u32 = 1539u32;
4722pub const ICON_INDEX_JOURNAL_MEETING_RESPONSE: u32 = 1540u32;
4723pub const ICON_INDEX_JOURNAL_MICROSOFT_OFFICE_ACCESS: u32 = 1552u32;
4724pub const ICON_INDEX_JOURNAL_MICROSOFT_OFFICE_EXCEL: u32 = 1550u32;
4725pub const ICON_INDEX_JOURNAL_MICROSOFT_OFFICE_POWER_POINT: u32 = 1551u32;
4726pub const ICON_INDEX_JOURNAL_MICROSOFT_OFFICE_WORD: u32 = 1549u32;
4727pub const ICON_INDEX_JOURNAL_NOTE: u32 = 1544u32;
4728pub const ICON_INDEX_JOURNAL_PHONE_CALL: u32 = 1546u32;
4729pub const ICON_INDEX_JOURNAL_REMOTE_SESSION: u32 = 1557u32;
4730pub const ICON_INDEX_JOURNAL_TASK_REQUEST: u32 = 1542u32;
4731pub const ICON_INDEX_JOURNAL_TASK_RESPONSE: u32 = 1543u32;
4732pub const ICON_INDEX_MAIL_ENCRYPTED: u32 = 272u32;
4733pub const ICON_INDEX_MAIL_ENCRYPTED_FORWARDED: u32 = 277u32;
4734pub const ICON_INDEX_MAIL_ENCRYPTED_READ: u32 = 279u32;
4735pub const ICON_INDEX_MAIL_ENCRYPTED_REPLIED: u32 = 275u32;
4736pub const ICON_INDEX_MAIL_SIGNED: u32 = 271u32;
4737pub const ICON_INDEX_MAIL_SMIME_RECEIPT: u32 = 274u32;
4738pub const ICON_INDEX_MAIL_SMIME_SIGNED: u32 = 273u32;
4739pub const ICON_INDEX_MAIL_SMIME_SIGNED_FORWARDED: u32 = 278u32;
4740pub const ICON_INDEX_MAIL_SMIME_SIGNED_READ: u32 = 280u32;
4741pub const ICON_INDEX_MAIL_SMIME_SIGNED_REPLIED: u32 = 276u32;
4742pub const ICON_INDEX_MEETING_REQUEST: u32 = 1028u32;
4743pub const ICON_INDEX_NEW_MAIL: u32 = 4294967295u32;
4744pub const ICON_INDEX_NONDELIVERY_MAIL: u32 = 266u32;
4745pub const ICON_INDEX_NONREAD_MAIL: u32 = 267u32;
4746pub const ICON_INDEX_OTHER: u32 = 3u32;
4747pub const ICON_INDEX_OUT_OF_OFFICE_MAIL: u32 = 283u32;
4748pub const ICON_INDEX_POST: u32 = 1u32;
4749pub const ICON_INDEX_READ_MAIL: u32 = 256u32;
4750pub const ICON_INDEX_READ_RECEIPT_MAIL: u32 = 265u32;
4751pub const ICON_INDEX_RECALL_F_MAIL: u32 = 269u32;
4752pub const ICON_INDEX_RECALL_MAIL: u32 = 284u32;
4753pub const ICON_INDEX_RECALL_S_MAIL: u32 = 268u32;
4754pub const ICON_INDEX_RECEIPT_MAIL: u32 = 260u32;
4755pub const ICON_INDEX_RECURRING_APPOINTMENT: u32 = 1025u32;
4756pub const ICON_INDEX_RECURRING_MEETING: u32 = 1027u32;
4757pub const ICON_INDEX_REMOTE_MAIL: u32 = 263u32;
4758pub const ICON_INDEX_REPLIED_MAIL: u32 = 261u32;
4759pub const ICON_INDEX_SINGLE_INSTANCE_APPOINTMENT: u32 = 1024u32;
4760pub const ICON_INDEX_SINGLE_INSTANCE_MEETING: u32 = 1026u32;
4761pub const ICON_INDEX_STICKY_NOTE_BLUE: u32 = 768u32;
4762pub const ICON_INDEX_STICKY_NOTE_GREEN: u32 = 769u32;
4763pub const ICON_INDEX_STICKY_NOTE_PINK: u32 = 770u32;
4764pub const ICON_INDEX_STICKY_NOTE_WHITE: u32 = 772u32;
4765pub const ICON_INDEX_STICKY_NOTE_YELLOW: u32 = 771u32;
4766pub const ICON_INDEX_SUBMITTED_MAIL: u32 = 258u32;
4767pub const ICON_INDEX_TASK: u32 = 1280u32;
4768pub const ICON_INDEX_TASK_ACCEPTANCE: u32 = 1285u32;
4769pub const ICON_INDEX_TASK_REJECTION: u32 = 1286u32;
4770pub const ICON_INDEX_TASK_REQUEST: u32 = 1284u32;
4771pub const ICON_INDEX_TENTATIVE: u32 = 1031u32;
4772pub const ICON_INDEX_TRACKED_MAIL: u32 = 304u32;
4773pub const ICON_INDEX_TRACKING_MAIL: u32 = 270u32;
4774pub const ICON_INDEX_UNASSIGNED_RECURRING_TASK: u32 = 1281u32;
4775pub const ICON_INDEX_UNREAD_MAIL: u32 = 257u32;
4776pub const ICON_INDEX_UNSENT_MAIL: u32 = 259u32;
4777windows_core::imp::define_interface!(
4778    IDistList,
4779    IDistList_Vtbl,
4780    0x0002030e_0000_0000_c000_000000000046
4781);
4782impl core::ops::Deref for IDistList {
4783    type Target = IMAPIContainer;
4784    fn deref(&self) -> &Self::Target {
4785        unsafe { core::mem::transmute(self) }
4786    }
4787}
4788windows_core::imp::interface_hierarchy!(
4789    IDistList,
4790    windows_core::IUnknown,
4791    IMAPIProp,
4792    IMAPIContainer
4793);
4794impl IDistList {
4795    pub unsafe fn CreateEntry(
4796        &self,
4797        cbentryid: u32,
4798        lpentryid: *mut ENTRYID,
4799        ulcreateflags: u32,
4800        lppmapipropentry: *mut Option<IMAPIProp>,
4801    ) -> windows_core::Result<()> {
4802        unsafe {
4803            (windows_core::Interface::vtable(self).CreateEntry)(
4804                windows_core::Interface::as_raw(self),
4805                cbentryid,
4806                lpentryid as _,
4807                ulcreateflags,
4808                core::mem::transmute(lppmapipropentry),
4809            )
4810            .ok()
4811        }
4812    }
4813    pub unsafe fn CopyEntries<P2>(
4814        &self,
4815        lpentries: *mut SBinaryArray,
4816        uluiparam: usize,
4817        lpprogress: P2,
4818        ulflags: u32,
4819    ) -> windows_core::Result<()>
4820    where
4821        P2: windows_core::Param<IMAPIProgress>,
4822    {
4823        unsafe {
4824            (windows_core::Interface::vtable(self).CopyEntries)(
4825                windows_core::Interface::as_raw(self),
4826                lpentries as _,
4827                uluiparam,
4828                lpprogress.param().abi(),
4829                ulflags,
4830            )
4831            .ok()
4832        }
4833    }
4834    pub unsafe fn DeleteEntries(
4835        &self,
4836        lpentries: *mut SBinaryArray,
4837        ulflags: u32,
4838    ) -> windows_core::Result<()> {
4839        unsafe {
4840            (windows_core::Interface::vtable(self).DeleteEntries)(
4841                windows_core::Interface::as_raw(self),
4842                lpentries as _,
4843                ulflags,
4844            )
4845            .ok()
4846        }
4847    }
4848    pub unsafe fn ResolveNames(
4849        &self,
4850        lpproptagarray: *mut SPropTagArray,
4851        ulflags: u32,
4852        lpadrlist: *mut ADRLIST,
4853        lpflaglist: *mut FlagList,
4854    ) -> windows_core::Result<()> {
4855        unsafe {
4856            (windows_core::Interface::vtable(self).ResolveNames)(
4857                windows_core::Interface::as_raw(self),
4858                lpproptagarray as _,
4859                ulflags,
4860                lpadrlist as _,
4861                lpflaglist as _,
4862            )
4863            .ok()
4864        }
4865    }
4866}
4867#[repr(C)]
4868#[doc(hidden)]
4869pub struct IDistList_Vtbl {
4870    pub base__: IMAPIContainer_Vtbl,
4871    pub CreateEntry: unsafe extern "system" fn(
4872        *mut core::ffi::c_void,
4873        u32,
4874        *mut ENTRYID,
4875        u32,
4876        *mut *mut core::ffi::c_void,
4877    ) -> windows_core::HRESULT,
4878    pub CopyEntries: unsafe extern "system" fn(
4879        *mut core::ffi::c_void,
4880        *mut SBinaryArray,
4881        usize,
4882        *mut core::ffi::c_void,
4883        u32,
4884    ) -> windows_core::HRESULT,
4885    pub DeleteEntries: unsafe extern "system" fn(
4886        *mut core::ffi::c_void,
4887        *mut SBinaryArray,
4888        u32,
4889    ) -> windows_core::HRESULT,
4890    pub ResolveNames: unsafe extern "system" fn(
4891        *mut core::ffi::c_void,
4892        *mut SPropTagArray,
4893        u32,
4894        *mut ADRLIST,
4895        *mut FlagList,
4896    ) -> windows_core::HRESULT,
4897}
4898pub trait IDistList_Impl: IMAPIContainer_Impl {
4899    fn CreateEntry(
4900        &self,
4901        cbentryid: u32,
4902        lpentryid: *mut ENTRYID,
4903        ulcreateflags: u32,
4904        lppmapipropentry: windows_core::OutRef<IMAPIProp>,
4905    ) -> windows_core::Result<()>;
4906    fn CopyEntries(
4907        &self,
4908        lpentries: *mut SBinaryArray,
4909        uluiparam: usize,
4910        lpprogress: windows_core::Ref<IMAPIProgress>,
4911        ulflags: u32,
4912    ) -> windows_core::Result<()>;
4913    fn DeleteEntries(&self, lpentries: *mut SBinaryArray, ulflags: u32)
4914        -> windows_core::Result<()>;
4915    fn ResolveNames(
4916        &self,
4917        lpproptagarray: *mut SPropTagArray,
4918        ulflags: u32,
4919        lpadrlist: *mut ADRLIST,
4920        lpflaglist: *mut FlagList,
4921    ) -> windows_core::Result<()>;
4922}
4923impl IDistList_Vtbl {
4924    pub const fn new<Identity: IDistList_Impl, const OFFSET: isize>() -> Self {
4925        unsafe extern "system" fn CreateEntry<Identity: IDistList_Impl, const OFFSET: isize>(
4926            this: *mut core::ffi::c_void,
4927            cbentryid: u32,
4928            lpentryid: *mut ENTRYID,
4929            ulcreateflags: u32,
4930            lppmapipropentry: *mut *mut core::ffi::c_void,
4931        ) -> windows_core::HRESULT {
4932            unsafe {
4933                let this: &Identity =
4934                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4935                IDistList_Impl::CreateEntry(
4936                    this,
4937                    core::mem::transmute_copy(&cbentryid),
4938                    core::mem::transmute_copy(&lpentryid),
4939                    core::mem::transmute_copy(&ulcreateflags),
4940                    core::mem::transmute_copy(&lppmapipropentry),
4941                )
4942                .into()
4943            }
4944        }
4945        unsafe extern "system" fn CopyEntries<Identity: IDistList_Impl, const OFFSET: isize>(
4946            this: *mut core::ffi::c_void,
4947            lpentries: *mut SBinaryArray,
4948            uluiparam: usize,
4949            lpprogress: *mut core::ffi::c_void,
4950            ulflags: u32,
4951        ) -> windows_core::HRESULT {
4952            unsafe {
4953                let this: &Identity =
4954                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4955                IDistList_Impl::CopyEntries(
4956                    this,
4957                    core::mem::transmute_copy(&lpentries),
4958                    core::mem::transmute_copy(&uluiparam),
4959                    core::mem::transmute_copy(&lpprogress),
4960                    core::mem::transmute_copy(&ulflags),
4961                )
4962                .into()
4963            }
4964        }
4965        unsafe extern "system" fn DeleteEntries<Identity: IDistList_Impl, const OFFSET: isize>(
4966            this: *mut core::ffi::c_void,
4967            lpentries: *mut SBinaryArray,
4968            ulflags: u32,
4969        ) -> windows_core::HRESULT {
4970            unsafe {
4971                let this: &Identity =
4972                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4973                IDistList_Impl::DeleteEntries(
4974                    this,
4975                    core::mem::transmute_copy(&lpentries),
4976                    core::mem::transmute_copy(&ulflags),
4977                )
4978                .into()
4979            }
4980        }
4981        unsafe extern "system" fn ResolveNames<Identity: IDistList_Impl, const OFFSET: isize>(
4982            this: *mut core::ffi::c_void,
4983            lpproptagarray: *mut SPropTagArray,
4984            ulflags: u32,
4985            lpadrlist: *mut ADRLIST,
4986            lpflaglist: *mut FlagList,
4987        ) -> windows_core::HRESULT {
4988            unsafe {
4989                let this: &Identity =
4990                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
4991                IDistList_Impl::ResolveNames(
4992                    this,
4993                    core::mem::transmute_copy(&lpproptagarray),
4994                    core::mem::transmute_copy(&ulflags),
4995                    core::mem::transmute_copy(&lpadrlist),
4996                    core::mem::transmute_copy(&lpflaglist),
4997                )
4998                .into()
4999            }
5000        }
5001        Self {
5002            base__: IMAPIContainer_Vtbl::new::<Identity, OFFSET>(),
5003            CreateEntry: CreateEntry::<Identity, OFFSET>,
5004            CopyEntries: CopyEntries::<Identity, OFFSET>,
5005            DeleteEntries: DeleteEntries::<Identity, OFFSET>,
5006            ResolveNames: ResolveNames::<Identity, OFFSET>,
5007        }
5008    }
5009    pub fn matches(iid: &windows_core::GUID) -> bool {
5010        iid == &<IDistList as windows_core::Interface>::IID
5011            || iid == &<IMAPIProp as windows_core::Interface>::IID
5012            || iid == &<IMAPIContainer as windows_core::Interface>::IID
5013    }
5014}
5015impl windows_core::RuntimeName for IDistList {}
5016pub const IDistList_CopyEntries: METHODS = METHODS(47i32);
5017pub const IDistList_CreateEntry: METHODS = METHODS(46i32);
5018pub const IDistList_DeleteEntries: METHODS = METHODS(48i32);
5019pub const IDistList_ResolveNames: METHODS = METHODS(49i32);
5020pub const IET_7BIT: ENCODINGTYPE = ENCODINGTYPE(4i32);
5021pub const IET_8BIT: ENCODINGTYPE = ENCODINGTYPE(5i32);
5022pub const IET_BASE64: ENCODINGTYPE = ENCODINGTYPE(1i32);
5023pub const IET_BINARY: ENCODINGTYPE = ENCODINGTYPE(0i32);
5024pub const IET_BINHEX40: ENCODINGTYPE = ENCODINGTYPE(12i32);
5025pub const IET_CURRENT: ENCODINGTYPE = ENCODINGTYPE(10i32);
5026pub const IET_ENCODED: ENCODINGTYPE = ENCODINGTYPE(9i32);
5027pub const IET_INETCSET: ENCODINGTYPE = ENCODINGTYPE(6i32);
5028pub const IET_LAST: ENCODINGTYPE = ENCODINGTYPE(13i32);
5029pub const IET_QP: ENCODINGTYPE = ENCODINGTYPE(3i32);
5030pub const IET_RFC1522: ENCODINGTYPE = ENCODINGTYPE(8i32);
5031pub const IET_UNICODE: ENCODINGTYPE = ENCODINGTYPE(7i32);
5032pub const IET_UNKNOWN: ENCODINGTYPE = ENCODINGTYPE(11i32);
5033pub const IET_UUENCODE: ENCODINGTYPE = ENCODINGTYPE(2i32);
5034windows_core::imp::define_interface!(
5035    IExchangeBadItemCallback,
5036    IExchangeBadItemCallback_Vtbl,
5037    0x1df85ab7_4d20_4a57_b170_2f062136c1d6
5038);
5039windows_core::imp::interface_hierarchy!(IExchangeBadItemCallback, windows_core::IUnknown);
5040impl IExchangeBadItemCallback {
5041    pub unsafe fn BadItem<P2>(
5042        &self,
5043        hresult: windows_core::HRESULT,
5044        ulflags: u32,
5045        lpwszfoldername: P2,
5046        lpsbfoldereid: *mut SBinary,
5047        cvalues: u32,
5048        lpproparray: *mut SPropValue,
5049    ) -> windows_core::Result<()>
5050    where
5051        P2: windows_core::Param<windows_core::PCWSTR>,
5052    {
5053        unsafe {
5054            (windows_core::Interface::vtable(self).BadItem)(
5055                windows_core::Interface::as_raw(self),
5056                hresult,
5057                ulflags,
5058                lpwszfoldername.param().abi(),
5059                lpsbfoldereid as _,
5060                cvalues,
5061                lpproparray as _,
5062            )
5063            .ok()
5064        }
5065    }
5066}
5067#[repr(C)]
5068#[doc(hidden)]
5069pub struct IExchangeBadItemCallback_Vtbl {
5070    pub base__: windows_core::IUnknown_Vtbl,
5071    pub BadItem: unsafe extern "system" fn(
5072        *mut core::ffi::c_void,
5073        windows_core::HRESULT,
5074        u32,
5075        windows_core::PCWSTR,
5076        *mut SBinary,
5077        u32,
5078        *mut SPropValue,
5079    ) -> windows_core::HRESULT,
5080}
5081pub trait IExchangeBadItemCallback_Impl: windows_core::IUnknownImpl {
5082    fn BadItem(
5083        &self,
5084        hresult: windows_core::HRESULT,
5085        ulflags: u32,
5086        lpwszfoldername: &windows_core::PCWSTR,
5087        lpsbfoldereid: *mut SBinary,
5088        cvalues: u32,
5089        lpproparray: *mut SPropValue,
5090    ) -> windows_core::Result<()>;
5091}
5092impl IExchangeBadItemCallback_Vtbl {
5093    pub const fn new<Identity: IExchangeBadItemCallback_Impl, const OFFSET: isize>() -> Self {
5094        unsafe extern "system" fn BadItem<
5095            Identity: IExchangeBadItemCallback_Impl,
5096            const OFFSET: isize,
5097        >(
5098            this: *mut core::ffi::c_void,
5099            hresult: windows_core::HRESULT,
5100            ulflags: u32,
5101            lpwszfoldername: windows_core::PCWSTR,
5102            lpsbfoldereid: *mut SBinary,
5103            cvalues: u32,
5104            lpproparray: *mut SPropValue,
5105        ) -> windows_core::HRESULT {
5106            unsafe {
5107                let this: &Identity =
5108                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5109                IExchangeBadItemCallback_Impl::BadItem(
5110                    this,
5111                    core::mem::transmute_copy(&hresult),
5112                    core::mem::transmute_copy(&ulflags),
5113                    core::mem::transmute(&lpwszfoldername),
5114                    core::mem::transmute_copy(&lpsbfoldereid),
5115                    core::mem::transmute_copy(&cvalues),
5116                    core::mem::transmute_copy(&lpproparray),
5117                )
5118                .into()
5119            }
5120        }
5121        Self {
5122            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5123            BadItem: BadItem::<Identity, OFFSET>,
5124        }
5125    }
5126    pub fn matches(iid: &windows_core::GUID) -> bool {
5127        iid == &<IExchangeBadItemCallback as windows_core::Interface>::IID
5128    }
5129}
5130impl windows_core::RuntimeName for IExchangeBadItemCallback {}
5131windows_core::imp::define_interface!(IExchangeChangeAdviseSink, IExchangeChangeAdviseSink_Vtbl, 0);
5132windows_core::imp::interface_hierarchy!(IExchangeChangeAdviseSink, windows_core::IUnknown);
5133impl IExchangeChangeAdviseSink {
5134    pub unsafe fn OnNotify(&self, ulflags: u32, lpentrylist: *mut SBinaryArray) -> u32 {
5135        unsafe {
5136            (windows_core::Interface::vtable(self).OnNotify)(
5137                windows_core::Interface::as_raw(self),
5138                ulflags,
5139                lpentrylist as _,
5140            )
5141        }
5142    }
5143}
5144#[repr(C)]
5145#[doc(hidden)]
5146pub struct IExchangeChangeAdviseSink_Vtbl {
5147    pub base__: windows_core::IUnknown_Vtbl,
5148    pub OnNotify: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SBinaryArray) -> u32,
5149}
5150pub trait IExchangeChangeAdviseSink_Impl: windows_core::IUnknownImpl {
5151    fn OnNotify(&self, ulflags: u32, lpentrylist: *mut SBinaryArray) -> u32;
5152}
5153impl IExchangeChangeAdviseSink_Vtbl {
5154    pub const fn new<Identity: IExchangeChangeAdviseSink_Impl, const OFFSET: isize>() -> Self {
5155        unsafe extern "system" fn OnNotify<
5156            Identity: IExchangeChangeAdviseSink_Impl,
5157            const OFFSET: isize,
5158        >(
5159            this: *mut core::ffi::c_void,
5160            ulflags: u32,
5161            lpentrylist: *mut SBinaryArray,
5162        ) -> u32 {
5163            unsafe {
5164                let this: &Identity =
5165                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5166                IExchangeChangeAdviseSink_Impl::OnNotify(
5167                    this,
5168                    core::mem::transmute_copy(&ulflags),
5169                    core::mem::transmute_copy(&lpentrylist),
5170                )
5171            }
5172        }
5173        Self {
5174            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5175            OnNotify: OnNotify::<Identity, OFFSET>,
5176        }
5177    }
5178    pub fn matches(iid: &windows_core::GUID) -> bool {
5179        iid == &<IExchangeChangeAdviseSink as windows_core::Interface>::IID
5180    }
5181}
5182impl windows_core::RuntimeName for IExchangeChangeAdviseSink {}
5183windows_core::imp::define_interface!(
5184    IExchangeChangeAdvisor,
5185    IExchangeChangeAdvisor_Vtbl,
5186    0x1e300720_a839_11cf_bde0_00004c7531e3
5187);
5188windows_core::imp::interface_hierarchy!(IExchangeChangeAdvisor, windows_core::IUnknown);
5189impl IExchangeChangeAdvisor {
5190    pub unsafe fn GetLastError(
5191        &self,
5192        hresult: windows_core::HRESULT,
5193        ulflags: u32,
5194        lppmapierror: *mut *mut MAPIERROR,
5195    ) -> windows_core::Result<()> {
5196        unsafe {
5197            (windows_core::Interface::vtable(self).GetLastError)(
5198                windows_core::Interface::as_raw(self),
5199                hresult,
5200                ulflags,
5201                lppmapierror as _,
5202            )
5203            .ok()
5204        }
5205    }
5206    pub unsafe fn Config<P0, P2>(
5207        &self,
5208        lpstream: P0,
5209        lpguid: *mut windows_core::GUID,
5210        lpadvisesink: P2,
5211        ulflags: u32,
5212    ) -> windows_core::Result<()>
5213    where
5214        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5215        P2: windows_core::Param<IExchangeChangeAdviseSink>,
5216    {
5217        unsafe {
5218            (windows_core::Interface::vtable(self).Config)(
5219                windows_core::Interface::as_raw(self),
5220                lpstream.param().abi(),
5221                lpguid as _,
5222                lpadvisesink.param().abi(),
5223                ulflags,
5224            )
5225            .ok()
5226        }
5227    }
5228    pub unsafe fn UpdateState<P0>(&self, lpstream: P0) -> windows_core::Result<()>
5229    where
5230        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5231    {
5232        unsafe {
5233            (windows_core::Interface::vtable(self).UpdateState)(
5234                windows_core::Interface::as_raw(self),
5235                lpstream.param().abi(),
5236            )
5237            .ok()
5238        }
5239    }
5240    pub unsafe fn AddKeys(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()> {
5241        unsafe {
5242            (windows_core::Interface::vtable(self).AddKeys)(
5243                windows_core::Interface::as_raw(self),
5244                lpentrylist as _,
5245            )
5246            .ok()
5247        }
5248    }
5249    pub unsafe fn RemoveKeys(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()> {
5250        unsafe {
5251            (windows_core::Interface::vtable(self).RemoveKeys)(
5252                windows_core::Interface::as_raw(self),
5253                lpentrylist as _,
5254            )
5255            .ok()
5256        }
5257    }
5258}
5259#[repr(C)]
5260#[doc(hidden)]
5261pub struct IExchangeChangeAdvisor_Vtbl {
5262    pub base__: windows_core::IUnknown_Vtbl,
5263    pub GetLastError: unsafe extern "system" fn(
5264        *mut core::ffi::c_void,
5265        windows_core::HRESULT,
5266        u32,
5267        *mut *mut MAPIERROR,
5268    ) -> windows_core::HRESULT,
5269    pub Config: unsafe extern "system" fn(
5270        *mut core::ffi::c_void,
5271        *mut core::ffi::c_void,
5272        *mut windows_core::GUID,
5273        *mut core::ffi::c_void,
5274        u32,
5275    ) -> windows_core::HRESULT,
5276    pub UpdateState: unsafe extern "system" fn(
5277        *mut core::ffi::c_void,
5278        *mut core::ffi::c_void,
5279    ) -> windows_core::HRESULT,
5280    pub AddKeys: unsafe extern "system" fn(
5281        *mut core::ffi::c_void,
5282        *mut SBinaryArray,
5283    ) -> windows_core::HRESULT,
5284    pub RemoveKeys: unsafe extern "system" fn(
5285        *mut core::ffi::c_void,
5286        *mut SBinaryArray,
5287    ) -> windows_core::HRESULT,
5288}
5289pub trait IExchangeChangeAdvisor_Impl: windows_core::IUnknownImpl {
5290    fn GetLastError(
5291        &self,
5292        hresult: windows_core::HRESULT,
5293        ulflags: u32,
5294        lppmapierror: *mut *mut MAPIERROR,
5295    ) -> windows_core::Result<()>;
5296    fn Config(
5297        &self,
5298        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
5299        lpguid: *mut windows_core::GUID,
5300        lpadvisesink: windows_core::Ref<IExchangeChangeAdviseSink>,
5301        ulflags: u32,
5302    ) -> windows_core::Result<()>;
5303    fn UpdateState(
5304        &self,
5305        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
5306    ) -> windows_core::Result<()>;
5307    fn AddKeys(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()>;
5308    fn RemoveKeys(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()>;
5309}
5310impl IExchangeChangeAdvisor_Vtbl {
5311    pub const fn new<Identity: IExchangeChangeAdvisor_Impl, const OFFSET: isize>() -> Self {
5312        unsafe extern "system" fn GetLastError<
5313            Identity: IExchangeChangeAdvisor_Impl,
5314            const OFFSET: isize,
5315        >(
5316            this: *mut core::ffi::c_void,
5317            hresult: windows_core::HRESULT,
5318            ulflags: u32,
5319            lppmapierror: *mut *mut MAPIERROR,
5320        ) -> windows_core::HRESULT {
5321            unsafe {
5322                let this: &Identity =
5323                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5324                IExchangeChangeAdvisor_Impl::GetLastError(
5325                    this,
5326                    core::mem::transmute_copy(&hresult),
5327                    core::mem::transmute_copy(&ulflags),
5328                    core::mem::transmute_copy(&lppmapierror),
5329                )
5330                .into()
5331            }
5332        }
5333        unsafe extern "system" fn Config<
5334            Identity: IExchangeChangeAdvisor_Impl,
5335            const OFFSET: isize,
5336        >(
5337            this: *mut core::ffi::c_void,
5338            lpstream: *mut core::ffi::c_void,
5339            lpguid: *mut windows_core::GUID,
5340            lpadvisesink: *mut core::ffi::c_void,
5341            ulflags: u32,
5342        ) -> windows_core::HRESULT {
5343            unsafe {
5344                let this: &Identity =
5345                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5346                IExchangeChangeAdvisor_Impl::Config(
5347                    this,
5348                    core::mem::transmute_copy(&lpstream),
5349                    core::mem::transmute_copy(&lpguid),
5350                    core::mem::transmute_copy(&lpadvisesink),
5351                    core::mem::transmute_copy(&ulflags),
5352                )
5353                .into()
5354            }
5355        }
5356        unsafe extern "system" fn UpdateState<
5357            Identity: IExchangeChangeAdvisor_Impl,
5358            const OFFSET: isize,
5359        >(
5360            this: *mut core::ffi::c_void,
5361            lpstream: *mut core::ffi::c_void,
5362        ) -> windows_core::HRESULT {
5363            unsafe {
5364                let this: &Identity =
5365                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5366                IExchangeChangeAdvisor_Impl::UpdateState(this, core::mem::transmute_copy(&lpstream))
5367                    .into()
5368            }
5369        }
5370        unsafe extern "system" fn AddKeys<
5371            Identity: IExchangeChangeAdvisor_Impl,
5372            const OFFSET: isize,
5373        >(
5374            this: *mut core::ffi::c_void,
5375            lpentrylist: *mut SBinaryArray,
5376        ) -> windows_core::HRESULT {
5377            unsafe {
5378                let this: &Identity =
5379                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5380                IExchangeChangeAdvisor_Impl::AddKeys(this, core::mem::transmute_copy(&lpentrylist))
5381                    .into()
5382            }
5383        }
5384        unsafe extern "system" fn RemoveKeys<
5385            Identity: IExchangeChangeAdvisor_Impl,
5386            const OFFSET: isize,
5387        >(
5388            this: *mut core::ffi::c_void,
5389            lpentrylist: *mut SBinaryArray,
5390        ) -> windows_core::HRESULT {
5391            unsafe {
5392                let this: &Identity =
5393                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5394                IExchangeChangeAdvisor_Impl::RemoveKeys(
5395                    this,
5396                    core::mem::transmute_copy(&lpentrylist),
5397                )
5398                .into()
5399            }
5400        }
5401        Self {
5402            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5403            GetLastError: GetLastError::<Identity, OFFSET>,
5404            Config: Config::<Identity, OFFSET>,
5405            UpdateState: UpdateState::<Identity, OFFSET>,
5406            AddKeys: AddKeys::<Identity, OFFSET>,
5407            RemoveKeys: RemoveKeys::<Identity, OFFSET>,
5408        }
5409    }
5410    pub fn matches(iid: &windows_core::GUID) -> bool {
5411        iid == &<IExchangeChangeAdvisor as windows_core::Interface>::IID
5412    }
5413}
5414impl windows_core::RuntimeName for IExchangeChangeAdvisor {}
5415windows_core::imp::define_interface!(
5416    IExchangeExportChanges,
5417    IExchangeExportChanges_Vtbl,
5418    0xa3ea9cc0_d1b2_11cd_80fc_00aa004bba0b
5419);
5420windows_core::imp::interface_hierarchy!(IExchangeExportChanges, windows_core::IUnknown);
5421impl IExchangeExportChanges {
5422    pub unsafe fn GetLastError(
5423        &self,
5424        hresult: windows_core::HRESULT,
5425        ulflags: u32,
5426        lppmapierror: *mut *mut MAPIERROR,
5427    ) -> windows_core::Result<()> {
5428        unsafe {
5429            (windows_core::Interface::vtable(self).GetLastError)(
5430                windows_core::Interface::as_raw(self),
5431                hresult,
5432                ulflags,
5433                lppmapierror as _,
5434            )
5435            .ok()
5436        }
5437    }
5438    pub unsafe fn Config<P0, P2>(
5439        &self,
5440        lpstream: P0,
5441        ulflags: u32,
5442        lpunk: P2,
5443        lprestriction: *mut SRestriction,
5444        lpincludeprops: *mut SPropTagArray,
5445        lpexcludeprops: *mut SPropTagArray,
5446        ulbuffersize: u32,
5447    ) -> windows_core::Result<()>
5448    where
5449        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5450        P2: windows_core::Param<windows_core::IUnknown>,
5451    {
5452        unsafe {
5453            (windows_core::Interface::vtable(self).Config)(
5454                windows_core::Interface::as_raw(self),
5455                lpstream.param().abi(),
5456                ulflags,
5457                lpunk.param().abi(),
5458                lprestriction as _,
5459                lpincludeprops as _,
5460                lpexcludeprops as _,
5461                ulbuffersize,
5462            )
5463            .ok()
5464        }
5465    }
5466    pub unsafe fn Synchronize(
5467        &self,
5468        lpulsteps: *mut u32,
5469        lpulprogress: *mut u32,
5470    ) -> windows_core::Result<()> {
5471        unsafe {
5472            (windows_core::Interface::vtable(self).Synchronize)(
5473                windows_core::Interface::as_raw(self),
5474                lpulsteps as _,
5475                lpulprogress as _,
5476            )
5477            .ok()
5478        }
5479    }
5480    pub unsafe fn UpdateState<P0>(&self, lpstream: P0) -> windows_core::Result<()>
5481    where
5482        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5483    {
5484        unsafe {
5485            (windows_core::Interface::vtable(self).UpdateState)(
5486                windows_core::Interface::as_raw(self),
5487                lpstream.param().abi(),
5488            )
5489            .ok()
5490        }
5491    }
5492}
5493#[repr(C)]
5494#[doc(hidden)]
5495pub struct IExchangeExportChanges_Vtbl {
5496    pub base__: windows_core::IUnknown_Vtbl,
5497    pub GetLastError: unsafe extern "system" fn(
5498        *mut core::ffi::c_void,
5499        windows_core::HRESULT,
5500        u32,
5501        *mut *mut MAPIERROR,
5502    ) -> windows_core::HRESULT,
5503    pub Config: unsafe extern "system" fn(
5504        *mut core::ffi::c_void,
5505        *mut core::ffi::c_void,
5506        u32,
5507        *mut core::ffi::c_void,
5508        *mut SRestriction,
5509        *mut SPropTagArray,
5510        *mut SPropTagArray,
5511        u32,
5512    ) -> windows_core::HRESULT,
5513    pub Synchronize: unsafe extern "system" fn(
5514        *mut core::ffi::c_void,
5515        *mut u32,
5516        *mut u32,
5517    ) -> windows_core::HRESULT,
5518    pub UpdateState: unsafe extern "system" fn(
5519        *mut core::ffi::c_void,
5520        *mut core::ffi::c_void,
5521    ) -> windows_core::HRESULT,
5522}
5523pub trait IExchangeExportChanges_Impl: windows_core::IUnknownImpl {
5524    fn GetLastError(
5525        &self,
5526        hresult: windows_core::HRESULT,
5527        ulflags: u32,
5528        lppmapierror: *mut *mut MAPIERROR,
5529    ) -> windows_core::Result<()>;
5530    fn Config(
5531        &self,
5532        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
5533        ulflags: u32,
5534        lpunk: windows_core::Ref<windows_core::IUnknown>,
5535        lprestriction: *mut SRestriction,
5536        lpincludeprops: *mut SPropTagArray,
5537        lpexcludeprops: *mut SPropTagArray,
5538        ulbuffersize: u32,
5539    ) -> windows_core::Result<()>;
5540    fn Synchronize(&self, lpulsteps: *mut u32, lpulprogress: *mut u32) -> windows_core::Result<()>;
5541    fn UpdateState(
5542        &self,
5543        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
5544    ) -> windows_core::Result<()>;
5545}
5546impl IExchangeExportChanges_Vtbl {
5547    pub const fn new<Identity: IExchangeExportChanges_Impl, const OFFSET: isize>() -> Self {
5548        unsafe extern "system" fn GetLastError<
5549            Identity: IExchangeExportChanges_Impl,
5550            const OFFSET: isize,
5551        >(
5552            this: *mut core::ffi::c_void,
5553            hresult: windows_core::HRESULT,
5554            ulflags: u32,
5555            lppmapierror: *mut *mut MAPIERROR,
5556        ) -> windows_core::HRESULT {
5557            unsafe {
5558                let this: &Identity =
5559                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5560                IExchangeExportChanges_Impl::GetLastError(
5561                    this,
5562                    core::mem::transmute_copy(&hresult),
5563                    core::mem::transmute_copy(&ulflags),
5564                    core::mem::transmute_copy(&lppmapierror),
5565                )
5566                .into()
5567            }
5568        }
5569        unsafe extern "system" fn Config<
5570            Identity: IExchangeExportChanges_Impl,
5571            const OFFSET: isize,
5572        >(
5573            this: *mut core::ffi::c_void,
5574            lpstream: *mut core::ffi::c_void,
5575            ulflags: u32,
5576            lpunk: *mut core::ffi::c_void,
5577            lprestriction: *mut SRestriction,
5578            lpincludeprops: *mut SPropTagArray,
5579            lpexcludeprops: *mut SPropTagArray,
5580            ulbuffersize: u32,
5581        ) -> windows_core::HRESULT {
5582            unsafe {
5583                let this: &Identity =
5584                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5585                IExchangeExportChanges_Impl::Config(
5586                    this,
5587                    core::mem::transmute_copy(&lpstream),
5588                    core::mem::transmute_copy(&ulflags),
5589                    core::mem::transmute_copy(&lpunk),
5590                    core::mem::transmute_copy(&lprestriction),
5591                    core::mem::transmute_copy(&lpincludeprops),
5592                    core::mem::transmute_copy(&lpexcludeprops),
5593                    core::mem::transmute_copy(&ulbuffersize),
5594                )
5595                .into()
5596            }
5597        }
5598        unsafe extern "system" fn Synchronize<
5599            Identity: IExchangeExportChanges_Impl,
5600            const OFFSET: isize,
5601        >(
5602            this: *mut core::ffi::c_void,
5603            lpulsteps: *mut u32,
5604            lpulprogress: *mut u32,
5605        ) -> windows_core::HRESULT {
5606            unsafe {
5607                let this: &Identity =
5608                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5609                IExchangeExportChanges_Impl::Synchronize(
5610                    this,
5611                    core::mem::transmute_copy(&lpulsteps),
5612                    core::mem::transmute_copy(&lpulprogress),
5613                )
5614                .into()
5615            }
5616        }
5617        unsafe extern "system" fn UpdateState<
5618            Identity: IExchangeExportChanges_Impl,
5619            const OFFSET: isize,
5620        >(
5621            this: *mut core::ffi::c_void,
5622            lpstream: *mut core::ffi::c_void,
5623        ) -> windows_core::HRESULT {
5624            unsafe {
5625                let this: &Identity =
5626                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5627                IExchangeExportChanges_Impl::UpdateState(this, core::mem::transmute_copy(&lpstream))
5628                    .into()
5629            }
5630        }
5631        Self {
5632            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
5633            GetLastError: GetLastError::<Identity, OFFSET>,
5634            Config: Config::<Identity, OFFSET>,
5635            Synchronize: Synchronize::<Identity, OFFSET>,
5636            UpdateState: UpdateState::<Identity, OFFSET>,
5637        }
5638    }
5639    pub fn matches(iid: &windows_core::GUID) -> bool {
5640        iid == &<IExchangeExportChanges as windows_core::Interface>::IID
5641    }
5642}
5643impl windows_core::RuntimeName for IExchangeExportChanges {}
5644windows_core::imp::define_interface!(
5645    IExchangeExportChanges2,
5646    IExchangeExportChanges2_Vtbl,
5647    0x387cebe0_f53f_11cf_a48f_00c04fd65595
5648);
5649impl core::ops::Deref for IExchangeExportChanges2 {
5650    type Target = IExchangeExportChanges;
5651    fn deref(&self) -> &Self::Target {
5652        unsafe { core::mem::transmute(self) }
5653    }
5654}
5655windows_core::imp::interface_hierarchy!(
5656    IExchangeExportChanges2,
5657    windows_core::IUnknown,
5658    IExchangeExportChanges
5659);
5660impl IExchangeExportChanges2 {
5661    pub unsafe fn ConfigForConversionStream<P0, P2>(
5662        &self,
5663        lpstream: P0,
5664        ulflags: u32,
5665        lpunk: P2,
5666        lprestriction: *mut SRestriction,
5667        cvaluesconversion: u32,
5668        lpproparrayconversion: *mut SPropValue,
5669        ulbuffersize: u32,
5670    ) -> windows_core::Result<()>
5671    where
5672        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5673        P2: windows_core::Param<windows_core::IUnknown>,
5674    {
5675        unsafe {
5676            (windows_core::Interface::vtable(self).ConfigForConversionStream)(
5677                windows_core::Interface::as_raw(self),
5678                lpstream.param().abi(),
5679                ulflags,
5680                lpunk.param().abi(),
5681                lprestriction as _,
5682                cvaluesconversion,
5683                lpproparrayconversion as _,
5684                ulbuffersize,
5685            )
5686            .ok()
5687        }
5688    }
5689}
5690#[repr(C)]
5691#[doc(hidden)]
5692pub struct IExchangeExportChanges2_Vtbl {
5693    pub base__: IExchangeExportChanges_Vtbl,
5694    pub ConfigForConversionStream: unsafe extern "system" fn(
5695        *mut core::ffi::c_void,
5696        *mut core::ffi::c_void,
5697        u32,
5698        *mut core::ffi::c_void,
5699        *mut SRestriction,
5700        u32,
5701        *mut SPropValue,
5702        u32,
5703    ) -> windows_core::HRESULT,
5704}
5705pub trait IExchangeExportChanges2_Impl: IExchangeExportChanges_Impl {
5706    fn ConfigForConversionStream(
5707        &self,
5708        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
5709        ulflags: u32,
5710        lpunk: windows_core::Ref<windows_core::IUnknown>,
5711        lprestriction: *mut SRestriction,
5712        cvaluesconversion: u32,
5713        lpproparrayconversion: *mut SPropValue,
5714        ulbuffersize: u32,
5715    ) -> windows_core::Result<()>;
5716}
5717impl IExchangeExportChanges2_Vtbl {
5718    pub const fn new<Identity: IExchangeExportChanges2_Impl, const OFFSET: isize>() -> Self {
5719        unsafe extern "system" fn ConfigForConversionStream<
5720            Identity: IExchangeExportChanges2_Impl,
5721            const OFFSET: isize,
5722        >(
5723            this: *mut core::ffi::c_void,
5724            lpstream: *mut core::ffi::c_void,
5725            ulflags: u32,
5726            lpunk: *mut core::ffi::c_void,
5727            lprestriction: *mut SRestriction,
5728            cvaluesconversion: u32,
5729            lpproparrayconversion: *mut SPropValue,
5730            ulbuffersize: u32,
5731        ) -> windows_core::HRESULT {
5732            unsafe {
5733                let this: &Identity =
5734                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5735                IExchangeExportChanges2_Impl::ConfigForConversionStream(
5736                    this,
5737                    core::mem::transmute_copy(&lpstream),
5738                    core::mem::transmute_copy(&ulflags),
5739                    core::mem::transmute_copy(&lpunk),
5740                    core::mem::transmute_copy(&lprestriction),
5741                    core::mem::transmute_copy(&cvaluesconversion),
5742                    core::mem::transmute_copy(&lpproparrayconversion),
5743                    core::mem::transmute_copy(&ulbuffersize),
5744                )
5745                .into()
5746            }
5747        }
5748        Self {
5749            base__: IExchangeExportChanges_Vtbl::new::<Identity, OFFSET>(),
5750            ConfigForConversionStream: ConfigForConversionStream::<Identity, OFFSET>,
5751        }
5752    }
5753    pub fn matches(iid: &windows_core::GUID) -> bool {
5754        iid == &<IExchangeExportChanges2 as windows_core::Interface>::IID
5755            || iid == &<IExchangeExportChanges as windows_core::Interface>::IID
5756    }
5757}
5758impl windows_core::RuntimeName for IExchangeExportChanges2 {}
5759windows_core::imp::define_interface!(
5760    IExchangeExportChanges3,
5761    IExchangeExportChanges3_Vtbl,
5762    0x702e7f86_50a6_11d1_abd6_00a0c905660a
5763);
5764impl core::ops::Deref for IExchangeExportChanges3 {
5765    type Target = IExchangeExportChanges2;
5766    fn deref(&self) -> &Self::Target {
5767        unsafe { core::mem::transmute(self) }
5768    }
5769}
5770windows_core::imp::interface_hierarchy!(
5771    IExchangeExportChanges3,
5772    windows_core::IUnknown,
5773    IExchangeExportChanges,
5774    IExchangeExportChanges2
5775);
5776impl IExchangeExportChanges3 {
5777    pub unsafe fn ConfigForSelectiveSync<P0, P2>(
5778        &self,
5779        lpstream: P0,
5780        ulflags: u32,
5781        lpunk: P2,
5782        lpmsglist: *mut SBinaryArray,
5783        lprestriction: *mut SRestriction,
5784        lpincludeprops: *mut SPropTagArray,
5785        lpexcludeprops: *mut SPropTagArray,
5786        ulbuffersize: u32,
5787    ) -> windows_core::Result<()>
5788    where
5789        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
5790        P2: windows_core::Param<windows_core::IUnknown>,
5791    {
5792        unsafe {
5793            (windows_core::Interface::vtable(self).ConfigForSelectiveSync)(
5794                windows_core::Interface::as_raw(self),
5795                lpstream.param().abi(),
5796                ulflags,
5797                lpunk.param().abi(),
5798                lpmsglist as _,
5799                lprestriction as _,
5800                lpincludeprops as _,
5801                lpexcludeprops as _,
5802                ulbuffersize,
5803            )
5804            .ok()
5805        }
5806    }
5807}
5808#[repr(C)]
5809#[doc(hidden)]
5810pub struct IExchangeExportChanges3_Vtbl {
5811    pub base__: IExchangeExportChanges2_Vtbl,
5812    pub ConfigForSelectiveSync: unsafe extern "system" fn(
5813        *mut core::ffi::c_void,
5814        *mut core::ffi::c_void,
5815        u32,
5816        *mut core::ffi::c_void,
5817        *mut SBinaryArray,
5818        *mut SRestriction,
5819        *mut SPropTagArray,
5820        *mut SPropTagArray,
5821        u32,
5822    ) -> windows_core::HRESULT,
5823}
5824pub trait IExchangeExportChanges3_Impl: IExchangeExportChanges2_Impl {
5825    fn ConfigForSelectiveSync(
5826        &self,
5827        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
5828        ulflags: u32,
5829        lpunk: windows_core::Ref<windows_core::IUnknown>,
5830        lpmsglist: *mut SBinaryArray,
5831        lprestriction: *mut SRestriction,
5832        lpincludeprops: *mut SPropTagArray,
5833        lpexcludeprops: *mut SPropTagArray,
5834        ulbuffersize: u32,
5835    ) -> windows_core::Result<()>;
5836}
5837impl IExchangeExportChanges3_Vtbl {
5838    pub const fn new<Identity: IExchangeExportChanges3_Impl, const OFFSET: isize>() -> Self {
5839        unsafe extern "system" fn ConfigForSelectiveSync<
5840            Identity: IExchangeExportChanges3_Impl,
5841            const OFFSET: isize,
5842        >(
5843            this: *mut core::ffi::c_void,
5844            lpstream: *mut core::ffi::c_void,
5845            ulflags: u32,
5846            lpunk: *mut core::ffi::c_void,
5847            lpmsglist: *mut SBinaryArray,
5848            lprestriction: *mut SRestriction,
5849            lpincludeprops: *mut SPropTagArray,
5850            lpexcludeprops: *mut SPropTagArray,
5851            ulbuffersize: u32,
5852        ) -> windows_core::HRESULT {
5853            unsafe {
5854                let this: &Identity =
5855                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5856                IExchangeExportChanges3_Impl::ConfigForSelectiveSync(
5857                    this,
5858                    core::mem::transmute_copy(&lpstream),
5859                    core::mem::transmute_copy(&ulflags),
5860                    core::mem::transmute_copy(&lpunk),
5861                    core::mem::transmute_copy(&lpmsglist),
5862                    core::mem::transmute_copy(&lprestriction),
5863                    core::mem::transmute_copy(&lpincludeprops),
5864                    core::mem::transmute_copy(&lpexcludeprops),
5865                    core::mem::transmute_copy(&ulbuffersize),
5866                )
5867                .into()
5868            }
5869        }
5870        Self {
5871            base__: IExchangeExportChanges2_Vtbl::new::<Identity, OFFSET>(),
5872            ConfigForSelectiveSync: ConfigForSelectiveSync::<Identity, OFFSET>,
5873        }
5874    }
5875    pub fn matches(iid: &windows_core::GUID) -> bool {
5876        iid == &<IExchangeExportChanges3 as windows_core::Interface>::IID
5877            || iid == &<IExchangeExportChanges as windows_core::Interface>::IID
5878            || iid == &<IExchangeExportChanges2 as windows_core::Interface>::IID
5879    }
5880}
5881impl windows_core::RuntimeName for IExchangeExportChanges3 {}
5882windows_core::imp::define_interface!(
5883    IExchangeFastTransfer,
5884    IExchangeFastTransfer_Vtbl,
5885    0xff7db070_a88a_11cd_9bc8_00aa002fc45a
5886);
5887windows_core::imp::interface_hierarchy!(IExchangeFastTransfer, windows_core::IUnknown);
5888impl IExchangeFastTransfer {
5889    pub unsafe fn Config(&self, ulflags: u32, ultransfermethod: u32) -> windows_core::Result<()> {
5890        unsafe {
5891            (windows_core::Interface::vtable(self).Config)(
5892                windows_core::Interface::as_raw(self),
5893                ulflags,
5894                ultransfermethod,
5895            )
5896            .ok()
5897        }
5898    }
5899    pub unsafe fn TransferBuffer(
5900        &self,
5901        cb: u32,
5902        lpb: *mut u8,
5903        lpcbprocessed: *mut u32,
5904    ) -> windows_core::Result<()> {
5905        unsafe {
5906            (windows_core::Interface::vtable(self).TransferBuffer)(
5907                windows_core::Interface::as_raw(self),
5908                cb,
5909                lpb as _,
5910                lpcbprocessed as _,
5911            )
5912            .ok()
5913        }
5914    }
5915    pub unsafe fn IsInterfaceOk(
5916        &self,
5917        ultransfermethod: u32,
5918        refiid: *const windows_core::GUID,
5919        lpptaglist: *mut SPropTagArray,
5920        ulflags: u32,
5921    ) -> windows_core::BOOL {
5922        unsafe {
5923            (windows_core::Interface::vtable(self).IsInterfaceOk)(
5924                windows_core::Interface::as_raw(self),
5925                ultransfermethod,
5926                refiid,
5927                lpptaglist as _,
5928                ulflags,
5929            )
5930        }
5931    }
5932}
5933#[repr(C)]
5934#[doc(hidden)]
5935pub struct IExchangeFastTransfer_Vtbl {
5936    pub base__: windows_core::IUnknown_Vtbl,
5937    pub Config:
5938        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
5939    pub TransferBuffer: unsafe extern "system" fn(
5940        *mut core::ffi::c_void,
5941        u32,
5942        *mut u8,
5943        *mut u32,
5944    ) -> windows_core::HRESULT,
5945    pub IsInterfaceOk: unsafe extern "system" fn(
5946        *mut core::ffi::c_void,
5947        u32,
5948        *const windows_core::GUID,
5949        *mut SPropTagArray,
5950        u32,
5951    ) -> windows_core::BOOL,
5952}
5953pub trait IExchangeFastTransfer_Impl: windows_core::IUnknownImpl {
5954    fn Config(&self, ulflags: u32, ultransfermethod: u32) -> windows_core::Result<()>;
5955    fn TransferBuffer(
5956        &self,
5957        cb: u32,
5958        lpb: *mut u8,
5959        lpcbprocessed: *mut u32,
5960    ) -> windows_core::Result<()>;
5961    fn IsInterfaceOk(
5962        &self,
5963        ultransfermethod: u32,
5964        refiid: *const windows_core::GUID,
5965        lpptaglist: *mut SPropTagArray,
5966        ulflags: u32,
5967    ) -> windows_core::BOOL;
5968}
5969impl IExchangeFastTransfer_Vtbl {
5970    pub const fn new<Identity: IExchangeFastTransfer_Impl, const OFFSET: isize>() -> Self {
5971        unsafe extern "system" fn Config<
5972            Identity: IExchangeFastTransfer_Impl,
5973            const OFFSET: isize,
5974        >(
5975            this: *mut core::ffi::c_void,
5976            ulflags: u32,
5977            ultransfermethod: u32,
5978        ) -> windows_core::HRESULT {
5979            unsafe {
5980                let this: &Identity =
5981                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
5982                IExchangeFastTransfer_Impl::Config(
5983                    this,
5984                    core::mem::transmute_copy(&ulflags),
5985                    core::mem::transmute_copy(&ultransfermethod),
5986                )
5987                .into()
5988            }
5989        }
5990        unsafe extern "system" fn TransferBuffer<
5991            Identity: IExchangeFastTransfer_Impl,
5992            const OFFSET: isize,
5993        >(
5994            this: *mut core::ffi::c_void,
5995            cb: u32,
5996            lpb: *mut u8,
5997            lpcbprocessed: *mut u32,
5998        ) -> windows_core::HRESULT {
5999            unsafe {
6000                let this: &Identity =
6001                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6002                IExchangeFastTransfer_Impl::TransferBuffer(
6003                    this,
6004                    core::mem::transmute_copy(&cb),
6005                    core::mem::transmute_copy(&lpb),
6006                    core::mem::transmute_copy(&lpcbprocessed),
6007                )
6008                .into()
6009            }
6010        }
6011        unsafe extern "system" fn IsInterfaceOk<
6012            Identity: IExchangeFastTransfer_Impl,
6013            const OFFSET: isize,
6014        >(
6015            this: *mut core::ffi::c_void,
6016            ultransfermethod: u32,
6017            refiid: *const windows_core::GUID,
6018            lpptaglist: *mut SPropTagArray,
6019            ulflags: u32,
6020        ) -> windows_core::BOOL {
6021            unsafe {
6022                let this: &Identity =
6023                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6024                IExchangeFastTransfer_Impl::IsInterfaceOk(
6025                    this,
6026                    core::mem::transmute_copy(&ultransfermethod),
6027                    core::mem::transmute_copy(&refiid),
6028                    core::mem::transmute_copy(&lpptaglist),
6029                    core::mem::transmute_copy(&ulflags),
6030                )
6031            }
6032        }
6033        Self {
6034            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6035            Config: Config::<Identity, OFFSET>,
6036            TransferBuffer: TransferBuffer::<Identity, OFFSET>,
6037            IsInterfaceOk: IsInterfaceOk::<Identity, OFFSET>,
6038        }
6039    }
6040    pub fn matches(iid: &windows_core::GUID) -> bool {
6041        iid == &<IExchangeFastTransfer as windows_core::Interface>::IID
6042    }
6043}
6044impl windows_core::RuntimeName for IExchangeFastTransfer {}
6045windows_core::imp::define_interface!(
6046    IExchangeFavorites,
6047    IExchangeFavorites_Vtbl,
6048    0xcf4f3bc0_ec66_11ce_b31c_00aa00574cc6
6049);
6050windows_core::imp::interface_hierarchy!(IExchangeFavorites, windows_core::IUnknown);
6051impl IExchangeFavorites {
6052    pub unsafe fn GetLastError(
6053        &self,
6054        hresult: windows_core::HRESULT,
6055        ulflags: u32,
6056        lppmapierror: *mut *mut MAPIERROR,
6057    ) -> windows_core::Result<()> {
6058        unsafe {
6059            (windows_core::Interface::vtable(self).GetLastError)(
6060                windows_core::Interface::as_raw(self),
6061                hresult,
6062                ulflags,
6063                lppmapierror as _,
6064            )
6065            .ok()
6066        }
6067    }
6068    pub unsafe fn AddFavorites(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()> {
6069        unsafe {
6070            (windows_core::Interface::vtable(self).AddFavorites)(
6071                windows_core::Interface::as_raw(self),
6072                lpentrylist as _,
6073            )
6074            .ok()
6075        }
6076    }
6077    pub unsafe fn DelFavorites(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()> {
6078        unsafe {
6079            (windows_core::Interface::vtable(self).DelFavorites)(
6080                windows_core::Interface::as_raw(self),
6081                lpentrylist as _,
6082            )
6083            .ok()
6084        }
6085    }
6086}
6087#[repr(C)]
6088#[doc(hidden)]
6089pub struct IExchangeFavorites_Vtbl {
6090    pub base__: windows_core::IUnknown_Vtbl,
6091    pub GetLastError: unsafe extern "system" fn(
6092        *mut core::ffi::c_void,
6093        windows_core::HRESULT,
6094        u32,
6095        *mut *mut MAPIERROR,
6096    ) -> windows_core::HRESULT,
6097    pub AddFavorites: unsafe extern "system" fn(
6098        *mut core::ffi::c_void,
6099        *mut SBinaryArray,
6100    ) -> windows_core::HRESULT,
6101    pub DelFavorites: unsafe extern "system" fn(
6102        *mut core::ffi::c_void,
6103        *mut SBinaryArray,
6104    ) -> windows_core::HRESULT,
6105}
6106pub trait IExchangeFavorites_Impl: windows_core::IUnknownImpl {
6107    fn GetLastError(
6108        &self,
6109        hresult: windows_core::HRESULT,
6110        ulflags: u32,
6111        lppmapierror: *mut *mut MAPIERROR,
6112    ) -> windows_core::Result<()>;
6113    fn AddFavorites(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()>;
6114    fn DelFavorites(&self, lpentrylist: *mut SBinaryArray) -> windows_core::Result<()>;
6115}
6116impl IExchangeFavorites_Vtbl {
6117    pub const fn new<Identity: IExchangeFavorites_Impl, const OFFSET: isize>() -> Self {
6118        unsafe extern "system" fn GetLastError<
6119            Identity: IExchangeFavorites_Impl,
6120            const OFFSET: isize,
6121        >(
6122            this: *mut core::ffi::c_void,
6123            hresult: windows_core::HRESULT,
6124            ulflags: u32,
6125            lppmapierror: *mut *mut MAPIERROR,
6126        ) -> windows_core::HRESULT {
6127            unsafe {
6128                let this: &Identity =
6129                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6130                IExchangeFavorites_Impl::GetLastError(
6131                    this,
6132                    core::mem::transmute_copy(&hresult),
6133                    core::mem::transmute_copy(&ulflags),
6134                    core::mem::transmute_copy(&lppmapierror),
6135                )
6136                .into()
6137            }
6138        }
6139        unsafe extern "system" fn AddFavorites<
6140            Identity: IExchangeFavorites_Impl,
6141            const OFFSET: isize,
6142        >(
6143            this: *mut core::ffi::c_void,
6144            lpentrylist: *mut SBinaryArray,
6145        ) -> windows_core::HRESULT {
6146            unsafe {
6147                let this: &Identity =
6148                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6149                IExchangeFavorites_Impl::AddFavorites(this, core::mem::transmute_copy(&lpentrylist))
6150                    .into()
6151            }
6152        }
6153        unsafe extern "system" fn DelFavorites<
6154            Identity: IExchangeFavorites_Impl,
6155            const OFFSET: isize,
6156        >(
6157            this: *mut core::ffi::c_void,
6158            lpentrylist: *mut SBinaryArray,
6159        ) -> windows_core::HRESULT {
6160            unsafe {
6161                let this: &Identity =
6162                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6163                IExchangeFavorites_Impl::DelFavorites(this, core::mem::transmute_copy(&lpentrylist))
6164                    .into()
6165            }
6166        }
6167        Self {
6168            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6169            GetLastError: GetLastError::<Identity, OFFSET>,
6170            AddFavorites: AddFavorites::<Identity, OFFSET>,
6171            DelFavorites: DelFavorites::<Identity, OFFSET>,
6172        }
6173    }
6174    pub fn matches(iid: &windows_core::GUID) -> bool {
6175        iid == &<IExchangeFavorites as windows_core::Interface>::IID
6176    }
6177}
6178impl windows_core::RuntimeName for IExchangeFavorites {}
6179windows_core::imp::define_interface!(
6180    IExchangeImportContentsChanges,
6181    IExchangeImportContentsChanges_Vtbl,
6182    0xf75abfa0_d0e0_11cd_80fc_00aa004bba0b
6183);
6184windows_core::imp::interface_hierarchy!(IExchangeImportContentsChanges, windows_core::IUnknown);
6185impl IExchangeImportContentsChanges {
6186    pub unsafe fn GetLastError(
6187        &self,
6188        hresult: windows_core::HRESULT,
6189        ulflags: u32,
6190        lppmapierror: *mut *mut MAPIERROR,
6191    ) -> windows_core::Result<()> {
6192        unsafe {
6193            (windows_core::Interface::vtable(self).GetLastError)(
6194                windows_core::Interface::as_raw(self),
6195                hresult,
6196                ulflags,
6197                lppmapierror as _,
6198            )
6199            .ok()
6200        }
6201    }
6202    pub unsafe fn Config<P0>(&self, lpstream: P0, ulflags: u32) -> windows_core::Result<()>
6203    where
6204        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6205    {
6206        unsafe {
6207            (windows_core::Interface::vtable(self).Config)(
6208                windows_core::Interface::as_raw(self),
6209                lpstream.param().abi(),
6210                ulflags,
6211            )
6212            .ok()
6213        }
6214    }
6215    pub unsafe fn UpdateState<P0>(&self, lpstream: P0) -> windows_core::Result<()>
6216    where
6217        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6218    {
6219        unsafe {
6220            (windows_core::Interface::vtable(self).UpdateState)(
6221                windows_core::Interface::as_raw(self),
6222                lpstream.param().abi(),
6223            )
6224            .ok()
6225        }
6226    }
6227    pub unsafe fn ImportMessageChange(
6228        &self,
6229        cpvalchanges: u32,
6230        ppvalchanges: *mut SPropValue,
6231        ulflags: u32,
6232        lppmessage: *mut Option<IMessage>,
6233    ) -> windows_core::Result<()> {
6234        unsafe {
6235            (windows_core::Interface::vtable(self).ImportMessageChange)(
6236                windows_core::Interface::as_raw(self),
6237                cpvalchanges,
6238                ppvalchanges as _,
6239                ulflags,
6240                core::mem::transmute(lppmessage),
6241            )
6242            .ok()
6243        }
6244    }
6245    pub unsafe fn ImportMessageDeletion(
6246        &self,
6247        ulflags: u32,
6248        lpsrcentrylist: *mut SBinaryArray,
6249    ) -> windows_core::Result<()> {
6250        unsafe {
6251            (windows_core::Interface::vtable(self).ImportMessageDeletion)(
6252                windows_core::Interface::as_raw(self),
6253                ulflags,
6254                lpsrcentrylist as _,
6255            )
6256            .ok()
6257        }
6258    }
6259    pub unsafe fn ImportPerUserReadStateChange(
6260        &self,
6261        celements: u32,
6262        lpreadstate: *mut READSTATE,
6263    ) -> windows_core::Result<()> {
6264        unsafe {
6265            (windows_core::Interface::vtable(self).ImportPerUserReadStateChange)(
6266                windows_core::Interface::as_raw(self),
6267                celements,
6268                lpreadstate as _,
6269            )
6270            .ok()
6271        }
6272    }
6273    pub unsafe fn ImportMessageMove(
6274        &self,
6275        cbsourcekeysrcfolder: u32,
6276        pbsourcekeysrcfolder: *mut u8,
6277        cbsourcekeysrcmessage: u32,
6278        pbsourcekeysrcmessage: *mut u8,
6279        cbpclmessage: u32,
6280        pbpclmessage: *mut u8,
6281        cbsourcekeydestmessage: u32,
6282        pbsourcekeydestmessage: *mut u8,
6283        cbchangenumdestmessage: u32,
6284        pbchangenumdestmessage: *mut u8,
6285    ) -> windows_core::Result<()> {
6286        unsafe {
6287            (windows_core::Interface::vtable(self).ImportMessageMove)(
6288                windows_core::Interface::as_raw(self),
6289                cbsourcekeysrcfolder,
6290                pbsourcekeysrcfolder as _,
6291                cbsourcekeysrcmessage,
6292                pbsourcekeysrcmessage as _,
6293                cbpclmessage,
6294                pbpclmessage as _,
6295                cbsourcekeydestmessage,
6296                pbsourcekeydestmessage as _,
6297                cbchangenumdestmessage,
6298                pbchangenumdestmessage as _,
6299            )
6300            .ok()
6301        }
6302    }
6303}
6304#[repr(C)]
6305#[doc(hidden)]
6306pub struct IExchangeImportContentsChanges_Vtbl {
6307    pub base__: windows_core::IUnknown_Vtbl,
6308    pub GetLastError: unsafe extern "system" fn(
6309        *mut core::ffi::c_void,
6310        windows_core::HRESULT,
6311        u32,
6312        *mut *mut MAPIERROR,
6313    ) -> windows_core::HRESULT,
6314    pub Config: unsafe extern "system" fn(
6315        *mut core::ffi::c_void,
6316        *mut core::ffi::c_void,
6317        u32,
6318    ) -> windows_core::HRESULT,
6319    pub UpdateState: unsafe extern "system" fn(
6320        *mut core::ffi::c_void,
6321        *mut core::ffi::c_void,
6322    ) -> windows_core::HRESULT,
6323    pub ImportMessageChange: unsafe extern "system" fn(
6324        *mut core::ffi::c_void,
6325        u32,
6326        *mut SPropValue,
6327        u32,
6328        *mut *mut core::ffi::c_void,
6329    ) -> windows_core::HRESULT,
6330    pub ImportMessageDeletion: unsafe extern "system" fn(
6331        *mut core::ffi::c_void,
6332        u32,
6333        *mut SBinaryArray,
6334    ) -> windows_core::HRESULT,
6335    pub ImportPerUserReadStateChange: unsafe extern "system" fn(
6336        *mut core::ffi::c_void,
6337        u32,
6338        *mut READSTATE,
6339    ) -> windows_core::HRESULT,
6340    pub ImportMessageMove: unsafe extern "system" fn(
6341        *mut core::ffi::c_void,
6342        u32,
6343        *mut u8,
6344        u32,
6345        *mut u8,
6346        u32,
6347        *mut u8,
6348        u32,
6349        *mut u8,
6350        u32,
6351        *mut u8,
6352    ) -> windows_core::HRESULT,
6353}
6354pub trait IExchangeImportContentsChanges_Impl: windows_core::IUnknownImpl {
6355    fn GetLastError(
6356        &self,
6357        hresult: windows_core::HRESULT,
6358        ulflags: u32,
6359        lppmapierror: *mut *mut MAPIERROR,
6360    ) -> windows_core::Result<()>;
6361    fn Config(
6362        &self,
6363        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
6364        ulflags: u32,
6365    ) -> windows_core::Result<()>;
6366    fn UpdateState(
6367        &self,
6368        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
6369    ) -> windows_core::Result<()>;
6370    fn ImportMessageChange(
6371        &self,
6372        cpvalchanges: u32,
6373        ppvalchanges: *mut SPropValue,
6374        ulflags: u32,
6375        lppmessage: windows_core::OutRef<IMessage>,
6376    ) -> windows_core::Result<()>;
6377    fn ImportMessageDeletion(
6378        &self,
6379        ulflags: u32,
6380        lpsrcentrylist: *mut SBinaryArray,
6381    ) -> windows_core::Result<()>;
6382    fn ImportPerUserReadStateChange(
6383        &self,
6384        celements: u32,
6385        lpreadstate: *mut READSTATE,
6386    ) -> windows_core::Result<()>;
6387    fn ImportMessageMove(
6388        &self,
6389        cbsourcekeysrcfolder: u32,
6390        pbsourcekeysrcfolder: *mut u8,
6391        cbsourcekeysrcmessage: u32,
6392        pbsourcekeysrcmessage: *mut u8,
6393        cbpclmessage: u32,
6394        pbpclmessage: *mut u8,
6395        cbsourcekeydestmessage: u32,
6396        pbsourcekeydestmessage: *mut u8,
6397        cbchangenumdestmessage: u32,
6398        pbchangenumdestmessage: *mut u8,
6399    ) -> windows_core::Result<()>;
6400}
6401impl IExchangeImportContentsChanges_Vtbl {
6402    pub const fn new<Identity: IExchangeImportContentsChanges_Impl, const OFFSET: isize>() -> Self {
6403        unsafe extern "system" fn GetLastError<
6404            Identity: IExchangeImportContentsChanges_Impl,
6405            const OFFSET: isize,
6406        >(
6407            this: *mut core::ffi::c_void,
6408            hresult: windows_core::HRESULT,
6409            ulflags: u32,
6410            lppmapierror: *mut *mut MAPIERROR,
6411        ) -> windows_core::HRESULT {
6412            unsafe {
6413                let this: &Identity =
6414                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6415                IExchangeImportContentsChanges_Impl::GetLastError(
6416                    this,
6417                    core::mem::transmute_copy(&hresult),
6418                    core::mem::transmute_copy(&ulflags),
6419                    core::mem::transmute_copy(&lppmapierror),
6420                )
6421                .into()
6422            }
6423        }
6424        unsafe extern "system" fn Config<
6425            Identity: IExchangeImportContentsChanges_Impl,
6426            const OFFSET: isize,
6427        >(
6428            this: *mut core::ffi::c_void,
6429            lpstream: *mut core::ffi::c_void,
6430            ulflags: u32,
6431        ) -> windows_core::HRESULT {
6432            unsafe {
6433                let this: &Identity =
6434                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6435                IExchangeImportContentsChanges_Impl::Config(
6436                    this,
6437                    core::mem::transmute_copy(&lpstream),
6438                    core::mem::transmute_copy(&ulflags),
6439                )
6440                .into()
6441            }
6442        }
6443        unsafe extern "system" fn UpdateState<
6444            Identity: IExchangeImportContentsChanges_Impl,
6445            const OFFSET: isize,
6446        >(
6447            this: *mut core::ffi::c_void,
6448            lpstream: *mut core::ffi::c_void,
6449        ) -> windows_core::HRESULT {
6450            unsafe {
6451                let this: &Identity =
6452                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6453                IExchangeImportContentsChanges_Impl::UpdateState(
6454                    this,
6455                    core::mem::transmute_copy(&lpstream),
6456                )
6457                .into()
6458            }
6459        }
6460        unsafe extern "system" fn ImportMessageChange<
6461            Identity: IExchangeImportContentsChanges_Impl,
6462            const OFFSET: isize,
6463        >(
6464            this: *mut core::ffi::c_void,
6465            cpvalchanges: u32,
6466            ppvalchanges: *mut SPropValue,
6467            ulflags: u32,
6468            lppmessage: *mut *mut core::ffi::c_void,
6469        ) -> windows_core::HRESULT {
6470            unsafe {
6471                let this: &Identity =
6472                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6473                IExchangeImportContentsChanges_Impl::ImportMessageChange(
6474                    this,
6475                    core::mem::transmute_copy(&cpvalchanges),
6476                    core::mem::transmute_copy(&ppvalchanges),
6477                    core::mem::transmute_copy(&ulflags),
6478                    core::mem::transmute_copy(&lppmessage),
6479                )
6480                .into()
6481            }
6482        }
6483        unsafe extern "system" fn ImportMessageDeletion<
6484            Identity: IExchangeImportContentsChanges_Impl,
6485            const OFFSET: isize,
6486        >(
6487            this: *mut core::ffi::c_void,
6488            ulflags: u32,
6489            lpsrcentrylist: *mut SBinaryArray,
6490        ) -> windows_core::HRESULT {
6491            unsafe {
6492                let this: &Identity =
6493                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6494                IExchangeImportContentsChanges_Impl::ImportMessageDeletion(
6495                    this,
6496                    core::mem::transmute_copy(&ulflags),
6497                    core::mem::transmute_copy(&lpsrcentrylist),
6498                )
6499                .into()
6500            }
6501        }
6502        unsafe extern "system" fn ImportPerUserReadStateChange<
6503            Identity: IExchangeImportContentsChanges_Impl,
6504            const OFFSET: isize,
6505        >(
6506            this: *mut core::ffi::c_void,
6507            celements: u32,
6508            lpreadstate: *mut READSTATE,
6509        ) -> windows_core::HRESULT {
6510            unsafe {
6511                let this: &Identity =
6512                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6513                IExchangeImportContentsChanges_Impl::ImportPerUserReadStateChange(
6514                    this,
6515                    core::mem::transmute_copy(&celements),
6516                    core::mem::transmute_copy(&lpreadstate),
6517                )
6518                .into()
6519            }
6520        }
6521        unsafe extern "system" fn ImportMessageMove<
6522            Identity: IExchangeImportContentsChanges_Impl,
6523            const OFFSET: isize,
6524        >(
6525            this: *mut core::ffi::c_void,
6526            cbsourcekeysrcfolder: u32,
6527            pbsourcekeysrcfolder: *mut u8,
6528            cbsourcekeysrcmessage: u32,
6529            pbsourcekeysrcmessage: *mut u8,
6530            cbpclmessage: u32,
6531            pbpclmessage: *mut u8,
6532            cbsourcekeydestmessage: u32,
6533            pbsourcekeydestmessage: *mut u8,
6534            cbchangenumdestmessage: u32,
6535            pbchangenumdestmessage: *mut u8,
6536        ) -> windows_core::HRESULT {
6537            unsafe {
6538                let this: &Identity =
6539                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6540                IExchangeImportContentsChanges_Impl::ImportMessageMove(
6541                    this,
6542                    core::mem::transmute_copy(&cbsourcekeysrcfolder),
6543                    core::mem::transmute_copy(&pbsourcekeysrcfolder),
6544                    core::mem::transmute_copy(&cbsourcekeysrcmessage),
6545                    core::mem::transmute_copy(&pbsourcekeysrcmessage),
6546                    core::mem::transmute_copy(&cbpclmessage),
6547                    core::mem::transmute_copy(&pbpclmessage),
6548                    core::mem::transmute_copy(&cbsourcekeydestmessage),
6549                    core::mem::transmute_copy(&pbsourcekeydestmessage),
6550                    core::mem::transmute_copy(&cbchangenumdestmessage),
6551                    core::mem::transmute_copy(&pbchangenumdestmessage),
6552                )
6553                .into()
6554            }
6555        }
6556        Self {
6557            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6558            GetLastError: GetLastError::<Identity, OFFSET>,
6559            Config: Config::<Identity, OFFSET>,
6560            UpdateState: UpdateState::<Identity, OFFSET>,
6561            ImportMessageChange: ImportMessageChange::<Identity, OFFSET>,
6562            ImportMessageDeletion: ImportMessageDeletion::<Identity, OFFSET>,
6563            ImportPerUserReadStateChange: ImportPerUserReadStateChange::<Identity, OFFSET>,
6564            ImportMessageMove: ImportMessageMove::<Identity, OFFSET>,
6565        }
6566    }
6567    pub fn matches(iid: &windows_core::GUID) -> bool {
6568        iid == &<IExchangeImportContentsChanges as windows_core::Interface>::IID
6569    }
6570}
6571impl windows_core::RuntimeName for IExchangeImportContentsChanges {}
6572windows_core::imp::define_interface!(
6573    IExchangeImportContentsChanges2,
6574    IExchangeImportContentsChanges2_Vtbl,
6575    0x7dfdd720_f53f_11cf_a48f_00c04fd65595
6576);
6577impl core::ops::Deref for IExchangeImportContentsChanges2 {
6578    type Target = IExchangeImportContentsChanges;
6579    fn deref(&self) -> &Self::Target {
6580        unsafe { core::mem::transmute(self) }
6581    }
6582}
6583windows_core::imp::interface_hierarchy!(
6584    IExchangeImportContentsChanges2,
6585    windows_core::IUnknown,
6586    IExchangeImportContentsChanges
6587);
6588impl IExchangeImportContentsChanges2 {
6589    pub unsafe fn ConfigForConversionStream<P0>(
6590        &self,
6591        lpstream: P0,
6592        ulflags: u32,
6593        cvaluesconversion: u32,
6594        lpproparrayconversion: *mut SPropValue,
6595    ) -> windows_core::Result<()>
6596    where
6597        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6598    {
6599        unsafe {
6600            (windows_core::Interface::vtable(self).ConfigForConversionStream)(
6601                windows_core::Interface::as_raw(self),
6602                lpstream.param().abi(),
6603                ulflags,
6604                cvaluesconversion,
6605                lpproparrayconversion as _,
6606            )
6607            .ok()
6608        }
6609    }
6610    pub unsafe fn ImportMessageChangeAsAStream(
6611        &self,
6612        cpvalchanges: u32,
6613        ppvalchanges: *mut SPropValue,
6614        ulflags: u32,
6615        lppstream: *mut Option<windows::Win32::System::Com::IStream>,
6616    ) -> windows_core::Result<()> {
6617        unsafe {
6618            (windows_core::Interface::vtable(self).ImportMessageChangeAsAStream)(
6619                windows_core::Interface::as_raw(self),
6620                cpvalchanges,
6621                ppvalchanges as _,
6622                ulflags,
6623                core::mem::transmute(lppstream),
6624            )
6625            .ok()
6626        }
6627    }
6628}
6629#[repr(C)]
6630#[doc(hidden)]
6631pub struct IExchangeImportContentsChanges2_Vtbl {
6632    pub base__: IExchangeImportContentsChanges_Vtbl,
6633    pub ConfigForConversionStream: unsafe extern "system" fn(
6634        *mut core::ffi::c_void,
6635        *mut core::ffi::c_void,
6636        u32,
6637        u32,
6638        *mut SPropValue,
6639    ) -> windows_core::HRESULT,
6640    pub ImportMessageChangeAsAStream: unsafe extern "system" fn(
6641        *mut core::ffi::c_void,
6642        u32,
6643        *mut SPropValue,
6644        u32,
6645        *mut *mut core::ffi::c_void,
6646    ) -> windows_core::HRESULT,
6647}
6648pub trait IExchangeImportContentsChanges2_Impl: IExchangeImportContentsChanges_Impl {
6649    fn ConfigForConversionStream(
6650        &self,
6651        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
6652        ulflags: u32,
6653        cvaluesconversion: u32,
6654        lpproparrayconversion: *mut SPropValue,
6655    ) -> windows_core::Result<()>;
6656    fn ImportMessageChangeAsAStream(
6657        &self,
6658        cpvalchanges: u32,
6659        ppvalchanges: *mut SPropValue,
6660        ulflags: u32,
6661        lppstream: windows_core::OutRef<windows::Win32::System::Com::IStream>,
6662    ) -> windows_core::Result<()>;
6663}
6664impl IExchangeImportContentsChanges2_Vtbl {
6665    pub const fn new<Identity: IExchangeImportContentsChanges2_Impl, const OFFSET: isize>() -> Self
6666    {
6667        unsafe extern "system" fn ConfigForConversionStream<
6668            Identity: IExchangeImportContentsChanges2_Impl,
6669            const OFFSET: isize,
6670        >(
6671            this: *mut core::ffi::c_void,
6672            lpstream: *mut core::ffi::c_void,
6673            ulflags: u32,
6674            cvaluesconversion: u32,
6675            lpproparrayconversion: *mut SPropValue,
6676        ) -> windows_core::HRESULT {
6677            unsafe {
6678                let this: &Identity =
6679                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6680                IExchangeImportContentsChanges2_Impl::ConfigForConversionStream(
6681                    this,
6682                    core::mem::transmute_copy(&lpstream),
6683                    core::mem::transmute_copy(&ulflags),
6684                    core::mem::transmute_copy(&cvaluesconversion),
6685                    core::mem::transmute_copy(&lpproparrayconversion),
6686                )
6687                .into()
6688            }
6689        }
6690        unsafe extern "system" fn ImportMessageChangeAsAStream<
6691            Identity: IExchangeImportContentsChanges2_Impl,
6692            const OFFSET: isize,
6693        >(
6694            this: *mut core::ffi::c_void,
6695            cpvalchanges: u32,
6696            ppvalchanges: *mut SPropValue,
6697            ulflags: u32,
6698            lppstream: *mut *mut core::ffi::c_void,
6699        ) -> windows_core::HRESULT {
6700            unsafe {
6701                let this: &Identity =
6702                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6703                IExchangeImportContentsChanges2_Impl::ImportMessageChangeAsAStream(
6704                    this,
6705                    core::mem::transmute_copy(&cpvalchanges),
6706                    core::mem::transmute_copy(&ppvalchanges),
6707                    core::mem::transmute_copy(&ulflags),
6708                    core::mem::transmute_copy(&lppstream),
6709                )
6710                .into()
6711            }
6712        }
6713        Self {
6714            base__: IExchangeImportContentsChanges_Vtbl::new::<Identity, OFFSET>(),
6715            ConfigForConversionStream: ConfigForConversionStream::<Identity, OFFSET>,
6716            ImportMessageChangeAsAStream: ImportMessageChangeAsAStream::<Identity, OFFSET>,
6717        }
6718    }
6719    pub fn matches(iid: &windows_core::GUID) -> bool {
6720        iid == &<IExchangeImportContentsChanges2 as windows_core::Interface>::IID
6721            || iid == &<IExchangeImportContentsChanges as windows_core::Interface>::IID
6722    }
6723}
6724impl windows_core::RuntimeName for IExchangeImportContentsChanges2 {}
6725windows_core::imp::define_interface!(
6726    IExchangeImportHierarchyChanges,
6727    IExchangeImportHierarchyChanges_Vtbl,
6728    0x85a66cf0_d0e0_11cd_80fc_00aa004bba0b
6729);
6730windows_core::imp::interface_hierarchy!(IExchangeImportHierarchyChanges, windows_core::IUnknown);
6731impl IExchangeImportHierarchyChanges {
6732    pub unsafe fn GetLastError(
6733        &self,
6734        hresult: windows_core::HRESULT,
6735        ulflags: u32,
6736        lppmapierror: *mut *mut MAPIERROR,
6737    ) -> windows_core::Result<()> {
6738        unsafe {
6739            (windows_core::Interface::vtable(self).GetLastError)(
6740                windows_core::Interface::as_raw(self),
6741                hresult,
6742                ulflags,
6743                lppmapierror as _,
6744            )
6745            .ok()
6746        }
6747    }
6748    pub unsafe fn Config<P0>(&self, lpstream: P0, ulflags: u32) -> windows_core::Result<()>
6749    where
6750        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6751    {
6752        unsafe {
6753            (windows_core::Interface::vtable(self).Config)(
6754                windows_core::Interface::as_raw(self),
6755                lpstream.param().abi(),
6756                ulflags,
6757            )
6758            .ok()
6759        }
6760    }
6761    pub unsafe fn UpdateState<P0>(&self, lpstream: P0) -> windows_core::Result<()>
6762    where
6763        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
6764    {
6765        unsafe {
6766            (windows_core::Interface::vtable(self).UpdateState)(
6767                windows_core::Interface::as_raw(self),
6768                lpstream.param().abi(),
6769            )
6770            .ok()
6771        }
6772    }
6773    pub unsafe fn ImportFolderChange(
6774        &self,
6775        cpvalchanges: u32,
6776        ppvalchanges: *mut SPropValue,
6777    ) -> windows_core::Result<()> {
6778        unsafe {
6779            (windows_core::Interface::vtable(self).ImportFolderChange)(
6780                windows_core::Interface::as_raw(self),
6781                cpvalchanges,
6782                ppvalchanges as _,
6783            )
6784            .ok()
6785        }
6786    }
6787    pub unsafe fn ImportFolderDeletion(
6788        &self,
6789        ulflags: u32,
6790        lpsrcentrylist: *mut SBinaryArray,
6791    ) -> windows_core::Result<()> {
6792        unsafe {
6793            (windows_core::Interface::vtable(self).ImportFolderDeletion)(
6794                windows_core::Interface::as_raw(self),
6795                ulflags,
6796                lpsrcentrylist as _,
6797            )
6798            .ok()
6799        }
6800    }
6801}
6802#[repr(C)]
6803#[doc(hidden)]
6804pub struct IExchangeImportHierarchyChanges_Vtbl {
6805    pub base__: windows_core::IUnknown_Vtbl,
6806    pub GetLastError: unsafe extern "system" fn(
6807        *mut core::ffi::c_void,
6808        windows_core::HRESULT,
6809        u32,
6810        *mut *mut MAPIERROR,
6811    ) -> windows_core::HRESULT,
6812    pub Config: unsafe extern "system" fn(
6813        *mut core::ffi::c_void,
6814        *mut core::ffi::c_void,
6815        u32,
6816    ) -> windows_core::HRESULT,
6817    pub UpdateState: unsafe extern "system" fn(
6818        *mut core::ffi::c_void,
6819        *mut core::ffi::c_void,
6820    ) -> windows_core::HRESULT,
6821    pub ImportFolderChange: unsafe extern "system" fn(
6822        *mut core::ffi::c_void,
6823        u32,
6824        *mut SPropValue,
6825    ) -> windows_core::HRESULT,
6826    pub ImportFolderDeletion: unsafe extern "system" fn(
6827        *mut core::ffi::c_void,
6828        u32,
6829        *mut SBinaryArray,
6830    ) -> windows_core::HRESULT,
6831}
6832pub trait IExchangeImportHierarchyChanges_Impl: windows_core::IUnknownImpl {
6833    fn GetLastError(
6834        &self,
6835        hresult: windows_core::HRESULT,
6836        ulflags: u32,
6837        lppmapierror: *mut *mut MAPIERROR,
6838    ) -> windows_core::Result<()>;
6839    fn Config(
6840        &self,
6841        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
6842        ulflags: u32,
6843    ) -> windows_core::Result<()>;
6844    fn UpdateState(
6845        &self,
6846        lpstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
6847    ) -> windows_core::Result<()>;
6848    fn ImportFolderChange(
6849        &self,
6850        cpvalchanges: u32,
6851        ppvalchanges: *mut SPropValue,
6852    ) -> windows_core::Result<()>;
6853    fn ImportFolderDeletion(
6854        &self,
6855        ulflags: u32,
6856        lpsrcentrylist: *mut SBinaryArray,
6857    ) -> windows_core::Result<()>;
6858}
6859impl IExchangeImportHierarchyChanges_Vtbl {
6860    pub const fn new<Identity: IExchangeImportHierarchyChanges_Impl, const OFFSET: isize>() -> Self
6861    {
6862        unsafe extern "system" fn GetLastError<
6863            Identity: IExchangeImportHierarchyChanges_Impl,
6864            const OFFSET: isize,
6865        >(
6866            this: *mut core::ffi::c_void,
6867            hresult: windows_core::HRESULT,
6868            ulflags: u32,
6869            lppmapierror: *mut *mut MAPIERROR,
6870        ) -> windows_core::HRESULT {
6871            unsafe {
6872                let this: &Identity =
6873                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6874                IExchangeImportHierarchyChanges_Impl::GetLastError(
6875                    this,
6876                    core::mem::transmute_copy(&hresult),
6877                    core::mem::transmute_copy(&ulflags),
6878                    core::mem::transmute_copy(&lppmapierror),
6879                )
6880                .into()
6881            }
6882        }
6883        unsafe extern "system" fn Config<
6884            Identity: IExchangeImportHierarchyChanges_Impl,
6885            const OFFSET: isize,
6886        >(
6887            this: *mut core::ffi::c_void,
6888            lpstream: *mut core::ffi::c_void,
6889            ulflags: u32,
6890        ) -> windows_core::HRESULT {
6891            unsafe {
6892                let this: &Identity =
6893                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6894                IExchangeImportHierarchyChanges_Impl::Config(
6895                    this,
6896                    core::mem::transmute_copy(&lpstream),
6897                    core::mem::transmute_copy(&ulflags),
6898                )
6899                .into()
6900            }
6901        }
6902        unsafe extern "system" fn UpdateState<
6903            Identity: IExchangeImportHierarchyChanges_Impl,
6904            const OFFSET: isize,
6905        >(
6906            this: *mut core::ffi::c_void,
6907            lpstream: *mut core::ffi::c_void,
6908        ) -> windows_core::HRESULT {
6909            unsafe {
6910                let this: &Identity =
6911                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6912                IExchangeImportHierarchyChanges_Impl::UpdateState(
6913                    this,
6914                    core::mem::transmute_copy(&lpstream),
6915                )
6916                .into()
6917            }
6918        }
6919        unsafe extern "system" fn ImportFolderChange<
6920            Identity: IExchangeImportHierarchyChanges_Impl,
6921            const OFFSET: isize,
6922        >(
6923            this: *mut core::ffi::c_void,
6924            cpvalchanges: u32,
6925            ppvalchanges: *mut SPropValue,
6926        ) -> windows_core::HRESULT {
6927            unsafe {
6928                let this: &Identity =
6929                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6930                IExchangeImportHierarchyChanges_Impl::ImportFolderChange(
6931                    this,
6932                    core::mem::transmute_copy(&cpvalchanges),
6933                    core::mem::transmute_copy(&ppvalchanges),
6934                )
6935                .into()
6936            }
6937        }
6938        unsafe extern "system" fn ImportFolderDeletion<
6939            Identity: IExchangeImportHierarchyChanges_Impl,
6940            const OFFSET: isize,
6941        >(
6942            this: *mut core::ffi::c_void,
6943            ulflags: u32,
6944            lpsrcentrylist: *mut SBinaryArray,
6945        ) -> windows_core::HRESULT {
6946            unsafe {
6947                let this: &Identity =
6948                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
6949                IExchangeImportHierarchyChanges_Impl::ImportFolderDeletion(
6950                    this,
6951                    core::mem::transmute_copy(&ulflags),
6952                    core::mem::transmute_copy(&lpsrcentrylist),
6953                )
6954                .into()
6955            }
6956        }
6957        Self {
6958            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
6959            GetLastError: GetLastError::<Identity, OFFSET>,
6960            Config: Config::<Identity, OFFSET>,
6961            UpdateState: UpdateState::<Identity, OFFSET>,
6962            ImportFolderChange: ImportFolderChange::<Identity, OFFSET>,
6963            ImportFolderDeletion: ImportFolderDeletion::<Identity, OFFSET>,
6964        }
6965    }
6966    pub fn matches(iid: &windows_core::GUID) -> bool {
6967        iid == &<IExchangeImportHierarchyChanges as windows_core::Interface>::IID
6968    }
6969}
6970impl windows_core::RuntimeName for IExchangeImportHierarchyChanges {}
6971windows_core::imp::define_interface!(
6972    IExchangeManageStore,
6973    IExchangeManageStore_Vtbl,
6974    0x559d10b0_a772_11cd_9bc8_00aa002fc45a
6975);
6976windows_core::imp::interface_hierarchy!(IExchangeManageStore, windows_core::IUnknown);
6977impl IExchangeManageStore {
6978    pub unsafe fn CreateStoreEntryID<P0, P1>(
6979        &self,
6980        lpszmsgstoredn: P0,
6981        lpszmailboxdn: P1,
6982        ulflags: u32,
6983        lpcbentryid: *mut u32,
6984        lppentryid: *mut *mut ENTRYID,
6985    ) -> windows_core::Result<()>
6986    where
6987        P0: windows_core::Param<windows_core::PCSTR>,
6988        P1: windows_core::Param<windows_core::PCSTR>,
6989    {
6990        unsafe {
6991            (windows_core::Interface::vtable(self).CreateStoreEntryID)(
6992                windows_core::Interface::as_raw(self),
6993                lpszmsgstoredn.param().abi(),
6994                lpszmailboxdn.param().abi(),
6995                ulflags,
6996                lpcbentryid as _,
6997                lppentryid as _,
6998            )
6999            .ok()
7000        }
7001    }
7002    pub unsafe fn EntryIDFromSourceKey(
7003        &self,
7004        cfolderkeysize: u32,
7005        lpfoldersourcekey: *mut u8,
7006        cmessagekeysize: u32,
7007        lpmessagesourcekey: *mut u8,
7008        lpcbentryid: *mut u32,
7009        lppentryid: *mut *mut ENTRYID,
7010    ) -> windows_core::Result<()> {
7011        unsafe {
7012            (windows_core::Interface::vtable(self).EntryIDFromSourceKey)(
7013                windows_core::Interface::as_raw(self),
7014                cfolderkeysize,
7015                lpfoldersourcekey as _,
7016                cmessagekeysize,
7017                lpmessagesourcekey as _,
7018                lpcbentryid as _,
7019                lppentryid as _,
7020            )
7021            .ok()
7022        }
7023    }
7024    pub unsafe fn GetRights(
7025        &self,
7026        cbuserentryid: u32,
7027        lpuserentryid: *mut ENTRYID,
7028        cbentryid: u32,
7029        lpentryid: *mut ENTRYID,
7030        lpulrights: *mut u32,
7031    ) -> windows_core::Result<()> {
7032        unsafe {
7033            (windows_core::Interface::vtable(self).GetRights)(
7034                windows_core::Interface::as_raw(self),
7035                cbuserentryid,
7036                lpuserentryid as _,
7037                cbentryid,
7038                lpentryid as _,
7039                lpulrights as _,
7040            )
7041            .ok()
7042        }
7043    }
7044    pub unsafe fn GetMailboxTable<P0>(
7045        &self,
7046        lpszservername: P0,
7047        lpptable: *mut Option<IMAPITable>,
7048        ulflags: u32,
7049    ) -> windows_core::Result<()>
7050    where
7051        P0: windows_core::Param<windows_core::PCSTR>,
7052    {
7053        unsafe {
7054            (windows_core::Interface::vtable(self).GetMailboxTable)(
7055                windows_core::Interface::as_raw(self),
7056                lpszservername.param().abi(),
7057                core::mem::transmute(lpptable),
7058                ulflags,
7059            )
7060            .ok()
7061        }
7062    }
7063    pub unsafe fn GetPublicFolderTable<P0>(
7064        &self,
7065        lpszservername: P0,
7066        lpptable: *mut Option<IMAPITable>,
7067        ulflags: u32,
7068    ) -> windows_core::Result<()>
7069    where
7070        P0: windows_core::Param<windows_core::PCSTR>,
7071    {
7072        unsafe {
7073            (windows_core::Interface::vtable(self).GetPublicFolderTable)(
7074                windows_core::Interface::as_raw(self),
7075                lpszservername.param().abi(),
7076                core::mem::transmute(lpptable),
7077                ulflags,
7078            )
7079            .ok()
7080        }
7081    }
7082}
7083#[repr(C)]
7084#[doc(hidden)]
7085pub struct IExchangeManageStore_Vtbl {
7086    pub base__: windows_core::IUnknown_Vtbl,
7087    pub CreateStoreEntryID: unsafe extern "system" fn(
7088        *mut core::ffi::c_void,
7089        windows_core::PCSTR,
7090        windows_core::PCSTR,
7091        u32,
7092        *mut u32,
7093        *mut *mut ENTRYID,
7094    ) -> windows_core::HRESULT,
7095    pub EntryIDFromSourceKey: unsafe extern "system" fn(
7096        *mut core::ffi::c_void,
7097        u32,
7098        *mut u8,
7099        u32,
7100        *mut u8,
7101        *mut u32,
7102        *mut *mut ENTRYID,
7103    ) -> windows_core::HRESULT,
7104    pub GetRights: unsafe extern "system" fn(
7105        *mut core::ffi::c_void,
7106        u32,
7107        *mut ENTRYID,
7108        u32,
7109        *mut ENTRYID,
7110        *mut u32,
7111    ) -> windows_core::HRESULT,
7112    pub GetMailboxTable: unsafe extern "system" fn(
7113        *mut core::ffi::c_void,
7114        windows_core::PCSTR,
7115        *mut *mut core::ffi::c_void,
7116        u32,
7117    ) -> windows_core::HRESULT,
7118    pub GetPublicFolderTable: unsafe extern "system" fn(
7119        *mut core::ffi::c_void,
7120        windows_core::PCSTR,
7121        *mut *mut core::ffi::c_void,
7122        u32,
7123    ) -> windows_core::HRESULT,
7124}
7125pub trait IExchangeManageStore_Impl: windows_core::IUnknownImpl {
7126    fn CreateStoreEntryID(
7127        &self,
7128        lpszmsgstoredn: &windows_core::PCSTR,
7129        lpszmailboxdn: &windows_core::PCSTR,
7130        ulflags: u32,
7131        lpcbentryid: *mut u32,
7132        lppentryid: *mut *mut ENTRYID,
7133    ) -> windows_core::Result<()>;
7134    fn EntryIDFromSourceKey(
7135        &self,
7136        cfolderkeysize: u32,
7137        lpfoldersourcekey: *mut u8,
7138        cmessagekeysize: u32,
7139        lpmessagesourcekey: *mut u8,
7140        lpcbentryid: *mut u32,
7141        lppentryid: *mut *mut ENTRYID,
7142    ) -> windows_core::Result<()>;
7143    fn GetRights(
7144        &self,
7145        cbuserentryid: u32,
7146        lpuserentryid: *mut ENTRYID,
7147        cbentryid: u32,
7148        lpentryid: *mut ENTRYID,
7149        lpulrights: *mut u32,
7150    ) -> windows_core::Result<()>;
7151    fn GetMailboxTable(
7152        &self,
7153        lpszservername: &windows_core::PCSTR,
7154        lpptable: windows_core::OutRef<IMAPITable>,
7155        ulflags: u32,
7156    ) -> windows_core::Result<()>;
7157    fn GetPublicFolderTable(
7158        &self,
7159        lpszservername: &windows_core::PCSTR,
7160        lpptable: windows_core::OutRef<IMAPITable>,
7161        ulflags: u32,
7162    ) -> windows_core::Result<()>;
7163}
7164impl IExchangeManageStore_Vtbl {
7165    pub const fn new<Identity: IExchangeManageStore_Impl, const OFFSET: isize>() -> Self {
7166        unsafe extern "system" fn CreateStoreEntryID<
7167            Identity: IExchangeManageStore_Impl,
7168            const OFFSET: isize,
7169        >(
7170            this: *mut core::ffi::c_void,
7171            lpszmsgstoredn: windows_core::PCSTR,
7172            lpszmailboxdn: windows_core::PCSTR,
7173            ulflags: u32,
7174            lpcbentryid: *mut u32,
7175            lppentryid: *mut *mut ENTRYID,
7176        ) -> windows_core::HRESULT {
7177            unsafe {
7178                let this: &Identity =
7179                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7180                IExchangeManageStore_Impl::CreateStoreEntryID(
7181                    this,
7182                    core::mem::transmute(&lpszmsgstoredn),
7183                    core::mem::transmute(&lpszmailboxdn),
7184                    core::mem::transmute_copy(&ulflags),
7185                    core::mem::transmute_copy(&lpcbentryid),
7186                    core::mem::transmute_copy(&lppentryid),
7187                )
7188                .into()
7189            }
7190        }
7191        unsafe extern "system" fn EntryIDFromSourceKey<
7192            Identity: IExchangeManageStore_Impl,
7193            const OFFSET: isize,
7194        >(
7195            this: *mut core::ffi::c_void,
7196            cfolderkeysize: u32,
7197            lpfoldersourcekey: *mut u8,
7198            cmessagekeysize: u32,
7199            lpmessagesourcekey: *mut u8,
7200            lpcbentryid: *mut u32,
7201            lppentryid: *mut *mut ENTRYID,
7202        ) -> windows_core::HRESULT {
7203            unsafe {
7204                let this: &Identity =
7205                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7206                IExchangeManageStore_Impl::EntryIDFromSourceKey(
7207                    this,
7208                    core::mem::transmute_copy(&cfolderkeysize),
7209                    core::mem::transmute_copy(&lpfoldersourcekey),
7210                    core::mem::transmute_copy(&cmessagekeysize),
7211                    core::mem::transmute_copy(&lpmessagesourcekey),
7212                    core::mem::transmute_copy(&lpcbentryid),
7213                    core::mem::transmute_copy(&lppentryid),
7214                )
7215                .into()
7216            }
7217        }
7218        unsafe extern "system" fn GetRights<
7219            Identity: IExchangeManageStore_Impl,
7220            const OFFSET: isize,
7221        >(
7222            this: *mut core::ffi::c_void,
7223            cbuserentryid: u32,
7224            lpuserentryid: *mut ENTRYID,
7225            cbentryid: u32,
7226            lpentryid: *mut ENTRYID,
7227            lpulrights: *mut u32,
7228        ) -> windows_core::HRESULT {
7229            unsafe {
7230                let this: &Identity =
7231                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7232                IExchangeManageStore_Impl::GetRights(
7233                    this,
7234                    core::mem::transmute_copy(&cbuserentryid),
7235                    core::mem::transmute_copy(&lpuserentryid),
7236                    core::mem::transmute_copy(&cbentryid),
7237                    core::mem::transmute_copy(&lpentryid),
7238                    core::mem::transmute_copy(&lpulrights),
7239                )
7240                .into()
7241            }
7242        }
7243        unsafe extern "system" fn GetMailboxTable<
7244            Identity: IExchangeManageStore_Impl,
7245            const OFFSET: isize,
7246        >(
7247            this: *mut core::ffi::c_void,
7248            lpszservername: windows_core::PCSTR,
7249            lpptable: *mut *mut core::ffi::c_void,
7250            ulflags: u32,
7251        ) -> windows_core::HRESULT {
7252            unsafe {
7253                let this: &Identity =
7254                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7255                IExchangeManageStore_Impl::GetMailboxTable(
7256                    this,
7257                    core::mem::transmute(&lpszservername),
7258                    core::mem::transmute_copy(&lpptable),
7259                    core::mem::transmute_copy(&ulflags),
7260                )
7261                .into()
7262            }
7263        }
7264        unsafe extern "system" fn GetPublicFolderTable<
7265            Identity: IExchangeManageStore_Impl,
7266            const OFFSET: isize,
7267        >(
7268            this: *mut core::ffi::c_void,
7269            lpszservername: windows_core::PCSTR,
7270            lpptable: *mut *mut core::ffi::c_void,
7271            ulflags: u32,
7272        ) -> windows_core::HRESULT {
7273            unsafe {
7274                let this: &Identity =
7275                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7276                IExchangeManageStore_Impl::GetPublicFolderTable(
7277                    this,
7278                    core::mem::transmute(&lpszservername),
7279                    core::mem::transmute_copy(&lpptable),
7280                    core::mem::transmute_copy(&ulflags),
7281                )
7282                .into()
7283            }
7284        }
7285        Self {
7286            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7287            CreateStoreEntryID: CreateStoreEntryID::<Identity, OFFSET>,
7288            EntryIDFromSourceKey: EntryIDFromSourceKey::<Identity, OFFSET>,
7289            GetRights: GetRights::<Identity, OFFSET>,
7290            GetMailboxTable: GetMailboxTable::<Identity, OFFSET>,
7291            GetPublicFolderTable: GetPublicFolderTable::<Identity, OFFSET>,
7292        }
7293    }
7294    pub fn matches(iid: &windows_core::GUID) -> bool {
7295        iid == &<IExchangeManageStore as windows_core::Interface>::IID
7296    }
7297}
7298impl windows_core::RuntimeName for IExchangeManageStore {}
7299windows_core::imp::define_interface!(
7300    IExchangeManageStore2,
7301    IExchangeManageStore2_Vtbl,
7302    0xb6dca470_0ff3_11d0_a409_00c04fd7bd87
7303);
7304windows_core::imp::interface_hierarchy!(IExchangeManageStore2, windows_core::IUnknown);
7305impl IExchangeManageStore2 {
7306    pub unsafe fn CreateStoreEntryID<P0, P1>(
7307        &self,
7308        lpszmsgstoredn: P0,
7309        lpszmailboxdn: P1,
7310        ulflags: u32,
7311        lpcbentryid: *mut u32,
7312        lppentryid: *mut *mut ENTRYID,
7313    ) -> windows_core::Result<()>
7314    where
7315        P0: windows_core::Param<windows_core::PCSTR>,
7316        P1: windows_core::Param<windows_core::PCSTR>,
7317    {
7318        unsafe {
7319            (windows_core::Interface::vtable(self).CreateStoreEntryID)(
7320                windows_core::Interface::as_raw(self),
7321                lpszmsgstoredn.param().abi(),
7322                lpszmailboxdn.param().abi(),
7323                ulflags,
7324                lpcbentryid as _,
7325                lppentryid as _,
7326            )
7327            .ok()
7328        }
7329    }
7330    pub unsafe fn EntryIDFromSourceKey(
7331        &self,
7332        cfolderkeysize: u32,
7333        lpfoldersourcekey: *mut u8,
7334        cmessagekeysize: u32,
7335        lpmessagesourcekey: *mut u8,
7336        lpcbentryid: *mut u32,
7337        lppentryid: *mut *mut ENTRYID,
7338    ) -> windows_core::Result<()> {
7339        unsafe {
7340            (windows_core::Interface::vtable(self).EntryIDFromSourceKey)(
7341                windows_core::Interface::as_raw(self),
7342                cfolderkeysize,
7343                lpfoldersourcekey as _,
7344                cmessagekeysize,
7345                lpmessagesourcekey as _,
7346                lpcbentryid as _,
7347                lppentryid as _,
7348            )
7349            .ok()
7350        }
7351    }
7352    pub unsafe fn GetRights(
7353        &self,
7354        cbuserentryid: u32,
7355        lpuserentryid: *mut ENTRYID,
7356        cbentryid: u32,
7357        lpentryid: *mut ENTRYID,
7358        lpulrights: *mut u32,
7359    ) -> windows_core::Result<()> {
7360        unsafe {
7361            (windows_core::Interface::vtable(self).GetRights)(
7362                windows_core::Interface::as_raw(self),
7363                cbuserentryid,
7364                lpuserentryid as _,
7365                cbentryid,
7366                lpentryid as _,
7367                lpulrights as _,
7368            )
7369            .ok()
7370        }
7371    }
7372    pub unsafe fn GetMailboxTable<P0>(
7373        &self,
7374        lpszservername: P0,
7375        lpptable: *mut Option<IMAPITable>,
7376        ulflags: u32,
7377    ) -> windows_core::Result<()>
7378    where
7379        P0: windows_core::Param<windows_core::PCSTR>,
7380    {
7381        unsafe {
7382            (windows_core::Interface::vtable(self).GetMailboxTable)(
7383                windows_core::Interface::as_raw(self),
7384                lpszservername.param().abi(),
7385                core::mem::transmute(lpptable),
7386                ulflags,
7387            )
7388            .ok()
7389        }
7390    }
7391    pub unsafe fn GetPublicFolderTable<P0>(
7392        &self,
7393        lpszservername: P0,
7394        lpptable: *mut Option<IMAPITable>,
7395        ulflags: u32,
7396    ) -> windows_core::Result<()>
7397    where
7398        P0: windows_core::Param<windows_core::PCSTR>,
7399    {
7400        unsafe {
7401            (windows_core::Interface::vtable(self).GetPublicFolderTable)(
7402                windows_core::Interface::as_raw(self),
7403                lpszservername.param().abi(),
7404                core::mem::transmute(lpptable),
7405                ulflags,
7406            )
7407            .ok()
7408        }
7409    }
7410    pub unsafe fn CreateNewsgroupNameEntryID<P0>(
7411        &self,
7412        lpsznewsgroupname: P0,
7413        lpcbentryid: *mut u32,
7414        lppentryid: *mut *mut ENTRYID,
7415    ) -> windows_core::Result<()>
7416    where
7417        P0: windows_core::Param<windows_core::PCSTR>,
7418    {
7419        unsafe {
7420            (windows_core::Interface::vtable(self).CreateNewsgroupNameEntryID)(
7421                windows_core::Interface::as_raw(self),
7422                lpsznewsgroupname.param().abi(),
7423                lpcbentryid as _,
7424                lppentryid as _,
7425            )
7426            .ok()
7427        }
7428    }
7429}
7430#[repr(C)]
7431#[doc(hidden)]
7432pub struct IExchangeManageStore2_Vtbl {
7433    pub base__: windows_core::IUnknown_Vtbl,
7434    pub CreateStoreEntryID: unsafe extern "system" fn(
7435        *mut core::ffi::c_void,
7436        windows_core::PCSTR,
7437        windows_core::PCSTR,
7438        u32,
7439        *mut u32,
7440        *mut *mut ENTRYID,
7441    ) -> windows_core::HRESULT,
7442    pub EntryIDFromSourceKey: unsafe extern "system" fn(
7443        *mut core::ffi::c_void,
7444        u32,
7445        *mut u8,
7446        u32,
7447        *mut u8,
7448        *mut u32,
7449        *mut *mut ENTRYID,
7450    ) -> windows_core::HRESULT,
7451    pub GetRights: unsafe extern "system" fn(
7452        *mut core::ffi::c_void,
7453        u32,
7454        *mut ENTRYID,
7455        u32,
7456        *mut ENTRYID,
7457        *mut u32,
7458    ) -> windows_core::HRESULT,
7459    pub GetMailboxTable: unsafe extern "system" fn(
7460        *mut core::ffi::c_void,
7461        windows_core::PCSTR,
7462        *mut *mut core::ffi::c_void,
7463        u32,
7464    ) -> windows_core::HRESULT,
7465    pub GetPublicFolderTable: unsafe extern "system" fn(
7466        *mut core::ffi::c_void,
7467        windows_core::PCSTR,
7468        *mut *mut core::ffi::c_void,
7469        u32,
7470    ) -> windows_core::HRESULT,
7471    pub CreateNewsgroupNameEntryID: unsafe extern "system" fn(
7472        *mut core::ffi::c_void,
7473        windows_core::PCSTR,
7474        *mut u32,
7475        *mut *mut ENTRYID,
7476    ) -> windows_core::HRESULT,
7477}
7478pub trait IExchangeManageStore2_Impl: windows_core::IUnknownImpl {
7479    fn CreateStoreEntryID(
7480        &self,
7481        lpszmsgstoredn: &windows_core::PCSTR,
7482        lpszmailboxdn: &windows_core::PCSTR,
7483        ulflags: u32,
7484        lpcbentryid: *mut u32,
7485        lppentryid: *mut *mut ENTRYID,
7486    ) -> windows_core::Result<()>;
7487    fn EntryIDFromSourceKey(
7488        &self,
7489        cfolderkeysize: u32,
7490        lpfoldersourcekey: *mut u8,
7491        cmessagekeysize: u32,
7492        lpmessagesourcekey: *mut u8,
7493        lpcbentryid: *mut u32,
7494        lppentryid: *mut *mut ENTRYID,
7495    ) -> windows_core::Result<()>;
7496    fn GetRights(
7497        &self,
7498        cbuserentryid: u32,
7499        lpuserentryid: *mut ENTRYID,
7500        cbentryid: u32,
7501        lpentryid: *mut ENTRYID,
7502        lpulrights: *mut u32,
7503    ) -> windows_core::Result<()>;
7504    fn GetMailboxTable(
7505        &self,
7506        lpszservername: &windows_core::PCSTR,
7507        lpptable: windows_core::OutRef<IMAPITable>,
7508        ulflags: u32,
7509    ) -> windows_core::Result<()>;
7510    fn GetPublicFolderTable(
7511        &self,
7512        lpszservername: &windows_core::PCSTR,
7513        lpptable: windows_core::OutRef<IMAPITable>,
7514        ulflags: u32,
7515    ) -> windows_core::Result<()>;
7516    fn CreateNewsgroupNameEntryID(
7517        &self,
7518        lpsznewsgroupname: &windows_core::PCSTR,
7519        lpcbentryid: *mut u32,
7520        lppentryid: *mut *mut ENTRYID,
7521    ) -> windows_core::Result<()>;
7522}
7523impl IExchangeManageStore2_Vtbl {
7524    pub const fn new<Identity: IExchangeManageStore2_Impl, const OFFSET: isize>() -> Self {
7525        unsafe extern "system" fn CreateStoreEntryID<
7526            Identity: IExchangeManageStore2_Impl,
7527            const OFFSET: isize,
7528        >(
7529            this: *mut core::ffi::c_void,
7530            lpszmsgstoredn: windows_core::PCSTR,
7531            lpszmailboxdn: windows_core::PCSTR,
7532            ulflags: u32,
7533            lpcbentryid: *mut u32,
7534            lppentryid: *mut *mut ENTRYID,
7535        ) -> windows_core::HRESULT {
7536            unsafe {
7537                let this: &Identity =
7538                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7539                IExchangeManageStore2_Impl::CreateStoreEntryID(
7540                    this,
7541                    core::mem::transmute(&lpszmsgstoredn),
7542                    core::mem::transmute(&lpszmailboxdn),
7543                    core::mem::transmute_copy(&ulflags),
7544                    core::mem::transmute_copy(&lpcbentryid),
7545                    core::mem::transmute_copy(&lppentryid),
7546                )
7547                .into()
7548            }
7549        }
7550        unsafe extern "system" fn EntryIDFromSourceKey<
7551            Identity: IExchangeManageStore2_Impl,
7552            const OFFSET: isize,
7553        >(
7554            this: *mut core::ffi::c_void,
7555            cfolderkeysize: u32,
7556            lpfoldersourcekey: *mut u8,
7557            cmessagekeysize: u32,
7558            lpmessagesourcekey: *mut u8,
7559            lpcbentryid: *mut u32,
7560            lppentryid: *mut *mut ENTRYID,
7561        ) -> windows_core::HRESULT {
7562            unsafe {
7563                let this: &Identity =
7564                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7565                IExchangeManageStore2_Impl::EntryIDFromSourceKey(
7566                    this,
7567                    core::mem::transmute_copy(&cfolderkeysize),
7568                    core::mem::transmute_copy(&lpfoldersourcekey),
7569                    core::mem::transmute_copy(&cmessagekeysize),
7570                    core::mem::transmute_copy(&lpmessagesourcekey),
7571                    core::mem::transmute_copy(&lpcbentryid),
7572                    core::mem::transmute_copy(&lppentryid),
7573                )
7574                .into()
7575            }
7576        }
7577        unsafe extern "system" fn GetRights<
7578            Identity: IExchangeManageStore2_Impl,
7579            const OFFSET: isize,
7580        >(
7581            this: *mut core::ffi::c_void,
7582            cbuserentryid: u32,
7583            lpuserentryid: *mut ENTRYID,
7584            cbentryid: u32,
7585            lpentryid: *mut ENTRYID,
7586            lpulrights: *mut u32,
7587        ) -> windows_core::HRESULT {
7588            unsafe {
7589                let this: &Identity =
7590                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7591                IExchangeManageStore2_Impl::GetRights(
7592                    this,
7593                    core::mem::transmute_copy(&cbuserentryid),
7594                    core::mem::transmute_copy(&lpuserentryid),
7595                    core::mem::transmute_copy(&cbentryid),
7596                    core::mem::transmute_copy(&lpentryid),
7597                    core::mem::transmute_copy(&lpulrights),
7598                )
7599                .into()
7600            }
7601        }
7602        unsafe extern "system" fn GetMailboxTable<
7603            Identity: IExchangeManageStore2_Impl,
7604            const OFFSET: isize,
7605        >(
7606            this: *mut core::ffi::c_void,
7607            lpszservername: windows_core::PCSTR,
7608            lpptable: *mut *mut core::ffi::c_void,
7609            ulflags: u32,
7610        ) -> windows_core::HRESULT {
7611            unsafe {
7612                let this: &Identity =
7613                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7614                IExchangeManageStore2_Impl::GetMailboxTable(
7615                    this,
7616                    core::mem::transmute(&lpszservername),
7617                    core::mem::transmute_copy(&lpptable),
7618                    core::mem::transmute_copy(&ulflags),
7619                )
7620                .into()
7621            }
7622        }
7623        unsafe extern "system" fn GetPublicFolderTable<
7624            Identity: IExchangeManageStore2_Impl,
7625            const OFFSET: isize,
7626        >(
7627            this: *mut core::ffi::c_void,
7628            lpszservername: windows_core::PCSTR,
7629            lpptable: *mut *mut core::ffi::c_void,
7630            ulflags: u32,
7631        ) -> windows_core::HRESULT {
7632            unsafe {
7633                let this: &Identity =
7634                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7635                IExchangeManageStore2_Impl::GetPublicFolderTable(
7636                    this,
7637                    core::mem::transmute(&lpszservername),
7638                    core::mem::transmute_copy(&lpptable),
7639                    core::mem::transmute_copy(&ulflags),
7640                )
7641                .into()
7642            }
7643        }
7644        unsafe extern "system" fn CreateNewsgroupNameEntryID<
7645            Identity: IExchangeManageStore2_Impl,
7646            const OFFSET: isize,
7647        >(
7648            this: *mut core::ffi::c_void,
7649            lpsznewsgroupname: windows_core::PCSTR,
7650            lpcbentryid: *mut u32,
7651            lppentryid: *mut *mut ENTRYID,
7652        ) -> windows_core::HRESULT {
7653            unsafe {
7654                let this: &Identity =
7655                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7656                IExchangeManageStore2_Impl::CreateNewsgroupNameEntryID(
7657                    this,
7658                    core::mem::transmute(&lpsznewsgroupname),
7659                    core::mem::transmute_copy(&lpcbentryid),
7660                    core::mem::transmute_copy(&lppentryid),
7661                )
7662                .into()
7663            }
7664        }
7665        Self {
7666            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
7667            CreateStoreEntryID: CreateStoreEntryID::<Identity, OFFSET>,
7668            EntryIDFromSourceKey: EntryIDFromSourceKey::<Identity, OFFSET>,
7669            GetRights: GetRights::<Identity, OFFSET>,
7670            GetMailboxTable: GetMailboxTable::<Identity, OFFSET>,
7671            GetPublicFolderTable: GetPublicFolderTable::<Identity, OFFSET>,
7672            CreateNewsgroupNameEntryID: CreateNewsgroupNameEntryID::<Identity, OFFSET>,
7673        }
7674    }
7675    pub fn matches(iid: &windows_core::GUID) -> bool {
7676        iid == &<IExchangeManageStore2 as windows_core::Interface>::IID
7677    }
7678}
7679impl windows_core::RuntimeName for IExchangeManageStore2 {}
7680windows_core::imp::define_interface!(
7681    IExchangeManageStore3,
7682    IExchangeManageStore3_Vtbl,
7683    0x166d9bc2_db75_44a9_8a93_9f3ffc994d76
7684);
7685windows_core::imp::interface_hierarchy!(IExchangeManageStore3, windows_core::IUnknown);
7686impl IExchangeManageStore3 {
7687    pub unsafe fn CreateStoreEntryID<P0, P1>(
7688        &self,
7689        lpszmsgstoredn: P0,
7690        lpszmailboxdn: P1,
7691        ulflags: u32,
7692        lpcbentryid: *mut u32,
7693        lppentryid: *mut *mut ENTRYID,
7694    ) -> windows_core::Result<()>
7695    where
7696        P0: windows_core::Param<windows_core::PCSTR>,
7697        P1: windows_core::Param<windows_core::PCSTR>,
7698    {
7699        unsafe {
7700            (windows_core::Interface::vtable(self).CreateStoreEntryID)(
7701                windows_core::Interface::as_raw(self),
7702                lpszmsgstoredn.param().abi(),
7703                lpszmailboxdn.param().abi(),
7704                ulflags,
7705                lpcbentryid as _,
7706                lppentryid as _,
7707            )
7708            .ok()
7709        }
7710    }
7711    pub unsafe fn EntryIDFromSourceKey(
7712        &self,
7713        cfolderkeysize: u32,
7714        lpfoldersourcekey: *mut u8,
7715        cmessagekeysize: u32,
7716        lpmessagesourcekey: *mut u8,
7717        lpcbentryid: *mut u32,
7718        lppentryid: *mut *mut ENTRYID,
7719    ) -> windows_core::Result<()> {
7720        unsafe {
7721            (windows_core::Interface::vtable(self).EntryIDFromSourceKey)(
7722                windows_core::Interface::as_raw(self),
7723                cfolderkeysize,
7724                lpfoldersourcekey as _,
7725                cmessagekeysize,
7726                lpmessagesourcekey as _,
7727                lpcbentryid as _,
7728                lppentryid as _,
7729            )
7730            .ok()
7731        }
7732    }
7733    pub unsafe fn GetRights(
7734        &self,
7735        cbuserentryid: u32,
7736        lpuserentryid: *mut ENTRYID,
7737        cbentryid: u32,
7738        lpentryid: *mut ENTRYID,
7739        lpulrights: *mut u32,
7740    ) -> windows_core::Result<()> {
7741        unsafe {
7742            (windows_core::Interface::vtable(self).GetRights)(
7743                windows_core::Interface::as_raw(self),
7744                cbuserentryid,
7745                lpuserentryid as _,
7746                cbentryid,
7747                lpentryid as _,
7748                lpulrights as _,
7749            )
7750            .ok()
7751        }
7752    }
7753    pub unsafe fn GetMailboxTable<P0>(
7754        &self,
7755        lpszservername: P0,
7756        lpptable: *mut Option<IMAPITable>,
7757        ulflags: u32,
7758    ) -> windows_core::Result<()>
7759    where
7760        P0: windows_core::Param<windows_core::PCSTR>,
7761    {
7762        unsafe {
7763            (windows_core::Interface::vtable(self).GetMailboxTable)(
7764                windows_core::Interface::as_raw(self),
7765                lpszservername.param().abi(),
7766                core::mem::transmute(lpptable),
7767                ulflags,
7768            )
7769            .ok()
7770        }
7771    }
7772    pub unsafe fn GetPublicFolderTable<P0>(
7773        &self,
7774        lpszservername: P0,
7775        lpptable: *mut Option<IMAPITable>,
7776        ulflags: u32,
7777    ) -> windows_core::Result<()>
7778    where
7779        P0: windows_core::Param<windows_core::PCSTR>,
7780    {
7781        unsafe {
7782            (windows_core::Interface::vtable(self).GetPublicFolderTable)(
7783                windows_core::Interface::as_raw(self),
7784                lpszservername.param().abi(),
7785                core::mem::transmute(lpptable),
7786                ulflags,
7787            )
7788            .ok()
7789        }
7790    }
7791    pub unsafe fn CreateNewsgroupNameEntryID<P0>(
7792        &self,
7793        lpsznewsgroupname: P0,
7794        lpcbentryid: *mut u32,
7795        lppentryid: *mut *mut ENTRYID,
7796    ) -> windows_core::Result<()>
7797    where
7798        P0: windows_core::Param<windows_core::PCSTR>,
7799    {
7800        unsafe {
7801            (windows_core::Interface::vtable(self).CreateNewsgroupNameEntryID)(
7802                windows_core::Interface::as_raw(self),
7803                lpsznewsgroupname.param().abi(),
7804                lpcbentryid as _,
7805                lppentryid as _,
7806            )
7807            .ok()
7808        }
7809    }
7810    pub unsafe fn GetMailboxTableOffset<P0>(
7811        &self,
7812        lpszservername: P0,
7813        lpptable: *mut Option<IMAPITable>,
7814        ulflags: u32,
7815        uoffset: u32,
7816    ) -> windows_core::Result<()>
7817    where
7818        P0: windows_core::Param<windows_core::PCSTR>,
7819    {
7820        unsafe {
7821            (windows_core::Interface::vtable(self).GetMailboxTableOffset)(
7822                windows_core::Interface::as_raw(self),
7823                lpszservername.param().abi(),
7824                core::mem::transmute(lpptable),
7825                ulflags,
7826                uoffset,
7827            )
7828            .ok()
7829        }
7830    }
7831}
7832#[repr(C)]
7833#[doc(hidden)]
7834pub struct IExchangeManageStore3_Vtbl {
7835    pub base__: windows_core::IUnknown_Vtbl,
7836    pub CreateStoreEntryID: unsafe extern "system" fn(
7837        *mut core::ffi::c_void,
7838        windows_core::PCSTR,
7839        windows_core::PCSTR,
7840        u32,
7841        *mut u32,
7842        *mut *mut ENTRYID,
7843    ) -> windows_core::HRESULT,
7844    pub EntryIDFromSourceKey: unsafe extern "system" fn(
7845        *mut core::ffi::c_void,
7846        u32,
7847        *mut u8,
7848        u32,
7849        *mut u8,
7850        *mut u32,
7851        *mut *mut ENTRYID,
7852    ) -> windows_core::HRESULT,
7853    pub GetRights: unsafe extern "system" fn(
7854        *mut core::ffi::c_void,
7855        u32,
7856        *mut ENTRYID,
7857        u32,
7858        *mut ENTRYID,
7859        *mut u32,
7860    ) -> windows_core::HRESULT,
7861    pub GetMailboxTable: unsafe extern "system" fn(
7862        *mut core::ffi::c_void,
7863        windows_core::PCSTR,
7864        *mut *mut core::ffi::c_void,
7865        u32,
7866    ) -> windows_core::HRESULT,
7867    pub GetPublicFolderTable: unsafe extern "system" fn(
7868        *mut core::ffi::c_void,
7869        windows_core::PCSTR,
7870        *mut *mut core::ffi::c_void,
7871        u32,
7872    ) -> windows_core::HRESULT,
7873    pub CreateNewsgroupNameEntryID: unsafe extern "system" fn(
7874        *mut core::ffi::c_void,
7875        windows_core::PCSTR,
7876        *mut u32,
7877        *mut *mut ENTRYID,
7878    ) -> windows_core::HRESULT,
7879    pub GetMailboxTableOffset: unsafe extern "system" fn(
7880        *mut core::ffi::c_void,
7881        windows_core::PCSTR,
7882        *mut *mut core::ffi::c_void,
7883        u32,
7884        u32,
7885    ) -> windows_core::HRESULT,
7886}
7887pub trait IExchangeManageStore3_Impl: windows_core::IUnknownImpl {
7888    fn CreateStoreEntryID(
7889        &self,
7890        lpszmsgstoredn: &windows_core::PCSTR,
7891        lpszmailboxdn: &windows_core::PCSTR,
7892        ulflags: u32,
7893        lpcbentryid: *mut u32,
7894        lppentryid: *mut *mut ENTRYID,
7895    ) -> windows_core::Result<()>;
7896    fn EntryIDFromSourceKey(
7897        &self,
7898        cfolderkeysize: u32,
7899        lpfoldersourcekey: *mut u8,
7900        cmessagekeysize: u32,
7901        lpmessagesourcekey: *mut u8,
7902        lpcbentryid: *mut u32,
7903        lppentryid: *mut *mut ENTRYID,
7904    ) -> windows_core::Result<()>;
7905    fn GetRights(
7906        &self,
7907        cbuserentryid: u32,
7908        lpuserentryid: *mut ENTRYID,
7909        cbentryid: u32,
7910        lpentryid: *mut ENTRYID,
7911        lpulrights: *mut u32,
7912    ) -> windows_core::Result<()>;
7913    fn GetMailboxTable(
7914        &self,
7915        lpszservername: &windows_core::PCSTR,
7916        lpptable: windows_core::OutRef<IMAPITable>,
7917        ulflags: u32,
7918    ) -> windows_core::Result<()>;
7919    fn GetPublicFolderTable(
7920        &self,
7921        lpszservername: &windows_core::PCSTR,
7922        lpptable: windows_core::OutRef<IMAPITable>,
7923        ulflags: u32,
7924    ) -> windows_core::Result<()>;
7925    fn CreateNewsgroupNameEntryID(
7926        &self,
7927        lpsznewsgroupname: &windows_core::PCSTR,
7928        lpcbentryid: *mut u32,
7929        lppentryid: *mut *mut ENTRYID,
7930    ) -> windows_core::Result<()>;
7931    fn GetMailboxTableOffset(
7932        &self,
7933        lpszservername: &windows_core::PCSTR,
7934        lpptable: windows_core::OutRef<IMAPITable>,
7935        ulflags: u32,
7936        uoffset: u32,
7937    ) -> windows_core::Result<()>;
7938}
7939impl IExchangeManageStore3_Vtbl {
7940    pub const fn new<Identity: IExchangeManageStore3_Impl, const OFFSET: isize>() -> Self {
7941        unsafe extern "system" fn CreateStoreEntryID<
7942            Identity: IExchangeManageStore3_Impl,
7943            const OFFSET: isize,
7944        >(
7945            this: *mut core::ffi::c_void,
7946            lpszmsgstoredn: windows_core::PCSTR,
7947            lpszmailboxdn: windows_core::PCSTR,
7948            ulflags: u32,
7949            lpcbentryid: *mut u32,
7950            lppentryid: *mut *mut ENTRYID,
7951        ) -> windows_core::HRESULT {
7952            unsafe {
7953                let this: &Identity =
7954                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7955                IExchangeManageStore3_Impl::CreateStoreEntryID(
7956                    this,
7957                    core::mem::transmute(&lpszmsgstoredn),
7958                    core::mem::transmute(&lpszmailboxdn),
7959                    core::mem::transmute_copy(&ulflags),
7960                    core::mem::transmute_copy(&lpcbentryid),
7961                    core::mem::transmute_copy(&lppentryid),
7962                )
7963                .into()
7964            }
7965        }
7966        unsafe extern "system" fn EntryIDFromSourceKey<
7967            Identity: IExchangeManageStore3_Impl,
7968            const OFFSET: isize,
7969        >(
7970            this: *mut core::ffi::c_void,
7971            cfolderkeysize: u32,
7972            lpfoldersourcekey: *mut u8,
7973            cmessagekeysize: u32,
7974            lpmessagesourcekey: *mut u8,
7975            lpcbentryid: *mut u32,
7976            lppentryid: *mut *mut ENTRYID,
7977        ) -> windows_core::HRESULT {
7978            unsafe {
7979                let this: &Identity =
7980                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
7981                IExchangeManageStore3_Impl::EntryIDFromSourceKey(
7982                    this,
7983                    core::mem::transmute_copy(&cfolderkeysize),
7984                    core::mem::transmute_copy(&lpfoldersourcekey),
7985                    core::mem::transmute_copy(&cmessagekeysize),
7986                    core::mem::transmute_copy(&lpmessagesourcekey),
7987                    core::mem::transmute_copy(&lpcbentryid),
7988                    core::mem::transmute_copy(&lppentryid),
7989                )
7990                .into()
7991            }
7992        }
7993        unsafe extern "system" fn GetRights<
7994            Identity: IExchangeManageStore3_Impl,
7995            const OFFSET: isize,
7996        >(
7997            this: *mut core::ffi::c_void,
7998            cbuserentryid: u32,
7999            lpuserentryid: *mut ENTRYID,
8000            cbentryid: u32,
8001            lpentryid: *mut ENTRYID,
8002            lpulrights: *mut u32,
8003        ) -> windows_core::HRESULT {
8004            unsafe {
8005                let this: &Identity =
8006                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8007                IExchangeManageStore3_Impl::GetRights(
8008                    this,
8009                    core::mem::transmute_copy(&cbuserentryid),
8010                    core::mem::transmute_copy(&lpuserentryid),
8011                    core::mem::transmute_copy(&cbentryid),
8012                    core::mem::transmute_copy(&lpentryid),
8013                    core::mem::transmute_copy(&lpulrights),
8014                )
8015                .into()
8016            }
8017        }
8018        unsafe extern "system" fn GetMailboxTable<
8019            Identity: IExchangeManageStore3_Impl,
8020            const OFFSET: isize,
8021        >(
8022            this: *mut core::ffi::c_void,
8023            lpszservername: windows_core::PCSTR,
8024            lpptable: *mut *mut core::ffi::c_void,
8025            ulflags: u32,
8026        ) -> windows_core::HRESULT {
8027            unsafe {
8028                let this: &Identity =
8029                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8030                IExchangeManageStore3_Impl::GetMailboxTable(
8031                    this,
8032                    core::mem::transmute(&lpszservername),
8033                    core::mem::transmute_copy(&lpptable),
8034                    core::mem::transmute_copy(&ulflags),
8035                )
8036                .into()
8037            }
8038        }
8039        unsafe extern "system" fn GetPublicFolderTable<
8040            Identity: IExchangeManageStore3_Impl,
8041            const OFFSET: isize,
8042        >(
8043            this: *mut core::ffi::c_void,
8044            lpszservername: windows_core::PCSTR,
8045            lpptable: *mut *mut core::ffi::c_void,
8046            ulflags: u32,
8047        ) -> windows_core::HRESULT {
8048            unsafe {
8049                let this: &Identity =
8050                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8051                IExchangeManageStore3_Impl::GetPublicFolderTable(
8052                    this,
8053                    core::mem::transmute(&lpszservername),
8054                    core::mem::transmute_copy(&lpptable),
8055                    core::mem::transmute_copy(&ulflags),
8056                )
8057                .into()
8058            }
8059        }
8060        unsafe extern "system" fn CreateNewsgroupNameEntryID<
8061            Identity: IExchangeManageStore3_Impl,
8062            const OFFSET: isize,
8063        >(
8064            this: *mut core::ffi::c_void,
8065            lpsznewsgroupname: windows_core::PCSTR,
8066            lpcbentryid: *mut u32,
8067            lppentryid: *mut *mut ENTRYID,
8068        ) -> windows_core::HRESULT {
8069            unsafe {
8070                let this: &Identity =
8071                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8072                IExchangeManageStore3_Impl::CreateNewsgroupNameEntryID(
8073                    this,
8074                    core::mem::transmute(&lpsznewsgroupname),
8075                    core::mem::transmute_copy(&lpcbentryid),
8076                    core::mem::transmute_copy(&lppentryid),
8077                )
8078                .into()
8079            }
8080        }
8081        unsafe extern "system" fn GetMailboxTableOffset<
8082            Identity: IExchangeManageStore3_Impl,
8083            const OFFSET: isize,
8084        >(
8085            this: *mut core::ffi::c_void,
8086            lpszservername: windows_core::PCSTR,
8087            lpptable: *mut *mut core::ffi::c_void,
8088            ulflags: u32,
8089            uoffset: u32,
8090        ) -> windows_core::HRESULT {
8091            unsafe {
8092                let this: &Identity =
8093                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8094                IExchangeManageStore3_Impl::GetMailboxTableOffset(
8095                    this,
8096                    core::mem::transmute(&lpszservername),
8097                    core::mem::transmute_copy(&lpptable),
8098                    core::mem::transmute_copy(&ulflags),
8099                    core::mem::transmute_copy(&uoffset),
8100                )
8101                .into()
8102            }
8103        }
8104        Self {
8105            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8106            CreateStoreEntryID: CreateStoreEntryID::<Identity, OFFSET>,
8107            EntryIDFromSourceKey: EntryIDFromSourceKey::<Identity, OFFSET>,
8108            GetRights: GetRights::<Identity, OFFSET>,
8109            GetMailboxTable: GetMailboxTable::<Identity, OFFSET>,
8110            GetPublicFolderTable: GetPublicFolderTable::<Identity, OFFSET>,
8111            CreateNewsgroupNameEntryID: CreateNewsgroupNameEntryID::<Identity, OFFSET>,
8112            GetMailboxTableOffset: GetMailboxTableOffset::<Identity, OFFSET>,
8113        }
8114    }
8115    pub fn matches(iid: &windows_core::GUID) -> bool {
8116        iid == &<IExchangeManageStore3 as windows_core::Interface>::IID
8117    }
8118}
8119impl windows_core::RuntimeName for IExchangeManageStore3 {}
8120windows_core::imp::define_interface!(
8121    IExchangeManageStore4,
8122    IExchangeManageStore4_Vtbl,
8123    0x2590ff87_c431_4f9c_b1a8_cd69d760cd10
8124);
8125windows_core::imp::interface_hierarchy!(IExchangeManageStore4, windows_core::IUnknown);
8126impl IExchangeManageStore4 {
8127    pub unsafe fn CreateStoreEntryID<P0, P1>(
8128        &self,
8129        lpszmsgstoredn: P0,
8130        lpszmailboxdn: P1,
8131        ulflags: u32,
8132        lpcbentryid: *mut u32,
8133        lppentryid: *mut *mut ENTRYID,
8134    ) -> windows_core::Result<()>
8135    where
8136        P0: windows_core::Param<windows_core::PCSTR>,
8137        P1: windows_core::Param<windows_core::PCSTR>,
8138    {
8139        unsafe {
8140            (windows_core::Interface::vtable(self).CreateStoreEntryID)(
8141                windows_core::Interface::as_raw(self),
8142                lpszmsgstoredn.param().abi(),
8143                lpszmailboxdn.param().abi(),
8144                ulflags,
8145                lpcbentryid as _,
8146                lppentryid as _,
8147            )
8148            .ok()
8149        }
8150    }
8151    pub unsafe fn EntryIDFromSourceKey(
8152        &self,
8153        cfolderkeysize: u32,
8154        lpfoldersourcekey: *mut u8,
8155        cmessagekeysize: u32,
8156        lpmessagesourcekey: *mut u8,
8157        lpcbentryid: *mut u32,
8158        lppentryid: *mut *mut ENTRYID,
8159    ) -> windows_core::Result<()> {
8160        unsafe {
8161            (windows_core::Interface::vtable(self).EntryIDFromSourceKey)(
8162                windows_core::Interface::as_raw(self),
8163                cfolderkeysize,
8164                lpfoldersourcekey as _,
8165                cmessagekeysize,
8166                lpmessagesourcekey as _,
8167                lpcbentryid as _,
8168                lppentryid as _,
8169            )
8170            .ok()
8171        }
8172    }
8173    pub unsafe fn GetRights(
8174        &self,
8175        cbuserentryid: u32,
8176        lpuserentryid: *mut ENTRYID,
8177        cbentryid: u32,
8178        lpentryid: *mut ENTRYID,
8179        lpulrights: *mut u32,
8180    ) -> windows_core::Result<()> {
8181        unsafe {
8182            (windows_core::Interface::vtable(self).GetRights)(
8183                windows_core::Interface::as_raw(self),
8184                cbuserentryid,
8185                lpuserentryid as _,
8186                cbentryid,
8187                lpentryid as _,
8188                lpulrights as _,
8189            )
8190            .ok()
8191        }
8192    }
8193    pub unsafe fn GetMailboxTable<P0>(
8194        &self,
8195        lpszservername: P0,
8196        lpptable: *mut Option<IMAPITable>,
8197        ulflags: u32,
8198    ) -> windows_core::Result<()>
8199    where
8200        P0: windows_core::Param<windows_core::PCSTR>,
8201    {
8202        unsafe {
8203            (windows_core::Interface::vtable(self).GetMailboxTable)(
8204                windows_core::Interface::as_raw(self),
8205                lpszservername.param().abi(),
8206                core::mem::transmute(lpptable),
8207                ulflags,
8208            )
8209            .ok()
8210        }
8211    }
8212    pub unsafe fn GetPublicFolderTable<P0>(
8213        &self,
8214        lpszservername: P0,
8215        lpptable: *mut Option<IMAPITable>,
8216        ulflags: u32,
8217    ) -> windows_core::Result<()>
8218    where
8219        P0: windows_core::Param<windows_core::PCSTR>,
8220    {
8221        unsafe {
8222            (windows_core::Interface::vtable(self).GetPublicFolderTable)(
8223                windows_core::Interface::as_raw(self),
8224                lpszservername.param().abi(),
8225                core::mem::transmute(lpptable),
8226                ulflags,
8227            )
8228            .ok()
8229        }
8230    }
8231    pub unsafe fn CreateNewsgroupNameEntryID<P0>(
8232        &self,
8233        lpsznewsgroupname: P0,
8234        lpcbentryid: *mut u32,
8235        lppentryid: *mut *mut ENTRYID,
8236    ) -> windows_core::Result<()>
8237    where
8238        P0: windows_core::Param<windows_core::PCSTR>,
8239    {
8240        unsafe {
8241            (windows_core::Interface::vtable(self).CreateNewsgroupNameEntryID)(
8242                windows_core::Interface::as_raw(self),
8243                lpsznewsgroupname.param().abi(),
8244                lpcbentryid as _,
8245                lppentryid as _,
8246            )
8247            .ok()
8248        }
8249    }
8250    pub unsafe fn GetMailboxTableOffset<P0>(
8251        &self,
8252        lpszservername: P0,
8253        lpptable: *mut Option<IMAPITable>,
8254        ulflags: u32,
8255        uoffset: u32,
8256    ) -> windows_core::Result<()>
8257    where
8258        P0: windows_core::Param<windows_core::PCSTR>,
8259    {
8260        unsafe {
8261            (windows_core::Interface::vtable(self).GetMailboxTableOffset)(
8262                windows_core::Interface::as_raw(self),
8263                lpszservername.param().abi(),
8264                core::mem::transmute(lpptable),
8265                ulflags,
8266                uoffset,
8267            )
8268            .ok()
8269        }
8270    }
8271    pub unsafe fn GetPublicFolderTableOffset<P0>(
8272        &self,
8273        lpszservername: P0,
8274        lpptable: *mut Option<IMAPITable>,
8275        ulflags: u32,
8276        uoffset: u32,
8277    ) -> windows_core::Result<()>
8278    where
8279        P0: windows_core::Param<windows_core::PCSTR>,
8280    {
8281        unsafe {
8282            (windows_core::Interface::vtable(self).GetPublicFolderTableOffset)(
8283                windows_core::Interface::as_raw(self),
8284                lpszservername.param().abi(),
8285                core::mem::transmute(lpptable),
8286                ulflags,
8287                uoffset,
8288            )
8289            .ok()
8290        }
8291    }
8292}
8293#[repr(C)]
8294#[doc(hidden)]
8295pub struct IExchangeManageStore4_Vtbl {
8296    pub base__: windows_core::IUnknown_Vtbl,
8297    pub CreateStoreEntryID: unsafe extern "system" fn(
8298        *mut core::ffi::c_void,
8299        windows_core::PCSTR,
8300        windows_core::PCSTR,
8301        u32,
8302        *mut u32,
8303        *mut *mut ENTRYID,
8304    ) -> windows_core::HRESULT,
8305    pub EntryIDFromSourceKey: unsafe extern "system" fn(
8306        *mut core::ffi::c_void,
8307        u32,
8308        *mut u8,
8309        u32,
8310        *mut u8,
8311        *mut u32,
8312        *mut *mut ENTRYID,
8313    ) -> windows_core::HRESULT,
8314    pub GetRights: unsafe extern "system" fn(
8315        *mut core::ffi::c_void,
8316        u32,
8317        *mut ENTRYID,
8318        u32,
8319        *mut ENTRYID,
8320        *mut u32,
8321    ) -> windows_core::HRESULT,
8322    pub GetMailboxTable: unsafe extern "system" fn(
8323        *mut core::ffi::c_void,
8324        windows_core::PCSTR,
8325        *mut *mut core::ffi::c_void,
8326        u32,
8327    ) -> windows_core::HRESULT,
8328    pub GetPublicFolderTable: unsafe extern "system" fn(
8329        *mut core::ffi::c_void,
8330        windows_core::PCSTR,
8331        *mut *mut core::ffi::c_void,
8332        u32,
8333    ) -> windows_core::HRESULT,
8334    pub CreateNewsgroupNameEntryID: unsafe extern "system" fn(
8335        *mut core::ffi::c_void,
8336        windows_core::PCSTR,
8337        *mut u32,
8338        *mut *mut ENTRYID,
8339    ) -> windows_core::HRESULT,
8340    pub GetMailboxTableOffset: unsafe extern "system" fn(
8341        *mut core::ffi::c_void,
8342        windows_core::PCSTR,
8343        *mut *mut core::ffi::c_void,
8344        u32,
8345        u32,
8346    ) -> windows_core::HRESULT,
8347    pub GetPublicFolderTableOffset: unsafe extern "system" fn(
8348        *mut core::ffi::c_void,
8349        windows_core::PCSTR,
8350        *mut *mut core::ffi::c_void,
8351        u32,
8352        u32,
8353    ) -> windows_core::HRESULT,
8354}
8355pub trait IExchangeManageStore4_Impl: windows_core::IUnknownImpl {
8356    fn CreateStoreEntryID(
8357        &self,
8358        lpszmsgstoredn: &windows_core::PCSTR,
8359        lpszmailboxdn: &windows_core::PCSTR,
8360        ulflags: u32,
8361        lpcbentryid: *mut u32,
8362        lppentryid: *mut *mut ENTRYID,
8363    ) -> windows_core::Result<()>;
8364    fn EntryIDFromSourceKey(
8365        &self,
8366        cfolderkeysize: u32,
8367        lpfoldersourcekey: *mut u8,
8368        cmessagekeysize: u32,
8369        lpmessagesourcekey: *mut u8,
8370        lpcbentryid: *mut u32,
8371        lppentryid: *mut *mut ENTRYID,
8372    ) -> windows_core::Result<()>;
8373    fn GetRights(
8374        &self,
8375        cbuserentryid: u32,
8376        lpuserentryid: *mut ENTRYID,
8377        cbentryid: u32,
8378        lpentryid: *mut ENTRYID,
8379        lpulrights: *mut u32,
8380    ) -> windows_core::Result<()>;
8381    fn GetMailboxTable(
8382        &self,
8383        lpszservername: &windows_core::PCSTR,
8384        lpptable: windows_core::OutRef<IMAPITable>,
8385        ulflags: u32,
8386    ) -> windows_core::Result<()>;
8387    fn GetPublicFolderTable(
8388        &self,
8389        lpszservername: &windows_core::PCSTR,
8390        lpptable: windows_core::OutRef<IMAPITable>,
8391        ulflags: u32,
8392    ) -> windows_core::Result<()>;
8393    fn CreateNewsgroupNameEntryID(
8394        &self,
8395        lpsznewsgroupname: &windows_core::PCSTR,
8396        lpcbentryid: *mut u32,
8397        lppentryid: *mut *mut ENTRYID,
8398    ) -> windows_core::Result<()>;
8399    fn GetMailboxTableOffset(
8400        &self,
8401        lpszservername: &windows_core::PCSTR,
8402        lpptable: windows_core::OutRef<IMAPITable>,
8403        ulflags: u32,
8404        uoffset: u32,
8405    ) -> windows_core::Result<()>;
8406    fn GetPublicFolderTableOffset(
8407        &self,
8408        lpszservername: &windows_core::PCSTR,
8409        lpptable: windows_core::OutRef<IMAPITable>,
8410        ulflags: u32,
8411        uoffset: u32,
8412    ) -> windows_core::Result<()>;
8413}
8414impl IExchangeManageStore4_Vtbl {
8415    pub const fn new<Identity: IExchangeManageStore4_Impl, const OFFSET: isize>() -> Self {
8416        unsafe extern "system" fn CreateStoreEntryID<
8417            Identity: IExchangeManageStore4_Impl,
8418            const OFFSET: isize,
8419        >(
8420            this: *mut core::ffi::c_void,
8421            lpszmsgstoredn: windows_core::PCSTR,
8422            lpszmailboxdn: windows_core::PCSTR,
8423            ulflags: u32,
8424            lpcbentryid: *mut u32,
8425            lppentryid: *mut *mut ENTRYID,
8426        ) -> windows_core::HRESULT {
8427            unsafe {
8428                let this: &Identity =
8429                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8430                IExchangeManageStore4_Impl::CreateStoreEntryID(
8431                    this,
8432                    core::mem::transmute(&lpszmsgstoredn),
8433                    core::mem::transmute(&lpszmailboxdn),
8434                    core::mem::transmute_copy(&ulflags),
8435                    core::mem::transmute_copy(&lpcbentryid),
8436                    core::mem::transmute_copy(&lppentryid),
8437                )
8438                .into()
8439            }
8440        }
8441        unsafe extern "system" fn EntryIDFromSourceKey<
8442            Identity: IExchangeManageStore4_Impl,
8443            const OFFSET: isize,
8444        >(
8445            this: *mut core::ffi::c_void,
8446            cfolderkeysize: u32,
8447            lpfoldersourcekey: *mut u8,
8448            cmessagekeysize: u32,
8449            lpmessagesourcekey: *mut u8,
8450            lpcbentryid: *mut u32,
8451            lppentryid: *mut *mut ENTRYID,
8452        ) -> windows_core::HRESULT {
8453            unsafe {
8454                let this: &Identity =
8455                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8456                IExchangeManageStore4_Impl::EntryIDFromSourceKey(
8457                    this,
8458                    core::mem::transmute_copy(&cfolderkeysize),
8459                    core::mem::transmute_copy(&lpfoldersourcekey),
8460                    core::mem::transmute_copy(&cmessagekeysize),
8461                    core::mem::transmute_copy(&lpmessagesourcekey),
8462                    core::mem::transmute_copy(&lpcbentryid),
8463                    core::mem::transmute_copy(&lppentryid),
8464                )
8465                .into()
8466            }
8467        }
8468        unsafe extern "system" fn GetRights<
8469            Identity: IExchangeManageStore4_Impl,
8470            const OFFSET: isize,
8471        >(
8472            this: *mut core::ffi::c_void,
8473            cbuserentryid: u32,
8474            lpuserentryid: *mut ENTRYID,
8475            cbentryid: u32,
8476            lpentryid: *mut ENTRYID,
8477            lpulrights: *mut u32,
8478        ) -> windows_core::HRESULT {
8479            unsafe {
8480                let this: &Identity =
8481                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8482                IExchangeManageStore4_Impl::GetRights(
8483                    this,
8484                    core::mem::transmute_copy(&cbuserentryid),
8485                    core::mem::transmute_copy(&lpuserentryid),
8486                    core::mem::transmute_copy(&cbentryid),
8487                    core::mem::transmute_copy(&lpentryid),
8488                    core::mem::transmute_copy(&lpulrights),
8489                )
8490                .into()
8491            }
8492        }
8493        unsafe extern "system" fn GetMailboxTable<
8494            Identity: IExchangeManageStore4_Impl,
8495            const OFFSET: isize,
8496        >(
8497            this: *mut core::ffi::c_void,
8498            lpszservername: windows_core::PCSTR,
8499            lpptable: *mut *mut core::ffi::c_void,
8500            ulflags: u32,
8501        ) -> windows_core::HRESULT {
8502            unsafe {
8503                let this: &Identity =
8504                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8505                IExchangeManageStore4_Impl::GetMailboxTable(
8506                    this,
8507                    core::mem::transmute(&lpszservername),
8508                    core::mem::transmute_copy(&lpptable),
8509                    core::mem::transmute_copy(&ulflags),
8510                )
8511                .into()
8512            }
8513        }
8514        unsafe extern "system" fn GetPublicFolderTable<
8515            Identity: IExchangeManageStore4_Impl,
8516            const OFFSET: isize,
8517        >(
8518            this: *mut core::ffi::c_void,
8519            lpszservername: windows_core::PCSTR,
8520            lpptable: *mut *mut core::ffi::c_void,
8521            ulflags: u32,
8522        ) -> windows_core::HRESULT {
8523            unsafe {
8524                let this: &Identity =
8525                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8526                IExchangeManageStore4_Impl::GetPublicFolderTable(
8527                    this,
8528                    core::mem::transmute(&lpszservername),
8529                    core::mem::transmute_copy(&lpptable),
8530                    core::mem::transmute_copy(&ulflags),
8531                )
8532                .into()
8533            }
8534        }
8535        unsafe extern "system" fn CreateNewsgroupNameEntryID<
8536            Identity: IExchangeManageStore4_Impl,
8537            const OFFSET: isize,
8538        >(
8539            this: *mut core::ffi::c_void,
8540            lpsznewsgroupname: windows_core::PCSTR,
8541            lpcbentryid: *mut u32,
8542            lppentryid: *mut *mut ENTRYID,
8543        ) -> windows_core::HRESULT {
8544            unsafe {
8545                let this: &Identity =
8546                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8547                IExchangeManageStore4_Impl::CreateNewsgroupNameEntryID(
8548                    this,
8549                    core::mem::transmute(&lpsznewsgroupname),
8550                    core::mem::transmute_copy(&lpcbentryid),
8551                    core::mem::transmute_copy(&lppentryid),
8552                )
8553                .into()
8554            }
8555        }
8556        unsafe extern "system" fn GetMailboxTableOffset<
8557            Identity: IExchangeManageStore4_Impl,
8558            const OFFSET: isize,
8559        >(
8560            this: *mut core::ffi::c_void,
8561            lpszservername: windows_core::PCSTR,
8562            lpptable: *mut *mut core::ffi::c_void,
8563            ulflags: u32,
8564            uoffset: u32,
8565        ) -> windows_core::HRESULT {
8566            unsafe {
8567                let this: &Identity =
8568                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8569                IExchangeManageStore4_Impl::GetMailboxTableOffset(
8570                    this,
8571                    core::mem::transmute(&lpszservername),
8572                    core::mem::transmute_copy(&lpptable),
8573                    core::mem::transmute_copy(&ulflags),
8574                    core::mem::transmute_copy(&uoffset),
8575                )
8576                .into()
8577            }
8578        }
8579        unsafe extern "system" fn GetPublicFolderTableOffset<
8580            Identity: IExchangeManageStore4_Impl,
8581            const OFFSET: isize,
8582        >(
8583            this: *mut core::ffi::c_void,
8584            lpszservername: windows_core::PCSTR,
8585            lpptable: *mut *mut core::ffi::c_void,
8586            ulflags: u32,
8587            uoffset: u32,
8588        ) -> windows_core::HRESULT {
8589            unsafe {
8590                let this: &Identity =
8591                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8592                IExchangeManageStore4_Impl::GetPublicFolderTableOffset(
8593                    this,
8594                    core::mem::transmute(&lpszservername),
8595                    core::mem::transmute_copy(&lpptable),
8596                    core::mem::transmute_copy(&ulflags),
8597                    core::mem::transmute_copy(&uoffset),
8598                )
8599                .into()
8600            }
8601        }
8602        Self {
8603            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8604            CreateStoreEntryID: CreateStoreEntryID::<Identity, OFFSET>,
8605            EntryIDFromSourceKey: EntryIDFromSourceKey::<Identity, OFFSET>,
8606            GetRights: GetRights::<Identity, OFFSET>,
8607            GetMailboxTable: GetMailboxTable::<Identity, OFFSET>,
8608            GetPublicFolderTable: GetPublicFolderTable::<Identity, OFFSET>,
8609            CreateNewsgroupNameEntryID: CreateNewsgroupNameEntryID::<Identity, OFFSET>,
8610            GetMailboxTableOffset: GetMailboxTableOffset::<Identity, OFFSET>,
8611            GetPublicFolderTableOffset: GetPublicFolderTableOffset::<Identity, OFFSET>,
8612        }
8613    }
8614    pub fn matches(iid: &windows_core::GUID) -> bool {
8615        iid == &<IExchangeManageStore4 as windows_core::Interface>::IID
8616    }
8617}
8618impl windows_core::RuntimeName for IExchangeManageStore4 {}
8619windows_core::imp::define_interface!(
8620    IExchangeMessageConversion,
8621    IExchangeMessageConversion_Vtbl,
8622    0x3532b360_d114_11cf_a83b_00c04fd65597
8623);
8624windows_core::imp::interface_hierarchy!(IExchangeMessageConversion, windows_core::IUnknown);
8625impl IExchangeMessageConversion {
8626    pub unsafe fn OpenStream(
8627        &self,
8628        cvalues: u32,
8629        lpproparray: *mut SPropValue,
8630        lppstream: *mut Option<windows::Win32::System::Com::IStream>,
8631    ) -> windows_core::Result<()> {
8632        unsafe {
8633            (windows_core::Interface::vtable(self).OpenStream)(
8634                windows_core::Interface::as_raw(self),
8635                cvalues,
8636                lpproparray as _,
8637                core::mem::transmute(lppstream),
8638            )
8639            .ok()
8640        }
8641    }
8642}
8643#[repr(C)]
8644#[doc(hidden)]
8645pub struct IExchangeMessageConversion_Vtbl {
8646    pub base__: windows_core::IUnknown_Vtbl,
8647    pub OpenStream: unsafe extern "system" fn(
8648        *mut core::ffi::c_void,
8649        u32,
8650        *mut SPropValue,
8651        *mut *mut core::ffi::c_void,
8652    ) -> windows_core::HRESULT,
8653}
8654pub trait IExchangeMessageConversion_Impl: windows_core::IUnknownImpl {
8655    fn OpenStream(
8656        &self,
8657        cvalues: u32,
8658        lpproparray: *mut SPropValue,
8659        lppstream: windows_core::OutRef<windows::Win32::System::Com::IStream>,
8660    ) -> windows_core::Result<()>;
8661}
8662impl IExchangeMessageConversion_Vtbl {
8663    pub const fn new<Identity: IExchangeMessageConversion_Impl, const OFFSET: isize>() -> Self {
8664        unsafe extern "system" fn OpenStream<
8665            Identity: IExchangeMessageConversion_Impl,
8666            const OFFSET: isize,
8667        >(
8668            this: *mut core::ffi::c_void,
8669            cvalues: u32,
8670            lpproparray: *mut SPropValue,
8671            lppstream: *mut *mut core::ffi::c_void,
8672        ) -> windows_core::HRESULT {
8673            unsafe {
8674                let this: &Identity =
8675                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8676                IExchangeMessageConversion_Impl::OpenStream(
8677                    this,
8678                    core::mem::transmute_copy(&cvalues),
8679                    core::mem::transmute_copy(&lpproparray),
8680                    core::mem::transmute_copy(&lppstream),
8681                )
8682                .into()
8683            }
8684        }
8685        Self {
8686            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8687            OpenStream: OpenStream::<Identity, OFFSET>,
8688        }
8689    }
8690    pub fn matches(iid: &windows_core::GUID) -> bool {
8691        iid == &<IExchangeMessageConversion as windows_core::Interface>::IID
8692    }
8693}
8694impl windows_core::RuntimeName for IExchangeMessageConversion {}
8695windows_core::imp::define_interface!(
8696    IExchangeModifyTable,
8697    IExchangeModifyTable_Vtbl,
8698    0x2d734cb0_53fd_101b_b19d_08002b3056e3
8699);
8700windows_core::imp::interface_hierarchy!(IExchangeModifyTable, windows_core::IUnknown);
8701impl IExchangeModifyTable {
8702    pub unsafe fn GetLastError(
8703        &self,
8704        hresult: windows_core::HRESULT,
8705        ulflags: u32,
8706        lppmapierror: *mut *mut MAPIERROR,
8707    ) -> windows_core::Result<()> {
8708        unsafe {
8709            (windows_core::Interface::vtable(self).GetLastError)(
8710                windows_core::Interface::as_raw(self),
8711                hresult,
8712                ulflags,
8713                lppmapierror as _,
8714            )
8715            .ok()
8716        }
8717    }
8718    pub unsafe fn GetTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
8719        unsafe {
8720            let mut result__ = core::mem::zeroed();
8721            (windows_core::Interface::vtable(self).GetTable)(
8722                windows_core::Interface::as_raw(self),
8723                ulflags,
8724                &mut result__,
8725            )
8726            .and_then(|| windows_core::Type::from_abi(result__))
8727        }
8728    }
8729    pub unsafe fn ModifyTable(
8730        &self,
8731        ulflags: u32,
8732        lpmods: *mut ROWLIST,
8733    ) -> windows_core::Result<()> {
8734        unsafe {
8735            (windows_core::Interface::vtable(self).ModifyTable)(
8736                windows_core::Interface::as_raw(self),
8737                ulflags,
8738                lpmods as _,
8739            )
8740            .ok()
8741        }
8742    }
8743}
8744#[repr(C)]
8745#[doc(hidden)]
8746pub struct IExchangeModifyTable_Vtbl {
8747    pub base__: windows_core::IUnknown_Vtbl,
8748    pub GetLastError: unsafe extern "system" fn(
8749        *mut core::ffi::c_void,
8750        windows_core::HRESULT,
8751        u32,
8752        *mut *mut MAPIERROR,
8753    ) -> windows_core::HRESULT,
8754    pub GetTable: unsafe extern "system" fn(
8755        *mut core::ffi::c_void,
8756        u32,
8757        *mut *mut core::ffi::c_void,
8758    ) -> windows_core::HRESULT,
8759    pub ModifyTable: unsafe extern "system" fn(
8760        *mut core::ffi::c_void,
8761        u32,
8762        *mut ROWLIST,
8763    ) -> windows_core::HRESULT,
8764}
8765pub trait IExchangeModifyTable_Impl: windows_core::IUnknownImpl {
8766    fn GetLastError(
8767        &self,
8768        hresult: windows_core::HRESULT,
8769        ulflags: u32,
8770        lppmapierror: *mut *mut MAPIERROR,
8771    ) -> windows_core::Result<()>;
8772    fn GetTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
8773    fn ModifyTable(&self, ulflags: u32, lpmods: *mut ROWLIST) -> windows_core::Result<()>;
8774}
8775impl IExchangeModifyTable_Vtbl {
8776    pub const fn new<Identity: IExchangeModifyTable_Impl, const OFFSET: isize>() -> Self {
8777        unsafe extern "system" fn GetLastError<
8778            Identity: IExchangeModifyTable_Impl,
8779            const OFFSET: isize,
8780        >(
8781            this: *mut core::ffi::c_void,
8782            hresult: windows_core::HRESULT,
8783            ulflags: u32,
8784            lppmapierror: *mut *mut MAPIERROR,
8785        ) -> windows_core::HRESULT {
8786            unsafe {
8787                let this: &Identity =
8788                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8789                IExchangeModifyTable_Impl::GetLastError(
8790                    this,
8791                    core::mem::transmute_copy(&hresult),
8792                    core::mem::transmute_copy(&ulflags),
8793                    core::mem::transmute_copy(&lppmapierror),
8794                )
8795                .into()
8796            }
8797        }
8798        unsafe extern "system" fn GetTable<
8799            Identity: IExchangeModifyTable_Impl,
8800            const OFFSET: isize,
8801        >(
8802            this: *mut core::ffi::c_void,
8803            ulflags: u32,
8804            lpptable: *mut *mut core::ffi::c_void,
8805        ) -> windows_core::HRESULT {
8806            unsafe {
8807                let this: &Identity =
8808                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8809                match IExchangeModifyTable_Impl::GetTable(this, core::mem::transmute_copy(&ulflags))
8810                {
8811                    Ok(ok__) => {
8812                        lpptable.write(core::mem::transmute(ok__));
8813                        windows_core::HRESULT(0)
8814                    }
8815                    Err(err) => err.into(),
8816                }
8817            }
8818        }
8819        unsafe extern "system" fn ModifyTable<
8820            Identity: IExchangeModifyTable_Impl,
8821            const OFFSET: isize,
8822        >(
8823            this: *mut core::ffi::c_void,
8824            ulflags: u32,
8825            lpmods: *mut ROWLIST,
8826        ) -> windows_core::HRESULT {
8827            unsafe {
8828                let this: &Identity =
8829                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8830                IExchangeModifyTable_Impl::ModifyTable(
8831                    this,
8832                    core::mem::transmute_copy(&ulflags),
8833                    core::mem::transmute_copy(&lpmods),
8834                )
8835                .into()
8836            }
8837        }
8838        Self {
8839            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8840            GetLastError: GetLastError::<Identity, OFFSET>,
8841            GetTable: GetTable::<Identity, OFFSET>,
8842            ModifyTable: ModifyTable::<Identity, OFFSET>,
8843        }
8844    }
8845    pub fn matches(iid: &windows_core::GUID) -> bool {
8846        iid == &<IExchangeModifyTable as windows_core::Interface>::IID
8847    }
8848}
8849impl windows_core::RuntimeName for IExchangeModifyTable {}
8850windows_core::imp::define_interface!(
8851    IExchangeMoveUserProgress,
8852    IExchangeMoveUserProgress_Vtbl,
8853    0xef2fb44a_8dac_4e4e_b1e3_a3b926355617
8854);
8855windows_core::imp::interface_hierarchy!(IExchangeMoveUserProgress, windows_core::IUnknown);
8856impl IExchangeMoveUserProgress {
8857    pub unsafe fn NextFolder<P1>(
8858        &self,
8859        ulflags: u32,
8860        lpwszfoldername: P1,
8861    ) -> windows_core::Result<()>
8862    where
8863        P1: windows_core::Param<windows_core::PCWSTR>,
8864    {
8865        unsafe {
8866            (windows_core::Interface::vtable(self).NextFolder)(
8867                windows_core::Interface::as_raw(self),
8868                ulflags,
8869                lpwszfoldername.param().abi(),
8870            )
8871            .ok()
8872        }
8873    }
8874    pub unsafe fn Progress(
8875        &self,
8876        ulflags: u32,
8877        ulcount: u32,
8878        ultotal: u32,
8879    ) -> windows_core::Result<()> {
8880        unsafe {
8881            (windows_core::Interface::vtable(self).Progress)(
8882                windows_core::Interface::as_raw(self),
8883                ulflags,
8884                ulcount,
8885                ultotal,
8886            )
8887            .ok()
8888        }
8889    }
8890    pub unsafe fn Restart(&self, ulflags: u32) -> windows_core::Result<()> {
8891        unsafe {
8892            (windows_core::Interface::vtable(self).Restart)(
8893                windows_core::Interface::as_raw(self),
8894                ulflags,
8895            )
8896            .ok()
8897        }
8898    }
8899}
8900#[repr(C)]
8901#[doc(hidden)]
8902pub struct IExchangeMoveUserProgress_Vtbl {
8903    pub base__: windows_core::IUnknown_Vtbl,
8904    pub NextFolder: unsafe extern "system" fn(
8905        *mut core::ffi::c_void,
8906        u32,
8907        windows_core::PCWSTR,
8908    ) -> windows_core::HRESULT,
8909    pub Progress:
8910        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
8911    pub Restart: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
8912}
8913pub trait IExchangeMoveUserProgress_Impl: windows_core::IUnknownImpl {
8914    fn NextFolder(
8915        &self,
8916        ulflags: u32,
8917        lpwszfoldername: &windows_core::PCWSTR,
8918    ) -> windows_core::Result<()>;
8919    fn Progress(&self, ulflags: u32, ulcount: u32, ultotal: u32) -> windows_core::Result<()>;
8920    fn Restart(&self, ulflags: u32) -> windows_core::Result<()>;
8921}
8922impl IExchangeMoveUserProgress_Vtbl {
8923    pub const fn new<Identity: IExchangeMoveUserProgress_Impl, const OFFSET: isize>() -> Self {
8924        unsafe extern "system" fn NextFolder<
8925            Identity: IExchangeMoveUserProgress_Impl,
8926            const OFFSET: isize,
8927        >(
8928            this: *mut core::ffi::c_void,
8929            ulflags: u32,
8930            lpwszfoldername: windows_core::PCWSTR,
8931        ) -> windows_core::HRESULT {
8932            unsafe {
8933                let this: &Identity =
8934                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8935                IExchangeMoveUserProgress_Impl::NextFolder(
8936                    this,
8937                    core::mem::transmute_copy(&ulflags),
8938                    core::mem::transmute(&lpwszfoldername),
8939                )
8940                .into()
8941            }
8942        }
8943        unsafe extern "system" fn Progress<
8944            Identity: IExchangeMoveUserProgress_Impl,
8945            const OFFSET: isize,
8946        >(
8947            this: *mut core::ffi::c_void,
8948            ulflags: u32,
8949            ulcount: u32,
8950            ultotal: u32,
8951        ) -> windows_core::HRESULT {
8952            unsafe {
8953                let this: &Identity =
8954                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8955                IExchangeMoveUserProgress_Impl::Progress(
8956                    this,
8957                    core::mem::transmute_copy(&ulflags),
8958                    core::mem::transmute_copy(&ulcount),
8959                    core::mem::transmute_copy(&ultotal),
8960                )
8961                .into()
8962            }
8963        }
8964        unsafe extern "system" fn Restart<
8965            Identity: IExchangeMoveUserProgress_Impl,
8966            const OFFSET: isize,
8967        >(
8968            this: *mut core::ffi::c_void,
8969            ulflags: u32,
8970        ) -> windows_core::HRESULT {
8971            unsafe {
8972                let this: &Identity =
8973                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
8974                IExchangeMoveUserProgress_Impl::Restart(this, core::mem::transmute_copy(&ulflags))
8975                    .into()
8976            }
8977        }
8978        Self {
8979            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
8980            NextFolder: NextFolder::<Identity, OFFSET>,
8981            Progress: Progress::<Identity, OFFSET>,
8982            Restart: Restart::<Identity, OFFSET>,
8983        }
8984    }
8985    pub fn matches(iid: &windows_core::GUID) -> bool {
8986        iid == &<IExchangeMoveUserProgress as windows_core::Interface>::IID
8987    }
8988}
8989impl windows_core::RuntimeName for IExchangeMoveUserProgress {}
8990windows_core::imp::define_interface!(
8991    IExchangeNntpNewsfeed,
8992    IExchangeNntpNewsfeed_Vtbl,
8993    0x380f41c0_3cdc_11d0_9792_00c04fd6551d
8994);
8995windows_core::imp::interface_hierarchy!(IExchangeNntpNewsfeed, windows_core::IUnknown);
8996impl IExchangeNntpNewsfeed {
8997    pub unsafe fn Configure<P0>(
8998        &self,
8999        lpsznewsfeeddn: P0,
9000        cvalues: u32,
9001        lpimailproparray: *mut SPropValue,
9002    ) -> windows_core::Result<()>
9003    where
9004        P0: windows_core::Param<windows_core::PCSTR>,
9005    {
9006        unsafe {
9007            (windows_core::Interface::vtable(self).Configure)(
9008                windows_core::Interface::as_raw(self),
9009                lpsznewsfeeddn.param().abi(),
9010                cvalues,
9011                lpimailproparray as _,
9012            )
9013            .ok()
9014        }
9015    }
9016    pub unsafe fn CheckMsgIds<P0>(
9017        &self,
9018        lpszmsgids: P0,
9019        lpcfwanted: *mut u32,
9020        lppfwanted: *mut *mut u8,
9021    ) -> windows_core::Result<()>
9022    where
9023        P0: windows_core::Param<windows_core::PCSTR>,
9024    {
9025        unsafe {
9026            (windows_core::Interface::vtable(self).CheckMsgIds)(
9027                windows_core::Interface::as_raw(self),
9028                lpszmsgids.param().abi(),
9029                lpcfwanted as _,
9030                lppfwanted as _,
9031            )
9032            .ok()
9033        }
9034    }
9035    pub unsafe fn OpenArticleStream(
9036        &self,
9037    ) -> windows_core::Result<windows::Win32::System::Com::IStream> {
9038        unsafe {
9039            let mut result__ = core::mem::zeroed();
9040            (windows_core::Interface::vtable(self).OpenArticleStream)(
9041                windows_core::Interface::as_raw(self),
9042                &mut result__,
9043            )
9044            .and_then(|| windows_core::Type::from_abi(result__))
9045        }
9046    }
9047}
9048#[repr(C)]
9049#[doc(hidden)]
9050pub struct IExchangeNntpNewsfeed_Vtbl {
9051    pub base__: windows_core::IUnknown_Vtbl,
9052    pub Configure: unsafe extern "system" fn(
9053        *mut core::ffi::c_void,
9054        windows_core::PCSTR,
9055        u32,
9056        *mut SPropValue,
9057    ) -> windows_core::HRESULT,
9058    pub CheckMsgIds: unsafe extern "system" fn(
9059        *mut core::ffi::c_void,
9060        windows_core::PCSTR,
9061        *mut u32,
9062        *mut *mut u8,
9063    ) -> windows_core::HRESULT,
9064    pub OpenArticleStream: unsafe extern "system" fn(
9065        *mut core::ffi::c_void,
9066        *mut *mut core::ffi::c_void,
9067    ) -> windows_core::HRESULT,
9068}
9069pub trait IExchangeNntpNewsfeed_Impl: windows_core::IUnknownImpl {
9070    fn Configure(
9071        &self,
9072        lpsznewsfeeddn: &windows_core::PCSTR,
9073        cvalues: u32,
9074        lpimailproparray: *mut SPropValue,
9075    ) -> windows_core::Result<()>;
9076    fn CheckMsgIds(
9077        &self,
9078        lpszmsgids: &windows_core::PCSTR,
9079        lpcfwanted: *mut u32,
9080        lppfwanted: *mut *mut u8,
9081    ) -> windows_core::Result<()>;
9082    fn OpenArticleStream(&self) -> windows_core::Result<windows::Win32::System::Com::IStream>;
9083}
9084impl IExchangeNntpNewsfeed_Vtbl {
9085    pub const fn new<Identity: IExchangeNntpNewsfeed_Impl, const OFFSET: isize>() -> Self {
9086        unsafe extern "system" fn Configure<
9087            Identity: IExchangeNntpNewsfeed_Impl,
9088            const OFFSET: isize,
9089        >(
9090            this: *mut core::ffi::c_void,
9091            lpsznewsfeeddn: windows_core::PCSTR,
9092            cvalues: u32,
9093            lpimailproparray: *mut SPropValue,
9094        ) -> windows_core::HRESULT {
9095            unsafe {
9096                let this: &Identity =
9097                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9098                IExchangeNntpNewsfeed_Impl::Configure(
9099                    this,
9100                    core::mem::transmute(&lpsznewsfeeddn),
9101                    core::mem::transmute_copy(&cvalues),
9102                    core::mem::transmute_copy(&lpimailproparray),
9103                )
9104                .into()
9105            }
9106        }
9107        unsafe extern "system" fn CheckMsgIds<
9108            Identity: IExchangeNntpNewsfeed_Impl,
9109            const OFFSET: isize,
9110        >(
9111            this: *mut core::ffi::c_void,
9112            lpszmsgids: windows_core::PCSTR,
9113            lpcfwanted: *mut u32,
9114            lppfwanted: *mut *mut u8,
9115        ) -> windows_core::HRESULT {
9116            unsafe {
9117                let this: &Identity =
9118                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9119                IExchangeNntpNewsfeed_Impl::CheckMsgIds(
9120                    this,
9121                    core::mem::transmute(&lpszmsgids),
9122                    core::mem::transmute_copy(&lpcfwanted),
9123                    core::mem::transmute_copy(&lppfwanted),
9124                )
9125                .into()
9126            }
9127        }
9128        unsafe extern "system" fn OpenArticleStream<
9129            Identity: IExchangeNntpNewsfeed_Impl,
9130            const OFFSET: isize,
9131        >(
9132            this: *mut core::ffi::c_void,
9133            lppstream: *mut *mut core::ffi::c_void,
9134        ) -> windows_core::HRESULT {
9135            unsafe {
9136                let this: &Identity =
9137                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9138                match IExchangeNntpNewsfeed_Impl::OpenArticleStream(this) {
9139                    Ok(ok__) => {
9140                        lppstream.write(core::mem::transmute(ok__));
9141                        windows_core::HRESULT(0)
9142                    }
9143                    Err(err) => err.into(),
9144                }
9145            }
9146        }
9147        Self {
9148            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9149            Configure: Configure::<Identity, OFFSET>,
9150            CheckMsgIds: CheckMsgIds::<Identity, OFFSET>,
9151            OpenArticleStream: OpenArticleStream::<Identity, OFFSET>,
9152        }
9153    }
9154    pub fn matches(iid: &windows_core::GUID) -> bool {
9155        iid == &<IExchangeNntpNewsfeed as windows_core::Interface>::IID
9156    }
9157}
9158impl windows_core::RuntimeName for IExchangeNntpNewsfeed {}
9159windows_core::imp::define_interface!(
9160    IExchangeRuleAction,
9161    IExchangeRuleAction_Vtbl,
9162    0x74bba840_c93a_11ce_9581_00aa005742f7
9163);
9164windows_core::imp::interface_hierarchy!(IExchangeRuleAction, windows_core::IUnknown);
9165impl IExchangeRuleAction {
9166    pub unsafe fn ActionCount(&self, lpcactions: *mut u32) -> windows_core::Result<()> {
9167        unsafe {
9168            (windows_core::Interface::vtable(self).ActionCount)(
9169                windows_core::Interface::as_raw(self),
9170                lpcactions as _,
9171            )
9172            .ok()
9173        }
9174    }
9175    pub unsafe fn GetAction(
9176        &self,
9177        ulactionnumber: u32,
9178        lpruleid: *mut i64,
9179        lppaction: *mut *mut ACTION,
9180    ) -> windows_core::Result<()> {
9181        unsafe {
9182            (windows_core::Interface::vtable(self).GetAction)(
9183                windows_core::Interface::as_raw(self),
9184                ulactionnumber,
9185                lpruleid as _,
9186                lppaction as _,
9187            )
9188            .ok()
9189        }
9190    }
9191}
9192#[repr(C)]
9193#[doc(hidden)]
9194pub struct IExchangeRuleAction_Vtbl {
9195    pub base__: windows_core::IUnknown_Vtbl,
9196    pub ActionCount:
9197        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
9198    pub GetAction: unsafe extern "system" fn(
9199        *mut core::ffi::c_void,
9200        u32,
9201        *mut i64,
9202        *mut *mut ACTION,
9203    ) -> windows_core::HRESULT,
9204}
9205pub trait IExchangeRuleAction_Impl: windows_core::IUnknownImpl {
9206    fn ActionCount(&self, lpcactions: *mut u32) -> windows_core::Result<()>;
9207    fn GetAction(
9208        &self,
9209        ulactionnumber: u32,
9210        lpruleid: *mut i64,
9211        lppaction: *mut *mut ACTION,
9212    ) -> windows_core::Result<()>;
9213}
9214impl IExchangeRuleAction_Vtbl {
9215    pub const fn new<Identity: IExchangeRuleAction_Impl, const OFFSET: isize>() -> Self {
9216        unsafe extern "system" fn ActionCount<
9217            Identity: IExchangeRuleAction_Impl,
9218            const OFFSET: isize,
9219        >(
9220            this: *mut core::ffi::c_void,
9221            lpcactions: *mut u32,
9222        ) -> windows_core::HRESULT {
9223            unsafe {
9224                let this: &Identity =
9225                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9226                IExchangeRuleAction_Impl::ActionCount(this, core::mem::transmute_copy(&lpcactions))
9227                    .into()
9228            }
9229        }
9230        unsafe extern "system" fn GetAction<
9231            Identity: IExchangeRuleAction_Impl,
9232            const OFFSET: isize,
9233        >(
9234            this: *mut core::ffi::c_void,
9235            ulactionnumber: u32,
9236            lpruleid: *mut i64,
9237            lppaction: *mut *mut ACTION,
9238        ) -> windows_core::HRESULT {
9239            unsafe {
9240                let this: &Identity =
9241                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9242                IExchangeRuleAction_Impl::GetAction(
9243                    this,
9244                    core::mem::transmute_copy(&ulactionnumber),
9245                    core::mem::transmute_copy(&lpruleid),
9246                    core::mem::transmute_copy(&lppaction),
9247                )
9248                .into()
9249            }
9250        }
9251        Self {
9252            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9253            ActionCount: ActionCount::<Identity, OFFSET>,
9254            GetAction: GetAction::<Identity, OFFSET>,
9255        }
9256    }
9257    pub fn matches(iid: &windows_core::GUID) -> bool {
9258        iid == &<IExchangeRuleAction as windows_core::Interface>::IID
9259    }
9260}
9261impl windows_core::RuntimeName for IExchangeRuleAction {}
9262windows_core::imp::define_interface!(
9263    IFontCache,
9264    IFontCache_Vtbl,
9265    0xb0d17fc2_7bc4_11d1_bdfa_00c04fa31009
9266);
9267windows_core::imp::interface_hierarchy!(IFontCache, windows_core::IUnknown);
9268impl IFontCache {
9269    pub unsafe fn Init<P1>(
9270        &self,
9271        hkey: windows::Win32::System::Registry::HKEY,
9272        pszintlkey: P1,
9273        dwflags: u32,
9274    ) -> windows_core::Result<()>
9275    where
9276        P1: windows_core::Param<windows_core::PCSTR>,
9277    {
9278        unsafe {
9279            (windows_core::Interface::vtable(self).Init)(
9280                windows_core::Interface::as_raw(self),
9281                hkey,
9282                pszintlkey.param().abi(),
9283                dwflags,
9284            )
9285            .ok()
9286        }
9287    }
9288    pub unsafe fn GetFont(
9289        &self,
9290        fnttype: FNTSYSTYPE,
9291        hcharset: *mut HCHARSET__,
9292        phfont: *mut windows::Win32::Graphics::Gdi::HFONT,
9293    ) -> windows_core::Result<()> {
9294        unsafe {
9295            (windows_core::Interface::vtable(self).GetFont)(
9296                windows_core::Interface::as_raw(self),
9297                fnttype,
9298                hcharset as _,
9299                phfont as _,
9300            )
9301            .ok()
9302        }
9303    }
9304    pub unsafe fn OnOptionChange(&self) -> windows_core::Result<()> {
9305        unsafe {
9306            (windows_core::Interface::vtable(self).OnOptionChange)(windows_core::Interface::as_raw(
9307                self,
9308            ))
9309            .ok()
9310        }
9311    }
9312    pub unsafe fn GetJP_ISOControl(
9313        &self,
9314        pfusesio: *mut windows_core::BOOL,
9315    ) -> windows_core::Result<()> {
9316        unsafe {
9317            (windows_core::Interface::vtable(self).GetJP_ISOControl)(
9318                windows_core::Interface::as_raw(self),
9319                pfusesio as _,
9320            )
9321            .ok()
9322        }
9323    }
9324}
9325#[repr(C)]
9326#[doc(hidden)]
9327pub struct IFontCache_Vtbl {
9328    pub base__: windows_core::IUnknown_Vtbl,
9329    pub Init: unsafe extern "system" fn(
9330        *mut core::ffi::c_void,
9331        windows::Win32::System::Registry::HKEY,
9332        windows_core::PCSTR,
9333        u32,
9334    ) -> windows_core::HRESULT,
9335    pub GetFont: unsafe extern "system" fn(
9336        *mut core::ffi::c_void,
9337        FNTSYSTYPE,
9338        *mut HCHARSET__,
9339        *mut windows::Win32::Graphics::Gdi::HFONT,
9340    ) -> windows_core::HRESULT,
9341    pub OnOptionChange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9342    pub GetJP_ISOControl: unsafe extern "system" fn(
9343        *mut core::ffi::c_void,
9344        *mut windows_core::BOOL,
9345    ) -> windows_core::HRESULT,
9346}
9347pub trait IFontCache_Impl: windows_core::IUnknownImpl {
9348    fn Init(
9349        &self,
9350        hkey: windows::Win32::System::Registry::HKEY,
9351        pszintlkey: &windows_core::PCSTR,
9352        dwflags: u32,
9353    ) -> windows_core::Result<()>;
9354    fn GetFont(
9355        &self,
9356        fnttype: FNTSYSTYPE,
9357        hcharset: *mut HCHARSET__,
9358        phfont: *mut windows::Win32::Graphics::Gdi::HFONT,
9359    ) -> windows_core::Result<()>;
9360    fn OnOptionChange(&self) -> windows_core::Result<()>;
9361    fn GetJP_ISOControl(&self, pfusesio: *mut windows_core::BOOL) -> windows_core::Result<()>;
9362}
9363impl IFontCache_Vtbl {
9364    pub const fn new<Identity: IFontCache_Impl, const OFFSET: isize>() -> Self {
9365        unsafe extern "system" fn Init<Identity: IFontCache_Impl, const OFFSET: isize>(
9366            this: *mut core::ffi::c_void,
9367            hkey: windows::Win32::System::Registry::HKEY,
9368            pszintlkey: windows_core::PCSTR,
9369            dwflags: u32,
9370        ) -> windows_core::HRESULT {
9371            unsafe {
9372                let this: &Identity =
9373                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9374                IFontCache_Impl::Init(
9375                    this,
9376                    core::mem::transmute_copy(&hkey),
9377                    core::mem::transmute(&pszintlkey),
9378                    core::mem::transmute_copy(&dwflags),
9379                )
9380                .into()
9381            }
9382        }
9383        unsafe extern "system" fn GetFont<Identity: IFontCache_Impl, const OFFSET: isize>(
9384            this: *mut core::ffi::c_void,
9385            fnttype: FNTSYSTYPE,
9386            hcharset: *mut HCHARSET__,
9387            phfont: *mut windows::Win32::Graphics::Gdi::HFONT,
9388        ) -> windows_core::HRESULT {
9389            unsafe {
9390                let this: &Identity =
9391                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9392                IFontCache_Impl::GetFont(
9393                    this,
9394                    core::mem::transmute_copy(&fnttype),
9395                    core::mem::transmute_copy(&hcharset),
9396                    core::mem::transmute_copy(&phfont),
9397                )
9398                .into()
9399            }
9400        }
9401        unsafe extern "system" fn OnOptionChange<Identity: IFontCache_Impl, const OFFSET: isize>(
9402            this: *mut core::ffi::c_void,
9403        ) -> windows_core::HRESULT {
9404            unsafe {
9405                let this: &Identity =
9406                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9407                IFontCache_Impl::OnOptionChange(this).into()
9408            }
9409        }
9410        unsafe extern "system" fn GetJP_ISOControl<
9411            Identity: IFontCache_Impl,
9412            const OFFSET: isize,
9413        >(
9414            this: *mut core::ffi::c_void,
9415            pfusesio: *mut windows_core::BOOL,
9416        ) -> windows_core::HRESULT {
9417            unsafe {
9418                let this: &Identity =
9419                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9420                IFontCache_Impl::GetJP_ISOControl(this, core::mem::transmute_copy(&pfusesio)).into()
9421            }
9422        }
9423        Self {
9424            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9425            Init: Init::<Identity, OFFSET>,
9426            GetFont: GetFont::<Identity, OFFSET>,
9427            OnOptionChange: OnOptionChange::<Identity, OFFSET>,
9428            GetJP_ISOControl: GetJP_ISOControl::<Identity, OFFSET>,
9429        }
9430    }
9431    pub fn matches(iid: &windows_core::GUID) -> bool {
9432        iid == &<IFontCache as windows_core::Interface>::IID
9433    }
9434}
9435impl windows_core::RuntimeName for IFontCache {}
9436windows_core::imp::define_interface!(
9437    IFontCacheNotify,
9438    IFontCacheNotify_Vtbl,
9439    0xb0d17fc5_7bc4_11d1_bdfa_00c04fa31009
9440);
9441windows_core::imp::interface_hierarchy!(IFontCacheNotify, windows_core::IUnknown);
9442impl IFontCacheNotify {
9443    pub unsafe fn OnPreFontChange(&self) -> windows_core::Result<()> {
9444        unsafe {
9445            (windows_core::Interface::vtable(self).OnPreFontChange)(
9446                windows_core::Interface::as_raw(self),
9447            )
9448            .ok()
9449        }
9450    }
9451    pub unsafe fn OnPostFontChange(&self) -> windows_core::Result<()> {
9452        unsafe {
9453            (windows_core::Interface::vtable(self).OnPostFontChange)(
9454                windows_core::Interface::as_raw(self),
9455            )
9456            .ok()
9457        }
9458    }
9459}
9460#[repr(C)]
9461#[doc(hidden)]
9462pub struct IFontCacheNotify_Vtbl {
9463    pub base__: windows_core::IUnknown_Vtbl,
9464    pub OnPreFontChange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9465    pub OnPostFontChange:
9466        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9467}
9468pub trait IFontCacheNotify_Impl: windows_core::IUnknownImpl {
9469    fn OnPreFontChange(&self) -> windows_core::Result<()>;
9470    fn OnPostFontChange(&self) -> windows_core::Result<()>;
9471}
9472impl IFontCacheNotify_Vtbl {
9473    pub const fn new<Identity: IFontCacheNotify_Impl, const OFFSET: isize>() -> Self {
9474        unsafe extern "system" fn OnPreFontChange<
9475            Identity: IFontCacheNotify_Impl,
9476            const OFFSET: isize,
9477        >(
9478            this: *mut core::ffi::c_void,
9479        ) -> windows_core::HRESULT {
9480            unsafe {
9481                let this: &Identity =
9482                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9483                IFontCacheNotify_Impl::OnPreFontChange(this).into()
9484            }
9485        }
9486        unsafe extern "system" fn OnPostFontChange<
9487            Identity: IFontCacheNotify_Impl,
9488            const OFFSET: isize,
9489        >(
9490            this: *mut core::ffi::c_void,
9491        ) -> windows_core::HRESULT {
9492            unsafe {
9493                let this: &Identity =
9494                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9495                IFontCacheNotify_Impl::OnPostFontChange(this).into()
9496            }
9497        }
9498        Self {
9499            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9500            OnPreFontChange: OnPreFontChange::<Identity, OFFSET>,
9501            OnPostFontChange: OnPostFontChange::<Identity, OFFSET>,
9502        }
9503    }
9504    pub fn matches(iid: &windows_core::GUID) -> bool {
9505        iid == &<IFontCacheNotify as windows_core::Interface>::IID
9506    }
9507}
9508impl windows_core::RuntimeName for IFontCacheNotify {}
9509windows_core::imp::define_interface!(
9510    IHashTable,
9511    IHashTable_Vtbl,
9512    0x64577981_86d7_11d1_bdfc_00c04fa31009
9513);
9514windows_core::imp::interface_hierarchy!(IHashTable, windows_core::IUnknown);
9515impl IHashTable {
9516    pub unsafe fn Init(&self, dwsize: u32, fdupekeys: bool) -> windows_core::Result<()> {
9517        unsafe {
9518            (windows_core::Interface::vtable(self).Init)(
9519                windows_core::Interface::as_raw(self),
9520                dwsize,
9521                fdupekeys.into(),
9522            )
9523            .ok()
9524        }
9525    }
9526    pub unsafe fn Insert<P0>(
9527        &self,
9528        psz: P0,
9529        pv: *mut core::ffi::c_void,
9530        dwflags: u32,
9531    ) -> windows_core::Result<()>
9532    where
9533        P0: windows_core::Param<windows_core::PCSTR>,
9534    {
9535        unsafe {
9536            (windows_core::Interface::vtable(self).Insert)(
9537                windows_core::Interface::as_raw(self),
9538                psz.param().abi(),
9539                pv as _,
9540                dwflags,
9541            )
9542            .ok()
9543        }
9544    }
9545    pub unsafe fn Replace<P0>(
9546        &self,
9547        psz: P0,
9548        pv: *mut core::ffi::c_void,
9549    ) -> windows_core::Result<()>
9550    where
9551        P0: windows_core::Param<windows_core::PCSTR>,
9552    {
9553        unsafe {
9554            (windows_core::Interface::vtable(self).Replace)(
9555                windows_core::Interface::as_raw(self),
9556                psz.param().abi(),
9557                pv as _,
9558            )
9559            .ok()
9560        }
9561    }
9562    pub unsafe fn Find<P0>(
9563        &self,
9564        psz: P0,
9565        fremove: bool,
9566        ppv: *mut *mut core::ffi::c_void,
9567    ) -> windows_core::Result<()>
9568    where
9569        P0: windows_core::Param<windows_core::PCSTR>,
9570    {
9571        unsafe {
9572            (windows_core::Interface::vtable(self).Find)(
9573                windows_core::Interface::as_raw(self),
9574                psz.param().abi(),
9575                fremove.into(),
9576                ppv as _,
9577            )
9578            .ok()
9579        }
9580    }
9581    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
9582        unsafe {
9583            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
9584                .ok()
9585        }
9586    }
9587    pub unsafe fn Next(
9588        &self,
9589        cfetch: u32,
9590        prgpv: *mut *mut *mut core::ffi::c_void,
9591        pcfetched: *mut u32,
9592    ) -> windows_core::Result<()> {
9593        unsafe {
9594            (windows_core::Interface::vtable(self).Next)(
9595                windows_core::Interface::as_raw(self),
9596                cfetch,
9597                prgpv as _,
9598                pcfetched as _,
9599            )
9600            .ok()
9601        }
9602    }
9603}
9604#[repr(C)]
9605#[doc(hidden)]
9606pub struct IHashTable_Vtbl {
9607    pub base__: windows_core::IUnknown_Vtbl,
9608    pub Init: unsafe extern "system" fn(
9609        *mut core::ffi::c_void,
9610        u32,
9611        windows_core::BOOL,
9612    ) -> windows_core::HRESULT,
9613    pub Insert: unsafe extern "system" fn(
9614        *mut core::ffi::c_void,
9615        windows_core::PCSTR,
9616        *mut core::ffi::c_void,
9617        u32,
9618    ) -> windows_core::HRESULT,
9619    pub Replace: unsafe extern "system" fn(
9620        *mut core::ffi::c_void,
9621        windows_core::PCSTR,
9622        *mut core::ffi::c_void,
9623    ) -> windows_core::HRESULT,
9624    pub Find: unsafe extern "system" fn(
9625        *mut core::ffi::c_void,
9626        windows_core::PCSTR,
9627        windows_core::BOOL,
9628        *mut *mut core::ffi::c_void,
9629    ) -> windows_core::HRESULT,
9630    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9631    pub Next: unsafe extern "system" fn(
9632        *mut core::ffi::c_void,
9633        u32,
9634        *mut *mut *mut core::ffi::c_void,
9635        *mut u32,
9636    ) -> windows_core::HRESULT,
9637}
9638pub trait IHashTable_Impl: windows_core::IUnknownImpl {
9639    fn Init(&self, dwsize: u32, fdupekeys: windows_core::BOOL) -> windows_core::Result<()>;
9640    fn Insert(
9641        &self,
9642        psz: &windows_core::PCSTR,
9643        pv: *mut core::ffi::c_void,
9644        dwflags: u32,
9645    ) -> windows_core::Result<()>;
9646    fn Replace(
9647        &self,
9648        psz: &windows_core::PCSTR,
9649        pv: *mut core::ffi::c_void,
9650    ) -> windows_core::Result<()>;
9651    fn Find(
9652        &self,
9653        psz: &windows_core::PCSTR,
9654        fremove: windows_core::BOOL,
9655        ppv: *mut *mut core::ffi::c_void,
9656    ) -> windows_core::Result<()>;
9657    fn Reset(&self) -> windows_core::Result<()>;
9658    fn Next(
9659        &self,
9660        cfetch: u32,
9661        prgpv: *mut *mut *mut core::ffi::c_void,
9662        pcfetched: *mut u32,
9663    ) -> windows_core::Result<()>;
9664}
9665impl IHashTable_Vtbl {
9666    pub const fn new<Identity: IHashTable_Impl, const OFFSET: isize>() -> Self {
9667        unsafe extern "system" fn Init<Identity: IHashTable_Impl, const OFFSET: isize>(
9668            this: *mut core::ffi::c_void,
9669            dwsize: u32,
9670            fdupekeys: windows_core::BOOL,
9671        ) -> windows_core::HRESULT {
9672            unsafe {
9673                let this: &Identity =
9674                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9675                IHashTable_Impl::Init(
9676                    this,
9677                    core::mem::transmute_copy(&dwsize),
9678                    core::mem::transmute_copy(&fdupekeys),
9679                )
9680                .into()
9681            }
9682        }
9683        unsafe extern "system" fn Insert<Identity: IHashTable_Impl, const OFFSET: isize>(
9684            this: *mut core::ffi::c_void,
9685            psz: windows_core::PCSTR,
9686            pv: *mut core::ffi::c_void,
9687            dwflags: u32,
9688        ) -> windows_core::HRESULT {
9689            unsafe {
9690                let this: &Identity =
9691                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9692                IHashTable_Impl::Insert(
9693                    this,
9694                    core::mem::transmute(&psz),
9695                    core::mem::transmute_copy(&pv),
9696                    core::mem::transmute_copy(&dwflags),
9697                )
9698                .into()
9699            }
9700        }
9701        unsafe extern "system" fn Replace<Identity: IHashTable_Impl, const OFFSET: isize>(
9702            this: *mut core::ffi::c_void,
9703            psz: windows_core::PCSTR,
9704            pv: *mut core::ffi::c_void,
9705        ) -> windows_core::HRESULT {
9706            unsafe {
9707                let this: &Identity =
9708                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9709                IHashTable_Impl::Replace(
9710                    this,
9711                    core::mem::transmute(&psz),
9712                    core::mem::transmute_copy(&pv),
9713                )
9714                .into()
9715            }
9716        }
9717        unsafe extern "system" fn Find<Identity: IHashTable_Impl, const OFFSET: isize>(
9718            this: *mut core::ffi::c_void,
9719            psz: windows_core::PCSTR,
9720            fremove: windows_core::BOOL,
9721            ppv: *mut *mut core::ffi::c_void,
9722        ) -> windows_core::HRESULT {
9723            unsafe {
9724                let this: &Identity =
9725                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9726                IHashTable_Impl::Find(
9727                    this,
9728                    core::mem::transmute(&psz),
9729                    core::mem::transmute_copy(&fremove),
9730                    core::mem::transmute_copy(&ppv),
9731                )
9732                .into()
9733            }
9734        }
9735        unsafe extern "system" fn Reset<Identity: IHashTable_Impl, const OFFSET: isize>(
9736            this: *mut core::ffi::c_void,
9737        ) -> windows_core::HRESULT {
9738            unsafe {
9739                let this: &Identity =
9740                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9741                IHashTable_Impl::Reset(this).into()
9742            }
9743        }
9744        unsafe extern "system" fn Next<Identity: IHashTable_Impl, const OFFSET: isize>(
9745            this: *mut core::ffi::c_void,
9746            cfetch: u32,
9747            prgpv: *mut *mut *mut core::ffi::c_void,
9748            pcfetched: *mut u32,
9749        ) -> windows_core::HRESULT {
9750            unsafe {
9751                let this: &Identity =
9752                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9753                IHashTable_Impl::Next(
9754                    this,
9755                    core::mem::transmute_copy(&cfetch),
9756                    core::mem::transmute_copy(&prgpv),
9757                    core::mem::transmute_copy(&pcfetched),
9758                )
9759                .into()
9760            }
9761        }
9762        Self {
9763            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9764            Init: Init::<Identity, OFFSET>,
9765            Insert: Insert::<Identity, OFFSET>,
9766            Replace: Replace::<Identity, OFFSET>,
9767            Find: Find::<Identity, OFFSET>,
9768            Reset: Reset::<Identity, OFFSET>,
9769            Next: Next::<Identity, OFFSET>,
9770        }
9771    }
9772    pub fn matches(iid: &windows_core::GUID) -> bool {
9773        iid == &<IHashTable as windows_core::Interface>::IID
9774    }
9775}
9776impl windows_core::RuntimeName for IHashTable {}
9777pub const ILM_BODYCSET: INETLANGMASK = INETLANGMASK(4i32);
9778pub const ILM_FAMILY: INETLANGMASK = INETLANGMASK(1i32);
9779pub const ILM_FIXEDFONT: INETLANGMASK = INETLANGMASK(32i32);
9780pub const ILM_HEADERCSET: INETLANGMASK = INETLANGMASK(8i32);
9781pub const ILM_NAME: INETLANGMASK = INETLANGMASK(2i32);
9782pub const ILM_VARIABLEFONT: INETLANGMASK = INETLANGMASK(64i32);
9783pub const ILM_WEBCSET: INETLANGMASK = INETLANGMASK(16i32);
9784windows_core::imp::define_interface!(
9785    IMAPIAdviseSink,
9786    IMAPIAdviseSink_Vtbl,
9787    0x00020302_0000_0000_c000_000000000046
9788);
9789windows_core::imp::interface_hierarchy!(IMAPIAdviseSink, windows_core::IUnknown);
9790impl IMAPIAdviseSink {
9791    pub unsafe fn OnNotify(&self, cnotif: u32, lpnotifications: *mut NOTIFICATION) -> u32 {
9792        unsafe {
9793            (windows_core::Interface::vtable(self).OnNotify)(
9794                windows_core::Interface::as_raw(self),
9795                cnotif,
9796                lpnotifications as _,
9797            )
9798        }
9799    }
9800}
9801#[repr(C)]
9802#[doc(hidden)]
9803pub struct IMAPIAdviseSink_Vtbl {
9804    pub base__: windows_core::IUnknown_Vtbl,
9805    pub OnNotify: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut NOTIFICATION) -> u32,
9806}
9807pub trait IMAPIAdviseSink_Impl: windows_core::IUnknownImpl {
9808    fn OnNotify(&self, cnotif: u32, lpnotifications: *mut NOTIFICATION) -> u32;
9809}
9810impl IMAPIAdviseSink_Vtbl {
9811    pub const fn new<Identity: IMAPIAdviseSink_Impl, const OFFSET: isize>() -> Self {
9812        unsafe extern "system" fn OnNotify<Identity: IMAPIAdviseSink_Impl, const OFFSET: isize>(
9813            this: *mut core::ffi::c_void,
9814            cnotif: u32,
9815            lpnotifications: *mut NOTIFICATION,
9816        ) -> u32 {
9817            unsafe {
9818                let this: &Identity =
9819                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9820                IMAPIAdviseSink_Impl::OnNotify(
9821                    this,
9822                    core::mem::transmute_copy(&cnotif),
9823                    core::mem::transmute_copy(&lpnotifications),
9824                )
9825            }
9826        }
9827        Self {
9828            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9829            OnNotify: OnNotify::<Identity, OFFSET>,
9830        }
9831    }
9832    pub fn matches(iid: &windows_core::GUID) -> bool {
9833        iid == &<IMAPIAdviseSink as windows_core::Interface>::IID
9834    }
9835}
9836impl windows_core::RuntimeName for IMAPIAdviseSink {}
9837pub const IMAPIAdviseSink_OnNotify: METHODS = METHODS(137i32);
9838windows_core::imp::define_interface!(
9839    IMAPIClientShutdown,
9840    IMAPIClientShutdown_Vtbl,
9841    0x00020397_0000_0000_c000_000000000046
9842);
9843windows_core::imp::interface_hierarchy!(IMAPIClientShutdown, windows_core::IUnknown);
9844impl IMAPIClientShutdown {
9845    pub unsafe fn QueryFastShutdown(&self) -> windows_core::Result<()> {
9846        unsafe {
9847            (windows_core::Interface::vtable(self).QueryFastShutdown)(
9848                windows_core::Interface::as_raw(self),
9849            )
9850            .ok()
9851        }
9852    }
9853    pub unsafe fn NotifyProcessShutdown(&self) -> windows_core::Result<()> {
9854        unsafe {
9855            (windows_core::Interface::vtable(self).NotifyProcessShutdown)(
9856                windows_core::Interface::as_raw(self),
9857            )
9858            .ok()
9859        }
9860    }
9861    pub unsafe fn DoFastShutdown(&self) -> windows_core::Result<()> {
9862        unsafe {
9863            (windows_core::Interface::vtable(self).DoFastShutdown)(windows_core::Interface::as_raw(
9864                self,
9865            ))
9866            .ok()
9867        }
9868    }
9869}
9870#[repr(C)]
9871#[doc(hidden)]
9872pub struct IMAPIClientShutdown_Vtbl {
9873    pub base__: windows_core::IUnknown_Vtbl,
9874    pub QueryFastShutdown:
9875        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9876    pub NotifyProcessShutdown:
9877        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9878    pub DoFastShutdown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
9879}
9880pub trait IMAPIClientShutdown_Impl: windows_core::IUnknownImpl {
9881    fn QueryFastShutdown(&self) -> windows_core::Result<()>;
9882    fn NotifyProcessShutdown(&self) -> windows_core::Result<()>;
9883    fn DoFastShutdown(&self) -> windows_core::Result<()>;
9884}
9885impl IMAPIClientShutdown_Vtbl {
9886    pub const fn new<Identity: IMAPIClientShutdown_Impl, const OFFSET: isize>() -> Self {
9887        unsafe extern "system" fn QueryFastShutdown<
9888            Identity: IMAPIClientShutdown_Impl,
9889            const OFFSET: isize,
9890        >(
9891            this: *mut core::ffi::c_void,
9892        ) -> windows_core::HRESULT {
9893            unsafe {
9894                let this: &Identity =
9895                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9896                IMAPIClientShutdown_Impl::QueryFastShutdown(this).into()
9897            }
9898        }
9899        unsafe extern "system" fn NotifyProcessShutdown<
9900            Identity: IMAPIClientShutdown_Impl,
9901            const OFFSET: isize,
9902        >(
9903            this: *mut core::ffi::c_void,
9904        ) -> windows_core::HRESULT {
9905            unsafe {
9906                let this: &Identity =
9907                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9908                IMAPIClientShutdown_Impl::NotifyProcessShutdown(this).into()
9909            }
9910        }
9911        unsafe extern "system" fn DoFastShutdown<
9912            Identity: IMAPIClientShutdown_Impl,
9913            const OFFSET: isize,
9914        >(
9915            this: *mut core::ffi::c_void,
9916        ) -> windows_core::HRESULT {
9917            unsafe {
9918                let this: &Identity =
9919                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
9920                IMAPIClientShutdown_Impl::DoFastShutdown(this).into()
9921            }
9922        }
9923        Self {
9924            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
9925            QueryFastShutdown: QueryFastShutdown::<Identity, OFFSET>,
9926            NotifyProcessShutdown: NotifyProcessShutdown::<Identity, OFFSET>,
9927            DoFastShutdown: DoFastShutdown::<Identity, OFFSET>,
9928        }
9929    }
9930    pub fn matches(iid: &windows_core::GUID) -> bool {
9931        iid == &<IMAPIClientShutdown as windows_core::Interface>::IID
9932    }
9933}
9934impl windows_core::RuntimeName for IMAPIClientShutdown {}
9935windows_core::imp::define_interface!(
9936    IMAPIContainer,
9937    IMAPIContainer_Vtbl,
9938    0x0002030b_0000_0000_c000_000000000046
9939);
9940impl core::ops::Deref for IMAPIContainer {
9941    type Target = IMAPIProp;
9942    fn deref(&self) -> &Self::Target {
9943        unsafe { core::mem::transmute(self) }
9944    }
9945}
9946windows_core::imp::interface_hierarchy!(IMAPIContainer, windows_core::IUnknown, IMAPIProp);
9947impl IMAPIContainer {
9948    pub unsafe fn GetContentsTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
9949        unsafe {
9950            let mut result__ = core::mem::zeroed();
9951            (windows_core::Interface::vtable(self).GetContentsTable)(
9952                windows_core::Interface::as_raw(self),
9953                ulflags,
9954                &mut result__,
9955            )
9956            .and_then(|| windows_core::Type::from_abi(result__))
9957        }
9958    }
9959    pub unsafe fn GetHierarchyTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
9960        unsafe {
9961            let mut result__ = core::mem::zeroed();
9962            (windows_core::Interface::vtable(self).GetHierarchyTable)(
9963                windows_core::Interface::as_raw(self),
9964                ulflags,
9965                &mut result__,
9966            )
9967            .and_then(|| windows_core::Type::from_abi(result__))
9968        }
9969    }
9970    pub unsafe fn OpenEntry(
9971        &self,
9972        cbentryid: u32,
9973        lpentryid: *mut ENTRYID,
9974        lpinterface: *mut windows_core::GUID,
9975        ulflags: u32,
9976        lpulobjtype: *mut u32,
9977        lppunk: *mut Option<windows_core::IUnknown>,
9978    ) -> windows_core::Result<()> {
9979        unsafe {
9980            (windows_core::Interface::vtable(self).OpenEntry)(
9981                windows_core::Interface::as_raw(self),
9982                cbentryid,
9983                lpentryid as _,
9984                lpinterface as _,
9985                ulflags,
9986                lpulobjtype as _,
9987                core::mem::transmute(lppunk),
9988            )
9989            .ok()
9990        }
9991    }
9992    pub unsafe fn SetSearchCriteria(
9993        &self,
9994        lprestriction: *mut SRestriction,
9995        lpcontainerlist: *mut SBinaryArray,
9996        ulsearchflags: u32,
9997    ) -> windows_core::Result<()> {
9998        unsafe {
9999            (windows_core::Interface::vtable(self).SetSearchCriteria)(
10000                windows_core::Interface::as_raw(self),
10001                lprestriction as _,
10002                lpcontainerlist as _,
10003                ulsearchflags,
10004            )
10005            .ok()
10006        }
10007    }
10008    pub unsafe fn GetSearchCriteria(
10009        &self,
10010        ulflags: u32,
10011        lpprestriction: *mut *mut SRestriction,
10012        lppcontainerlist: *mut *mut SBinaryArray,
10013        lpulsearchstate: *mut u32,
10014    ) -> windows_core::Result<()> {
10015        unsafe {
10016            (windows_core::Interface::vtable(self).GetSearchCriteria)(
10017                windows_core::Interface::as_raw(self),
10018                ulflags,
10019                lpprestriction as _,
10020                lppcontainerlist as _,
10021                lpulsearchstate as _,
10022            )
10023            .ok()
10024        }
10025    }
10026}
10027#[repr(C)]
10028#[doc(hidden)]
10029pub struct IMAPIContainer_Vtbl {
10030    pub base__: IMAPIProp_Vtbl,
10031    pub GetContentsTable: unsafe extern "system" fn(
10032        *mut core::ffi::c_void,
10033        u32,
10034        *mut *mut core::ffi::c_void,
10035    ) -> windows_core::HRESULT,
10036    pub GetHierarchyTable: unsafe extern "system" fn(
10037        *mut core::ffi::c_void,
10038        u32,
10039        *mut *mut core::ffi::c_void,
10040    ) -> windows_core::HRESULT,
10041    pub OpenEntry: unsafe extern "system" fn(
10042        *mut core::ffi::c_void,
10043        u32,
10044        *mut ENTRYID,
10045        *mut windows_core::GUID,
10046        u32,
10047        *mut u32,
10048        *mut *mut core::ffi::c_void,
10049    ) -> windows_core::HRESULT,
10050    pub SetSearchCriteria: unsafe extern "system" fn(
10051        *mut core::ffi::c_void,
10052        *mut SRestriction,
10053        *mut SBinaryArray,
10054        u32,
10055    ) -> windows_core::HRESULT,
10056    pub GetSearchCriteria: unsafe extern "system" fn(
10057        *mut core::ffi::c_void,
10058        u32,
10059        *mut *mut SRestriction,
10060        *mut *mut SBinaryArray,
10061        *mut u32,
10062    ) -> windows_core::HRESULT,
10063}
10064pub trait IMAPIContainer_Impl: IMAPIProp_Impl {
10065    fn GetContentsTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
10066    fn GetHierarchyTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
10067    fn OpenEntry(
10068        &self,
10069        cbentryid: u32,
10070        lpentryid: *mut ENTRYID,
10071        lpinterface: *mut windows_core::GUID,
10072        ulflags: u32,
10073        lpulobjtype: *mut u32,
10074        lppunk: windows_core::OutRef<windows_core::IUnknown>,
10075    ) -> windows_core::Result<()>;
10076    fn SetSearchCriteria(
10077        &self,
10078        lprestriction: *mut SRestriction,
10079        lpcontainerlist: *mut SBinaryArray,
10080        ulsearchflags: u32,
10081    ) -> windows_core::Result<()>;
10082    fn GetSearchCriteria(
10083        &self,
10084        ulflags: u32,
10085        lpprestriction: *mut *mut SRestriction,
10086        lppcontainerlist: *mut *mut SBinaryArray,
10087        lpulsearchstate: *mut u32,
10088    ) -> windows_core::Result<()>;
10089}
10090impl IMAPIContainer_Vtbl {
10091    pub const fn new<Identity: IMAPIContainer_Impl, const OFFSET: isize>() -> Self {
10092        unsafe extern "system" fn GetContentsTable<
10093            Identity: IMAPIContainer_Impl,
10094            const OFFSET: isize,
10095        >(
10096            this: *mut core::ffi::c_void,
10097            ulflags: u32,
10098            lpptable: *mut *mut core::ffi::c_void,
10099        ) -> windows_core::HRESULT {
10100            unsafe {
10101                let this: &Identity =
10102                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10103                match IMAPIContainer_Impl::GetContentsTable(
10104                    this,
10105                    core::mem::transmute_copy(&ulflags),
10106                ) {
10107                    Ok(ok__) => {
10108                        lpptable.write(core::mem::transmute(ok__));
10109                        windows_core::HRESULT(0)
10110                    }
10111                    Err(err) => err.into(),
10112                }
10113            }
10114        }
10115        unsafe extern "system" fn GetHierarchyTable<
10116            Identity: IMAPIContainer_Impl,
10117            const OFFSET: isize,
10118        >(
10119            this: *mut core::ffi::c_void,
10120            ulflags: u32,
10121            lpptable: *mut *mut core::ffi::c_void,
10122        ) -> windows_core::HRESULT {
10123            unsafe {
10124                let this: &Identity =
10125                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10126                match IMAPIContainer_Impl::GetHierarchyTable(
10127                    this,
10128                    core::mem::transmute_copy(&ulflags),
10129                ) {
10130                    Ok(ok__) => {
10131                        lpptable.write(core::mem::transmute(ok__));
10132                        windows_core::HRESULT(0)
10133                    }
10134                    Err(err) => err.into(),
10135                }
10136            }
10137        }
10138        unsafe extern "system" fn OpenEntry<Identity: IMAPIContainer_Impl, const OFFSET: isize>(
10139            this: *mut core::ffi::c_void,
10140            cbentryid: u32,
10141            lpentryid: *mut ENTRYID,
10142            lpinterface: *mut windows_core::GUID,
10143            ulflags: u32,
10144            lpulobjtype: *mut u32,
10145            lppunk: *mut *mut core::ffi::c_void,
10146        ) -> windows_core::HRESULT {
10147            unsafe {
10148                let this: &Identity =
10149                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10150                IMAPIContainer_Impl::OpenEntry(
10151                    this,
10152                    core::mem::transmute_copy(&cbentryid),
10153                    core::mem::transmute_copy(&lpentryid),
10154                    core::mem::transmute_copy(&lpinterface),
10155                    core::mem::transmute_copy(&ulflags),
10156                    core::mem::transmute_copy(&lpulobjtype),
10157                    core::mem::transmute_copy(&lppunk),
10158                )
10159                .into()
10160            }
10161        }
10162        unsafe extern "system" fn SetSearchCriteria<
10163            Identity: IMAPIContainer_Impl,
10164            const OFFSET: isize,
10165        >(
10166            this: *mut core::ffi::c_void,
10167            lprestriction: *mut SRestriction,
10168            lpcontainerlist: *mut SBinaryArray,
10169            ulsearchflags: u32,
10170        ) -> windows_core::HRESULT {
10171            unsafe {
10172                let this: &Identity =
10173                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10174                IMAPIContainer_Impl::SetSearchCriteria(
10175                    this,
10176                    core::mem::transmute_copy(&lprestriction),
10177                    core::mem::transmute_copy(&lpcontainerlist),
10178                    core::mem::transmute_copy(&ulsearchflags),
10179                )
10180                .into()
10181            }
10182        }
10183        unsafe extern "system" fn GetSearchCriteria<
10184            Identity: IMAPIContainer_Impl,
10185            const OFFSET: isize,
10186        >(
10187            this: *mut core::ffi::c_void,
10188            ulflags: u32,
10189            lpprestriction: *mut *mut SRestriction,
10190            lppcontainerlist: *mut *mut SBinaryArray,
10191            lpulsearchstate: *mut u32,
10192        ) -> windows_core::HRESULT {
10193            unsafe {
10194                let this: &Identity =
10195                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10196                IMAPIContainer_Impl::GetSearchCriteria(
10197                    this,
10198                    core::mem::transmute_copy(&ulflags),
10199                    core::mem::transmute_copy(&lpprestriction),
10200                    core::mem::transmute_copy(&lppcontainerlist),
10201                    core::mem::transmute_copy(&lpulsearchstate),
10202                )
10203                .into()
10204            }
10205        }
10206        Self {
10207            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
10208            GetContentsTable: GetContentsTable::<Identity, OFFSET>,
10209            GetHierarchyTable: GetHierarchyTable::<Identity, OFFSET>,
10210            OpenEntry: OpenEntry::<Identity, OFFSET>,
10211            SetSearchCriteria: SetSearchCriteria::<Identity, OFFSET>,
10212            GetSearchCriteria: GetSearchCriteria::<Identity, OFFSET>,
10213        }
10214    }
10215    pub fn matches(iid: &windows_core::GUID) -> bool {
10216        iid == &<IMAPIContainer as windows_core::Interface>::IID
10217            || iid == &<IMAPIProp as windows_core::Interface>::IID
10218    }
10219}
10220impl windows_core::RuntimeName for IMAPIContainer {}
10221pub const IMAPIContainer_GetContentsTable: METHODS = METHODS(37i32);
10222pub const IMAPIContainer_GetHierarchyTable: METHODS = METHODS(38i32);
10223pub const IMAPIContainer_GetSearchCriteria: METHODS = METHODS(41i32);
10224pub const IMAPIContainer_OpenEntry: METHODS = METHODS(39i32);
10225pub const IMAPIContainer_SetSearchCriteria: METHODS = METHODS(40i32);
10226windows_core::imp::define_interface!(
10227    IMAPIControl,
10228    IMAPIControl_Vtbl,
10229    0x0002031b_0000_0000_c000_000000000046
10230);
10231windows_core::imp::interface_hierarchy!(IMAPIControl, windows_core::IUnknown);
10232impl IMAPIControl {
10233    pub unsafe fn GetLastError(
10234        &self,
10235        hresult: windows_core::HRESULT,
10236        ulflags: u32,
10237        lppmapierror: *mut *mut MAPIERROR,
10238    ) -> windows_core::Result<()> {
10239        unsafe {
10240            (windows_core::Interface::vtable(self).GetLastError)(
10241                windows_core::Interface::as_raw(self),
10242                hresult,
10243                ulflags,
10244                lppmapierror as _,
10245            )
10246            .ok()
10247        }
10248    }
10249    pub unsafe fn Activate(&self, ulflags: u32, uluiparam: usize) -> windows_core::Result<()> {
10250        unsafe {
10251            (windows_core::Interface::vtable(self).Activate)(
10252                windows_core::Interface::as_raw(self),
10253                ulflags,
10254                uluiparam,
10255            )
10256            .ok()
10257        }
10258    }
10259    pub unsafe fn GetState(&self, ulflags: u32, lpulstate: *mut u32) -> windows_core::Result<()> {
10260        unsafe {
10261            (windows_core::Interface::vtable(self).GetState)(
10262                windows_core::Interface::as_raw(self),
10263                ulflags,
10264                lpulstate as _,
10265            )
10266            .ok()
10267        }
10268    }
10269}
10270#[repr(C)]
10271#[doc(hidden)]
10272pub struct IMAPIControl_Vtbl {
10273    pub base__: windows_core::IUnknown_Vtbl,
10274    pub GetLastError: unsafe extern "system" fn(
10275        *mut core::ffi::c_void,
10276        windows_core::HRESULT,
10277        u32,
10278        *mut *mut MAPIERROR,
10279    ) -> windows_core::HRESULT,
10280    pub Activate:
10281        unsafe extern "system" fn(*mut core::ffi::c_void, u32, usize) -> windows_core::HRESULT,
10282    pub GetState:
10283        unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
10284}
10285pub trait IMAPIControl_Impl: windows_core::IUnknownImpl {
10286    fn GetLastError(
10287        &self,
10288        hresult: windows_core::HRESULT,
10289        ulflags: u32,
10290        lppmapierror: *mut *mut MAPIERROR,
10291    ) -> windows_core::Result<()>;
10292    fn Activate(&self, ulflags: u32, uluiparam: usize) -> windows_core::Result<()>;
10293    fn GetState(&self, ulflags: u32, lpulstate: *mut u32) -> windows_core::Result<()>;
10294}
10295impl IMAPIControl_Vtbl {
10296    pub const fn new<Identity: IMAPIControl_Impl, const OFFSET: isize>() -> Self {
10297        unsafe extern "system" fn GetLastError<Identity: IMAPIControl_Impl, const OFFSET: isize>(
10298            this: *mut core::ffi::c_void,
10299            hresult: windows_core::HRESULT,
10300            ulflags: u32,
10301            lppmapierror: *mut *mut MAPIERROR,
10302        ) -> windows_core::HRESULT {
10303            unsafe {
10304                let this: &Identity =
10305                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10306                IMAPIControl_Impl::GetLastError(
10307                    this,
10308                    core::mem::transmute_copy(&hresult),
10309                    core::mem::transmute_copy(&ulflags),
10310                    core::mem::transmute_copy(&lppmapierror),
10311                )
10312                .into()
10313            }
10314        }
10315        unsafe extern "system" fn Activate<Identity: IMAPIControl_Impl, const OFFSET: isize>(
10316            this: *mut core::ffi::c_void,
10317            ulflags: u32,
10318            uluiparam: usize,
10319        ) -> windows_core::HRESULT {
10320            unsafe {
10321                let this: &Identity =
10322                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10323                IMAPIControl_Impl::Activate(
10324                    this,
10325                    core::mem::transmute_copy(&ulflags),
10326                    core::mem::transmute_copy(&uluiparam),
10327                )
10328                .into()
10329            }
10330        }
10331        unsafe extern "system" fn GetState<Identity: IMAPIControl_Impl, const OFFSET: isize>(
10332            this: *mut core::ffi::c_void,
10333            ulflags: u32,
10334            lpulstate: *mut u32,
10335        ) -> windows_core::HRESULT {
10336            unsafe {
10337                let this: &Identity =
10338                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10339                IMAPIControl_Impl::GetState(
10340                    this,
10341                    core::mem::transmute_copy(&ulflags),
10342                    core::mem::transmute_copy(&lpulstate),
10343                )
10344                .into()
10345            }
10346        }
10347        Self {
10348            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
10349            GetLastError: GetLastError::<Identity, OFFSET>,
10350            Activate: Activate::<Identity, OFFSET>,
10351            GetState: GetState::<Identity, OFFSET>,
10352        }
10353    }
10354    pub fn matches(iid: &windows_core::GUID) -> bool {
10355        iid == &<IMAPIControl as windows_core::Interface>::IID
10356    }
10357}
10358impl windows_core::RuntimeName for IMAPIControl {}
10359pub const IMAPIControl_Activate: METHODS = METHODS(120i32);
10360pub const IMAPIControl_GetLastError: METHODS = METHODS(119i32);
10361pub const IMAPIControl_GetState: METHODS = METHODS(121i32);
10362windows_core::imp::define_interface!(
10363    IMAPIFolder,
10364    IMAPIFolder_Vtbl,
10365    0x0002030c_0000_0000_c000_000000000046
10366);
10367impl core::ops::Deref for IMAPIFolder {
10368    type Target = IMAPIContainer;
10369    fn deref(&self) -> &Self::Target {
10370        unsafe { core::mem::transmute(self) }
10371    }
10372}
10373windows_core::imp::interface_hierarchy!(
10374    IMAPIFolder,
10375    windows_core::IUnknown,
10376    IMAPIProp,
10377    IMAPIContainer
10378);
10379impl IMAPIFolder {
10380    pub unsafe fn CreateMessage(
10381        &self,
10382        lpinterface: *mut windows_core::GUID,
10383        ulflags: u32,
10384        lppmessage: *mut Option<IMessage>,
10385    ) -> windows_core::Result<()> {
10386        unsafe {
10387            (windows_core::Interface::vtable(self).CreateMessage)(
10388                windows_core::Interface::as_raw(self),
10389                lpinterface as _,
10390                ulflags,
10391                core::mem::transmute(lppmessage),
10392            )
10393            .ok()
10394        }
10395    }
10396    pub unsafe fn CopyMessages<P4>(
10397        &self,
10398        lpmsglist: *mut SBinaryArray,
10399        lpinterface: *mut windows_core::GUID,
10400        lpdestfolder: *mut core::ffi::c_void,
10401        uluiparam: usize,
10402        lpprogress: P4,
10403        ulflags: u32,
10404    ) -> windows_core::Result<()>
10405    where
10406        P4: windows_core::Param<IMAPIProgress>,
10407    {
10408        unsafe {
10409            (windows_core::Interface::vtable(self).CopyMessages)(
10410                windows_core::Interface::as_raw(self),
10411                lpmsglist as _,
10412                lpinterface as _,
10413                lpdestfolder as _,
10414                uluiparam,
10415                lpprogress.param().abi(),
10416                ulflags,
10417            )
10418            .ok()
10419        }
10420    }
10421    pub unsafe fn DeleteMessages<P2>(
10422        &self,
10423        lpmsglist: *mut SBinaryArray,
10424        uluiparam: usize,
10425        lpprogress: P2,
10426        ulflags: u32,
10427    ) -> windows_core::Result<()>
10428    where
10429        P2: windows_core::Param<IMAPIProgress>,
10430    {
10431        unsafe {
10432            (windows_core::Interface::vtable(self).DeleteMessages)(
10433                windows_core::Interface::as_raw(self),
10434                lpmsglist as _,
10435                uluiparam,
10436                lpprogress.param().abi(),
10437                ulflags,
10438            )
10439            .ok()
10440        }
10441    }
10442    pub unsafe fn CreateFolder(
10443        &self,
10444        ulfoldertype: u32,
10445        lpszfoldername: *mut i8,
10446        lpszfoldercomment: *mut i8,
10447        lpinterface: *mut windows_core::GUID,
10448        ulflags: u32,
10449        lppfolder: *mut Option<IMAPIFolder>,
10450    ) -> windows_core::Result<()> {
10451        unsafe {
10452            (windows_core::Interface::vtable(self).CreateFolder)(
10453                windows_core::Interface::as_raw(self),
10454                ulfoldertype,
10455                lpszfoldername as _,
10456                lpszfoldercomment as _,
10457                lpinterface as _,
10458                ulflags,
10459                core::mem::transmute(lppfolder),
10460            )
10461            .ok()
10462        }
10463    }
10464    pub unsafe fn CopyFolder<P6>(
10465        &self,
10466        cbentryid: u32,
10467        lpentryid: *mut ENTRYID,
10468        lpinterface: *mut windows_core::GUID,
10469        lpdestfolder: *mut core::ffi::c_void,
10470        lpsznewfoldername: *mut i8,
10471        uluiparam: usize,
10472        lpprogress: P6,
10473        ulflags: u32,
10474    ) -> windows_core::Result<()>
10475    where
10476        P6: windows_core::Param<IMAPIProgress>,
10477    {
10478        unsafe {
10479            (windows_core::Interface::vtable(self).CopyFolder)(
10480                windows_core::Interface::as_raw(self),
10481                cbentryid,
10482                lpentryid as _,
10483                lpinterface as _,
10484                lpdestfolder as _,
10485                lpsznewfoldername as _,
10486                uluiparam,
10487                lpprogress.param().abi(),
10488                ulflags,
10489            )
10490            .ok()
10491        }
10492    }
10493    pub unsafe fn DeleteFolder<P3>(
10494        &self,
10495        cbentryid: u32,
10496        lpentryid: *mut ENTRYID,
10497        uluiparam: usize,
10498        lpprogress: P3,
10499        ulflags: u32,
10500    ) -> windows_core::Result<()>
10501    where
10502        P3: windows_core::Param<IMAPIProgress>,
10503    {
10504        unsafe {
10505            (windows_core::Interface::vtable(self).DeleteFolder)(
10506                windows_core::Interface::as_raw(self),
10507                cbentryid,
10508                lpentryid as _,
10509                uluiparam,
10510                lpprogress.param().abi(),
10511                ulflags,
10512            )
10513            .ok()
10514        }
10515    }
10516    pub unsafe fn SetReadFlags<P2>(
10517        &self,
10518        lpmsglist: *mut SBinaryArray,
10519        uluiparam: usize,
10520        lpprogress: P2,
10521        ulflags: u32,
10522    ) -> windows_core::Result<()>
10523    where
10524        P2: windows_core::Param<IMAPIProgress>,
10525    {
10526        unsafe {
10527            (windows_core::Interface::vtable(self).SetReadFlags)(
10528                windows_core::Interface::as_raw(self),
10529                lpmsglist as _,
10530                uluiparam,
10531                lpprogress.param().abi(),
10532                ulflags,
10533            )
10534            .ok()
10535        }
10536    }
10537    pub unsafe fn GetMessageStatus(
10538        &self,
10539        cbentryid: u32,
10540        lpentryid: *mut ENTRYID,
10541        ulflags: u32,
10542        lpulmessagestatus: *mut u32,
10543    ) -> windows_core::Result<()> {
10544        unsafe {
10545            (windows_core::Interface::vtable(self).GetMessageStatus)(
10546                windows_core::Interface::as_raw(self),
10547                cbentryid,
10548                lpentryid as _,
10549                ulflags,
10550                lpulmessagestatus as _,
10551            )
10552            .ok()
10553        }
10554    }
10555    pub unsafe fn SetMessageStatus(
10556        &self,
10557        cbentryid: u32,
10558        lpentryid: *mut ENTRYID,
10559        ulnewstatus: u32,
10560        ulnewstatusmask: u32,
10561        lpuloldstatus: *mut u32,
10562    ) -> windows_core::Result<()> {
10563        unsafe {
10564            (windows_core::Interface::vtable(self).SetMessageStatus)(
10565                windows_core::Interface::as_raw(self),
10566                cbentryid,
10567                lpentryid as _,
10568                ulnewstatus,
10569                ulnewstatusmask,
10570                lpuloldstatus as _,
10571            )
10572            .ok()
10573        }
10574    }
10575    pub unsafe fn SaveContentsSort(
10576        &self,
10577        lpsortcriteria: *mut SSortOrderSet,
10578        ulflags: u32,
10579    ) -> windows_core::Result<()> {
10580        unsafe {
10581            (windows_core::Interface::vtable(self).SaveContentsSort)(
10582                windows_core::Interface::as_raw(self),
10583                lpsortcriteria as _,
10584                ulflags,
10585            )
10586            .ok()
10587        }
10588    }
10589    pub unsafe fn EmptyFolder<P1>(
10590        &self,
10591        uluiparam: usize,
10592        lpprogress: P1,
10593        ulflags: u32,
10594    ) -> windows_core::Result<()>
10595    where
10596        P1: windows_core::Param<IMAPIProgress>,
10597    {
10598        unsafe {
10599            (windows_core::Interface::vtable(self).EmptyFolder)(
10600                windows_core::Interface::as_raw(self),
10601                uluiparam,
10602                lpprogress.param().abi(),
10603                ulflags,
10604            )
10605            .ok()
10606        }
10607    }
10608}
10609#[repr(C)]
10610#[doc(hidden)]
10611pub struct IMAPIFolder_Vtbl {
10612    pub base__: IMAPIContainer_Vtbl,
10613    pub CreateMessage: unsafe extern "system" fn(
10614        *mut core::ffi::c_void,
10615        *mut windows_core::GUID,
10616        u32,
10617        *mut *mut core::ffi::c_void,
10618    ) -> windows_core::HRESULT,
10619    pub CopyMessages: unsafe extern "system" fn(
10620        *mut core::ffi::c_void,
10621        *mut SBinaryArray,
10622        *mut windows_core::GUID,
10623        *mut core::ffi::c_void,
10624        usize,
10625        *mut core::ffi::c_void,
10626        u32,
10627    ) -> windows_core::HRESULT,
10628    pub DeleteMessages: unsafe extern "system" fn(
10629        *mut core::ffi::c_void,
10630        *mut SBinaryArray,
10631        usize,
10632        *mut core::ffi::c_void,
10633        u32,
10634    ) -> windows_core::HRESULT,
10635    pub CreateFolder: unsafe extern "system" fn(
10636        *mut core::ffi::c_void,
10637        u32,
10638        *mut i8,
10639        *mut i8,
10640        *mut windows_core::GUID,
10641        u32,
10642        *mut *mut core::ffi::c_void,
10643    ) -> windows_core::HRESULT,
10644    pub CopyFolder: unsafe extern "system" fn(
10645        *mut core::ffi::c_void,
10646        u32,
10647        *mut ENTRYID,
10648        *mut windows_core::GUID,
10649        *mut core::ffi::c_void,
10650        *mut i8,
10651        usize,
10652        *mut core::ffi::c_void,
10653        u32,
10654    ) -> windows_core::HRESULT,
10655    pub DeleteFolder: unsafe extern "system" fn(
10656        *mut core::ffi::c_void,
10657        u32,
10658        *mut ENTRYID,
10659        usize,
10660        *mut core::ffi::c_void,
10661        u32,
10662    ) -> windows_core::HRESULT,
10663    pub SetReadFlags: unsafe extern "system" fn(
10664        *mut core::ffi::c_void,
10665        *mut SBinaryArray,
10666        usize,
10667        *mut core::ffi::c_void,
10668        u32,
10669    ) -> windows_core::HRESULT,
10670    pub GetMessageStatus: unsafe extern "system" fn(
10671        *mut core::ffi::c_void,
10672        u32,
10673        *mut ENTRYID,
10674        u32,
10675        *mut u32,
10676    ) -> windows_core::HRESULT,
10677    pub SetMessageStatus: unsafe extern "system" fn(
10678        *mut core::ffi::c_void,
10679        u32,
10680        *mut ENTRYID,
10681        u32,
10682        u32,
10683        *mut u32,
10684    ) -> windows_core::HRESULT,
10685    pub SaveContentsSort: unsafe extern "system" fn(
10686        *mut core::ffi::c_void,
10687        *mut SSortOrderSet,
10688        u32,
10689    ) -> windows_core::HRESULT,
10690    pub EmptyFolder: unsafe extern "system" fn(
10691        *mut core::ffi::c_void,
10692        usize,
10693        *mut core::ffi::c_void,
10694        u32,
10695    ) -> windows_core::HRESULT,
10696}
10697pub trait IMAPIFolder_Impl: IMAPIContainer_Impl {
10698    fn CreateMessage(
10699        &self,
10700        lpinterface: *mut windows_core::GUID,
10701        ulflags: u32,
10702        lppmessage: windows_core::OutRef<IMessage>,
10703    ) -> windows_core::Result<()>;
10704    fn CopyMessages(
10705        &self,
10706        lpmsglist: *mut SBinaryArray,
10707        lpinterface: *mut windows_core::GUID,
10708        lpdestfolder: *mut core::ffi::c_void,
10709        uluiparam: usize,
10710        lpprogress: windows_core::Ref<IMAPIProgress>,
10711        ulflags: u32,
10712    ) -> windows_core::Result<()>;
10713    fn DeleteMessages(
10714        &self,
10715        lpmsglist: *mut SBinaryArray,
10716        uluiparam: usize,
10717        lpprogress: windows_core::Ref<IMAPIProgress>,
10718        ulflags: u32,
10719    ) -> windows_core::Result<()>;
10720    fn CreateFolder(
10721        &self,
10722        ulfoldertype: u32,
10723        lpszfoldername: *mut i8,
10724        lpszfoldercomment: *mut i8,
10725        lpinterface: *mut windows_core::GUID,
10726        ulflags: u32,
10727        lppfolder: windows_core::OutRef<IMAPIFolder>,
10728    ) -> windows_core::Result<()>;
10729    fn CopyFolder(
10730        &self,
10731        cbentryid: u32,
10732        lpentryid: *mut ENTRYID,
10733        lpinterface: *mut windows_core::GUID,
10734        lpdestfolder: *mut core::ffi::c_void,
10735        lpsznewfoldername: *mut i8,
10736        uluiparam: usize,
10737        lpprogress: windows_core::Ref<IMAPIProgress>,
10738        ulflags: u32,
10739    ) -> windows_core::Result<()>;
10740    fn DeleteFolder(
10741        &self,
10742        cbentryid: u32,
10743        lpentryid: *mut ENTRYID,
10744        uluiparam: usize,
10745        lpprogress: windows_core::Ref<IMAPIProgress>,
10746        ulflags: u32,
10747    ) -> windows_core::Result<()>;
10748    fn SetReadFlags(
10749        &self,
10750        lpmsglist: *mut SBinaryArray,
10751        uluiparam: usize,
10752        lpprogress: windows_core::Ref<IMAPIProgress>,
10753        ulflags: u32,
10754    ) -> windows_core::Result<()>;
10755    fn GetMessageStatus(
10756        &self,
10757        cbentryid: u32,
10758        lpentryid: *mut ENTRYID,
10759        ulflags: u32,
10760        lpulmessagestatus: *mut u32,
10761    ) -> windows_core::Result<()>;
10762    fn SetMessageStatus(
10763        &self,
10764        cbentryid: u32,
10765        lpentryid: *mut ENTRYID,
10766        ulnewstatus: u32,
10767        ulnewstatusmask: u32,
10768        lpuloldstatus: *mut u32,
10769    ) -> windows_core::Result<()>;
10770    fn SaveContentsSort(
10771        &self,
10772        lpsortcriteria: *mut SSortOrderSet,
10773        ulflags: u32,
10774    ) -> windows_core::Result<()>;
10775    fn EmptyFolder(
10776        &self,
10777        uluiparam: usize,
10778        lpprogress: windows_core::Ref<IMAPIProgress>,
10779        ulflags: u32,
10780    ) -> windows_core::Result<()>;
10781}
10782impl IMAPIFolder_Vtbl {
10783    pub const fn new<Identity: IMAPIFolder_Impl, const OFFSET: isize>() -> Self {
10784        unsafe extern "system" fn CreateMessage<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10785            this: *mut core::ffi::c_void,
10786            lpinterface: *mut windows_core::GUID,
10787            ulflags: u32,
10788            lppmessage: *mut *mut core::ffi::c_void,
10789        ) -> windows_core::HRESULT {
10790            unsafe {
10791                let this: &Identity =
10792                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10793                IMAPIFolder_Impl::CreateMessage(
10794                    this,
10795                    core::mem::transmute_copy(&lpinterface),
10796                    core::mem::transmute_copy(&ulflags),
10797                    core::mem::transmute_copy(&lppmessage),
10798                )
10799                .into()
10800            }
10801        }
10802        unsafe extern "system" fn CopyMessages<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10803            this: *mut core::ffi::c_void,
10804            lpmsglist: *mut SBinaryArray,
10805            lpinterface: *mut windows_core::GUID,
10806            lpdestfolder: *mut core::ffi::c_void,
10807            uluiparam: usize,
10808            lpprogress: *mut core::ffi::c_void,
10809            ulflags: u32,
10810        ) -> windows_core::HRESULT {
10811            unsafe {
10812                let this: &Identity =
10813                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10814                IMAPIFolder_Impl::CopyMessages(
10815                    this,
10816                    core::mem::transmute_copy(&lpmsglist),
10817                    core::mem::transmute_copy(&lpinterface),
10818                    core::mem::transmute_copy(&lpdestfolder),
10819                    core::mem::transmute_copy(&uluiparam),
10820                    core::mem::transmute_copy(&lpprogress),
10821                    core::mem::transmute_copy(&ulflags),
10822                )
10823                .into()
10824            }
10825        }
10826        unsafe extern "system" fn DeleteMessages<
10827            Identity: IMAPIFolder_Impl,
10828            const OFFSET: isize,
10829        >(
10830            this: *mut core::ffi::c_void,
10831            lpmsglist: *mut SBinaryArray,
10832            uluiparam: usize,
10833            lpprogress: *mut core::ffi::c_void,
10834            ulflags: u32,
10835        ) -> windows_core::HRESULT {
10836            unsafe {
10837                let this: &Identity =
10838                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10839                IMAPIFolder_Impl::DeleteMessages(
10840                    this,
10841                    core::mem::transmute_copy(&lpmsglist),
10842                    core::mem::transmute_copy(&uluiparam),
10843                    core::mem::transmute_copy(&lpprogress),
10844                    core::mem::transmute_copy(&ulflags),
10845                )
10846                .into()
10847            }
10848        }
10849        unsafe extern "system" fn CreateFolder<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10850            this: *mut core::ffi::c_void,
10851            ulfoldertype: u32,
10852            lpszfoldername: *mut i8,
10853            lpszfoldercomment: *mut i8,
10854            lpinterface: *mut windows_core::GUID,
10855            ulflags: u32,
10856            lppfolder: *mut *mut core::ffi::c_void,
10857        ) -> windows_core::HRESULT {
10858            unsafe {
10859                let this: &Identity =
10860                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10861                IMAPIFolder_Impl::CreateFolder(
10862                    this,
10863                    core::mem::transmute_copy(&ulfoldertype),
10864                    core::mem::transmute_copy(&lpszfoldername),
10865                    core::mem::transmute_copy(&lpszfoldercomment),
10866                    core::mem::transmute_copy(&lpinterface),
10867                    core::mem::transmute_copy(&ulflags),
10868                    core::mem::transmute_copy(&lppfolder),
10869                )
10870                .into()
10871            }
10872        }
10873        unsafe extern "system" fn CopyFolder<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10874            this: *mut core::ffi::c_void,
10875            cbentryid: u32,
10876            lpentryid: *mut ENTRYID,
10877            lpinterface: *mut windows_core::GUID,
10878            lpdestfolder: *mut core::ffi::c_void,
10879            lpsznewfoldername: *mut i8,
10880            uluiparam: usize,
10881            lpprogress: *mut core::ffi::c_void,
10882            ulflags: u32,
10883        ) -> windows_core::HRESULT {
10884            unsafe {
10885                let this: &Identity =
10886                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10887                IMAPIFolder_Impl::CopyFolder(
10888                    this,
10889                    core::mem::transmute_copy(&cbentryid),
10890                    core::mem::transmute_copy(&lpentryid),
10891                    core::mem::transmute_copy(&lpinterface),
10892                    core::mem::transmute_copy(&lpdestfolder),
10893                    core::mem::transmute_copy(&lpsznewfoldername),
10894                    core::mem::transmute_copy(&uluiparam),
10895                    core::mem::transmute_copy(&lpprogress),
10896                    core::mem::transmute_copy(&ulflags),
10897                )
10898                .into()
10899            }
10900        }
10901        unsafe extern "system" fn DeleteFolder<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10902            this: *mut core::ffi::c_void,
10903            cbentryid: u32,
10904            lpentryid: *mut ENTRYID,
10905            uluiparam: usize,
10906            lpprogress: *mut core::ffi::c_void,
10907            ulflags: u32,
10908        ) -> windows_core::HRESULT {
10909            unsafe {
10910                let this: &Identity =
10911                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10912                IMAPIFolder_Impl::DeleteFolder(
10913                    this,
10914                    core::mem::transmute_copy(&cbentryid),
10915                    core::mem::transmute_copy(&lpentryid),
10916                    core::mem::transmute_copy(&uluiparam),
10917                    core::mem::transmute_copy(&lpprogress),
10918                    core::mem::transmute_copy(&ulflags),
10919                )
10920                .into()
10921            }
10922        }
10923        unsafe extern "system" fn SetReadFlags<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
10924            this: *mut core::ffi::c_void,
10925            lpmsglist: *mut SBinaryArray,
10926            uluiparam: usize,
10927            lpprogress: *mut core::ffi::c_void,
10928            ulflags: u32,
10929        ) -> windows_core::HRESULT {
10930            unsafe {
10931                let this: &Identity =
10932                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10933                IMAPIFolder_Impl::SetReadFlags(
10934                    this,
10935                    core::mem::transmute_copy(&lpmsglist),
10936                    core::mem::transmute_copy(&uluiparam),
10937                    core::mem::transmute_copy(&lpprogress),
10938                    core::mem::transmute_copy(&ulflags),
10939                )
10940                .into()
10941            }
10942        }
10943        unsafe extern "system" fn GetMessageStatus<
10944            Identity: IMAPIFolder_Impl,
10945            const OFFSET: isize,
10946        >(
10947            this: *mut core::ffi::c_void,
10948            cbentryid: u32,
10949            lpentryid: *mut ENTRYID,
10950            ulflags: u32,
10951            lpulmessagestatus: *mut u32,
10952        ) -> windows_core::HRESULT {
10953            unsafe {
10954                let this: &Identity =
10955                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10956                IMAPIFolder_Impl::GetMessageStatus(
10957                    this,
10958                    core::mem::transmute_copy(&cbentryid),
10959                    core::mem::transmute_copy(&lpentryid),
10960                    core::mem::transmute_copy(&ulflags),
10961                    core::mem::transmute_copy(&lpulmessagestatus),
10962                )
10963                .into()
10964            }
10965        }
10966        unsafe extern "system" fn SetMessageStatus<
10967            Identity: IMAPIFolder_Impl,
10968            const OFFSET: isize,
10969        >(
10970            this: *mut core::ffi::c_void,
10971            cbentryid: u32,
10972            lpentryid: *mut ENTRYID,
10973            ulnewstatus: u32,
10974            ulnewstatusmask: u32,
10975            lpuloldstatus: *mut u32,
10976        ) -> windows_core::HRESULT {
10977            unsafe {
10978                let this: &Identity =
10979                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
10980                IMAPIFolder_Impl::SetMessageStatus(
10981                    this,
10982                    core::mem::transmute_copy(&cbentryid),
10983                    core::mem::transmute_copy(&lpentryid),
10984                    core::mem::transmute_copy(&ulnewstatus),
10985                    core::mem::transmute_copy(&ulnewstatusmask),
10986                    core::mem::transmute_copy(&lpuloldstatus),
10987                )
10988                .into()
10989            }
10990        }
10991        unsafe extern "system" fn SaveContentsSort<
10992            Identity: IMAPIFolder_Impl,
10993            const OFFSET: isize,
10994        >(
10995            this: *mut core::ffi::c_void,
10996            lpsortcriteria: *mut SSortOrderSet,
10997            ulflags: u32,
10998        ) -> windows_core::HRESULT {
10999            unsafe {
11000                let this: &Identity =
11001                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11002                IMAPIFolder_Impl::SaveContentsSort(
11003                    this,
11004                    core::mem::transmute_copy(&lpsortcriteria),
11005                    core::mem::transmute_copy(&ulflags),
11006                )
11007                .into()
11008            }
11009        }
11010        unsafe extern "system" fn EmptyFolder<Identity: IMAPIFolder_Impl, const OFFSET: isize>(
11011            this: *mut core::ffi::c_void,
11012            uluiparam: usize,
11013            lpprogress: *mut core::ffi::c_void,
11014            ulflags: u32,
11015        ) -> windows_core::HRESULT {
11016            unsafe {
11017                let this: &Identity =
11018                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11019                IMAPIFolder_Impl::EmptyFolder(
11020                    this,
11021                    core::mem::transmute_copy(&uluiparam),
11022                    core::mem::transmute_copy(&lpprogress),
11023                    core::mem::transmute_copy(&ulflags),
11024                )
11025                .into()
11026            }
11027        }
11028        Self {
11029            base__: IMAPIContainer_Vtbl::new::<Identity, OFFSET>(),
11030            CreateMessage: CreateMessage::<Identity, OFFSET>,
11031            CopyMessages: CopyMessages::<Identity, OFFSET>,
11032            DeleteMessages: DeleteMessages::<Identity, OFFSET>,
11033            CreateFolder: CreateFolder::<Identity, OFFSET>,
11034            CopyFolder: CopyFolder::<Identity, OFFSET>,
11035            DeleteFolder: DeleteFolder::<Identity, OFFSET>,
11036            SetReadFlags: SetReadFlags::<Identity, OFFSET>,
11037            GetMessageStatus: GetMessageStatus::<Identity, OFFSET>,
11038            SetMessageStatus: SetMessageStatus::<Identity, OFFSET>,
11039            SaveContentsSort: SaveContentsSort::<Identity, OFFSET>,
11040            EmptyFolder: EmptyFolder::<Identity, OFFSET>,
11041        }
11042    }
11043    pub fn matches(iid: &windows_core::GUID) -> bool {
11044        iid == &<IMAPIFolder as windows_core::Interface>::IID
11045            || iid == &<IMAPIProp as windows_core::Interface>::IID
11046            || iid == &<IMAPIContainer as windows_core::Interface>::IID
11047    }
11048}
11049impl windows_core::RuntimeName for IMAPIFolder {}
11050pub const IMAPIFolder_CopyFolder: METHODS = METHODS(54i32);
11051pub const IMAPIFolder_CopyMessages: METHODS = METHODS(51i32);
11052pub const IMAPIFolder_CreateFolder: METHODS = METHODS(53i32);
11053pub const IMAPIFolder_CreateMessage: METHODS = METHODS(50i32);
11054pub const IMAPIFolder_DeleteFolder: METHODS = METHODS(55i32);
11055pub const IMAPIFolder_DeleteMessages: METHODS = METHODS(52i32);
11056pub const IMAPIFolder_EmptyFolder: METHODS = METHODS(60i32);
11057pub const IMAPIFolder_GetMessageStatus: METHODS = METHODS(57i32);
11058pub const IMAPIFolder_SaveContentsSort: METHODS = METHODS(59i32);
11059pub const IMAPIFolder_SetMessageStatus: METHODS = METHODS(58i32);
11060pub const IMAPIFolder_SetReadFlags: METHODS = METHODS(56i32);
11061windows_core::imp::define_interface!(
11062    IMAPIForm,
11063    IMAPIForm_Vtbl,
11064    0x00020327_0000_0000_c000_000000000046
11065);
11066windows_core::imp::interface_hierarchy!(IMAPIForm, windows_core::IUnknown);
11067impl IMAPIForm {
11068    pub unsafe fn GetLastError(
11069        &self,
11070        hresult: windows_core::HRESULT,
11071        ulflags: u32,
11072        lppmapierror: *mut *mut MAPIERROR,
11073    ) -> windows_core::Result<()> {
11074        unsafe {
11075            (windows_core::Interface::vtable(self).GetLastError)(
11076                windows_core::Interface::as_raw(self),
11077                hresult,
11078                ulflags,
11079                lppmapierror as _,
11080            )
11081            .ok()
11082        }
11083    }
11084    pub unsafe fn SetViewContext<P0>(&self, pviewcontext: P0) -> windows_core::Result<()>
11085    where
11086        P0: windows_core::Param<IMAPIViewContext>,
11087    {
11088        unsafe {
11089            (windows_core::Interface::vtable(self).SetViewContext)(
11090                windows_core::Interface::as_raw(self),
11091                pviewcontext.param().abi(),
11092            )
11093            .ok()
11094        }
11095    }
11096    pub unsafe fn GetViewContext(&self) -> windows_core::Result<IMAPIViewContext> {
11097        unsafe {
11098            let mut result__ = core::mem::zeroed();
11099            (windows_core::Interface::vtable(self).GetViewContext)(
11100                windows_core::Interface::as_raw(self),
11101                &mut result__,
11102            )
11103            .and_then(|| windows_core::Type::from_abi(result__))
11104        }
11105    }
11106    pub unsafe fn ShutdownForm(&self, ulsaveoptions: u32) -> windows_core::Result<()> {
11107        unsafe {
11108            (windows_core::Interface::vtable(self).ShutdownForm)(
11109                windows_core::Interface::as_raw(self),
11110                ulsaveoptions,
11111            )
11112            .ok()
11113        }
11114    }
11115    pub unsafe fn DoVerb<P1>(
11116        &self,
11117        iverb: i32,
11118        lpviewcontext: P1,
11119        hwndparent: usize,
11120        lprcposrect: *mut windows::Win32::Foundation::RECT,
11121    ) -> windows_core::Result<()>
11122    where
11123        P1: windows_core::Param<IMAPIViewContext>,
11124    {
11125        unsafe {
11126            (windows_core::Interface::vtable(self).DoVerb)(
11127                windows_core::Interface::as_raw(self),
11128                iverb,
11129                lpviewcontext.param().abi(),
11130                hwndparent,
11131                lprcposrect as _,
11132            )
11133            .ok()
11134        }
11135    }
11136    pub unsafe fn Advise<P0>(&self, padvise: P0, pdwstatus: *mut usize) -> windows_core::Result<()>
11137    where
11138        P0: windows_core::Param<IMAPIViewAdviseSink>,
11139    {
11140        unsafe {
11141            (windows_core::Interface::vtable(self).Advise)(
11142                windows_core::Interface::as_raw(self),
11143                padvise.param().abi(),
11144                pdwstatus as _,
11145            )
11146            .ok()
11147        }
11148    }
11149    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
11150        unsafe {
11151            (windows_core::Interface::vtable(self).Unadvise)(
11152                windows_core::Interface::as_raw(self),
11153                ulconnection,
11154            )
11155            .ok()
11156        }
11157    }
11158}
11159#[repr(C)]
11160#[doc(hidden)]
11161pub struct IMAPIForm_Vtbl {
11162    pub base__: windows_core::IUnknown_Vtbl,
11163    pub GetLastError: unsafe extern "system" fn(
11164        *mut core::ffi::c_void,
11165        windows_core::HRESULT,
11166        u32,
11167        *mut *mut MAPIERROR,
11168    ) -> windows_core::HRESULT,
11169    pub SetViewContext: unsafe extern "system" fn(
11170        *mut core::ffi::c_void,
11171        *mut core::ffi::c_void,
11172    ) -> windows_core::HRESULT,
11173    pub GetViewContext: unsafe extern "system" fn(
11174        *mut core::ffi::c_void,
11175        *mut *mut core::ffi::c_void,
11176    ) -> windows_core::HRESULT,
11177    pub ShutdownForm:
11178        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
11179    pub DoVerb: unsafe extern "system" fn(
11180        *mut core::ffi::c_void,
11181        i32,
11182        *mut core::ffi::c_void,
11183        usize,
11184        *mut windows::Win32::Foundation::RECT,
11185    ) -> windows_core::HRESULT,
11186    pub Advise: unsafe extern "system" fn(
11187        *mut core::ffi::c_void,
11188        *mut core::ffi::c_void,
11189        *mut usize,
11190    ) -> windows_core::HRESULT,
11191    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
11192}
11193pub trait IMAPIForm_Impl: windows_core::IUnknownImpl {
11194    fn GetLastError(
11195        &self,
11196        hresult: windows_core::HRESULT,
11197        ulflags: u32,
11198        lppmapierror: *mut *mut MAPIERROR,
11199    ) -> windows_core::Result<()>;
11200    fn SetViewContext(
11201        &self,
11202        pviewcontext: windows_core::Ref<IMAPIViewContext>,
11203    ) -> windows_core::Result<()>;
11204    fn GetViewContext(&self) -> windows_core::Result<IMAPIViewContext>;
11205    fn ShutdownForm(&self, ulsaveoptions: u32) -> windows_core::Result<()>;
11206    fn DoVerb(
11207        &self,
11208        iverb: i32,
11209        lpviewcontext: windows_core::Ref<IMAPIViewContext>,
11210        hwndparent: usize,
11211        lprcposrect: *mut windows::Win32::Foundation::RECT,
11212    ) -> windows_core::Result<()>;
11213    fn Advise(
11214        &self,
11215        padvise: windows_core::Ref<IMAPIViewAdviseSink>,
11216        pdwstatus: *mut usize,
11217    ) -> windows_core::Result<()>;
11218    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
11219}
11220impl IMAPIForm_Vtbl {
11221    pub const fn new<Identity: IMAPIForm_Impl, const OFFSET: isize>() -> Self {
11222        unsafe extern "system" fn GetLastError<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11223            this: *mut core::ffi::c_void,
11224            hresult: windows_core::HRESULT,
11225            ulflags: u32,
11226            lppmapierror: *mut *mut MAPIERROR,
11227        ) -> windows_core::HRESULT {
11228            unsafe {
11229                let this: &Identity =
11230                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11231                IMAPIForm_Impl::GetLastError(
11232                    this,
11233                    core::mem::transmute_copy(&hresult),
11234                    core::mem::transmute_copy(&ulflags),
11235                    core::mem::transmute_copy(&lppmapierror),
11236                )
11237                .into()
11238            }
11239        }
11240        unsafe extern "system" fn SetViewContext<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11241            this: *mut core::ffi::c_void,
11242            pviewcontext: *mut core::ffi::c_void,
11243        ) -> windows_core::HRESULT {
11244            unsafe {
11245                let this: &Identity =
11246                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11247                IMAPIForm_Impl::SetViewContext(this, core::mem::transmute_copy(&pviewcontext))
11248                    .into()
11249            }
11250        }
11251        unsafe extern "system" fn GetViewContext<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11252            this: *mut core::ffi::c_void,
11253            ppviewcontext: *mut *mut core::ffi::c_void,
11254        ) -> windows_core::HRESULT {
11255            unsafe {
11256                let this: &Identity =
11257                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11258                match IMAPIForm_Impl::GetViewContext(this) {
11259                    Ok(ok__) => {
11260                        ppviewcontext.write(core::mem::transmute(ok__));
11261                        windows_core::HRESULT(0)
11262                    }
11263                    Err(err) => err.into(),
11264                }
11265            }
11266        }
11267        unsafe extern "system" fn ShutdownForm<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11268            this: *mut core::ffi::c_void,
11269            ulsaveoptions: u32,
11270        ) -> windows_core::HRESULT {
11271            unsafe {
11272                let this: &Identity =
11273                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11274                IMAPIForm_Impl::ShutdownForm(this, core::mem::transmute_copy(&ulsaveoptions)).into()
11275            }
11276        }
11277        unsafe extern "system" fn DoVerb<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11278            this: *mut core::ffi::c_void,
11279            iverb: i32,
11280            lpviewcontext: *mut core::ffi::c_void,
11281            hwndparent: usize,
11282            lprcposrect: *mut windows::Win32::Foundation::RECT,
11283        ) -> windows_core::HRESULT {
11284            unsafe {
11285                let this: &Identity =
11286                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11287                IMAPIForm_Impl::DoVerb(
11288                    this,
11289                    core::mem::transmute_copy(&iverb),
11290                    core::mem::transmute_copy(&lpviewcontext),
11291                    core::mem::transmute_copy(&hwndparent),
11292                    core::mem::transmute_copy(&lprcposrect),
11293                )
11294                .into()
11295            }
11296        }
11297        unsafe extern "system" fn Advise<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11298            this: *mut core::ffi::c_void,
11299            padvise: *mut core::ffi::c_void,
11300            pdwstatus: *mut usize,
11301        ) -> windows_core::HRESULT {
11302            unsafe {
11303                let this: &Identity =
11304                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11305                IMAPIForm_Impl::Advise(
11306                    this,
11307                    core::mem::transmute_copy(&padvise),
11308                    core::mem::transmute_copy(&pdwstatus),
11309                )
11310                .into()
11311            }
11312        }
11313        unsafe extern "system" fn Unadvise<Identity: IMAPIForm_Impl, const OFFSET: isize>(
11314            this: *mut core::ffi::c_void,
11315            ulconnection: usize,
11316        ) -> windows_core::HRESULT {
11317            unsafe {
11318                let this: &Identity =
11319                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11320                IMAPIForm_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
11321            }
11322        }
11323        Self {
11324            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11325            GetLastError: GetLastError::<Identity, OFFSET>,
11326            SetViewContext: SetViewContext::<Identity, OFFSET>,
11327            GetViewContext: GetViewContext::<Identity, OFFSET>,
11328            ShutdownForm: ShutdownForm::<Identity, OFFSET>,
11329            DoVerb: DoVerb::<Identity, OFFSET>,
11330            Advise: Advise::<Identity, OFFSET>,
11331            Unadvise: Unadvise::<Identity, OFFSET>,
11332        }
11333    }
11334    pub fn matches(iid: &windows_core::GUID) -> bool {
11335        iid == &<IMAPIForm as windows_core::Interface>::IID
11336    }
11337}
11338impl windows_core::RuntimeName for IMAPIForm {}
11339windows_core::imp::define_interface!(
11340    IMAPIFormAdviseSink,
11341    IMAPIFormAdviseSink_Vtbl,
11342    0x0002032f_0000_0000_c000_000000000046
11343);
11344windows_core::imp::interface_hierarchy!(IMAPIFormAdviseSink, windows_core::IUnknown);
11345impl IMAPIFormAdviseSink {
11346    pub unsafe fn OnChange(&self, uldir: u32) -> windows_core::Result<()> {
11347        unsafe {
11348            (windows_core::Interface::vtable(self).OnChange)(
11349                windows_core::Interface::as_raw(self),
11350                uldir,
11351            )
11352            .ok()
11353        }
11354    }
11355    pub unsafe fn OnActivateNext<P0>(
11356        &self,
11357        lpszmessageclass: P0,
11358        ulmessagestatus: u32,
11359        ulmessageflags: u32,
11360    ) -> windows_core::Result<IPersistMessage>
11361    where
11362        P0: windows_core::Param<windows_core::PCSTR>,
11363    {
11364        unsafe {
11365            let mut result__ = core::mem::zeroed();
11366            (windows_core::Interface::vtable(self).OnActivateNext)(
11367                windows_core::Interface::as_raw(self),
11368                lpszmessageclass.param().abi(),
11369                ulmessagestatus,
11370                ulmessageflags,
11371                &mut result__,
11372            )
11373            .and_then(|| windows_core::Type::from_abi(result__))
11374        }
11375    }
11376}
11377#[repr(C)]
11378#[doc(hidden)]
11379pub struct IMAPIFormAdviseSink_Vtbl {
11380    pub base__: windows_core::IUnknown_Vtbl,
11381    pub OnChange: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
11382    pub OnActivateNext: unsafe extern "system" fn(
11383        *mut core::ffi::c_void,
11384        windows_core::PCSTR,
11385        u32,
11386        u32,
11387        *mut *mut core::ffi::c_void,
11388    ) -> windows_core::HRESULT,
11389}
11390pub trait IMAPIFormAdviseSink_Impl: windows_core::IUnknownImpl {
11391    fn OnChange(&self, uldir: u32) -> windows_core::Result<()>;
11392    fn OnActivateNext(
11393        &self,
11394        lpszmessageclass: &windows_core::PCSTR,
11395        ulmessagestatus: u32,
11396        ulmessageflags: u32,
11397    ) -> windows_core::Result<IPersistMessage>;
11398}
11399impl IMAPIFormAdviseSink_Vtbl {
11400    pub const fn new<Identity: IMAPIFormAdviseSink_Impl, const OFFSET: isize>() -> Self {
11401        unsafe extern "system" fn OnChange<
11402            Identity: IMAPIFormAdviseSink_Impl,
11403            const OFFSET: isize,
11404        >(
11405            this: *mut core::ffi::c_void,
11406            uldir: u32,
11407        ) -> windows_core::HRESULT {
11408            unsafe {
11409                let this: &Identity =
11410                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11411                IMAPIFormAdviseSink_Impl::OnChange(this, core::mem::transmute_copy(&uldir)).into()
11412            }
11413        }
11414        unsafe extern "system" fn OnActivateNext<
11415            Identity: IMAPIFormAdviseSink_Impl,
11416            const OFFSET: isize,
11417        >(
11418            this: *mut core::ffi::c_void,
11419            lpszmessageclass: windows_core::PCSTR,
11420            ulmessagestatus: u32,
11421            ulmessageflags: u32,
11422            pppersistmessage: *mut *mut core::ffi::c_void,
11423        ) -> windows_core::HRESULT {
11424            unsafe {
11425                let this: &Identity =
11426                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11427                match IMAPIFormAdviseSink_Impl::OnActivateNext(
11428                    this,
11429                    core::mem::transmute(&lpszmessageclass),
11430                    core::mem::transmute_copy(&ulmessagestatus),
11431                    core::mem::transmute_copy(&ulmessageflags),
11432                ) {
11433                    Ok(ok__) => {
11434                        pppersistmessage.write(core::mem::transmute(ok__));
11435                        windows_core::HRESULT(0)
11436                    }
11437                    Err(err) => err.into(),
11438                }
11439            }
11440        }
11441        Self {
11442            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11443            OnChange: OnChange::<Identity, OFFSET>,
11444            OnActivateNext: OnActivateNext::<Identity, OFFSET>,
11445        }
11446    }
11447    pub fn matches(iid: &windows_core::GUID) -> bool {
11448        iid == &<IMAPIFormAdviseSink as windows_core::Interface>::IID
11449    }
11450}
11451impl windows_core::RuntimeName for IMAPIFormAdviseSink {}
11452windows_core::imp::define_interface!(
11453    IMAPIFormContainer,
11454    IMAPIFormContainer_Vtbl,
11455    0x0002032e_0000_0000_c000_000000000046
11456);
11457windows_core::imp::interface_hierarchy!(IMAPIFormContainer, windows_core::IUnknown);
11458impl IMAPIFormContainer {
11459    pub unsafe fn GetLastError(
11460        &self,
11461        hresult: windows_core::HRESULT,
11462        ulflags: u32,
11463        lppmapierror: *mut *mut MAPIERROR,
11464    ) -> windows_core::Result<()> {
11465        unsafe {
11466            (windows_core::Interface::vtable(self).GetLastError)(
11467                windows_core::Interface::as_raw(self),
11468                hresult,
11469                ulflags,
11470                lppmapierror as _,
11471            )
11472            .ok()
11473        }
11474    }
11475    pub unsafe fn InstallForm(
11476        &self,
11477        uluiparam: usize,
11478        ulflags: u32,
11479        szcfgpathname: *mut i8,
11480    ) -> windows_core::Result<()> {
11481        unsafe {
11482            (windows_core::Interface::vtable(self).InstallForm)(
11483                windows_core::Interface::as_raw(self),
11484                uluiparam,
11485                ulflags,
11486                szcfgpathname as _,
11487            )
11488            .ok()
11489        }
11490    }
11491    pub unsafe fn RemoveForm<P0>(&self, szmessageclass: P0) -> windows_core::Result<()>
11492    where
11493        P0: windows_core::Param<windows_core::PCSTR>,
11494    {
11495        unsafe {
11496            (windows_core::Interface::vtable(self).RemoveForm)(
11497                windows_core::Interface::as_raw(self),
11498                szmessageclass.param().abi(),
11499            )
11500            .ok()
11501        }
11502    }
11503    pub unsafe fn ResolveMessageClass<P0>(
11504        &self,
11505        szmessageclass: P0,
11506        ulflags: u32,
11507    ) -> windows_core::Result<IMAPIFormInfo>
11508    where
11509        P0: windows_core::Param<windows_core::PCSTR>,
11510    {
11511        unsafe {
11512            let mut result__ = core::mem::zeroed();
11513            (windows_core::Interface::vtable(self).ResolveMessageClass)(
11514                windows_core::Interface::as_raw(self),
11515                szmessageclass.param().abi(),
11516                ulflags,
11517                &mut result__,
11518            )
11519            .and_then(|| windows_core::Type::from_abi(result__))
11520        }
11521    }
11522    pub unsafe fn ResolveMultipleMessageClasses(
11523        &self,
11524        pmsgclassarray: *mut SMessageClassArray,
11525        ulflags: u32,
11526        ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
11527    ) -> windows_core::Result<()> {
11528        unsafe {
11529            (windows_core::Interface::vtable(self).ResolveMultipleMessageClasses)(
11530                windows_core::Interface::as_raw(self),
11531                pmsgclassarray as _,
11532                ulflags,
11533                ppfrminfoarray as _,
11534            )
11535            .ok()
11536        }
11537    }
11538    pub unsafe fn CalcFormPropSet(
11539        &self,
11540        ulflags: u32,
11541        ppresults: *mut *mut SMAPIFormPropArray,
11542    ) -> windows_core::Result<()> {
11543        unsafe {
11544            (windows_core::Interface::vtable(self).CalcFormPropSet)(
11545                windows_core::Interface::as_raw(self),
11546                ulflags,
11547                ppresults as _,
11548            )
11549            .ok()
11550        }
11551    }
11552    pub unsafe fn GetDisplay(
11553        &self,
11554        ulflags: u32,
11555        pszdisplayname: *mut *mut i8,
11556    ) -> windows_core::Result<()> {
11557        unsafe {
11558            (windows_core::Interface::vtable(self).GetDisplay)(
11559                windows_core::Interface::as_raw(self),
11560                ulflags,
11561                pszdisplayname as _,
11562            )
11563            .ok()
11564        }
11565    }
11566}
11567#[repr(C)]
11568#[doc(hidden)]
11569pub struct IMAPIFormContainer_Vtbl {
11570    pub base__: windows_core::IUnknown_Vtbl,
11571    pub GetLastError: unsafe extern "system" fn(
11572        *mut core::ffi::c_void,
11573        windows_core::HRESULT,
11574        u32,
11575        *mut *mut MAPIERROR,
11576    ) -> windows_core::HRESULT,
11577    pub InstallForm: unsafe extern "system" fn(
11578        *mut core::ffi::c_void,
11579        usize,
11580        u32,
11581        *mut i8,
11582    ) -> windows_core::HRESULT,
11583    pub RemoveForm: unsafe extern "system" fn(
11584        *mut core::ffi::c_void,
11585        windows_core::PCSTR,
11586    ) -> windows_core::HRESULT,
11587    pub ResolveMessageClass: unsafe extern "system" fn(
11588        *mut core::ffi::c_void,
11589        windows_core::PCSTR,
11590        u32,
11591        *mut *mut core::ffi::c_void,
11592    ) -> windows_core::HRESULT,
11593    pub ResolveMultipleMessageClasses: unsafe extern "system" fn(
11594        *mut core::ffi::c_void,
11595        *mut SMessageClassArray,
11596        u32,
11597        *mut *mut SMAPIFormInfoArray,
11598    ) -> windows_core::HRESULT,
11599    pub CalcFormPropSet: unsafe extern "system" fn(
11600        *mut core::ffi::c_void,
11601        u32,
11602        *mut *mut SMAPIFormPropArray,
11603    ) -> windows_core::HRESULT,
11604    pub GetDisplay: unsafe extern "system" fn(
11605        *mut core::ffi::c_void,
11606        u32,
11607        *mut *mut i8,
11608    ) -> windows_core::HRESULT,
11609}
11610pub trait IMAPIFormContainer_Impl: windows_core::IUnknownImpl {
11611    fn GetLastError(
11612        &self,
11613        hresult: windows_core::HRESULT,
11614        ulflags: u32,
11615        lppmapierror: *mut *mut MAPIERROR,
11616    ) -> windows_core::Result<()>;
11617    fn InstallForm(
11618        &self,
11619        uluiparam: usize,
11620        ulflags: u32,
11621        szcfgpathname: *mut i8,
11622    ) -> windows_core::Result<()>;
11623    fn RemoveForm(&self, szmessageclass: &windows_core::PCSTR) -> windows_core::Result<()>;
11624    fn ResolveMessageClass(
11625        &self,
11626        szmessageclass: &windows_core::PCSTR,
11627        ulflags: u32,
11628    ) -> windows_core::Result<IMAPIFormInfo>;
11629    fn ResolveMultipleMessageClasses(
11630        &self,
11631        pmsgclassarray: *mut SMessageClassArray,
11632        ulflags: u32,
11633        ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
11634    ) -> windows_core::Result<()>;
11635    fn CalcFormPropSet(
11636        &self,
11637        ulflags: u32,
11638        ppresults: *mut *mut SMAPIFormPropArray,
11639    ) -> windows_core::Result<()>;
11640    fn GetDisplay(&self, ulflags: u32, pszdisplayname: *mut *mut i8) -> windows_core::Result<()>;
11641}
11642impl IMAPIFormContainer_Vtbl {
11643    pub const fn new<Identity: IMAPIFormContainer_Impl, const OFFSET: isize>() -> Self {
11644        unsafe extern "system" fn GetLastError<
11645            Identity: IMAPIFormContainer_Impl,
11646            const OFFSET: isize,
11647        >(
11648            this: *mut core::ffi::c_void,
11649            hresult: windows_core::HRESULT,
11650            ulflags: u32,
11651            lppmapierror: *mut *mut MAPIERROR,
11652        ) -> windows_core::HRESULT {
11653            unsafe {
11654                let this: &Identity =
11655                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11656                IMAPIFormContainer_Impl::GetLastError(
11657                    this,
11658                    core::mem::transmute_copy(&hresult),
11659                    core::mem::transmute_copy(&ulflags),
11660                    core::mem::transmute_copy(&lppmapierror),
11661                )
11662                .into()
11663            }
11664        }
11665        unsafe extern "system" fn InstallForm<
11666            Identity: IMAPIFormContainer_Impl,
11667            const OFFSET: isize,
11668        >(
11669            this: *mut core::ffi::c_void,
11670            uluiparam: usize,
11671            ulflags: u32,
11672            szcfgpathname: *mut i8,
11673        ) -> windows_core::HRESULT {
11674            unsafe {
11675                let this: &Identity =
11676                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11677                IMAPIFormContainer_Impl::InstallForm(
11678                    this,
11679                    core::mem::transmute_copy(&uluiparam),
11680                    core::mem::transmute_copy(&ulflags),
11681                    core::mem::transmute_copy(&szcfgpathname),
11682                )
11683                .into()
11684            }
11685        }
11686        unsafe extern "system" fn RemoveForm<
11687            Identity: IMAPIFormContainer_Impl,
11688            const OFFSET: isize,
11689        >(
11690            this: *mut core::ffi::c_void,
11691            szmessageclass: windows_core::PCSTR,
11692        ) -> windows_core::HRESULT {
11693            unsafe {
11694                let this: &Identity =
11695                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11696                IMAPIFormContainer_Impl::RemoveForm(this, core::mem::transmute(&szmessageclass))
11697                    .into()
11698            }
11699        }
11700        unsafe extern "system" fn ResolveMessageClass<
11701            Identity: IMAPIFormContainer_Impl,
11702            const OFFSET: isize,
11703        >(
11704            this: *mut core::ffi::c_void,
11705            szmessageclass: windows_core::PCSTR,
11706            ulflags: u32,
11707            pforminfo: *mut *mut core::ffi::c_void,
11708        ) -> windows_core::HRESULT {
11709            unsafe {
11710                let this: &Identity =
11711                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11712                match IMAPIFormContainer_Impl::ResolveMessageClass(
11713                    this,
11714                    core::mem::transmute(&szmessageclass),
11715                    core::mem::transmute_copy(&ulflags),
11716                ) {
11717                    Ok(ok__) => {
11718                        pforminfo.write(core::mem::transmute(ok__));
11719                        windows_core::HRESULT(0)
11720                    }
11721                    Err(err) => err.into(),
11722                }
11723            }
11724        }
11725        unsafe extern "system" fn ResolveMultipleMessageClasses<
11726            Identity: IMAPIFormContainer_Impl,
11727            const OFFSET: isize,
11728        >(
11729            this: *mut core::ffi::c_void,
11730            pmsgclassarray: *mut SMessageClassArray,
11731            ulflags: u32,
11732            ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
11733        ) -> windows_core::HRESULT {
11734            unsafe {
11735                let this: &Identity =
11736                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11737                IMAPIFormContainer_Impl::ResolveMultipleMessageClasses(
11738                    this,
11739                    core::mem::transmute_copy(&pmsgclassarray),
11740                    core::mem::transmute_copy(&ulflags),
11741                    core::mem::transmute_copy(&ppfrminfoarray),
11742                )
11743                .into()
11744            }
11745        }
11746        unsafe extern "system" fn CalcFormPropSet<
11747            Identity: IMAPIFormContainer_Impl,
11748            const OFFSET: isize,
11749        >(
11750            this: *mut core::ffi::c_void,
11751            ulflags: u32,
11752            ppresults: *mut *mut SMAPIFormPropArray,
11753        ) -> windows_core::HRESULT {
11754            unsafe {
11755                let this: &Identity =
11756                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11757                IMAPIFormContainer_Impl::CalcFormPropSet(
11758                    this,
11759                    core::mem::transmute_copy(&ulflags),
11760                    core::mem::transmute_copy(&ppresults),
11761                )
11762                .into()
11763            }
11764        }
11765        unsafe extern "system" fn GetDisplay<
11766            Identity: IMAPIFormContainer_Impl,
11767            const OFFSET: isize,
11768        >(
11769            this: *mut core::ffi::c_void,
11770            ulflags: u32,
11771            pszdisplayname: *mut *mut i8,
11772        ) -> windows_core::HRESULT {
11773            unsafe {
11774                let this: &Identity =
11775                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11776                IMAPIFormContainer_Impl::GetDisplay(
11777                    this,
11778                    core::mem::transmute_copy(&ulflags),
11779                    core::mem::transmute_copy(&pszdisplayname),
11780                )
11781                .into()
11782            }
11783        }
11784        Self {
11785            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11786            GetLastError: GetLastError::<Identity, OFFSET>,
11787            InstallForm: InstallForm::<Identity, OFFSET>,
11788            RemoveForm: RemoveForm::<Identity, OFFSET>,
11789            ResolveMessageClass: ResolveMessageClass::<Identity, OFFSET>,
11790            ResolveMultipleMessageClasses: ResolveMultipleMessageClasses::<Identity, OFFSET>,
11791            CalcFormPropSet: CalcFormPropSet::<Identity, OFFSET>,
11792            GetDisplay: GetDisplay::<Identity, OFFSET>,
11793        }
11794    }
11795    pub fn matches(iid: &windows_core::GUID) -> bool {
11796        iid == &<IMAPIFormContainer as windows_core::Interface>::IID
11797    }
11798}
11799impl windows_core::RuntimeName for IMAPIFormContainer {}
11800windows_core::imp::define_interface!(
11801    IMAPIFormFactory,
11802    IMAPIFormFactory_Vtbl,
11803    0x00020350_0000_0000_c000_000000000046
11804);
11805windows_core::imp::interface_hierarchy!(IMAPIFormFactory, windows_core::IUnknown);
11806impl IMAPIFormFactory {
11807    pub unsafe fn GetLastError(
11808        &self,
11809        hresult: windows_core::HRESULT,
11810        ulflags: u32,
11811        lppmapierror: *mut *mut MAPIERROR,
11812    ) -> windows_core::Result<()> {
11813        unsafe {
11814            (windows_core::Interface::vtable(self).GetLastError)(
11815                windows_core::Interface::as_raw(self),
11816                hresult,
11817                ulflags,
11818                lppmapierror as _,
11819            )
11820            .ok()
11821        }
11822    }
11823    pub unsafe fn CreateClassFactory(
11824        &self,
11825        clsidform: *const windows_core::GUID,
11826        ulflags: u32,
11827    ) -> windows_core::Result<windows::Win32::System::Com::IClassFactory> {
11828        unsafe {
11829            let mut result__ = core::mem::zeroed();
11830            (windows_core::Interface::vtable(self).CreateClassFactory)(
11831                windows_core::Interface::as_raw(self),
11832                clsidform,
11833                ulflags,
11834                &mut result__,
11835            )
11836            .and_then(|| windows_core::Type::from_abi(result__))
11837        }
11838    }
11839    pub unsafe fn LockServer(&self, ulflags: u32, flockserver: u32) -> windows_core::Result<()> {
11840        unsafe {
11841            (windows_core::Interface::vtable(self).LockServer)(
11842                windows_core::Interface::as_raw(self),
11843                ulflags,
11844                flockserver,
11845            )
11846            .ok()
11847        }
11848    }
11849}
11850#[repr(C)]
11851#[doc(hidden)]
11852pub struct IMAPIFormFactory_Vtbl {
11853    pub base__: windows_core::IUnknown_Vtbl,
11854    pub GetLastError: unsafe extern "system" fn(
11855        *mut core::ffi::c_void,
11856        windows_core::HRESULT,
11857        u32,
11858        *mut *mut MAPIERROR,
11859    ) -> windows_core::HRESULT,
11860    pub CreateClassFactory: unsafe extern "system" fn(
11861        *mut core::ffi::c_void,
11862        *const windows_core::GUID,
11863        u32,
11864        *mut *mut core::ffi::c_void,
11865    ) -> windows_core::HRESULT,
11866    pub LockServer:
11867        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
11868}
11869pub trait IMAPIFormFactory_Impl: windows_core::IUnknownImpl {
11870    fn GetLastError(
11871        &self,
11872        hresult: windows_core::HRESULT,
11873        ulflags: u32,
11874        lppmapierror: *mut *mut MAPIERROR,
11875    ) -> windows_core::Result<()>;
11876    fn CreateClassFactory(
11877        &self,
11878        clsidform: *const windows_core::GUID,
11879        ulflags: u32,
11880    ) -> windows_core::Result<windows::Win32::System::Com::IClassFactory>;
11881    fn LockServer(&self, ulflags: u32, flockserver: u32) -> windows_core::Result<()>;
11882}
11883impl IMAPIFormFactory_Vtbl {
11884    pub const fn new<Identity: IMAPIFormFactory_Impl, const OFFSET: isize>() -> Self {
11885        unsafe extern "system" fn GetLastError<
11886            Identity: IMAPIFormFactory_Impl,
11887            const OFFSET: isize,
11888        >(
11889            this: *mut core::ffi::c_void,
11890            hresult: windows_core::HRESULT,
11891            ulflags: u32,
11892            lppmapierror: *mut *mut MAPIERROR,
11893        ) -> windows_core::HRESULT {
11894            unsafe {
11895                let this: &Identity =
11896                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11897                IMAPIFormFactory_Impl::GetLastError(
11898                    this,
11899                    core::mem::transmute_copy(&hresult),
11900                    core::mem::transmute_copy(&ulflags),
11901                    core::mem::transmute_copy(&lppmapierror),
11902                )
11903                .into()
11904            }
11905        }
11906        unsafe extern "system" fn CreateClassFactory<
11907            Identity: IMAPIFormFactory_Impl,
11908            const OFFSET: isize,
11909        >(
11910            this: *mut core::ffi::c_void,
11911            clsidform: *const windows_core::GUID,
11912            ulflags: u32,
11913            lppclassfactory: *mut *mut core::ffi::c_void,
11914        ) -> windows_core::HRESULT {
11915            unsafe {
11916                let this: &Identity =
11917                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11918                match IMAPIFormFactory_Impl::CreateClassFactory(
11919                    this,
11920                    core::mem::transmute_copy(&clsidform),
11921                    core::mem::transmute_copy(&ulflags),
11922                ) {
11923                    Ok(ok__) => {
11924                        lppclassfactory.write(core::mem::transmute(ok__));
11925                        windows_core::HRESULT(0)
11926                    }
11927                    Err(err) => err.into(),
11928                }
11929            }
11930        }
11931        unsafe extern "system" fn LockServer<
11932            Identity: IMAPIFormFactory_Impl,
11933            const OFFSET: isize,
11934        >(
11935            this: *mut core::ffi::c_void,
11936            ulflags: u32,
11937            flockserver: u32,
11938        ) -> windows_core::HRESULT {
11939            unsafe {
11940                let this: &Identity =
11941                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
11942                IMAPIFormFactory_Impl::LockServer(
11943                    this,
11944                    core::mem::transmute_copy(&ulflags),
11945                    core::mem::transmute_copy(&flockserver),
11946                )
11947                .into()
11948            }
11949        }
11950        Self {
11951            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
11952            GetLastError: GetLastError::<Identity, OFFSET>,
11953            CreateClassFactory: CreateClassFactory::<Identity, OFFSET>,
11954            LockServer: LockServer::<Identity, OFFSET>,
11955        }
11956    }
11957    pub fn matches(iid: &windows_core::GUID) -> bool {
11958        iid == &<IMAPIFormFactory as windows_core::Interface>::IID
11959    }
11960}
11961impl windows_core::RuntimeName for IMAPIFormFactory {}
11962windows_core::imp::define_interface!(
11963    IMAPIFormInfo,
11964    IMAPIFormInfo_Vtbl,
11965    0x00020324_0000_0000_c000_000000000046
11966);
11967impl core::ops::Deref for IMAPIFormInfo {
11968    type Target = IMAPIProp;
11969    fn deref(&self) -> &Self::Target {
11970        unsafe { core::mem::transmute(self) }
11971    }
11972}
11973windows_core::imp::interface_hierarchy!(IMAPIFormInfo, windows_core::IUnknown, IMAPIProp);
11974impl IMAPIFormInfo {
11975    pub unsafe fn CalcFormPropSet(
11976        &self,
11977        ulflags: u32,
11978        ppformproparray: *mut *mut SMAPIFormPropArray,
11979    ) -> windows_core::Result<()> {
11980        unsafe {
11981            (windows_core::Interface::vtable(self).CalcFormPropSet)(
11982                windows_core::Interface::as_raw(self),
11983                ulflags,
11984                ppformproparray as _,
11985            )
11986            .ok()
11987        }
11988    }
11989    pub unsafe fn CalcVerbSet(
11990        &self,
11991        ulflags: u32,
11992        ppmapiverbarray: *mut *mut SMAPIVerbArray,
11993    ) -> windows_core::Result<()> {
11994        unsafe {
11995            (windows_core::Interface::vtable(self).CalcVerbSet)(
11996                windows_core::Interface::as_raw(self),
11997                ulflags,
11998                ppmapiverbarray as _,
11999            )
12000            .ok()
12001        }
12002    }
12003    pub unsafe fn MakeIconFromBinary(
12004        &self,
12005        npropid: u32,
12006        phicon: *mut windows::Win32::UI::WindowsAndMessaging::HICON,
12007    ) -> windows_core::Result<()> {
12008        unsafe {
12009            (windows_core::Interface::vtable(self).MakeIconFromBinary)(
12010                windows_core::Interface::as_raw(self),
12011                npropid,
12012                phicon as _,
12013            )
12014            .ok()
12015        }
12016    }
12017    pub unsafe fn SaveForm(&self, szfilename: *mut i8) -> windows_core::Result<()> {
12018        unsafe {
12019            (windows_core::Interface::vtable(self).SaveForm)(
12020                windows_core::Interface::as_raw(self),
12021                szfilename as _,
12022            )
12023            .ok()
12024        }
12025    }
12026    pub unsafe fn OpenFormContainer(&self) -> windows_core::Result<IMAPIFormContainer> {
12027        unsafe {
12028            let mut result__ = core::mem::zeroed();
12029            (windows_core::Interface::vtable(self).OpenFormContainer)(
12030                windows_core::Interface::as_raw(self),
12031                &mut result__,
12032            )
12033            .and_then(|| windows_core::Type::from_abi(result__))
12034        }
12035    }
12036}
12037#[repr(C)]
12038#[doc(hidden)]
12039pub struct IMAPIFormInfo_Vtbl {
12040    pub base__: IMAPIProp_Vtbl,
12041    pub CalcFormPropSet: unsafe extern "system" fn(
12042        *mut core::ffi::c_void,
12043        u32,
12044        *mut *mut SMAPIFormPropArray,
12045    ) -> windows_core::HRESULT,
12046    pub CalcVerbSet: unsafe extern "system" fn(
12047        *mut core::ffi::c_void,
12048        u32,
12049        *mut *mut SMAPIVerbArray,
12050    ) -> windows_core::HRESULT,
12051    pub MakeIconFromBinary: unsafe extern "system" fn(
12052        *mut core::ffi::c_void,
12053        u32,
12054        *mut windows::Win32::UI::WindowsAndMessaging::HICON,
12055    ) -> windows_core::HRESULT,
12056    pub SaveForm:
12057        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i8) -> windows_core::HRESULT,
12058    pub OpenFormContainer: unsafe extern "system" fn(
12059        *mut core::ffi::c_void,
12060        *mut *mut core::ffi::c_void,
12061    ) -> windows_core::HRESULT,
12062}
12063pub trait IMAPIFormInfo_Impl: IMAPIProp_Impl {
12064    fn CalcFormPropSet(
12065        &self,
12066        ulflags: u32,
12067        ppformproparray: *mut *mut SMAPIFormPropArray,
12068    ) -> windows_core::Result<()>;
12069    fn CalcVerbSet(
12070        &self,
12071        ulflags: u32,
12072        ppmapiverbarray: *mut *mut SMAPIVerbArray,
12073    ) -> windows_core::Result<()>;
12074    fn MakeIconFromBinary(
12075        &self,
12076        npropid: u32,
12077        phicon: *mut windows::Win32::UI::WindowsAndMessaging::HICON,
12078    ) -> windows_core::Result<()>;
12079    fn SaveForm(&self, szfilename: *mut i8) -> windows_core::Result<()>;
12080    fn OpenFormContainer(&self) -> windows_core::Result<IMAPIFormContainer>;
12081}
12082impl IMAPIFormInfo_Vtbl {
12083    pub const fn new<Identity: IMAPIFormInfo_Impl, const OFFSET: isize>() -> Self {
12084        unsafe extern "system" fn CalcFormPropSet<
12085            Identity: IMAPIFormInfo_Impl,
12086            const OFFSET: isize,
12087        >(
12088            this: *mut core::ffi::c_void,
12089            ulflags: u32,
12090            ppformproparray: *mut *mut SMAPIFormPropArray,
12091        ) -> windows_core::HRESULT {
12092            unsafe {
12093                let this: &Identity =
12094                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12095                IMAPIFormInfo_Impl::CalcFormPropSet(
12096                    this,
12097                    core::mem::transmute_copy(&ulflags),
12098                    core::mem::transmute_copy(&ppformproparray),
12099                )
12100                .into()
12101            }
12102        }
12103        unsafe extern "system" fn CalcVerbSet<Identity: IMAPIFormInfo_Impl, const OFFSET: isize>(
12104            this: *mut core::ffi::c_void,
12105            ulflags: u32,
12106            ppmapiverbarray: *mut *mut SMAPIVerbArray,
12107        ) -> windows_core::HRESULT {
12108            unsafe {
12109                let this: &Identity =
12110                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12111                IMAPIFormInfo_Impl::CalcVerbSet(
12112                    this,
12113                    core::mem::transmute_copy(&ulflags),
12114                    core::mem::transmute_copy(&ppmapiverbarray),
12115                )
12116                .into()
12117            }
12118        }
12119        unsafe extern "system" fn MakeIconFromBinary<
12120            Identity: IMAPIFormInfo_Impl,
12121            const OFFSET: isize,
12122        >(
12123            this: *mut core::ffi::c_void,
12124            npropid: u32,
12125            phicon: *mut windows::Win32::UI::WindowsAndMessaging::HICON,
12126        ) -> windows_core::HRESULT {
12127            unsafe {
12128                let this: &Identity =
12129                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12130                IMAPIFormInfo_Impl::MakeIconFromBinary(
12131                    this,
12132                    core::mem::transmute_copy(&npropid),
12133                    core::mem::transmute_copy(&phicon),
12134                )
12135                .into()
12136            }
12137        }
12138        unsafe extern "system" fn SaveForm<Identity: IMAPIFormInfo_Impl, const OFFSET: isize>(
12139            this: *mut core::ffi::c_void,
12140            szfilename: *mut i8,
12141        ) -> windows_core::HRESULT {
12142            unsafe {
12143                let this: &Identity =
12144                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12145                IMAPIFormInfo_Impl::SaveForm(this, core::mem::transmute_copy(&szfilename)).into()
12146            }
12147        }
12148        unsafe extern "system" fn OpenFormContainer<
12149            Identity: IMAPIFormInfo_Impl,
12150            const OFFSET: isize,
12151        >(
12152            this: *mut core::ffi::c_void,
12153            ppformcontainer: *mut *mut core::ffi::c_void,
12154        ) -> windows_core::HRESULT {
12155            unsafe {
12156                let this: &Identity =
12157                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12158                match IMAPIFormInfo_Impl::OpenFormContainer(this) {
12159                    Ok(ok__) => {
12160                        ppformcontainer.write(core::mem::transmute(ok__));
12161                        windows_core::HRESULT(0)
12162                    }
12163                    Err(err) => err.into(),
12164                }
12165            }
12166        }
12167        Self {
12168            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
12169            CalcFormPropSet: CalcFormPropSet::<Identity, OFFSET>,
12170            CalcVerbSet: CalcVerbSet::<Identity, OFFSET>,
12171            MakeIconFromBinary: MakeIconFromBinary::<Identity, OFFSET>,
12172            SaveForm: SaveForm::<Identity, OFFSET>,
12173            OpenFormContainer: OpenFormContainer::<Identity, OFFSET>,
12174        }
12175    }
12176    pub fn matches(iid: &windows_core::GUID) -> bool {
12177        iid == &<IMAPIFormInfo as windows_core::Interface>::IID
12178            || iid == &<IMAPIProp as windows_core::Interface>::IID
12179    }
12180}
12181impl windows_core::RuntimeName for IMAPIFormInfo {}
12182windows_core::imp::define_interface!(
12183    IMAPIFormMgr,
12184    IMAPIFormMgr_Vtbl,
12185    0x00020322_0000_0000_c000_000000000046
12186);
12187windows_core::imp::interface_hierarchy!(IMAPIFormMgr, windows_core::IUnknown);
12188impl IMAPIFormMgr {
12189    pub unsafe fn GetLastError(
12190        &self,
12191        hresult: windows_core::HRESULT,
12192        ulflags: u32,
12193        lppmapierror: *mut *mut MAPIERROR,
12194    ) -> windows_core::Result<()> {
12195        unsafe {
12196            (windows_core::Interface::vtable(self).GetLastError)(
12197                windows_core::Interface::as_raw(self),
12198                hresult,
12199                ulflags,
12200                lppmapierror as _,
12201            )
12202            .ok()
12203        }
12204    }
12205    pub unsafe fn LoadForm<P2, P5, P6, P7, P8>(
12206        &self,
12207        uluiparam: usize,
12208        ulflags: u32,
12209        lpszmessageclass: P2,
12210        ulmessagestatus: u32,
12211        ulmessageflags: u32,
12212        pfolderfocus: P5,
12213        pmessagesite: P6,
12214        pmsg: P7,
12215        pviewcontext: P8,
12216        riid: *const windows_core::GUID,
12217        ppvobj: *mut *mut core::ffi::c_void,
12218    ) -> windows_core::Result<()>
12219    where
12220        P2: windows_core::Param<windows_core::PCSTR>,
12221        P5: windows_core::Param<IMAPIFolder>,
12222        P6: windows_core::Param<IMAPIMessageSite>,
12223        P7: windows_core::Param<IMessage>,
12224        P8: windows_core::Param<IMAPIViewContext>,
12225    {
12226        unsafe {
12227            (windows_core::Interface::vtable(self).LoadForm)(
12228                windows_core::Interface::as_raw(self),
12229                uluiparam,
12230                ulflags,
12231                lpszmessageclass.param().abi(),
12232                ulmessagestatus,
12233                ulmessageflags,
12234                pfolderfocus.param().abi(),
12235                pmessagesite.param().abi(),
12236                pmsg.param().abi(),
12237                pviewcontext.param().abi(),
12238                riid,
12239                ppvobj as _,
12240            )
12241            .ok()
12242        }
12243    }
12244    pub unsafe fn ResolveMessageClass<P0, P2>(
12245        &self,
12246        szmsgclass: P0,
12247        ulflags: u32,
12248        pfolderfocus: P2,
12249    ) -> windows_core::Result<IMAPIFormInfo>
12250    where
12251        P0: windows_core::Param<windows_core::PCSTR>,
12252        P2: windows_core::Param<IMAPIFolder>,
12253    {
12254        unsafe {
12255            let mut result__ = core::mem::zeroed();
12256            (windows_core::Interface::vtable(self).ResolveMessageClass)(
12257                windows_core::Interface::as_raw(self),
12258                szmsgclass.param().abi(),
12259                ulflags,
12260                pfolderfocus.param().abi(),
12261                &mut result__,
12262            )
12263            .and_then(|| windows_core::Type::from_abi(result__))
12264        }
12265    }
12266    pub unsafe fn ResolveMultipleMessageClasses<P2>(
12267        &self,
12268        pmsgclasses: *mut SMessageClassArray,
12269        ulflags: u32,
12270        pfolderfocus: P2,
12271        pfrminfoarray: *mut *mut SMAPIFormInfoArray,
12272    ) -> windows_core::Result<()>
12273    where
12274        P2: windows_core::Param<IMAPIFolder>,
12275    {
12276        unsafe {
12277            (windows_core::Interface::vtable(self).ResolveMultipleMessageClasses)(
12278                windows_core::Interface::as_raw(self),
12279                pmsgclasses as _,
12280                ulflags,
12281                pfolderfocus.param().abi(),
12282                pfrminfoarray as _,
12283            )
12284            .ok()
12285        }
12286    }
12287    pub unsafe fn CalcFormPropSet(
12288        &self,
12289        pfrminfoarray: *mut SMAPIFormInfoArray,
12290        ulflags: u32,
12291        ppresults: *mut *mut SMAPIFormPropArray,
12292    ) -> windows_core::Result<()> {
12293        unsafe {
12294            (windows_core::Interface::vtable(self).CalcFormPropSet)(
12295                windows_core::Interface::as_raw(self),
12296                core::mem::transmute(pfrminfoarray),
12297                ulflags,
12298                ppresults as _,
12299            )
12300            .ok()
12301        }
12302    }
12303    pub unsafe fn CreateForm<P2>(
12304        &self,
12305        uluiparam: usize,
12306        ulflags: u32,
12307        pfrminfotoactivate: P2,
12308        refiidtoask: *const windows_core::GUID,
12309        ppvobj: *mut *mut core::ffi::c_void,
12310    ) -> windows_core::Result<()>
12311    where
12312        P2: windows_core::Param<IMAPIFormInfo>,
12313    {
12314        unsafe {
12315            (windows_core::Interface::vtable(self).CreateForm)(
12316                windows_core::Interface::as_raw(self),
12317                uluiparam,
12318                ulflags,
12319                pfrminfotoactivate.param().abi(),
12320                refiidtoask,
12321                ppvobj as _,
12322            )
12323            .ok()
12324        }
12325    }
12326    pub unsafe fn SelectForm<P3>(
12327        &self,
12328        uluiparam: usize,
12329        ulflags: u32,
12330        psztitle: *mut i8,
12331        pfld: P3,
12332        ppfrminforeturned: *mut Option<IMAPIFormInfo>,
12333    ) -> windows_core::Result<()>
12334    where
12335        P3: windows_core::Param<IMAPIFolder>,
12336    {
12337        unsafe {
12338            (windows_core::Interface::vtable(self).SelectForm)(
12339                windows_core::Interface::as_raw(self),
12340                uluiparam,
12341                ulflags,
12342                psztitle as _,
12343                pfld.param().abi(),
12344                core::mem::transmute(ppfrminforeturned),
12345            )
12346            .ok()
12347        }
12348    }
12349    pub unsafe fn SelectMultipleForms<P3>(
12350        &self,
12351        uluiparam: usize,
12352        ulflags: u32,
12353        psztitle: *mut i8,
12354        pfld: P3,
12355        pfrminfoarray: *mut SMAPIFormInfoArray,
12356        ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
12357    ) -> windows_core::Result<()>
12358    where
12359        P3: windows_core::Param<IMAPIFolder>,
12360    {
12361        unsafe {
12362            (windows_core::Interface::vtable(self).SelectMultipleForms)(
12363                windows_core::Interface::as_raw(self),
12364                uluiparam,
12365                ulflags,
12366                psztitle as _,
12367                pfld.param().abi(),
12368                core::mem::transmute(pfrminfoarray),
12369                ppfrminfoarray as _,
12370            )
12371            .ok()
12372        }
12373    }
12374    pub unsafe fn SelectFormContainer(
12375        &self,
12376        uluiparam: usize,
12377        ulflags: u32,
12378    ) -> windows_core::Result<IMAPIFormContainer> {
12379        unsafe {
12380            let mut result__ = core::mem::zeroed();
12381            (windows_core::Interface::vtable(self).SelectFormContainer)(
12382                windows_core::Interface::as_raw(self),
12383                uluiparam,
12384                ulflags,
12385                &mut result__,
12386            )
12387            .and_then(|| windows_core::Type::from_abi(result__))
12388        }
12389    }
12390    pub unsafe fn OpenFormContainer<P1>(
12391        &self,
12392        hfrmreg: u32,
12393        lpunk: P1,
12394    ) -> windows_core::Result<IMAPIFormContainer>
12395    where
12396        P1: windows_core::Param<windows_core::IUnknown>,
12397    {
12398        unsafe {
12399            let mut result__ = core::mem::zeroed();
12400            (windows_core::Interface::vtable(self).OpenFormContainer)(
12401                windows_core::Interface::as_raw(self),
12402                hfrmreg,
12403                lpunk.param().abi(),
12404                &mut result__,
12405            )
12406            .and_then(|| windows_core::Type::from_abi(result__))
12407        }
12408    }
12409    pub unsafe fn PrepareForm<P2>(
12410        &self,
12411        uluiparam: usize,
12412        ulflags: u32,
12413        pfrminfo: P2,
12414    ) -> windows_core::Result<()>
12415    where
12416        P2: windows_core::Param<IMAPIFormInfo>,
12417    {
12418        unsafe {
12419            (windows_core::Interface::vtable(self).PrepareForm)(
12420                windows_core::Interface::as_raw(self),
12421                uluiparam,
12422                ulflags,
12423                pfrminfo.param().abi(),
12424            )
12425            .ok()
12426        }
12427    }
12428    pub unsafe fn IsInConflict<P2, P3>(
12429        &self,
12430        ulmessageflags: u32,
12431        ulmessagestatus: u32,
12432        szmessageclass: P2,
12433        pfolderfocus: P3,
12434    ) -> windows_core::Result<()>
12435    where
12436        P2: windows_core::Param<windows_core::PCSTR>,
12437        P3: windows_core::Param<IMAPIFolder>,
12438    {
12439        unsafe {
12440            (windows_core::Interface::vtable(self).IsInConflict)(
12441                windows_core::Interface::as_raw(self),
12442                ulmessageflags,
12443                ulmessagestatus,
12444                szmessageclass.param().abi(),
12445                pfolderfocus.param().abi(),
12446            )
12447            .ok()
12448        }
12449    }
12450}
12451#[repr(C)]
12452#[doc(hidden)]
12453pub struct IMAPIFormMgr_Vtbl {
12454    pub base__: windows_core::IUnknown_Vtbl,
12455    pub GetLastError: unsafe extern "system" fn(
12456        *mut core::ffi::c_void,
12457        windows_core::HRESULT,
12458        u32,
12459        *mut *mut MAPIERROR,
12460    ) -> windows_core::HRESULT,
12461    pub LoadForm: unsafe extern "system" fn(
12462        *mut core::ffi::c_void,
12463        usize,
12464        u32,
12465        windows_core::PCSTR,
12466        u32,
12467        u32,
12468        *mut core::ffi::c_void,
12469        *mut core::ffi::c_void,
12470        *mut core::ffi::c_void,
12471        *mut core::ffi::c_void,
12472        *const windows_core::GUID,
12473        *mut *mut core::ffi::c_void,
12474    ) -> windows_core::HRESULT,
12475    pub ResolveMessageClass: unsafe extern "system" fn(
12476        *mut core::ffi::c_void,
12477        windows_core::PCSTR,
12478        u32,
12479        *mut core::ffi::c_void,
12480        *mut *mut core::ffi::c_void,
12481    ) -> windows_core::HRESULT,
12482    pub ResolveMultipleMessageClasses: unsafe extern "system" fn(
12483        *mut core::ffi::c_void,
12484        *mut SMessageClassArray,
12485        u32,
12486        *mut core::ffi::c_void,
12487        *mut *mut SMAPIFormInfoArray,
12488    ) -> windows_core::HRESULT,
12489    pub CalcFormPropSet: unsafe extern "system" fn(
12490        *mut core::ffi::c_void,
12491        *mut SMAPIFormInfoArray,
12492        u32,
12493        *mut *mut SMAPIFormPropArray,
12494    ) -> windows_core::HRESULT,
12495    pub CreateForm: unsafe extern "system" fn(
12496        *mut core::ffi::c_void,
12497        usize,
12498        u32,
12499        *mut core::ffi::c_void,
12500        *const windows_core::GUID,
12501        *mut *mut core::ffi::c_void,
12502    ) -> windows_core::HRESULT,
12503    pub SelectForm: unsafe extern "system" fn(
12504        *mut core::ffi::c_void,
12505        usize,
12506        u32,
12507        *mut i8,
12508        *mut core::ffi::c_void,
12509        *mut *mut core::ffi::c_void,
12510    ) -> windows_core::HRESULT,
12511    pub SelectMultipleForms: unsafe extern "system" fn(
12512        *mut core::ffi::c_void,
12513        usize,
12514        u32,
12515        *mut i8,
12516        *mut core::ffi::c_void,
12517        *mut SMAPIFormInfoArray,
12518        *mut *mut SMAPIFormInfoArray,
12519    ) -> windows_core::HRESULT,
12520    pub SelectFormContainer: unsafe extern "system" fn(
12521        *mut core::ffi::c_void,
12522        usize,
12523        u32,
12524        *mut *mut core::ffi::c_void,
12525    ) -> windows_core::HRESULT,
12526    pub OpenFormContainer: unsafe extern "system" fn(
12527        *mut core::ffi::c_void,
12528        u32,
12529        *mut core::ffi::c_void,
12530        *mut *mut core::ffi::c_void,
12531    ) -> windows_core::HRESULT,
12532    pub PrepareForm: unsafe extern "system" fn(
12533        *mut core::ffi::c_void,
12534        usize,
12535        u32,
12536        *mut core::ffi::c_void,
12537    ) -> windows_core::HRESULT,
12538    pub IsInConflict: unsafe extern "system" fn(
12539        *mut core::ffi::c_void,
12540        u32,
12541        u32,
12542        windows_core::PCSTR,
12543        *mut core::ffi::c_void,
12544    ) -> windows_core::HRESULT,
12545}
12546pub trait IMAPIFormMgr_Impl: windows_core::IUnknownImpl {
12547    fn GetLastError(
12548        &self,
12549        hresult: windows_core::HRESULT,
12550        ulflags: u32,
12551        lppmapierror: *mut *mut MAPIERROR,
12552    ) -> windows_core::Result<()>;
12553    fn LoadForm(
12554        &self,
12555        uluiparam: usize,
12556        ulflags: u32,
12557        lpszmessageclass: &windows_core::PCSTR,
12558        ulmessagestatus: u32,
12559        ulmessageflags: u32,
12560        pfolderfocus: windows_core::Ref<IMAPIFolder>,
12561        pmessagesite: windows_core::Ref<IMAPIMessageSite>,
12562        pmsg: windows_core::Ref<IMessage>,
12563        pviewcontext: windows_core::Ref<IMAPIViewContext>,
12564        riid: *const windows_core::GUID,
12565        ppvobj: *mut *mut core::ffi::c_void,
12566    ) -> windows_core::Result<()>;
12567    fn ResolveMessageClass(
12568        &self,
12569        szmsgclass: &windows_core::PCSTR,
12570        ulflags: u32,
12571        pfolderfocus: windows_core::Ref<IMAPIFolder>,
12572    ) -> windows_core::Result<IMAPIFormInfo>;
12573    fn ResolveMultipleMessageClasses(
12574        &self,
12575        pmsgclasses: *mut SMessageClassArray,
12576        ulflags: u32,
12577        pfolderfocus: windows_core::Ref<IMAPIFolder>,
12578        pfrminfoarray: *mut *mut SMAPIFormInfoArray,
12579    ) -> windows_core::Result<()>;
12580    fn CalcFormPropSet(
12581        &self,
12582        pfrminfoarray: *mut SMAPIFormInfoArray,
12583        ulflags: u32,
12584        ppresults: *mut *mut SMAPIFormPropArray,
12585    ) -> windows_core::Result<()>;
12586    fn CreateForm(
12587        &self,
12588        uluiparam: usize,
12589        ulflags: u32,
12590        pfrminfotoactivate: windows_core::Ref<IMAPIFormInfo>,
12591        refiidtoask: *const windows_core::GUID,
12592        ppvobj: *mut *mut core::ffi::c_void,
12593    ) -> windows_core::Result<()>;
12594    fn SelectForm(
12595        &self,
12596        uluiparam: usize,
12597        ulflags: u32,
12598        psztitle: *mut i8,
12599        pfld: windows_core::Ref<IMAPIFolder>,
12600        ppfrminforeturned: windows_core::OutRef<IMAPIFormInfo>,
12601    ) -> windows_core::Result<()>;
12602    fn SelectMultipleForms(
12603        &self,
12604        uluiparam: usize,
12605        ulflags: u32,
12606        psztitle: *mut i8,
12607        pfld: windows_core::Ref<IMAPIFolder>,
12608        pfrminfoarray: *mut SMAPIFormInfoArray,
12609        ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
12610    ) -> windows_core::Result<()>;
12611    fn SelectFormContainer(
12612        &self,
12613        uluiparam: usize,
12614        ulflags: u32,
12615    ) -> windows_core::Result<IMAPIFormContainer>;
12616    fn OpenFormContainer(
12617        &self,
12618        hfrmreg: u32,
12619        lpunk: windows_core::Ref<windows_core::IUnknown>,
12620    ) -> windows_core::Result<IMAPIFormContainer>;
12621    fn PrepareForm(
12622        &self,
12623        uluiparam: usize,
12624        ulflags: u32,
12625        pfrminfo: windows_core::Ref<IMAPIFormInfo>,
12626    ) -> windows_core::Result<()>;
12627    fn IsInConflict(
12628        &self,
12629        ulmessageflags: u32,
12630        ulmessagestatus: u32,
12631        szmessageclass: &windows_core::PCSTR,
12632        pfolderfocus: windows_core::Ref<IMAPIFolder>,
12633    ) -> windows_core::Result<()>;
12634}
12635impl IMAPIFormMgr_Vtbl {
12636    pub const fn new<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>() -> Self {
12637        unsafe extern "system" fn GetLastError<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12638            this: *mut core::ffi::c_void,
12639            hresult: windows_core::HRESULT,
12640            ulflags: u32,
12641            lppmapierror: *mut *mut MAPIERROR,
12642        ) -> windows_core::HRESULT {
12643            unsafe {
12644                let this: &Identity =
12645                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12646                IMAPIFormMgr_Impl::GetLastError(
12647                    this,
12648                    core::mem::transmute_copy(&hresult),
12649                    core::mem::transmute_copy(&ulflags),
12650                    core::mem::transmute_copy(&lppmapierror),
12651                )
12652                .into()
12653            }
12654        }
12655        unsafe extern "system" fn LoadForm<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12656            this: *mut core::ffi::c_void,
12657            uluiparam: usize,
12658            ulflags: u32,
12659            lpszmessageclass: windows_core::PCSTR,
12660            ulmessagestatus: u32,
12661            ulmessageflags: u32,
12662            pfolderfocus: *mut core::ffi::c_void,
12663            pmessagesite: *mut core::ffi::c_void,
12664            pmsg: *mut core::ffi::c_void,
12665            pviewcontext: *mut core::ffi::c_void,
12666            riid: *const windows_core::GUID,
12667            ppvobj: *mut *mut core::ffi::c_void,
12668        ) -> windows_core::HRESULT {
12669            unsafe {
12670                let this: &Identity =
12671                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12672                IMAPIFormMgr_Impl::LoadForm(
12673                    this,
12674                    core::mem::transmute_copy(&uluiparam),
12675                    core::mem::transmute_copy(&ulflags),
12676                    core::mem::transmute(&lpszmessageclass),
12677                    core::mem::transmute_copy(&ulmessagestatus),
12678                    core::mem::transmute_copy(&ulmessageflags),
12679                    core::mem::transmute_copy(&pfolderfocus),
12680                    core::mem::transmute_copy(&pmessagesite),
12681                    core::mem::transmute_copy(&pmsg),
12682                    core::mem::transmute_copy(&pviewcontext),
12683                    core::mem::transmute_copy(&riid),
12684                    core::mem::transmute_copy(&ppvobj),
12685                )
12686                .into()
12687            }
12688        }
12689        unsafe extern "system" fn ResolveMessageClass<
12690            Identity: IMAPIFormMgr_Impl,
12691            const OFFSET: isize,
12692        >(
12693            this: *mut core::ffi::c_void,
12694            szmsgclass: windows_core::PCSTR,
12695            ulflags: u32,
12696            pfolderfocus: *mut core::ffi::c_void,
12697            ppresult: *mut *mut core::ffi::c_void,
12698        ) -> windows_core::HRESULT {
12699            unsafe {
12700                let this: &Identity =
12701                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12702                match IMAPIFormMgr_Impl::ResolveMessageClass(
12703                    this,
12704                    core::mem::transmute(&szmsgclass),
12705                    core::mem::transmute_copy(&ulflags),
12706                    core::mem::transmute_copy(&pfolderfocus),
12707                ) {
12708                    Ok(ok__) => {
12709                        ppresult.write(core::mem::transmute(ok__));
12710                        windows_core::HRESULT(0)
12711                    }
12712                    Err(err) => err.into(),
12713                }
12714            }
12715        }
12716        unsafe extern "system" fn ResolveMultipleMessageClasses<
12717            Identity: IMAPIFormMgr_Impl,
12718            const OFFSET: isize,
12719        >(
12720            this: *mut core::ffi::c_void,
12721            pmsgclasses: *mut SMessageClassArray,
12722            ulflags: u32,
12723            pfolderfocus: *mut core::ffi::c_void,
12724            pfrminfoarray: *mut *mut SMAPIFormInfoArray,
12725        ) -> windows_core::HRESULT {
12726            unsafe {
12727                let this: &Identity =
12728                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12729                IMAPIFormMgr_Impl::ResolveMultipleMessageClasses(
12730                    this,
12731                    core::mem::transmute_copy(&pmsgclasses),
12732                    core::mem::transmute_copy(&ulflags),
12733                    core::mem::transmute_copy(&pfolderfocus),
12734                    core::mem::transmute_copy(&pfrminfoarray),
12735                )
12736                .into()
12737            }
12738        }
12739        unsafe extern "system" fn CalcFormPropSet<
12740            Identity: IMAPIFormMgr_Impl,
12741            const OFFSET: isize,
12742        >(
12743            this: *mut core::ffi::c_void,
12744            pfrminfoarray: *mut SMAPIFormInfoArray,
12745            ulflags: u32,
12746            ppresults: *mut *mut SMAPIFormPropArray,
12747        ) -> windows_core::HRESULT {
12748            unsafe {
12749                let this: &Identity =
12750                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12751                IMAPIFormMgr_Impl::CalcFormPropSet(
12752                    this,
12753                    core::mem::transmute_copy(&pfrminfoarray),
12754                    core::mem::transmute_copy(&ulflags),
12755                    core::mem::transmute_copy(&ppresults),
12756                )
12757                .into()
12758            }
12759        }
12760        unsafe extern "system" fn CreateForm<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12761            this: *mut core::ffi::c_void,
12762            uluiparam: usize,
12763            ulflags: u32,
12764            pfrminfotoactivate: *mut core::ffi::c_void,
12765            refiidtoask: *const windows_core::GUID,
12766            ppvobj: *mut *mut core::ffi::c_void,
12767        ) -> windows_core::HRESULT {
12768            unsafe {
12769                let this: &Identity =
12770                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12771                IMAPIFormMgr_Impl::CreateForm(
12772                    this,
12773                    core::mem::transmute_copy(&uluiparam),
12774                    core::mem::transmute_copy(&ulflags),
12775                    core::mem::transmute_copy(&pfrminfotoactivate),
12776                    core::mem::transmute_copy(&refiidtoask),
12777                    core::mem::transmute_copy(&ppvobj),
12778                )
12779                .into()
12780            }
12781        }
12782        unsafe extern "system" fn SelectForm<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12783            this: *mut core::ffi::c_void,
12784            uluiparam: usize,
12785            ulflags: u32,
12786            psztitle: *mut i8,
12787            pfld: *mut core::ffi::c_void,
12788            ppfrminforeturned: *mut *mut core::ffi::c_void,
12789        ) -> windows_core::HRESULT {
12790            unsafe {
12791                let this: &Identity =
12792                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12793                IMAPIFormMgr_Impl::SelectForm(
12794                    this,
12795                    core::mem::transmute_copy(&uluiparam),
12796                    core::mem::transmute_copy(&ulflags),
12797                    core::mem::transmute_copy(&psztitle),
12798                    core::mem::transmute_copy(&pfld),
12799                    core::mem::transmute_copy(&ppfrminforeturned),
12800                )
12801                .into()
12802            }
12803        }
12804        unsafe extern "system" fn SelectMultipleForms<
12805            Identity: IMAPIFormMgr_Impl,
12806            const OFFSET: isize,
12807        >(
12808            this: *mut core::ffi::c_void,
12809            uluiparam: usize,
12810            ulflags: u32,
12811            psztitle: *mut i8,
12812            pfld: *mut core::ffi::c_void,
12813            pfrminfoarray: *mut SMAPIFormInfoArray,
12814            ppfrminfoarray: *mut *mut SMAPIFormInfoArray,
12815        ) -> windows_core::HRESULT {
12816            unsafe {
12817                let this: &Identity =
12818                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12819                IMAPIFormMgr_Impl::SelectMultipleForms(
12820                    this,
12821                    core::mem::transmute_copy(&uluiparam),
12822                    core::mem::transmute_copy(&ulflags),
12823                    core::mem::transmute_copy(&psztitle),
12824                    core::mem::transmute_copy(&pfld),
12825                    core::mem::transmute_copy(&pfrminfoarray),
12826                    core::mem::transmute_copy(&ppfrminfoarray),
12827                )
12828                .into()
12829            }
12830        }
12831        unsafe extern "system" fn SelectFormContainer<
12832            Identity: IMAPIFormMgr_Impl,
12833            const OFFSET: isize,
12834        >(
12835            this: *mut core::ffi::c_void,
12836            uluiparam: usize,
12837            ulflags: u32,
12838            lppfcnt: *mut *mut core::ffi::c_void,
12839        ) -> windows_core::HRESULT {
12840            unsafe {
12841                let this: &Identity =
12842                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12843                match IMAPIFormMgr_Impl::SelectFormContainer(
12844                    this,
12845                    core::mem::transmute_copy(&uluiparam),
12846                    core::mem::transmute_copy(&ulflags),
12847                ) {
12848                    Ok(ok__) => {
12849                        lppfcnt.write(core::mem::transmute(ok__));
12850                        windows_core::HRESULT(0)
12851                    }
12852                    Err(err) => err.into(),
12853                }
12854            }
12855        }
12856        unsafe extern "system" fn OpenFormContainer<
12857            Identity: IMAPIFormMgr_Impl,
12858            const OFFSET: isize,
12859        >(
12860            this: *mut core::ffi::c_void,
12861            hfrmreg: u32,
12862            lpunk: *mut core::ffi::c_void,
12863            lppfcnt: *mut *mut core::ffi::c_void,
12864        ) -> windows_core::HRESULT {
12865            unsafe {
12866                let this: &Identity =
12867                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12868                match IMAPIFormMgr_Impl::OpenFormContainer(
12869                    this,
12870                    core::mem::transmute_copy(&hfrmreg),
12871                    core::mem::transmute_copy(&lpunk),
12872                ) {
12873                    Ok(ok__) => {
12874                        lppfcnt.write(core::mem::transmute(ok__));
12875                        windows_core::HRESULT(0)
12876                    }
12877                    Err(err) => err.into(),
12878                }
12879            }
12880        }
12881        unsafe extern "system" fn PrepareForm<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12882            this: *mut core::ffi::c_void,
12883            uluiparam: usize,
12884            ulflags: u32,
12885            pfrminfo: *mut core::ffi::c_void,
12886        ) -> windows_core::HRESULT {
12887            unsafe {
12888                let this: &Identity =
12889                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12890                IMAPIFormMgr_Impl::PrepareForm(
12891                    this,
12892                    core::mem::transmute_copy(&uluiparam),
12893                    core::mem::transmute_copy(&ulflags),
12894                    core::mem::transmute_copy(&pfrminfo),
12895                )
12896                .into()
12897            }
12898        }
12899        unsafe extern "system" fn IsInConflict<Identity: IMAPIFormMgr_Impl, const OFFSET: isize>(
12900            this: *mut core::ffi::c_void,
12901            ulmessageflags: u32,
12902            ulmessagestatus: u32,
12903            szmessageclass: windows_core::PCSTR,
12904            pfolderfocus: *mut core::ffi::c_void,
12905        ) -> windows_core::HRESULT {
12906            unsafe {
12907                let this: &Identity =
12908                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
12909                IMAPIFormMgr_Impl::IsInConflict(
12910                    this,
12911                    core::mem::transmute_copy(&ulmessageflags),
12912                    core::mem::transmute_copy(&ulmessagestatus),
12913                    core::mem::transmute(&szmessageclass),
12914                    core::mem::transmute_copy(&pfolderfocus),
12915                )
12916                .into()
12917            }
12918        }
12919        Self {
12920            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
12921            GetLastError: GetLastError::<Identity, OFFSET>,
12922            LoadForm: LoadForm::<Identity, OFFSET>,
12923            ResolveMessageClass: ResolveMessageClass::<Identity, OFFSET>,
12924            ResolveMultipleMessageClasses: ResolveMultipleMessageClasses::<Identity, OFFSET>,
12925            CalcFormPropSet: CalcFormPropSet::<Identity, OFFSET>,
12926            CreateForm: CreateForm::<Identity, OFFSET>,
12927            SelectForm: SelectForm::<Identity, OFFSET>,
12928            SelectMultipleForms: SelectMultipleForms::<Identity, OFFSET>,
12929            SelectFormContainer: SelectFormContainer::<Identity, OFFSET>,
12930            OpenFormContainer: OpenFormContainer::<Identity, OFFSET>,
12931            PrepareForm: PrepareForm::<Identity, OFFSET>,
12932            IsInConflict: IsInConflict::<Identity, OFFSET>,
12933        }
12934    }
12935    pub fn matches(iid: &windows_core::GUID) -> bool {
12936        iid == &<IMAPIFormMgr as windows_core::Interface>::IID
12937    }
12938}
12939impl windows_core::RuntimeName for IMAPIFormMgr {}
12940windows_core::imp::define_interface!(
12941    IMAPIMessageSite,
12942    IMAPIMessageSite_Vtbl,
12943    0x00020370_0000_0000_c000_000000000046
12944);
12945windows_core::imp::interface_hierarchy!(IMAPIMessageSite, windows_core::IUnknown);
12946impl IMAPIMessageSite {
12947    pub unsafe fn GetLastError(
12948        &self,
12949        hresult: windows_core::HRESULT,
12950        ulflags: u32,
12951        lppmapierror: *mut *mut MAPIERROR,
12952    ) -> windows_core::Result<()> {
12953        unsafe {
12954            (windows_core::Interface::vtable(self).GetLastError)(
12955                windows_core::Interface::as_raw(self),
12956                hresult,
12957                ulflags,
12958                lppmapierror as _,
12959            )
12960            .ok()
12961        }
12962    }
12963    pub unsafe fn GetSession(&self) -> windows_core::Result<IMAPISession> {
12964        unsafe {
12965            let mut result__ = core::mem::zeroed();
12966            (windows_core::Interface::vtable(self).GetSession)(
12967                windows_core::Interface::as_raw(self),
12968                &mut result__,
12969            )
12970            .and_then(|| windows_core::Type::from_abi(result__))
12971        }
12972    }
12973    pub unsafe fn GetStore(&self) -> windows_core::Result<IMsgStore> {
12974        unsafe {
12975            let mut result__ = core::mem::zeroed();
12976            (windows_core::Interface::vtable(self).GetStore)(
12977                windows_core::Interface::as_raw(self),
12978                &mut result__,
12979            )
12980            .and_then(|| windows_core::Type::from_abi(result__))
12981        }
12982    }
12983    pub unsafe fn GetFolder(&self) -> windows_core::Result<IMAPIFolder> {
12984        unsafe {
12985            let mut result__ = core::mem::zeroed();
12986            (windows_core::Interface::vtable(self).GetFolder)(
12987                windows_core::Interface::as_raw(self),
12988                &mut result__,
12989            )
12990            .and_then(|| windows_core::Type::from_abi(result__))
12991        }
12992    }
12993    pub unsafe fn GetMessageA(&self) -> windows_core::Result<IMessage> {
12994        unsafe {
12995            let mut result__ = core::mem::zeroed();
12996            (windows_core::Interface::vtable(self).GetMessageA)(
12997                windows_core::Interface::as_raw(self),
12998                &mut result__,
12999            )
13000            .and_then(|| windows_core::Type::from_abi(result__))
13001        }
13002    }
13003    pub unsafe fn GetFormManager(&self) -> windows_core::Result<IMAPIFormMgr> {
13004        unsafe {
13005            let mut result__ = core::mem::zeroed();
13006            (windows_core::Interface::vtable(self).GetFormManager)(
13007                windows_core::Interface::as_raw(self),
13008                &mut result__,
13009            )
13010            .and_then(|| windows_core::Type::from_abi(result__))
13011        }
13012    }
13013    pub unsafe fn NewMessage<P1, P2>(
13014        &self,
13015        fcomposeinfolder: u32,
13016        pfolderfocus: P1,
13017        ppersistmessage: P2,
13018        ppmessage: *mut Option<IMessage>,
13019        ppmessagesite: *mut Option<IMAPIMessageSite>,
13020        ppviewcontext: *mut Option<IMAPIViewContext>,
13021    ) -> windows_core::Result<()>
13022    where
13023        P1: windows_core::Param<IMAPIFolder>,
13024        P2: windows_core::Param<IPersistMessage>,
13025    {
13026        unsafe {
13027            (windows_core::Interface::vtable(self).NewMessage)(
13028                windows_core::Interface::as_raw(self),
13029                fcomposeinfolder,
13030                pfolderfocus.param().abi(),
13031                ppersistmessage.param().abi(),
13032                core::mem::transmute(ppmessage),
13033                core::mem::transmute(ppmessagesite),
13034                core::mem::transmute(ppviewcontext),
13035            )
13036            .ok()
13037        }
13038    }
13039    pub unsafe fn CopyMessage<P0>(&self, pfolderdestination: P0) -> windows_core::Result<()>
13040    where
13041        P0: windows_core::Param<IMAPIFolder>,
13042    {
13043        unsafe {
13044            (windows_core::Interface::vtable(self).CopyMessage)(
13045                windows_core::Interface::as_raw(self),
13046                pfolderdestination.param().abi(),
13047            )
13048            .ok()
13049        }
13050    }
13051    pub unsafe fn MoveMessage<P0, P1>(
13052        &self,
13053        pfolderdestination: P0,
13054        pviewcontext: P1,
13055        prcposrect: *mut windows::Win32::Foundation::RECT,
13056    ) -> windows_core::Result<()>
13057    where
13058        P0: windows_core::Param<IMAPIFolder>,
13059        P1: windows_core::Param<IMAPIViewContext>,
13060    {
13061        unsafe {
13062            (windows_core::Interface::vtable(self).MoveMessage)(
13063                windows_core::Interface::as_raw(self),
13064                pfolderdestination.param().abi(),
13065                pviewcontext.param().abi(),
13066                prcposrect as _,
13067            )
13068            .ok()
13069        }
13070    }
13071    pub unsafe fn DeleteMessage<P0>(
13072        &self,
13073        pviewcontext: P0,
13074        prcposrect: *mut windows::Win32::Foundation::RECT,
13075    ) -> windows_core::Result<()>
13076    where
13077        P0: windows_core::Param<IMAPIViewContext>,
13078    {
13079        unsafe {
13080            (windows_core::Interface::vtable(self).DeleteMessage)(
13081                windows_core::Interface::as_raw(self),
13082                pviewcontext.param().abi(),
13083                prcposrect as _,
13084            )
13085            .ok()
13086        }
13087    }
13088    pub unsafe fn SaveMessage(&self) -> windows_core::Result<()> {
13089        unsafe {
13090            (windows_core::Interface::vtable(self).SaveMessage)(windows_core::Interface::as_raw(
13091                self,
13092            ))
13093            .ok()
13094        }
13095    }
13096    pub unsafe fn SubmitMessage(&self, ulflags: u32) -> windows_core::Result<()> {
13097        unsafe {
13098            (windows_core::Interface::vtable(self).SubmitMessage)(
13099                windows_core::Interface::as_raw(self),
13100                ulflags,
13101            )
13102            .ok()
13103        }
13104    }
13105    pub unsafe fn GetSiteStatus(&self, lpulstatus: *mut u32) -> windows_core::Result<()> {
13106        unsafe {
13107            (windows_core::Interface::vtable(self).GetSiteStatus)(
13108                windows_core::Interface::as_raw(self),
13109                lpulstatus as _,
13110            )
13111            .ok()
13112        }
13113    }
13114}
13115#[repr(C)]
13116#[doc(hidden)]
13117pub struct IMAPIMessageSite_Vtbl {
13118    pub base__: windows_core::IUnknown_Vtbl,
13119    pub GetLastError: unsafe extern "system" fn(
13120        *mut core::ffi::c_void,
13121        windows_core::HRESULT,
13122        u32,
13123        *mut *mut MAPIERROR,
13124    ) -> windows_core::HRESULT,
13125    pub GetSession: unsafe extern "system" fn(
13126        *mut core::ffi::c_void,
13127        *mut *mut core::ffi::c_void,
13128    ) -> windows_core::HRESULT,
13129    pub GetStore: unsafe extern "system" fn(
13130        *mut core::ffi::c_void,
13131        *mut *mut core::ffi::c_void,
13132    ) -> windows_core::HRESULT,
13133    pub GetFolder: unsafe extern "system" fn(
13134        *mut core::ffi::c_void,
13135        *mut *mut core::ffi::c_void,
13136    ) -> windows_core::HRESULT,
13137    pub GetMessageA: unsafe extern "system" fn(
13138        *mut core::ffi::c_void,
13139        *mut *mut core::ffi::c_void,
13140    ) -> windows_core::HRESULT,
13141    pub GetFormManager: unsafe extern "system" fn(
13142        *mut core::ffi::c_void,
13143        *mut *mut core::ffi::c_void,
13144    ) -> windows_core::HRESULT,
13145    pub NewMessage: unsafe extern "system" fn(
13146        *mut core::ffi::c_void,
13147        u32,
13148        *mut core::ffi::c_void,
13149        *mut core::ffi::c_void,
13150        *mut *mut core::ffi::c_void,
13151        *mut *mut core::ffi::c_void,
13152        *mut *mut core::ffi::c_void,
13153    ) -> windows_core::HRESULT,
13154    pub CopyMessage: unsafe extern "system" fn(
13155        *mut core::ffi::c_void,
13156        *mut core::ffi::c_void,
13157    ) -> windows_core::HRESULT,
13158    pub MoveMessage: unsafe extern "system" fn(
13159        *mut core::ffi::c_void,
13160        *mut core::ffi::c_void,
13161        *mut core::ffi::c_void,
13162        *mut windows::Win32::Foundation::RECT,
13163    ) -> windows_core::HRESULT,
13164    pub DeleteMessage: unsafe extern "system" fn(
13165        *mut core::ffi::c_void,
13166        *mut core::ffi::c_void,
13167        *mut windows::Win32::Foundation::RECT,
13168    ) -> windows_core::HRESULT,
13169    pub SaveMessage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
13170    pub SubmitMessage:
13171        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
13172    pub GetSiteStatus:
13173        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
13174}
13175pub trait IMAPIMessageSite_Impl: windows_core::IUnknownImpl {
13176    fn GetLastError(
13177        &self,
13178        hresult: windows_core::HRESULT,
13179        ulflags: u32,
13180        lppmapierror: *mut *mut MAPIERROR,
13181    ) -> windows_core::Result<()>;
13182    fn GetSession(&self) -> windows_core::Result<IMAPISession>;
13183    fn GetStore(&self) -> windows_core::Result<IMsgStore>;
13184    fn GetFolder(&self) -> windows_core::Result<IMAPIFolder>;
13185    fn GetMessageA(&self) -> windows_core::Result<IMessage>;
13186    fn GetFormManager(&self) -> windows_core::Result<IMAPIFormMgr>;
13187    fn NewMessage(
13188        &self,
13189        fcomposeinfolder: u32,
13190        pfolderfocus: windows_core::Ref<IMAPIFolder>,
13191        ppersistmessage: windows_core::Ref<IPersistMessage>,
13192        ppmessage: windows_core::OutRef<IMessage>,
13193        ppmessagesite: windows_core::OutRef<IMAPIMessageSite>,
13194        ppviewcontext: windows_core::OutRef<IMAPIViewContext>,
13195    ) -> windows_core::Result<()>;
13196    fn CopyMessage(
13197        &self,
13198        pfolderdestination: windows_core::Ref<IMAPIFolder>,
13199    ) -> windows_core::Result<()>;
13200    fn MoveMessage(
13201        &self,
13202        pfolderdestination: windows_core::Ref<IMAPIFolder>,
13203        pviewcontext: windows_core::Ref<IMAPIViewContext>,
13204        prcposrect: *mut windows::Win32::Foundation::RECT,
13205    ) -> windows_core::Result<()>;
13206    fn DeleteMessage(
13207        &self,
13208        pviewcontext: windows_core::Ref<IMAPIViewContext>,
13209        prcposrect: *mut windows::Win32::Foundation::RECT,
13210    ) -> windows_core::Result<()>;
13211    fn SaveMessage(&self) -> windows_core::Result<()>;
13212    fn SubmitMessage(&self, ulflags: u32) -> windows_core::Result<()>;
13213    fn GetSiteStatus(&self, lpulstatus: *mut u32) -> windows_core::Result<()>;
13214}
13215impl IMAPIMessageSite_Vtbl {
13216    pub const fn new<Identity: IMAPIMessageSite_Impl, const OFFSET: isize>() -> Self {
13217        unsafe extern "system" fn GetLastError<
13218            Identity: IMAPIMessageSite_Impl,
13219            const OFFSET: isize,
13220        >(
13221            this: *mut core::ffi::c_void,
13222            hresult: windows_core::HRESULT,
13223            ulflags: u32,
13224            lppmapierror: *mut *mut MAPIERROR,
13225        ) -> windows_core::HRESULT {
13226            unsafe {
13227                let this: &Identity =
13228                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13229                IMAPIMessageSite_Impl::GetLastError(
13230                    this,
13231                    core::mem::transmute_copy(&hresult),
13232                    core::mem::transmute_copy(&ulflags),
13233                    core::mem::transmute_copy(&lppmapierror),
13234                )
13235                .into()
13236            }
13237        }
13238        unsafe extern "system" fn GetSession<
13239            Identity: IMAPIMessageSite_Impl,
13240            const OFFSET: isize,
13241        >(
13242            this: *mut core::ffi::c_void,
13243            ppsession: *mut *mut core::ffi::c_void,
13244        ) -> windows_core::HRESULT {
13245            unsafe {
13246                let this: &Identity =
13247                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13248                match IMAPIMessageSite_Impl::GetSession(this) {
13249                    Ok(ok__) => {
13250                        ppsession.write(core::mem::transmute(ok__));
13251                        windows_core::HRESULT(0)
13252                    }
13253                    Err(err) => err.into(),
13254                }
13255            }
13256        }
13257        unsafe extern "system" fn GetStore<Identity: IMAPIMessageSite_Impl, const OFFSET: isize>(
13258            this: *mut core::ffi::c_void,
13259            ppstore: *mut *mut core::ffi::c_void,
13260        ) -> windows_core::HRESULT {
13261            unsafe {
13262                let this: &Identity =
13263                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13264                match IMAPIMessageSite_Impl::GetStore(this) {
13265                    Ok(ok__) => {
13266                        ppstore.write(core::mem::transmute(ok__));
13267                        windows_core::HRESULT(0)
13268                    }
13269                    Err(err) => err.into(),
13270                }
13271            }
13272        }
13273        unsafe extern "system" fn GetFolder<
13274            Identity: IMAPIMessageSite_Impl,
13275            const OFFSET: isize,
13276        >(
13277            this: *mut core::ffi::c_void,
13278            ppfolder: *mut *mut core::ffi::c_void,
13279        ) -> windows_core::HRESULT {
13280            unsafe {
13281                let this: &Identity =
13282                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13283                match IMAPIMessageSite_Impl::GetFolder(this) {
13284                    Ok(ok__) => {
13285                        ppfolder.write(core::mem::transmute(ok__));
13286                        windows_core::HRESULT(0)
13287                    }
13288                    Err(err) => err.into(),
13289                }
13290            }
13291        }
13292        unsafe extern "system" fn GetMessageA<
13293            Identity: IMAPIMessageSite_Impl,
13294            const OFFSET: isize,
13295        >(
13296            this: *mut core::ffi::c_void,
13297            ppmsg: *mut *mut core::ffi::c_void,
13298        ) -> windows_core::HRESULT {
13299            unsafe {
13300                let this: &Identity =
13301                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13302                match IMAPIMessageSite_Impl::GetMessageA(this) {
13303                    Ok(ok__) => {
13304                        ppmsg.write(core::mem::transmute(ok__));
13305                        windows_core::HRESULT(0)
13306                    }
13307                    Err(err) => err.into(),
13308                }
13309            }
13310        }
13311        unsafe extern "system" fn GetFormManager<
13312            Identity: IMAPIMessageSite_Impl,
13313            const OFFSET: isize,
13314        >(
13315            this: *mut core::ffi::c_void,
13316            ppformmgr: *mut *mut core::ffi::c_void,
13317        ) -> windows_core::HRESULT {
13318            unsafe {
13319                let this: &Identity =
13320                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13321                match IMAPIMessageSite_Impl::GetFormManager(this) {
13322                    Ok(ok__) => {
13323                        ppformmgr.write(core::mem::transmute(ok__));
13324                        windows_core::HRESULT(0)
13325                    }
13326                    Err(err) => err.into(),
13327                }
13328            }
13329        }
13330        unsafe extern "system" fn NewMessage<
13331            Identity: IMAPIMessageSite_Impl,
13332            const OFFSET: isize,
13333        >(
13334            this: *mut core::ffi::c_void,
13335            fcomposeinfolder: u32,
13336            pfolderfocus: *mut core::ffi::c_void,
13337            ppersistmessage: *mut core::ffi::c_void,
13338            ppmessage: *mut *mut core::ffi::c_void,
13339            ppmessagesite: *mut *mut core::ffi::c_void,
13340            ppviewcontext: *mut *mut core::ffi::c_void,
13341        ) -> windows_core::HRESULT {
13342            unsafe {
13343                let this: &Identity =
13344                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13345                IMAPIMessageSite_Impl::NewMessage(
13346                    this,
13347                    core::mem::transmute_copy(&fcomposeinfolder),
13348                    core::mem::transmute_copy(&pfolderfocus),
13349                    core::mem::transmute_copy(&ppersistmessage),
13350                    core::mem::transmute_copy(&ppmessage),
13351                    core::mem::transmute_copy(&ppmessagesite),
13352                    core::mem::transmute_copy(&ppviewcontext),
13353                )
13354                .into()
13355            }
13356        }
13357        unsafe extern "system" fn CopyMessage<
13358            Identity: IMAPIMessageSite_Impl,
13359            const OFFSET: isize,
13360        >(
13361            this: *mut core::ffi::c_void,
13362            pfolderdestination: *mut core::ffi::c_void,
13363        ) -> windows_core::HRESULT {
13364            unsafe {
13365                let this: &Identity =
13366                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13367                IMAPIMessageSite_Impl::CopyMessage(
13368                    this,
13369                    core::mem::transmute_copy(&pfolderdestination),
13370                )
13371                .into()
13372            }
13373        }
13374        unsafe extern "system" fn MoveMessage<
13375            Identity: IMAPIMessageSite_Impl,
13376            const OFFSET: isize,
13377        >(
13378            this: *mut core::ffi::c_void,
13379            pfolderdestination: *mut core::ffi::c_void,
13380            pviewcontext: *mut core::ffi::c_void,
13381            prcposrect: *mut windows::Win32::Foundation::RECT,
13382        ) -> windows_core::HRESULT {
13383            unsafe {
13384                let this: &Identity =
13385                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13386                IMAPIMessageSite_Impl::MoveMessage(
13387                    this,
13388                    core::mem::transmute_copy(&pfolderdestination),
13389                    core::mem::transmute_copy(&pviewcontext),
13390                    core::mem::transmute_copy(&prcposrect),
13391                )
13392                .into()
13393            }
13394        }
13395        unsafe extern "system" fn DeleteMessage<
13396            Identity: IMAPIMessageSite_Impl,
13397            const OFFSET: isize,
13398        >(
13399            this: *mut core::ffi::c_void,
13400            pviewcontext: *mut core::ffi::c_void,
13401            prcposrect: *mut windows::Win32::Foundation::RECT,
13402        ) -> windows_core::HRESULT {
13403            unsafe {
13404                let this: &Identity =
13405                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13406                IMAPIMessageSite_Impl::DeleteMessage(
13407                    this,
13408                    core::mem::transmute_copy(&pviewcontext),
13409                    core::mem::transmute_copy(&prcposrect),
13410                )
13411                .into()
13412            }
13413        }
13414        unsafe extern "system" fn SaveMessage<
13415            Identity: IMAPIMessageSite_Impl,
13416            const OFFSET: isize,
13417        >(
13418            this: *mut core::ffi::c_void,
13419        ) -> windows_core::HRESULT {
13420            unsafe {
13421                let this: &Identity =
13422                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13423                IMAPIMessageSite_Impl::SaveMessage(this).into()
13424            }
13425        }
13426        unsafe extern "system" fn SubmitMessage<
13427            Identity: IMAPIMessageSite_Impl,
13428            const OFFSET: isize,
13429        >(
13430            this: *mut core::ffi::c_void,
13431            ulflags: u32,
13432        ) -> windows_core::HRESULT {
13433            unsafe {
13434                let this: &Identity =
13435                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13436                IMAPIMessageSite_Impl::SubmitMessage(this, core::mem::transmute_copy(&ulflags))
13437                    .into()
13438            }
13439        }
13440        unsafe extern "system" fn GetSiteStatus<
13441            Identity: IMAPIMessageSite_Impl,
13442            const OFFSET: isize,
13443        >(
13444            this: *mut core::ffi::c_void,
13445            lpulstatus: *mut u32,
13446        ) -> windows_core::HRESULT {
13447            unsafe {
13448                let this: &Identity =
13449                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13450                IMAPIMessageSite_Impl::GetSiteStatus(this, core::mem::transmute_copy(&lpulstatus))
13451                    .into()
13452            }
13453        }
13454        Self {
13455            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
13456            GetLastError: GetLastError::<Identity, OFFSET>,
13457            GetSession: GetSession::<Identity, OFFSET>,
13458            GetStore: GetStore::<Identity, OFFSET>,
13459            GetFolder: GetFolder::<Identity, OFFSET>,
13460            GetMessageA: GetMessageA::<Identity, OFFSET>,
13461            GetFormManager: GetFormManager::<Identity, OFFSET>,
13462            NewMessage: NewMessage::<Identity, OFFSET>,
13463            CopyMessage: CopyMessage::<Identity, OFFSET>,
13464            MoveMessage: MoveMessage::<Identity, OFFSET>,
13465            DeleteMessage: DeleteMessage::<Identity, OFFSET>,
13466            SaveMessage: SaveMessage::<Identity, OFFSET>,
13467            SubmitMessage: SubmitMessage::<Identity, OFFSET>,
13468            GetSiteStatus: GetSiteStatus::<Identity, OFFSET>,
13469        }
13470    }
13471    pub fn matches(iid: &windows_core::GUID) -> bool {
13472        iid == &<IMAPIMessageSite as windows_core::Interface>::IID
13473    }
13474}
13475impl windows_core::RuntimeName for IMAPIMessageSite {}
13476windows_core::imp::define_interface!(
13477    IMAPIProgress,
13478    IMAPIProgress_Vtbl,
13479    0x0002031f_0000_0000_c000_000000000046
13480);
13481windows_core::imp::interface_hierarchy!(IMAPIProgress, windows_core::IUnknown);
13482impl IMAPIProgress {
13483    pub unsafe fn Progress(
13484        &self,
13485        ulvalue: u32,
13486        ulcount: u32,
13487        ultotal: u32,
13488    ) -> windows_core::Result<()> {
13489        unsafe {
13490            (windows_core::Interface::vtable(self).Progress)(
13491                windows_core::Interface::as_raw(self),
13492                ulvalue,
13493                ulcount,
13494                ultotal,
13495            )
13496            .ok()
13497        }
13498    }
13499    pub unsafe fn GetFlags(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
13500        unsafe {
13501            (windows_core::Interface::vtable(self).GetFlags)(
13502                windows_core::Interface::as_raw(self),
13503                lpulflags as _,
13504            )
13505            .ok()
13506        }
13507    }
13508    pub unsafe fn GetMax(&self, lpulmax: *mut u32) -> windows_core::Result<()> {
13509        unsafe {
13510            (windows_core::Interface::vtable(self).GetMax)(
13511                windows_core::Interface::as_raw(self),
13512                lpulmax as _,
13513            )
13514            .ok()
13515        }
13516    }
13517    pub unsafe fn GetMin(&self, lpulmin: *mut u32) -> windows_core::Result<()> {
13518        unsafe {
13519            (windows_core::Interface::vtable(self).GetMin)(
13520                windows_core::Interface::as_raw(self),
13521                lpulmin as _,
13522            )
13523            .ok()
13524        }
13525    }
13526    pub unsafe fn SetLimits(
13527        &self,
13528        lpulmin: *mut u32,
13529        lpulmax: *mut u32,
13530        lpulflags: *mut u32,
13531    ) -> windows_core::Result<()> {
13532        unsafe {
13533            (windows_core::Interface::vtable(self).SetLimits)(
13534                windows_core::Interface::as_raw(self),
13535                lpulmin as _,
13536                lpulmax as _,
13537                lpulflags as _,
13538            )
13539            .ok()
13540        }
13541    }
13542}
13543#[repr(C)]
13544#[doc(hidden)]
13545pub struct IMAPIProgress_Vtbl {
13546    pub base__: windows_core::IUnknown_Vtbl,
13547    pub Progress:
13548        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
13549    pub GetFlags:
13550        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
13551    pub GetMax:
13552        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
13553    pub GetMin:
13554        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
13555    pub SetLimits: unsafe extern "system" fn(
13556        *mut core::ffi::c_void,
13557        *mut u32,
13558        *mut u32,
13559        *mut u32,
13560    ) -> windows_core::HRESULT,
13561}
13562pub trait IMAPIProgress_Impl: windows_core::IUnknownImpl {
13563    fn Progress(&self, ulvalue: u32, ulcount: u32, ultotal: u32) -> windows_core::Result<()>;
13564    fn GetFlags(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
13565    fn GetMax(&self, lpulmax: *mut u32) -> windows_core::Result<()>;
13566    fn GetMin(&self, lpulmin: *mut u32) -> windows_core::Result<()>;
13567    fn SetLimits(
13568        &self,
13569        lpulmin: *mut u32,
13570        lpulmax: *mut u32,
13571        lpulflags: *mut u32,
13572    ) -> windows_core::Result<()>;
13573}
13574impl IMAPIProgress_Vtbl {
13575    pub const fn new<Identity: IMAPIProgress_Impl, const OFFSET: isize>() -> Self {
13576        unsafe extern "system" fn Progress<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13577            this: *mut core::ffi::c_void,
13578            ulvalue: u32,
13579            ulcount: u32,
13580            ultotal: u32,
13581        ) -> windows_core::HRESULT {
13582            unsafe {
13583                let this: &Identity =
13584                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13585                IMAPIProgress_Impl::Progress(
13586                    this,
13587                    core::mem::transmute_copy(&ulvalue),
13588                    core::mem::transmute_copy(&ulcount),
13589                    core::mem::transmute_copy(&ultotal),
13590                )
13591                .into()
13592            }
13593        }
13594        unsafe extern "system" fn GetFlags<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13595            this: *mut core::ffi::c_void,
13596            lpulflags: *mut u32,
13597        ) -> windows_core::HRESULT {
13598            unsafe {
13599                let this: &Identity =
13600                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13601                IMAPIProgress_Impl::GetFlags(this, core::mem::transmute_copy(&lpulflags)).into()
13602            }
13603        }
13604        unsafe extern "system" fn GetMax<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13605            this: *mut core::ffi::c_void,
13606            lpulmax: *mut u32,
13607        ) -> windows_core::HRESULT {
13608            unsafe {
13609                let this: &Identity =
13610                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13611                IMAPIProgress_Impl::GetMax(this, core::mem::transmute_copy(&lpulmax)).into()
13612            }
13613        }
13614        unsafe extern "system" fn GetMin<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13615            this: *mut core::ffi::c_void,
13616            lpulmin: *mut u32,
13617        ) -> windows_core::HRESULT {
13618            unsafe {
13619                let this: &Identity =
13620                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13621                IMAPIProgress_Impl::GetMin(this, core::mem::transmute_copy(&lpulmin)).into()
13622            }
13623        }
13624        unsafe extern "system" fn SetLimits<Identity: IMAPIProgress_Impl, const OFFSET: isize>(
13625            this: *mut core::ffi::c_void,
13626            lpulmin: *mut u32,
13627            lpulmax: *mut u32,
13628            lpulflags: *mut u32,
13629        ) -> windows_core::HRESULT {
13630            unsafe {
13631                let this: &Identity =
13632                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
13633                IMAPIProgress_Impl::SetLimits(
13634                    this,
13635                    core::mem::transmute_copy(&lpulmin),
13636                    core::mem::transmute_copy(&lpulmax),
13637                    core::mem::transmute_copy(&lpulflags),
13638                )
13639                .into()
13640            }
13641        }
13642        Self {
13643            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
13644            Progress: Progress::<Identity, OFFSET>,
13645            GetFlags: GetFlags::<Identity, OFFSET>,
13646            GetMax: GetMax::<Identity, OFFSET>,
13647            GetMin: GetMin::<Identity, OFFSET>,
13648            SetLimits: SetLimits::<Identity, OFFSET>,
13649        }
13650    }
13651    pub fn matches(iid: &windows_core::GUID) -> bool {
13652        iid == &<IMAPIProgress as windows_core::Interface>::IID
13653    }
13654}
13655impl windows_core::RuntimeName for IMAPIProgress {}
13656windows_core::imp::define_interface!(
13657    IMAPIProp,
13658    IMAPIProp_Vtbl,
13659    0x00020303_0000_0000_c000_000000000046
13660);
13661windows_core::imp::interface_hierarchy!(IMAPIProp, windows_core::IUnknown);
13662impl IMAPIProp {
13663    pub unsafe fn GetLastError(
13664        &self,
13665        hresult: windows_core::HRESULT,
13666        ulflags: u32,
13667        lppmapierror: *mut *mut MAPIERROR,
13668    ) -> windows_core::Result<()> {
13669        unsafe {
13670            (windows_core::Interface::vtable(self).GetLastError)(
13671                windows_core::Interface::as_raw(self),
13672                hresult,
13673                ulflags,
13674                lppmapierror as _,
13675            )
13676            .ok()
13677        }
13678    }
13679    pub unsafe fn SaveChanges(&self, ulflags: u32) -> windows_core::Result<()> {
13680        unsafe {
13681            (windows_core::Interface::vtable(self).SaveChanges)(
13682                windows_core::Interface::as_raw(self),
13683                ulflags,
13684            )
13685            .ok()
13686        }
13687    }
13688    pub unsafe fn GetProps(
13689        &self,
13690        lpproptagarray: *mut SPropTagArray,
13691        ulflags: u32,
13692        lpcvalues: *mut u32,
13693        lppproparray: *mut *mut SPropValue,
13694    ) -> windows_core::Result<()> {
13695        unsafe {
13696            (windows_core::Interface::vtable(self).GetProps)(
13697                windows_core::Interface::as_raw(self),
13698                lpproptagarray as _,
13699                ulflags,
13700                lpcvalues as _,
13701                lppproparray as _,
13702            )
13703            .ok()
13704        }
13705    }
13706    pub unsafe fn GetPropList(
13707        &self,
13708        ulflags: u32,
13709        lppproptagarray: *mut *mut SPropTagArray,
13710    ) -> windows_core::Result<()> {
13711        unsafe {
13712            (windows_core::Interface::vtable(self).GetPropList)(
13713                windows_core::Interface::as_raw(self),
13714                ulflags,
13715                lppproptagarray as _,
13716            )
13717            .ok()
13718        }
13719    }
13720    pub unsafe fn OpenProperty(
13721        &self,
13722        ulproptag: u32,
13723        lpiid: *mut windows_core::GUID,
13724        ulinterfaceoptions: u32,
13725        ulflags: u32,
13726        lppunk: *mut Option<windows_core::IUnknown>,
13727    ) -> windows_core::Result<()> {
13728        unsafe {
13729            (windows_core::Interface::vtable(self).OpenProperty)(
13730                windows_core::Interface::as_raw(self),
13731                ulproptag,
13732                lpiid as _,
13733                ulinterfaceoptions,
13734                ulflags,
13735                core::mem::transmute(lppunk),
13736            )
13737            .ok()
13738        }
13739    }
13740    pub unsafe fn SetProps(
13741        &self,
13742        cvalues: u32,
13743        lpproparray: *mut SPropValue,
13744        lppproblems: *mut *mut SPropProblemArray,
13745    ) -> windows_core::Result<()> {
13746        unsafe {
13747            (windows_core::Interface::vtable(self).SetProps)(
13748                windows_core::Interface::as_raw(self),
13749                cvalues,
13750                lpproparray as _,
13751                lppproblems as _,
13752            )
13753            .ok()
13754        }
13755    }
13756    pub unsafe fn DeleteProps(
13757        &self,
13758        lpproptagarray: *mut SPropTagArray,
13759        lppproblems: *mut *mut SPropProblemArray,
13760    ) -> windows_core::Result<()> {
13761        unsafe {
13762            (windows_core::Interface::vtable(self).DeleteProps)(
13763                windows_core::Interface::as_raw(self),
13764                lpproptagarray as _,
13765                lppproblems as _,
13766            )
13767            .ok()
13768        }
13769    }
13770    pub unsafe fn CopyTo<P4>(
13771        &self,
13772        ciidexclude: u32,
13773        rgiidexclude: *mut windows_core::GUID,
13774        lpexcludeprops: *mut SPropTagArray,
13775        uluiparam: usize,
13776        lpprogress: P4,
13777        lpinterface: *mut windows_core::GUID,
13778        lpdestobj: *mut core::ffi::c_void,
13779        ulflags: u32,
13780        lppproblems: *mut *mut SPropProblemArray,
13781    ) -> windows_core::Result<()>
13782    where
13783        P4: windows_core::Param<IMAPIProgress>,
13784    {
13785        unsafe {
13786            (windows_core::Interface::vtable(self).CopyTo)(
13787                windows_core::Interface::as_raw(self),
13788                ciidexclude,
13789                rgiidexclude as _,
13790                lpexcludeprops as _,
13791                uluiparam,
13792                lpprogress.param().abi(),
13793                lpinterface as _,
13794                lpdestobj as _,
13795                ulflags,
13796                lppproblems as _,
13797            )
13798            .ok()
13799        }
13800    }
13801    pub unsafe fn CopyProps<P2>(
13802        &self,
13803        lpincludeprops: *mut SPropTagArray,
13804        uluiparam: usize,
13805        lpprogress: P2,
13806        lpinterface: *mut windows_core::GUID,
13807        lpdestobj: *mut core::ffi::c_void,
13808        ulflags: u32,
13809        lppproblems: *mut *mut SPropProblemArray,
13810    ) -> windows_core::Result<()>
13811    where
13812        P2: windows_core::Param<IMAPIProgress>,
13813    {
13814        unsafe {
13815            (windows_core::Interface::vtable(self).CopyProps)(
13816                windows_core::Interface::as_raw(self),
13817                lpincludeprops as _,
13818                uluiparam,
13819                lpprogress.param().abi(),
13820                lpinterface as _,
13821                lpdestobj as _,
13822                ulflags,
13823                lppproblems as _,
13824            )
13825            .ok()
13826        }
13827    }
13828    pub unsafe fn GetNamesFromIDs(
13829        &self,
13830        lppproptags: *mut *mut SPropTagArray,
13831        lppropsetguid: *mut windows_core::GUID,
13832        ulflags: u32,
13833        lpcpropnames: *mut u32,
13834        lppppropnames: *mut *mut *mut MAPINAMEID,
13835    ) -> windows_core::Result<()> {
13836        unsafe {
13837            (windows_core::Interface::vtable(self).GetNamesFromIDs)(
13838                windows_core::Interface::as_raw(self),
13839                lppproptags as _,
13840                lppropsetguid as _,
13841                ulflags,
13842                lpcpropnames as _,
13843                lppppropnames as _,
13844            )
13845            .ok()
13846        }
13847    }
13848    pub unsafe fn GetIDsFromNames(
13849        &self,
13850        cpropnames: u32,
13851        lpppropnames: *mut *mut MAPINAMEID,
13852        ulflags: u32,
13853        lppproptags: *mut *mut SPropTagArray,
13854    ) -> windows_core::Result<()> {
13855        unsafe {
13856            (windows_core::Interface::vtable(self).GetIDsFromNames)(
13857                windows_core::Interface::as_raw(self),
13858                cpropnames,
13859                lpppropnames as _,
13860                ulflags,
13861                lppproptags as _,
13862            )
13863            .ok()
13864        }
13865    }
13866}
13867#[repr(C)]
13868#[doc(hidden)]
13869pub struct IMAPIProp_Vtbl {
13870    pub base__: windows_core::IUnknown_Vtbl,
13871    pub GetLastError: unsafe extern "system" fn(
13872        *mut core::ffi::c_void,
13873        windows_core::HRESULT,
13874        u32,
13875        *mut *mut MAPIERROR,
13876    ) -> windows_core::HRESULT,
13877    pub SaveChanges:
13878        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
13879    pub GetProps: unsafe extern "system" fn(
13880        *mut core::ffi::c_void,
13881        *mut SPropTagArray,
13882        u32,
13883        *mut u32,
13884        *mut *mut SPropValue,
13885    ) -> windows_core::HRESULT,
13886    pub GetPropList: unsafe extern "system" fn(
13887        *mut core::ffi::c_void,
13888        u32,
13889        *mut *mut SPropTagArray,
13890    ) -> windows_core::HRESULT,
13891    pub OpenProperty: unsafe extern "system" fn(
13892        *mut core::ffi::c_void,
13893        u32,
13894        *mut windows_core::GUID,
13895        u32,
13896        u32,
13897        *mut *mut core::ffi::c_void,
13898    ) -> windows_core::HRESULT,
13899    pub SetProps: unsafe extern "system" fn(
13900        *mut core::ffi::c_void,
13901        u32,
13902        *mut SPropValue,
13903        *mut *mut SPropProblemArray,
13904    ) -> windows_core::HRESULT,
13905    pub DeleteProps: unsafe extern "system" fn(
13906        *mut core::ffi::c_void,
13907        *mut SPropTagArray,
13908        *mut *mut SPropProblemArray,
13909    ) -> windows_core::HRESULT,
13910    pub CopyTo: unsafe extern "system" fn(
13911        *mut core::ffi::c_void,
13912        u32,
13913        *mut windows_core::GUID,
13914        *mut SPropTagArray,
13915        usize,
13916        *mut core::ffi::c_void,
13917        *mut windows_core::GUID,
13918        *mut core::ffi::c_void,
13919        u32,
13920        *mut *mut SPropProblemArray,
13921    ) -> windows_core::HRESULT,
13922    pub CopyProps: unsafe extern "system" fn(
13923        *mut core::ffi::c_void,
13924        *mut SPropTagArray,
13925        usize,
13926        *mut core::ffi::c_void,
13927        *mut windows_core::GUID,
13928        *mut core::ffi::c_void,
13929        u32,
13930        *mut *mut SPropProblemArray,
13931    ) -> windows_core::HRESULT,
13932    pub GetNamesFromIDs: unsafe extern "system" fn(
13933        *mut core::ffi::c_void,
13934        *mut *mut SPropTagArray,
13935        *mut windows_core::GUID,
13936        u32,
13937        *mut u32,
13938        *mut *mut *mut MAPINAMEID,
13939    ) -> windows_core::HRESULT,
13940    pub GetIDsFromNames: unsafe extern "system" fn(
13941        *mut core::ffi::c_void,
13942        u32,
13943        *mut *mut MAPINAMEID,
13944        u32,
13945        *mut *mut SPropTagArray,
13946    ) -> windows_core::HRESULT,
13947}
13948pub trait IMAPIProp_Impl: windows_core::IUnknownImpl {
13949    fn GetLastError(
13950        &self,
13951        hresult: windows_core::HRESULT,
13952        ulflags: u32,
13953        lppmapierror: *mut *mut MAPIERROR,
13954    ) -> windows_core::Result<()>;
13955    fn SaveChanges(&self, ulflags: u32) -> windows_core::Result<()>;
13956    fn GetProps(
13957        &self,
13958        lpproptagarray: *mut SPropTagArray,
13959        ulflags: u32,
13960        lpcvalues: *mut u32,
13961        lppproparray: *mut *mut SPropValue,
13962    ) -> windows_core::Result<()>;
13963    fn GetPropList(
13964        &self,
13965        ulflags: u32,
13966        lppproptagarray: *mut *mut SPropTagArray,
13967    ) -> windows_core::Result<()>;
13968    fn OpenProperty(
13969        &self,
13970        ulproptag: u32,
13971        lpiid: *mut windows_core::GUID,
13972        ulinterfaceoptions: u32,
13973        ulflags: u32,
13974        lppunk: windows_core::OutRef<windows_core::IUnknown>,
13975    ) -> windows_core::Result<()>;
13976    fn SetProps(
13977        &self,
13978        cvalues: u32,
13979        lpproparray: *mut SPropValue,
13980        lppproblems: *mut *mut SPropProblemArray,
13981    ) -> windows_core::Result<()>;
13982    fn DeleteProps(
13983        &self,
13984        lpproptagarray: *mut SPropTagArray,
13985        lppproblems: *mut *mut SPropProblemArray,
13986    ) -> windows_core::Result<()>;
13987    fn CopyTo(
13988        &self,
13989        ciidexclude: u32,
13990        rgiidexclude: *mut windows_core::GUID,
13991        lpexcludeprops: *mut SPropTagArray,
13992        uluiparam: usize,
13993        lpprogress: windows_core::Ref<IMAPIProgress>,
13994        lpinterface: *mut windows_core::GUID,
13995        lpdestobj: *mut core::ffi::c_void,
13996        ulflags: u32,
13997        lppproblems: *mut *mut SPropProblemArray,
13998    ) -> windows_core::Result<()>;
13999    fn CopyProps(
14000        &self,
14001        lpincludeprops: *mut SPropTagArray,
14002        uluiparam: usize,
14003        lpprogress: windows_core::Ref<IMAPIProgress>,
14004        lpinterface: *mut windows_core::GUID,
14005        lpdestobj: *mut core::ffi::c_void,
14006        ulflags: u32,
14007        lppproblems: *mut *mut SPropProblemArray,
14008    ) -> windows_core::Result<()>;
14009    fn GetNamesFromIDs(
14010        &self,
14011        lppproptags: *mut *mut SPropTagArray,
14012        lppropsetguid: *mut windows_core::GUID,
14013        ulflags: u32,
14014        lpcpropnames: *mut u32,
14015        lppppropnames: *mut *mut *mut MAPINAMEID,
14016    ) -> windows_core::Result<()>;
14017    fn GetIDsFromNames(
14018        &self,
14019        cpropnames: u32,
14020        lpppropnames: *mut *mut MAPINAMEID,
14021        ulflags: u32,
14022        lppproptags: *mut *mut SPropTagArray,
14023    ) -> windows_core::Result<()>;
14024}
14025impl IMAPIProp_Vtbl {
14026    pub const fn new<Identity: IMAPIProp_Impl, const OFFSET: isize>() -> Self {
14027        unsafe extern "system" fn GetLastError<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14028            this: *mut core::ffi::c_void,
14029            hresult: windows_core::HRESULT,
14030            ulflags: u32,
14031            lppmapierror: *mut *mut MAPIERROR,
14032        ) -> windows_core::HRESULT {
14033            unsafe {
14034                let this: &Identity =
14035                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14036                IMAPIProp_Impl::GetLastError(
14037                    this,
14038                    core::mem::transmute_copy(&hresult),
14039                    core::mem::transmute_copy(&ulflags),
14040                    core::mem::transmute_copy(&lppmapierror),
14041                )
14042                .into()
14043            }
14044        }
14045        unsafe extern "system" fn SaveChanges<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14046            this: *mut core::ffi::c_void,
14047            ulflags: u32,
14048        ) -> windows_core::HRESULT {
14049            unsafe {
14050                let this: &Identity =
14051                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14052                IMAPIProp_Impl::SaveChanges(this, core::mem::transmute_copy(&ulflags)).into()
14053            }
14054        }
14055        unsafe extern "system" fn GetProps<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14056            this: *mut core::ffi::c_void,
14057            lpproptagarray: *mut SPropTagArray,
14058            ulflags: u32,
14059            lpcvalues: *mut u32,
14060            lppproparray: *mut *mut SPropValue,
14061        ) -> windows_core::HRESULT {
14062            unsafe {
14063                let this: &Identity =
14064                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14065                IMAPIProp_Impl::GetProps(
14066                    this,
14067                    core::mem::transmute_copy(&lpproptagarray),
14068                    core::mem::transmute_copy(&ulflags),
14069                    core::mem::transmute_copy(&lpcvalues),
14070                    core::mem::transmute_copy(&lppproparray),
14071                )
14072                .into()
14073            }
14074        }
14075        unsafe extern "system" fn GetPropList<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14076            this: *mut core::ffi::c_void,
14077            ulflags: u32,
14078            lppproptagarray: *mut *mut SPropTagArray,
14079        ) -> windows_core::HRESULT {
14080            unsafe {
14081                let this: &Identity =
14082                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14083                IMAPIProp_Impl::GetPropList(
14084                    this,
14085                    core::mem::transmute_copy(&ulflags),
14086                    core::mem::transmute_copy(&lppproptagarray),
14087                )
14088                .into()
14089            }
14090        }
14091        unsafe extern "system" fn OpenProperty<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14092            this: *mut core::ffi::c_void,
14093            ulproptag: u32,
14094            lpiid: *mut windows_core::GUID,
14095            ulinterfaceoptions: u32,
14096            ulflags: u32,
14097            lppunk: *mut *mut core::ffi::c_void,
14098        ) -> windows_core::HRESULT {
14099            unsafe {
14100                let this: &Identity =
14101                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14102                IMAPIProp_Impl::OpenProperty(
14103                    this,
14104                    core::mem::transmute_copy(&ulproptag),
14105                    core::mem::transmute_copy(&lpiid),
14106                    core::mem::transmute_copy(&ulinterfaceoptions),
14107                    core::mem::transmute_copy(&ulflags),
14108                    core::mem::transmute_copy(&lppunk),
14109                )
14110                .into()
14111            }
14112        }
14113        unsafe extern "system" fn SetProps<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14114            this: *mut core::ffi::c_void,
14115            cvalues: u32,
14116            lpproparray: *mut SPropValue,
14117            lppproblems: *mut *mut SPropProblemArray,
14118        ) -> windows_core::HRESULT {
14119            unsafe {
14120                let this: &Identity =
14121                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14122                IMAPIProp_Impl::SetProps(
14123                    this,
14124                    core::mem::transmute_copy(&cvalues),
14125                    core::mem::transmute_copy(&lpproparray),
14126                    core::mem::transmute_copy(&lppproblems),
14127                )
14128                .into()
14129            }
14130        }
14131        unsafe extern "system" fn DeleteProps<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14132            this: *mut core::ffi::c_void,
14133            lpproptagarray: *mut SPropTagArray,
14134            lppproblems: *mut *mut SPropProblemArray,
14135        ) -> windows_core::HRESULT {
14136            unsafe {
14137                let this: &Identity =
14138                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14139                IMAPIProp_Impl::DeleteProps(
14140                    this,
14141                    core::mem::transmute_copy(&lpproptagarray),
14142                    core::mem::transmute_copy(&lppproblems),
14143                )
14144                .into()
14145            }
14146        }
14147        unsafe extern "system" fn CopyTo<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14148            this: *mut core::ffi::c_void,
14149            ciidexclude: u32,
14150            rgiidexclude: *mut windows_core::GUID,
14151            lpexcludeprops: *mut SPropTagArray,
14152            uluiparam: usize,
14153            lpprogress: *mut core::ffi::c_void,
14154            lpinterface: *mut windows_core::GUID,
14155            lpdestobj: *mut core::ffi::c_void,
14156            ulflags: u32,
14157            lppproblems: *mut *mut SPropProblemArray,
14158        ) -> windows_core::HRESULT {
14159            unsafe {
14160                let this: &Identity =
14161                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14162                IMAPIProp_Impl::CopyTo(
14163                    this,
14164                    core::mem::transmute_copy(&ciidexclude),
14165                    core::mem::transmute_copy(&rgiidexclude),
14166                    core::mem::transmute_copy(&lpexcludeprops),
14167                    core::mem::transmute_copy(&uluiparam),
14168                    core::mem::transmute_copy(&lpprogress),
14169                    core::mem::transmute_copy(&lpinterface),
14170                    core::mem::transmute_copy(&lpdestobj),
14171                    core::mem::transmute_copy(&ulflags),
14172                    core::mem::transmute_copy(&lppproblems),
14173                )
14174                .into()
14175            }
14176        }
14177        unsafe extern "system" fn CopyProps<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14178            this: *mut core::ffi::c_void,
14179            lpincludeprops: *mut SPropTagArray,
14180            uluiparam: usize,
14181            lpprogress: *mut core::ffi::c_void,
14182            lpinterface: *mut windows_core::GUID,
14183            lpdestobj: *mut core::ffi::c_void,
14184            ulflags: u32,
14185            lppproblems: *mut *mut SPropProblemArray,
14186        ) -> windows_core::HRESULT {
14187            unsafe {
14188                let this: &Identity =
14189                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14190                IMAPIProp_Impl::CopyProps(
14191                    this,
14192                    core::mem::transmute_copy(&lpincludeprops),
14193                    core::mem::transmute_copy(&uluiparam),
14194                    core::mem::transmute_copy(&lpprogress),
14195                    core::mem::transmute_copy(&lpinterface),
14196                    core::mem::transmute_copy(&lpdestobj),
14197                    core::mem::transmute_copy(&ulflags),
14198                    core::mem::transmute_copy(&lppproblems),
14199                )
14200                .into()
14201            }
14202        }
14203        unsafe extern "system" fn GetNamesFromIDs<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14204            this: *mut core::ffi::c_void,
14205            lppproptags: *mut *mut SPropTagArray,
14206            lppropsetguid: *mut windows_core::GUID,
14207            ulflags: u32,
14208            lpcpropnames: *mut u32,
14209            lppppropnames: *mut *mut *mut MAPINAMEID,
14210        ) -> windows_core::HRESULT {
14211            unsafe {
14212                let this: &Identity =
14213                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14214                IMAPIProp_Impl::GetNamesFromIDs(
14215                    this,
14216                    core::mem::transmute_copy(&lppproptags),
14217                    core::mem::transmute_copy(&lppropsetguid),
14218                    core::mem::transmute_copy(&ulflags),
14219                    core::mem::transmute_copy(&lpcpropnames),
14220                    core::mem::transmute_copy(&lppppropnames),
14221                )
14222                .into()
14223            }
14224        }
14225        unsafe extern "system" fn GetIDsFromNames<Identity: IMAPIProp_Impl, const OFFSET: isize>(
14226            this: *mut core::ffi::c_void,
14227            cpropnames: u32,
14228            lpppropnames: *mut *mut MAPINAMEID,
14229            ulflags: u32,
14230            lppproptags: *mut *mut SPropTagArray,
14231        ) -> windows_core::HRESULT {
14232            unsafe {
14233                let this: &Identity =
14234                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14235                IMAPIProp_Impl::GetIDsFromNames(
14236                    this,
14237                    core::mem::transmute_copy(&cpropnames),
14238                    core::mem::transmute_copy(&lpppropnames),
14239                    core::mem::transmute_copy(&ulflags),
14240                    core::mem::transmute_copy(&lppproptags),
14241                )
14242                .into()
14243            }
14244        }
14245        Self {
14246            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
14247            GetLastError: GetLastError::<Identity, OFFSET>,
14248            SaveChanges: SaveChanges::<Identity, OFFSET>,
14249            GetProps: GetProps::<Identity, OFFSET>,
14250            GetPropList: GetPropList::<Identity, OFFSET>,
14251            OpenProperty: OpenProperty::<Identity, OFFSET>,
14252            SetProps: SetProps::<Identity, OFFSET>,
14253            DeleteProps: DeleteProps::<Identity, OFFSET>,
14254            CopyTo: CopyTo::<Identity, OFFSET>,
14255            CopyProps: CopyProps::<Identity, OFFSET>,
14256            GetNamesFromIDs: GetNamesFromIDs::<Identity, OFFSET>,
14257            GetIDsFromNames: GetIDsFromNames::<Identity, OFFSET>,
14258        }
14259    }
14260    pub fn matches(iid: &windows_core::GUID) -> bool {
14261        iid == &<IMAPIProp as windows_core::Interface>::IID
14262    }
14263}
14264impl windows_core::RuntimeName for IMAPIProp {}
14265pub const IMAPIProp_CopyProps: METHODS = METHODS(11i32);
14266pub const IMAPIProp_CopyTo: METHODS = METHODS(10i32);
14267pub const IMAPIProp_DeleteProps: METHODS = METHODS(9i32);
14268pub const IMAPIProp_GetIDsFromNames: METHODS = METHODS(13i32);
14269pub const IMAPIProp_GetLastError: METHODS = METHODS(3i32);
14270pub const IMAPIProp_GetNamesFromIDs: METHODS = METHODS(12i32);
14271pub const IMAPIProp_GetPropList: METHODS = METHODS(6i32);
14272pub const IMAPIProp_GetProps: METHODS = METHODS(5i32);
14273pub const IMAPIProp_OpenProperty: METHODS = METHODS(7i32);
14274pub const IMAPIProp_SaveChanges: METHODS = METHODS(4i32);
14275pub const IMAPIProp_SetProps: METHODS = METHODS(8i32);
14276windows_core::imp::define_interface!(
14277    IMAPIProviderShutdown,
14278    IMAPIProviderShutdown_Vtbl,
14279    0x00020398_0000_0000_c000_000000000046
14280);
14281windows_core::imp::interface_hierarchy!(IMAPIProviderShutdown, windows_core::IUnknown);
14282impl IMAPIProviderShutdown {
14283    pub unsafe fn QueryFastShutdown(&self) -> windows_core::Result<()> {
14284        unsafe {
14285            (windows_core::Interface::vtable(self).QueryFastShutdown)(
14286                windows_core::Interface::as_raw(self),
14287            )
14288            .ok()
14289        }
14290    }
14291    pub unsafe fn NotifyProcessShutdown(&self) -> windows_core::Result<()> {
14292        unsafe {
14293            (windows_core::Interface::vtable(self).NotifyProcessShutdown)(
14294                windows_core::Interface::as_raw(self),
14295            )
14296            .ok()
14297        }
14298    }
14299    pub unsafe fn DoFastShutdown(&self) -> windows_core::Result<()> {
14300        unsafe {
14301            (windows_core::Interface::vtable(self).DoFastShutdown)(windows_core::Interface::as_raw(
14302                self,
14303            ))
14304            .ok()
14305        }
14306    }
14307}
14308#[repr(C)]
14309#[doc(hidden)]
14310pub struct IMAPIProviderShutdown_Vtbl {
14311    pub base__: windows_core::IUnknown_Vtbl,
14312    pub QueryFastShutdown:
14313        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
14314    pub NotifyProcessShutdown:
14315        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
14316    pub DoFastShutdown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
14317}
14318pub trait IMAPIProviderShutdown_Impl: windows_core::IUnknownImpl {
14319    fn QueryFastShutdown(&self) -> windows_core::Result<()>;
14320    fn NotifyProcessShutdown(&self) -> windows_core::Result<()>;
14321    fn DoFastShutdown(&self) -> windows_core::Result<()>;
14322}
14323impl IMAPIProviderShutdown_Vtbl {
14324    pub const fn new<Identity: IMAPIProviderShutdown_Impl, const OFFSET: isize>() -> Self {
14325        unsafe extern "system" fn QueryFastShutdown<
14326            Identity: IMAPIProviderShutdown_Impl,
14327            const OFFSET: isize,
14328        >(
14329            this: *mut core::ffi::c_void,
14330        ) -> windows_core::HRESULT {
14331            unsafe {
14332                let this: &Identity =
14333                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14334                IMAPIProviderShutdown_Impl::QueryFastShutdown(this).into()
14335            }
14336        }
14337        unsafe extern "system" fn NotifyProcessShutdown<
14338            Identity: IMAPIProviderShutdown_Impl,
14339            const OFFSET: isize,
14340        >(
14341            this: *mut core::ffi::c_void,
14342        ) -> windows_core::HRESULT {
14343            unsafe {
14344                let this: &Identity =
14345                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14346                IMAPIProviderShutdown_Impl::NotifyProcessShutdown(this).into()
14347            }
14348        }
14349        unsafe extern "system" fn DoFastShutdown<
14350            Identity: IMAPIProviderShutdown_Impl,
14351            const OFFSET: isize,
14352        >(
14353            this: *mut core::ffi::c_void,
14354        ) -> windows_core::HRESULT {
14355            unsafe {
14356                let this: &Identity =
14357                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14358                IMAPIProviderShutdown_Impl::DoFastShutdown(this).into()
14359            }
14360        }
14361        Self {
14362            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
14363            QueryFastShutdown: QueryFastShutdown::<Identity, OFFSET>,
14364            NotifyProcessShutdown: NotifyProcessShutdown::<Identity, OFFSET>,
14365            DoFastShutdown: DoFastShutdown::<Identity, OFFSET>,
14366        }
14367    }
14368    pub fn matches(iid: &windows_core::GUID) -> bool {
14369        iid == &<IMAPIProviderShutdown as windows_core::Interface>::IID
14370    }
14371}
14372impl windows_core::RuntimeName for IMAPIProviderShutdown {}
14373windows_core::imp::define_interface!(
14374    IMAPISession,
14375    IMAPISession_Vtbl,
14376    0x00020300_0000_0000_c000_000000000046
14377);
14378windows_core::imp::interface_hierarchy!(IMAPISession, windows_core::IUnknown);
14379impl IMAPISession {
14380    pub unsafe fn GetLastError(
14381        &self,
14382        hresult: windows_core::HRESULT,
14383        ulflags: u32,
14384        lppmapierror: *mut *mut MAPIERROR,
14385    ) -> windows_core::Result<()> {
14386        unsafe {
14387            (windows_core::Interface::vtable(self).GetLastError)(
14388                windows_core::Interface::as_raw(self),
14389                hresult,
14390                ulflags,
14391                lppmapierror as _,
14392            )
14393            .ok()
14394        }
14395    }
14396    pub unsafe fn GetMsgStoresTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
14397        unsafe {
14398            let mut result__ = core::mem::zeroed();
14399            (windows_core::Interface::vtable(self).GetMsgStoresTable)(
14400                windows_core::Interface::as_raw(self),
14401                ulflags,
14402                &mut result__,
14403            )
14404            .and_then(|| windows_core::Type::from_abi(result__))
14405        }
14406    }
14407    pub unsafe fn OpenMsgStore(
14408        &self,
14409        uluiparam: usize,
14410        cbentryid: u32,
14411        lpentryid: *mut ENTRYID,
14412        lpinterface: *mut windows_core::GUID,
14413        ulflags: u32,
14414        lppmdb: *mut Option<IMsgStore>,
14415    ) -> windows_core::Result<()> {
14416        unsafe {
14417            (windows_core::Interface::vtable(self).OpenMsgStore)(
14418                windows_core::Interface::as_raw(self),
14419                uluiparam,
14420                cbentryid,
14421                lpentryid as _,
14422                lpinterface as _,
14423                ulflags,
14424                core::mem::transmute(lppmdb),
14425            )
14426            .ok()
14427        }
14428    }
14429    pub unsafe fn OpenAddressBook(
14430        &self,
14431        uluiparam: usize,
14432        lpinterface: *mut windows_core::GUID,
14433        ulflags: u32,
14434        lppadrbook: *mut Option<IAddrBook>,
14435    ) -> windows_core::Result<()> {
14436        unsafe {
14437            (windows_core::Interface::vtable(self).OpenAddressBook)(
14438                windows_core::Interface::as_raw(self),
14439                uluiparam,
14440                lpinterface as _,
14441                ulflags,
14442                core::mem::transmute(lppadrbook),
14443            )
14444            .ok()
14445        }
14446    }
14447    pub unsafe fn OpenProfileSection(
14448        &self,
14449        lpuid: *mut MAPIUID,
14450        lpinterface: *mut windows_core::GUID,
14451        ulflags: u32,
14452        lppprofsect: *mut Option<IProfSect>,
14453    ) -> windows_core::Result<()> {
14454        unsafe {
14455            (windows_core::Interface::vtable(self).OpenProfileSection)(
14456                windows_core::Interface::as_raw(self),
14457                lpuid as _,
14458                lpinterface as _,
14459                ulflags,
14460                core::mem::transmute(lppprofsect),
14461            )
14462            .ok()
14463        }
14464    }
14465    pub unsafe fn GetStatusTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
14466        unsafe {
14467            let mut result__ = core::mem::zeroed();
14468            (windows_core::Interface::vtable(self).GetStatusTable)(
14469                windows_core::Interface::as_raw(self),
14470                ulflags,
14471                &mut result__,
14472            )
14473            .and_then(|| windows_core::Type::from_abi(result__))
14474        }
14475    }
14476    pub unsafe fn OpenEntry(
14477        &self,
14478        cbentryid: u32,
14479        lpentryid: *mut ENTRYID,
14480        lpinterface: *mut windows_core::GUID,
14481        ulflags: u32,
14482        lpulobjtype: *mut u32,
14483        lppunk: *mut Option<windows_core::IUnknown>,
14484    ) -> windows_core::Result<()> {
14485        unsafe {
14486            (windows_core::Interface::vtable(self).OpenEntry)(
14487                windows_core::Interface::as_raw(self),
14488                cbentryid,
14489                lpentryid as _,
14490                lpinterface as _,
14491                ulflags,
14492                lpulobjtype as _,
14493                core::mem::transmute(lppunk),
14494            )
14495            .ok()
14496        }
14497    }
14498    pub unsafe fn CompareEntryIDs(
14499        &self,
14500        cbentryid1: u32,
14501        lpentryid1: *mut ENTRYID,
14502        cbentryid2: u32,
14503        lpentryid2: *mut ENTRYID,
14504        ulflags: u32,
14505        lpulresult: *mut u32,
14506    ) -> windows_core::Result<()> {
14507        unsafe {
14508            (windows_core::Interface::vtable(self).CompareEntryIDs)(
14509                windows_core::Interface::as_raw(self),
14510                cbentryid1,
14511                lpentryid1 as _,
14512                cbentryid2,
14513                lpentryid2 as _,
14514                ulflags,
14515                lpulresult as _,
14516            )
14517            .ok()
14518        }
14519    }
14520    pub unsafe fn Advise<P3>(
14521        &self,
14522        cbentryid: u32,
14523        lpentryid: *mut ENTRYID,
14524        uleventmask: u32,
14525        lpadvisesink: P3,
14526        lpulconnection: *mut usize,
14527    ) -> windows_core::Result<()>
14528    where
14529        P3: windows_core::Param<IMAPIAdviseSink>,
14530    {
14531        unsafe {
14532            (windows_core::Interface::vtable(self).Advise)(
14533                windows_core::Interface::as_raw(self),
14534                cbentryid,
14535                lpentryid as _,
14536                uleventmask,
14537                lpadvisesink.param().abi(),
14538                lpulconnection as _,
14539            )
14540            .ok()
14541        }
14542    }
14543    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
14544        unsafe {
14545            (windows_core::Interface::vtable(self).Unadvise)(
14546                windows_core::Interface::as_raw(self),
14547                ulconnection,
14548            )
14549            .ok()
14550        }
14551    }
14552    pub unsafe fn MessageOptions<P3>(
14553        &self,
14554        uluiparam: usize,
14555        ulflags: u32,
14556        lpszadrtype: *mut i8,
14557        lpmessage: P3,
14558    ) -> windows_core::Result<()>
14559    where
14560        P3: windows_core::Param<IMessage>,
14561    {
14562        unsafe {
14563            (windows_core::Interface::vtable(self).MessageOptions)(
14564                windows_core::Interface::as_raw(self),
14565                uluiparam,
14566                ulflags,
14567                lpszadrtype as _,
14568                lpmessage.param().abi(),
14569            )
14570            .ok()
14571        }
14572    }
14573    pub unsafe fn QueryDefaultMessageOpt(
14574        &self,
14575        lpszadrtype: *mut i8,
14576        ulflags: u32,
14577        lpcvalues: *mut u32,
14578        lppoptions: *mut *mut SPropValue,
14579    ) -> windows_core::Result<()> {
14580        unsafe {
14581            (windows_core::Interface::vtable(self).QueryDefaultMessageOpt)(
14582                windows_core::Interface::as_raw(self),
14583                lpszadrtype as _,
14584                ulflags,
14585                lpcvalues as _,
14586                lppoptions as _,
14587            )
14588            .ok()
14589        }
14590    }
14591    pub unsafe fn EnumAdrTypes(
14592        &self,
14593        ulflags: u32,
14594        lpcadrtypes: *mut u32,
14595        lpppszadrtypes: *mut *mut *mut i8,
14596    ) -> windows_core::Result<()> {
14597        unsafe {
14598            (windows_core::Interface::vtable(self).EnumAdrTypes)(
14599                windows_core::Interface::as_raw(self),
14600                ulflags,
14601                lpcadrtypes as _,
14602                lpppszadrtypes as _,
14603            )
14604            .ok()
14605        }
14606    }
14607    pub unsafe fn QueryIdentity(
14608        &self,
14609        lpcbentryid: *mut u32,
14610        lppentryid: *mut *mut ENTRYID,
14611    ) -> windows_core::Result<()> {
14612        unsafe {
14613            (windows_core::Interface::vtable(self).QueryIdentity)(
14614                windows_core::Interface::as_raw(self),
14615                lpcbentryid as _,
14616                lppentryid as _,
14617            )
14618            .ok()
14619        }
14620    }
14621    pub unsafe fn Logoff(
14622        &self,
14623        uluiparam: usize,
14624        ulflags: u32,
14625        ulreserved: u32,
14626    ) -> windows_core::Result<()> {
14627        unsafe {
14628            (windows_core::Interface::vtable(self).Logoff)(
14629                windows_core::Interface::as_raw(self),
14630                uluiparam,
14631                ulflags,
14632                ulreserved,
14633            )
14634            .ok()
14635        }
14636    }
14637    pub unsafe fn SetDefaultStore(
14638        &self,
14639        ulflags: u32,
14640        cbentryid: u32,
14641        lpentryid: *mut ENTRYID,
14642    ) -> windows_core::Result<()> {
14643        unsafe {
14644            (windows_core::Interface::vtable(self).SetDefaultStore)(
14645                windows_core::Interface::as_raw(self),
14646                ulflags,
14647                cbentryid,
14648                lpentryid as _,
14649            )
14650            .ok()
14651        }
14652    }
14653    pub unsafe fn AdminServices(&self, ulflags: u32) -> windows_core::Result<IMsgServiceAdmin> {
14654        unsafe {
14655            let mut result__ = core::mem::zeroed();
14656            (windows_core::Interface::vtable(self).AdminServices)(
14657                windows_core::Interface::as_raw(self),
14658                ulflags,
14659                &mut result__,
14660            )
14661            .and_then(|| windows_core::Type::from_abi(result__))
14662        }
14663    }
14664    pub unsafe fn ShowForm<P1, P2, P5, P10>(
14665        &self,
14666        uluiparam: usize,
14667        lpmsgstore: P1,
14668        lpparentfolder: P2,
14669        lpinterface: *mut windows_core::GUID,
14670        ulmessagetoken: usize,
14671        lpmessagesent: P5,
14672        ulflags: u32,
14673        ulmessagestatus: u32,
14674        ulmessageflags: u32,
14675        ulaccess: u32,
14676        lpszmessageclass: P10,
14677    ) -> windows_core::Result<()>
14678    where
14679        P1: windows_core::Param<IMsgStore>,
14680        P2: windows_core::Param<IMAPIFolder>,
14681        P5: windows_core::Param<IMessage>,
14682        P10: windows_core::Param<windows_core::PCSTR>,
14683    {
14684        unsafe {
14685            (windows_core::Interface::vtable(self).ShowForm)(
14686                windows_core::Interface::as_raw(self),
14687                uluiparam,
14688                lpmsgstore.param().abi(),
14689                lpparentfolder.param().abi(),
14690                lpinterface as _,
14691                ulmessagetoken,
14692                lpmessagesent.param().abi(),
14693                ulflags,
14694                ulmessagestatus,
14695                ulmessageflags,
14696                ulaccess,
14697                lpszmessageclass.param().abi(),
14698            )
14699            .ok()
14700        }
14701    }
14702    pub unsafe fn PrepareForm<P1>(
14703        &self,
14704        lpinterface: *mut windows_core::GUID,
14705        lpmessage: P1,
14706        lpulmessagetoken: *mut usize,
14707    ) -> windows_core::Result<()>
14708    where
14709        P1: windows_core::Param<IMessage>,
14710    {
14711        unsafe {
14712            (windows_core::Interface::vtable(self).PrepareForm)(
14713                windows_core::Interface::as_raw(self),
14714                lpinterface as _,
14715                lpmessage.param().abi(),
14716                lpulmessagetoken as _,
14717            )
14718            .ok()
14719        }
14720    }
14721}
14722#[repr(C)]
14723#[doc(hidden)]
14724pub struct IMAPISession_Vtbl {
14725    pub base__: windows_core::IUnknown_Vtbl,
14726    pub GetLastError: unsafe extern "system" fn(
14727        *mut core::ffi::c_void,
14728        windows_core::HRESULT,
14729        u32,
14730        *mut *mut MAPIERROR,
14731    ) -> windows_core::HRESULT,
14732    pub GetMsgStoresTable: unsafe extern "system" fn(
14733        *mut core::ffi::c_void,
14734        u32,
14735        *mut *mut core::ffi::c_void,
14736    ) -> windows_core::HRESULT,
14737    pub OpenMsgStore: unsafe extern "system" fn(
14738        *mut core::ffi::c_void,
14739        usize,
14740        u32,
14741        *mut ENTRYID,
14742        *mut windows_core::GUID,
14743        u32,
14744        *mut *mut core::ffi::c_void,
14745    ) -> windows_core::HRESULT,
14746    pub OpenAddressBook: unsafe extern "system" fn(
14747        *mut core::ffi::c_void,
14748        usize,
14749        *mut windows_core::GUID,
14750        u32,
14751        *mut *mut core::ffi::c_void,
14752    ) -> windows_core::HRESULT,
14753    pub OpenProfileSection: unsafe extern "system" fn(
14754        *mut core::ffi::c_void,
14755        *mut MAPIUID,
14756        *mut windows_core::GUID,
14757        u32,
14758        *mut *mut core::ffi::c_void,
14759    ) -> windows_core::HRESULT,
14760    pub GetStatusTable: unsafe extern "system" fn(
14761        *mut core::ffi::c_void,
14762        u32,
14763        *mut *mut core::ffi::c_void,
14764    ) -> windows_core::HRESULT,
14765    pub OpenEntry: unsafe extern "system" fn(
14766        *mut core::ffi::c_void,
14767        u32,
14768        *mut ENTRYID,
14769        *mut windows_core::GUID,
14770        u32,
14771        *mut u32,
14772        *mut *mut core::ffi::c_void,
14773    ) -> windows_core::HRESULT,
14774    pub CompareEntryIDs: unsafe extern "system" fn(
14775        *mut core::ffi::c_void,
14776        u32,
14777        *mut ENTRYID,
14778        u32,
14779        *mut ENTRYID,
14780        u32,
14781        *mut u32,
14782    ) -> windows_core::HRESULT,
14783    pub Advise: unsafe extern "system" fn(
14784        *mut core::ffi::c_void,
14785        u32,
14786        *mut ENTRYID,
14787        u32,
14788        *mut core::ffi::c_void,
14789        *mut usize,
14790    ) -> windows_core::HRESULT,
14791    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
14792    pub MessageOptions: unsafe extern "system" fn(
14793        *mut core::ffi::c_void,
14794        usize,
14795        u32,
14796        *mut i8,
14797        *mut core::ffi::c_void,
14798    ) -> windows_core::HRESULT,
14799    pub QueryDefaultMessageOpt: unsafe extern "system" fn(
14800        *mut core::ffi::c_void,
14801        *mut i8,
14802        u32,
14803        *mut u32,
14804        *mut *mut SPropValue,
14805    ) -> windows_core::HRESULT,
14806    pub EnumAdrTypes: unsafe extern "system" fn(
14807        *mut core::ffi::c_void,
14808        u32,
14809        *mut u32,
14810        *mut *mut *mut i8,
14811    ) -> windows_core::HRESULT,
14812    pub QueryIdentity: unsafe extern "system" fn(
14813        *mut core::ffi::c_void,
14814        *mut u32,
14815        *mut *mut ENTRYID,
14816    ) -> windows_core::HRESULT,
14817    pub Logoff:
14818        unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32, u32) -> windows_core::HRESULT,
14819    pub SetDefaultStore: unsafe extern "system" fn(
14820        *mut core::ffi::c_void,
14821        u32,
14822        u32,
14823        *mut ENTRYID,
14824    ) -> windows_core::HRESULT,
14825    pub AdminServices: unsafe extern "system" fn(
14826        *mut core::ffi::c_void,
14827        u32,
14828        *mut *mut core::ffi::c_void,
14829    ) -> windows_core::HRESULT,
14830    pub ShowForm: unsafe extern "system" fn(
14831        *mut core::ffi::c_void,
14832        usize,
14833        *mut core::ffi::c_void,
14834        *mut core::ffi::c_void,
14835        *mut windows_core::GUID,
14836        usize,
14837        *mut core::ffi::c_void,
14838        u32,
14839        u32,
14840        u32,
14841        u32,
14842        windows_core::PCSTR,
14843    ) -> windows_core::HRESULT,
14844    pub PrepareForm: unsafe extern "system" fn(
14845        *mut core::ffi::c_void,
14846        *mut windows_core::GUID,
14847        *mut core::ffi::c_void,
14848        *mut usize,
14849    ) -> windows_core::HRESULT,
14850}
14851pub trait IMAPISession_Impl: windows_core::IUnknownImpl {
14852    fn GetLastError(
14853        &self,
14854        hresult: windows_core::HRESULT,
14855        ulflags: u32,
14856        lppmapierror: *mut *mut MAPIERROR,
14857    ) -> windows_core::Result<()>;
14858    fn GetMsgStoresTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
14859    fn OpenMsgStore(
14860        &self,
14861        uluiparam: usize,
14862        cbentryid: u32,
14863        lpentryid: *mut ENTRYID,
14864        lpinterface: *mut windows_core::GUID,
14865        ulflags: u32,
14866        lppmdb: windows_core::OutRef<IMsgStore>,
14867    ) -> windows_core::Result<()>;
14868    fn OpenAddressBook(
14869        &self,
14870        uluiparam: usize,
14871        lpinterface: *mut windows_core::GUID,
14872        ulflags: u32,
14873        lppadrbook: windows_core::OutRef<IAddrBook>,
14874    ) -> windows_core::Result<()>;
14875    fn OpenProfileSection(
14876        &self,
14877        lpuid: *mut MAPIUID,
14878        lpinterface: *mut windows_core::GUID,
14879        ulflags: u32,
14880        lppprofsect: windows_core::OutRef<IProfSect>,
14881    ) -> windows_core::Result<()>;
14882    fn GetStatusTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
14883    fn OpenEntry(
14884        &self,
14885        cbentryid: u32,
14886        lpentryid: *mut ENTRYID,
14887        lpinterface: *mut windows_core::GUID,
14888        ulflags: u32,
14889        lpulobjtype: *mut u32,
14890        lppunk: windows_core::OutRef<windows_core::IUnknown>,
14891    ) -> windows_core::Result<()>;
14892    fn CompareEntryIDs(
14893        &self,
14894        cbentryid1: u32,
14895        lpentryid1: *mut ENTRYID,
14896        cbentryid2: u32,
14897        lpentryid2: *mut ENTRYID,
14898        ulflags: u32,
14899        lpulresult: *mut u32,
14900    ) -> windows_core::Result<()>;
14901    fn Advise(
14902        &self,
14903        cbentryid: u32,
14904        lpentryid: *mut ENTRYID,
14905        uleventmask: u32,
14906        lpadvisesink: windows_core::Ref<IMAPIAdviseSink>,
14907        lpulconnection: *mut usize,
14908    ) -> windows_core::Result<()>;
14909    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
14910    fn MessageOptions(
14911        &self,
14912        uluiparam: usize,
14913        ulflags: u32,
14914        lpszadrtype: *mut i8,
14915        lpmessage: windows_core::Ref<IMessage>,
14916    ) -> windows_core::Result<()>;
14917    fn QueryDefaultMessageOpt(
14918        &self,
14919        lpszadrtype: *mut i8,
14920        ulflags: u32,
14921        lpcvalues: *mut u32,
14922        lppoptions: *mut *mut SPropValue,
14923    ) -> windows_core::Result<()>;
14924    fn EnumAdrTypes(
14925        &self,
14926        ulflags: u32,
14927        lpcadrtypes: *mut u32,
14928        lpppszadrtypes: *mut *mut *mut i8,
14929    ) -> windows_core::Result<()>;
14930    fn QueryIdentity(
14931        &self,
14932        lpcbentryid: *mut u32,
14933        lppentryid: *mut *mut ENTRYID,
14934    ) -> windows_core::Result<()>;
14935    fn Logoff(&self, uluiparam: usize, ulflags: u32, ulreserved: u32) -> windows_core::Result<()>;
14936    fn SetDefaultStore(
14937        &self,
14938        ulflags: u32,
14939        cbentryid: u32,
14940        lpentryid: *mut ENTRYID,
14941    ) -> windows_core::Result<()>;
14942    fn AdminServices(&self, ulflags: u32) -> windows_core::Result<IMsgServiceAdmin>;
14943    fn ShowForm(
14944        &self,
14945        uluiparam: usize,
14946        lpmsgstore: windows_core::Ref<IMsgStore>,
14947        lpparentfolder: windows_core::Ref<IMAPIFolder>,
14948        lpinterface: *mut windows_core::GUID,
14949        ulmessagetoken: usize,
14950        lpmessagesent: windows_core::Ref<IMessage>,
14951        ulflags: u32,
14952        ulmessagestatus: u32,
14953        ulmessageflags: u32,
14954        ulaccess: u32,
14955        lpszmessageclass: &windows_core::PCSTR,
14956    ) -> windows_core::Result<()>;
14957    fn PrepareForm(
14958        &self,
14959        lpinterface: *mut windows_core::GUID,
14960        lpmessage: windows_core::Ref<IMessage>,
14961        lpulmessagetoken: *mut usize,
14962    ) -> windows_core::Result<()>;
14963}
14964impl IMAPISession_Vtbl {
14965    pub const fn new<Identity: IMAPISession_Impl, const OFFSET: isize>() -> Self {
14966        unsafe extern "system" fn GetLastError<Identity: IMAPISession_Impl, const OFFSET: isize>(
14967            this: *mut core::ffi::c_void,
14968            hresult: windows_core::HRESULT,
14969            ulflags: u32,
14970            lppmapierror: *mut *mut MAPIERROR,
14971        ) -> windows_core::HRESULT {
14972            unsafe {
14973                let this: &Identity =
14974                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14975                IMAPISession_Impl::GetLastError(
14976                    this,
14977                    core::mem::transmute_copy(&hresult),
14978                    core::mem::transmute_copy(&ulflags),
14979                    core::mem::transmute_copy(&lppmapierror),
14980                )
14981                .into()
14982            }
14983        }
14984        unsafe extern "system" fn GetMsgStoresTable<
14985            Identity: IMAPISession_Impl,
14986            const OFFSET: isize,
14987        >(
14988            this: *mut core::ffi::c_void,
14989            ulflags: u32,
14990            lpptable: *mut *mut core::ffi::c_void,
14991        ) -> windows_core::HRESULT {
14992            unsafe {
14993                let this: &Identity =
14994                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
14995                match IMAPISession_Impl::GetMsgStoresTable(
14996                    this,
14997                    core::mem::transmute_copy(&ulflags),
14998                ) {
14999                    Ok(ok__) => {
15000                        lpptable.write(core::mem::transmute(ok__));
15001                        windows_core::HRESULT(0)
15002                    }
15003                    Err(err) => err.into(),
15004                }
15005            }
15006        }
15007        unsafe extern "system" fn OpenMsgStore<Identity: IMAPISession_Impl, const OFFSET: isize>(
15008            this: *mut core::ffi::c_void,
15009            uluiparam: usize,
15010            cbentryid: u32,
15011            lpentryid: *mut ENTRYID,
15012            lpinterface: *mut windows_core::GUID,
15013            ulflags: u32,
15014            lppmdb: *mut *mut core::ffi::c_void,
15015        ) -> windows_core::HRESULT {
15016            unsafe {
15017                let this: &Identity =
15018                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15019                IMAPISession_Impl::OpenMsgStore(
15020                    this,
15021                    core::mem::transmute_copy(&uluiparam),
15022                    core::mem::transmute_copy(&cbentryid),
15023                    core::mem::transmute_copy(&lpentryid),
15024                    core::mem::transmute_copy(&lpinterface),
15025                    core::mem::transmute_copy(&ulflags),
15026                    core::mem::transmute_copy(&lppmdb),
15027                )
15028                .into()
15029            }
15030        }
15031        unsafe extern "system" fn OpenAddressBook<
15032            Identity: IMAPISession_Impl,
15033            const OFFSET: isize,
15034        >(
15035            this: *mut core::ffi::c_void,
15036            uluiparam: usize,
15037            lpinterface: *mut windows_core::GUID,
15038            ulflags: u32,
15039            lppadrbook: *mut *mut core::ffi::c_void,
15040        ) -> windows_core::HRESULT {
15041            unsafe {
15042                let this: &Identity =
15043                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15044                IMAPISession_Impl::OpenAddressBook(
15045                    this,
15046                    core::mem::transmute_copy(&uluiparam),
15047                    core::mem::transmute_copy(&lpinterface),
15048                    core::mem::transmute_copy(&ulflags),
15049                    core::mem::transmute_copy(&lppadrbook),
15050                )
15051                .into()
15052            }
15053        }
15054        unsafe extern "system" fn OpenProfileSection<
15055            Identity: IMAPISession_Impl,
15056            const OFFSET: isize,
15057        >(
15058            this: *mut core::ffi::c_void,
15059            lpuid: *mut MAPIUID,
15060            lpinterface: *mut windows_core::GUID,
15061            ulflags: u32,
15062            lppprofsect: *mut *mut core::ffi::c_void,
15063        ) -> windows_core::HRESULT {
15064            unsafe {
15065                let this: &Identity =
15066                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15067                IMAPISession_Impl::OpenProfileSection(
15068                    this,
15069                    core::mem::transmute_copy(&lpuid),
15070                    core::mem::transmute_copy(&lpinterface),
15071                    core::mem::transmute_copy(&ulflags),
15072                    core::mem::transmute_copy(&lppprofsect),
15073                )
15074                .into()
15075            }
15076        }
15077        unsafe extern "system" fn GetStatusTable<
15078            Identity: IMAPISession_Impl,
15079            const OFFSET: isize,
15080        >(
15081            this: *mut core::ffi::c_void,
15082            ulflags: u32,
15083            lpptable: *mut *mut core::ffi::c_void,
15084        ) -> windows_core::HRESULT {
15085            unsafe {
15086                let this: &Identity =
15087                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15088                match IMAPISession_Impl::GetStatusTable(this, core::mem::transmute_copy(&ulflags)) {
15089                    Ok(ok__) => {
15090                        lpptable.write(core::mem::transmute(ok__));
15091                        windows_core::HRESULT(0)
15092                    }
15093                    Err(err) => err.into(),
15094                }
15095            }
15096        }
15097        unsafe extern "system" fn OpenEntry<Identity: IMAPISession_Impl, const OFFSET: isize>(
15098            this: *mut core::ffi::c_void,
15099            cbentryid: u32,
15100            lpentryid: *mut ENTRYID,
15101            lpinterface: *mut windows_core::GUID,
15102            ulflags: u32,
15103            lpulobjtype: *mut u32,
15104            lppunk: *mut *mut core::ffi::c_void,
15105        ) -> windows_core::HRESULT {
15106            unsafe {
15107                let this: &Identity =
15108                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15109                IMAPISession_Impl::OpenEntry(
15110                    this,
15111                    core::mem::transmute_copy(&cbentryid),
15112                    core::mem::transmute_copy(&lpentryid),
15113                    core::mem::transmute_copy(&lpinterface),
15114                    core::mem::transmute_copy(&ulflags),
15115                    core::mem::transmute_copy(&lpulobjtype),
15116                    core::mem::transmute_copy(&lppunk),
15117                )
15118                .into()
15119            }
15120        }
15121        unsafe extern "system" fn CompareEntryIDs<
15122            Identity: IMAPISession_Impl,
15123            const OFFSET: isize,
15124        >(
15125            this: *mut core::ffi::c_void,
15126            cbentryid1: u32,
15127            lpentryid1: *mut ENTRYID,
15128            cbentryid2: u32,
15129            lpentryid2: *mut ENTRYID,
15130            ulflags: u32,
15131            lpulresult: *mut u32,
15132        ) -> windows_core::HRESULT {
15133            unsafe {
15134                let this: &Identity =
15135                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15136                IMAPISession_Impl::CompareEntryIDs(
15137                    this,
15138                    core::mem::transmute_copy(&cbentryid1),
15139                    core::mem::transmute_copy(&lpentryid1),
15140                    core::mem::transmute_copy(&cbentryid2),
15141                    core::mem::transmute_copy(&lpentryid2),
15142                    core::mem::transmute_copy(&ulflags),
15143                    core::mem::transmute_copy(&lpulresult),
15144                )
15145                .into()
15146            }
15147        }
15148        unsafe extern "system" fn Advise<Identity: IMAPISession_Impl, const OFFSET: isize>(
15149            this: *mut core::ffi::c_void,
15150            cbentryid: u32,
15151            lpentryid: *mut ENTRYID,
15152            uleventmask: u32,
15153            lpadvisesink: *mut core::ffi::c_void,
15154            lpulconnection: *mut usize,
15155        ) -> windows_core::HRESULT {
15156            unsafe {
15157                let this: &Identity =
15158                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15159                IMAPISession_Impl::Advise(
15160                    this,
15161                    core::mem::transmute_copy(&cbentryid),
15162                    core::mem::transmute_copy(&lpentryid),
15163                    core::mem::transmute_copy(&uleventmask),
15164                    core::mem::transmute_copy(&lpadvisesink),
15165                    core::mem::transmute_copy(&lpulconnection),
15166                )
15167                .into()
15168            }
15169        }
15170        unsafe extern "system" fn Unadvise<Identity: IMAPISession_Impl, const OFFSET: isize>(
15171            this: *mut core::ffi::c_void,
15172            ulconnection: usize,
15173        ) -> windows_core::HRESULT {
15174            unsafe {
15175                let this: &Identity =
15176                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15177                IMAPISession_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
15178            }
15179        }
15180        unsafe extern "system" fn MessageOptions<
15181            Identity: IMAPISession_Impl,
15182            const OFFSET: isize,
15183        >(
15184            this: *mut core::ffi::c_void,
15185            uluiparam: usize,
15186            ulflags: u32,
15187            lpszadrtype: *mut i8,
15188            lpmessage: *mut core::ffi::c_void,
15189        ) -> windows_core::HRESULT {
15190            unsafe {
15191                let this: &Identity =
15192                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15193                IMAPISession_Impl::MessageOptions(
15194                    this,
15195                    core::mem::transmute_copy(&uluiparam),
15196                    core::mem::transmute_copy(&ulflags),
15197                    core::mem::transmute_copy(&lpszadrtype),
15198                    core::mem::transmute_copy(&lpmessage),
15199                )
15200                .into()
15201            }
15202        }
15203        unsafe extern "system" fn QueryDefaultMessageOpt<
15204            Identity: IMAPISession_Impl,
15205            const OFFSET: isize,
15206        >(
15207            this: *mut core::ffi::c_void,
15208            lpszadrtype: *mut i8,
15209            ulflags: u32,
15210            lpcvalues: *mut u32,
15211            lppoptions: *mut *mut SPropValue,
15212        ) -> windows_core::HRESULT {
15213            unsafe {
15214                let this: &Identity =
15215                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15216                IMAPISession_Impl::QueryDefaultMessageOpt(
15217                    this,
15218                    core::mem::transmute_copy(&lpszadrtype),
15219                    core::mem::transmute_copy(&ulflags),
15220                    core::mem::transmute_copy(&lpcvalues),
15221                    core::mem::transmute_copy(&lppoptions),
15222                )
15223                .into()
15224            }
15225        }
15226        unsafe extern "system" fn EnumAdrTypes<Identity: IMAPISession_Impl, const OFFSET: isize>(
15227            this: *mut core::ffi::c_void,
15228            ulflags: u32,
15229            lpcadrtypes: *mut u32,
15230            lpppszadrtypes: *mut *mut *mut i8,
15231        ) -> windows_core::HRESULT {
15232            unsafe {
15233                let this: &Identity =
15234                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15235                IMAPISession_Impl::EnumAdrTypes(
15236                    this,
15237                    core::mem::transmute_copy(&ulflags),
15238                    core::mem::transmute_copy(&lpcadrtypes),
15239                    core::mem::transmute_copy(&lpppszadrtypes),
15240                )
15241                .into()
15242            }
15243        }
15244        unsafe extern "system" fn QueryIdentity<
15245            Identity: IMAPISession_Impl,
15246            const OFFSET: isize,
15247        >(
15248            this: *mut core::ffi::c_void,
15249            lpcbentryid: *mut u32,
15250            lppentryid: *mut *mut ENTRYID,
15251        ) -> windows_core::HRESULT {
15252            unsafe {
15253                let this: &Identity =
15254                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15255                IMAPISession_Impl::QueryIdentity(
15256                    this,
15257                    core::mem::transmute_copy(&lpcbentryid),
15258                    core::mem::transmute_copy(&lppentryid),
15259                )
15260                .into()
15261            }
15262        }
15263        unsafe extern "system" fn Logoff<Identity: IMAPISession_Impl, const OFFSET: isize>(
15264            this: *mut core::ffi::c_void,
15265            uluiparam: usize,
15266            ulflags: u32,
15267            ulreserved: u32,
15268        ) -> windows_core::HRESULT {
15269            unsafe {
15270                let this: &Identity =
15271                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15272                IMAPISession_Impl::Logoff(
15273                    this,
15274                    core::mem::transmute_copy(&uluiparam),
15275                    core::mem::transmute_copy(&ulflags),
15276                    core::mem::transmute_copy(&ulreserved),
15277                )
15278                .into()
15279            }
15280        }
15281        unsafe extern "system" fn SetDefaultStore<
15282            Identity: IMAPISession_Impl,
15283            const OFFSET: isize,
15284        >(
15285            this: *mut core::ffi::c_void,
15286            ulflags: u32,
15287            cbentryid: u32,
15288            lpentryid: *mut ENTRYID,
15289        ) -> windows_core::HRESULT {
15290            unsafe {
15291                let this: &Identity =
15292                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15293                IMAPISession_Impl::SetDefaultStore(
15294                    this,
15295                    core::mem::transmute_copy(&ulflags),
15296                    core::mem::transmute_copy(&cbentryid),
15297                    core::mem::transmute_copy(&lpentryid),
15298                )
15299                .into()
15300            }
15301        }
15302        unsafe extern "system" fn AdminServices<
15303            Identity: IMAPISession_Impl,
15304            const OFFSET: isize,
15305        >(
15306            this: *mut core::ffi::c_void,
15307            ulflags: u32,
15308            lppserviceadmin: *mut *mut core::ffi::c_void,
15309        ) -> windows_core::HRESULT {
15310            unsafe {
15311                let this: &Identity =
15312                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15313                match IMAPISession_Impl::AdminServices(this, core::mem::transmute_copy(&ulflags)) {
15314                    Ok(ok__) => {
15315                        lppserviceadmin.write(core::mem::transmute(ok__));
15316                        windows_core::HRESULT(0)
15317                    }
15318                    Err(err) => err.into(),
15319                }
15320            }
15321        }
15322        unsafe extern "system" fn ShowForm<Identity: IMAPISession_Impl, const OFFSET: isize>(
15323            this: *mut core::ffi::c_void,
15324            uluiparam: usize,
15325            lpmsgstore: *mut core::ffi::c_void,
15326            lpparentfolder: *mut core::ffi::c_void,
15327            lpinterface: *mut windows_core::GUID,
15328            ulmessagetoken: usize,
15329            lpmessagesent: *mut core::ffi::c_void,
15330            ulflags: u32,
15331            ulmessagestatus: u32,
15332            ulmessageflags: u32,
15333            ulaccess: u32,
15334            lpszmessageclass: windows_core::PCSTR,
15335        ) -> windows_core::HRESULT {
15336            unsafe {
15337                let this: &Identity =
15338                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15339                IMAPISession_Impl::ShowForm(
15340                    this,
15341                    core::mem::transmute_copy(&uluiparam),
15342                    core::mem::transmute_copy(&lpmsgstore),
15343                    core::mem::transmute_copy(&lpparentfolder),
15344                    core::mem::transmute_copy(&lpinterface),
15345                    core::mem::transmute_copy(&ulmessagetoken),
15346                    core::mem::transmute_copy(&lpmessagesent),
15347                    core::mem::transmute_copy(&ulflags),
15348                    core::mem::transmute_copy(&ulmessagestatus),
15349                    core::mem::transmute_copy(&ulmessageflags),
15350                    core::mem::transmute_copy(&ulaccess),
15351                    core::mem::transmute(&lpszmessageclass),
15352                )
15353                .into()
15354            }
15355        }
15356        unsafe extern "system" fn PrepareForm<Identity: IMAPISession_Impl, const OFFSET: isize>(
15357            this: *mut core::ffi::c_void,
15358            lpinterface: *mut windows_core::GUID,
15359            lpmessage: *mut core::ffi::c_void,
15360            lpulmessagetoken: *mut usize,
15361        ) -> windows_core::HRESULT {
15362            unsafe {
15363                let this: &Identity =
15364                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15365                IMAPISession_Impl::PrepareForm(
15366                    this,
15367                    core::mem::transmute_copy(&lpinterface),
15368                    core::mem::transmute_copy(&lpmessage),
15369                    core::mem::transmute_copy(&lpulmessagetoken),
15370                )
15371                .into()
15372            }
15373        }
15374        Self {
15375            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
15376            GetLastError: GetLastError::<Identity, OFFSET>,
15377            GetMsgStoresTable: GetMsgStoresTable::<Identity, OFFSET>,
15378            OpenMsgStore: OpenMsgStore::<Identity, OFFSET>,
15379            OpenAddressBook: OpenAddressBook::<Identity, OFFSET>,
15380            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
15381            GetStatusTable: GetStatusTable::<Identity, OFFSET>,
15382            OpenEntry: OpenEntry::<Identity, OFFSET>,
15383            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
15384            Advise: Advise::<Identity, OFFSET>,
15385            Unadvise: Unadvise::<Identity, OFFSET>,
15386            MessageOptions: MessageOptions::<Identity, OFFSET>,
15387            QueryDefaultMessageOpt: QueryDefaultMessageOpt::<Identity, OFFSET>,
15388            EnumAdrTypes: EnumAdrTypes::<Identity, OFFSET>,
15389            QueryIdentity: QueryIdentity::<Identity, OFFSET>,
15390            Logoff: Logoff::<Identity, OFFSET>,
15391            SetDefaultStore: SetDefaultStore::<Identity, OFFSET>,
15392            AdminServices: AdminServices::<Identity, OFFSET>,
15393            ShowForm: ShowForm::<Identity, OFFSET>,
15394            PrepareForm: PrepareForm::<Identity, OFFSET>,
15395        }
15396    }
15397    pub fn matches(iid: &windows_core::GUID) -> bool {
15398        iid == &<IMAPISession as windows_core::Interface>::IID
15399    }
15400}
15401impl windows_core::RuntimeName for IMAPISession {}
15402windows_core::imp::define_interface!(
15403    IMAPIStatus,
15404    IMAPIStatus_Vtbl,
15405    0x00020305_0000_0000_c000_000000000046
15406);
15407impl core::ops::Deref for IMAPIStatus {
15408    type Target = IMAPIProp;
15409    fn deref(&self) -> &Self::Target {
15410        unsafe { core::mem::transmute(self) }
15411    }
15412}
15413windows_core::imp::interface_hierarchy!(IMAPIStatus, windows_core::IUnknown, IMAPIProp);
15414impl IMAPIStatus {
15415    pub unsafe fn ValidateState(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()> {
15416        unsafe {
15417            (windows_core::Interface::vtable(self).ValidateState)(
15418                windows_core::Interface::as_raw(self),
15419                uluiparam,
15420                ulflags,
15421            )
15422            .ok()
15423        }
15424    }
15425    pub unsafe fn SettingsDialog(
15426        &self,
15427        uluiparam: usize,
15428        ulflags: u32,
15429    ) -> windows_core::Result<()> {
15430        unsafe {
15431            (windows_core::Interface::vtable(self).SettingsDialog)(
15432                windows_core::Interface::as_raw(self),
15433                uluiparam,
15434                ulflags,
15435            )
15436            .ok()
15437        }
15438    }
15439    pub unsafe fn ChangePassword(
15440        &self,
15441        lpoldpass: *mut i8,
15442        lpnewpass: *mut i8,
15443        ulflags: u32,
15444    ) -> windows_core::Result<()> {
15445        unsafe {
15446            (windows_core::Interface::vtable(self).ChangePassword)(
15447                windows_core::Interface::as_raw(self),
15448                lpoldpass as _,
15449                lpnewpass as _,
15450                ulflags,
15451            )
15452            .ok()
15453        }
15454    }
15455    pub unsafe fn FlushQueues(
15456        &self,
15457        uluiparam: usize,
15458        cbtargettransport: u32,
15459        lptargettransport: *mut ENTRYID,
15460        ulflags: u32,
15461    ) -> windows_core::Result<()> {
15462        unsafe {
15463            (windows_core::Interface::vtable(self).FlushQueues)(
15464                windows_core::Interface::as_raw(self),
15465                uluiparam,
15466                cbtargettransport,
15467                lptargettransport as _,
15468                ulflags,
15469            )
15470            .ok()
15471        }
15472    }
15473}
15474#[repr(C)]
15475#[doc(hidden)]
15476pub struct IMAPIStatus_Vtbl {
15477    pub base__: IMAPIProp_Vtbl,
15478    pub ValidateState:
15479        unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32) -> windows_core::HRESULT,
15480    pub SettingsDialog:
15481        unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32) -> windows_core::HRESULT,
15482    pub ChangePassword: unsafe extern "system" fn(
15483        *mut core::ffi::c_void,
15484        *mut i8,
15485        *mut i8,
15486        u32,
15487    ) -> windows_core::HRESULT,
15488    pub FlushQueues: unsafe extern "system" fn(
15489        *mut core::ffi::c_void,
15490        usize,
15491        u32,
15492        *mut ENTRYID,
15493        u32,
15494    ) -> windows_core::HRESULT,
15495}
15496pub trait IMAPIStatus_Impl: IMAPIProp_Impl {
15497    fn ValidateState(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()>;
15498    fn SettingsDialog(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()>;
15499    fn ChangePassword(
15500        &self,
15501        lpoldpass: *mut i8,
15502        lpnewpass: *mut i8,
15503        ulflags: u32,
15504    ) -> windows_core::Result<()>;
15505    fn FlushQueues(
15506        &self,
15507        uluiparam: usize,
15508        cbtargettransport: u32,
15509        lptargettransport: *mut ENTRYID,
15510        ulflags: u32,
15511    ) -> windows_core::Result<()>;
15512}
15513impl IMAPIStatus_Vtbl {
15514    pub const fn new<Identity: IMAPIStatus_Impl, const OFFSET: isize>() -> Self {
15515        unsafe extern "system" fn ValidateState<Identity: IMAPIStatus_Impl, const OFFSET: isize>(
15516            this: *mut core::ffi::c_void,
15517            uluiparam: usize,
15518            ulflags: u32,
15519        ) -> windows_core::HRESULT {
15520            unsafe {
15521                let this: &Identity =
15522                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15523                IMAPIStatus_Impl::ValidateState(
15524                    this,
15525                    core::mem::transmute_copy(&uluiparam),
15526                    core::mem::transmute_copy(&ulflags),
15527                )
15528                .into()
15529            }
15530        }
15531        unsafe extern "system" fn SettingsDialog<
15532            Identity: IMAPIStatus_Impl,
15533            const OFFSET: isize,
15534        >(
15535            this: *mut core::ffi::c_void,
15536            uluiparam: usize,
15537            ulflags: u32,
15538        ) -> windows_core::HRESULT {
15539            unsafe {
15540                let this: &Identity =
15541                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15542                IMAPIStatus_Impl::SettingsDialog(
15543                    this,
15544                    core::mem::transmute_copy(&uluiparam),
15545                    core::mem::transmute_copy(&ulflags),
15546                )
15547                .into()
15548            }
15549        }
15550        unsafe extern "system" fn ChangePassword<
15551            Identity: IMAPIStatus_Impl,
15552            const OFFSET: isize,
15553        >(
15554            this: *mut core::ffi::c_void,
15555            lpoldpass: *mut i8,
15556            lpnewpass: *mut i8,
15557            ulflags: u32,
15558        ) -> windows_core::HRESULT {
15559            unsafe {
15560                let this: &Identity =
15561                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15562                IMAPIStatus_Impl::ChangePassword(
15563                    this,
15564                    core::mem::transmute_copy(&lpoldpass),
15565                    core::mem::transmute_copy(&lpnewpass),
15566                    core::mem::transmute_copy(&ulflags),
15567                )
15568                .into()
15569            }
15570        }
15571        unsafe extern "system" fn FlushQueues<Identity: IMAPIStatus_Impl, const OFFSET: isize>(
15572            this: *mut core::ffi::c_void,
15573            uluiparam: usize,
15574            cbtargettransport: u32,
15575            lptargettransport: *mut ENTRYID,
15576            ulflags: u32,
15577        ) -> windows_core::HRESULT {
15578            unsafe {
15579                let this: &Identity =
15580                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
15581                IMAPIStatus_Impl::FlushQueues(
15582                    this,
15583                    core::mem::transmute_copy(&uluiparam),
15584                    core::mem::transmute_copy(&cbtargettransport),
15585                    core::mem::transmute_copy(&lptargettransport),
15586                    core::mem::transmute_copy(&ulflags),
15587                )
15588                .into()
15589            }
15590        }
15591        Self {
15592            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
15593            ValidateState: ValidateState::<Identity, OFFSET>,
15594            SettingsDialog: SettingsDialog::<Identity, OFFSET>,
15595            ChangePassword: ChangePassword::<Identity, OFFSET>,
15596            FlushQueues: FlushQueues::<Identity, OFFSET>,
15597        }
15598    }
15599    pub fn matches(iid: &windows_core::GUID) -> bool {
15600        iid == &<IMAPIStatus as windows_core::Interface>::IID
15601            || iid == &<IMAPIProp as windows_core::Interface>::IID
15602    }
15603}
15604impl windows_core::RuntimeName for IMAPIStatus {}
15605pub const IMAPIStatus_ChangePassword: METHODS = METHODS(124i32);
15606pub const IMAPIStatus_FlushQueues: METHODS = METHODS(125i32);
15607pub const IMAPIStatus_SettingsDialog: METHODS = METHODS(123i32);
15608pub const IMAPIStatus_ValidateState: METHODS = METHODS(122i32);
15609windows_core::imp::define_interface!(IMAPISupport, IMAPISupport_Vtbl, 0);
15610windows_core::imp::interface_hierarchy!(IMAPISupport, windows_core::IUnknown);
15611impl IMAPISupport {
15612    pub unsafe fn GetLastError(
15613        &self,
15614        hresult: windows_core::HRESULT,
15615        ulflags: u32,
15616        lppmapierror: *mut *mut MAPIERROR,
15617    ) -> windows_core::Result<()> {
15618        unsafe {
15619            (windows_core::Interface::vtable(self).GetLastError)(
15620                windows_core::Interface::as_raw(self),
15621                hresult,
15622                ulflags,
15623                lppmapierror as _,
15624            )
15625            .ok()
15626        }
15627    }
15628    pub unsafe fn GetMemAllocRoutines(
15629        &self,
15630        lpallocatebuffer: *mut LPALLOCATEBUFFER,
15631        lpallocatemore: *mut LPALLOCATEMORE,
15632        lpfreebuffer: *mut LPFREEBUFFER,
15633    ) -> windows_core::Result<()> {
15634        unsafe {
15635            (windows_core::Interface::vtable(self).GetMemAllocRoutines)(
15636                windows_core::Interface::as_raw(self),
15637                lpallocatebuffer as _,
15638                lpallocatemore as _,
15639                lpfreebuffer as _,
15640            )
15641            .ok()
15642        }
15643    }
15644    pub unsafe fn Subscribe<P3>(
15645        &self,
15646        lpkey: *mut NOTIFKEY,
15647        uleventmask: u32,
15648        ulflags: u32,
15649        lpadvisesink: P3,
15650        lpulconnection: *mut usize,
15651    ) -> windows_core::Result<()>
15652    where
15653        P3: windows_core::Param<IMAPIAdviseSink>,
15654    {
15655        unsafe {
15656            (windows_core::Interface::vtable(self).Subscribe)(
15657                windows_core::Interface::as_raw(self),
15658                lpkey as _,
15659                uleventmask,
15660                ulflags,
15661                lpadvisesink.param().abi(),
15662                lpulconnection as _,
15663            )
15664            .ok()
15665        }
15666    }
15667    pub unsafe fn Unsubscribe(&self, ulconnection: usize) -> windows_core::Result<()> {
15668        unsafe {
15669            (windows_core::Interface::vtable(self).Unsubscribe)(
15670                windows_core::Interface::as_raw(self),
15671                ulconnection,
15672            )
15673            .ok()
15674        }
15675    }
15676    pub unsafe fn Notify(
15677        &self,
15678        lpkey: *mut NOTIFKEY,
15679        cnotification: u32,
15680        lpnotifications: *mut NOTIFICATION,
15681        lpulflags: *mut u32,
15682    ) -> windows_core::Result<()> {
15683        unsafe {
15684            (windows_core::Interface::vtable(self).Notify)(
15685                windows_core::Interface::as_raw(self),
15686                lpkey as _,
15687                cnotification,
15688                lpnotifications as _,
15689                lpulflags as _,
15690            )
15691            .ok()
15692        }
15693    }
15694    pub unsafe fn ModifyStatusRow(
15695        &self,
15696        cvalues: u32,
15697        lpcolumnvals: *mut SPropValue,
15698        ulflags: u32,
15699    ) -> windows_core::Result<()> {
15700        unsafe {
15701            (windows_core::Interface::vtable(self).ModifyStatusRow)(
15702                windows_core::Interface::as_raw(self),
15703                cvalues,
15704                lpcolumnvals as _,
15705                ulflags,
15706            )
15707            .ok()
15708        }
15709    }
15710    pub unsafe fn OpenProfileSection(
15711        &self,
15712        lpuid: *mut MAPIUID,
15713        ulflags: u32,
15714        lppprofileobj: *mut Option<IProfSect>,
15715    ) -> windows_core::Result<()> {
15716        unsafe {
15717            (windows_core::Interface::vtable(self).OpenProfileSection)(
15718                windows_core::Interface::as_raw(self),
15719                lpuid as _,
15720                ulflags,
15721                core::mem::transmute(lppprofileobj),
15722            )
15723            .ok()
15724        }
15725    }
15726    pub unsafe fn RegisterPreprocessor<P3, P4>(
15727        &self,
15728        lpmuid: *mut MAPIUID,
15729        lpszadrtype: *mut i8,
15730        lpszdllname: *mut i8,
15731        lpszpreprocess: P3,
15732        lpszremovepreprocessinfo: P4,
15733        ulflags: u32,
15734    ) -> windows_core::Result<()>
15735    where
15736        P3: windows_core::Param<windows_core::PCSTR>,
15737        P4: windows_core::Param<windows_core::PCSTR>,
15738    {
15739        unsafe {
15740            (windows_core::Interface::vtable(self).RegisterPreprocessor)(
15741                windows_core::Interface::as_raw(self),
15742                lpmuid as _,
15743                lpszadrtype as _,
15744                lpszdllname as _,
15745                lpszpreprocess.param().abi(),
15746                lpszremovepreprocessinfo.param().abi(),
15747                ulflags,
15748            )
15749            .ok()
15750        }
15751    }
15752    pub unsafe fn NewUID(&self, lpmuid: *mut MAPIUID) -> windows_core::Result<()> {
15753        unsafe {
15754            (windows_core::Interface::vtable(self).NewUID)(
15755                windows_core::Interface::as_raw(self),
15756                lpmuid as _,
15757            )
15758            .ok()
15759        }
15760    }
15761    pub unsafe fn MakeInvalid(
15762        &self,
15763        ulflags: u32,
15764        lpobject: *mut core::ffi::c_void,
15765        ulrefcount: u32,
15766        cmethods: u32,
15767    ) -> windows_core::Result<()> {
15768        unsafe {
15769            (windows_core::Interface::vtable(self).MakeInvalid)(
15770                windows_core::Interface::as_raw(self),
15771                ulflags,
15772                lpobject as _,
15773                ulrefcount,
15774                cmethods,
15775            )
15776            .ok()
15777        }
15778    }
15779    pub unsafe fn SpoolerYield(&self, ulflags: u32) -> windows_core::Result<()> {
15780        unsafe {
15781            (windows_core::Interface::vtable(self).SpoolerYield)(
15782                windows_core::Interface::as_raw(self),
15783                ulflags,
15784            )
15785            .ok()
15786        }
15787    }
15788    pub unsafe fn SpoolerNotify(
15789        &self,
15790        ulflags: u32,
15791        lpvdata: *mut core::ffi::c_void,
15792    ) -> windows_core::Result<()> {
15793        unsafe {
15794            (windows_core::Interface::vtable(self).SpoolerNotify)(
15795                windows_core::Interface::as_raw(self),
15796                ulflags,
15797                lpvdata as _,
15798            )
15799            .ok()
15800        }
15801    }
15802    pub unsafe fn CreateOneOff(
15803        &self,
15804        lpszname: *mut i8,
15805        lpszadrtype: *mut i8,
15806        lpszaddress: *mut i8,
15807        ulflags: u32,
15808        lpcbentryid: *mut u32,
15809        lppentryid: *mut *mut ENTRYID,
15810    ) -> windows_core::Result<()> {
15811        unsafe {
15812            (windows_core::Interface::vtable(self).CreateOneOff)(
15813                windows_core::Interface::as_raw(self),
15814                lpszname as _,
15815                lpszadrtype as _,
15816                lpszaddress as _,
15817                ulflags,
15818                lpcbentryid as _,
15819                lppentryid as _,
15820            )
15821            .ok()
15822        }
15823    }
15824    pub unsafe fn SetProviderUID(
15825        &self,
15826        lpproviderid: *mut MAPIUID,
15827        ulflags: u32,
15828    ) -> windows_core::Result<()> {
15829        unsafe {
15830            (windows_core::Interface::vtable(self).SetProviderUID)(
15831                windows_core::Interface::as_raw(self),
15832                lpproviderid as _,
15833                ulflags,
15834            )
15835            .ok()
15836        }
15837    }
15838    pub unsafe fn CompareEntryIDs(
15839        &self,
15840        cbentry1: u32,
15841        lpentry1: *mut ENTRYID,
15842        cbentry2: u32,
15843        lpentry2: *mut ENTRYID,
15844        ulcompareflags: u32,
15845        lpulresult: *mut u32,
15846    ) -> windows_core::Result<()> {
15847        unsafe {
15848            (windows_core::Interface::vtable(self).CompareEntryIDs)(
15849                windows_core::Interface::as_raw(self),
15850                cbentry1,
15851                lpentry1 as _,
15852                cbentry2,
15853                lpentry2 as _,
15854                ulcompareflags,
15855                lpulresult as _,
15856            )
15857            .ok()
15858        }
15859    }
15860    pub unsafe fn OpenTemplateID<P3, P6>(
15861        &self,
15862        cbtemplateid: u32,
15863        lptemplateid: *mut ENTRYID,
15864        ultemplateflags: u32,
15865        lpmapipropdata: P3,
15866        lpinterface: *mut windows_core::GUID,
15867        lppmapipropnew: *mut Option<IMAPIProp>,
15868        lpmapipropsibling: P6,
15869    ) -> windows_core::Result<()>
15870    where
15871        P3: windows_core::Param<IMAPIProp>,
15872        P6: windows_core::Param<IMAPIProp>,
15873    {
15874        unsafe {
15875            (windows_core::Interface::vtable(self).OpenTemplateID)(
15876                windows_core::Interface::as_raw(self),
15877                cbtemplateid,
15878                lptemplateid as _,
15879                ultemplateflags,
15880                lpmapipropdata.param().abi(),
15881                lpinterface as _,
15882                core::mem::transmute(lppmapipropnew),
15883                lpmapipropsibling.param().abi(),
15884            )
15885            .ok()
15886        }
15887    }
15888    pub unsafe fn OpenEntry(
15889        &self,
15890        cbentryid: u32,
15891        lpentryid: *mut ENTRYID,
15892        lpinterface: *mut windows_core::GUID,
15893        ulopenflags: u32,
15894        lpulobjtype: *mut u32,
15895        lppunk: *mut Option<windows_core::IUnknown>,
15896    ) -> windows_core::Result<()> {
15897        unsafe {
15898            (windows_core::Interface::vtable(self).OpenEntry)(
15899                windows_core::Interface::as_raw(self),
15900                cbentryid,
15901                lpentryid as _,
15902                lpinterface as _,
15903                ulopenflags,
15904                lpulobjtype as _,
15905                core::mem::transmute(lppunk),
15906            )
15907            .ok()
15908        }
15909    }
15910    pub unsafe fn GetOneOffTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
15911        unsafe {
15912            let mut result__ = core::mem::zeroed();
15913            (windows_core::Interface::vtable(self).GetOneOffTable)(
15914                windows_core::Interface::as_raw(self),
15915                ulflags,
15916                &mut result__,
15917            )
15918            .and_then(|| windows_core::Type::from_abi(result__))
15919        }
15920    }
15921    pub unsafe fn Address(
15922        &self,
15923        lpuluiparam: *mut usize,
15924        lpadrparms: *mut ADRPARM,
15925        lppadrlist: *mut *mut ADRLIST,
15926    ) -> windows_core::Result<()> {
15927        unsafe {
15928            (windows_core::Interface::vtable(self).Address)(
15929                windows_core::Interface::as_raw(self),
15930                lpuluiparam as _,
15931                lpadrparms as _,
15932                lppadrlist as _,
15933            )
15934            .ok()
15935        }
15936    }
15937    pub unsafe fn Details(
15938        &self,
15939        lpuluiparam: *mut usize,
15940        lpfndismiss: LPFNDISMISS,
15941        lpvdismisscontext: *mut core::ffi::c_void,
15942        cbentryid: u32,
15943        lpentryid: *mut ENTRYID,
15944        lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
15945        lpvbuttoncontext: *mut core::ffi::c_void,
15946        lpszbuttontext: *mut i8,
15947        ulflags: u32,
15948    ) -> windows_core::Result<()> {
15949        unsafe {
15950            (windows_core::Interface::vtable(self).Details)(
15951                windows_core::Interface::as_raw(self),
15952                lpuluiparam as _,
15953                lpfndismiss,
15954                lpvdismisscontext as _,
15955                cbentryid,
15956                lpentryid as _,
15957                lpfbuttoncallback,
15958                lpvbuttoncontext as _,
15959                lpszbuttontext as _,
15960                ulflags,
15961            )
15962            .ok()
15963        }
15964    }
15965    pub unsafe fn NewEntry(
15966        &self,
15967        uluiparam: usize,
15968        ulflags: u32,
15969        cbeidcontainer: u32,
15970        lpeidcontainer: *mut ENTRYID,
15971        cbeidnewentrytpl: u32,
15972        lpeidnewentrytpl: *mut ENTRYID,
15973        lpcbeidnewentry: *mut u32,
15974        lppeidnewentry: *mut *mut ENTRYID,
15975    ) -> windows_core::Result<()> {
15976        unsafe {
15977            (windows_core::Interface::vtable(self).NewEntry)(
15978                windows_core::Interface::as_raw(self),
15979                uluiparam,
15980                ulflags,
15981                cbeidcontainer,
15982                lpeidcontainer as _,
15983                cbeidnewentrytpl,
15984                lpeidnewentrytpl as _,
15985                lpcbeidnewentry as _,
15986                lppeidnewentry as _,
15987            )
15988            .ok()
15989        }
15990    }
15991    pub unsafe fn DoConfigPropsheet<P3, P4>(
15992        &self,
15993        uluiparam: usize,
15994        ulflags: u32,
15995        lpsztitle: *mut i8,
15996        lpdisplaytable: P3,
15997        lpconfigdata: P4,
15998        ultoppage: u32,
15999    ) -> windows_core::Result<()>
16000    where
16001        P3: windows_core::Param<IMAPITable>,
16002        P4: windows_core::Param<IMAPIProp>,
16003    {
16004        unsafe {
16005            (windows_core::Interface::vtable(self).DoConfigPropsheet)(
16006                windows_core::Interface::as_raw(self),
16007                uluiparam,
16008                ulflags,
16009                lpsztitle as _,
16010                lpdisplaytable.param().abi(),
16011                lpconfigdata.param().abi(),
16012                ultoppage,
16013            )
16014            .ok()
16015        }
16016    }
16017    pub unsafe fn CopyMessages<P6>(
16018        &self,
16019        lpsrcinterface: *mut windows_core::GUID,
16020        lpsrcfolder: *mut core::ffi::c_void,
16021        lpmsglist: *mut SBinaryArray,
16022        lpdestinterface: *mut windows_core::GUID,
16023        lpdestfolder: *mut core::ffi::c_void,
16024        uluiparam: usize,
16025        lpprogress: P6,
16026        ulflags: u32,
16027    ) -> windows_core::Result<()>
16028    where
16029        P6: windows_core::Param<IMAPIProgress>,
16030    {
16031        unsafe {
16032            (windows_core::Interface::vtable(self).CopyMessages)(
16033                windows_core::Interface::as_raw(self),
16034                lpsrcinterface as _,
16035                lpsrcfolder as _,
16036                lpmsglist as _,
16037                lpdestinterface as _,
16038                lpdestfolder as _,
16039                uluiparam,
16040                lpprogress.param().abi(),
16041                ulflags,
16042            )
16043            .ok()
16044        }
16045    }
16046    pub unsafe fn CopyFolder<P8>(
16047        &self,
16048        lpsrcinterface: *mut windows_core::GUID,
16049        lpsrcfolder: *mut core::ffi::c_void,
16050        cbentryid: u32,
16051        lpentryid: *mut ENTRYID,
16052        lpdestinterface: *mut windows_core::GUID,
16053        lpdestfolder: *mut core::ffi::c_void,
16054        lsznewfoldername: *mut i8,
16055        uluiparam: usize,
16056        lpprogress: P8,
16057        ulflags: u32,
16058    ) -> windows_core::Result<()>
16059    where
16060        P8: windows_core::Param<IMAPIProgress>,
16061    {
16062        unsafe {
16063            (windows_core::Interface::vtable(self).CopyFolder)(
16064                windows_core::Interface::as_raw(self),
16065                lpsrcinterface as _,
16066                lpsrcfolder as _,
16067                cbentryid,
16068                lpentryid as _,
16069                lpdestinterface as _,
16070                lpdestfolder as _,
16071                lsznewfoldername as _,
16072                uluiparam,
16073                lpprogress.param().abi(),
16074                ulflags,
16075            )
16076            .ok()
16077        }
16078    }
16079    pub unsafe fn DoCopyTo<P6>(
16080        &self,
16081        lpsrcinterface: *mut windows_core::GUID,
16082        lpsrcobj: *mut core::ffi::c_void,
16083        ciidexclude: u32,
16084        rgiidexclude: *mut windows_core::GUID,
16085        lpexcludeprops: *mut SPropTagArray,
16086        uluiparam: usize,
16087        lpprogress: P6,
16088        lpdestinterface: *mut windows_core::GUID,
16089        lpdestobj: *mut core::ffi::c_void,
16090        ulflags: u32,
16091        lppproblems: *mut *mut SPropProblemArray,
16092    ) -> windows_core::Result<()>
16093    where
16094        P6: windows_core::Param<IMAPIProgress>,
16095    {
16096        unsafe {
16097            (windows_core::Interface::vtable(self).DoCopyTo)(
16098                windows_core::Interface::as_raw(self),
16099                lpsrcinterface as _,
16100                lpsrcobj as _,
16101                ciidexclude,
16102                rgiidexclude as _,
16103                lpexcludeprops as _,
16104                uluiparam,
16105                lpprogress.param().abi(),
16106                lpdestinterface as _,
16107                lpdestobj as _,
16108                ulflags,
16109                lppproblems as _,
16110            )
16111            .ok()
16112        }
16113    }
16114    pub unsafe fn DoCopyProps<P4>(
16115        &self,
16116        lpsrcinterface: *mut windows_core::GUID,
16117        lpsrcobj: *mut core::ffi::c_void,
16118        lpincludeprops: *mut SPropTagArray,
16119        uluiparam: usize,
16120        lpprogress: P4,
16121        lpdestinterface: *mut windows_core::GUID,
16122        lpdestobj: *mut core::ffi::c_void,
16123        ulflags: u32,
16124        lppproblems: *mut *mut SPropProblemArray,
16125    ) -> windows_core::Result<()>
16126    where
16127        P4: windows_core::Param<IMAPIProgress>,
16128    {
16129        unsafe {
16130            (windows_core::Interface::vtable(self).DoCopyProps)(
16131                windows_core::Interface::as_raw(self),
16132                lpsrcinterface as _,
16133                lpsrcobj as _,
16134                lpincludeprops as _,
16135                uluiparam,
16136                lpprogress.param().abi(),
16137                lpdestinterface as _,
16138                lpdestobj as _,
16139                ulflags,
16140                lppproblems as _,
16141            )
16142            .ok()
16143        }
16144    }
16145    pub unsafe fn DoProgressDialog(
16146        &self,
16147        uluiparam: usize,
16148        ulflags: u32,
16149    ) -> windows_core::Result<IMAPIProgress> {
16150        unsafe {
16151            let mut result__ = core::mem::zeroed();
16152            (windows_core::Interface::vtable(self).DoProgressDialog)(
16153                windows_core::Interface::as_raw(self),
16154                uluiparam,
16155                ulflags,
16156                &mut result__,
16157            )
16158            .and_then(|| windows_core::Type::from_abi(result__))
16159        }
16160    }
16161    pub unsafe fn ReadReceipt<P1>(
16162        &self,
16163        ulflags: u32,
16164        lpreadmessage: P1,
16165    ) -> windows_core::Result<IMessage>
16166    where
16167        P1: windows_core::Param<IMessage>,
16168    {
16169        unsafe {
16170            let mut result__ = core::mem::zeroed();
16171            (windows_core::Interface::vtable(self).ReadReceipt)(
16172                windows_core::Interface::as_raw(self),
16173                ulflags,
16174                lpreadmessage.param().abi(),
16175                &mut result__,
16176            )
16177            .and_then(|| windows_core::Type::from_abi(result__))
16178        }
16179    }
16180    pub unsafe fn PrepareSubmit<P0>(
16181        &self,
16182        lpmessage: P0,
16183        lpulflags: *mut u32,
16184    ) -> windows_core::Result<()>
16185    where
16186        P0: windows_core::Param<IMessage>,
16187    {
16188        unsafe {
16189            (windows_core::Interface::vtable(self).PrepareSubmit)(
16190                windows_core::Interface::as_raw(self),
16191                lpmessage.param().abi(),
16192                lpulflags as _,
16193            )
16194            .ok()
16195        }
16196    }
16197    pub unsafe fn ExpandRecips<P0>(
16198        &self,
16199        lpmessage: P0,
16200        lpulflags: *mut u32,
16201    ) -> windows_core::Result<()>
16202    where
16203        P0: windows_core::Param<IMessage>,
16204    {
16205        unsafe {
16206            (windows_core::Interface::vtable(self).ExpandRecips)(
16207                windows_core::Interface::as_raw(self),
16208                lpmessage.param().abi(),
16209                lpulflags as _,
16210            )
16211            .ok()
16212        }
16213    }
16214    pub unsafe fn UpdatePAB<P1>(&self, ulflags: u32, lpmessage: P1) -> windows_core::Result<()>
16215    where
16216        P1: windows_core::Param<IMessage>,
16217    {
16218        unsafe {
16219            (windows_core::Interface::vtable(self).UpdatePAB)(
16220                windows_core::Interface::as_raw(self),
16221                ulflags,
16222                lpmessage.param().abi(),
16223            )
16224            .ok()
16225        }
16226    }
16227    pub unsafe fn DoSentMail<P1>(&self, ulflags: u32, lpmessage: P1) -> windows_core::Result<()>
16228    where
16229        P1: windows_core::Param<IMessage>,
16230    {
16231        unsafe {
16232            (windows_core::Interface::vtable(self).DoSentMail)(
16233                windows_core::Interface::as_raw(self),
16234                ulflags,
16235                lpmessage.param().abi(),
16236            )
16237            .ok()
16238        }
16239    }
16240    pub unsafe fn OpenAddressBook(
16241        &self,
16242        lpinterface: *mut windows_core::GUID,
16243        ulflags: u32,
16244        lppadrbook: *mut Option<IAddrBook>,
16245    ) -> windows_core::Result<()> {
16246        unsafe {
16247            (windows_core::Interface::vtable(self).OpenAddressBook)(
16248                windows_core::Interface::as_raw(self),
16249                lpinterface as _,
16250                ulflags,
16251                core::mem::transmute(lppadrbook),
16252            )
16253            .ok()
16254        }
16255    }
16256    pub unsafe fn Preprocess(
16257        &self,
16258        ulflags: u32,
16259        cbentryid: u32,
16260        lpentryid: *mut ENTRYID,
16261    ) -> windows_core::Result<()> {
16262        unsafe {
16263            (windows_core::Interface::vtable(self).Preprocess)(
16264                windows_core::Interface::as_raw(self),
16265                ulflags,
16266                cbentryid,
16267                lpentryid as _,
16268            )
16269            .ok()
16270        }
16271    }
16272    pub unsafe fn CompleteMsg(
16273        &self,
16274        ulflags: u32,
16275        cbentryid: u32,
16276        lpentryid: *mut ENTRYID,
16277    ) -> windows_core::Result<()> {
16278        unsafe {
16279            (windows_core::Interface::vtable(self).CompleteMsg)(
16280                windows_core::Interface::as_raw(self),
16281                ulflags,
16282                cbentryid,
16283                lpentryid as _,
16284            )
16285            .ok()
16286        }
16287    }
16288    pub unsafe fn StoreLogoffTransports(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
16289        unsafe {
16290            (windows_core::Interface::vtable(self).StoreLogoffTransports)(
16291                windows_core::Interface::as_raw(self),
16292                lpulflags as _,
16293            )
16294            .ok()
16295        }
16296    }
16297    pub unsafe fn StatusRecips<P0>(
16298        &self,
16299        lpmessage: P0,
16300        lpreciplist: *mut ADRLIST,
16301    ) -> windows_core::Result<()>
16302    where
16303        P0: windows_core::Param<IMessage>,
16304    {
16305        unsafe {
16306            (windows_core::Interface::vtable(self).StatusRecips)(
16307                windows_core::Interface::as_raw(self),
16308                lpmessage.param().abi(),
16309                lpreciplist as _,
16310            )
16311            .ok()
16312        }
16313    }
16314    pub unsafe fn WrapStoreEntryID(
16315        &self,
16316        cborigentry: u32,
16317        lporigentry: *mut ENTRYID,
16318        lpcbwrappedentry: *mut u32,
16319        lppwrappedentry: *mut *mut ENTRYID,
16320    ) -> windows_core::Result<()> {
16321        unsafe {
16322            (windows_core::Interface::vtable(self).WrapStoreEntryID)(
16323                windows_core::Interface::as_raw(self),
16324                cborigentry,
16325                lporigentry as _,
16326                lpcbwrappedentry as _,
16327                lppwrappedentry as _,
16328            )
16329            .ok()
16330        }
16331    }
16332    pub unsafe fn ModifyProfile(&self, ulflags: u32) -> windows_core::Result<()> {
16333        unsafe {
16334            (windows_core::Interface::vtable(self).ModifyProfile)(
16335                windows_core::Interface::as_raw(self),
16336                ulflags,
16337            )
16338            .ok()
16339        }
16340    }
16341    pub unsafe fn IStorageFromStream<P0>(
16342        &self,
16343        lpunkin: P0,
16344        lpinterface: *mut windows_core::GUID,
16345        ulflags: u32,
16346        lppstorageout: *mut Option<windows::Win32::System::Com::StructuredStorage::IStorage>,
16347    ) -> windows_core::Result<()>
16348    where
16349        P0: windows_core::Param<windows_core::IUnknown>,
16350    {
16351        unsafe {
16352            (windows_core::Interface::vtable(self).IStorageFromStream)(
16353                windows_core::Interface::as_raw(self),
16354                lpunkin.param().abi(),
16355                lpinterface as _,
16356                ulflags,
16357                core::mem::transmute(lppstorageout),
16358            )
16359            .ok()
16360        }
16361    }
16362    pub unsafe fn GetSvcConfigSupportObj(
16363        &self,
16364        ulflags: u32,
16365    ) -> windows_core::Result<IMAPISupport> {
16366        unsafe {
16367            let mut result__ = core::mem::zeroed();
16368            (windows_core::Interface::vtable(self).GetSvcConfigSupportObj)(
16369                windows_core::Interface::as_raw(self),
16370                ulflags,
16371                &mut result__,
16372            )
16373            .and_then(|| windows_core::Type::from_abi(result__))
16374        }
16375    }
16376}
16377#[repr(C)]
16378#[doc(hidden)]
16379pub struct IMAPISupport_Vtbl {
16380    pub base__: windows_core::IUnknown_Vtbl,
16381    pub GetLastError: unsafe extern "system" fn(
16382        *mut core::ffi::c_void,
16383        windows_core::HRESULT,
16384        u32,
16385        *mut *mut MAPIERROR,
16386    ) -> windows_core::HRESULT,
16387    pub GetMemAllocRoutines: unsafe extern "system" fn(
16388        *mut core::ffi::c_void,
16389        *mut LPALLOCATEBUFFER,
16390        *mut LPALLOCATEMORE,
16391        *mut LPFREEBUFFER,
16392    ) -> windows_core::HRESULT,
16393    pub Subscribe: unsafe extern "system" fn(
16394        *mut core::ffi::c_void,
16395        *mut NOTIFKEY,
16396        u32,
16397        u32,
16398        *mut core::ffi::c_void,
16399        *mut usize,
16400    ) -> windows_core::HRESULT,
16401    pub Unsubscribe:
16402        unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
16403    pub Notify: unsafe extern "system" fn(
16404        *mut core::ffi::c_void,
16405        *mut NOTIFKEY,
16406        u32,
16407        *mut NOTIFICATION,
16408        *mut u32,
16409    ) -> windows_core::HRESULT,
16410    pub ModifyStatusRow: unsafe extern "system" fn(
16411        *mut core::ffi::c_void,
16412        u32,
16413        *mut SPropValue,
16414        u32,
16415    ) -> windows_core::HRESULT,
16416    pub OpenProfileSection: unsafe extern "system" fn(
16417        *mut core::ffi::c_void,
16418        *mut MAPIUID,
16419        u32,
16420        *mut *mut core::ffi::c_void,
16421    ) -> windows_core::HRESULT,
16422    pub RegisterPreprocessor: unsafe extern "system" fn(
16423        *mut core::ffi::c_void,
16424        *mut MAPIUID,
16425        *mut i8,
16426        *mut i8,
16427        windows_core::PCSTR,
16428        windows_core::PCSTR,
16429        u32,
16430    ) -> windows_core::HRESULT,
16431    pub NewUID:
16432        unsafe extern "system" fn(*mut core::ffi::c_void, *mut MAPIUID) -> windows_core::HRESULT,
16433    pub MakeInvalid: unsafe extern "system" fn(
16434        *mut core::ffi::c_void,
16435        u32,
16436        *mut core::ffi::c_void,
16437        u32,
16438        u32,
16439    ) -> windows_core::HRESULT,
16440    pub SpoolerYield:
16441        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
16442    pub SpoolerNotify: unsafe extern "system" fn(
16443        *mut core::ffi::c_void,
16444        u32,
16445        *mut core::ffi::c_void,
16446    ) -> windows_core::HRESULT,
16447    pub CreateOneOff: unsafe extern "system" fn(
16448        *mut core::ffi::c_void,
16449        *mut i8,
16450        *mut i8,
16451        *mut i8,
16452        u32,
16453        *mut u32,
16454        *mut *mut ENTRYID,
16455    ) -> windows_core::HRESULT,
16456    pub SetProviderUID: unsafe extern "system" fn(
16457        *mut core::ffi::c_void,
16458        *mut MAPIUID,
16459        u32,
16460    ) -> windows_core::HRESULT,
16461    pub CompareEntryIDs: unsafe extern "system" fn(
16462        *mut core::ffi::c_void,
16463        u32,
16464        *mut ENTRYID,
16465        u32,
16466        *mut ENTRYID,
16467        u32,
16468        *mut u32,
16469    ) -> windows_core::HRESULT,
16470    pub OpenTemplateID: unsafe extern "system" fn(
16471        *mut core::ffi::c_void,
16472        u32,
16473        *mut ENTRYID,
16474        u32,
16475        *mut core::ffi::c_void,
16476        *mut windows_core::GUID,
16477        *mut *mut core::ffi::c_void,
16478        *mut core::ffi::c_void,
16479    ) -> windows_core::HRESULT,
16480    pub OpenEntry: unsafe extern "system" fn(
16481        *mut core::ffi::c_void,
16482        u32,
16483        *mut ENTRYID,
16484        *mut windows_core::GUID,
16485        u32,
16486        *mut u32,
16487        *mut *mut core::ffi::c_void,
16488    ) -> windows_core::HRESULT,
16489    pub GetOneOffTable: unsafe extern "system" fn(
16490        *mut core::ffi::c_void,
16491        u32,
16492        *mut *mut core::ffi::c_void,
16493    ) -> windows_core::HRESULT,
16494    pub Address: unsafe extern "system" fn(
16495        *mut core::ffi::c_void,
16496        *mut usize,
16497        *mut ADRPARM,
16498        *mut *mut ADRLIST,
16499    ) -> windows_core::HRESULT,
16500    pub Details: unsafe extern "system" fn(
16501        *mut core::ffi::c_void,
16502        *mut usize,
16503        LPFNDISMISS,
16504        *mut core::ffi::c_void,
16505        u32,
16506        *mut ENTRYID,
16507        windows::Win32::System::AddressBook::LPFNBUTTON,
16508        *mut core::ffi::c_void,
16509        *mut i8,
16510        u32,
16511    ) -> windows_core::HRESULT,
16512    pub NewEntry: unsafe extern "system" fn(
16513        *mut core::ffi::c_void,
16514        usize,
16515        u32,
16516        u32,
16517        *mut ENTRYID,
16518        u32,
16519        *mut ENTRYID,
16520        *mut u32,
16521        *mut *mut ENTRYID,
16522    ) -> windows_core::HRESULT,
16523    pub DoConfigPropsheet: unsafe extern "system" fn(
16524        *mut core::ffi::c_void,
16525        usize,
16526        u32,
16527        *mut i8,
16528        *mut core::ffi::c_void,
16529        *mut core::ffi::c_void,
16530        u32,
16531    ) -> windows_core::HRESULT,
16532    pub CopyMessages: unsafe extern "system" fn(
16533        *mut core::ffi::c_void,
16534        *mut windows_core::GUID,
16535        *mut core::ffi::c_void,
16536        *mut SBinaryArray,
16537        *mut windows_core::GUID,
16538        *mut core::ffi::c_void,
16539        usize,
16540        *mut core::ffi::c_void,
16541        u32,
16542    ) -> windows_core::HRESULT,
16543    pub CopyFolder: unsafe extern "system" fn(
16544        *mut core::ffi::c_void,
16545        *mut windows_core::GUID,
16546        *mut core::ffi::c_void,
16547        u32,
16548        *mut ENTRYID,
16549        *mut windows_core::GUID,
16550        *mut core::ffi::c_void,
16551        *mut i8,
16552        usize,
16553        *mut core::ffi::c_void,
16554        u32,
16555    ) -> windows_core::HRESULT,
16556    pub DoCopyTo: unsafe extern "system" fn(
16557        *mut core::ffi::c_void,
16558        *mut windows_core::GUID,
16559        *mut core::ffi::c_void,
16560        u32,
16561        *mut windows_core::GUID,
16562        *mut SPropTagArray,
16563        usize,
16564        *mut core::ffi::c_void,
16565        *mut windows_core::GUID,
16566        *mut core::ffi::c_void,
16567        u32,
16568        *mut *mut SPropProblemArray,
16569    ) -> windows_core::HRESULT,
16570    pub DoCopyProps: unsafe extern "system" fn(
16571        *mut core::ffi::c_void,
16572        *mut windows_core::GUID,
16573        *mut core::ffi::c_void,
16574        *mut SPropTagArray,
16575        usize,
16576        *mut core::ffi::c_void,
16577        *mut windows_core::GUID,
16578        *mut core::ffi::c_void,
16579        u32,
16580        *mut *mut SPropProblemArray,
16581    ) -> windows_core::HRESULT,
16582    pub DoProgressDialog: unsafe extern "system" fn(
16583        *mut core::ffi::c_void,
16584        usize,
16585        u32,
16586        *mut *mut core::ffi::c_void,
16587    ) -> windows_core::HRESULT,
16588    pub ReadReceipt: unsafe extern "system" fn(
16589        *mut core::ffi::c_void,
16590        u32,
16591        *mut core::ffi::c_void,
16592        *mut *mut core::ffi::c_void,
16593    ) -> windows_core::HRESULT,
16594    pub PrepareSubmit: unsafe extern "system" fn(
16595        *mut core::ffi::c_void,
16596        *mut core::ffi::c_void,
16597        *mut u32,
16598    ) -> windows_core::HRESULT,
16599    pub ExpandRecips: unsafe extern "system" fn(
16600        *mut core::ffi::c_void,
16601        *mut core::ffi::c_void,
16602        *mut u32,
16603    ) -> windows_core::HRESULT,
16604    pub UpdatePAB: unsafe extern "system" fn(
16605        *mut core::ffi::c_void,
16606        u32,
16607        *mut core::ffi::c_void,
16608    ) -> windows_core::HRESULT,
16609    pub DoSentMail: unsafe extern "system" fn(
16610        *mut core::ffi::c_void,
16611        u32,
16612        *mut core::ffi::c_void,
16613    ) -> windows_core::HRESULT,
16614    pub OpenAddressBook: unsafe extern "system" fn(
16615        *mut core::ffi::c_void,
16616        *mut windows_core::GUID,
16617        u32,
16618        *mut *mut core::ffi::c_void,
16619    ) -> windows_core::HRESULT,
16620    pub Preprocess: unsafe extern "system" fn(
16621        *mut core::ffi::c_void,
16622        u32,
16623        u32,
16624        *mut ENTRYID,
16625    ) -> windows_core::HRESULT,
16626    pub CompleteMsg: unsafe extern "system" fn(
16627        *mut core::ffi::c_void,
16628        u32,
16629        u32,
16630        *mut ENTRYID,
16631    ) -> windows_core::HRESULT,
16632    pub StoreLogoffTransports:
16633        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
16634    pub StatusRecips: unsafe extern "system" fn(
16635        *mut core::ffi::c_void,
16636        *mut core::ffi::c_void,
16637        *mut ADRLIST,
16638    ) -> windows_core::HRESULT,
16639    pub WrapStoreEntryID: unsafe extern "system" fn(
16640        *mut core::ffi::c_void,
16641        u32,
16642        *mut ENTRYID,
16643        *mut u32,
16644        *mut *mut ENTRYID,
16645    ) -> windows_core::HRESULT,
16646    pub ModifyProfile:
16647        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
16648    pub IStorageFromStream: unsafe extern "system" fn(
16649        *mut core::ffi::c_void,
16650        *mut core::ffi::c_void,
16651        *mut windows_core::GUID,
16652        u32,
16653        *mut *mut core::ffi::c_void,
16654    ) -> windows_core::HRESULT,
16655    pub GetSvcConfigSupportObj: unsafe extern "system" fn(
16656        *mut core::ffi::c_void,
16657        u32,
16658        *mut *mut core::ffi::c_void,
16659    ) -> windows_core::HRESULT,
16660}
16661pub trait IMAPISupport_Impl: windows_core::IUnknownImpl {
16662    fn GetLastError(
16663        &self,
16664        hresult: windows_core::HRESULT,
16665        ulflags: u32,
16666        lppmapierror: *mut *mut MAPIERROR,
16667    ) -> windows_core::Result<()>;
16668    fn GetMemAllocRoutines(
16669        &self,
16670        lpallocatebuffer: *mut LPALLOCATEBUFFER,
16671        lpallocatemore: *mut LPALLOCATEMORE,
16672        lpfreebuffer: *mut LPFREEBUFFER,
16673    ) -> windows_core::Result<()>;
16674    fn Subscribe(
16675        &self,
16676        lpkey: *mut NOTIFKEY,
16677        uleventmask: u32,
16678        ulflags: u32,
16679        lpadvisesink: windows_core::Ref<IMAPIAdviseSink>,
16680        lpulconnection: *mut usize,
16681    ) -> windows_core::Result<()>;
16682    fn Unsubscribe(&self, ulconnection: usize) -> windows_core::Result<()>;
16683    fn Notify(
16684        &self,
16685        lpkey: *mut NOTIFKEY,
16686        cnotification: u32,
16687        lpnotifications: *mut NOTIFICATION,
16688        lpulflags: *mut u32,
16689    ) -> windows_core::Result<()>;
16690    fn ModifyStatusRow(
16691        &self,
16692        cvalues: u32,
16693        lpcolumnvals: *mut SPropValue,
16694        ulflags: u32,
16695    ) -> windows_core::Result<()>;
16696    fn OpenProfileSection(
16697        &self,
16698        lpuid: *mut MAPIUID,
16699        ulflags: u32,
16700        lppprofileobj: windows_core::OutRef<IProfSect>,
16701    ) -> windows_core::Result<()>;
16702    fn RegisterPreprocessor(
16703        &self,
16704        lpmuid: *mut MAPIUID,
16705        lpszadrtype: *mut i8,
16706        lpszdllname: *mut i8,
16707        lpszpreprocess: &windows_core::PCSTR,
16708        lpszremovepreprocessinfo: &windows_core::PCSTR,
16709        ulflags: u32,
16710    ) -> windows_core::Result<()>;
16711    fn NewUID(&self, lpmuid: *mut MAPIUID) -> windows_core::Result<()>;
16712    fn MakeInvalid(
16713        &self,
16714        ulflags: u32,
16715        lpobject: *mut core::ffi::c_void,
16716        ulrefcount: u32,
16717        cmethods: u32,
16718    ) -> windows_core::Result<()>;
16719    fn SpoolerYield(&self, ulflags: u32) -> windows_core::Result<()>;
16720    fn SpoolerNotify(
16721        &self,
16722        ulflags: u32,
16723        lpvdata: *mut core::ffi::c_void,
16724    ) -> windows_core::Result<()>;
16725    fn CreateOneOff(
16726        &self,
16727        lpszname: *mut i8,
16728        lpszadrtype: *mut i8,
16729        lpszaddress: *mut i8,
16730        ulflags: u32,
16731        lpcbentryid: *mut u32,
16732        lppentryid: *mut *mut ENTRYID,
16733    ) -> windows_core::Result<()>;
16734    fn SetProviderUID(&self, lpproviderid: *mut MAPIUID, ulflags: u32) -> windows_core::Result<()>;
16735    fn CompareEntryIDs(
16736        &self,
16737        cbentry1: u32,
16738        lpentry1: *mut ENTRYID,
16739        cbentry2: u32,
16740        lpentry2: *mut ENTRYID,
16741        ulcompareflags: u32,
16742        lpulresult: *mut u32,
16743    ) -> windows_core::Result<()>;
16744    fn OpenTemplateID(
16745        &self,
16746        cbtemplateid: u32,
16747        lptemplateid: *mut ENTRYID,
16748        ultemplateflags: u32,
16749        lpmapipropdata: windows_core::Ref<IMAPIProp>,
16750        lpinterface: *mut windows_core::GUID,
16751        lppmapipropnew: windows_core::OutRef<IMAPIProp>,
16752        lpmapipropsibling: windows_core::Ref<IMAPIProp>,
16753    ) -> windows_core::Result<()>;
16754    fn OpenEntry(
16755        &self,
16756        cbentryid: u32,
16757        lpentryid: *mut ENTRYID,
16758        lpinterface: *mut windows_core::GUID,
16759        ulopenflags: u32,
16760        lpulobjtype: *mut u32,
16761        lppunk: windows_core::OutRef<windows_core::IUnknown>,
16762    ) -> windows_core::Result<()>;
16763    fn GetOneOffTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
16764    fn Address(
16765        &self,
16766        lpuluiparam: *mut usize,
16767        lpadrparms: *mut ADRPARM,
16768        lppadrlist: *mut *mut ADRLIST,
16769    ) -> windows_core::Result<()>;
16770    fn Details(
16771        &self,
16772        lpuluiparam: *mut usize,
16773        lpfndismiss: LPFNDISMISS,
16774        lpvdismisscontext: *mut core::ffi::c_void,
16775        cbentryid: u32,
16776        lpentryid: *mut ENTRYID,
16777        lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
16778        lpvbuttoncontext: *mut core::ffi::c_void,
16779        lpszbuttontext: *mut i8,
16780        ulflags: u32,
16781    ) -> windows_core::Result<()>;
16782    fn NewEntry(
16783        &self,
16784        uluiparam: usize,
16785        ulflags: u32,
16786        cbeidcontainer: u32,
16787        lpeidcontainer: *mut ENTRYID,
16788        cbeidnewentrytpl: u32,
16789        lpeidnewentrytpl: *mut ENTRYID,
16790        lpcbeidnewentry: *mut u32,
16791        lppeidnewentry: *mut *mut ENTRYID,
16792    ) -> windows_core::Result<()>;
16793    fn DoConfigPropsheet(
16794        &self,
16795        uluiparam: usize,
16796        ulflags: u32,
16797        lpsztitle: *mut i8,
16798        lpdisplaytable: windows_core::Ref<IMAPITable>,
16799        lpconfigdata: windows_core::Ref<IMAPIProp>,
16800        ultoppage: u32,
16801    ) -> windows_core::Result<()>;
16802    fn CopyMessages(
16803        &self,
16804        lpsrcinterface: *mut windows_core::GUID,
16805        lpsrcfolder: *mut core::ffi::c_void,
16806        lpmsglist: *mut SBinaryArray,
16807        lpdestinterface: *mut windows_core::GUID,
16808        lpdestfolder: *mut core::ffi::c_void,
16809        uluiparam: usize,
16810        lpprogress: windows_core::Ref<IMAPIProgress>,
16811        ulflags: u32,
16812    ) -> windows_core::Result<()>;
16813    fn CopyFolder(
16814        &self,
16815        lpsrcinterface: *mut windows_core::GUID,
16816        lpsrcfolder: *mut core::ffi::c_void,
16817        cbentryid: u32,
16818        lpentryid: *mut ENTRYID,
16819        lpdestinterface: *mut windows_core::GUID,
16820        lpdestfolder: *mut core::ffi::c_void,
16821        lsznewfoldername: *mut i8,
16822        uluiparam: usize,
16823        lpprogress: windows_core::Ref<IMAPIProgress>,
16824        ulflags: u32,
16825    ) -> windows_core::Result<()>;
16826    fn DoCopyTo(
16827        &self,
16828        lpsrcinterface: *mut windows_core::GUID,
16829        lpsrcobj: *mut core::ffi::c_void,
16830        ciidexclude: u32,
16831        rgiidexclude: *mut windows_core::GUID,
16832        lpexcludeprops: *mut SPropTagArray,
16833        uluiparam: usize,
16834        lpprogress: windows_core::Ref<IMAPIProgress>,
16835        lpdestinterface: *mut windows_core::GUID,
16836        lpdestobj: *mut core::ffi::c_void,
16837        ulflags: u32,
16838        lppproblems: *mut *mut SPropProblemArray,
16839    ) -> windows_core::Result<()>;
16840    fn DoCopyProps(
16841        &self,
16842        lpsrcinterface: *mut windows_core::GUID,
16843        lpsrcobj: *mut core::ffi::c_void,
16844        lpincludeprops: *mut SPropTagArray,
16845        uluiparam: usize,
16846        lpprogress: windows_core::Ref<IMAPIProgress>,
16847        lpdestinterface: *mut windows_core::GUID,
16848        lpdestobj: *mut core::ffi::c_void,
16849        ulflags: u32,
16850        lppproblems: *mut *mut SPropProblemArray,
16851    ) -> windows_core::Result<()>;
16852    fn DoProgressDialog(
16853        &self,
16854        uluiparam: usize,
16855        ulflags: u32,
16856    ) -> windows_core::Result<IMAPIProgress>;
16857    fn ReadReceipt(
16858        &self,
16859        ulflags: u32,
16860        lpreadmessage: windows_core::Ref<IMessage>,
16861    ) -> windows_core::Result<IMessage>;
16862    fn PrepareSubmit(
16863        &self,
16864        lpmessage: windows_core::Ref<IMessage>,
16865        lpulflags: *mut u32,
16866    ) -> windows_core::Result<()>;
16867    fn ExpandRecips(
16868        &self,
16869        lpmessage: windows_core::Ref<IMessage>,
16870        lpulflags: *mut u32,
16871    ) -> windows_core::Result<()>;
16872    fn UpdatePAB(
16873        &self,
16874        ulflags: u32,
16875        lpmessage: windows_core::Ref<IMessage>,
16876    ) -> windows_core::Result<()>;
16877    fn DoSentMail(
16878        &self,
16879        ulflags: u32,
16880        lpmessage: windows_core::Ref<IMessage>,
16881    ) -> windows_core::Result<()>;
16882    fn OpenAddressBook(
16883        &self,
16884        lpinterface: *mut windows_core::GUID,
16885        ulflags: u32,
16886        lppadrbook: windows_core::OutRef<IAddrBook>,
16887    ) -> windows_core::Result<()>;
16888    fn Preprocess(
16889        &self,
16890        ulflags: u32,
16891        cbentryid: u32,
16892        lpentryid: *mut ENTRYID,
16893    ) -> windows_core::Result<()>;
16894    fn CompleteMsg(
16895        &self,
16896        ulflags: u32,
16897        cbentryid: u32,
16898        lpentryid: *mut ENTRYID,
16899    ) -> windows_core::Result<()>;
16900    fn StoreLogoffTransports(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
16901    fn StatusRecips(
16902        &self,
16903        lpmessage: windows_core::Ref<IMessage>,
16904        lpreciplist: *mut ADRLIST,
16905    ) -> windows_core::Result<()>;
16906    fn WrapStoreEntryID(
16907        &self,
16908        cborigentry: u32,
16909        lporigentry: *mut ENTRYID,
16910        lpcbwrappedentry: *mut u32,
16911        lppwrappedentry: *mut *mut ENTRYID,
16912    ) -> windows_core::Result<()>;
16913    fn ModifyProfile(&self, ulflags: u32) -> windows_core::Result<()>;
16914    fn IStorageFromStream(
16915        &self,
16916        lpunkin: windows_core::Ref<windows_core::IUnknown>,
16917        lpinterface: *mut windows_core::GUID,
16918        ulflags: u32,
16919        lppstorageout: windows_core::OutRef<
16920            windows::Win32::System::Com::StructuredStorage::IStorage,
16921        >,
16922    ) -> windows_core::Result<()>;
16923    fn GetSvcConfigSupportObj(&self, ulflags: u32) -> windows_core::Result<IMAPISupport>;
16924}
16925impl IMAPISupport_Vtbl {
16926    pub const fn new<Identity: IMAPISupport_Impl, const OFFSET: isize>() -> Self {
16927        unsafe extern "system" fn GetLastError<Identity: IMAPISupport_Impl, const OFFSET: isize>(
16928            this: *mut core::ffi::c_void,
16929            hresult: windows_core::HRESULT,
16930            ulflags: u32,
16931            lppmapierror: *mut *mut MAPIERROR,
16932        ) -> windows_core::HRESULT {
16933            unsafe {
16934                let this: &Identity =
16935                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16936                IMAPISupport_Impl::GetLastError(
16937                    this,
16938                    core::mem::transmute_copy(&hresult),
16939                    core::mem::transmute_copy(&ulflags),
16940                    core::mem::transmute_copy(&lppmapierror),
16941                )
16942                .into()
16943            }
16944        }
16945        unsafe extern "system" fn GetMemAllocRoutines<
16946            Identity: IMAPISupport_Impl,
16947            const OFFSET: isize,
16948        >(
16949            this: *mut core::ffi::c_void,
16950            lpallocatebuffer: *mut LPALLOCATEBUFFER,
16951            lpallocatemore: *mut LPALLOCATEMORE,
16952            lpfreebuffer: *mut LPFREEBUFFER,
16953        ) -> windows_core::HRESULT {
16954            unsafe {
16955                let this: &Identity =
16956                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16957                IMAPISupport_Impl::GetMemAllocRoutines(
16958                    this,
16959                    core::mem::transmute_copy(&lpallocatebuffer),
16960                    core::mem::transmute_copy(&lpallocatemore),
16961                    core::mem::transmute_copy(&lpfreebuffer),
16962                )
16963                .into()
16964            }
16965        }
16966        unsafe extern "system" fn Subscribe<Identity: IMAPISupport_Impl, const OFFSET: isize>(
16967            this: *mut core::ffi::c_void,
16968            lpkey: *mut NOTIFKEY,
16969            uleventmask: u32,
16970            ulflags: u32,
16971            lpadvisesink: *mut core::ffi::c_void,
16972            lpulconnection: *mut usize,
16973        ) -> windows_core::HRESULT {
16974            unsafe {
16975                let this: &Identity =
16976                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16977                IMAPISupport_Impl::Subscribe(
16978                    this,
16979                    core::mem::transmute_copy(&lpkey),
16980                    core::mem::transmute_copy(&uleventmask),
16981                    core::mem::transmute_copy(&ulflags),
16982                    core::mem::transmute_copy(&lpadvisesink),
16983                    core::mem::transmute_copy(&lpulconnection),
16984                )
16985                .into()
16986            }
16987        }
16988        unsafe extern "system" fn Unsubscribe<Identity: IMAPISupport_Impl, const OFFSET: isize>(
16989            this: *mut core::ffi::c_void,
16990            ulconnection: usize,
16991        ) -> windows_core::HRESULT {
16992            unsafe {
16993                let this: &Identity =
16994                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
16995                IMAPISupport_Impl::Unsubscribe(this, core::mem::transmute_copy(&ulconnection))
16996                    .into()
16997            }
16998        }
16999        unsafe extern "system" fn Notify<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17000            this: *mut core::ffi::c_void,
17001            lpkey: *mut NOTIFKEY,
17002            cnotification: u32,
17003            lpnotifications: *mut NOTIFICATION,
17004            lpulflags: *mut u32,
17005        ) -> windows_core::HRESULT {
17006            unsafe {
17007                let this: &Identity =
17008                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17009                IMAPISupport_Impl::Notify(
17010                    this,
17011                    core::mem::transmute_copy(&lpkey),
17012                    core::mem::transmute_copy(&cnotification),
17013                    core::mem::transmute_copy(&lpnotifications),
17014                    core::mem::transmute_copy(&lpulflags),
17015                )
17016                .into()
17017            }
17018        }
17019        unsafe extern "system" fn ModifyStatusRow<
17020            Identity: IMAPISupport_Impl,
17021            const OFFSET: isize,
17022        >(
17023            this: *mut core::ffi::c_void,
17024            cvalues: u32,
17025            lpcolumnvals: *mut SPropValue,
17026            ulflags: u32,
17027        ) -> windows_core::HRESULT {
17028            unsafe {
17029                let this: &Identity =
17030                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17031                IMAPISupport_Impl::ModifyStatusRow(
17032                    this,
17033                    core::mem::transmute_copy(&cvalues),
17034                    core::mem::transmute_copy(&lpcolumnvals),
17035                    core::mem::transmute_copy(&ulflags),
17036                )
17037                .into()
17038            }
17039        }
17040        unsafe extern "system" fn OpenProfileSection<
17041            Identity: IMAPISupport_Impl,
17042            const OFFSET: isize,
17043        >(
17044            this: *mut core::ffi::c_void,
17045            lpuid: *mut MAPIUID,
17046            ulflags: u32,
17047            lppprofileobj: *mut *mut core::ffi::c_void,
17048        ) -> windows_core::HRESULT {
17049            unsafe {
17050                let this: &Identity =
17051                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17052                IMAPISupport_Impl::OpenProfileSection(
17053                    this,
17054                    core::mem::transmute_copy(&lpuid),
17055                    core::mem::transmute_copy(&ulflags),
17056                    core::mem::transmute_copy(&lppprofileobj),
17057                )
17058                .into()
17059            }
17060        }
17061        unsafe extern "system" fn RegisterPreprocessor<
17062            Identity: IMAPISupport_Impl,
17063            const OFFSET: isize,
17064        >(
17065            this: *mut core::ffi::c_void,
17066            lpmuid: *mut MAPIUID,
17067            lpszadrtype: *mut i8,
17068            lpszdllname: *mut i8,
17069            lpszpreprocess: windows_core::PCSTR,
17070            lpszremovepreprocessinfo: windows_core::PCSTR,
17071            ulflags: u32,
17072        ) -> windows_core::HRESULT {
17073            unsafe {
17074                let this: &Identity =
17075                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17076                IMAPISupport_Impl::RegisterPreprocessor(
17077                    this,
17078                    core::mem::transmute_copy(&lpmuid),
17079                    core::mem::transmute_copy(&lpszadrtype),
17080                    core::mem::transmute_copy(&lpszdllname),
17081                    core::mem::transmute(&lpszpreprocess),
17082                    core::mem::transmute(&lpszremovepreprocessinfo),
17083                    core::mem::transmute_copy(&ulflags),
17084                )
17085                .into()
17086            }
17087        }
17088        unsafe extern "system" fn NewUID<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17089            this: *mut core::ffi::c_void,
17090            lpmuid: *mut MAPIUID,
17091        ) -> windows_core::HRESULT {
17092            unsafe {
17093                let this: &Identity =
17094                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17095                IMAPISupport_Impl::NewUID(this, core::mem::transmute_copy(&lpmuid)).into()
17096            }
17097        }
17098        unsafe extern "system" fn MakeInvalid<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17099            this: *mut core::ffi::c_void,
17100            ulflags: u32,
17101            lpobject: *mut core::ffi::c_void,
17102            ulrefcount: u32,
17103            cmethods: u32,
17104        ) -> windows_core::HRESULT {
17105            unsafe {
17106                let this: &Identity =
17107                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17108                IMAPISupport_Impl::MakeInvalid(
17109                    this,
17110                    core::mem::transmute_copy(&ulflags),
17111                    core::mem::transmute_copy(&lpobject),
17112                    core::mem::transmute_copy(&ulrefcount),
17113                    core::mem::transmute_copy(&cmethods),
17114                )
17115                .into()
17116            }
17117        }
17118        unsafe extern "system" fn SpoolerYield<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17119            this: *mut core::ffi::c_void,
17120            ulflags: u32,
17121        ) -> windows_core::HRESULT {
17122            unsafe {
17123                let this: &Identity =
17124                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17125                IMAPISupport_Impl::SpoolerYield(this, core::mem::transmute_copy(&ulflags)).into()
17126            }
17127        }
17128        unsafe extern "system" fn SpoolerNotify<
17129            Identity: IMAPISupport_Impl,
17130            const OFFSET: isize,
17131        >(
17132            this: *mut core::ffi::c_void,
17133            ulflags: u32,
17134            lpvdata: *mut core::ffi::c_void,
17135        ) -> windows_core::HRESULT {
17136            unsafe {
17137                let this: &Identity =
17138                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17139                IMAPISupport_Impl::SpoolerNotify(
17140                    this,
17141                    core::mem::transmute_copy(&ulflags),
17142                    core::mem::transmute_copy(&lpvdata),
17143                )
17144                .into()
17145            }
17146        }
17147        unsafe extern "system" fn CreateOneOff<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17148            this: *mut core::ffi::c_void,
17149            lpszname: *mut i8,
17150            lpszadrtype: *mut i8,
17151            lpszaddress: *mut i8,
17152            ulflags: u32,
17153            lpcbentryid: *mut u32,
17154            lppentryid: *mut *mut ENTRYID,
17155        ) -> windows_core::HRESULT {
17156            unsafe {
17157                let this: &Identity =
17158                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17159                IMAPISupport_Impl::CreateOneOff(
17160                    this,
17161                    core::mem::transmute_copy(&lpszname),
17162                    core::mem::transmute_copy(&lpszadrtype),
17163                    core::mem::transmute_copy(&lpszaddress),
17164                    core::mem::transmute_copy(&ulflags),
17165                    core::mem::transmute_copy(&lpcbentryid),
17166                    core::mem::transmute_copy(&lppentryid),
17167                )
17168                .into()
17169            }
17170        }
17171        unsafe extern "system" fn SetProviderUID<
17172            Identity: IMAPISupport_Impl,
17173            const OFFSET: isize,
17174        >(
17175            this: *mut core::ffi::c_void,
17176            lpproviderid: *mut MAPIUID,
17177            ulflags: u32,
17178        ) -> windows_core::HRESULT {
17179            unsafe {
17180                let this: &Identity =
17181                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17182                IMAPISupport_Impl::SetProviderUID(
17183                    this,
17184                    core::mem::transmute_copy(&lpproviderid),
17185                    core::mem::transmute_copy(&ulflags),
17186                )
17187                .into()
17188            }
17189        }
17190        unsafe extern "system" fn CompareEntryIDs<
17191            Identity: IMAPISupport_Impl,
17192            const OFFSET: isize,
17193        >(
17194            this: *mut core::ffi::c_void,
17195            cbentry1: u32,
17196            lpentry1: *mut ENTRYID,
17197            cbentry2: u32,
17198            lpentry2: *mut ENTRYID,
17199            ulcompareflags: u32,
17200            lpulresult: *mut u32,
17201        ) -> windows_core::HRESULT {
17202            unsafe {
17203                let this: &Identity =
17204                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17205                IMAPISupport_Impl::CompareEntryIDs(
17206                    this,
17207                    core::mem::transmute_copy(&cbentry1),
17208                    core::mem::transmute_copy(&lpentry1),
17209                    core::mem::transmute_copy(&cbentry2),
17210                    core::mem::transmute_copy(&lpentry2),
17211                    core::mem::transmute_copy(&ulcompareflags),
17212                    core::mem::transmute_copy(&lpulresult),
17213                )
17214                .into()
17215            }
17216        }
17217        unsafe extern "system" fn OpenTemplateID<
17218            Identity: IMAPISupport_Impl,
17219            const OFFSET: isize,
17220        >(
17221            this: *mut core::ffi::c_void,
17222            cbtemplateid: u32,
17223            lptemplateid: *mut ENTRYID,
17224            ultemplateflags: u32,
17225            lpmapipropdata: *mut core::ffi::c_void,
17226            lpinterface: *mut windows_core::GUID,
17227            lppmapipropnew: *mut *mut core::ffi::c_void,
17228            lpmapipropsibling: *mut core::ffi::c_void,
17229        ) -> windows_core::HRESULT {
17230            unsafe {
17231                let this: &Identity =
17232                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17233                IMAPISupport_Impl::OpenTemplateID(
17234                    this,
17235                    core::mem::transmute_copy(&cbtemplateid),
17236                    core::mem::transmute_copy(&lptemplateid),
17237                    core::mem::transmute_copy(&ultemplateflags),
17238                    core::mem::transmute_copy(&lpmapipropdata),
17239                    core::mem::transmute_copy(&lpinterface),
17240                    core::mem::transmute_copy(&lppmapipropnew),
17241                    core::mem::transmute_copy(&lpmapipropsibling),
17242                )
17243                .into()
17244            }
17245        }
17246        unsafe extern "system" fn OpenEntry<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17247            this: *mut core::ffi::c_void,
17248            cbentryid: u32,
17249            lpentryid: *mut ENTRYID,
17250            lpinterface: *mut windows_core::GUID,
17251            ulopenflags: u32,
17252            lpulobjtype: *mut u32,
17253            lppunk: *mut *mut core::ffi::c_void,
17254        ) -> windows_core::HRESULT {
17255            unsafe {
17256                let this: &Identity =
17257                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17258                IMAPISupport_Impl::OpenEntry(
17259                    this,
17260                    core::mem::transmute_copy(&cbentryid),
17261                    core::mem::transmute_copy(&lpentryid),
17262                    core::mem::transmute_copy(&lpinterface),
17263                    core::mem::transmute_copy(&ulopenflags),
17264                    core::mem::transmute_copy(&lpulobjtype),
17265                    core::mem::transmute_copy(&lppunk),
17266                )
17267                .into()
17268            }
17269        }
17270        unsafe extern "system" fn GetOneOffTable<
17271            Identity: IMAPISupport_Impl,
17272            const OFFSET: isize,
17273        >(
17274            this: *mut core::ffi::c_void,
17275            ulflags: u32,
17276            lpptable: *mut *mut core::ffi::c_void,
17277        ) -> windows_core::HRESULT {
17278            unsafe {
17279                let this: &Identity =
17280                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17281                match IMAPISupport_Impl::GetOneOffTable(this, core::mem::transmute_copy(&ulflags)) {
17282                    Ok(ok__) => {
17283                        lpptable.write(core::mem::transmute(ok__));
17284                        windows_core::HRESULT(0)
17285                    }
17286                    Err(err) => err.into(),
17287                }
17288            }
17289        }
17290        unsafe extern "system" fn Address<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17291            this: *mut core::ffi::c_void,
17292            lpuluiparam: *mut usize,
17293            lpadrparms: *mut ADRPARM,
17294            lppadrlist: *mut *mut ADRLIST,
17295        ) -> windows_core::HRESULT {
17296            unsafe {
17297                let this: &Identity =
17298                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17299                IMAPISupport_Impl::Address(
17300                    this,
17301                    core::mem::transmute_copy(&lpuluiparam),
17302                    core::mem::transmute_copy(&lpadrparms),
17303                    core::mem::transmute_copy(&lppadrlist),
17304                )
17305                .into()
17306            }
17307        }
17308        unsafe extern "system" fn Details<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17309            this: *mut core::ffi::c_void,
17310            lpuluiparam: *mut usize,
17311            lpfndismiss: LPFNDISMISS,
17312            lpvdismisscontext: *mut core::ffi::c_void,
17313            cbentryid: u32,
17314            lpentryid: *mut ENTRYID,
17315            lpfbuttoncallback: windows::Win32::System::AddressBook::LPFNBUTTON,
17316            lpvbuttoncontext: *mut core::ffi::c_void,
17317            lpszbuttontext: *mut i8,
17318            ulflags: u32,
17319        ) -> windows_core::HRESULT {
17320            unsafe {
17321                let this: &Identity =
17322                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17323                IMAPISupport_Impl::Details(
17324                    this,
17325                    core::mem::transmute_copy(&lpuluiparam),
17326                    core::mem::transmute_copy(&lpfndismiss),
17327                    core::mem::transmute_copy(&lpvdismisscontext),
17328                    core::mem::transmute_copy(&cbentryid),
17329                    core::mem::transmute_copy(&lpentryid),
17330                    core::mem::transmute_copy(&lpfbuttoncallback),
17331                    core::mem::transmute_copy(&lpvbuttoncontext),
17332                    core::mem::transmute_copy(&lpszbuttontext),
17333                    core::mem::transmute_copy(&ulflags),
17334                )
17335                .into()
17336            }
17337        }
17338        unsafe extern "system" fn NewEntry<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17339            this: *mut core::ffi::c_void,
17340            uluiparam: usize,
17341            ulflags: u32,
17342            cbeidcontainer: u32,
17343            lpeidcontainer: *mut ENTRYID,
17344            cbeidnewentrytpl: u32,
17345            lpeidnewentrytpl: *mut ENTRYID,
17346            lpcbeidnewentry: *mut u32,
17347            lppeidnewentry: *mut *mut ENTRYID,
17348        ) -> windows_core::HRESULT {
17349            unsafe {
17350                let this: &Identity =
17351                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17352                IMAPISupport_Impl::NewEntry(
17353                    this,
17354                    core::mem::transmute_copy(&uluiparam),
17355                    core::mem::transmute_copy(&ulflags),
17356                    core::mem::transmute_copy(&cbeidcontainer),
17357                    core::mem::transmute_copy(&lpeidcontainer),
17358                    core::mem::transmute_copy(&cbeidnewentrytpl),
17359                    core::mem::transmute_copy(&lpeidnewentrytpl),
17360                    core::mem::transmute_copy(&lpcbeidnewentry),
17361                    core::mem::transmute_copy(&lppeidnewentry),
17362                )
17363                .into()
17364            }
17365        }
17366        unsafe extern "system" fn DoConfigPropsheet<
17367            Identity: IMAPISupport_Impl,
17368            const OFFSET: isize,
17369        >(
17370            this: *mut core::ffi::c_void,
17371            uluiparam: usize,
17372            ulflags: u32,
17373            lpsztitle: *mut i8,
17374            lpdisplaytable: *mut core::ffi::c_void,
17375            lpconfigdata: *mut core::ffi::c_void,
17376            ultoppage: u32,
17377        ) -> windows_core::HRESULT {
17378            unsafe {
17379                let this: &Identity =
17380                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17381                IMAPISupport_Impl::DoConfigPropsheet(
17382                    this,
17383                    core::mem::transmute_copy(&uluiparam),
17384                    core::mem::transmute_copy(&ulflags),
17385                    core::mem::transmute_copy(&lpsztitle),
17386                    core::mem::transmute_copy(&lpdisplaytable),
17387                    core::mem::transmute_copy(&lpconfigdata),
17388                    core::mem::transmute_copy(&ultoppage),
17389                )
17390                .into()
17391            }
17392        }
17393        unsafe extern "system" fn CopyMessages<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17394            this: *mut core::ffi::c_void,
17395            lpsrcinterface: *mut windows_core::GUID,
17396            lpsrcfolder: *mut core::ffi::c_void,
17397            lpmsglist: *mut SBinaryArray,
17398            lpdestinterface: *mut windows_core::GUID,
17399            lpdestfolder: *mut core::ffi::c_void,
17400            uluiparam: usize,
17401            lpprogress: *mut core::ffi::c_void,
17402            ulflags: u32,
17403        ) -> windows_core::HRESULT {
17404            unsafe {
17405                let this: &Identity =
17406                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17407                IMAPISupport_Impl::CopyMessages(
17408                    this,
17409                    core::mem::transmute_copy(&lpsrcinterface),
17410                    core::mem::transmute_copy(&lpsrcfolder),
17411                    core::mem::transmute_copy(&lpmsglist),
17412                    core::mem::transmute_copy(&lpdestinterface),
17413                    core::mem::transmute_copy(&lpdestfolder),
17414                    core::mem::transmute_copy(&uluiparam),
17415                    core::mem::transmute_copy(&lpprogress),
17416                    core::mem::transmute_copy(&ulflags),
17417                )
17418                .into()
17419            }
17420        }
17421        unsafe extern "system" fn CopyFolder<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17422            this: *mut core::ffi::c_void,
17423            lpsrcinterface: *mut windows_core::GUID,
17424            lpsrcfolder: *mut core::ffi::c_void,
17425            cbentryid: u32,
17426            lpentryid: *mut ENTRYID,
17427            lpdestinterface: *mut windows_core::GUID,
17428            lpdestfolder: *mut core::ffi::c_void,
17429            lsznewfoldername: *mut i8,
17430            uluiparam: usize,
17431            lpprogress: *mut core::ffi::c_void,
17432            ulflags: u32,
17433        ) -> windows_core::HRESULT {
17434            unsafe {
17435                let this: &Identity =
17436                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17437                IMAPISupport_Impl::CopyFolder(
17438                    this,
17439                    core::mem::transmute_copy(&lpsrcinterface),
17440                    core::mem::transmute_copy(&lpsrcfolder),
17441                    core::mem::transmute_copy(&cbentryid),
17442                    core::mem::transmute_copy(&lpentryid),
17443                    core::mem::transmute_copy(&lpdestinterface),
17444                    core::mem::transmute_copy(&lpdestfolder),
17445                    core::mem::transmute_copy(&lsznewfoldername),
17446                    core::mem::transmute_copy(&uluiparam),
17447                    core::mem::transmute_copy(&lpprogress),
17448                    core::mem::transmute_copy(&ulflags),
17449                )
17450                .into()
17451            }
17452        }
17453        unsafe extern "system" fn DoCopyTo<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17454            this: *mut core::ffi::c_void,
17455            lpsrcinterface: *mut windows_core::GUID,
17456            lpsrcobj: *mut core::ffi::c_void,
17457            ciidexclude: u32,
17458            rgiidexclude: *mut windows_core::GUID,
17459            lpexcludeprops: *mut SPropTagArray,
17460            uluiparam: usize,
17461            lpprogress: *mut core::ffi::c_void,
17462            lpdestinterface: *mut windows_core::GUID,
17463            lpdestobj: *mut core::ffi::c_void,
17464            ulflags: u32,
17465            lppproblems: *mut *mut SPropProblemArray,
17466        ) -> windows_core::HRESULT {
17467            unsafe {
17468                let this: &Identity =
17469                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17470                IMAPISupport_Impl::DoCopyTo(
17471                    this,
17472                    core::mem::transmute_copy(&lpsrcinterface),
17473                    core::mem::transmute_copy(&lpsrcobj),
17474                    core::mem::transmute_copy(&ciidexclude),
17475                    core::mem::transmute_copy(&rgiidexclude),
17476                    core::mem::transmute_copy(&lpexcludeprops),
17477                    core::mem::transmute_copy(&uluiparam),
17478                    core::mem::transmute_copy(&lpprogress),
17479                    core::mem::transmute_copy(&lpdestinterface),
17480                    core::mem::transmute_copy(&lpdestobj),
17481                    core::mem::transmute_copy(&ulflags),
17482                    core::mem::transmute_copy(&lppproblems),
17483                )
17484                .into()
17485            }
17486        }
17487        unsafe extern "system" fn DoCopyProps<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17488            this: *mut core::ffi::c_void,
17489            lpsrcinterface: *mut windows_core::GUID,
17490            lpsrcobj: *mut core::ffi::c_void,
17491            lpincludeprops: *mut SPropTagArray,
17492            uluiparam: usize,
17493            lpprogress: *mut core::ffi::c_void,
17494            lpdestinterface: *mut windows_core::GUID,
17495            lpdestobj: *mut core::ffi::c_void,
17496            ulflags: u32,
17497            lppproblems: *mut *mut SPropProblemArray,
17498        ) -> windows_core::HRESULT {
17499            unsafe {
17500                let this: &Identity =
17501                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17502                IMAPISupport_Impl::DoCopyProps(
17503                    this,
17504                    core::mem::transmute_copy(&lpsrcinterface),
17505                    core::mem::transmute_copy(&lpsrcobj),
17506                    core::mem::transmute_copy(&lpincludeprops),
17507                    core::mem::transmute_copy(&uluiparam),
17508                    core::mem::transmute_copy(&lpprogress),
17509                    core::mem::transmute_copy(&lpdestinterface),
17510                    core::mem::transmute_copy(&lpdestobj),
17511                    core::mem::transmute_copy(&ulflags),
17512                    core::mem::transmute_copy(&lppproblems),
17513                )
17514                .into()
17515            }
17516        }
17517        unsafe extern "system" fn DoProgressDialog<
17518            Identity: IMAPISupport_Impl,
17519            const OFFSET: isize,
17520        >(
17521            this: *mut core::ffi::c_void,
17522            uluiparam: usize,
17523            ulflags: u32,
17524            lppprogress: *mut *mut core::ffi::c_void,
17525        ) -> windows_core::HRESULT {
17526            unsafe {
17527                let this: &Identity =
17528                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17529                match IMAPISupport_Impl::DoProgressDialog(
17530                    this,
17531                    core::mem::transmute_copy(&uluiparam),
17532                    core::mem::transmute_copy(&ulflags),
17533                ) {
17534                    Ok(ok__) => {
17535                        lppprogress.write(core::mem::transmute(ok__));
17536                        windows_core::HRESULT(0)
17537                    }
17538                    Err(err) => err.into(),
17539                }
17540            }
17541        }
17542        unsafe extern "system" fn ReadReceipt<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17543            this: *mut core::ffi::c_void,
17544            ulflags: u32,
17545            lpreadmessage: *mut core::ffi::c_void,
17546            lppemptymessage: *mut *mut core::ffi::c_void,
17547        ) -> windows_core::HRESULT {
17548            unsafe {
17549                let this: &Identity =
17550                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17551                match IMAPISupport_Impl::ReadReceipt(
17552                    this,
17553                    core::mem::transmute_copy(&ulflags),
17554                    core::mem::transmute_copy(&lpreadmessage),
17555                ) {
17556                    Ok(ok__) => {
17557                        lppemptymessage.write(core::mem::transmute(ok__));
17558                        windows_core::HRESULT(0)
17559                    }
17560                    Err(err) => err.into(),
17561                }
17562            }
17563        }
17564        unsafe extern "system" fn PrepareSubmit<
17565            Identity: IMAPISupport_Impl,
17566            const OFFSET: isize,
17567        >(
17568            this: *mut core::ffi::c_void,
17569            lpmessage: *mut core::ffi::c_void,
17570            lpulflags: *mut u32,
17571        ) -> windows_core::HRESULT {
17572            unsafe {
17573                let this: &Identity =
17574                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17575                IMAPISupport_Impl::PrepareSubmit(
17576                    this,
17577                    core::mem::transmute_copy(&lpmessage),
17578                    core::mem::transmute_copy(&lpulflags),
17579                )
17580                .into()
17581            }
17582        }
17583        unsafe extern "system" fn ExpandRecips<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17584            this: *mut core::ffi::c_void,
17585            lpmessage: *mut core::ffi::c_void,
17586            lpulflags: *mut u32,
17587        ) -> windows_core::HRESULT {
17588            unsafe {
17589                let this: &Identity =
17590                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17591                IMAPISupport_Impl::ExpandRecips(
17592                    this,
17593                    core::mem::transmute_copy(&lpmessage),
17594                    core::mem::transmute_copy(&lpulflags),
17595                )
17596                .into()
17597            }
17598        }
17599        unsafe extern "system" fn UpdatePAB<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17600            this: *mut core::ffi::c_void,
17601            ulflags: u32,
17602            lpmessage: *mut core::ffi::c_void,
17603        ) -> windows_core::HRESULT {
17604            unsafe {
17605                let this: &Identity =
17606                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17607                IMAPISupport_Impl::UpdatePAB(
17608                    this,
17609                    core::mem::transmute_copy(&ulflags),
17610                    core::mem::transmute_copy(&lpmessage),
17611                )
17612                .into()
17613            }
17614        }
17615        unsafe extern "system" fn DoSentMail<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17616            this: *mut core::ffi::c_void,
17617            ulflags: u32,
17618            lpmessage: *mut core::ffi::c_void,
17619        ) -> windows_core::HRESULT {
17620            unsafe {
17621                let this: &Identity =
17622                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17623                IMAPISupport_Impl::DoSentMail(
17624                    this,
17625                    core::mem::transmute_copy(&ulflags),
17626                    core::mem::transmute_copy(&lpmessage),
17627                )
17628                .into()
17629            }
17630        }
17631        unsafe extern "system" fn OpenAddressBook<
17632            Identity: IMAPISupport_Impl,
17633            const OFFSET: isize,
17634        >(
17635            this: *mut core::ffi::c_void,
17636            lpinterface: *mut windows_core::GUID,
17637            ulflags: u32,
17638            lppadrbook: *mut *mut core::ffi::c_void,
17639        ) -> windows_core::HRESULT {
17640            unsafe {
17641                let this: &Identity =
17642                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17643                IMAPISupport_Impl::OpenAddressBook(
17644                    this,
17645                    core::mem::transmute_copy(&lpinterface),
17646                    core::mem::transmute_copy(&ulflags),
17647                    core::mem::transmute_copy(&lppadrbook),
17648                )
17649                .into()
17650            }
17651        }
17652        unsafe extern "system" fn Preprocess<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17653            this: *mut core::ffi::c_void,
17654            ulflags: u32,
17655            cbentryid: u32,
17656            lpentryid: *mut ENTRYID,
17657        ) -> windows_core::HRESULT {
17658            unsafe {
17659                let this: &Identity =
17660                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17661                IMAPISupport_Impl::Preprocess(
17662                    this,
17663                    core::mem::transmute_copy(&ulflags),
17664                    core::mem::transmute_copy(&cbentryid),
17665                    core::mem::transmute_copy(&lpentryid),
17666                )
17667                .into()
17668            }
17669        }
17670        unsafe extern "system" fn CompleteMsg<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17671            this: *mut core::ffi::c_void,
17672            ulflags: u32,
17673            cbentryid: u32,
17674            lpentryid: *mut ENTRYID,
17675        ) -> windows_core::HRESULT {
17676            unsafe {
17677                let this: &Identity =
17678                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17679                IMAPISupport_Impl::CompleteMsg(
17680                    this,
17681                    core::mem::transmute_copy(&ulflags),
17682                    core::mem::transmute_copy(&cbentryid),
17683                    core::mem::transmute_copy(&lpentryid),
17684                )
17685                .into()
17686            }
17687        }
17688        unsafe extern "system" fn StoreLogoffTransports<
17689            Identity: IMAPISupport_Impl,
17690            const OFFSET: isize,
17691        >(
17692            this: *mut core::ffi::c_void,
17693            lpulflags: *mut u32,
17694        ) -> windows_core::HRESULT {
17695            unsafe {
17696                let this: &Identity =
17697                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17698                IMAPISupport_Impl::StoreLogoffTransports(
17699                    this,
17700                    core::mem::transmute_copy(&lpulflags),
17701                )
17702                .into()
17703            }
17704        }
17705        unsafe extern "system" fn StatusRecips<Identity: IMAPISupport_Impl, const OFFSET: isize>(
17706            this: *mut core::ffi::c_void,
17707            lpmessage: *mut core::ffi::c_void,
17708            lpreciplist: *mut ADRLIST,
17709        ) -> windows_core::HRESULT {
17710            unsafe {
17711                let this: &Identity =
17712                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17713                IMAPISupport_Impl::StatusRecips(
17714                    this,
17715                    core::mem::transmute_copy(&lpmessage),
17716                    core::mem::transmute_copy(&lpreciplist),
17717                )
17718                .into()
17719            }
17720        }
17721        unsafe extern "system" fn WrapStoreEntryID<
17722            Identity: IMAPISupport_Impl,
17723            const OFFSET: isize,
17724        >(
17725            this: *mut core::ffi::c_void,
17726            cborigentry: u32,
17727            lporigentry: *mut ENTRYID,
17728            lpcbwrappedentry: *mut u32,
17729            lppwrappedentry: *mut *mut ENTRYID,
17730        ) -> windows_core::HRESULT {
17731            unsafe {
17732                let this: &Identity =
17733                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17734                IMAPISupport_Impl::WrapStoreEntryID(
17735                    this,
17736                    core::mem::transmute_copy(&cborigentry),
17737                    core::mem::transmute_copy(&lporigentry),
17738                    core::mem::transmute_copy(&lpcbwrappedentry),
17739                    core::mem::transmute_copy(&lppwrappedentry),
17740                )
17741                .into()
17742            }
17743        }
17744        unsafe extern "system" fn ModifyProfile<
17745            Identity: IMAPISupport_Impl,
17746            const OFFSET: isize,
17747        >(
17748            this: *mut core::ffi::c_void,
17749            ulflags: u32,
17750        ) -> windows_core::HRESULT {
17751            unsafe {
17752                let this: &Identity =
17753                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17754                IMAPISupport_Impl::ModifyProfile(this, core::mem::transmute_copy(&ulflags)).into()
17755            }
17756        }
17757        unsafe extern "system" fn IStorageFromStream<
17758            Identity: IMAPISupport_Impl,
17759            const OFFSET: isize,
17760        >(
17761            this: *mut core::ffi::c_void,
17762            lpunkin: *mut core::ffi::c_void,
17763            lpinterface: *mut windows_core::GUID,
17764            ulflags: u32,
17765            lppstorageout: *mut *mut core::ffi::c_void,
17766        ) -> windows_core::HRESULT {
17767            unsafe {
17768                let this: &Identity =
17769                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17770                IMAPISupport_Impl::IStorageFromStream(
17771                    this,
17772                    core::mem::transmute_copy(&lpunkin),
17773                    core::mem::transmute_copy(&lpinterface),
17774                    core::mem::transmute_copy(&ulflags),
17775                    core::mem::transmute_copy(&lppstorageout),
17776                )
17777                .into()
17778            }
17779        }
17780        unsafe extern "system" fn GetSvcConfigSupportObj<
17781            Identity: IMAPISupport_Impl,
17782            const OFFSET: isize,
17783        >(
17784            this: *mut core::ffi::c_void,
17785            ulflags: u32,
17786            lppsvcsupport: *mut *mut core::ffi::c_void,
17787        ) -> windows_core::HRESULT {
17788            unsafe {
17789                let this: &Identity =
17790                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
17791                match IMAPISupport_Impl::GetSvcConfigSupportObj(
17792                    this,
17793                    core::mem::transmute_copy(&ulflags),
17794                ) {
17795                    Ok(ok__) => {
17796                        lppsvcsupport.write(core::mem::transmute(ok__));
17797                        windows_core::HRESULT(0)
17798                    }
17799                    Err(err) => err.into(),
17800                }
17801            }
17802        }
17803        Self {
17804            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
17805            GetLastError: GetLastError::<Identity, OFFSET>,
17806            GetMemAllocRoutines: GetMemAllocRoutines::<Identity, OFFSET>,
17807            Subscribe: Subscribe::<Identity, OFFSET>,
17808            Unsubscribe: Unsubscribe::<Identity, OFFSET>,
17809            Notify: Notify::<Identity, OFFSET>,
17810            ModifyStatusRow: ModifyStatusRow::<Identity, OFFSET>,
17811            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
17812            RegisterPreprocessor: RegisterPreprocessor::<Identity, OFFSET>,
17813            NewUID: NewUID::<Identity, OFFSET>,
17814            MakeInvalid: MakeInvalid::<Identity, OFFSET>,
17815            SpoolerYield: SpoolerYield::<Identity, OFFSET>,
17816            SpoolerNotify: SpoolerNotify::<Identity, OFFSET>,
17817            CreateOneOff: CreateOneOff::<Identity, OFFSET>,
17818            SetProviderUID: SetProviderUID::<Identity, OFFSET>,
17819            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
17820            OpenTemplateID: OpenTemplateID::<Identity, OFFSET>,
17821            OpenEntry: OpenEntry::<Identity, OFFSET>,
17822            GetOneOffTable: GetOneOffTable::<Identity, OFFSET>,
17823            Address: Address::<Identity, OFFSET>,
17824            Details: Details::<Identity, OFFSET>,
17825            NewEntry: NewEntry::<Identity, OFFSET>,
17826            DoConfigPropsheet: DoConfigPropsheet::<Identity, OFFSET>,
17827            CopyMessages: CopyMessages::<Identity, OFFSET>,
17828            CopyFolder: CopyFolder::<Identity, OFFSET>,
17829            DoCopyTo: DoCopyTo::<Identity, OFFSET>,
17830            DoCopyProps: DoCopyProps::<Identity, OFFSET>,
17831            DoProgressDialog: DoProgressDialog::<Identity, OFFSET>,
17832            ReadReceipt: ReadReceipt::<Identity, OFFSET>,
17833            PrepareSubmit: PrepareSubmit::<Identity, OFFSET>,
17834            ExpandRecips: ExpandRecips::<Identity, OFFSET>,
17835            UpdatePAB: UpdatePAB::<Identity, OFFSET>,
17836            DoSentMail: DoSentMail::<Identity, OFFSET>,
17837            OpenAddressBook: OpenAddressBook::<Identity, OFFSET>,
17838            Preprocess: Preprocess::<Identity, OFFSET>,
17839            CompleteMsg: CompleteMsg::<Identity, OFFSET>,
17840            StoreLogoffTransports: StoreLogoffTransports::<Identity, OFFSET>,
17841            StatusRecips: StatusRecips::<Identity, OFFSET>,
17842            WrapStoreEntryID: WrapStoreEntryID::<Identity, OFFSET>,
17843            ModifyProfile: ModifyProfile::<Identity, OFFSET>,
17844            IStorageFromStream: IStorageFromStream::<Identity, OFFSET>,
17845            GetSvcConfigSupportObj: GetSvcConfigSupportObj::<Identity, OFFSET>,
17846        }
17847    }
17848    pub fn matches(iid: &windows_core::GUID) -> bool {
17849        iid == &<IMAPISupport as windows_core::Interface>::IID
17850    }
17851}
17852impl windows_core::RuntimeName for IMAPISupport {}
17853windows_core::imp::define_interface!(
17854    IMAPITable,
17855    IMAPITable_Vtbl,
17856    0x00020301_0000_0000_c000_000000000046
17857);
17858windows_core::imp::interface_hierarchy!(IMAPITable, windows_core::IUnknown);
17859impl IMAPITable {
17860    pub unsafe fn GetLastError(
17861        &self,
17862        hresult: windows_core::HRESULT,
17863        ulflags: u32,
17864        lppmapierror: *mut *mut MAPIERROR,
17865    ) -> windows_core::Result<()> {
17866        unsafe {
17867            (windows_core::Interface::vtable(self).GetLastError)(
17868                windows_core::Interface::as_raw(self),
17869                hresult,
17870                ulflags,
17871                lppmapierror as _,
17872            )
17873            .ok()
17874        }
17875    }
17876    pub unsafe fn Advise<P1>(
17877        &self,
17878        uleventmask: u32,
17879        lpadvisesink: P1,
17880        lpulconnection: *mut usize,
17881    ) -> windows_core::Result<()>
17882    where
17883        P1: windows_core::Param<IMAPIAdviseSink>,
17884    {
17885        unsafe {
17886            (windows_core::Interface::vtable(self).Advise)(
17887                windows_core::Interface::as_raw(self),
17888                uleventmask,
17889                lpadvisesink.param().abi(),
17890                lpulconnection as _,
17891            )
17892            .ok()
17893        }
17894    }
17895    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
17896        unsafe {
17897            (windows_core::Interface::vtable(self).Unadvise)(
17898                windows_core::Interface::as_raw(self),
17899                ulconnection,
17900            )
17901            .ok()
17902        }
17903    }
17904    pub unsafe fn GetStatus(
17905        &self,
17906        lpultablestatus: *mut u32,
17907        lpultabletype: *mut u32,
17908    ) -> windows_core::Result<()> {
17909        unsafe {
17910            (windows_core::Interface::vtable(self).GetStatus)(
17911                windows_core::Interface::as_raw(self),
17912                lpultablestatus as _,
17913                lpultabletype as _,
17914            )
17915            .ok()
17916        }
17917    }
17918    pub unsafe fn SetColumns(
17919        &self,
17920        lpproptagarray: *mut SPropTagArray,
17921        ulflags: u32,
17922    ) -> windows_core::Result<()> {
17923        unsafe {
17924            (windows_core::Interface::vtable(self).SetColumns)(
17925                windows_core::Interface::as_raw(self),
17926                lpproptagarray as _,
17927                ulflags,
17928            )
17929            .ok()
17930        }
17931    }
17932    pub unsafe fn QueryColumns(
17933        &self,
17934        ulflags: u32,
17935        lpproptagarray: *mut *mut SPropTagArray,
17936    ) -> windows_core::Result<()> {
17937        unsafe {
17938            (windows_core::Interface::vtable(self).QueryColumns)(
17939                windows_core::Interface::as_raw(self),
17940                ulflags,
17941                lpproptagarray as _,
17942            )
17943            .ok()
17944        }
17945    }
17946    pub unsafe fn GetRowCount(
17947        &self,
17948        ulflags: u32,
17949        lpulcount: *mut u32,
17950    ) -> windows_core::Result<()> {
17951        unsafe {
17952            (windows_core::Interface::vtable(self).GetRowCount)(
17953                windows_core::Interface::as_raw(self),
17954                ulflags,
17955                lpulcount as _,
17956            )
17957            .ok()
17958        }
17959    }
17960    pub unsafe fn SeekRow(
17961        &self,
17962        bkorigin: usize,
17963        lrowcount: i32,
17964        lplrowssought: *mut i32,
17965    ) -> windows_core::Result<()> {
17966        unsafe {
17967            (windows_core::Interface::vtable(self).SeekRow)(
17968                windows_core::Interface::as_raw(self),
17969                bkorigin,
17970                lrowcount,
17971                lplrowssought as _,
17972            )
17973            .ok()
17974        }
17975    }
17976    pub unsafe fn SeekRowApprox(
17977        &self,
17978        ulnumerator: u32,
17979        uldenominator: u32,
17980    ) -> windows_core::Result<()> {
17981        unsafe {
17982            (windows_core::Interface::vtable(self).SeekRowApprox)(
17983                windows_core::Interface::as_raw(self),
17984                ulnumerator,
17985                uldenominator,
17986            )
17987            .ok()
17988        }
17989    }
17990    pub unsafe fn QueryPosition(
17991        &self,
17992        lpulrow: *mut u32,
17993        lpulnumerator: *mut u32,
17994        lpuldenominator: *mut u32,
17995    ) -> windows_core::Result<()> {
17996        unsafe {
17997            (windows_core::Interface::vtable(self).QueryPosition)(
17998                windows_core::Interface::as_raw(self),
17999                lpulrow as _,
18000                lpulnumerator as _,
18001                lpuldenominator as _,
18002            )
18003            .ok()
18004        }
18005    }
18006    pub unsafe fn FindRow(
18007        &self,
18008        lprestriction: *mut SRestriction,
18009        bkorigin: usize,
18010        ulflags: u32,
18011    ) -> windows_core::Result<()> {
18012        unsafe {
18013            (windows_core::Interface::vtable(self).FindRow)(
18014                windows_core::Interface::as_raw(self),
18015                lprestriction as _,
18016                bkorigin,
18017                ulflags,
18018            )
18019            .ok()
18020        }
18021    }
18022    pub unsafe fn Restrict(
18023        &self,
18024        lprestriction: *mut SRestriction,
18025        ulflags: u32,
18026    ) -> windows_core::Result<()> {
18027        unsafe {
18028            (windows_core::Interface::vtable(self).Restrict)(
18029                windows_core::Interface::as_raw(self),
18030                lprestriction as _,
18031                ulflags,
18032            )
18033            .ok()
18034        }
18035    }
18036    pub unsafe fn CreateBookmark(&self, lpbkposition: *mut usize) -> windows_core::Result<()> {
18037        unsafe {
18038            (windows_core::Interface::vtable(self).CreateBookmark)(
18039                windows_core::Interface::as_raw(self),
18040                lpbkposition as _,
18041            )
18042            .ok()
18043        }
18044    }
18045    pub unsafe fn FreeBookmark(&self, bkposition: usize) -> windows_core::Result<()> {
18046        unsafe {
18047            (windows_core::Interface::vtable(self).FreeBookmark)(
18048                windows_core::Interface::as_raw(self),
18049                bkposition,
18050            )
18051            .ok()
18052        }
18053    }
18054    pub unsafe fn SortTable(
18055        &self,
18056        lpsortcriteria: *mut SSortOrderSet,
18057        ulflags: u32,
18058    ) -> windows_core::Result<()> {
18059        unsafe {
18060            (windows_core::Interface::vtable(self).SortTable)(
18061                windows_core::Interface::as_raw(self),
18062                lpsortcriteria as _,
18063                ulflags,
18064            )
18065            .ok()
18066        }
18067    }
18068    pub unsafe fn QuerySortOrder(
18069        &self,
18070        lppsortcriteria: *mut *mut SSortOrderSet,
18071    ) -> windows_core::Result<()> {
18072        unsafe {
18073            (windows_core::Interface::vtable(self).QuerySortOrder)(
18074                windows_core::Interface::as_raw(self),
18075                lppsortcriteria as _,
18076            )
18077            .ok()
18078        }
18079    }
18080    pub unsafe fn QueryRows(
18081        &self,
18082        lrowcount: i32,
18083        ulflags: u32,
18084        lpprows: *mut *mut SRowSet,
18085    ) -> windows_core::Result<()> {
18086        unsafe {
18087            (windows_core::Interface::vtable(self).QueryRows)(
18088                windows_core::Interface::as_raw(self),
18089                lrowcount,
18090                ulflags,
18091                lpprows as _,
18092            )
18093            .ok()
18094        }
18095    }
18096    pub unsafe fn Abort(&self) -> windows_core::Result<()> {
18097        unsafe {
18098            (windows_core::Interface::vtable(self).Abort)(windows_core::Interface::as_raw(self))
18099                .ok()
18100        }
18101    }
18102    pub unsafe fn ExpandRow(
18103        &self,
18104        cbinstancekey: u32,
18105        pbinstancekey: *mut u8,
18106        ulrowcount: u32,
18107        ulflags: u32,
18108        lpprows: *mut *mut SRowSet,
18109        lpulmorerows: *mut u32,
18110    ) -> windows_core::Result<()> {
18111        unsafe {
18112            (windows_core::Interface::vtable(self).ExpandRow)(
18113                windows_core::Interface::as_raw(self),
18114                cbinstancekey,
18115                pbinstancekey as _,
18116                ulrowcount,
18117                ulflags,
18118                lpprows as _,
18119                lpulmorerows as _,
18120            )
18121            .ok()
18122        }
18123    }
18124    pub unsafe fn CollapseRow(
18125        &self,
18126        cbinstancekey: u32,
18127        pbinstancekey: *mut u8,
18128        ulflags: u32,
18129        lpulrowcount: *mut u32,
18130    ) -> windows_core::Result<()> {
18131        unsafe {
18132            (windows_core::Interface::vtable(self).CollapseRow)(
18133                windows_core::Interface::as_raw(self),
18134                cbinstancekey,
18135                pbinstancekey as _,
18136                ulflags,
18137                lpulrowcount as _,
18138            )
18139            .ok()
18140        }
18141    }
18142    pub unsafe fn WaitForCompletion(
18143        &self,
18144        ulflags: u32,
18145        ultimeout: u32,
18146        lpultablestatus: *mut u32,
18147    ) -> windows_core::Result<()> {
18148        unsafe {
18149            (windows_core::Interface::vtable(self).WaitForCompletion)(
18150                windows_core::Interface::as_raw(self),
18151                ulflags,
18152                ultimeout,
18153                lpultablestatus as _,
18154            )
18155            .ok()
18156        }
18157    }
18158    pub unsafe fn GetCollapseState(
18159        &self,
18160        ulflags: u32,
18161        cbinstancekey: u32,
18162        lpbinstancekey: *mut u8,
18163        lpcbcollapsestate: *mut u32,
18164        lppbcollapsestate: *mut *mut u8,
18165    ) -> windows_core::Result<()> {
18166        unsafe {
18167            (windows_core::Interface::vtable(self).GetCollapseState)(
18168                windows_core::Interface::as_raw(self),
18169                ulflags,
18170                cbinstancekey,
18171                lpbinstancekey as _,
18172                lpcbcollapsestate as _,
18173                lppbcollapsestate as _,
18174            )
18175            .ok()
18176        }
18177    }
18178    pub unsafe fn SetCollapseState(
18179        &self,
18180        ulflags: u32,
18181        pbcollapsestate: &mut [u8],
18182        lpbklocation: *mut usize,
18183    ) -> windows_core::Result<()> {
18184        unsafe {
18185            (windows_core::Interface::vtable(self).SetCollapseState)(
18186                windows_core::Interface::as_raw(self),
18187                ulflags,
18188                pbcollapsestate.len().try_into().unwrap(),
18189                core::mem::transmute(pbcollapsestate.as_ptr()),
18190                lpbklocation as _,
18191            )
18192            .ok()
18193        }
18194    }
18195}
18196#[repr(C)]
18197#[doc(hidden)]
18198pub struct IMAPITable_Vtbl {
18199    pub base__: windows_core::IUnknown_Vtbl,
18200    pub GetLastError: unsafe extern "system" fn(
18201        *mut core::ffi::c_void,
18202        windows_core::HRESULT,
18203        u32,
18204        *mut *mut MAPIERROR,
18205    ) -> windows_core::HRESULT,
18206    pub Advise: unsafe extern "system" fn(
18207        *mut core::ffi::c_void,
18208        u32,
18209        *mut core::ffi::c_void,
18210        *mut usize,
18211    ) -> windows_core::HRESULT,
18212    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
18213    pub GetStatus: unsafe extern "system" fn(
18214        *mut core::ffi::c_void,
18215        *mut u32,
18216        *mut u32,
18217    ) -> windows_core::HRESULT,
18218    pub SetColumns: unsafe extern "system" fn(
18219        *mut core::ffi::c_void,
18220        *mut SPropTagArray,
18221        u32,
18222    ) -> windows_core::HRESULT,
18223    pub QueryColumns: unsafe extern "system" fn(
18224        *mut core::ffi::c_void,
18225        u32,
18226        *mut *mut SPropTagArray,
18227    ) -> windows_core::HRESULT,
18228    pub GetRowCount:
18229        unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
18230    pub SeekRow: unsafe extern "system" fn(
18231        *mut core::ffi::c_void,
18232        usize,
18233        i32,
18234        *mut i32,
18235    ) -> windows_core::HRESULT,
18236    pub SeekRowApprox:
18237        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
18238    pub QueryPosition: unsafe extern "system" fn(
18239        *mut core::ffi::c_void,
18240        *mut u32,
18241        *mut u32,
18242        *mut u32,
18243    ) -> windows_core::HRESULT,
18244    pub FindRow: unsafe extern "system" fn(
18245        *mut core::ffi::c_void,
18246        *mut SRestriction,
18247        usize,
18248        u32,
18249    ) -> windows_core::HRESULT,
18250    pub Restrict: unsafe extern "system" fn(
18251        *mut core::ffi::c_void,
18252        *mut SRestriction,
18253        u32,
18254    ) -> windows_core::HRESULT,
18255    pub CreateBookmark:
18256        unsafe extern "system" fn(*mut core::ffi::c_void, *mut usize) -> windows_core::HRESULT,
18257    pub FreeBookmark:
18258        unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
18259    pub SortTable: unsafe extern "system" fn(
18260        *mut core::ffi::c_void,
18261        *mut SSortOrderSet,
18262        u32,
18263    ) -> windows_core::HRESULT,
18264    pub QuerySortOrder: unsafe extern "system" fn(
18265        *mut core::ffi::c_void,
18266        *mut *mut SSortOrderSet,
18267    ) -> windows_core::HRESULT,
18268    pub QueryRows: unsafe extern "system" fn(
18269        *mut core::ffi::c_void,
18270        i32,
18271        u32,
18272        *mut *mut SRowSet,
18273    ) -> windows_core::HRESULT,
18274    pub Abort: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18275    pub ExpandRow: unsafe extern "system" fn(
18276        *mut core::ffi::c_void,
18277        u32,
18278        *mut u8,
18279        u32,
18280        u32,
18281        *mut *mut SRowSet,
18282        *mut u32,
18283    ) -> windows_core::HRESULT,
18284    pub CollapseRow: unsafe extern "system" fn(
18285        *mut core::ffi::c_void,
18286        u32,
18287        *mut u8,
18288        u32,
18289        *mut u32,
18290    ) -> windows_core::HRESULT,
18291    pub WaitForCompletion: unsafe extern "system" fn(
18292        *mut core::ffi::c_void,
18293        u32,
18294        u32,
18295        *mut u32,
18296    ) -> windows_core::HRESULT,
18297    pub GetCollapseState: unsafe extern "system" fn(
18298        *mut core::ffi::c_void,
18299        u32,
18300        u32,
18301        *mut u8,
18302        *mut u32,
18303        *mut *mut u8,
18304    ) -> windows_core::HRESULT,
18305    pub SetCollapseState: unsafe extern "system" fn(
18306        *mut core::ffi::c_void,
18307        u32,
18308        u32,
18309        *mut u8,
18310        *mut usize,
18311    ) -> windows_core::HRESULT,
18312}
18313pub trait IMAPITable_Impl: windows_core::IUnknownImpl {
18314    fn GetLastError(
18315        &self,
18316        hresult: windows_core::HRESULT,
18317        ulflags: u32,
18318        lppmapierror: *mut *mut MAPIERROR,
18319    ) -> windows_core::Result<()>;
18320    fn Advise(
18321        &self,
18322        uleventmask: u32,
18323        lpadvisesink: windows_core::Ref<IMAPIAdviseSink>,
18324        lpulconnection: *mut usize,
18325    ) -> windows_core::Result<()>;
18326    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
18327    fn GetStatus(
18328        &self,
18329        lpultablestatus: *mut u32,
18330        lpultabletype: *mut u32,
18331    ) -> windows_core::Result<()>;
18332    fn SetColumns(
18333        &self,
18334        lpproptagarray: *mut SPropTagArray,
18335        ulflags: u32,
18336    ) -> windows_core::Result<()>;
18337    fn QueryColumns(
18338        &self,
18339        ulflags: u32,
18340        lpproptagarray: *mut *mut SPropTagArray,
18341    ) -> windows_core::Result<()>;
18342    fn GetRowCount(&self, ulflags: u32, lpulcount: *mut u32) -> windows_core::Result<()>;
18343    fn SeekRow(
18344        &self,
18345        bkorigin: usize,
18346        lrowcount: i32,
18347        lplrowssought: *mut i32,
18348    ) -> windows_core::Result<()>;
18349    fn SeekRowApprox(&self, ulnumerator: u32, uldenominator: u32) -> windows_core::Result<()>;
18350    fn QueryPosition(
18351        &self,
18352        lpulrow: *mut u32,
18353        lpulnumerator: *mut u32,
18354        lpuldenominator: *mut u32,
18355    ) -> windows_core::Result<()>;
18356    fn FindRow(
18357        &self,
18358        lprestriction: *mut SRestriction,
18359        bkorigin: usize,
18360        ulflags: u32,
18361    ) -> windows_core::Result<()>;
18362    fn Restrict(&self, lprestriction: *mut SRestriction, ulflags: u32) -> windows_core::Result<()>;
18363    fn CreateBookmark(&self, lpbkposition: *mut usize) -> windows_core::Result<()>;
18364    fn FreeBookmark(&self, bkposition: usize) -> windows_core::Result<()>;
18365    fn SortTable(
18366        &self,
18367        lpsortcriteria: *mut SSortOrderSet,
18368        ulflags: u32,
18369    ) -> windows_core::Result<()>;
18370    fn QuerySortOrder(&self, lppsortcriteria: *mut *mut SSortOrderSet) -> windows_core::Result<()>;
18371    fn QueryRows(
18372        &self,
18373        lrowcount: i32,
18374        ulflags: u32,
18375        lpprows: *mut *mut SRowSet,
18376    ) -> windows_core::Result<()>;
18377    fn Abort(&self) -> windows_core::Result<()>;
18378    fn ExpandRow(
18379        &self,
18380        cbinstancekey: u32,
18381        pbinstancekey: *mut u8,
18382        ulrowcount: u32,
18383        ulflags: u32,
18384        lpprows: *mut *mut SRowSet,
18385        lpulmorerows: *mut u32,
18386    ) -> windows_core::Result<()>;
18387    fn CollapseRow(
18388        &self,
18389        cbinstancekey: u32,
18390        pbinstancekey: *mut u8,
18391        ulflags: u32,
18392        lpulrowcount: *mut u32,
18393    ) -> windows_core::Result<()>;
18394    fn WaitForCompletion(
18395        &self,
18396        ulflags: u32,
18397        ultimeout: u32,
18398        lpultablestatus: *mut u32,
18399    ) -> windows_core::Result<()>;
18400    fn GetCollapseState(
18401        &self,
18402        ulflags: u32,
18403        cbinstancekey: u32,
18404        lpbinstancekey: *mut u8,
18405        lpcbcollapsestate: *mut u32,
18406        lppbcollapsestate: *mut *mut u8,
18407    ) -> windows_core::Result<()>;
18408    fn SetCollapseState(
18409        &self,
18410        ulflags: u32,
18411        cbcollapsestate: u32,
18412        pbcollapsestate: *mut u8,
18413        lpbklocation: *mut usize,
18414    ) -> windows_core::Result<()>;
18415}
18416impl IMAPITable_Vtbl {
18417    pub const fn new<Identity: IMAPITable_Impl, const OFFSET: isize>() -> Self {
18418        unsafe extern "system" fn GetLastError<Identity: IMAPITable_Impl, const OFFSET: isize>(
18419            this: *mut core::ffi::c_void,
18420            hresult: windows_core::HRESULT,
18421            ulflags: u32,
18422            lppmapierror: *mut *mut MAPIERROR,
18423        ) -> windows_core::HRESULT {
18424            unsafe {
18425                let this: &Identity =
18426                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18427                IMAPITable_Impl::GetLastError(
18428                    this,
18429                    core::mem::transmute_copy(&hresult),
18430                    core::mem::transmute_copy(&ulflags),
18431                    core::mem::transmute_copy(&lppmapierror),
18432                )
18433                .into()
18434            }
18435        }
18436        unsafe extern "system" fn Advise<Identity: IMAPITable_Impl, const OFFSET: isize>(
18437            this: *mut core::ffi::c_void,
18438            uleventmask: u32,
18439            lpadvisesink: *mut core::ffi::c_void,
18440            lpulconnection: *mut usize,
18441        ) -> windows_core::HRESULT {
18442            unsafe {
18443                let this: &Identity =
18444                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18445                IMAPITable_Impl::Advise(
18446                    this,
18447                    core::mem::transmute_copy(&uleventmask),
18448                    core::mem::transmute_copy(&lpadvisesink),
18449                    core::mem::transmute_copy(&lpulconnection),
18450                )
18451                .into()
18452            }
18453        }
18454        unsafe extern "system" fn Unadvise<Identity: IMAPITable_Impl, const OFFSET: isize>(
18455            this: *mut core::ffi::c_void,
18456            ulconnection: usize,
18457        ) -> windows_core::HRESULT {
18458            unsafe {
18459                let this: &Identity =
18460                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18461                IMAPITable_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
18462            }
18463        }
18464        unsafe extern "system" fn GetStatus<Identity: IMAPITable_Impl, const OFFSET: isize>(
18465            this: *mut core::ffi::c_void,
18466            lpultablestatus: *mut u32,
18467            lpultabletype: *mut u32,
18468        ) -> windows_core::HRESULT {
18469            unsafe {
18470                let this: &Identity =
18471                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18472                IMAPITable_Impl::GetStatus(
18473                    this,
18474                    core::mem::transmute_copy(&lpultablestatus),
18475                    core::mem::transmute_copy(&lpultabletype),
18476                )
18477                .into()
18478            }
18479        }
18480        unsafe extern "system" fn SetColumns<Identity: IMAPITable_Impl, const OFFSET: isize>(
18481            this: *mut core::ffi::c_void,
18482            lpproptagarray: *mut SPropTagArray,
18483            ulflags: u32,
18484        ) -> windows_core::HRESULT {
18485            unsafe {
18486                let this: &Identity =
18487                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18488                IMAPITable_Impl::SetColumns(
18489                    this,
18490                    core::mem::transmute_copy(&lpproptagarray),
18491                    core::mem::transmute_copy(&ulflags),
18492                )
18493                .into()
18494            }
18495        }
18496        unsafe extern "system" fn QueryColumns<Identity: IMAPITable_Impl, const OFFSET: isize>(
18497            this: *mut core::ffi::c_void,
18498            ulflags: u32,
18499            lpproptagarray: *mut *mut SPropTagArray,
18500        ) -> windows_core::HRESULT {
18501            unsafe {
18502                let this: &Identity =
18503                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18504                IMAPITable_Impl::QueryColumns(
18505                    this,
18506                    core::mem::transmute_copy(&ulflags),
18507                    core::mem::transmute_copy(&lpproptagarray),
18508                )
18509                .into()
18510            }
18511        }
18512        unsafe extern "system" fn GetRowCount<Identity: IMAPITable_Impl, const OFFSET: isize>(
18513            this: *mut core::ffi::c_void,
18514            ulflags: u32,
18515            lpulcount: *mut u32,
18516        ) -> windows_core::HRESULT {
18517            unsafe {
18518                let this: &Identity =
18519                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18520                IMAPITable_Impl::GetRowCount(
18521                    this,
18522                    core::mem::transmute_copy(&ulflags),
18523                    core::mem::transmute_copy(&lpulcount),
18524                )
18525                .into()
18526            }
18527        }
18528        unsafe extern "system" fn SeekRow<Identity: IMAPITable_Impl, const OFFSET: isize>(
18529            this: *mut core::ffi::c_void,
18530            bkorigin: usize,
18531            lrowcount: i32,
18532            lplrowssought: *mut i32,
18533        ) -> windows_core::HRESULT {
18534            unsafe {
18535                let this: &Identity =
18536                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18537                IMAPITable_Impl::SeekRow(
18538                    this,
18539                    core::mem::transmute_copy(&bkorigin),
18540                    core::mem::transmute_copy(&lrowcount),
18541                    core::mem::transmute_copy(&lplrowssought),
18542                )
18543                .into()
18544            }
18545        }
18546        unsafe extern "system" fn SeekRowApprox<Identity: IMAPITable_Impl, const OFFSET: isize>(
18547            this: *mut core::ffi::c_void,
18548            ulnumerator: u32,
18549            uldenominator: u32,
18550        ) -> windows_core::HRESULT {
18551            unsafe {
18552                let this: &Identity =
18553                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18554                IMAPITable_Impl::SeekRowApprox(
18555                    this,
18556                    core::mem::transmute_copy(&ulnumerator),
18557                    core::mem::transmute_copy(&uldenominator),
18558                )
18559                .into()
18560            }
18561        }
18562        unsafe extern "system" fn QueryPosition<Identity: IMAPITable_Impl, const OFFSET: isize>(
18563            this: *mut core::ffi::c_void,
18564            lpulrow: *mut u32,
18565            lpulnumerator: *mut u32,
18566            lpuldenominator: *mut u32,
18567        ) -> windows_core::HRESULT {
18568            unsafe {
18569                let this: &Identity =
18570                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18571                IMAPITable_Impl::QueryPosition(
18572                    this,
18573                    core::mem::transmute_copy(&lpulrow),
18574                    core::mem::transmute_copy(&lpulnumerator),
18575                    core::mem::transmute_copy(&lpuldenominator),
18576                )
18577                .into()
18578            }
18579        }
18580        unsafe extern "system" fn FindRow<Identity: IMAPITable_Impl, const OFFSET: isize>(
18581            this: *mut core::ffi::c_void,
18582            lprestriction: *mut SRestriction,
18583            bkorigin: usize,
18584            ulflags: u32,
18585        ) -> windows_core::HRESULT {
18586            unsafe {
18587                let this: &Identity =
18588                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18589                IMAPITable_Impl::FindRow(
18590                    this,
18591                    core::mem::transmute_copy(&lprestriction),
18592                    core::mem::transmute_copy(&bkorigin),
18593                    core::mem::transmute_copy(&ulflags),
18594                )
18595                .into()
18596            }
18597        }
18598        unsafe extern "system" fn Restrict<Identity: IMAPITable_Impl, const OFFSET: isize>(
18599            this: *mut core::ffi::c_void,
18600            lprestriction: *mut SRestriction,
18601            ulflags: u32,
18602        ) -> windows_core::HRESULT {
18603            unsafe {
18604                let this: &Identity =
18605                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18606                IMAPITable_Impl::Restrict(
18607                    this,
18608                    core::mem::transmute_copy(&lprestriction),
18609                    core::mem::transmute_copy(&ulflags),
18610                )
18611                .into()
18612            }
18613        }
18614        unsafe extern "system" fn CreateBookmark<Identity: IMAPITable_Impl, const OFFSET: isize>(
18615            this: *mut core::ffi::c_void,
18616            lpbkposition: *mut usize,
18617        ) -> windows_core::HRESULT {
18618            unsafe {
18619                let this: &Identity =
18620                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18621                IMAPITable_Impl::CreateBookmark(this, core::mem::transmute_copy(&lpbkposition))
18622                    .into()
18623            }
18624        }
18625        unsafe extern "system" fn FreeBookmark<Identity: IMAPITable_Impl, const OFFSET: isize>(
18626            this: *mut core::ffi::c_void,
18627            bkposition: usize,
18628        ) -> windows_core::HRESULT {
18629            unsafe {
18630                let this: &Identity =
18631                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18632                IMAPITable_Impl::FreeBookmark(this, core::mem::transmute_copy(&bkposition)).into()
18633            }
18634        }
18635        unsafe extern "system" fn SortTable<Identity: IMAPITable_Impl, const OFFSET: isize>(
18636            this: *mut core::ffi::c_void,
18637            lpsortcriteria: *mut SSortOrderSet,
18638            ulflags: u32,
18639        ) -> windows_core::HRESULT {
18640            unsafe {
18641                let this: &Identity =
18642                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18643                IMAPITable_Impl::SortTable(
18644                    this,
18645                    core::mem::transmute_copy(&lpsortcriteria),
18646                    core::mem::transmute_copy(&ulflags),
18647                )
18648                .into()
18649            }
18650        }
18651        unsafe extern "system" fn QuerySortOrder<Identity: IMAPITable_Impl, const OFFSET: isize>(
18652            this: *mut core::ffi::c_void,
18653            lppsortcriteria: *mut *mut SSortOrderSet,
18654        ) -> windows_core::HRESULT {
18655            unsafe {
18656                let this: &Identity =
18657                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18658                IMAPITable_Impl::QuerySortOrder(this, core::mem::transmute_copy(&lppsortcriteria))
18659                    .into()
18660            }
18661        }
18662        unsafe extern "system" fn QueryRows<Identity: IMAPITable_Impl, const OFFSET: isize>(
18663            this: *mut core::ffi::c_void,
18664            lrowcount: i32,
18665            ulflags: u32,
18666            lpprows: *mut *mut SRowSet,
18667        ) -> windows_core::HRESULT {
18668            unsafe {
18669                let this: &Identity =
18670                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18671                IMAPITable_Impl::QueryRows(
18672                    this,
18673                    core::mem::transmute_copy(&lrowcount),
18674                    core::mem::transmute_copy(&ulflags),
18675                    core::mem::transmute_copy(&lpprows),
18676                )
18677                .into()
18678            }
18679        }
18680        unsafe extern "system" fn Abort<Identity: IMAPITable_Impl, const OFFSET: isize>(
18681            this: *mut core::ffi::c_void,
18682        ) -> windows_core::HRESULT {
18683            unsafe {
18684                let this: &Identity =
18685                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18686                IMAPITable_Impl::Abort(this).into()
18687            }
18688        }
18689        unsafe extern "system" fn ExpandRow<Identity: IMAPITable_Impl, const OFFSET: isize>(
18690            this: *mut core::ffi::c_void,
18691            cbinstancekey: u32,
18692            pbinstancekey: *mut u8,
18693            ulrowcount: u32,
18694            ulflags: u32,
18695            lpprows: *mut *mut SRowSet,
18696            lpulmorerows: *mut u32,
18697        ) -> windows_core::HRESULT {
18698            unsafe {
18699                let this: &Identity =
18700                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18701                IMAPITable_Impl::ExpandRow(
18702                    this,
18703                    core::mem::transmute_copy(&cbinstancekey),
18704                    core::mem::transmute_copy(&pbinstancekey),
18705                    core::mem::transmute_copy(&ulrowcount),
18706                    core::mem::transmute_copy(&ulflags),
18707                    core::mem::transmute_copy(&lpprows),
18708                    core::mem::transmute_copy(&lpulmorerows),
18709                )
18710                .into()
18711            }
18712        }
18713        unsafe extern "system" fn CollapseRow<Identity: IMAPITable_Impl, const OFFSET: isize>(
18714            this: *mut core::ffi::c_void,
18715            cbinstancekey: u32,
18716            pbinstancekey: *mut u8,
18717            ulflags: u32,
18718            lpulrowcount: *mut u32,
18719        ) -> windows_core::HRESULT {
18720            unsafe {
18721                let this: &Identity =
18722                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18723                IMAPITable_Impl::CollapseRow(
18724                    this,
18725                    core::mem::transmute_copy(&cbinstancekey),
18726                    core::mem::transmute_copy(&pbinstancekey),
18727                    core::mem::transmute_copy(&ulflags),
18728                    core::mem::transmute_copy(&lpulrowcount),
18729                )
18730                .into()
18731            }
18732        }
18733        unsafe extern "system" fn WaitForCompletion<
18734            Identity: IMAPITable_Impl,
18735            const OFFSET: isize,
18736        >(
18737            this: *mut core::ffi::c_void,
18738            ulflags: u32,
18739            ultimeout: u32,
18740            lpultablestatus: *mut u32,
18741        ) -> windows_core::HRESULT {
18742            unsafe {
18743                let this: &Identity =
18744                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18745                IMAPITable_Impl::WaitForCompletion(
18746                    this,
18747                    core::mem::transmute_copy(&ulflags),
18748                    core::mem::transmute_copy(&ultimeout),
18749                    core::mem::transmute_copy(&lpultablestatus),
18750                )
18751                .into()
18752            }
18753        }
18754        unsafe extern "system" fn GetCollapseState<
18755            Identity: IMAPITable_Impl,
18756            const OFFSET: isize,
18757        >(
18758            this: *mut core::ffi::c_void,
18759            ulflags: u32,
18760            cbinstancekey: u32,
18761            lpbinstancekey: *mut u8,
18762            lpcbcollapsestate: *mut u32,
18763            lppbcollapsestate: *mut *mut u8,
18764        ) -> windows_core::HRESULT {
18765            unsafe {
18766                let this: &Identity =
18767                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18768                IMAPITable_Impl::GetCollapseState(
18769                    this,
18770                    core::mem::transmute_copy(&ulflags),
18771                    core::mem::transmute_copy(&cbinstancekey),
18772                    core::mem::transmute_copy(&lpbinstancekey),
18773                    core::mem::transmute_copy(&lpcbcollapsestate),
18774                    core::mem::transmute_copy(&lppbcollapsestate),
18775                )
18776                .into()
18777            }
18778        }
18779        unsafe extern "system" fn SetCollapseState<
18780            Identity: IMAPITable_Impl,
18781            const OFFSET: isize,
18782        >(
18783            this: *mut core::ffi::c_void,
18784            ulflags: u32,
18785            cbcollapsestate: u32,
18786            pbcollapsestate: *mut u8,
18787            lpbklocation: *mut usize,
18788        ) -> windows_core::HRESULT {
18789            unsafe {
18790                let this: &Identity =
18791                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18792                IMAPITable_Impl::SetCollapseState(
18793                    this,
18794                    core::mem::transmute_copy(&ulflags),
18795                    core::mem::transmute_copy(&cbcollapsestate),
18796                    core::mem::transmute_copy(&pbcollapsestate),
18797                    core::mem::transmute_copy(&lpbklocation),
18798                )
18799                .into()
18800            }
18801        }
18802        Self {
18803            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
18804            GetLastError: GetLastError::<Identity, OFFSET>,
18805            Advise: Advise::<Identity, OFFSET>,
18806            Unadvise: Unadvise::<Identity, OFFSET>,
18807            GetStatus: GetStatus::<Identity, OFFSET>,
18808            SetColumns: SetColumns::<Identity, OFFSET>,
18809            QueryColumns: QueryColumns::<Identity, OFFSET>,
18810            GetRowCount: GetRowCount::<Identity, OFFSET>,
18811            SeekRow: SeekRow::<Identity, OFFSET>,
18812            SeekRowApprox: SeekRowApprox::<Identity, OFFSET>,
18813            QueryPosition: QueryPosition::<Identity, OFFSET>,
18814            FindRow: FindRow::<Identity, OFFSET>,
18815            Restrict: Restrict::<Identity, OFFSET>,
18816            CreateBookmark: CreateBookmark::<Identity, OFFSET>,
18817            FreeBookmark: FreeBookmark::<Identity, OFFSET>,
18818            SortTable: SortTable::<Identity, OFFSET>,
18819            QuerySortOrder: QuerySortOrder::<Identity, OFFSET>,
18820            QueryRows: QueryRows::<Identity, OFFSET>,
18821            Abort: Abort::<Identity, OFFSET>,
18822            ExpandRow: ExpandRow::<Identity, OFFSET>,
18823            CollapseRow: CollapseRow::<Identity, OFFSET>,
18824            WaitForCompletion: WaitForCompletion::<Identity, OFFSET>,
18825            GetCollapseState: GetCollapseState::<Identity, OFFSET>,
18826            SetCollapseState: SetCollapseState::<Identity, OFFSET>,
18827        }
18828    }
18829    pub fn matches(iid: &windows_core::GUID) -> bool {
18830        iid == &<IMAPITable as windows_core::Interface>::IID
18831    }
18832}
18833impl windows_core::RuntimeName for IMAPITable {}
18834pub const IMAPITable_Abort: METHODS = METHODS(31i32);
18835pub const IMAPITable_Advise: METHODS = METHODS(15i32);
18836pub const IMAPITable_CollapseRow: METHODS = METHODS(33i32);
18837pub const IMAPITable_CreateBookmark: METHODS = METHODS(26i32);
18838pub const IMAPITable_ExpandRow: METHODS = METHODS(32i32);
18839pub const IMAPITable_FindRow: METHODS = METHODS(24i32);
18840pub const IMAPITable_FreeBookmark: METHODS = METHODS(27i32);
18841pub const IMAPITable_GetCollapseState: METHODS = METHODS(35i32);
18842pub const IMAPITable_GetLastError: METHODS = METHODS(14i32);
18843pub const IMAPITable_GetRowCount: METHODS = METHODS(20i32);
18844pub const IMAPITable_GetStatus: METHODS = METHODS(17i32);
18845pub const IMAPITable_QueryColumns: METHODS = METHODS(19i32);
18846pub const IMAPITable_QueryPosition: METHODS = METHODS(23i32);
18847pub const IMAPITable_QueryRows: METHODS = METHODS(30i32);
18848pub const IMAPITable_QuerySortOrder: METHODS = METHODS(29i32);
18849pub const IMAPITable_Restrict: METHODS = METHODS(25i32);
18850pub const IMAPITable_SeekRow: METHODS = METHODS(21i32);
18851pub const IMAPITable_SeekRowApprox: METHODS = METHODS(22i32);
18852pub const IMAPITable_SetCollapseState: METHODS = METHODS(36i32);
18853pub const IMAPITable_SetColumns: METHODS = METHODS(18i32);
18854pub const IMAPITable_SortTable: METHODS = METHODS(28i32);
18855pub const IMAPITable_Unadvise: METHODS = METHODS(16i32);
18856pub const IMAPITable_WaitForCompletion: METHODS = METHODS(34i32);
18857windows_core::imp::define_interface!(
18858    IMAPIViewAdviseSink,
18859    IMAPIViewAdviseSink_Vtbl,
18860    0x0002032b_0000_0000_c000_000000000046
18861);
18862windows_core::imp::interface_hierarchy!(IMAPIViewAdviseSink, windows_core::IUnknown);
18863impl IMAPIViewAdviseSink {
18864    pub unsafe fn OnShutdown(&self) -> windows_core::Result<()> {
18865        unsafe {
18866            (windows_core::Interface::vtable(self).OnShutdown)(windows_core::Interface::as_raw(
18867                self,
18868            ))
18869            .ok()
18870        }
18871    }
18872    pub unsafe fn OnNewMessage(&self) -> windows_core::Result<()> {
18873        unsafe {
18874            (windows_core::Interface::vtable(self).OnNewMessage)(windows_core::Interface::as_raw(
18875                self,
18876            ))
18877            .ok()
18878        }
18879    }
18880    pub unsafe fn OnPrint(
18881        &self,
18882        dwpagenumber: u32,
18883        hrstatus: windows_core::HRESULT,
18884    ) -> windows_core::Result<()> {
18885        unsafe {
18886            (windows_core::Interface::vtable(self).OnPrint)(
18887                windows_core::Interface::as_raw(self),
18888                dwpagenumber,
18889                hrstatus,
18890            )
18891            .ok()
18892        }
18893    }
18894    pub unsafe fn OnSubmitted(&self) -> windows_core::Result<()> {
18895        unsafe {
18896            (windows_core::Interface::vtable(self).OnSubmitted)(windows_core::Interface::as_raw(
18897                self,
18898            ))
18899            .ok()
18900        }
18901    }
18902    pub unsafe fn OnSaved(&self) -> windows_core::Result<()> {
18903        unsafe {
18904            (windows_core::Interface::vtable(self).OnSaved)(windows_core::Interface::as_raw(self))
18905                .ok()
18906        }
18907    }
18908}
18909#[repr(C)]
18910#[doc(hidden)]
18911pub struct IMAPIViewAdviseSink_Vtbl {
18912    pub base__: windows_core::IUnknown_Vtbl,
18913    pub OnShutdown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18914    pub OnNewMessage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18915    pub OnPrint: unsafe extern "system" fn(
18916        *mut core::ffi::c_void,
18917        u32,
18918        windows_core::HRESULT,
18919    ) -> windows_core::HRESULT,
18920    pub OnSubmitted: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18921    pub OnSaved: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
18922}
18923pub trait IMAPIViewAdviseSink_Impl: windows_core::IUnknownImpl {
18924    fn OnShutdown(&self) -> windows_core::Result<()>;
18925    fn OnNewMessage(&self) -> windows_core::Result<()>;
18926    fn OnPrint(
18927        &self,
18928        dwpagenumber: u32,
18929        hrstatus: windows_core::HRESULT,
18930    ) -> windows_core::Result<()>;
18931    fn OnSubmitted(&self) -> windows_core::Result<()>;
18932    fn OnSaved(&self) -> windows_core::Result<()>;
18933}
18934impl IMAPIViewAdviseSink_Vtbl {
18935    pub const fn new<Identity: IMAPIViewAdviseSink_Impl, const OFFSET: isize>() -> Self {
18936        unsafe extern "system" fn OnShutdown<
18937            Identity: IMAPIViewAdviseSink_Impl,
18938            const OFFSET: isize,
18939        >(
18940            this: *mut core::ffi::c_void,
18941        ) -> windows_core::HRESULT {
18942            unsafe {
18943                let this: &Identity =
18944                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18945                IMAPIViewAdviseSink_Impl::OnShutdown(this).into()
18946            }
18947        }
18948        unsafe extern "system" fn OnNewMessage<
18949            Identity: IMAPIViewAdviseSink_Impl,
18950            const OFFSET: isize,
18951        >(
18952            this: *mut core::ffi::c_void,
18953        ) -> windows_core::HRESULT {
18954            unsafe {
18955                let this: &Identity =
18956                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18957                IMAPIViewAdviseSink_Impl::OnNewMessage(this).into()
18958            }
18959        }
18960        unsafe extern "system" fn OnPrint<
18961            Identity: IMAPIViewAdviseSink_Impl,
18962            const OFFSET: isize,
18963        >(
18964            this: *mut core::ffi::c_void,
18965            dwpagenumber: u32,
18966            hrstatus: windows_core::HRESULT,
18967        ) -> windows_core::HRESULT {
18968            unsafe {
18969                let this: &Identity =
18970                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18971                IMAPIViewAdviseSink_Impl::OnPrint(
18972                    this,
18973                    core::mem::transmute_copy(&dwpagenumber),
18974                    core::mem::transmute_copy(&hrstatus),
18975                )
18976                .into()
18977            }
18978        }
18979        unsafe extern "system" fn OnSubmitted<
18980            Identity: IMAPIViewAdviseSink_Impl,
18981            const OFFSET: isize,
18982        >(
18983            this: *mut core::ffi::c_void,
18984        ) -> windows_core::HRESULT {
18985            unsafe {
18986                let this: &Identity =
18987                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
18988                IMAPIViewAdviseSink_Impl::OnSubmitted(this).into()
18989            }
18990        }
18991        unsafe extern "system" fn OnSaved<
18992            Identity: IMAPIViewAdviseSink_Impl,
18993            const OFFSET: isize,
18994        >(
18995            this: *mut core::ffi::c_void,
18996        ) -> windows_core::HRESULT {
18997            unsafe {
18998                let this: &Identity =
18999                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19000                IMAPIViewAdviseSink_Impl::OnSaved(this).into()
19001            }
19002        }
19003        Self {
19004            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19005            OnShutdown: OnShutdown::<Identity, OFFSET>,
19006            OnNewMessage: OnNewMessage::<Identity, OFFSET>,
19007            OnPrint: OnPrint::<Identity, OFFSET>,
19008            OnSubmitted: OnSubmitted::<Identity, OFFSET>,
19009            OnSaved: OnSaved::<Identity, OFFSET>,
19010        }
19011    }
19012    pub fn matches(iid: &windows_core::GUID) -> bool {
19013        iid == &<IMAPIViewAdviseSink as windows_core::Interface>::IID
19014    }
19015}
19016impl windows_core::RuntimeName for IMAPIViewAdviseSink {}
19017windows_core::imp::define_interface!(
19018    IMAPIViewContext,
19019    IMAPIViewContext_Vtbl,
19020    0x00020321_0000_0000_c000_000000000046
19021);
19022windows_core::imp::interface_hierarchy!(IMAPIViewContext, windows_core::IUnknown);
19023impl IMAPIViewContext {
19024    pub unsafe fn GetLastError(
19025        &self,
19026        hresult: windows_core::HRESULT,
19027        ulflags: u32,
19028        lppmapierror: *mut *mut MAPIERROR,
19029    ) -> windows_core::Result<()> {
19030        unsafe {
19031            (windows_core::Interface::vtable(self).GetLastError)(
19032                windows_core::Interface::as_raw(self),
19033                hresult,
19034                ulflags,
19035                lppmapierror as _,
19036            )
19037            .ok()
19038        }
19039    }
19040    pub unsafe fn SetAdviseSink<P0>(&self, pmvns: P0) -> windows_core::Result<()>
19041    where
19042        P0: windows_core::Param<IMAPIFormAdviseSink>,
19043    {
19044        unsafe {
19045            (windows_core::Interface::vtable(self).SetAdviseSink)(
19046                windows_core::Interface::as_raw(self),
19047                pmvns.param().abi(),
19048            )
19049            .ok()
19050        }
19051    }
19052    pub unsafe fn ActivateNext(
19053        &self,
19054        uldir: u32,
19055        prcposrect: *mut windows::Win32::Foundation::RECT,
19056    ) -> windows_core::Result<()> {
19057        unsafe {
19058            (windows_core::Interface::vtable(self).ActivateNext)(
19059                windows_core::Interface::as_raw(self),
19060                uldir,
19061                prcposrect as _,
19062            )
19063            .ok()
19064        }
19065    }
19066    pub unsafe fn GetPrintSetup(
19067        &self,
19068        ulflags: u32,
19069        lppformprintsetup: *mut *mut FORMPRINTSETUP,
19070    ) -> windows_core::Result<()> {
19071        unsafe {
19072            (windows_core::Interface::vtable(self).GetPrintSetup)(
19073                windows_core::Interface::as_raw(self),
19074                ulflags,
19075                lppformprintsetup as _,
19076            )
19077            .ok()
19078        }
19079    }
19080    pub unsafe fn GetSaveStream(
19081        &self,
19082        pulflags: *mut u32,
19083        pulformat: *mut u32,
19084        ppstm: *mut Option<windows::Win32::System::Com::IStream>,
19085    ) -> windows_core::Result<()> {
19086        unsafe {
19087            (windows_core::Interface::vtable(self).GetSaveStream)(
19088                windows_core::Interface::as_raw(self),
19089                pulflags as _,
19090                pulformat as _,
19091                core::mem::transmute(ppstm),
19092            )
19093            .ok()
19094        }
19095    }
19096    pub unsafe fn GetViewStatus(&self, lpulstatus: *mut u32) -> windows_core::Result<()> {
19097        unsafe {
19098            (windows_core::Interface::vtable(self).GetViewStatus)(
19099                windows_core::Interface::as_raw(self),
19100                lpulstatus as _,
19101            )
19102            .ok()
19103        }
19104    }
19105}
19106#[repr(C)]
19107#[doc(hidden)]
19108pub struct IMAPIViewContext_Vtbl {
19109    pub base__: windows_core::IUnknown_Vtbl,
19110    pub GetLastError: unsafe extern "system" fn(
19111        *mut core::ffi::c_void,
19112        windows_core::HRESULT,
19113        u32,
19114        *mut *mut MAPIERROR,
19115    ) -> windows_core::HRESULT,
19116    pub SetAdviseSink: unsafe extern "system" fn(
19117        *mut core::ffi::c_void,
19118        *mut core::ffi::c_void,
19119    ) -> windows_core::HRESULT,
19120    pub ActivateNext: unsafe extern "system" fn(
19121        *mut core::ffi::c_void,
19122        u32,
19123        *mut windows::Win32::Foundation::RECT,
19124    ) -> windows_core::HRESULT,
19125    pub GetPrintSetup: unsafe extern "system" fn(
19126        *mut core::ffi::c_void,
19127        u32,
19128        *mut *mut FORMPRINTSETUP,
19129    ) -> windows_core::HRESULT,
19130    pub GetSaveStream: unsafe extern "system" fn(
19131        *mut core::ffi::c_void,
19132        *mut u32,
19133        *mut u32,
19134        *mut *mut core::ffi::c_void,
19135    ) -> windows_core::HRESULT,
19136    pub GetViewStatus:
19137        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
19138}
19139pub trait IMAPIViewContext_Impl: windows_core::IUnknownImpl {
19140    fn GetLastError(
19141        &self,
19142        hresult: windows_core::HRESULT,
19143        ulflags: u32,
19144        lppmapierror: *mut *mut MAPIERROR,
19145    ) -> windows_core::Result<()>;
19146    fn SetAdviseSink(
19147        &self,
19148        pmvns: windows_core::Ref<IMAPIFormAdviseSink>,
19149    ) -> windows_core::Result<()>;
19150    fn ActivateNext(
19151        &self,
19152        uldir: u32,
19153        prcposrect: *mut windows::Win32::Foundation::RECT,
19154    ) -> windows_core::Result<()>;
19155    fn GetPrintSetup(
19156        &self,
19157        ulflags: u32,
19158        lppformprintsetup: *mut *mut FORMPRINTSETUP,
19159    ) -> windows_core::Result<()>;
19160    fn GetSaveStream(
19161        &self,
19162        pulflags: *mut u32,
19163        pulformat: *mut u32,
19164        ppstm: windows_core::OutRef<windows::Win32::System::Com::IStream>,
19165    ) -> windows_core::Result<()>;
19166    fn GetViewStatus(&self, lpulstatus: *mut u32) -> windows_core::Result<()>;
19167}
19168impl IMAPIViewContext_Vtbl {
19169    pub const fn new<Identity: IMAPIViewContext_Impl, const OFFSET: isize>() -> Self {
19170        unsafe extern "system" fn GetLastError<
19171            Identity: IMAPIViewContext_Impl,
19172            const OFFSET: isize,
19173        >(
19174            this: *mut core::ffi::c_void,
19175            hresult: windows_core::HRESULT,
19176            ulflags: u32,
19177            lppmapierror: *mut *mut MAPIERROR,
19178        ) -> windows_core::HRESULT {
19179            unsafe {
19180                let this: &Identity =
19181                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19182                IMAPIViewContext_Impl::GetLastError(
19183                    this,
19184                    core::mem::transmute_copy(&hresult),
19185                    core::mem::transmute_copy(&ulflags),
19186                    core::mem::transmute_copy(&lppmapierror),
19187                )
19188                .into()
19189            }
19190        }
19191        unsafe extern "system" fn SetAdviseSink<
19192            Identity: IMAPIViewContext_Impl,
19193            const OFFSET: isize,
19194        >(
19195            this: *mut core::ffi::c_void,
19196            pmvns: *mut core::ffi::c_void,
19197        ) -> windows_core::HRESULT {
19198            unsafe {
19199                let this: &Identity =
19200                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19201                IMAPIViewContext_Impl::SetAdviseSink(this, core::mem::transmute_copy(&pmvns)).into()
19202            }
19203        }
19204        unsafe extern "system" fn ActivateNext<
19205            Identity: IMAPIViewContext_Impl,
19206            const OFFSET: isize,
19207        >(
19208            this: *mut core::ffi::c_void,
19209            uldir: u32,
19210            prcposrect: *mut windows::Win32::Foundation::RECT,
19211        ) -> windows_core::HRESULT {
19212            unsafe {
19213                let this: &Identity =
19214                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19215                IMAPIViewContext_Impl::ActivateNext(
19216                    this,
19217                    core::mem::transmute_copy(&uldir),
19218                    core::mem::transmute_copy(&prcposrect),
19219                )
19220                .into()
19221            }
19222        }
19223        unsafe extern "system" fn GetPrintSetup<
19224            Identity: IMAPIViewContext_Impl,
19225            const OFFSET: isize,
19226        >(
19227            this: *mut core::ffi::c_void,
19228            ulflags: u32,
19229            lppformprintsetup: *mut *mut FORMPRINTSETUP,
19230        ) -> windows_core::HRESULT {
19231            unsafe {
19232                let this: &Identity =
19233                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19234                IMAPIViewContext_Impl::GetPrintSetup(
19235                    this,
19236                    core::mem::transmute_copy(&ulflags),
19237                    core::mem::transmute_copy(&lppformprintsetup),
19238                )
19239                .into()
19240            }
19241        }
19242        unsafe extern "system" fn GetSaveStream<
19243            Identity: IMAPIViewContext_Impl,
19244            const OFFSET: isize,
19245        >(
19246            this: *mut core::ffi::c_void,
19247            pulflags: *mut u32,
19248            pulformat: *mut u32,
19249            ppstm: *mut *mut core::ffi::c_void,
19250        ) -> windows_core::HRESULT {
19251            unsafe {
19252                let this: &Identity =
19253                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19254                IMAPIViewContext_Impl::GetSaveStream(
19255                    this,
19256                    core::mem::transmute_copy(&pulflags),
19257                    core::mem::transmute_copy(&pulformat),
19258                    core::mem::transmute_copy(&ppstm),
19259                )
19260                .into()
19261            }
19262        }
19263        unsafe extern "system" fn GetViewStatus<
19264            Identity: IMAPIViewContext_Impl,
19265            const OFFSET: isize,
19266        >(
19267            this: *mut core::ffi::c_void,
19268            lpulstatus: *mut u32,
19269        ) -> windows_core::HRESULT {
19270            unsafe {
19271                let this: &Identity =
19272                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19273                IMAPIViewContext_Impl::GetViewStatus(this, core::mem::transmute_copy(&lpulstatus))
19274                    .into()
19275            }
19276        }
19277        Self {
19278            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19279            GetLastError: GetLastError::<Identity, OFFSET>,
19280            SetAdviseSink: SetAdviseSink::<Identity, OFFSET>,
19281            ActivateNext: ActivateNext::<Identity, OFFSET>,
19282            GetPrintSetup: GetPrintSetup::<Identity, OFFSET>,
19283            GetSaveStream: GetSaveStream::<Identity, OFFSET>,
19284            GetViewStatus: GetViewStatus::<Identity, OFFSET>,
19285        }
19286    }
19287    pub fn matches(iid: &windows_core::GUID) -> bool {
19288        iid == &<IMAPIViewContext as windows_core::Interface>::IID
19289    }
19290}
19291impl windows_core::RuntimeName for IMAPIViewContext {}
19292pub const IMF_ATTACHMENTS: IMSGFLAGS = IMSGFLAGS(1i32);
19293pub const IMF_CSETTAGGED: IMSGFLAGS = IMSGFLAGS(8192i32);
19294pub const IMF_ENCRYPTED: IMSGFLAGS = IMSGFLAGS(256i32);
19295pub const IMF_HASVCARD: IMSGFLAGS = IMSGFLAGS(65536i32);
19296pub const IMF_HTML: IMSGFLAGS = IMSGFLAGS(16i32);
19297pub const IMF_MHTML: IMSGFLAGS = IMSGFLAGS(1024i32);
19298pub const IMF_MIME: IMSGFLAGS = IMSGFLAGS(8i32);
19299pub const IMF_MULTIPART: IMSGFLAGS = IMSGFLAGS(2i32);
19300pub const IMF_NEWS: IMSGFLAGS = IMSGFLAGS(16384i32);
19301pub const IMF_PARTIAL: IMSGFLAGS = IMSGFLAGS(64i32);
19302pub const IMF_PLAIN: IMSGFLAGS = IMSGFLAGS(32i32);
19303pub const IMF_RFC1154: IMSGFLAGS = IMSGFLAGS(131072i32);
19304pub const IMF_SECURE: IMSGFLAGS = IMSGFLAGS(2048i32);
19305pub const IMF_SIGNED: IMSGFLAGS = IMSGFLAGS(128i32);
19306pub const IMF_SUBMULTIPART: IMSGFLAGS = IMSGFLAGS(4i32);
19307pub const IMF_TEXT: IMSGFLAGS = IMSGFLAGS(4096i32);
19308pub const IMF_TNEF: IMSGFLAGS = IMSGFLAGS(512i32);
19309pub const IMF_VOICEMAIL: IMSGFLAGS = IMSGFLAGS(32768i32);
19310pub const IMPORTANCE_HIGH: u32 = 2u32;
19311pub const IMPORTANCE_LOW: u32 = 0u32;
19312pub const IMPORTANCE_NORMAL: u32 = 1u32;
19313windows_core::imp::define_interface!(
19314    IMSCapabilities,
19315    IMSCapabilities_Vtbl,
19316    0x00020393_0000_0000_c000_000000000046
19317);
19318windows_core::imp::interface_hierarchy!(IMSCapabilities, windows_core::IUnknown);
19319impl IMSCapabilities {
19320    pub unsafe fn GetCapabilities(&self, mscapselector: MSCAP_SELECTOR) -> u32 {
19321        unsafe {
19322            (windows_core::Interface::vtable(self).GetCapabilities)(
19323                windows_core::Interface::as_raw(self),
19324                mscapselector,
19325            )
19326        }
19327    }
19328}
19329#[repr(C)]
19330#[doc(hidden)]
19331pub struct IMSCapabilities_Vtbl {
19332    pub base__: windows_core::IUnknown_Vtbl,
19333    pub GetCapabilities: unsafe extern "system" fn(*mut core::ffi::c_void, MSCAP_SELECTOR) -> u32,
19334}
19335pub trait IMSCapabilities_Impl: windows_core::IUnknownImpl {
19336    fn GetCapabilities(&self, mscapselector: MSCAP_SELECTOR) -> u32;
19337}
19338impl IMSCapabilities_Vtbl {
19339    pub const fn new<Identity: IMSCapabilities_Impl, const OFFSET: isize>() -> Self {
19340        unsafe extern "system" fn GetCapabilities<
19341            Identity: IMSCapabilities_Impl,
19342            const OFFSET: isize,
19343        >(
19344            this: *mut core::ffi::c_void,
19345            mscapselector: MSCAP_SELECTOR,
19346        ) -> u32 {
19347            unsafe {
19348                let this: &Identity =
19349                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19350                IMSCapabilities_Impl::GetCapabilities(
19351                    this,
19352                    core::mem::transmute_copy(&mscapselector),
19353                )
19354            }
19355        }
19356        Self {
19357            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19358            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
19359        }
19360    }
19361    pub fn matches(iid: &windows_core::GUID) -> bool {
19362        iid == &<IMSCapabilities as windows_core::Interface>::IID
19363    }
19364}
19365impl windows_core::RuntimeName for IMSCapabilities {}
19366#[repr(transparent)]
19367#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
19368pub struct IMSGBODYTYPE(pub i32);
19369#[repr(transparent)]
19370#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
19371pub struct IMSGFLAGS(pub i32);
19372#[repr(transparent)]
19373#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
19374pub struct IMSGPRIORITY(pub i32);
19375pub const IMSG_NO_ISTG_COMMIT: u32 = 1u32;
19376pub const IMSG_PRI_HIGH: IMSGPRIORITY = IMSGPRIORITY(1i32);
19377pub const IMSG_PRI_LOW: IMSGPRIORITY = IMSGPRIORITY(5i32);
19378pub const IMSG_PRI_NORMAL: IMSGPRIORITY = IMSGPRIORITY(3i32);
19379windows_core::imp::define_interface!(
19380    IMSLogon,
19381    IMSLogon_Vtbl,
19382    0x00020313_0000_0000_c000_000000000046
19383);
19384windows_core::imp::interface_hierarchy!(IMSLogon, windows_core::IUnknown);
19385impl IMSLogon {
19386    pub unsafe fn GetLastError(
19387        &self,
19388        hresult: windows_core::HRESULT,
19389        ulflags: u32,
19390        lppmapierror: *mut *mut MAPIERROR,
19391    ) -> windows_core::Result<()> {
19392        unsafe {
19393            (windows_core::Interface::vtable(self).GetLastError)(
19394                windows_core::Interface::as_raw(self),
19395                hresult,
19396                ulflags,
19397                lppmapierror as _,
19398            )
19399            .ok()
19400        }
19401    }
19402    pub unsafe fn Logoff(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
19403        unsafe {
19404            (windows_core::Interface::vtable(self).Logoff)(
19405                windows_core::Interface::as_raw(self),
19406                lpulflags as _,
19407            )
19408            .ok()
19409        }
19410    }
19411    pub unsafe fn OpenEntry(
19412        &self,
19413        cbentryid: u32,
19414        lpentryid: *mut ENTRYID,
19415        lpinterface: *mut windows_core::GUID,
19416        ulflags: u32,
19417        lpulobjtype: *mut u32,
19418        lppunk: *mut Option<windows_core::IUnknown>,
19419    ) -> windows_core::Result<()> {
19420        unsafe {
19421            (windows_core::Interface::vtable(self).OpenEntry)(
19422                windows_core::Interface::as_raw(self),
19423                cbentryid,
19424                lpentryid as _,
19425                lpinterface as _,
19426                ulflags,
19427                lpulobjtype as _,
19428                core::mem::transmute(lppunk),
19429            )
19430            .ok()
19431        }
19432    }
19433    pub unsafe fn CompareEntryIDs(
19434        &self,
19435        cbentryid1: u32,
19436        lpentryid1: *mut ENTRYID,
19437        cbentryid2: u32,
19438        lpentryid2: *mut ENTRYID,
19439        ulflags: u32,
19440        lpulresult: *mut u32,
19441    ) -> windows_core::Result<()> {
19442        unsafe {
19443            (windows_core::Interface::vtable(self).CompareEntryIDs)(
19444                windows_core::Interface::as_raw(self),
19445                cbentryid1,
19446                lpentryid1 as _,
19447                cbentryid2,
19448                lpentryid2 as _,
19449                ulflags,
19450                lpulresult as _,
19451            )
19452            .ok()
19453        }
19454    }
19455    pub unsafe fn Advise<P3>(
19456        &self,
19457        cbentryid: u32,
19458        lpentryid: *mut ENTRYID,
19459        uleventmask: u32,
19460        lpadvisesink: P3,
19461        lpulconnection: *mut usize,
19462    ) -> windows_core::Result<()>
19463    where
19464        P3: windows_core::Param<IMAPIAdviseSink>,
19465    {
19466        unsafe {
19467            (windows_core::Interface::vtable(self).Advise)(
19468                windows_core::Interface::as_raw(self),
19469                cbentryid,
19470                lpentryid as _,
19471                uleventmask,
19472                lpadvisesink.param().abi(),
19473                lpulconnection as _,
19474            )
19475            .ok()
19476        }
19477    }
19478    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
19479        unsafe {
19480            (windows_core::Interface::vtable(self).Unadvise)(
19481                windows_core::Interface::as_raw(self),
19482                ulconnection,
19483            )
19484            .ok()
19485        }
19486    }
19487    pub unsafe fn OpenStatusEntry(
19488        &self,
19489        lpinterface: *mut windows_core::GUID,
19490        ulflags: u32,
19491        lpulobjtype: *mut u32,
19492        lppentry: *mut *mut core::ffi::c_void,
19493    ) -> windows_core::Result<()> {
19494        unsafe {
19495            (windows_core::Interface::vtable(self).OpenStatusEntry)(
19496                windows_core::Interface::as_raw(self),
19497                lpinterface as _,
19498                ulflags,
19499                lpulobjtype as _,
19500                lppentry as _,
19501            )
19502            .ok()
19503        }
19504    }
19505}
19506#[repr(C)]
19507#[doc(hidden)]
19508pub struct IMSLogon_Vtbl {
19509    pub base__: windows_core::IUnknown_Vtbl,
19510    pub GetLastError: unsafe extern "system" fn(
19511        *mut core::ffi::c_void,
19512        windows_core::HRESULT,
19513        u32,
19514        *mut *mut MAPIERROR,
19515    ) -> windows_core::HRESULT,
19516    pub Logoff:
19517        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
19518    pub OpenEntry: unsafe extern "system" fn(
19519        *mut core::ffi::c_void,
19520        u32,
19521        *mut ENTRYID,
19522        *mut windows_core::GUID,
19523        u32,
19524        *mut u32,
19525        *mut *mut core::ffi::c_void,
19526    ) -> windows_core::HRESULT,
19527    pub CompareEntryIDs: unsafe extern "system" fn(
19528        *mut core::ffi::c_void,
19529        u32,
19530        *mut ENTRYID,
19531        u32,
19532        *mut ENTRYID,
19533        u32,
19534        *mut u32,
19535    ) -> windows_core::HRESULT,
19536    pub Advise: unsafe extern "system" fn(
19537        *mut core::ffi::c_void,
19538        u32,
19539        *mut ENTRYID,
19540        u32,
19541        *mut core::ffi::c_void,
19542        *mut usize,
19543    ) -> windows_core::HRESULT,
19544    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
19545    pub OpenStatusEntry: unsafe extern "system" fn(
19546        *mut core::ffi::c_void,
19547        *mut windows_core::GUID,
19548        u32,
19549        *mut u32,
19550        *mut *mut core::ffi::c_void,
19551    ) -> windows_core::HRESULT,
19552}
19553pub trait IMSLogon_Impl: windows_core::IUnknownImpl {
19554    fn GetLastError(
19555        &self,
19556        hresult: windows_core::HRESULT,
19557        ulflags: u32,
19558        lppmapierror: *mut *mut MAPIERROR,
19559    ) -> windows_core::Result<()>;
19560    fn Logoff(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
19561    fn OpenEntry(
19562        &self,
19563        cbentryid: u32,
19564        lpentryid: *mut ENTRYID,
19565        lpinterface: *mut windows_core::GUID,
19566        ulflags: u32,
19567        lpulobjtype: *mut u32,
19568        lppunk: windows_core::OutRef<windows_core::IUnknown>,
19569    ) -> windows_core::Result<()>;
19570    fn CompareEntryIDs(
19571        &self,
19572        cbentryid1: u32,
19573        lpentryid1: *mut ENTRYID,
19574        cbentryid2: u32,
19575        lpentryid2: *mut ENTRYID,
19576        ulflags: u32,
19577        lpulresult: *mut u32,
19578    ) -> windows_core::Result<()>;
19579    fn Advise(
19580        &self,
19581        cbentryid: u32,
19582        lpentryid: *mut ENTRYID,
19583        uleventmask: u32,
19584        lpadvisesink: windows_core::Ref<IMAPIAdviseSink>,
19585        lpulconnection: *mut usize,
19586    ) -> windows_core::Result<()>;
19587    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
19588    fn OpenStatusEntry(
19589        &self,
19590        lpinterface: *mut windows_core::GUID,
19591        ulflags: u32,
19592        lpulobjtype: *mut u32,
19593        lppentry: *mut *mut core::ffi::c_void,
19594    ) -> windows_core::Result<()>;
19595}
19596impl IMSLogon_Vtbl {
19597    pub const fn new<Identity: IMSLogon_Impl, const OFFSET: isize>() -> Self {
19598        unsafe extern "system" fn GetLastError<Identity: IMSLogon_Impl, const OFFSET: isize>(
19599            this: *mut core::ffi::c_void,
19600            hresult: windows_core::HRESULT,
19601            ulflags: u32,
19602            lppmapierror: *mut *mut MAPIERROR,
19603        ) -> windows_core::HRESULT {
19604            unsafe {
19605                let this: &Identity =
19606                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19607                IMSLogon_Impl::GetLastError(
19608                    this,
19609                    core::mem::transmute_copy(&hresult),
19610                    core::mem::transmute_copy(&ulflags),
19611                    core::mem::transmute_copy(&lppmapierror),
19612                )
19613                .into()
19614            }
19615        }
19616        unsafe extern "system" fn Logoff<Identity: IMSLogon_Impl, const OFFSET: isize>(
19617            this: *mut core::ffi::c_void,
19618            lpulflags: *mut u32,
19619        ) -> windows_core::HRESULT {
19620            unsafe {
19621                let this: &Identity =
19622                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19623                IMSLogon_Impl::Logoff(this, core::mem::transmute_copy(&lpulflags)).into()
19624            }
19625        }
19626        unsafe extern "system" fn OpenEntry<Identity: IMSLogon_Impl, const OFFSET: isize>(
19627            this: *mut core::ffi::c_void,
19628            cbentryid: u32,
19629            lpentryid: *mut ENTRYID,
19630            lpinterface: *mut windows_core::GUID,
19631            ulflags: u32,
19632            lpulobjtype: *mut u32,
19633            lppunk: *mut *mut core::ffi::c_void,
19634        ) -> windows_core::HRESULT {
19635            unsafe {
19636                let this: &Identity =
19637                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19638                IMSLogon_Impl::OpenEntry(
19639                    this,
19640                    core::mem::transmute_copy(&cbentryid),
19641                    core::mem::transmute_copy(&lpentryid),
19642                    core::mem::transmute_copy(&lpinterface),
19643                    core::mem::transmute_copy(&ulflags),
19644                    core::mem::transmute_copy(&lpulobjtype),
19645                    core::mem::transmute_copy(&lppunk),
19646                )
19647                .into()
19648            }
19649        }
19650        unsafe extern "system" fn CompareEntryIDs<Identity: IMSLogon_Impl, const OFFSET: isize>(
19651            this: *mut core::ffi::c_void,
19652            cbentryid1: u32,
19653            lpentryid1: *mut ENTRYID,
19654            cbentryid2: u32,
19655            lpentryid2: *mut ENTRYID,
19656            ulflags: u32,
19657            lpulresult: *mut u32,
19658        ) -> windows_core::HRESULT {
19659            unsafe {
19660                let this: &Identity =
19661                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19662                IMSLogon_Impl::CompareEntryIDs(
19663                    this,
19664                    core::mem::transmute_copy(&cbentryid1),
19665                    core::mem::transmute_copy(&lpentryid1),
19666                    core::mem::transmute_copy(&cbentryid2),
19667                    core::mem::transmute_copy(&lpentryid2),
19668                    core::mem::transmute_copy(&ulflags),
19669                    core::mem::transmute_copy(&lpulresult),
19670                )
19671                .into()
19672            }
19673        }
19674        unsafe extern "system" fn Advise<Identity: IMSLogon_Impl, const OFFSET: isize>(
19675            this: *mut core::ffi::c_void,
19676            cbentryid: u32,
19677            lpentryid: *mut ENTRYID,
19678            uleventmask: u32,
19679            lpadvisesink: *mut core::ffi::c_void,
19680            lpulconnection: *mut usize,
19681        ) -> windows_core::HRESULT {
19682            unsafe {
19683                let this: &Identity =
19684                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19685                IMSLogon_Impl::Advise(
19686                    this,
19687                    core::mem::transmute_copy(&cbentryid),
19688                    core::mem::transmute_copy(&lpentryid),
19689                    core::mem::transmute_copy(&uleventmask),
19690                    core::mem::transmute_copy(&lpadvisesink),
19691                    core::mem::transmute_copy(&lpulconnection),
19692                )
19693                .into()
19694            }
19695        }
19696        unsafe extern "system" fn Unadvise<Identity: IMSLogon_Impl, const OFFSET: isize>(
19697            this: *mut core::ffi::c_void,
19698            ulconnection: usize,
19699        ) -> windows_core::HRESULT {
19700            unsafe {
19701                let this: &Identity =
19702                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19703                IMSLogon_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
19704            }
19705        }
19706        unsafe extern "system" fn OpenStatusEntry<Identity: IMSLogon_Impl, const OFFSET: isize>(
19707            this: *mut core::ffi::c_void,
19708            lpinterface: *mut windows_core::GUID,
19709            ulflags: u32,
19710            lpulobjtype: *mut u32,
19711            lppentry: *mut *mut core::ffi::c_void,
19712        ) -> windows_core::HRESULT {
19713            unsafe {
19714                let this: &Identity =
19715                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19716                IMSLogon_Impl::OpenStatusEntry(
19717                    this,
19718                    core::mem::transmute_copy(&lpinterface),
19719                    core::mem::transmute_copy(&ulflags),
19720                    core::mem::transmute_copy(&lpulobjtype),
19721                    core::mem::transmute_copy(&lppentry),
19722                )
19723                .into()
19724            }
19725        }
19726        Self {
19727            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
19728            GetLastError: GetLastError::<Identity, OFFSET>,
19729            Logoff: Logoff::<Identity, OFFSET>,
19730            OpenEntry: OpenEntry::<Identity, OFFSET>,
19731            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
19732            Advise: Advise::<Identity, OFFSET>,
19733            Unadvise: Unadvise::<Identity, OFFSET>,
19734            OpenStatusEntry: OpenStatusEntry::<Identity, OFFSET>,
19735        }
19736    }
19737    pub fn matches(iid: &windows_core::GUID) -> bool {
19738        iid == &<IMSLogon as windows_core::Interface>::IID
19739    }
19740}
19741impl windows_core::RuntimeName for IMSLogon {}
19742pub const IMSLogon_Advise: METHODS = METHODS(116i32);
19743pub const IMSLogon_CompareEntryIDs: METHODS = METHODS(115i32);
19744pub const IMSLogon_GetLastError: METHODS = METHODS(112i32);
19745pub const IMSLogon_Logoff: METHODS = METHODS(113i32);
19746pub const IMSLogon_OpenEntry: METHODS = METHODS(114i32);
19747pub const IMSLogon_OpenStatusEntry: METHODS = METHODS(118i32);
19748pub const IMSLogon_Unadvise: METHODS = METHODS(117i32);
19749windows_core::imp::define_interface!(
19750    IMSProvider,
19751    IMSProvider_Vtbl,
19752    0x00020310_0000_0000_c000_000000000046
19753);
19754windows_core::imp::interface_hierarchy!(IMSProvider, windows_core::IUnknown);
19755impl IMSProvider {
19756    pub unsafe fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
19757        unsafe {
19758            (windows_core::Interface::vtable(self).Shutdown)(
19759                windows_core::Interface::as_raw(self),
19760                lpulflags as _,
19761            )
19762            .ok()
19763        }
19764    }
19765    pub unsafe fn Logon<P0>(
19766        &self,
19767        lpmapisup: P0,
19768        uluiparam: usize,
19769        lpszprofilename: *mut i8,
19770        cbentryid: u32,
19771        lpentryid: *mut ENTRYID,
19772        ulflags: u32,
19773        lpinterface: *mut windows_core::GUID,
19774        lpcbspoolsecurity: *mut u32,
19775        lppbspoolsecurity: *mut *mut u8,
19776        lppmapierror: *mut *mut MAPIERROR,
19777        lppmslogon: *mut Option<IMSLogon>,
19778        lppmdb: *mut Option<IMsgStore>,
19779    ) -> windows_core::Result<()>
19780    where
19781        P0: windows_core::Param<IMAPISupport>,
19782    {
19783        unsafe {
19784            (windows_core::Interface::vtable(self).Logon)(
19785                windows_core::Interface::as_raw(self),
19786                lpmapisup.param().abi(),
19787                uluiparam,
19788                lpszprofilename as _,
19789                cbentryid,
19790                lpentryid as _,
19791                ulflags,
19792                lpinterface as _,
19793                lpcbspoolsecurity as _,
19794                lppbspoolsecurity as _,
19795                lppmapierror as _,
19796                core::mem::transmute(lppmslogon),
19797                core::mem::transmute(lppmdb),
19798            )
19799            .ok()
19800        }
19801    }
19802    pub unsafe fn SpoolerLogon<P0>(
19803        &self,
19804        lpmapisup: P0,
19805        uluiparam: usize,
19806        lpszprofilename: *mut i8,
19807        cbentryid: u32,
19808        lpentryid: *mut ENTRYID,
19809        ulflags: u32,
19810        lpinterface: *mut windows_core::GUID,
19811        cbspoolsecurity: u32,
19812        lpbspoolsecurity: *mut u8,
19813        lppmapierror: *mut *mut MAPIERROR,
19814        lppmslogon: *mut Option<IMSLogon>,
19815        lppmdb: *mut Option<IMsgStore>,
19816    ) -> windows_core::Result<()>
19817    where
19818        P0: windows_core::Param<IMAPISupport>,
19819    {
19820        unsafe {
19821            (windows_core::Interface::vtable(self).SpoolerLogon)(
19822                windows_core::Interface::as_raw(self),
19823                lpmapisup.param().abi(),
19824                uluiparam,
19825                lpszprofilename as _,
19826                cbentryid,
19827                lpentryid as _,
19828                ulflags,
19829                lpinterface as _,
19830                cbspoolsecurity,
19831                lpbspoolsecurity as _,
19832                lppmapierror as _,
19833                core::mem::transmute(lppmslogon),
19834                core::mem::transmute(lppmdb),
19835            )
19836            .ok()
19837        }
19838    }
19839    pub unsafe fn CompareStoreIDs(
19840        &self,
19841        cbentryid1: u32,
19842        lpentryid1: *mut ENTRYID,
19843        cbentryid2: u32,
19844        lpentryid2: *mut ENTRYID,
19845        ulflags: u32,
19846        lpulresult: *mut u32,
19847    ) -> windows_core::Result<()> {
19848        unsafe {
19849            (windows_core::Interface::vtable(self).CompareStoreIDs)(
19850                windows_core::Interface::as_raw(self),
19851                cbentryid1,
19852                lpentryid1 as _,
19853                cbentryid2,
19854                lpentryid2 as _,
19855                ulflags,
19856                lpulresult as _,
19857            )
19858            .ok()
19859        }
19860    }
19861}
19862#[repr(C)]
19863#[doc(hidden)]
19864pub struct IMSProvider_Vtbl {
19865    pub base__: windows_core::IUnknown_Vtbl,
19866    pub Shutdown:
19867        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
19868    pub Logon: unsafe extern "system" fn(
19869        *mut core::ffi::c_void,
19870        *mut core::ffi::c_void,
19871        usize,
19872        *mut i8,
19873        u32,
19874        *mut ENTRYID,
19875        u32,
19876        *mut windows_core::GUID,
19877        *mut u32,
19878        *mut *mut u8,
19879        *mut *mut MAPIERROR,
19880        *mut *mut core::ffi::c_void,
19881        *mut *mut core::ffi::c_void,
19882    ) -> windows_core::HRESULT,
19883    pub SpoolerLogon: unsafe extern "system" fn(
19884        *mut core::ffi::c_void,
19885        *mut core::ffi::c_void,
19886        usize,
19887        *mut i8,
19888        u32,
19889        *mut ENTRYID,
19890        u32,
19891        *mut windows_core::GUID,
19892        u32,
19893        *mut u8,
19894        *mut *mut MAPIERROR,
19895        *mut *mut core::ffi::c_void,
19896        *mut *mut core::ffi::c_void,
19897    ) -> windows_core::HRESULT,
19898    pub CompareStoreIDs: unsafe extern "system" fn(
19899        *mut core::ffi::c_void,
19900        u32,
19901        *mut ENTRYID,
19902        u32,
19903        *mut ENTRYID,
19904        u32,
19905        *mut u32,
19906    ) -> windows_core::HRESULT,
19907}
19908pub trait IMSProvider_Impl: windows_core::IUnknownImpl {
19909    fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
19910    fn Logon(
19911        &self,
19912        lpmapisup: windows_core::Ref<IMAPISupport>,
19913        uluiparam: usize,
19914        lpszprofilename: *mut i8,
19915        cbentryid: u32,
19916        lpentryid: *mut ENTRYID,
19917        ulflags: u32,
19918        lpinterface: *mut windows_core::GUID,
19919        lpcbspoolsecurity: *mut u32,
19920        lppbspoolsecurity: *mut *mut u8,
19921        lppmapierror: *mut *mut MAPIERROR,
19922        lppmslogon: windows_core::OutRef<IMSLogon>,
19923        lppmdb: windows_core::OutRef<IMsgStore>,
19924    ) -> windows_core::Result<()>;
19925    fn SpoolerLogon(
19926        &self,
19927        lpmapisup: windows_core::Ref<IMAPISupport>,
19928        uluiparam: usize,
19929        lpszprofilename: *mut i8,
19930        cbentryid: u32,
19931        lpentryid: *mut ENTRYID,
19932        ulflags: u32,
19933        lpinterface: *mut windows_core::GUID,
19934        cbspoolsecurity: u32,
19935        lpbspoolsecurity: *mut u8,
19936        lppmapierror: *mut *mut MAPIERROR,
19937        lppmslogon: windows_core::OutRef<IMSLogon>,
19938        lppmdb: windows_core::OutRef<IMsgStore>,
19939    ) -> windows_core::Result<()>;
19940    fn CompareStoreIDs(
19941        &self,
19942        cbentryid1: u32,
19943        lpentryid1: *mut ENTRYID,
19944        cbentryid2: u32,
19945        lpentryid2: *mut ENTRYID,
19946        ulflags: u32,
19947        lpulresult: *mut u32,
19948    ) -> windows_core::Result<()>;
19949}
19950impl IMSProvider_Vtbl {
19951    pub const fn new<Identity: IMSProvider_Impl, const OFFSET: isize>() -> Self {
19952        unsafe extern "system" fn Shutdown<Identity: IMSProvider_Impl, const OFFSET: isize>(
19953            this: *mut core::ffi::c_void,
19954            lpulflags: *mut u32,
19955        ) -> windows_core::HRESULT {
19956            unsafe {
19957                let this: &Identity =
19958                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19959                IMSProvider_Impl::Shutdown(this, core::mem::transmute_copy(&lpulflags)).into()
19960            }
19961        }
19962        unsafe extern "system" fn Logon<Identity: IMSProvider_Impl, const OFFSET: isize>(
19963            this: *mut core::ffi::c_void,
19964            lpmapisup: *mut core::ffi::c_void,
19965            uluiparam: usize,
19966            lpszprofilename: *mut i8,
19967            cbentryid: u32,
19968            lpentryid: *mut ENTRYID,
19969            ulflags: u32,
19970            lpinterface: *mut windows_core::GUID,
19971            lpcbspoolsecurity: *mut u32,
19972            lppbspoolsecurity: *mut *mut u8,
19973            lppmapierror: *mut *mut MAPIERROR,
19974            lppmslogon: *mut *mut core::ffi::c_void,
19975            lppmdb: *mut *mut core::ffi::c_void,
19976        ) -> windows_core::HRESULT {
19977            unsafe {
19978                let this: &Identity =
19979                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
19980                IMSProvider_Impl::Logon(
19981                    this,
19982                    core::mem::transmute_copy(&lpmapisup),
19983                    core::mem::transmute_copy(&uluiparam),
19984                    core::mem::transmute_copy(&lpszprofilename),
19985                    core::mem::transmute_copy(&cbentryid),
19986                    core::mem::transmute_copy(&lpentryid),
19987                    core::mem::transmute_copy(&ulflags),
19988                    core::mem::transmute_copy(&lpinterface),
19989                    core::mem::transmute_copy(&lpcbspoolsecurity),
19990                    core::mem::transmute_copy(&lppbspoolsecurity),
19991                    core::mem::transmute_copy(&lppmapierror),
19992                    core::mem::transmute_copy(&lppmslogon),
19993                    core::mem::transmute_copy(&lppmdb),
19994                )
19995                .into()
19996            }
19997        }
19998        unsafe extern "system" fn SpoolerLogon<Identity: IMSProvider_Impl, const OFFSET: isize>(
19999            this: *mut core::ffi::c_void,
20000            lpmapisup: *mut core::ffi::c_void,
20001            uluiparam: usize,
20002            lpszprofilename: *mut i8,
20003            cbentryid: u32,
20004            lpentryid: *mut ENTRYID,
20005            ulflags: u32,
20006            lpinterface: *mut windows_core::GUID,
20007            cbspoolsecurity: u32,
20008            lpbspoolsecurity: *mut u8,
20009            lppmapierror: *mut *mut MAPIERROR,
20010            lppmslogon: *mut *mut core::ffi::c_void,
20011            lppmdb: *mut *mut core::ffi::c_void,
20012        ) -> windows_core::HRESULT {
20013            unsafe {
20014                let this: &Identity =
20015                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20016                IMSProvider_Impl::SpoolerLogon(
20017                    this,
20018                    core::mem::transmute_copy(&lpmapisup),
20019                    core::mem::transmute_copy(&uluiparam),
20020                    core::mem::transmute_copy(&lpszprofilename),
20021                    core::mem::transmute_copy(&cbentryid),
20022                    core::mem::transmute_copy(&lpentryid),
20023                    core::mem::transmute_copy(&ulflags),
20024                    core::mem::transmute_copy(&lpinterface),
20025                    core::mem::transmute_copy(&cbspoolsecurity),
20026                    core::mem::transmute_copy(&lpbspoolsecurity),
20027                    core::mem::transmute_copy(&lppmapierror),
20028                    core::mem::transmute_copy(&lppmslogon),
20029                    core::mem::transmute_copy(&lppmdb),
20030                )
20031                .into()
20032            }
20033        }
20034        unsafe extern "system" fn CompareStoreIDs<
20035            Identity: IMSProvider_Impl,
20036            const OFFSET: isize,
20037        >(
20038            this: *mut core::ffi::c_void,
20039            cbentryid1: u32,
20040            lpentryid1: *mut ENTRYID,
20041            cbentryid2: u32,
20042            lpentryid2: *mut ENTRYID,
20043            ulflags: u32,
20044            lpulresult: *mut u32,
20045        ) -> windows_core::HRESULT {
20046            unsafe {
20047                let this: &Identity =
20048                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20049                IMSProvider_Impl::CompareStoreIDs(
20050                    this,
20051                    core::mem::transmute_copy(&cbentryid1),
20052                    core::mem::transmute_copy(&lpentryid1),
20053                    core::mem::transmute_copy(&cbentryid2),
20054                    core::mem::transmute_copy(&lpentryid2),
20055                    core::mem::transmute_copy(&ulflags),
20056                    core::mem::transmute_copy(&lpulresult),
20057                )
20058                .into()
20059            }
20060        }
20061        Self {
20062            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
20063            Shutdown: Shutdown::<Identity, OFFSET>,
20064            Logon: Logon::<Identity, OFFSET>,
20065            SpoolerLogon: SpoolerLogon::<Identity, OFFSET>,
20066            CompareStoreIDs: CompareStoreIDs::<Identity, OFFSET>,
20067        }
20068    }
20069    pub fn matches(iid: &windows_core::GUID) -> bool {
20070        iid == &<IMSProvider as windows_core::Interface>::IID
20071    }
20072}
20073impl windows_core::RuntimeName for IMSProvider {}
20074pub const IMSProvider_CompareStoreIDs: METHODS = METHODS(111i32);
20075pub const IMSProvider_Logon: METHODS = METHODS(109i32);
20076pub const IMSProvider_Shutdown: METHODS = METHODS(108i32);
20077pub const IMSProvider_SpoolerLogon: METHODS = METHODS(110i32);
20078windows_core::imp::define_interface!(
20079    IMailUser,
20080    IMailUser_Vtbl,
20081    0x0002030a_0000_0000_c000_000000000046
20082);
20083impl core::ops::Deref for IMailUser {
20084    type Target = IMAPIProp;
20085    fn deref(&self) -> &Self::Target {
20086        unsafe { core::mem::transmute(self) }
20087    }
20088}
20089windows_core::imp::interface_hierarchy!(IMailUser, windows_core::IUnknown, IMAPIProp);
20090#[repr(C)]
20091#[doc(hidden)]
20092pub struct IMailUser_Vtbl {
20093    pub base__: IMAPIProp_Vtbl,
20094}
20095pub trait IMailUser_Impl: IMAPIProp_Impl {}
20096impl IMailUser_Vtbl {
20097    pub const fn new<Identity: IMailUser_Impl, const OFFSET: isize>() -> Self {
20098        Self {
20099            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
20100        }
20101    }
20102    pub fn matches(iid: &windows_core::GUID) -> bool {
20103        iid == &<IMailUser as windows_core::Interface>::IID
20104            || iid == &<IMAPIProp as windows_core::Interface>::IID
20105    }
20106}
20107impl windows_core::RuntimeName for IMailUser {}
20108windows_core::imp::define_interface!(
20109    IMessage,
20110    IMessage_Vtbl,
20111    0x00020307_0000_0000_c000_000000000046
20112);
20113impl core::ops::Deref for IMessage {
20114    type Target = IMAPIProp;
20115    fn deref(&self) -> &Self::Target {
20116        unsafe { core::mem::transmute(self) }
20117    }
20118}
20119windows_core::imp::interface_hierarchy!(IMessage, windows_core::IUnknown, IMAPIProp);
20120impl IMessage {
20121    pub unsafe fn GetAttachmentTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
20122        unsafe {
20123            let mut result__ = core::mem::zeroed();
20124            (windows_core::Interface::vtable(self).GetAttachmentTable)(
20125                windows_core::Interface::as_raw(self),
20126                ulflags,
20127                &mut result__,
20128            )
20129            .and_then(|| windows_core::Type::from_abi(result__))
20130        }
20131    }
20132    pub unsafe fn OpenAttach(
20133        &self,
20134        ulattachmentnum: u32,
20135        lpinterface: *mut windows_core::GUID,
20136        ulflags: u32,
20137        lppattach: *mut Option<IAttach>,
20138    ) -> windows_core::Result<()> {
20139        unsafe {
20140            (windows_core::Interface::vtable(self).OpenAttach)(
20141                windows_core::Interface::as_raw(self),
20142                ulattachmentnum,
20143                lpinterface as _,
20144                ulflags,
20145                core::mem::transmute(lppattach),
20146            )
20147            .ok()
20148        }
20149    }
20150    pub unsafe fn CreateAttach(
20151        &self,
20152        lpinterface: *mut windows_core::GUID,
20153        ulflags: u32,
20154        lpulattachmentnum: *mut u32,
20155        lppattach: *mut Option<IAttach>,
20156    ) -> windows_core::Result<()> {
20157        unsafe {
20158            (windows_core::Interface::vtable(self).CreateAttach)(
20159                windows_core::Interface::as_raw(self),
20160                lpinterface as _,
20161                ulflags,
20162                lpulattachmentnum as _,
20163                core::mem::transmute(lppattach),
20164            )
20165            .ok()
20166        }
20167    }
20168    pub unsafe fn DeleteAttach<P2>(
20169        &self,
20170        ulattachmentnum: u32,
20171        uluiparam: usize,
20172        lpprogress: P2,
20173        ulflags: u32,
20174    ) -> windows_core::Result<()>
20175    where
20176        P2: windows_core::Param<IMAPIProgress>,
20177    {
20178        unsafe {
20179            (windows_core::Interface::vtable(self).DeleteAttach)(
20180                windows_core::Interface::as_raw(self),
20181                ulattachmentnum,
20182                uluiparam,
20183                lpprogress.param().abi(),
20184                ulflags,
20185            )
20186            .ok()
20187        }
20188    }
20189    pub unsafe fn GetRecipientTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
20190        unsafe {
20191            let mut result__ = core::mem::zeroed();
20192            (windows_core::Interface::vtable(self).GetRecipientTable)(
20193                windows_core::Interface::as_raw(self),
20194                ulflags,
20195                &mut result__,
20196            )
20197            .and_then(|| windows_core::Type::from_abi(result__))
20198        }
20199    }
20200    pub unsafe fn ModifyRecipients(
20201        &self,
20202        ulflags: u32,
20203        lpmods: *mut ADRLIST,
20204    ) -> windows_core::Result<()> {
20205        unsafe {
20206            (windows_core::Interface::vtable(self).ModifyRecipients)(
20207                windows_core::Interface::as_raw(self),
20208                ulflags,
20209                lpmods as _,
20210            )
20211            .ok()
20212        }
20213    }
20214    pub unsafe fn SubmitMessage(&self, ulflags: u32) -> windows_core::Result<()> {
20215        unsafe {
20216            (windows_core::Interface::vtable(self).SubmitMessage)(
20217                windows_core::Interface::as_raw(self),
20218                ulflags,
20219            )
20220            .ok()
20221        }
20222    }
20223    pub unsafe fn SetReadFlag(&self, ulflags: u32) -> windows_core::Result<()> {
20224        unsafe {
20225            (windows_core::Interface::vtable(self).SetReadFlag)(
20226                windows_core::Interface::as_raw(self),
20227                ulflags,
20228            )
20229            .ok()
20230        }
20231    }
20232}
20233#[repr(C)]
20234#[doc(hidden)]
20235pub struct IMessage_Vtbl {
20236    pub base__: IMAPIProp_Vtbl,
20237    pub GetAttachmentTable: unsafe extern "system" fn(
20238        *mut core::ffi::c_void,
20239        u32,
20240        *mut *mut core::ffi::c_void,
20241    ) -> windows_core::HRESULT,
20242    pub OpenAttach: unsafe extern "system" fn(
20243        *mut core::ffi::c_void,
20244        u32,
20245        *mut windows_core::GUID,
20246        u32,
20247        *mut *mut core::ffi::c_void,
20248    ) -> windows_core::HRESULT,
20249    pub CreateAttach: unsafe extern "system" fn(
20250        *mut core::ffi::c_void,
20251        *mut windows_core::GUID,
20252        u32,
20253        *mut u32,
20254        *mut *mut core::ffi::c_void,
20255    ) -> windows_core::HRESULT,
20256    pub DeleteAttach: unsafe extern "system" fn(
20257        *mut core::ffi::c_void,
20258        u32,
20259        usize,
20260        *mut core::ffi::c_void,
20261        u32,
20262    ) -> windows_core::HRESULT,
20263    pub GetRecipientTable: unsafe extern "system" fn(
20264        *mut core::ffi::c_void,
20265        u32,
20266        *mut *mut core::ffi::c_void,
20267    ) -> windows_core::HRESULT,
20268    pub ModifyRecipients: unsafe extern "system" fn(
20269        *mut core::ffi::c_void,
20270        u32,
20271        *mut ADRLIST,
20272    ) -> windows_core::HRESULT,
20273    pub SubmitMessage:
20274        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
20275    pub SetReadFlag:
20276        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
20277}
20278pub trait IMessage_Impl: IMAPIProp_Impl {
20279    fn GetAttachmentTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
20280    fn OpenAttach(
20281        &self,
20282        ulattachmentnum: u32,
20283        lpinterface: *mut windows_core::GUID,
20284        ulflags: u32,
20285        lppattach: windows_core::OutRef<IAttach>,
20286    ) -> windows_core::Result<()>;
20287    fn CreateAttach(
20288        &self,
20289        lpinterface: *mut windows_core::GUID,
20290        ulflags: u32,
20291        lpulattachmentnum: *mut u32,
20292        lppattach: windows_core::OutRef<IAttach>,
20293    ) -> windows_core::Result<()>;
20294    fn DeleteAttach(
20295        &self,
20296        ulattachmentnum: u32,
20297        uluiparam: usize,
20298        lpprogress: windows_core::Ref<IMAPIProgress>,
20299        ulflags: u32,
20300    ) -> windows_core::Result<()>;
20301    fn GetRecipientTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
20302    fn ModifyRecipients(&self, ulflags: u32, lpmods: *mut ADRLIST) -> windows_core::Result<()>;
20303    fn SubmitMessage(&self, ulflags: u32) -> windows_core::Result<()>;
20304    fn SetReadFlag(&self, ulflags: u32) -> windows_core::Result<()>;
20305}
20306impl IMessage_Vtbl {
20307    pub const fn new<Identity: IMessage_Impl, const OFFSET: isize>() -> Self {
20308        unsafe extern "system" fn GetAttachmentTable<
20309            Identity: IMessage_Impl,
20310            const OFFSET: isize,
20311        >(
20312            this: *mut core::ffi::c_void,
20313            ulflags: u32,
20314            lpptable: *mut *mut core::ffi::c_void,
20315        ) -> windows_core::HRESULT {
20316            unsafe {
20317                let this: &Identity =
20318                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20319                match IMessage_Impl::GetAttachmentTable(this, core::mem::transmute_copy(&ulflags)) {
20320                    Ok(ok__) => {
20321                        lpptable.write(core::mem::transmute(ok__));
20322                        windows_core::HRESULT(0)
20323                    }
20324                    Err(err) => err.into(),
20325                }
20326            }
20327        }
20328        unsafe extern "system" fn OpenAttach<Identity: IMessage_Impl, const OFFSET: isize>(
20329            this: *mut core::ffi::c_void,
20330            ulattachmentnum: u32,
20331            lpinterface: *mut windows_core::GUID,
20332            ulflags: u32,
20333            lppattach: *mut *mut core::ffi::c_void,
20334        ) -> windows_core::HRESULT {
20335            unsafe {
20336                let this: &Identity =
20337                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20338                IMessage_Impl::OpenAttach(
20339                    this,
20340                    core::mem::transmute_copy(&ulattachmentnum),
20341                    core::mem::transmute_copy(&lpinterface),
20342                    core::mem::transmute_copy(&ulflags),
20343                    core::mem::transmute_copy(&lppattach),
20344                )
20345                .into()
20346            }
20347        }
20348        unsafe extern "system" fn CreateAttach<Identity: IMessage_Impl, const OFFSET: isize>(
20349            this: *mut core::ffi::c_void,
20350            lpinterface: *mut windows_core::GUID,
20351            ulflags: u32,
20352            lpulattachmentnum: *mut u32,
20353            lppattach: *mut *mut core::ffi::c_void,
20354        ) -> windows_core::HRESULT {
20355            unsafe {
20356                let this: &Identity =
20357                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20358                IMessage_Impl::CreateAttach(
20359                    this,
20360                    core::mem::transmute_copy(&lpinterface),
20361                    core::mem::transmute_copy(&ulflags),
20362                    core::mem::transmute_copy(&lpulattachmentnum),
20363                    core::mem::transmute_copy(&lppattach),
20364                )
20365                .into()
20366            }
20367        }
20368        unsafe extern "system" fn DeleteAttach<Identity: IMessage_Impl, const OFFSET: isize>(
20369            this: *mut core::ffi::c_void,
20370            ulattachmentnum: u32,
20371            uluiparam: usize,
20372            lpprogress: *mut core::ffi::c_void,
20373            ulflags: u32,
20374        ) -> windows_core::HRESULT {
20375            unsafe {
20376                let this: &Identity =
20377                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20378                IMessage_Impl::DeleteAttach(
20379                    this,
20380                    core::mem::transmute_copy(&ulattachmentnum),
20381                    core::mem::transmute_copy(&uluiparam),
20382                    core::mem::transmute_copy(&lpprogress),
20383                    core::mem::transmute_copy(&ulflags),
20384                )
20385                .into()
20386            }
20387        }
20388        unsafe extern "system" fn GetRecipientTable<
20389            Identity: IMessage_Impl,
20390            const OFFSET: isize,
20391        >(
20392            this: *mut core::ffi::c_void,
20393            ulflags: u32,
20394            lpptable: *mut *mut core::ffi::c_void,
20395        ) -> windows_core::HRESULT {
20396            unsafe {
20397                let this: &Identity =
20398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20399                match IMessage_Impl::GetRecipientTable(this, core::mem::transmute_copy(&ulflags)) {
20400                    Ok(ok__) => {
20401                        lpptable.write(core::mem::transmute(ok__));
20402                        windows_core::HRESULT(0)
20403                    }
20404                    Err(err) => err.into(),
20405                }
20406            }
20407        }
20408        unsafe extern "system" fn ModifyRecipients<Identity: IMessage_Impl, const OFFSET: isize>(
20409            this: *mut core::ffi::c_void,
20410            ulflags: u32,
20411            lpmods: *mut ADRLIST,
20412        ) -> windows_core::HRESULT {
20413            unsafe {
20414                let this: &Identity =
20415                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20416                IMessage_Impl::ModifyRecipients(
20417                    this,
20418                    core::mem::transmute_copy(&ulflags),
20419                    core::mem::transmute_copy(&lpmods),
20420                )
20421                .into()
20422            }
20423        }
20424        unsafe extern "system" fn SubmitMessage<Identity: IMessage_Impl, const OFFSET: isize>(
20425            this: *mut core::ffi::c_void,
20426            ulflags: u32,
20427        ) -> windows_core::HRESULT {
20428            unsafe {
20429                let this: &Identity =
20430                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20431                IMessage_Impl::SubmitMessage(this, core::mem::transmute_copy(&ulflags)).into()
20432            }
20433        }
20434        unsafe extern "system" fn SetReadFlag<Identity: IMessage_Impl, const OFFSET: isize>(
20435            this: *mut core::ffi::c_void,
20436            ulflags: u32,
20437        ) -> windows_core::HRESULT {
20438            unsafe {
20439                let this: &Identity =
20440                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20441                IMessage_Impl::SetReadFlag(this, core::mem::transmute_copy(&ulflags)).into()
20442            }
20443        }
20444        Self {
20445            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
20446            GetAttachmentTable: GetAttachmentTable::<Identity, OFFSET>,
20447            OpenAttach: OpenAttach::<Identity, OFFSET>,
20448            CreateAttach: CreateAttach::<Identity, OFFSET>,
20449            DeleteAttach: DeleteAttach::<Identity, OFFSET>,
20450            GetRecipientTable: GetRecipientTable::<Identity, OFFSET>,
20451            ModifyRecipients: ModifyRecipients::<Identity, OFFSET>,
20452            SubmitMessage: SubmitMessage::<Identity, OFFSET>,
20453            SetReadFlag: SetReadFlag::<Identity, OFFSET>,
20454        }
20455    }
20456    pub fn matches(iid: &windows_core::GUID) -> bool {
20457        iid == &<IMessage as windows_core::Interface>::IID
20458            || iid == &<IMAPIProp as windows_core::Interface>::IID
20459    }
20460}
20461impl windows_core::RuntimeName for IMessage {}
20462pub const IMessage_CreateAttach: METHODS = METHODS(76i32);
20463pub const IMessage_DeleteAttach: METHODS = METHODS(77i32);
20464pub const IMessage_GetAttachmentTable: METHODS = METHODS(74i32);
20465pub const IMessage_GetRecipientTable: METHODS = METHODS(78i32);
20466pub const IMessage_ModifyRecipients: METHODS = METHODS(79i32);
20467pub const IMessage_OpenAttach: METHODS = METHODS(75i32);
20468pub const IMessage_SetReadFlag: METHODS = METHODS(81i32);
20469pub const IMessage_SubmitMessage: METHODS = METHODS(80i32);
20470windows_core::imp::define_interface!(
20471    IMimeAddressTable,
20472    IMimeAddressTable_Vtbl,
20473    0xc558834a_7f86_11d0_8252_00c04fd85ab4
20474);
20475windows_core::imp::interface_hierarchy!(IMimeAddressTable, windows_core::IUnknown);
20476impl IMimeAddressTable {
20477    pub unsafe fn Append<P2, P3>(
20478        &self,
20479        dwadrtype: u32,
20480        ietfriendly: ENCODINGTYPE,
20481        pszfriendly: P2,
20482        pszemail: P3,
20483        phaddress: *mut *mut HADDRESS__,
20484    ) -> windows_core::Result<()>
20485    where
20486        P2: windows_core::Param<windows_core::PCSTR>,
20487        P3: windows_core::Param<windows_core::PCSTR>,
20488    {
20489        unsafe {
20490            (windows_core::Interface::vtable(self).Append)(
20491                windows_core::Interface::as_raw(self),
20492                dwadrtype,
20493                ietfriendly,
20494                pszfriendly.param().abi(),
20495                pszemail.param().abi(),
20496                phaddress as _,
20497            )
20498            .ok()
20499        }
20500    }
20501    pub unsafe fn Insert(
20502        &self,
20503        paddress: *mut ADDRESSPROPS,
20504        phaddress: *mut *mut HADDRESS__,
20505    ) -> windows_core::Result<()> {
20506        unsafe {
20507            (windows_core::Interface::vtable(self).Insert)(
20508                windows_core::Interface::as_raw(self),
20509                paddress as _,
20510                phaddress as _,
20511            )
20512            .ok()
20513        }
20514    }
20515    pub unsafe fn SetProps(
20516        &self,
20517        haddress: *mut HADDRESS__,
20518        paddress: *mut ADDRESSPROPS,
20519    ) -> windows_core::Result<()> {
20520        unsafe {
20521            (windows_core::Interface::vtable(self).SetProps)(
20522                windows_core::Interface::as_raw(self),
20523                haddress as _,
20524                paddress as _,
20525            )
20526            .ok()
20527        }
20528    }
20529    pub unsafe fn GetProps(
20530        &self,
20531        haddress: *mut HADDRESS__,
20532        paddress: *mut ADDRESSPROPS,
20533    ) -> windows_core::Result<()> {
20534        unsafe {
20535            (windows_core::Interface::vtable(self).GetProps)(
20536                windows_core::Interface::as_raw(self),
20537                haddress as _,
20538                paddress as _,
20539            )
20540            .ok()
20541        }
20542    }
20543    pub unsafe fn GetSender(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()> {
20544        unsafe {
20545            (windows_core::Interface::vtable(self).GetSender)(
20546                windows_core::Interface::as_raw(self),
20547                paddress as _,
20548            )
20549            .ok()
20550        }
20551    }
20552    pub unsafe fn CountTypes(&self, dwadrtypes: u32, pcadrs: *mut u32) -> windows_core::Result<()> {
20553        unsafe {
20554            (windows_core::Interface::vtable(self).CountTypes)(
20555                windows_core::Interface::as_raw(self),
20556                dwadrtypes,
20557                pcadrs as _,
20558            )
20559            .ok()
20560        }
20561    }
20562    pub unsafe fn GetTypes(
20563        &self,
20564        dwadrtypes: u32,
20565        dwprops: u32,
20566        plist: *mut ADDRESSLIST,
20567    ) -> windows_core::Result<()> {
20568        unsafe {
20569            (windows_core::Interface::vtable(self).GetTypes)(
20570                windows_core::Interface::as_raw(self),
20571                dwadrtypes,
20572                dwprops,
20573                plist as _,
20574            )
20575            .ok()
20576        }
20577    }
20578    pub unsafe fn EnumTypes(
20579        &self,
20580        dwadrtypes: u32,
20581        dwprops: u32,
20582    ) -> windows_core::Result<IMimeEnumAddressTypes> {
20583        unsafe {
20584            let mut result__ = core::mem::zeroed();
20585            (windows_core::Interface::vtable(self).EnumTypes)(
20586                windows_core::Interface::as_raw(self),
20587                dwadrtypes,
20588                dwprops,
20589                &mut result__,
20590            )
20591            .and_then(|| windows_core::Type::from_abi(result__))
20592        }
20593    }
20594    pub unsafe fn Delete(&self, haddress: *mut HADDRESS__) -> windows_core::Result<()> {
20595        unsafe {
20596            (windows_core::Interface::vtable(self).Delete)(
20597                windows_core::Interface::as_raw(self),
20598                haddress as _,
20599            )
20600            .ok()
20601        }
20602    }
20603    pub unsafe fn DeleteTypes(&self, dwadrtypes: u32) -> windows_core::Result<()> {
20604        unsafe {
20605            (windows_core::Interface::vtable(self).DeleteTypes)(
20606                windows_core::Interface::as_raw(self),
20607                dwadrtypes,
20608            )
20609            .ok()
20610        }
20611    }
20612    pub unsafe fn GetFormat(
20613        &self,
20614        dwadrtype: u32,
20615        format: ADDRESSFORMAT,
20616        ppszformat: *mut windows_core::PSTR,
20617    ) -> windows_core::Result<()> {
20618        unsafe {
20619            (windows_core::Interface::vtable(self).GetFormat)(
20620                windows_core::Interface::as_raw(self),
20621                dwadrtype,
20622                format,
20623                ppszformat as _,
20624            )
20625            .ok()
20626        }
20627    }
20628    pub unsafe fn AppendRfc822<P2>(
20629        &self,
20630        dwadrtype: u32,
20631        ietencoding: ENCODINGTYPE,
20632        pszrfc822adr: P2,
20633    ) -> windows_core::Result<()>
20634    where
20635        P2: windows_core::Param<windows_core::PCSTR>,
20636    {
20637        unsafe {
20638            (windows_core::Interface::vtable(self).AppendRfc822)(
20639                windows_core::Interface::as_raw(self),
20640                dwadrtype,
20641                ietencoding,
20642                pszrfc822adr.param().abi(),
20643            )
20644            .ok()
20645        }
20646    }
20647    pub unsafe fn ParseRfc822<P2>(
20648        &self,
20649        dwadrtype: u32,
20650        ietencoding: ENCODINGTYPE,
20651        pszrfc822adr: P2,
20652        plist: *mut ADDRESSLIST,
20653    ) -> windows_core::Result<()>
20654    where
20655        P2: windows_core::Param<windows_core::PCSTR>,
20656    {
20657        unsafe {
20658            (windows_core::Interface::vtable(self).ParseRfc822)(
20659                windows_core::Interface::as_raw(self),
20660                dwadrtype,
20661                ietencoding,
20662                pszrfc822adr.param().abi(),
20663                plist as _,
20664            )
20665            .ok()
20666        }
20667    }
20668    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeAddressTable> {
20669        unsafe {
20670            let mut result__ = core::mem::zeroed();
20671            (windows_core::Interface::vtable(self).Clone)(
20672                windows_core::Interface::as_raw(self),
20673                &mut result__,
20674            )
20675            .and_then(|| windows_core::Type::from_abi(result__))
20676        }
20677    }
20678    pub unsafe fn BindToObject(
20679        &self,
20680        riid: *const windows_core::GUID,
20681        ppvobject: *mut *mut core::ffi::c_void,
20682    ) -> windows_core::Result<()> {
20683        unsafe {
20684            (windows_core::Interface::vtable(self).BindToObject)(
20685                windows_core::Interface::as_raw(self),
20686                riid,
20687                ppvobject as _,
20688            )
20689            .ok()
20690        }
20691    }
20692}
20693#[repr(C)]
20694#[doc(hidden)]
20695pub struct IMimeAddressTable_Vtbl {
20696    pub base__: windows_core::IUnknown_Vtbl,
20697    pub Append: unsafe extern "system" fn(
20698        *mut core::ffi::c_void,
20699        u32,
20700        ENCODINGTYPE,
20701        windows_core::PCSTR,
20702        windows_core::PCSTR,
20703        *mut *mut HADDRESS__,
20704    ) -> windows_core::HRESULT,
20705    pub Insert: unsafe extern "system" fn(
20706        *mut core::ffi::c_void,
20707        *mut ADDRESSPROPS,
20708        *mut *mut HADDRESS__,
20709    ) -> windows_core::HRESULT,
20710    pub SetProps: unsafe extern "system" fn(
20711        *mut core::ffi::c_void,
20712        *mut HADDRESS__,
20713        *mut ADDRESSPROPS,
20714    ) -> windows_core::HRESULT,
20715    pub GetProps: unsafe extern "system" fn(
20716        *mut core::ffi::c_void,
20717        *mut HADDRESS__,
20718        *mut ADDRESSPROPS,
20719    ) -> windows_core::HRESULT,
20720    pub GetSender: unsafe extern "system" fn(
20721        *mut core::ffi::c_void,
20722        *mut ADDRESSPROPS,
20723    ) -> windows_core::HRESULT,
20724    pub CountTypes:
20725        unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
20726    pub GetTypes: unsafe extern "system" fn(
20727        *mut core::ffi::c_void,
20728        u32,
20729        u32,
20730        *mut ADDRESSLIST,
20731    ) -> windows_core::HRESULT,
20732    pub EnumTypes: unsafe extern "system" fn(
20733        *mut core::ffi::c_void,
20734        u32,
20735        u32,
20736        *mut *mut core::ffi::c_void,
20737    ) -> windows_core::HRESULT,
20738    pub Delete:
20739        unsafe extern "system" fn(*mut core::ffi::c_void, *mut HADDRESS__) -> windows_core::HRESULT,
20740    pub DeleteTypes:
20741        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
20742    pub GetFormat: unsafe extern "system" fn(
20743        *mut core::ffi::c_void,
20744        u32,
20745        ADDRESSFORMAT,
20746        *mut windows_core::PSTR,
20747    ) -> windows_core::HRESULT,
20748    pub AppendRfc822: unsafe extern "system" fn(
20749        *mut core::ffi::c_void,
20750        u32,
20751        ENCODINGTYPE,
20752        windows_core::PCSTR,
20753    ) -> windows_core::HRESULT,
20754    pub ParseRfc822: unsafe extern "system" fn(
20755        *mut core::ffi::c_void,
20756        u32,
20757        ENCODINGTYPE,
20758        windows_core::PCSTR,
20759        *mut ADDRESSLIST,
20760    ) -> windows_core::HRESULT,
20761    pub Clone: unsafe extern "system" fn(
20762        *mut core::ffi::c_void,
20763        *mut *mut core::ffi::c_void,
20764    ) -> windows_core::HRESULT,
20765    pub BindToObject: unsafe extern "system" fn(
20766        *mut core::ffi::c_void,
20767        *const windows_core::GUID,
20768        *mut *mut core::ffi::c_void,
20769    ) -> windows_core::HRESULT,
20770}
20771pub trait IMimeAddressTable_Impl: windows_core::IUnknownImpl {
20772    fn Append(
20773        &self,
20774        dwadrtype: u32,
20775        ietfriendly: ENCODINGTYPE,
20776        pszfriendly: &windows_core::PCSTR,
20777        pszemail: &windows_core::PCSTR,
20778        phaddress: *mut *mut HADDRESS__,
20779    ) -> windows_core::Result<()>;
20780    fn Insert(
20781        &self,
20782        paddress: *mut ADDRESSPROPS,
20783        phaddress: *mut *mut HADDRESS__,
20784    ) -> windows_core::Result<()>;
20785    fn SetProps(
20786        &self,
20787        haddress: *mut HADDRESS__,
20788        paddress: *mut ADDRESSPROPS,
20789    ) -> windows_core::Result<()>;
20790    fn GetProps(
20791        &self,
20792        haddress: *mut HADDRESS__,
20793        paddress: *mut ADDRESSPROPS,
20794    ) -> windows_core::Result<()>;
20795    fn GetSender(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()>;
20796    fn CountTypes(&self, dwadrtypes: u32, pcadrs: *mut u32) -> windows_core::Result<()>;
20797    fn GetTypes(
20798        &self,
20799        dwadrtypes: u32,
20800        dwprops: u32,
20801        plist: *mut ADDRESSLIST,
20802    ) -> windows_core::Result<()>;
20803    fn EnumTypes(
20804        &self,
20805        dwadrtypes: u32,
20806        dwprops: u32,
20807    ) -> windows_core::Result<IMimeEnumAddressTypes>;
20808    fn Delete(&self, haddress: *mut HADDRESS__) -> windows_core::Result<()>;
20809    fn DeleteTypes(&self, dwadrtypes: u32) -> windows_core::Result<()>;
20810    fn GetFormat(
20811        &self,
20812        dwadrtype: u32,
20813        format: ADDRESSFORMAT,
20814        ppszformat: *mut windows_core::PSTR,
20815    ) -> windows_core::Result<()>;
20816    fn AppendRfc822(
20817        &self,
20818        dwadrtype: u32,
20819        ietencoding: ENCODINGTYPE,
20820        pszrfc822adr: &windows_core::PCSTR,
20821    ) -> windows_core::Result<()>;
20822    fn ParseRfc822(
20823        &self,
20824        dwadrtype: u32,
20825        ietencoding: ENCODINGTYPE,
20826        pszrfc822adr: &windows_core::PCSTR,
20827        plist: *mut ADDRESSLIST,
20828    ) -> windows_core::Result<()>;
20829    fn Clone(&self) -> windows_core::Result<IMimeAddressTable>;
20830    fn BindToObject(
20831        &self,
20832        riid: *const windows_core::GUID,
20833        ppvobject: *mut *mut core::ffi::c_void,
20834    ) -> windows_core::Result<()>;
20835}
20836impl IMimeAddressTable_Vtbl {
20837    pub const fn new<Identity: IMimeAddressTable_Impl, const OFFSET: isize>() -> Self {
20838        unsafe extern "system" fn Append<Identity: IMimeAddressTable_Impl, const OFFSET: isize>(
20839            this: *mut core::ffi::c_void,
20840            dwadrtype: u32,
20841            ietfriendly: ENCODINGTYPE,
20842            pszfriendly: windows_core::PCSTR,
20843            pszemail: windows_core::PCSTR,
20844            phaddress: *mut *mut HADDRESS__,
20845        ) -> windows_core::HRESULT {
20846            unsafe {
20847                let this: &Identity =
20848                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20849                IMimeAddressTable_Impl::Append(
20850                    this,
20851                    core::mem::transmute_copy(&dwadrtype),
20852                    core::mem::transmute_copy(&ietfriendly),
20853                    core::mem::transmute(&pszfriendly),
20854                    core::mem::transmute(&pszemail),
20855                    core::mem::transmute_copy(&phaddress),
20856                )
20857                .into()
20858            }
20859        }
20860        unsafe extern "system" fn Insert<Identity: IMimeAddressTable_Impl, const OFFSET: isize>(
20861            this: *mut core::ffi::c_void,
20862            paddress: *mut ADDRESSPROPS,
20863            phaddress: *mut *mut HADDRESS__,
20864        ) -> windows_core::HRESULT {
20865            unsafe {
20866                let this: &Identity =
20867                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20868                IMimeAddressTable_Impl::Insert(
20869                    this,
20870                    core::mem::transmute_copy(&paddress),
20871                    core::mem::transmute_copy(&phaddress),
20872                )
20873                .into()
20874            }
20875        }
20876        unsafe extern "system" fn SetProps<
20877            Identity: IMimeAddressTable_Impl,
20878            const OFFSET: isize,
20879        >(
20880            this: *mut core::ffi::c_void,
20881            haddress: *mut HADDRESS__,
20882            paddress: *mut ADDRESSPROPS,
20883        ) -> windows_core::HRESULT {
20884            unsafe {
20885                let this: &Identity =
20886                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20887                IMimeAddressTable_Impl::SetProps(
20888                    this,
20889                    core::mem::transmute_copy(&haddress),
20890                    core::mem::transmute_copy(&paddress),
20891                )
20892                .into()
20893            }
20894        }
20895        unsafe extern "system" fn GetProps<
20896            Identity: IMimeAddressTable_Impl,
20897            const OFFSET: isize,
20898        >(
20899            this: *mut core::ffi::c_void,
20900            haddress: *mut HADDRESS__,
20901            paddress: *mut ADDRESSPROPS,
20902        ) -> windows_core::HRESULT {
20903            unsafe {
20904                let this: &Identity =
20905                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20906                IMimeAddressTable_Impl::GetProps(
20907                    this,
20908                    core::mem::transmute_copy(&haddress),
20909                    core::mem::transmute_copy(&paddress),
20910                )
20911                .into()
20912            }
20913        }
20914        unsafe extern "system" fn GetSender<
20915            Identity: IMimeAddressTable_Impl,
20916            const OFFSET: isize,
20917        >(
20918            this: *mut core::ffi::c_void,
20919            paddress: *mut ADDRESSPROPS,
20920        ) -> windows_core::HRESULT {
20921            unsafe {
20922                let this: &Identity =
20923                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20924                IMimeAddressTable_Impl::GetSender(this, core::mem::transmute_copy(&paddress)).into()
20925            }
20926        }
20927        unsafe extern "system" fn CountTypes<
20928            Identity: IMimeAddressTable_Impl,
20929            const OFFSET: isize,
20930        >(
20931            this: *mut core::ffi::c_void,
20932            dwadrtypes: u32,
20933            pcadrs: *mut u32,
20934        ) -> windows_core::HRESULT {
20935            unsafe {
20936                let this: &Identity =
20937                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20938                IMimeAddressTable_Impl::CountTypes(
20939                    this,
20940                    core::mem::transmute_copy(&dwadrtypes),
20941                    core::mem::transmute_copy(&pcadrs),
20942                )
20943                .into()
20944            }
20945        }
20946        unsafe extern "system" fn GetTypes<
20947            Identity: IMimeAddressTable_Impl,
20948            const OFFSET: isize,
20949        >(
20950            this: *mut core::ffi::c_void,
20951            dwadrtypes: u32,
20952            dwprops: u32,
20953            plist: *mut ADDRESSLIST,
20954        ) -> windows_core::HRESULT {
20955            unsafe {
20956                let this: &Identity =
20957                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20958                IMimeAddressTable_Impl::GetTypes(
20959                    this,
20960                    core::mem::transmute_copy(&dwadrtypes),
20961                    core::mem::transmute_copy(&dwprops),
20962                    core::mem::transmute_copy(&plist),
20963                )
20964                .into()
20965            }
20966        }
20967        unsafe extern "system" fn EnumTypes<
20968            Identity: IMimeAddressTable_Impl,
20969            const OFFSET: isize,
20970        >(
20971            this: *mut core::ffi::c_void,
20972            dwadrtypes: u32,
20973            dwprops: u32,
20974            ppenum: *mut *mut core::ffi::c_void,
20975        ) -> windows_core::HRESULT {
20976            unsafe {
20977                let this: &Identity =
20978                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20979                match IMimeAddressTable_Impl::EnumTypes(
20980                    this,
20981                    core::mem::transmute_copy(&dwadrtypes),
20982                    core::mem::transmute_copy(&dwprops),
20983                ) {
20984                    Ok(ok__) => {
20985                        ppenum.write(core::mem::transmute(ok__));
20986                        windows_core::HRESULT(0)
20987                    }
20988                    Err(err) => err.into(),
20989                }
20990            }
20991        }
20992        unsafe extern "system" fn Delete<Identity: IMimeAddressTable_Impl, const OFFSET: isize>(
20993            this: *mut core::ffi::c_void,
20994            haddress: *mut HADDRESS__,
20995        ) -> windows_core::HRESULT {
20996            unsafe {
20997                let this: &Identity =
20998                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
20999                IMimeAddressTable_Impl::Delete(this, core::mem::transmute_copy(&haddress)).into()
21000            }
21001        }
21002        unsafe extern "system" fn DeleteTypes<
21003            Identity: IMimeAddressTable_Impl,
21004            const OFFSET: isize,
21005        >(
21006            this: *mut core::ffi::c_void,
21007            dwadrtypes: u32,
21008        ) -> windows_core::HRESULT {
21009            unsafe {
21010                let this: &Identity =
21011                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21012                IMimeAddressTable_Impl::DeleteTypes(this, core::mem::transmute_copy(&dwadrtypes))
21013                    .into()
21014            }
21015        }
21016        unsafe extern "system" fn GetFormat<
21017            Identity: IMimeAddressTable_Impl,
21018            const OFFSET: isize,
21019        >(
21020            this: *mut core::ffi::c_void,
21021            dwadrtype: u32,
21022            format: ADDRESSFORMAT,
21023            ppszformat: *mut windows_core::PSTR,
21024        ) -> windows_core::HRESULT {
21025            unsafe {
21026                let this: &Identity =
21027                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21028                IMimeAddressTable_Impl::GetFormat(
21029                    this,
21030                    core::mem::transmute_copy(&dwadrtype),
21031                    core::mem::transmute_copy(&format),
21032                    core::mem::transmute_copy(&ppszformat),
21033                )
21034                .into()
21035            }
21036        }
21037        unsafe extern "system" fn AppendRfc822<
21038            Identity: IMimeAddressTable_Impl,
21039            const OFFSET: isize,
21040        >(
21041            this: *mut core::ffi::c_void,
21042            dwadrtype: u32,
21043            ietencoding: ENCODINGTYPE,
21044            pszrfc822adr: windows_core::PCSTR,
21045        ) -> windows_core::HRESULT {
21046            unsafe {
21047                let this: &Identity =
21048                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21049                IMimeAddressTable_Impl::AppendRfc822(
21050                    this,
21051                    core::mem::transmute_copy(&dwadrtype),
21052                    core::mem::transmute_copy(&ietencoding),
21053                    core::mem::transmute(&pszrfc822adr),
21054                )
21055                .into()
21056            }
21057        }
21058        unsafe extern "system" fn ParseRfc822<
21059            Identity: IMimeAddressTable_Impl,
21060            const OFFSET: isize,
21061        >(
21062            this: *mut core::ffi::c_void,
21063            dwadrtype: u32,
21064            ietencoding: ENCODINGTYPE,
21065            pszrfc822adr: windows_core::PCSTR,
21066            plist: *mut ADDRESSLIST,
21067        ) -> windows_core::HRESULT {
21068            unsafe {
21069                let this: &Identity =
21070                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21071                IMimeAddressTable_Impl::ParseRfc822(
21072                    this,
21073                    core::mem::transmute_copy(&dwadrtype),
21074                    core::mem::transmute_copy(&ietencoding),
21075                    core::mem::transmute(&pszrfc822adr),
21076                    core::mem::transmute_copy(&plist),
21077                )
21078                .into()
21079            }
21080        }
21081        unsafe extern "system" fn Clone<Identity: IMimeAddressTable_Impl, const OFFSET: isize>(
21082            this: *mut core::ffi::c_void,
21083            pptable: *mut *mut core::ffi::c_void,
21084        ) -> windows_core::HRESULT {
21085            unsafe {
21086                let this: &Identity =
21087                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21088                match IMimeAddressTable_Impl::Clone(this) {
21089                    Ok(ok__) => {
21090                        pptable.write(core::mem::transmute(ok__));
21091                        windows_core::HRESULT(0)
21092                    }
21093                    Err(err) => err.into(),
21094                }
21095            }
21096        }
21097        unsafe extern "system" fn BindToObject<
21098            Identity: IMimeAddressTable_Impl,
21099            const OFFSET: isize,
21100        >(
21101            this: *mut core::ffi::c_void,
21102            riid: *const windows_core::GUID,
21103            ppvobject: *mut *mut core::ffi::c_void,
21104        ) -> windows_core::HRESULT {
21105            unsafe {
21106                let this: &Identity =
21107                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21108                IMimeAddressTable_Impl::BindToObject(
21109                    this,
21110                    core::mem::transmute_copy(&riid),
21111                    core::mem::transmute_copy(&ppvobject),
21112                )
21113                .into()
21114            }
21115        }
21116        Self {
21117            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
21118            Append: Append::<Identity, OFFSET>,
21119            Insert: Insert::<Identity, OFFSET>,
21120            SetProps: SetProps::<Identity, OFFSET>,
21121            GetProps: GetProps::<Identity, OFFSET>,
21122            GetSender: GetSender::<Identity, OFFSET>,
21123            CountTypes: CountTypes::<Identity, OFFSET>,
21124            GetTypes: GetTypes::<Identity, OFFSET>,
21125            EnumTypes: EnumTypes::<Identity, OFFSET>,
21126            Delete: Delete::<Identity, OFFSET>,
21127            DeleteTypes: DeleteTypes::<Identity, OFFSET>,
21128            GetFormat: GetFormat::<Identity, OFFSET>,
21129            AppendRfc822: AppendRfc822::<Identity, OFFSET>,
21130            ParseRfc822: ParseRfc822::<Identity, OFFSET>,
21131            Clone: Clone::<Identity, OFFSET>,
21132            BindToObject: BindToObject::<Identity, OFFSET>,
21133        }
21134    }
21135    pub fn matches(iid: &windows_core::GUID) -> bool {
21136        iid == &<IMimeAddressTable as windows_core::Interface>::IID
21137    }
21138}
21139impl windows_core::RuntimeName for IMimeAddressTable {}
21140windows_core::imp::define_interface!(
21141    IMimeAllocator,
21142    IMimeAllocator_Vtbl,
21143    0xc5588351_7f86_11d0_8252_00c04fd85ab4
21144);
21145impl core::ops::Deref for IMimeAllocator {
21146    type Target = windows::Win32::System::Com::IMalloc;
21147    fn deref(&self) -> &Self::Target {
21148        unsafe { core::mem::transmute(self) }
21149    }
21150}
21151windows_core::imp::interface_hierarchy!(
21152    IMimeAllocator,
21153    windows_core::IUnknown,
21154    windows::Win32::System::Com::IMalloc
21155);
21156impl IMimeAllocator {
21157    pub unsafe fn FreeParamInfoArray(
21158        &self,
21159        cparams: u32,
21160        prgparam: *mut MIMEPARAMINFO,
21161        ffreearray: u8,
21162    ) -> windows_core::Result<()> {
21163        unsafe {
21164            (windows_core::Interface::vtable(self).FreeParamInfoArray)(
21165                windows_core::Interface::as_raw(self),
21166                cparams,
21167                prgparam as _,
21168                ffreearray,
21169            )
21170            .ok()
21171        }
21172    }
21173    pub unsafe fn FreeAddressList(&self, plist: *mut ADDRESSLIST) -> windows_core::Result<()> {
21174        unsafe {
21175            (windows_core::Interface::vtable(self).FreeAddressList)(
21176                windows_core::Interface::as_raw(self),
21177                plist as _,
21178            )
21179            .ok()
21180        }
21181    }
21182    pub unsafe fn FreeAddressProps(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()> {
21183        unsafe {
21184            (windows_core::Interface::vtable(self).FreeAddressProps)(
21185                windows_core::Interface::as_raw(self),
21186                paddress as _,
21187            )
21188            .ok()
21189        }
21190    }
21191    pub unsafe fn ReleaseObjects(
21192        &self,
21193        cobjects: u32,
21194        prgpunknown: *mut Option<windows_core::IUnknown>,
21195        ffreearray: u8,
21196    ) -> windows_core::Result<()> {
21197        unsafe {
21198            (windows_core::Interface::vtable(self).ReleaseObjects)(
21199                windows_core::Interface::as_raw(self),
21200                cobjects,
21201                core::mem::transmute(prgpunknown),
21202                ffreearray,
21203            )
21204            .ok()
21205        }
21206    }
21207    pub unsafe fn FreeEnumHeaderRowArray(
21208        &self,
21209        crows: u32,
21210        prgrow: *mut ENUMHEADERROW,
21211        ffreearray: u8,
21212    ) -> windows_core::Result<()> {
21213        unsafe {
21214            (windows_core::Interface::vtable(self).FreeEnumHeaderRowArray)(
21215                windows_core::Interface::as_raw(self),
21216                crows,
21217                prgrow as _,
21218                ffreearray,
21219            )
21220            .ok()
21221        }
21222    }
21223    pub unsafe fn FreeEnumPropertyArray(
21224        &self,
21225        cprops: u32,
21226        prgprop: *mut ENUMPROPERTY,
21227        ffreearray: u8,
21228    ) -> windows_core::Result<()> {
21229        unsafe {
21230            (windows_core::Interface::vtable(self).FreeEnumPropertyArray)(
21231                windows_core::Interface::as_raw(self),
21232                cprops,
21233                prgprop as _,
21234                ffreearray,
21235            )
21236            .ok()
21237        }
21238    }
21239    pub unsafe fn FreeThumbprint(
21240        &self,
21241        pthumbprint: *mut windows::Win32::System::Com::BLOB,
21242    ) -> windows_core::Result<()> {
21243        unsafe {
21244            (windows_core::Interface::vtable(self).FreeThumbprint)(
21245                windows_core::Interface::as_raw(self),
21246                pthumbprint as _,
21247            )
21248            .ok()
21249        }
21250    }
21251    pub unsafe fn PropVariantClear(
21252        &self,
21253        pprop: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
21254    ) -> windows_core::Result<()> {
21255        unsafe {
21256            (windows_core::Interface::vtable(self).PropVariantClear)(
21257                windows_core::Interface::as_raw(self),
21258                core::mem::transmute(pprop),
21259            )
21260            .ok()
21261        }
21262    }
21263}
21264#[repr(C)]
21265#[doc(hidden)]
21266pub struct IMimeAllocator_Vtbl {
21267    pub base__: windows::Win32::System::Com::IMalloc_Vtbl,
21268    pub FreeParamInfoArray: unsafe extern "system" fn(
21269        *mut core::ffi::c_void,
21270        u32,
21271        *mut MIMEPARAMINFO,
21272        u8,
21273    ) -> windows_core::HRESULT,
21274    pub FreeAddressList: unsafe extern "system" fn(
21275        *mut core::ffi::c_void,
21276        *mut ADDRESSLIST,
21277    ) -> windows_core::HRESULT,
21278    pub FreeAddressProps: unsafe extern "system" fn(
21279        *mut core::ffi::c_void,
21280        *mut ADDRESSPROPS,
21281    ) -> windows_core::HRESULT,
21282    pub ReleaseObjects: unsafe extern "system" fn(
21283        *mut core::ffi::c_void,
21284        u32,
21285        *mut *mut core::ffi::c_void,
21286        u8,
21287    ) -> windows_core::HRESULT,
21288    pub FreeEnumHeaderRowArray: unsafe extern "system" fn(
21289        *mut core::ffi::c_void,
21290        u32,
21291        *mut ENUMHEADERROW,
21292        u8,
21293    ) -> windows_core::HRESULT,
21294    pub FreeEnumPropertyArray: unsafe extern "system" fn(
21295        *mut core::ffi::c_void,
21296        u32,
21297        *mut ENUMPROPERTY,
21298        u8,
21299    ) -> windows_core::HRESULT,
21300    pub FreeThumbprint: unsafe extern "system" fn(
21301        *mut core::ffi::c_void,
21302        *mut windows::Win32::System::Com::BLOB,
21303    ) -> windows_core::HRESULT,
21304    pub PropVariantClear: unsafe extern "system" fn(
21305        *mut core::ffi::c_void,
21306        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
21307    ) -> windows_core::HRESULT,
21308}
21309pub trait IMimeAllocator_Impl: windows::Win32::System::Com::IMalloc_Impl {
21310    fn FreeParamInfoArray(
21311        &self,
21312        cparams: u32,
21313        prgparam: *mut MIMEPARAMINFO,
21314        ffreearray: u8,
21315    ) -> windows_core::Result<()>;
21316    fn FreeAddressList(&self, plist: *mut ADDRESSLIST) -> windows_core::Result<()>;
21317    fn FreeAddressProps(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()>;
21318    fn ReleaseObjects(
21319        &self,
21320        cobjects: u32,
21321        prgpunknown: windows_core::OutRef<windows_core::IUnknown>,
21322        ffreearray: u8,
21323    ) -> windows_core::Result<()>;
21324    fn FreeEnumHeaderRowArray(
21325        &self,
21326        crows: u32,
21327        prgrow: *mut ENUMHEADERROW,
21328        ffreearray: u8,
21329    ) -> windows_core::Result<()>;
21330    fn FreeEnumPropertyArray(
21331        &self,
21332        cprops: u32,
21333        prgprop: *mut ENUMPROPERTY,
21334        ffreearray: u8,
21335    ) -> windows_core::Result<()>;
21336    fn FreeThumbprint(
21337        &self,
21338        pthumbprint: *mut windows::Win32::System::Com::BLOB,
21339    ) -> windows_core::Result<()>;
21340    fn PropVariantClear(
21341        &self,
21342        pprop: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
21343    ) -> windows_core::Result<()>;
21344}
21345impl IMimeAllocator_Vtbl {
21346    pub const fn new<Identity: IMimeAllocator_Impl, const OFFSET: isize>() -> Self {
21347        unsafe extern "system" fn FreeParamInfoArray<
21348            Identity: IMimeAllocator_Impl,
21349            const OFFSET: isize,
21350        >(
21351            this: *mut core::ffi::c_void,
21352            cparams: u32,
21353            prgparam: *mut MIMEPARAMINFO,
21354            ffreearray: u8,
21355        ) -> windows_core::HRESULT {
21356            unsafe {
21357                let this: &Identity =
21358                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21359                IMimeAllocator_Impl::FreeParamInfoArray(
21360                    this,
21361                    core::mem::transmute_copy(&cparams),
21362                    core::mem::transmute_copy(&prgparam),
21363                    core::mem::transmute_copy(&ffreearray),
21364                )
21365                .into()
21366            }
21367        }
21368        unsafe extern "system" fn FreeAddressList<
21369            Identity: IMimeAllocator_Impl,
21370            const OFFSET: isize,
21371        >(
21372            this: *mut core::ffi::c_void,
21373            plist: *mut ADDRESSLIST,
21374        ) -> windows_core::HRESULT {
21375            unsafe {
21376                let this: &Identity =
21377                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21378                IMimeAllocator_Impl::FreeAddressList(this, core::mem::transmute_copy(&plist)).into()
21379            }
21380        }
21381        unsafe extern "system" fn FreeAddressProps<
21382            Identity: IMimeAllocator_Impl,
21383            const OFFSET: isize,
21384        >(
21385            this: *mut core::ffi::c_void,
21386            paddress: *mut ADDRESSPROPS,
21387        ) -> windows_core::HRESULT {
21388            unsafe {
21389                let this: &Identity =
21390                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21391                IMimeAllocator_Impl::FreeAddressProps(this, core::mem::transmute_copy(&paddress))
21392                    .into()
21393            }
21394        }
21395        unsafe extern "system" fn ReleaseObjects<
21396            Identity: IMimeAllocator_Impl,
21397            const OFFSET: isize,
21398        >(
21399            this: *mut core::ffi::c_void,
21400            cobjects: u32,
21401            prgpunknown: *mut *mut core::ffi::c_void,
21402            ffreearray: u8,
21403        ) -> windows_core::HRESULT {
21404            unsafe {
21405                let this: &Identity =
21406                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21407                IMimeAllocator_Impl::ReleaseObjects(
21408                    this,
21409                    core::mem::transmute_copy(&cobjects),
21410                    core::mem::transmute_copy(&prgpunknown),
21411                    core::mem::transmute_copy(&ffreearray),
21412                )
21413                .into()
21414            }
21415        }
21416        unsafe extern "system" fn FreeEnumHeaderRowArray<
21417            Identity: IMimeAllocator_Impl,
21418            const OFFSET: isize,
21419        >(
21420            this: *mut core::ffi::c_void,
21421            crows: u32,
21422            prgrow: *mut ENUMHEADERROW,
21423            ffreearray: u8,
21424        ) -> windows_core::HRESULT {
21425            unsafe {
21426                let this: &Identity =
21427                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21428                IMimeAllocator_Impl::FreeEnumHeaderRowArray(
21429                    this,
21430                    core::mem::transmute_copy(&crows),
21431                    core::mem::transmute_copy(&prgrow),
21432                    core::mem::transmute_copy(&ffreearray),
21433                )
21434                .into()
21435            }
21436        }
21437        unsafe extern "system" fn FreeEnumPropertyArray<
21438            Identity: IMimeAllocator_Impl,
21439            const OFFSET: isize,
21440        >(
21441            this: *mut core::ffi::c_void,
21442            cprops: u32,
21443            prgprop: *mut ENUMPROPERTY,
21444            ffreearray: u8,
21445        ) -> windows_core::HRESULT {
21446            unsafe {
21447                let this: &Identity =
21448                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21449                IMimeAllocator_Impl::FreeEnumPropertyArray(
21450                    this,
21451                    core::mem::transmute_copy(&cprops),
21452                    core::mem::transmute_copy(&prgprop),
21453                    core::mem::transmute_copy(&ffreearray),
21454                )
21455                .into()
21456            }
21457        }
21458        unsafe extern "system" fn FreeThumbprint<
21459            Identity: IMimeAllocator_Impl,
21460            const OFFSET: isize,
21461        >(
21462            this: *mut core::ffi::c_void,
21463            pthumbprint: *mut windows::Win32::System::Com::BLOB,
21464        ) -> windows_core::HRESULT {
21465            unsafe {
21466                let this: &Identity =
21467                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21468                IMimeAllocator_Impl::FreeThumbprint(this, core::mem::transmute_copy(&pthumbprint))
21469                    .into()
21470            }
21471        }
21472        unsafe extern "system" fn PropVariantClear<
21473            Identity: IMimeAllocator_Impl,
21474            const OFFSET: isize,
21475        >(
21476            this: *mut core::ffi::c_void,
21477            pprop: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
21478        ) -> windows_core::HRESULT {
21479            unsafe {
21480                let this: &Identity =
21481                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21482                IMimeAllocator_Impl::PropVariantClear(this, core::mem::transmute_copy(&pprop))
21483                    .into()
21484            }
21485        }
21486        Self {
21487            base__: windows::Win32::System::Com::IMalloc_Vtbl::new::<Identity, OFFSET>(),
21488            FreeParamInfoArray: FreeParamInfoArray::<Identity, OFFSET>,
21489            FreeAddressList: FreeAddressList::<Identity, OFFSET>,
21490            FreeAddressProps: FreeAddressProps::<Identity, OFFSET>,
21491            ReleaseObjects: ReleaseObjects::<Identity, OFFSET>,
21492            FreeEnumHeaderRowArray: FreeEnumHeaderRowArray::<Identity, OFFSET>,
21493            FreeEnumPropertyArray: FreeEnumPropertyArray::<Identity, OFFSET>,
21494            FreeThumbprint: FreeThumbprint::<Identity, OFFSET>,
21495            PropVariantClear: PropVariantClear::<Identity, OFFSET>,
21496        }
21497    }
21498    pub fn matches(iid: &windows_core::GUID) -> bool {
21499        iid == &<IMimeAllocator as windows_core::Interface>::IID
21500            || iid == &<windows::Win32::System::Com::IMalloc as windows_core::Interface>::IID
21501    }
21502}
21503impl windows_core::RuntimeName for IMimeAllocator {}
21504windows_core::imp::define_interface!(
21505    IMimeBody,
21506    IMimeBody_Vtbl,
21507    0xc558834c_7f86_11d0_8252_00c04fd85ab4
21508);
21509impl core::ops::Deref for IMimeBody {
21510    type Target = IMimePropertySet;
21511    fn deref(&self) -> &Self::Target {
21512        unsafe { core::mem::transmute(self) }
21513    }
21514}
21515windows_core::imp::interface_hierarchy!(
21516    IMimeBody,
21517    windows_core::IUnknown,
21518    windows::Win32::System::Com::IPersist,
21519    windows::Win32::System::Com::IPersistStreamInit,
21520    IMimePropertySet
21521);
21522impl IMimeBody {
21523    pub unsafe fn IsType(&self, bodytype: IMSGBODYTYPE) -> windows_core::Result<()> {
21524        unsafe {
21525            (windows_core::Interface::vtable(self).IsType)(
21526                windows_core::Interface::as_raw(self),
21527                bodytype,
21528            )
21529            .ok()
21530        }
21531    }
21532    pub unsafe fn SetDisplayName<P0>(&self, pszdisplay: P0) -> windows_core::Result<()>
21533    where
21534        P0: windows_core::Param<windows_core::PCSTR>,
21535    {
21536        unsafe {
21537            (windows_core::Interface::vtable(self).SetDisplayName)(
21538                windows_core::Interface::as_raw(self),
21539                pszdisplay.param().abi(),
21540            )
21541            .ok()
21542        }
21543    }
21544    pub unsafe fn GetDisplayName(
21545        &self,
21546        ppszdisplay: *mut windows_core::PSTR,
21547    ) -> windows_core::Result<()> {
21548        unsafe {
21549            (windows_core::Interface::vtable(self).GetDisplayName)(
21550                windows_core::Interface::as_raw(self),
21551                ppszdisplay as _,
21552            )
21553            .ok()
21554        }
21555    }
21556    pub unsafe fn GetOffsets(&self, poffsets: *mut BODYOFFSETS) -> windows_core::Result<()> {
21557        unsafe {
21558            (windows_core::Interface::vtable(self).GetOffsets)(
21559                windows_core::Interface::as_raw(self),
21560                poffsets as _,
21561            )
21562            .ok()
21563        }
21564    }
21565    pub unsafe fn GetCurrentEncoding(
21566        &self,
21567        pietencoding: *mut ENCODINGTYPE,
21568    ) -> windows_core::Result<()> {
21569        unsafe {
21570            (windows_core::Interface::vtable(self).GetCurrentEncoding)(
21571                windows_core::Interface::as_raw(self),
21572                pietencoding as _,
21573            )
21574            .ok()
21575        }
21576    }
21577    pub unsafe fn SetCurrentEncoding(&self, ietencoding: ENCODINGTYPE) -> windows_core::Result<()> {
21578        unsafe {
21579            (windows_core::Interface::vtable(self).SetCurrentEncoding)(
21580                windows_core::Interface::as_raw(self),
21581                ietencoding,
21582            )
21583            .ok()
21584        }
21585    }
21586    pub unsafe fn GetEstimatedSize(
21587        &self,
21588        ietencoding: ENCODINGTYPE,
21589        pcbsize: *mut u32,
21590    ) -> windows_core::Result<()> {
21591        unsafe {
21592            (windows_core::Interface::vtable(self).GetEstimatedSize)(
21593                windows_core::Interface::as_raw(self),
21594                ietencoding,
21595                pcbsize as _,
21596            )
21597            .ok()
21598        }
21599    }
21600    pub unsafe fn GetDataHere<P1>(
21601        &self,
21602        ietencoding: ENCODINGTYPE,
21603        pstream: P1,
21604    ) -> windows_core::Result<()>
21605    where
21606        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
21607    {
21608        unsafe {
21609            (windows_core::Interface::vtable(self).GetDataHere)(
21610                windows_core::Interface::as_raw(self),
21611                ietencoding,
21612                pstream.param().abi(),
21613            )
21614            .ok()
21615        }
21616    }
21617    pub unsafe fn GetData(
21618        &self,
21619        ietencoding: ENCODINGTYPE,
21620    ) -> windows_core::Result<windows::Win32::System::Com::IStream> {
21621        unsafe {
21622            let mut result__ = core::mem::zeroed();
21623            (windows_core::Interface::vtable(self).GetData)(
21624                windows_core::Interface::as_raw(self),
21625                ietencoding,
21626                &mut result__,
21627            )
21628            .and_then(|| windows_core::Type::from_abi(result__))
21629        }
21630    }
21631    pub unsafe fn SetData<P1, P2>(
21632        &self,
21633        ietencoding: ENCODINGTYPE,
21634        pszpritype: P1,
21635        pszsubtype: P2,
21636        riid: *const windows_core::GUID,
21637        pvobject: *mut core::ffi::c_void,
21638    ) -> windows_core::Result<()>
21639    where
21640        P1: windows_core::Param<windows_core::PCSTR>,
21641        P2: windows_core::Param<windows_core::PCSTR>,
21642    {
21643        unsafe {
21644            (windows_core::Interface::vtable(self).SetData)(
21645                windows_core::Interface::as_raw(self),
21646                ietencoding,
21647                pszpritype.param().abi(),
21648                pszsubtype.param().abi(),
21649                riid,
21650                pvobject as _,
21651            )
21652            .ok()
21653        }
21654    }
21655    pub unsafe fn EmptyData(&self) -> windows_core::Result<()> {
21656        unsafe {
21657            (windows_core::Interface::vtable(self).EmptyData)(windows_core::Interface::as_raw(self))
21658                .ok()
21659        }
21660    }
21661    pub unsafe fn CopyTo<P0>(&self, pbody: P0) -> windows_core::Result<()>
21662    where
21663        P0: windows_core::Param<IMimeBody>,
21664    {
21665        unsafe {
21666            (windows_core::Interface::vtable(self).CopyTo)(
21667                windows_core::Interface::as_raw(self),
21668                pbody.param().abi(),
21669            )
21670            .ok()
21671        }
21672    }
21673    pub unsafe fn GetTransmitInfo(
21674        &self,
21675        ptransmitinfo: *mut TRANSMITINFO,
21676    ) -> windows_core::Result<()> {
21677        unsafe {
21678            (windows_core::Interface::vtable(self).GetTransmitInfo)(
21679                windows_core::Interface::as_raw(self),
21680                ptransmitinfo as _,
21681            )
21682            .ok()
21683        }
21684    }
21685    pub unsafe fn SaveToFile<P1>(
21686        &self,
21687        ietencoding: ENCODINGTYPE,
21688        pszfilepath: P1,
21689    ) -> windows_core::Result<()>
21690    where
21691        P1: windows_core::Param<windows_core::PCSTR>,
21692    {
21693        unsafe {
21694            (windows_core::Interface::vtable(self).SaveToFile)(
21695                windows_core::Interface::as_raw(self),
21696                ietencoding,
21697                pszfilepath.param().abi(),
21698            )
21699            .ok()
21700        }
21701    }
21702    pub unsafe fn GetHandle(&self, phbody: *mut *mut HBODY__) -> windows_core::Result<()> {
21703        unsafe {
21704            (windows_core::Interface::vtable(self).GetHandle)(
21705                windows_core::Interface::as_raw(self),
21706                phbody as _,
21707            )
21708            .ok()
21709        }
21710    }
21711}
21712#[repr(C)]
21713#[doc(hidden)]
21714pub struct IMimeBody_Vtbl {
21715    pub base__: IMimePropertySet_Vtbl,
21716    pub IsType:
21717        unsafe extern "system" fn(*mut core::ffi::c_void, IMSGBODYTYPE) -> windows_core::HRESULT,
21718    pub SetDisplayName: unsafe extern "system" fn(
21719        *mut core::ffi::c_void,
21720        windows_core::PCSTR,
21721    ) -> windows_core::HRESULT,
21722    pub GetDisplayName: unsafe extern "system" fn(
21723        *mut core::ffi::c_void,
21724        *mut windows_core::PSTR,
21725    ) -> windows_core::HRESULT,
21726    pub GetOffsets: unsafe extern "system" fn(
21727        *mut core::ffi::c_void,
21728        *mut BODYOFFSETS,
21729    ) -> windows_core::HRESULT,
21730    pub GetCurrentEncoding: unsafe extern "system" fn(
21731        *mut core::ffi::c_void,
21732        *mut ENCODINGTYPE,
21733    ) -> windows_core::HRESULT,
21734    pub SetCurrentEncoding:
21735        unsafe extern "system" fn(*mut core::ffi::c_void, ENCODINGTYPE) -> windows_core::HRESULT,
21736    pub GetEstimatedSize: unsafe extern "system" fn(
21737        *mut core::ffi::c_void,
21738        ENCODINGTYPE,
21739        *mut u32,
21740    ) -> windows_core::HRESULT,
21741    pub GetDataHere: unsafe extern "system" fn(
21742        *mut core::ffi::c_void,
21743        ENCODINGTYPE,
21744        *mut core::ffi::c_void,
21745    ) -> windows_core::HRESULT,
21746    pub GetData: unsafe extern "system" fn(
21747        *mut core::ffi::c_void,
21748        ENCODINGTYPE,
21749        *mut *mut core::ffi::c_void,
21750    ) -> windows_core::HRESULT,
21751    pub SetData: unsafe extern "system" fn(
21752        *mut core::ffi::c_void,
21753        ENCODINGTYPE,
21754        windows_core::PCSTR,
21755        windows_core::PCSTR,
21756        *const windows_core::GUID,
21757        *mut core::ffi::c_void,
21758    ) -> windows_core::HRESULT,
21759    pub EmptyData: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
21760    pub CopyTo: unsafe extern "system" fn(
21761        *mut core::ffi::c_void,
21762        *mut core::ffi::c_void,
21763    ) -> windows_core::HRESULT,
21764    pub GetTransmitInfo: unsafe extern "system" fn(
21765        *mut core::ffi::c_void,
21766        *mut TRANSMITINFO,
21767    ) -> windows_core::HRESULT,
21768    pub SaveToFile: unsafe extern "system" fn(
21769        *mut core::ffi::c_void,
21770        ENCODINGTYPE,
21771        windows_core::PCSTR,
21772    ) -> windows_core::HRESULT,
21773    pub GetHandle: unsafe extern "system" fn(
21774        *mut core::ffi::c_void,
21775        *mut *mut HBODY__,
21776    ) -> windows_core::HRESULT,
21777}
21778pub trait IMimeBody_Impl: IMimePropertySet_Impl {
21779    fn IsType(&self, bodytype: IMSGBODYTYPE) -> windows_core::Result<()>;
21780    fn SetDisplayName(&self, pszdisplay: &windows_core::PCSTR) -> windows_core::Result<()>;
21781    fn GetDisplayName(&self, ppszdisplay: *mut windows_core::PSTR) -> windows_core::Result<()>;
21782    fn GetOffsets(&self, poffsets: *mut BODYOFFSETS) -> windows_core::Result<()>;
21783    fn GetCurrentEncoding(&self, pietencoding: *mut ENCODINGTYPE) -> windows_core::Result<()>;
21784    fn SetCurrentEncoding(&self, ietencoding: ENCODINGTYPE) -> windows_core::Result<()>;
21785    fn GetEstimatedSize(
21786        &self,
21787        ietencoding: ENCODINGTYPE,
21788        pcbsize: *mut u32,
21789    ) -> windows_core::Result<()>;
21790    fn GetDataHere(
21791        &self,
21792        ietencoding: ENCODINGTYPE,
21793        pstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
21794    ) -> windows_core::Result<()>;
21795    fn GetData(
21796        &self,
21797        ietencoding: ENCODINGTYPE,
21798    ) -> windows_core::Result<windows::Win32::System::Com::IStream>;
21799    fn SetData(
21800        &self,
21801        ietencoding: ENCODINGTYPE,
21802        pszpritype: &windows_core::PCSTR,
21803        pszsubtype: &windows_core::PCSTR,
21804        riid: *const windows_core::GUID,
21805        pvobject: *mut core::ffi::c_void,
21806    ) -> windows_core::Result<()>;
21807    fn EmptyData(&self) -> windows_core::Result<()>;
21808    fn CopyTo(&self, pbody: windows_core::Ref<IMimeBody>) -> windows_core::Result<()>;
21809    fn GetTransmitInfo(&self, ptransmitinfo: *mut TRANSMITINFO) -> windows_core::Result<()>;
21810    fn SaveToFile(
21811        &self,
21812        ietencoding: ENCODINGTYPE,
21813        pszfilepath: &windows_core::PCSTR,
21814    ) -> windows_core::Result<()>;
21815    fn GetHandle(&self, phbody: *mut *mut HBODY__) -> windows_core::Result<()>;
21816}
21817impl IMimeBody_Vtbl {
21818    pub const fn new<Identity: IMimeBody_Impl, const OFFSET: isize>() -> Self {
21819        unsafe extern "system" fn IsType<Identity: IMimeBody_Impl, const OFFSET: isize>(
21820            this: *mut core::ffi::c_void,
21821            bodytype: IMSGBODYTYPE,
21822        ) -> windows_core::HRESULT {
21823            unsafe {
21824                let this: &Identity =
21825                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21826                IMimeBody_Impl::IsType(this, core::mem::transmute_copy(&bodytype)).into()
21827            }
21828        }
21829        unsafe extern "system" fn SetDisplayName<Identity: IMimeBody_Impl, const OFFSET: isize>(
21830            this: *mut core::ffi::c_void,
21831            pszdisplay: windows_core::PCSTR,
21832        ) -> windows_core::HRESULT {
21833            unsafe {
21834                let this: &Identity =
21835                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21836                IMimeBody_Impl::SetDisplayName(this, core::mem::transmute(&pszdisplay)).into()
21837            }
21838        }
21839        unsafe extern "system" fn GetDisplayName<Identity: IMimeBody_Impl, const OFFSET: isize>(
21840            this: *mut core::ffi::c_void,
21841            ppszdisplay: *mut windows_core::PSTR,
21842        ) -> windows_core::HRESULT {
21843            unsafe {
21844                let this: &Identity =
21845                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21846                IMimeBody_Impl::GetDisplayName(this, core::mem::transmute_copy(&ppszdisplay)).into()
21847            }
21848        }
21849        unsafe extern "system" fn GetOffsets<Identity: IMimeBody_Impl, const OFFSET: isize>(
21850            this: *mut core::ffi::c_void,
21851            poffsets: *mut BODYOFFSETS,
21852        ) -> windows_core::HRESULT {
21853            unsafe {
21854                let this: &Identity =
21855                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21856                IMimeBody_Impl::GetOffsets(this, core::mem::transmute_copy(&poffsets)).into()
21857            }
21858        }
21859        unsafe extern "system" fn GetCurrentEncoding<
21860            Identity: IMimeBody_Impl,
21861            const OFFSET: isize,
21862        >(
21863            this: *mut core::ffi::c_void,
21864            pietencoding: *mut ENCODINGTYPE,
21865        ) -> windows_core::HRESULT {
21866            unsafe {
21867                let this: &Identity =
21868                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21869                IMimeBody_Impl::GetCurrentEncoding(this, core::mem::transmute_copy(&pietencoding))
21870                    .into()
21871            }
21872        }
21873        unsafe extern "system" fn SetCurrentEncoding<
21874            Identity: IMimeBody_Impl,
21875            const OFFSET: isize,
21876        >(
21877            this: *mut core::ffi::c_void,
21878            ietencoding: ENCODINGTYPE,
21879        ) -> windows_core::HRESULT {
21880            unsafe {
21881                let this: &Identity =
21882                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21883                IMimeBody_Impl::SetCurrentEncoding(this, core::mem::transmute_copy(&ietencoding))
21884                    .into()
21885            }
21886        }
21887        unsafe extern "system" fn GetEstimatedSize<
21888            Identity: IMimeBody_Impl,
21889            const OFFSET: isize,
21890        >(
21891            this: *mut core::ffi::c_void,
21892            ietencoding: ENCODINGTYPE,
21893            pcbsize: *mut u32,
21894        ) -> windows_core::HRESULT {
21895            unsafe {
21896                let this: &Identity =
21897                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21898                IMimeBody_Impl::GetEstimatedSize(
21899                    this,
21900                    core::mem::transmute_copy(&ietencoding),
21901                    core::mem::transmute_copy(&pcbsize),
21902                )
21903                .into()
21904            }
21905        }
21906        unsafe extern "system" fn GetDataHere<Identity: IMimeBody_Impl, const OFFSET: isize>(
21907            this: *mut core::ffi::c_void,
21908            ietencoding: ENCODINGTYPE,
21909            pstream: *mut core::ffi::c_void,
21910        ) -> windows_core::HRESULT {
21911            unsafe {
21912                let this: &Identity =
21913                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21914                IMimeBody_Impl::GetDataHere(
21915                    this,
21916                    core::mem::transmute_copy(&ietencoding),
21917                    core::mem::transmute_copy(&pstream),
21918                )
21919                .into()
21920            }
21921        }
21922        unsafe extern "system" fn GetData<Identity: IMimeBody_Impl, const OFFSET: isize>(
21923            this: *mut core::ffi::c_void,
21924            ietencoding: ENCODINGTYPE,
21925            ppstream: *mut *mut core::ffi::c_void,
21926        ) -> windows_core::HRESULT {
21927            unsafe {
21928                let this: &Identity =
21929                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21930                match IMimeBody_Impl::GetData(this, core::mem::transmute_copy(&ietencoding)) {
21931                    Ok(ok__) => {
21932                        ppstream.write(core::mem::transmute(ok__));
21933                        windows_core::HRESULT(0)
21934                    }
21935                    Err(err) => err.into(),
21936                }
21937            }
21938        }
21939        unsafe extern "system" fn SetData<Identity: IMimeBody_Impl, const OFFSET: isize>(
21940            this: *mut core::ffi::c_void,
21941            ietencoding: ENCODINGTYPE,
21942            pszpritype: windows_core::PCSTR,
21943            pszsubtype: windows_core::PCSTR,
21944            riid: *const windows_core::GUID,
21945            pvobject: *mut core::ffi::c_void,
21946        ) -> windows_core::HRESULT {
21947            unsafe {
21948                let this: &Identity =
21949                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21950                IMimeBody_Impl::SetData(
21951                    this,
21952                    core::mem::transmute_copy(&ietencoding),
21953                    core::mem::transmute(&pszpritype),
21954                    core::mem::transmute(&pszsubtype),
21955                    core::mem::transmute_copy(&riid),
21956                    core::mem::transmute_copy(&pvobject),
21957                )
21958                .into()
21959            }
21960        }
21961        unsafe extern "system" fn EmptyData<Identity: IMimeBody_Impl, const OFFSET: isize>(
21962            this: *mut core::ffi::c_void,
21963        ) -> windows_core::HRESULT {
21964            unsafe {
21965                let this: &Identity =
21966                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21967                IMimeBody_Impl::EmptyData(this).into()
21968            }
21969        }
21970        unsafe extern "system" fn CopyTo<Identity: IMimeBody_Impl, const OFFSET: isize>(
21971            this: *mut core::ffi::c_void,
21972            pbody: *mut core::ffi::c_void,
21973        ) -> windows_core::HRESULT {
21974            unsafe {
21975                let this: &Identity =
21976                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21977                IMimeBody_Impl::CopyTo(this, core::mem::transmute_copy(&pbody)).into()
21978            }
21979        }
21980        unsafe extern "system" fn GetTransmitInfo<Identity: IMimeBody_Impl, const OFFSET: isize>(
21981            this: *mut core::ffi::c_void,
21982            ptransmitinfo: *mut TRANSMITINFO,
21983        ) -> windows_core::HRESULT {
21984            unsafe {
21985                let this: &Identity =
21986                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21987                IMimeBody_Impl::GetTransmitInfo(this, core::mem::transmute_copy(&ptransmitinfo))
21988                    .into()
21989            }
21990        }
21991        unsafe extern "system" fn SaveToFile<Identity: IMimeBody_Impl, const OFFSET: isize>(
21992            this: *mut core::ffi::c_void,
21993            ietencoding: ENCODINGTYPE,
21994            pszfilepath: windows_core::PCSTR,
21995        ) -> windows_core::HRESULT {
21996            unsafe {
21997                let this: &Identity =
21998                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
21999                IMimeBody_Impl::SaveToFile(
22000                    this,
22001                    core::mem::transmute_copy(&ietencoding),
22002                    core::mem::transmute(&pszfilepath),
22003                )
22004                .into()
22005            }
22006        }
22007        unsafe extern "system" fn GetHandle<Identity: IMimeBody_Impl, const OFFSET: isize>(
22008            this: *mut core::ffi::c_void,
22009            phbody: *mut *mut HBODY__,
22010        ) -> windows_core::HRESULT {
22011            unsafe {
22012                let this: &Identity =
22013                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22014                IMimeBody_Impl::GetHandle(this, core::mem::transmute_copy(&phbody)).into()
22015            }
22016        }
22017        Self {
22018            base__: IMimePropertySet_Vtbl::new::<Identity, OFFSET>(),
22019            IsType: IsType::<Identity, OFFSET>,
22020            SetDisplayName: SetDisplayName::<Identity, OFFSET>,
22021            GetDisplayName: GetDisplayName::<Identity, OFFSET>,
22022            GetOffsets: GetOffsets::<Identity, OFFSET>,
22023            GetCurrentEncoding: GetCurrentEncoding::<Identity, OFFSET>,
22024            SetCurrentEncoding: SetCurrentEncoding::<Identity, OFFSET>,
22025            GetEstimatedSize: GetEstimatedSize::<Identity, OFFSET>,
22026            GetDataHere: GetDataHere::<Identity, OFFSET>,
22027            GetData: GetData::<Identity, OFFSET>,
22028            SetData: SetData::<Identity, OFFSET>,
22029            EmptyData: EmptyData::<Identity, OFFSET>,
22030            CopyTo: CopyTo::<Identity, OFFSET>,
22031            GetTransmitInfo: GetTransmitInfo::<Identity, OFFSET>,
22032            SaveToFile: SaveToFile::<Identity, OFFSET>,
22033            GetHandle: GetHandle::<Identity, OFFSET>,
22034        }
22035    }
22036    pub fn matches(iid: &windows_core::GUID) -> bool {
22037        iid == & < IMimeBody as windows_core::Interface >::IID || iid == & < windows::Win32::System::Com:: IPersist as windows_core::Interface >::IID || iid == & < windows::Win32::System::Com:: IPersistStreamInit as windows_core::Interface >::IID || iid == & < IMimePropertySet as windows_core::Interface >::IID
22038    }
22039}
22040impl windows_core::RuntimeName for IMimeBody {}
22041windows_core::imp::define_interface!(
22042    IMimeEditTag,
22043    IMimeEditTag_Vtbl,
22044    0x70183210_7b36_11d2_8c12_00c04fa31009
22045);
22046windows_core::imp::interface_hierarchy!(IMimeEditTag, windows_core::IUnknown);
22047impl IMimeEditTag {
22048    pub unsafe fn GetSrc(&self, pbstr: *mut windows_core::BSTR) -> windows_core::Result<()> {
22049        unsafe {
22050            (windows_core::Interface::vtable(self).GetSrc)(
22051                windows_core::Interface::as_raw(self),
22052                core::mem::transmute(pbstr),
22053            )
22054            .ok()
22055        }
22056    }
22057    pub unsafe fn SetSrc(&self, bstr: &windows_core::BSTR) -> windows_core::Result<()> {
22058        unsafe {
22059            (windows_core::Interface::vtable(self).SetSrc)(
22060                windows_core::Interface::as_raw(self),
22061                core::mem::transmute_copy(bstr),
22062            )
22063            .ok()
22064        }
22065    }
22066    pub unsafe fn GetDest(&self, pbstr: *mut windows_core::BSTR) -> windows_core::Result<()> {
22067        unsafe {
22068            (windows_core::Interface::vtable(self).GetDest)(
22069                windows_core::Interface::as_raw(self),
22070                core::mem::transmute(pbstr),
22071            )
22072            .ok()
22073        }
22074    }
22075    pub unsafe fn SetDest(&self, bstr: &windows_core::BSTR) -> windows_core::Result<()> {
22076        unsafe {
22077            (windows_core::Interface::vtable(self).SetDest)(
22078                windows_core::Interface::as_raw(self),
22079                core::mem::transmute_copy(bstr),
22080            )
22081            .ok()
22082        }
22083    }
22084    pub unsafe fn OnPreSave(&self) -> windows_core::Result<()> {
22085        unsafe {
22086            (windows_core::Interface::vtable(self).OnPreSave)(windows_core::Interface::as_raw(self))
22087                .ok()
22088        }
22089    }
22090    pub unsafe fn OnPostSave(&self) -> windows_core::Result<()> {
22091        unsafe {
22092            (windows_core::Interface::vtable(self).OnPostSave)(windows_core::Interface::as_raw(
22093                self,
22094            ))
22095            .ok()
22096        }
22097    }
22098    pub unsafe fn CanPackage(&self) -> windows_core::Result<()> {
22099        unsafe {
22100            (windows_core::Interface::vtable(self).CanPackage)(windows_core::Interface::as_raw(
22101                self,
22102            ))
22103            .ok()
22104        }
22105    }
22106    pub unsafe fn IsValidMimeType<P0>(&self, psztypew: P0) -> windows_core::Result<()>
22107    where
22108        P0: windows_core::Param<windows_core::PCWSTR>,
22109    {
22110        unsafe {
22111            (windows_core::Interface::vtable(self).IsValidMimeType)(
22112                windows_core::Interface::as_raw(self),
22113                psztypew.param().abi(),
22114            )
22115            .ok()
22116        }
22117    }
22118}
22119#[repr(C)]
22120#[doc(hidden)]
22121pub struct IMimeEditTag_Vtbl {
22122    pub base__: windows_core::IUnknown_Vtbl,
22123    pub GetSrc: unsafe extern "system" fn(
22124        *mut core::ffi::c_void,
22125        *mut *mut core::ffi::c_void,
22126    ) -> windows_core::HRESULT,
22127    pub SetSrc: unsafe extern "system" fn(
22128        *mut core::ffi::c_void,
22129        *mut core::ffi::c_void,
22130    ) -> windows_core::HRESULT,
22131    pub GetDest: unsafe extern "system" fn(
22132        *mut core::ffi::c_void,
22133        *mut *mut core::ffi::c_void,
22134    ) -> windows_core::HRESULT,
22135    pub SetDest: unsafe extern "system" fn(
22136        *mut core::ffi::c_void,
22137        *mut core::ffi::c_void,
22138    ) -> windows_core::HRESULT,
22139    pub OnPreSave: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22140    pub OnPostSave: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22141    pub CanPackage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22142    pub IsValidMimeType: unsafe extern "system" fn(
22143        *mut core::ffi::c_void,
22144        windows_core::PCWSTR,
22145    ) -> windows_core::HRESULT,
22146}
22147pub trait IMimeEditTag_Impl: windows_core::IUnknownImpl {
22148    fn GetSrc(&self, pbstr: *mut windows_core::BSTR) -> windows_core::Result<()>;
22149    fn SetSrc(&self, bstr: &windows_core::BSTR) -> windows_core::Result<()>;
22150    fn GetDest(&self, pbstr: *mut windows_core::BSTR) -> windows_core::Result<()>;
22151    fn SetDest(&self, bstr: &windows_core::BSTR) -> windows_core::Result<()>;
22152    fn OnPreSave(&self) -> windows_core::Result<()>;
22153    fn OnPostSave(&self) -> windows_core::Result<()>;
22154    fn CanPackage(&self) -> windows_core::Result<()>;
22155    fn IsValidMimeType(&self, psztypew: &windows_core::PCWSTR) -> windows_core::Result<()>;
22156}
22157impl IMimeEditTag_Vtbl {
22158    pub const fn new<Identity: IMimeEditTag_Impl, const OFFSET: isize>() -> Self {
22159        unsafe extern "system" fn GetSrc<Identity: IMimeEditTag_Impl, const OFFSET: isize>(
22160            this: *mut core::ffi::c_void,
22161            pbstr: *mut *mut core::ffi::c_void,
22162        ) -> windows_core::HRESULT {
22163            unsafe {
22164                let this: &Identity =
22165                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22166                IMimeEditTag_Impl::GetSrc(this, core::mem::transmute_copy(&pbstr)).into()
22167            }
22168        }
22169        unsafe extern "system" fn SetSrc<Identity: IMimeEditTag_Impl, const OFFSET: isize>(
22170            this: *mut core::ffi::c_void,
22171            bstr: *mut core::ffi::c_void,
22172        ) -> windows_core::HRESULT {
22173            unsafe {
22174                let this: &Identity =
22175                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22176                IMimeEditTag_Impl::SetSrc(this, core::mem::transmute(&bstr)).into()
22177            }
22178        }
22179        unsafe extern "system" fn GetDest<Identity: IMimeEditTag_Impl, const OFFSET: isize>(
22180            this: *mut core::ffi::c_void,
22181            pbstr: *mut *mut core::ffi::c_void,
22182        ) -> windows_core::HRESULT {
22183            unsafe {
22184                let this: &Identity =
22185                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22186                IMimeEditTag_Impl::GetDest(this, core::mem::transmute_copy(&pbstr)).into()
22187            }
22188        }
22189        unsafe extern "system" fn SetDest<Identity: IMimeEditTag_Impl, const OFFSET: isize>(
22190            this: *mut core::ffi::c_void,
22191            bstr: *mut core::ffi::c_void,
22192        ) -> windows_core::HRESULT {
22193            unsafe {
22194                let this: &Identity =
22195                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22196                IMimeEditTag_Impl::SetDest(this, core::mem::transmute(&bstr)).into()
22197            }
22198        }
22199        unsafe extern "system" fn OnPreSave<Identity: IMimeEditTag_Impl, const OFFSET: isize>(
22200            this: *mut core::ffi::c_void,
22201        ) -> windows_core::HRESULT {
22202            unsafe {
22203                let this: &Identity =
22204                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22205                IMimeEditTag_Impl::OnPreSave(this).into()
22206            }
22207        }
22208        unsafe extern "system" fn OnPostSave<Identity: IMimeEditTag_Impl, const OFFSET: isize>(
22209            this: *mut core::ffi::c_void,
22210        ) -> windows_core::HRESULT {
22211            unsafe {
22212                let this: &Identity =
22213                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22214                IMimeEditTag_Impl::OnPostSave(this).into()
22215            }
22216        }
22217        unsafe extern "system" fn CanPackage<Identity: IMimeEditTag_Impl, const OFFSET: isize>(
22218            this: *mut core::ffi::c_void,
22219        ) -> windows_core::HRESULT {
22220            unsafe {
22221                let this: &Identity =
22222                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22223                IMimeEditTag_Impl::CanPackage(this).into()
22224            }
22225        }
22226        unsafe extern "system" fn IsValidMimeType<
22227            Identity: IMimeEditTag_Impl,
22228            const OFFSET: isize,
22229        >(
22230            this: *mut core::ffi::c_void,
22231            psztypew: windows_core::PCWSTR,
22232        ) -> windows_core::HRESULT {
22233            unsafe {
22234                let this: &Identity =
22235                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22236                IMimeEditTag_Impl::IsValidMimeType(this, core::mem::transmute(&psztypew)).into()
22237            }
22238        }
22239        Self {
22240            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22241            GetSrc: GetSrc::<Identity, OFFSET>,
22242            SetSrc: SetSrc::<Identity, OFFSET>,
22243            GetDest: GetDest::<Identity, OFFSET>,
22244            SetDest: SetDest::<Identity, OFFSET>,
22245            OnPreSave: OnPreSave::<Identity, OFFSET>,
22246            OnPostSave: OnPostSave::<Identity, OFFSET>,
22247            CanPackage: CanPackage::<Identity, OFFSET>,
22248            IsValidMimeType: IsValidMimeType::<Identity, OFFSET>,
22249        }
22250    }
22251    pub fn matches(iid: &windows_core::GUID) -> bool {
22252        iid == &<IMimeEditTag as windows_core::Interface>::IID
22253    }
22254}
22255impl windows_core::RuntimeName for IMimeEditTag {}
22256windows_core::imp::define_interface!(
22257    IMimeEditTagCollection,
22258    IMimeEditTagCollection_Vtbl,
22259    0xd09ee528_7b38_11d2_8c12_00c04fa31009
22260);
22261windows_core::imp::interface_hierarchy!(IMimeEditTagCollection, windows_core::IUnknown);
22262impl IMimeEditTagCollection {
22263    pub unsafe fn Init<P0>(&self, phtmldoc: P0) -> windows_core::Result<()>
22264    where
22265        P0: windows_core::Param<windows_core::IUnknown>,
22266    {
22267        unsafe {
22268            (windows_core::Interface::vtable(self).Init)(
22269                windows_core::Interface::as_raw(self),
22270                phtmldoc.param().abi(),
22271            )
22272            .ok()
22273        }
22274    }
22275    pub unsafe fn Next(
22276        &self,
22277        cfetch: u32,
22278        pptag: *mut Option<IMimeEditTag>,
22279        pcfetched: *mut u32,
22280    ) -> windows_core::Result<()> {
22281        unsafe {
22282            (windows_core::Interface::vtable(self).Next)(
22283                windows_core::Interface::as_raw(self),
22284                cfetch,
22285                core::mem::transmute(pptag),
22286                pcfetched as _,
22287            )
22288            .ok()
22289        }
22290    }
22291    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
22292        unsafe {
22293            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
22294                .ok()
22295        }
22296    }
22297    pub unsafe fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()> {
22298        unsafe {
22299            (windows_core::Interface::vtable(self).Count)(
22300                windows_core::Interface::as_raw(self),
22301                pcitems as _,
22302            )
22303            .ok()
22304        }
22305    }
22306}
22307#[repr(C)]
22308#[doc(hidden)]
22309pub struct IMimeEditTagCollection_Vtbl {
22310    pub base__: windows_core::IUnknown_Vtbl,
22311    pub Init: unsafe extern "system" fn(
22312        *mut core::ffi::c_void,
22313        *mut core::ffi::c_void,
22314    ) -> windows_core::HRESULT,
22315    pub Next: unsafe extern "system" fn(
22316        *mut core::ffi::c_void,
22317        u32,
22318        *mut *mut core::ffi::c_void,
22319        *mut u32,
22320    ) -> windows_core::HRESULT,
22321    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22322    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
22323}
22324pub trait IMimeEditTagCollection_Impl: windows_core::IUnknownImpl {
22325    fn Init(&self, phtmldoc: windows_core::Ref<windows_core::IUnknown>)
22326        -> windows_core::Result<()>;
22327    fn Next(
22328        &self,
22329        cfetch: u32,
22330        pptag: windows_core::OutRef<IMimeEditTag>,
22331        pcfetched: *mut u32,
22332    ) -> windows_core::Result<()>;
22333    fn Reset(&self) -> windows_core::Result<()>;
22334    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
22335}
22336impl IMimeEditTagCollection_Vtbl {
22337    pub const fn new<Identity: IMimeEditTagCollection_Impl, const OFFSET: isize>() -> Self {
22338        unsafe extern "system" fn Init<
22339            Identity: IMimeEditTagCollection_Impl,
22340            const OFFSET: isize,
22341        >(
22342            this: *mut core::ffi::c_void,
22343            phtmldoc: *mut core::ffi::c_void,
22344        ) -> windows_core::HRESULT {
22345            unsafe {
22346                let this: &Identity =
22347                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22348                IMimeEditTagCollection_Impl::Init(this, core::mem::transmute_copy(&phtmldoc)).into()
22349            }
22350        }
22351        unsafe extern "system" fn Next<
22352            Identity: IMimeEditTagCollection_Impl,
22353            const OFFSET: isize,
22354        >(
22355            this: *mut core::ffi::c_void,
22356            cfetch: u32,
22357            pptag: *mut *mut core::ffi::c_void,
22358            pcfetched: *mut u32,
22359        ) -> windows_core::HRESULT {
22360            unsafe {
22361                let this: &Identity =
22362                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22363                IMimeEditTagCollection_Impl::Next(
22364                    this,
22365                    core::mem::transmute_copy(&cfetch),
22366                    core::mem::transmute_copy(&pptag),
22367                    core::mem::transmute_copy(&pcfetched),
22368                )
22369                .into()
22370            }
22371        }
22372        unsafe extern "system" fn Reset<
22373            Identity: IMimeEditTagCollection_Impl,
22374            const OFFSET: isize,
22375        >(
22376            this: *mut core::ffi::c_void,
22377        ) -> windows_core::HRESULT {
22378            unsafe {
22379                let this: &Identity =
22380                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22381                IMimeEditTagCollection_Impl::Reset(this).into()
22382            }
22383        }
22384        unsafe extern "system" fn Count<
22385            Identity: IMimeEditTagCollection_Impl,
22386            const OFFSET: isize,
22387        >(
22388            this: *mut core::ffi::c_void,
22389            pcitems: *mut u32,
22390        ) -> windows_core::HRESULT {
22391            unsafe {
22392                let this: &Identity =
22393                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22394                IMimeEditTagCollection_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
22395            }
22396        }
22397        Self {
22398            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22399            Init: Init::<Identity, OFFSET>,
22400            Next: Next::<Identity, OFFSET>,
22401            Reset: Reset::<Identity, OFFSET>,
22402            Count: Count::<Identity, OFFSET>,
22403        }
22404    }
22405    pub fn matches(iid: &windows_core::GUID) -> bool {
22406        iid == &<IMimeEditTagCollection as windows_core::Interface>::IID
22407    }
22408}
22409impl windows_core::RuntimeName for IMimeEditTagCollection {}
22410windows_core::imp::define_interface!(
22411    IMimeEnumAddressTypes,
22412    IMimeEnumAddressTypes_Vtbl,
22413    0xc5588354_7f86_11d0_8252_00c04fd85ab4
22414);
22415windows_core::imp::interface_hierarchy!(IMimeEnumAddressTypes, windows_core::IUnknown);
22416impl IMimeEnumAddressTypes {
22417    pub unsafe fn Next(
22418        &self,
22419        cfetch: u32,
22420        prgadr: *mut ADDRESSPROPS,
22421        pcfetched: *mut u32,
22422    ) -> windows_core::Result<()> {
22423        unsafe {
22424            (windows_core::Interface::vtable(self).Next)(
22425                windows_core::Interface::as_raw(self),
22426                cfetch,
22427                prgadr as _,
22428                pcfetched as _,
22429            )
22430            .ok()
22431        }
22432    }
22433    pub unsafe fn Skip(&self, citems: u32) -> windows_core::Result<()> {
22434        unsafe {
22435            (windows_core::Interface::vtable(self).Skip)(
22436                windows_core::Interface::as_raw(self),
22437                citems,
22438            )
22439            .ok()
22440        }
22441    }
22442    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
22443        unsafe {
22444            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
22445                .ok()
22446        }
22447    }
22448    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeEnumAddressTypes> {
22449        unsafe {
22450            let mut result__ = core::mem::zeroed();
22451            (windows_core::Interface::vtable(self).Clone)(
22452                windows_core::Interface::as_raw(self),
22453                &mut result__,
22454            )
22455            .and_then(|| windows_core::Type::from_abi(result__))
22456        }
22457    }
22458    pub unsafe fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()> {
22459        unsafe {
22460            (windows_core::Interface::vtable(self).Count)(
22461                windows_core::Interface::as_raw(self),
22462                pcitems as _,
22463            )
22464            .ok()
22465        }
22466    }
22467}
22468#[repr(C)]
22469#[doc(hidden)]
22470pub struct IMimeEnumAddressTypes_Vtbl {
22471    pub base__: windows_core::IUnknown_Vtbl,
22472    pub Next: unsafe extern "system" fn(
22473        *mut core::ffi::c_void,
22474        u32,
22475        *mut ADDRESSPROPS,
22476        *mut u32,
22477    ) -> windows_core::HRESULT,
22478    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
22479    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22480    pub Clone: unsafe extern "system" fn(
22481        *mut core::ffi::c_void,
22482        *mut *mut core::ffi::c_void,
22483    ) -> windows_core::HRESULT,
22484    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
22485}
22486pub trait IMimeEnumAddressTypes_Impl: windows_core::IUnknownImpl {
22487    fn Next(
22488        &self,
22489        cfetch: u32,
22490        prgadr: *mut ADDRESSPROPS,
22491        pcfetched: *mut u32,
22492    ) -> windows_core::Result<()>;
22493    fn Skip(&self, citems: u32) -> windows_core::Result<()>;
22494    fn Reset(&self) -> windows_core::Result<()>;
22495    fn Clone(&self) -> windows_core::Result<IMimeEnumAddressTypes>;
22496    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
22497}
22498impl IMimeEnumAddressTypes_Vtbl {
22499    pub const fn new<Identity: IMimeEnumAddressTypes_Impl, const OFFSET: isize>() -> Self {
22500        unsafe extern "system" fn Next<
22501            Identity: IMimeEnumAddressTypes_Impl,
22502            const OFFSET: isize,
22503        >(
22504            this: *mut core::ffi::c_void,
22505            cfetch: u32,
22506            prgadr: *mut ADDRESSPROPS,
22507            pcfetched: *mut u32,
22508        ) -> windows_core::HRESULT {
22509            unsafe {
22510                let this: &Identity =
22511                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22512                IMimeEnumAddressTypes_Impl::Next(
22513                    this,
22514                    core::mem::transmute_copy(&cfetch),
22515                    core::mem::transmute_copy(&prgadr),
22516                    core::mem::transmute_copy(&pcfetched),
22517                )
22518                .into()
22519            }
22520        }
22521        unsafe extern "system" fn Skip<
22522            Identity: IMimeEnumAddressTypes_Impl,
22523            const OFFSET: isize,
22524        >(
22525            this: *mut core::ffi::c_void,
22526            citems: u32,
22527        ) -> windows_core::HRESULT {
22528            unsafe {
22529                let this: &Identity =
22530                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22531                IMimeEnumAddressTypes_Impl::Skip(this, core::mem::transmute_copy(&citems)).into()
22532            }
22533        }
22534        unsafe extern "system" fn Reset<
22535            Identity: IMimeEnumAddressTypes_Impl,
22536            const OFFSET: isize,
22537        >(
22538            this: *mut core::ffi::c_void,
22539        ) -> windows_core::HRESULT {
22540            unsafe {
22541                let this: &Identity =
22542                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22543                IMimeEnumAddressTypes_Impl::Reset(this).into()
22544            }
22545        }
22546        unsafe extern "system" fn Clone<
22547            Identity: IMimeEnumAddressTypes_Impl,
22548            const OFFSET: isize,
22549        >(
22550            this: *mut core::ffi::c_void,
22551            ppenum: *mut *mut core::ffi::c_void,
22552        ) -> windows_core::HRESULT {
22553            unsafe {
22554                let this: &Identity =
22555                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22556                match IMimeEnumAddressTypes_Impl::Clone(this) {
22557                    Ok(ok__) => {
22558                        ppenum.write(core::mem::transmute(ok__));
22559                        windows_core::HRESULT(0)
22560                    }
22561                    Err(err) => err.into(),
22562                }
22563            }
22564        }
22565        unsafe extern "system" fn Count<
22566            Identity: IMimeEnumAddressTypes_Impl,
22567            const OFFSET: isize,
22568        >(
22569            this: *mut core::ffi::c_void,
22570            pcitems: *mut u32,
22571        ) -> windows_core::HRESULT {
22572            unsafe {
22573                let this: &Identity =
22574                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22575                IMimeEnumAddressTypes_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
22576            }
22577        }
22578        Self {
22579            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22580            Next: Next::<Identity, OFFSET>,
22581            Skip: Skip::<Identity, OFFSET>,
22582            Reset: Reset::<Identity, OFFSET>,
22583            Clone: Clone::<Identity, OFFSET>,
22584            Count: Count::<Identity, OFFSET>,
22585        }
22586    }
22587    pub fn matches(iid: &windows_core::GUID) -> bool {
22588        iid == &<IMimeEnumAddressTypes as windows_core::Interface>::IID
22589    }
22590}
22591impl windows_core::RuntimeName for IMimeEnumAddressTypes {}
22592windows_core::imp::define_interface!(
22593    IMimeEnumHeaderRows,
22594    IMimeEnumHeaderRows_Vtbl,
22595    0xc558834d_7f86_11d0_8252_00c04fd85ab4
22596);
22597windows_core::imp::interface_hierarchy!(IMimeEnumHeaderRows, windows_core::IUnknown);
22598impl IMimeEnumHeaderRows {
22599    pub unsafe fn Next(
22600        &self,
22601        cfetch: u32,
22602        prgrow: *mut ENUMHEADERROW,
22603        pcfetched: *mut u32,
22604    ) -> windows_core::Result<()> {
22605        unsafe {
22606            (windows_core::Interface::vtable(self).Next)(
22607                windows_core::Interface::as_raw(self),
22608                cfetch,
22609                prgrow as _,
22610                pcfetched as _,
22611            )
22612            .ok()
22613        }
22614    }
22615    pub unsafe fn Skip(&self, citems: u32) -> windows_core::Result<()> {
22616        unsafe {
22617            (windows_core::Interface::vtable(self).Skip)(
22618                windows_core::Interface::as_raw(self),
22619                citems,
22620            )
22621            .ok()
22622        }
22623    }
22624    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
22625        unsafe {
22626            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
22627                .ok()
22628        }
22629    }
22630    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeEnumHeaderRows> {
22631        unsafe {
22632            let mut result__ = core::mem::zeroed();
22633            (windows_core::Interface::vtable(self).Clone)(
22634                windows_core::Interface::as_raw(self),
22635                &mut result__,
22636            )
22637            .and_then(|| windows_core::Type::from_abi(result__))
22638        }
22639    }
22640    pub unsafe fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()> {
22641        unsafe {
22642            (windows_core::Interface::vtable(self).Count)(
22643                windows_core::Interface::as_raw(self),
22644                pcitems as _,
22645            )
22646            .ok()
22647        }
22648    }
22649}
22650#[repr(C)]
22651#[doc(hidden)]
22652pub struct IMimeEnumHeaderRows_Vtbl {
22653    pub base__: windows_core::IUnknown_Vtbl,
22654    pub Next: unsafe extern "system" fn(
22655        *mut core::ffi::c_void,
22656        u32,
22657        *mut ENUMHEADERROW,
22658        *mut u32,
22659    ) -> windows_core::HRESULT,
22660    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
22661    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22662    pub Clone: unsafe extern "system" fn(
22663        *mut core::ffi::c_void,
22664        *mut *mut core::ffi::c_void,
22665    ) -> windows_core::HRESULT,
22666    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
22667}
22668pub trait IMimeEnumHeaderRows_Impl: windows_core::IUnknownImpl {
22669    fn Next(
22670        &self,
22671        cfetch: u32,
22672        prgrow: *mut ENUMHEADERROW,
22673        pcfetched: *mut u32,
22674    ) -> windows_core::Result<()>;
22675    fn Skip(&self, citems: u32) -> windows_core::Result<()>;
22676    fn Reset(&self) -> windows_core::Result<()>;
22677    fn Clone(&self) -> windows_core::Result<IMimeEnumHeaderRows>;
22678    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
22679}
22680impl IMimeEnumHeaderRows_Vtbl {
22681    pub const fn new<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>() -> Self {
22682        unsafe extern "system" fn Next<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22683            this: *mut core::ffi::c_void,
22684            cfetch: u32,
22685            prgrow: *mut ENUMHEADERROW,
22686            pcfetched: *mut u32,
22687        ) -> windows_core::HRESULT {
22688            unsafe {
22689                let this: &Identity =
22690                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22691                IMimeEnumHeaderRows_Impl::Next(
22692                    this,
22693                    core::mem::transmute_copy(&cfetch),
22694                    core::mem::transmute_copy(&prgrow),
22695                    core::mem::transmute_copy(&pcfetched),
22696                )
22697                .into()
22698            }
22699        }
22700        unsafe extern "system" fn Skip<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22701            this: *mut core::ffi::c_void,
22702            citems: u32,
22703        ) -> windows_core::HRESULT {
22704            unsafe {
22705                let this: &Identity =
22706                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22707                IMimeEnumHeaderRows_Impl::Skip(this, core::mem::transmute_copy(&citems)).into()
22708            }
22709        }
22710        unsafe extern "system" fn Reset<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22711            this: *mut core::ffi::c_void,
22712        ) -> windows_core::HRESULT {
22713            unsafe {
22714                let this: &Identity =
22715                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22716                IMimeEnumHeaderRows_Impl::Reset(this).into()
22717            }
22718        }
22719        unsafe extern "system" fn Clone<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22720            this: *mut core::ffi::c_void,
22721            ppenum: *mut *mut core::ffi::c_void,
22722        ) -> windows_core::HRESULT {
22723            unsafe {
22724                let this: &Identity =
22725                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22726                match IMimeEnumHeaderRows_Impl::Clone(this) {
22727                    Ok(ok__) => {
22728                        ppenum.write(core::mem::transmute(ok__));
22729                        windows_core::HRESULT(0)
22730                    }
22731                    Err(err) => err.into(),
22732                }
22733            }
22734        }
22735        unsafe extern "system" fn Count<Identity: IMimeEnumHeaderRows_Impl, const OFFSET: isize>(
22736            this: *mut core::ffi::c_void,
22737            pcitems: *mut u32,
22738        ) -> windows_core::HRESULT {
22739            unsafe {
22740                let this: &Identity =
22741                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22742                IMimeEnumHeaderRows_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
22743            }
22744        }
22745        Self {
22746            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22747            Next: Next::<Identity, OFFSET>,
22748            Skip: Skip::<Identity, OFFSET>,
22749            Reset: Reset::<Identity, OFFSET>,
22750            Clone: Clone::<Identity, OFFSET>,
22751            Count: Count::<Identity, OFFSET>,
22752        }
22753    }
22754    pub fn matches(iid: &windows_core::GUID) -> bool {
22755        iid == &<IMimeEnumHeaderRows as windows_core::Interface>::IID
22756    }
22757}
22758impl windows_core::RuntimeName for IMimeEnumHeaderRows {}
22759windows_core::imp::define_interface!(
22760    IMimeEnumMessageParts,
22761    IMimeEnumMessageParts_Vtbl,
22762    0xc5588350_7f86_11d0_8252_00c04fd85ab4
22763);
22764windows_core::imp::interface_hierarchy!(IMimeEnumMessageParts, windows_core::IUnknown);
22765impl IMimeEnumMessageParts {
22766    pub unsafe fn Next(
22767        &self,
22768        cfetch: u32,
22769        prgpmessage: *mut Option<IMimeMessage>,
22770        pcfetched: *mut u32,
22771    ) -> windows_core::Result<()> {
22772        unsafe {
22773            (windows_core::Interface::vtable(self).Next)(
22774                windows_core::Interface::as_raw(self),
22775                cfetch,
22776                core::mem::transmute(prgpmessage),
22777                pcfetched as _,
22778            )
22779            .ok()
22780        }
22781    }
22782    pub unsafe fn Skip(&self, citems: u32) -> windows_core::Result<()> {
22783        unsafe {
22784            (windows_core::Interface::vtable(self).Skip)(
22785                windows_core::Interface::as_raw(self),
22786                citems,
22787            )
22788            .ok()
22789        }
22790    }
22791    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
22792        unsafe {
22793            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
22794                .ok()
22795        }
22796    }
22797    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeEnumMessageParts> {
22798        unsafe {
22799            let mut result__ = core::mem::zeroed();
22800            (windows_core::Interface::vtable(self).Clone)(
22801                windows_core::Interface::as_raw(self),
22802                &mut result__,
22803            )
22804            .and_then(|| windows_core::Type::from_abi(result__))
22805        }
22806    }
22807    pub unsafe fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()> {
22808        unsafe {
22809            (windows_core::Interface::vtable(self).Count)(
22810                windows_core::Interface::as_raw(self),
22811                pcitems as _,
22812            )
22813            .ok()
22814        }
22815    }
22816}
22817#[repr(C)]
22818#[doc(hidden)]
22819pub struct IMimeEnumMessageParts_Vtbl {
22820    pub base__: windows_core::IUnknown_Vtbl,
22821    pub Next: unsafe extern "system" fn(
22822        *mut core::ffi::c_void,
22823        u32,
22824        *mut *mut core::ffi::c_void,
22825        *mut u32,
22826    ) -> windows_core::HRESULT,
22827    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
22828    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
22829    pub Clone: unsafe extern "system" fn(
22830        *mut core::ffi::c_void,
22831        *mut *mut core::ffi::c_void,
22832    ) -> windows_core::HRESULT,
22833    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
22834}
22835pub trait IMimeEnumMessageParts_Impl: windows_core::IUnknownImpl {
22836    fn Next(
22837        &self,
22838        cfetch: u32,
22839        prgpmessage: windows_core::OutRef<IMimeMessage>,
22840        pcfetched: *mut u32,
22841    ) -> windows_core::Result<()>;
22842    fn Skip(&self, citems: u32) -> windows_core::Result<()>;
22843    fn Reset(&self) -> windows_core::Result<()>;
22844    fn Clone(&self) -> windows_core::Result<IMimeEnumMessageParts>;
22845    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
22846}
22847impl IMimeEnumMessageParts_Vtbl {
22848    pub const fn new<Identity: IMimeEnumMessageParts_Impl, const OFFSET: isize>() -> Self {
22849        unsafe extern "system" fn Next<
22850            Identity: IMimeEnumMessageParts_Impl,
22851            const OFFSET: isize,
22852        >(
22853            this: *mut core::ffi::c_void,
22854            cfetch: u32,
22855            prgpmessage: *mut *mut core::ffi::c_void,
22856            pcfetched: *mut u32,
22857        ) -> windows_core::HRESULT {
22858            unsafe {
22859                let this: &Identity =
22860                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22861                IMimeEnumMessageParts_Impl::Next(
22862                    this,
22863                    core::mem::transmute_copy(&cfetch),
22864                    core::mem::transmute_copy(&prgpmessage),
22865                    core::mem::transmute_copy(&pcfetched),
22866                )
22867                .into()
22868            }
22869        }
22870        unsafe extern "system" fn Skip<
22871            Identity: IMimeEnumMessageParts_Impl,
22872            const OFFSET: isize,
22873        >(
22874            this: *mut core::ffi::c_void,
22875            citems: u32,
22876        ) -> windows_core::HRESULT {
22877            unsafe {
22878                let this: &Identity =
22879                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22880                IMimeEnumMessageParts_Impl::Skip(this, core::mem::transmute_copy(&citems)).into()
22881            }
22882        }
22883        unsafe extern "system" fn Reset<
22884            Identity: IMimeEnumMessageParts_Impl,
22885            const OFFSET: isize,
22886        >(
22887            this: *mut core::ffi::c_void,
22888        ) -> windows_core::HRESULT {
22889            unsafe {
22890                let this: &Identity =
22891                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22892                IMimeEnumMessageParts_Impl::Reset(this).into()
22893            }
22894        }
22895        unsafe extern "system" fn Clone<
22896            Identity: IMimeEnumMessageParts_Impl,
22897            const OFFSET: isize,
22898        >(
22899            this: *mut core::ffi::c_void,
22900            ppenum: *mut *mut core::ffi::c_void,
22901        ) -> windows_core::HRESULT {
22902            unsafe {
22903                let this: &Identity =
22904                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22905                match IMimeEnumMessageParts_Impl::Clone(this) {
22906                    Ok(ok__) => {
22907                        ppenum.write(core::mem::transmute(ok__));
22908                        windows_core::HRESULT(0)
22909                    }
22910                    Err(err) => err.into(),
22911                }
22912            }
22913        }
22914        unsafe extern "system" fn Count<
22915            Identity: IMimeEnumMessageParts_Impl,
22916            const OFFSET: isize,
22917        >(
22918            this: *mut core::ffi::c_void,
22919            pcitems: *mut u32,
22920        ) -> windows_core::HRESULT {
22921            unsafe {
22922                let this: &Identity =
22923                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
22924                IMimeEnumMessageParts_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
22925            }
22926        }
22927        Self {
22928            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
22929            Next: Next::<Identity, OFFSET>,
22930            Skip: Skip::<Identity, OFFSET>,
22931            Reset: Reset::<Identity, OFFSET>,
22932            Clone: Clone::<Identity, OFFSET>,
22933            Count: Count::<Identity, OFFSET>,
22934        }
22935    }
22936    pub fn matches(iid: &windows_core::GUID) -> bool {
22937        iid == &<IMimeEnumMessageParts as windows_core::Interface>::IID
22938    }
22939}
22940impl windows_core::RuntimeName for IMimeEnumMessageParts {}
22941windows_core::imp::define_interface!(
22942    IMimeEnumProperties,
22943    IMimeEnumProperties_Vtbl,
22944    0xfd853cee_7f86_11d0_8252_00c04fd85ab4
22945);
22946windows_core::imp::interface_hierarchy!(IMimeEnumProperties, windows_core::IUnknown);
22947impl IMimeEnumProperties {
22948    pub unsafe fn Next(
22949        &self,
22950        cfetch: u32,
22951        prgprop: *mut ENUMPROPERTY,
22952        pcfetched: *mut u32,
22953    ) -> windows_core::Result<()> {
22954        unsafe {
22955            (windows_core::Interface::vtable(self).Next)(
22956                windows_core::Interface::as_raw(self),
22957                cfetch,
22958                prgprop as _,
22959                pcfetched as _,
22960            )
22961            .ok()
22962        }
22963    }
22964    pub unsafe fn Skip(&self, citems: u32) -> windows_core::Result<()> {
22965        unsafe {
22966            (windows_core::Interface::vtable(self).Skip)(
22967                windows_core::Interface::as_raw(self),
22968                citems,
22969            )
22970            .ok()
22971        }
22972    }
22973    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
22974        unsafe {
22975            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
22976                .ok()
22977        }
22978    }
22979    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeEnumProperties> {
22980        unsafe {
22981            let mut result__ = core::mem::zeroed();
22982            (windows_core::Interface::vtable(self).Clone)(
22983                windows_core::Interface::as_raw(self),
22984                &mut result__,
22985            )
22986            .and_then(|| windows_core::Type::from_abi(result__))
22987        }
22988    }
22989    pub unsafe fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()> {
22990        unsafe {
22991            (windows_core::Interface::vtable(self).Count)(
22992                windows_core::Interface::as_raw(self),
22993                pcitems as _,
22994            )
22995            .ok()
22996        }
22997    }
22998}
22999#[repr(C)]
23000#[doc(hidden)]
23001pub struct IMimeEnumProperties_Vtbl {
23002    pub base__: windows_core::IUnknown_Vtbl,
23003    pub Next: unsafe extern "system" fn(
23004        *mut core::ffi::c_void,
23005        u32,
23006        *mut ENUMPROPERTY,
23007        *mut u32,
23008    ) -> windows_core::HRESULT,
23009    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
23010    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
23011    pub Clone: unsafe extern "system" fn(
23012        *mut core::ffi::c_void,
23013        *mut *mut core::ffi::c_void,
23014    ) -> windows_core::HRESULT,
23015    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
23016}
23017pub trait IMimeEnumProperties_Impl: windows_core::IUnknownImpl {
23018    fn Next(
23019        &self,
23020        cfetch: u32,
23021        prgprop: *mut ENUMPROPERTY,
23022        pcfetched: *mut u32,
23023    ) -> windows_core::Result<()>;
23024    fn Skip(&self, citems: u32) -> windows_core::Result<()>;
23025    fn Reset(&self) -> windows_core::Result<()>;
23026    fn Clone(&self) -> windows_core::Result<IMimeEnumProperties>;
23027    fn Count(&self, pcitems: *mut u32) -> windows_core::Result<()>;
23028}
23029impl IMimeEnumProperties_Vtbl {
23030    pub const fn new<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>() -> Self {
23031        unsafe extern "system" fn Next<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23032            this: *mut core::ffi::c_void,
23033            cfetch: u32,
23034            prgprop: *mut ENUMPROPERTY,
23035            pcfetched: *mut u32,
23036        ) -> windows_core::HRESULT {
23037            unsafe {
23038                let this: &Identity =
23039                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23040                IMimeEnumProperties_Impl::Next(
23041                    this,
23042                    core::mem::transmute_copy(&cfetch),
23043                    core::mem::transmute_copy(&prgprop),
23044                    core::mem::transmute_copy(&pcfetched),
23045                )
23046                .into()
23047            }
23048        }
23049        unsafe extern "system" fn Skip<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23050            this: *mut core::ffi::c_void,
23051            citems: u32,
23052        ) -> windows_core::HRESULT {
23053            unsafe {
23054                let this: &Identity =
23055                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23056                IMimeEnumProperties_Impl::Skip(this, core::mem::transmute_copy(&citems)).into()
23057            }
23058        }
23059        unsafe extern "system" fn Reset<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23060            this: *mut core::ffi::c_void,
23061        ) -> windows_core::HRESULT {
23062            unsafe {
23063                let this: &Identity =
23064                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23065                IMimeEnumProperties_Impl::Reset(this).into()
23066            }
23067        }
23068        unsafe extern "system" fn Clone<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23069            this: *mut core::ffi::c_void,
23070            ppenum: *mut *mut core::ffi::c_void,
23071        ) -> windows_core::HRESULT {
23072            unsafe {
23073                let this: &Identity =
23074                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23075                match IMimeEnumProperties_Impl::Clone(this) {
23076                    Ok(ok__) => {
23077                        ppenum.write(core::mem::transmute(ok__));
23078                        windows_core::HRESULT(0)
23079                    }
23080                    Err(err) => err.into(),
23081                }
23082            }
23083        }
23084        unsafe extern "system" fn Count<Identity: IMimeEnumProperties_Impl, const OFFSET: isize>(
23085            this: *mut core::ffi::c_void,
23086            pcitems: *mut u32,
23087        ) -> windows_core::HRESULT {
23088            unsafe {
23089                let this: &Identity =
23090                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23091                IMimeEnumProperties_Impl::Count(this, core::mem::transmute_copy(&pcitems)).into()
23092            }
23093        }
23094        Self {
23095            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
23096            Next: Next::<Identity, OFFSET>,
23097            Skip: Skip::<Identity, OFFSET>,
23098            Reset: Reset::<Identity, OFFSET>,
23099            Clone: Clone::<Identity, OFFSET>,
23100            Count: Count::<Identity, OFFSET>,
23101        }
23102    }
23103    pub fn matches(iid: &windows_core::GUID) -> bool {
23104        iid == &<IMimeEnumProperties as windows_core::Interface>::IID
23105    }
23106}
23107impl windows_core::RuntimeName for IMimeEnumProperties {}
23108windows_core::imp::define_interface!(
23109    IMimeHeaderTable,
23110    IMimeHeaderTable_Vtbl,
23111    0xfd853cd1_7f86_11d0_8252_00c04fd85ab4
23112);
23113impl core::ops::Deref for IMimeHeaderTable {
23114    type Target = windows::Win32::System::Com::IPersistStream;
23115    fn deref(&self) -> &Self::Target {
23116        unsafe { core::mem::transmute(self) }
23117    }
23118}
23119windows_core::imp::interface_hierarchy!(
23120    IMimeHeaderTable,
23121    windows_core::IUnknown,
23122    windows::Win32::System::Com::IPersist,
23123    windows::Win32::System::Com::IPersistStream
23124);
23125impl IMimeHeaderTable {
23126    pub unsafe fn Load<P0>(&self, pstm: P0) -> windows_core::Result<()>
23127    where
23128        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
23129    {
23130        unsafe {
23131            (windows_core::Interface::vtable(self).Load)(
23132                windows_core::Interface::as_raw(self),
23133                pstm.param().abi(),
23134            )
23135            .ok()
23136        }
23137    }
23138    pub unsafe fn Save<P0>(&self, pstm: P0, fcleardirty: bool) -> windows_core::Result<()>
23139    where
23140        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
23141    {
23142        unsafe {
23143            (windows_core::Interface::vtable(self).Save)(
23144                windows_core::Interface::as_raw(self),
23145                pstm.param().abi(),
23146                fcleardirty.into(),
23147            )
23148            .ok()
23149        }
23150    }
23151    pub unsafe fn GetSizeMax(&self) -> windows_core::Result<u64> {
23152        unsafe {
23153            let mut result__ = core::mem::zeroed();
23154            (windows_core::Interface::vtable(self).GetSizeMax)(
23155                windows_core::Interface::as_raw(self),
23156                &mut result__,
23157            )
23158            .map(|| result__)
23159        }
23160    }
23161    pub unsafe fn FindFirstRow(
23162        &self,
23163        pfindheader: *mut FINDHEADER,
23164        phrow: *mut *mut HHEADERROW__,
23165    ) -> windows_core::Result<()> {
23166        unsafe {
23167            (windows_core::Interface::vtable(self).FindFirstRow)(
23168                windows_core::Interface::as_raw(self),
23169                pfindheader as _,
23170                phrow as _,
23171            )
23172            .ok()
23173        }
23174    }
23175    pub unsafe fn FindNextRow(
23176        &self,
23177        pfindheader: *mut FINDHEADER,
23178        phrow: *mut *mut HHEADERROW__,
23179    ) -> windows_core::Result<()> {
23180        unsafe {
23181            (windows_core::Interface::vtable(self).FindNextRow)(
23182                windows_core::Interface::as_raw(self),
23183                pfindheader as _,
23184                phrow as _,
23185            )
23186            .ok()
23187        }
23188    }
23189    pub unsafe fn CountRows<P0>(&self, pszheader: P0, pcrows: *mut u32) -> windows_core::Result<()>
23190    where
23191        P0: windows_core::Param<windows_core::PCSTR>,
23192    {
23193        unsafe {
23194            (windows_core::Interface::vtable(self).CountRows)(
23195                windows_core::Interface::as_raw(self),
23196                pszheader.param().abi(),
23197                pcrows as _,
23198            )
23199            .ok()
23200        }
23201    }
23202    pub unsafe fn AppendRow<P0, P2>(
23203        &self,
23204        pszheader: P0,
23205        dwflags: u32,
23206        pszdata: P2,
23207        cchdata: u32,
23208        phrow: *mut *mut HHEADERROW__,
23209    ) -> windows_core::Result<()>
23210    where
23211        P0: windows_core::Param<windows_core::PCSTR>,
23212        P2: windows_core::Param<windows_core::PCSTR>,
23213    {
23214        unsafe {
23215            (windows_core::Interface::vtable(self).AppendRow)(
23216                windows_core::Interface::as_raw(self),
23217                pszheader.param().abi(),
23218                dwflags,
23219                pszdata.param().abi(),
23220                cchdata,
23221                phrow as _,
23222            )
23223            .ok()
23224        }
23225    }
23226    pub unsafe fn DeleteRow(&self, hrow: *mut HHEADERROW__) -> windows_core::Result<()> {
23227        unsafe {
23228            (windows_core::Interface::vtable(self).DeleteRow)(
23229                windows_core::Interface::as_raw(self),
23230                hrow as _,
23231            )
23232            .ok()
23233        }
23234    }
23235    pub unsafe fn GetRowData(
23236        &self,
23237        hrow: *mut HHEADERROW__,
23238        dwflags: u32,
23239        ppszdata: *mut windows_core::PSTR,
23240        pcchdata: *mut u32,
23241    ) -> windows_core::Result<()> {
23242        unsafe {
23243            (windows_core::Interface::vtable(self).GetRowData)(
23244                windows_core::Interface::as_raw(self),
23245                hrow as _,
23246                dwflags,
23247                ppszdata as _,
23248                pcchdata as _,
23249            )
23250            .ok()
23251        }
23252    }
23253    pub unsafe fn SetRowData<P2>(
23254        &self,
23255        hrow: *mut HHEADERROW__,
23256        dwflags: u32,
23257        pszdata: P2,
23258        cchdata: u32,
23259    ) -> windows_core::Result<()>
23260    where
23261        P2: windows_core::Param<windows_core::PCSTR>,
23262    {
23263        unsafe {
23264            (windows_core::Interface::vtable(self).SetRowData)(
23265                windows_core::Interface::as_raw(self),
23266                hrow as _,
23267                dwflags,
23268                pszdata.param().abi(),
23269                cchdata,
23270            )
23271            .ok()
23272        }
23273    }
23274    pub unsafe fn GetRowInfo(
23275        &self,
23276        hrow: *mut HHEADERROW__,
23277        pinfo: *mut HEADERROWINFO,
23278    ) -> windows_core::Result<()> {
23279        unsafe {
23280            (windows_core::Interface::vtable(self).GetRowInfo)(
23281                windows_core::Interface::as_raw(self),
23282                hrow as _,
23283                pinfo as _,
23284            )
23285            .ok()
23286        }
23287    }
23288    pub unsafe fn SetRowNumber(
23289        &self,
23290        hrow: *mut HHEADERROW__,
23291        dwrownumber: u32,
23292    ) -> windows_core::Result<()> {
23293        unsafe {
23294            (windows_core::Interface::vtable(self).SetRowNumber)(
23295                windows_core::Interface::as_raw(self),
23296                hrow as _,
23297                dwrownumber,
23298            )
23299            .ok()
23300        }
23301    }
23302    pub unsafe fn EnumRows<P0>(
23303        &self,
23304        pszheader: P0,
23305        dwflags: u32,
23306    ) -> windows_core::Result<IMimeEnumHeaderRows>
23307    where
23308        P0: windows_core::Param<windows_core::PCSTR>,
23309    {
23310        unsafe {
23311            let mut result__ = core::mem::zeroed();
23312            (windows_core::Interface::vtable(self).EnumRows)(
23313                windows_core::Interface::as_raw(self),
23314                pszheader.param().abi(),
23315                dwflags,
23316                &mut result__,
23317            )
23318            .and_then(|| windows_core::Type::from_abi(result__))
23319        }
23320    }
23321    pub unsafe fn Clone(&self) -> windows_core::Result<IMimeHeaderTable> {
23322        unsafe {
23323            let mut result__ = core::mem::zeroed();
23324            (windows_core::Interface::vtable(self).Clone)(
23325                windows_core::Interface::as_raw(self),
23326                &mut result__,
23327            )
23328            .and_then(|| windows_core::Type::from_abi(result__))
23329        }
23330    }
23331    pub unsafe fn BindToObject(
23332        &self,
23333        riid: *const windows_core::GUID,
23334        ppvobject: *mut *mut core::ffi::c_void,
23335    ) -> windows_core::Result<()> {
23336        unsafe {
23337            (windows_core::Interface::vtable(self).BindToObject)(
23338                windows_core::Interface::as_raw(self),
23339                riid,
23340                ppvobject as _,
23341            )
23342            .ok()
23343        }
23344    }
23345}
23346#[repr(C)]
23347#[doc(hidden)]
23348pub struct IMimeHeaderTable_Vtbl {
23349    pub base__: windows::Win32::System::Com::IPersistStream_Vtbl,
23350    pub Load: unsafe extern "system" fn(
23351        *mut core::ffi::c_void,
23352        *mut core::ffi::c_void,
23353    ) -> windows_core::HRESULT,
23354    pub Save: unsafe extern "system" fn(
23355        *mut core::ffi::c_void,
23356        *mut core::ffi::c_void,
23357        windows_core::BOOL,
23358    ) -> windows_core::HRESULT,
23359    pub GetSizeMax:
23360        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
23361    pub FindFirstRow: unsafe extern "system" fn(
23362        *mut core::ffi::c_void,
23363        *mut FINDHEADER,
23364        *mut *mut HHEADERROW__,
23365    ) -> windows_core::HRESULT,
23366    pub FindNextRow: unsafe extern "system" fn(
23367        *mut core::ffi::c_void,
23368        *mut FINDHEADER,
23369        *mut *mut HHEADERROW__,
23370    ) -> windows_core::HRESULT,
23371    pub CountRows: unsafe extern "system" fn(
23372        *mut core::ffi::c_void,
23373        windows_core::PCSTR,
23374        *mut u32,
23375    ) -> windows_core::HRESULT,
23376    pub AppendRow: unsafe extern "system" fn(
23377        *mut core::ffi::c_void,
23378        windows_core::PCSTR,
23379        u32,
23380        windows_core::PCSTR,
23381        u32,
23382        *mut *mut HHEADERROW__,
23383    ) -> windows_core::HRESULT,
23384    pub DeleteRow: unsafe extern "system" fn(
23385        *mut core::ffi::c_void,
23386        *mut HHEADERROW__,
23387    ) -> windows_core::HRESULT,
23388    pub GetRowData: unsafe extern "system" fn(
23389        *mut core::ffi::c_void,
23390        *mut HHEADERROW__,
23391        u32,
23392        *mut windows_core::PSTR,
23393        *mut u32,
23394    ) -> windows_core::HRESULT,
23395    pub SetRowData: unsafe extern "system" fn(
23396        *mut core::ffi::c_void,
23397        *mut HHEADERROW__,
23398        u32,
23399        windows_core::PCSTR,
23400        u32,
23401    ) -> windows_core::HRESULT,
23402    pub GetRowInfo: unsafe extern "system" fn(
23403        *mut core::ffi::c_void,
23404        *mut HHEADERROW__,
23405        *mut HEADERROWINFO,
23406    ) -> windows_core::HRESULT,
23407    pub SetRowNumber: unsafe extern "system" fn(
23408        *mut core::ffi::c_void,
23409        *mut HHEADERROW__,
23410        u32,
23411    ) -> windows_core::HRESULT,
23412    pub EnumRows: unsafe extern "system" fn(
23413        *mut core::ffi::c_void,
23414        windows_core::PCSTR,
23415        u32,
23416        *mut *mut core::ffi::c_void,
23417    ) -> windows_core::HRESULT,
23418    pub Clone: unsafe extern "system" fn(
23419        *mut core::ffi::c_void,
23420        *mut *mut core::ffi::c_void,
23421    ) -> windows_core::HRESULT,
23422    pub BindToObject: unsafe extern "system" fn(
23423        *mut core::ffi::c_void,
23424        *const windows_core::GUID,
23425        *mut *mut core::ffi::c_void,
23426    ) -> windows_core::HRESULT,
23427}
23428pub trait IMimeHeaderTable_Impl: windows::Win32::System::Com::IPersistStream_Impl {
23429    fn Load(
23430        &self,
23431        pstm: windows_core::Ref<windows::Win32::System::Com::IStream>,
23432    ) -> windows_core::Result<()>;
23433    fn Save(
23434        &self,
23435        pstm: windows_core::Ref<windows::Win32::System::Com::IStream>,
23436        fcleardirty: windows_core::BOOL,
23437    ) -> windows_core::Result<()>;
23438    fn GetSizeMax(&self) -> windows_core::Result<u64>;
23439    fn FindFirstRow(
23440        &self,
23441        pfindheader: *mut FINDHEADER,
23442        phrow: *mut *mut HHEADERROW__,
23443    ) -> windows_core::Result<()>;
23444    fn FindNextRow(
23445        &self,
23446        pfindheader: *mut FINDHEADER,
23447        phrow: *mut *mut HHEADERROW__,
23448    ) -> windows_core::Result<()>;
23449    fn CountRows(
23450        &self,
23451        pszheader: &windows_core::PCSTR,
23452        pcrows: *mut u32,
23453    ) -> windows_core::Result<()>;
23454    fn AppendRow(
23455        &self,
23456        pszheader: &windows_core::PCSTR,
23457        dwflags: u32,
23458        pszdata: &windows_core::PCSTR,
23459        cchdata: u32,
23460        phrow: *mut *mut HHEADERROW__,
23461    ) -> windows_core::Result<()>;
23462    fn DeleteRow(&self, hrow: *mut HHEADERROW__) -> windows_core::Result<()>;
23463    fn GetRowData(
23464        &self,
23465        hrow: *mut HHEADERROW__,
23466        dwflags: u32,
23467        ppszdata: *mut windows_core::PSTR,
23468        pcchdata: *mut u32,
23469    ) -> windows_core::Result<()>;
23470    fn SetRowData(
23471        &self,
23472        hrow: *mut HHEADERROW__,
23473        dwflags: u32,
23474        pszdata: &windows_core::PCSTR,
23475        cchdata: u32,
23476    ) -> windows_core::Result<()>;
23477    fn GetRowInfo(
23478        &self,
23479        hrow: *mut HHEADERROW__,
23480        pinfo: *mut HEADERROWINFO,
23481    ) -> windows_core::Result<()>;
23482    fn SetRowNumber(&self, hrow: *mut HHEADERROW__, dwrownumber: u32) -> windows_core::Result<()>;
23483    fn EnumRows(
23484        &self,
23485        pszheader: &windows_core::PCSTR,
23486        dwflags: u32,
23487    ) -> windows_core::Result<IMimeEnumHeaderRows>;
23488    fn Clone(&self) -> windows_core::Result<IMimeHeaderTable>;
23489    fn BindToObject(
23490        &self,
23491        riid: *const windows_core::GUID,
23492        ppvobject: *mut *mut core::ffi::c_void,
23493    ) -> windows_core::Result<()>;
23494}
23495impl IMimeHeaderTable_Vtbl {
23496    pub const fn new<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>() -> Self {
23497        unsafe extern "system" fn Load<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>(
23498            this: *mut core::ffi::c_void,
23499            pstm: *mut core::ffi::c_void,
23500        ) -> windows_core::HRESULT {
23501            unsafe {
23502                let this: &Identity =
23503                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23504                IMimeHeaderTable_Impl::Load(this, core::mem::transmute_copy(&pstm)).into()
23505            }
23506        }
23507        unsafe extern "system" fn Save<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>(
23508            this: *mut core::ffi::c_void,
23509            pstm: *mut core::ffi::c_void,
23510            fcleardirty: windows_core::BOOL,
23511        ) -> windows_core::HRESULT {
23512            unsafe {
23513                let this: &Identity =
23514                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23515                IMimeHeaderTable_Impl::Save(
23516                    this,
23517                    core::mem::transmute_copy(&pstm),
23518                    core::mem::transmute_copy(&fcleardirty),
23519                )
23520                .into()
23521            }
23522        }
23523        unsafe extern "system" fn GetSizeMax<
23524            Identity: IMimeHeaderTable_Impl,
23525            const OFFSET: isize,
23526        >(
23527            this: *mut core::ffi::c_void,
23528            pcbsize: *mut u64,
23529        ) -> windows_core::HRESULT {
23530            unsafe {
23531                let this: &Identity =
23532                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23533                match IMimeHeaderTable_Impl::GetSizeMax(this) {
23534                    Ok(ok__) => {
23535                        pcbsize.write(core::mem::transmute(ok__));
23536                        windows_core::HRESULT(0)
23537                    }
23538                    Err(err) => err.into(),
23539                }
23540            }
23541        }
23542        unsafe extern "system" fn FindFirstRow<
23543            Identity: IMimeHeaderTable_Impl,
23544            const OFFSET: isize,
23545        >(
23546            this: *mut core::ffi::c_void,
23547            pfindheader: *mut FINDHEADER,
23548            phrow: *mut *mut HHEADERROW__,
23549        ) -> windows_core::HRESULT {
23550            unsafe {
23551                let this: &Identity =
23552                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23553                IMimeHeaderTable_Impl::FindFirstRow(
23554                    this,
23555                    core::mem::transmute_copy(&pfindheader),
23556                    core::mem::transmute_copy(&phrow),
23557                )
23558                .into()
23559            }
23560        }
23561        unsafe extern "system" fn FindNextRow<
23562            Identity: IMimeHeaderTable_Impl,
23563            const OFFSET: isize,
23564        >(
23565            this: *mut core::ffi::c_void,
23566            pfindheader: *mut FINDHEADER,
23567            phrow: *mut *mut HHEADERROW__,
23568        ) -> windows_core::HRESULT {
23569            unsafe {
23570                let this: &Identity =
23571                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23572                IMimeHeaderTable_Impl::FindNextRow(
23573                    this,
23574                    core::mem::transmute_copy(&pfindheader),
23575                    core::mem::transmute_copy(&phrow),
23576                )
23577                .into()
23578            }
23579        }
23580        unsafe extern "system" fn CountRows<
23581            Identity: IMimeHeaderTable_Impl,
23582            const OFFSET: isize,
23583        >(
23584            this: *mut core::ffi::c_void,
23585            pszheader: windows_core::PCSTR,
23586            pcrows: *mut u32,
23587        ) -> windows_core::HRESULT {
23588            unsafe {
23589                let this: &Identity =
23590                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23591                IMimeHeaderTable_Impl::CountRows(
23592                    this,
23593                    core::mem::transmute(&pszheader),
23594                    core::mem::transmute_copy(&pcrows),
23595                )
23596                .into()
23597            }
23598        }
23599        unsafe extern "system" fn AppendRow<
23600            Identity: IMimeHeaderTable_Impl,
23601            const OFFSET: isize,
23602        >(
23603            this: *mut core::ffi::c_void,
23604            pszheader: windows_core::PCSTR,
23605            dwflags: u32,
23606            pszdata: windows_core::PCSTR,
23607            cchdata: u32,
23608            phrow: *mut *mut HHEADERROW__,
23609        ) -> windows_core::HRESULT {
23610            unsafe {
23611                let this: &Identity =
23612                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23613                IMimeHeaderTable_Impl::AppendRow(
23614                    this,
23615                    core::mem::transmute(&pszheader),
23616                    core::mem::transmute_copy(&dwflags),
23617                    core::mem::transmute(&pszdata),
23618                    core::mem::transmute_copy(&cchdata),
23619                    core::mem::transmute_copy(&phrow),
23620                )
23621                .into()
23622            }
23623        }
23624        unsafe extern "system" fn DeleteRow<
23625            Identity: IMimeHeaderTable_Impl,
23626            const OFFSET: isize,
23627        >(
23628            this: *mut core::ffi::c_void,
23629            hrow: *mut HHEADERROW__,
23630        ) -> windows_core::HRESULT {
23631            unsafe {
23632                let this: &Identity =
23633                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23634                IMimeHeaderTable_Impl::DeleteRow(this, core::mem::transmute_copy(&hrow)).into()
23635            }
23636        }
23637        unsafe extern "system" fn GetRowData<
23638            Identity: IMimeHeaderTable_Impl,
23639            const OFFSET: isize,
23640        >(
23641            this: *mut core::ffi::c_void,
23642            hrow: *mut HHEADERROW__,
23643            dwflags: u32,
23644            ppszdata: *mut windows_core::PSTR,
23645            pcchdata: *mut u32,
23646        ) -> windows_core::HRESULT {
23647            unsafe {
23648                let this: &Identity =
23649                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23650                IMimeHeaderTable_Impl::GetRowData(
23651                    this,
23652                    core::mem::transmute_copy(&hrow),
23653                    core::mem::transmute_copy(&dwflags),
23654                    core::mem::transmute_copy(&ppszdata),
23655                    core::mem::transmute_copy(&pcchdata),
23656                )
23657                .into()
23658            }
23659        }
23660        unsafe extern "system" fn SetRowData<
23661            Identity: IMimeHeaderTable_Impl,
23662            const OFFSET: isize,
23663        >(
23664            this: *mut core::ffi::c_void,
23665            hrow: *mut HHEADERROW__,
23666            dwflags: u32,
23667            pszdata: windows_core::PCSTR,
23668            cchdata: u32,
23669        ) -> windows_core::HRESULT {
23670            unsafe {
23671                let this: &Identity =
23672                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23673                IMimeHeaderTable_Impl::SetRowData(
23674                    this,
23675                    core::mem::transmute_copy(&hrow),
23676                    core::mem::transmute_copy(&dwflags),
23677                    core::mem::transmute(&pszdata),
23678                    core::mem::transmute_copy(&cchdata),
23679                )
23680                .into()
23681            }
23682        }
23683        unsafe extern "system" fn GetRowInfo<
23684            Identity: IMimeHeaderTable_Impl,
23685            const OFFSET: isize,
23686        >(
23687            this: *mut core::ffi::c_void,
23688            hrow: *mut HHEADERROW__,
23689            pinfo: *mut HEADERROWINFO,
23690        ) -> windows_core::HRESULT {
23691            unsafe {
23692                let this: &Identity =
23693                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23694                IMimeHeaderTable_Impl::GetRowInfo(
23695                    this,
23696                    core::mem::transmute_copy(&hrow),
23697                    core::mem::transmute_copy(&pinfo),
23698                )
23699                .into()
23700            }
23701        }
23702        unsafe extern "system" fn SetRowNumber<
23703            Identity: IMimeHeaderTable_Impl,
23704            const OFFSET: isize,
23705        >(
23706            this: *mut core::ffi::c_void,
23707            hrow: *mut HHEADERROW__,
23708            dwrownumber: u32,
23709        ) -> windows_core::HRESULT {
23710            unsafe {
23711                let this: &Identity =
23712                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23713                IMimeHeaderTable_Impl::SetRowNumber(
23714                    this,
23715                    core::mem::transmute_copy(&hrow),
23716                    core::mem::transmute_copy(&dwrownumber),
23717                )
23718                .into()
23719            }
23720        }
23721        unsafe extern "system" fn EnumRows<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>(
23722            this: *mut core::ffi::c_void,
23723            pszheader: windows_core::PCSTR,
23724            dwflags: u32,
23725            ppenum: *mut *mut core::ffi::c_void,
23726        ) -> windows_core::HRESULT {
23727            unsafe {
23728                let this: &Identity =
23729                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23730                match IMimeHeaderTable_Impl::EnumRows(
23731                    this,
23732                    core::mem::transmute(&pszheader),
23733                    core::mem::transmute_copy(&dwflags),
23734                ) {
23735                    Ok(ok__) => {
23736                        ppenum.write(core::mem::transmute(ok__));
23737                        windows_core::HRESULT(0)
23738                    }
23739                    Err(err) => err.into(),
23740                }
23741            }
23742        }
23743        unsafe extern "system" fn Clone<Identity: IMimeHeaderTable_Impl, const OFFSET: isize>(
23744            this: *mut core::ffi::c_void,
23745            pptable: *mut *mut core::ffi::c_void,
23746        ) -> windows_core::HRESULT {
23747            unsafe {
23748                let this: &Identity =
23749                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23750                match IMimeHeaderTable_Impl::Clone(this) {
23751                    Ok(ok__) => {
23752                        pptable.write(core::mem::transmute(ok__));
23753                        windows_core::HRESULT(0)
23754                    }
23755                    Err(err) => err.into(),
23756                }
23757            }
23758        }
23759        unsafe extern "system" fn BindToObject<
23760            Identity: IMimeHeaderTable_Impl,
23761            const OFFSET: isize,
23762        >(
23763            this: *mut core::ffi::c_void,
23764            riid: *const windows_core::GUID,
23765            ppvobject: *mut *mut core::ffi::c_void,
23766        ) -> windows_core::HRESULT {
23767            unsafe {
23768                let this: &Identity =
23769                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
23770                IMimeHeaderTable_Impl::BindToObject(
23771                    this,
23772                    core::mem::transmute_copy(&riid),
23773                    core::mem::transmute_copy(&ppvobject),
23774                )
23775                .into()
23776            }
23777        }
23778        Self {
23779            base__: windows::Win32::System::Com::IPersistStream_Vtbl::new::<Identity, OFFSET>(),
23780            Load: Load::<Identity, OFFSET>,
23781            Save: Save::<Identity, OFFSET>,
23782            GetSizeMax: GetSizeMax::<Identity, OFFSET>,
23783            FindFirstRow: FindFirstRow::<Identity, OFFSET>,
23784            FindNextRow: FindNextRow::<Identity, OFFSET>,
23785            CountRows: CountRows::<Identity, OFFSET>,
23786            AppendRow: AppendRow::<Identity, OFFSET>,
23787            DeleteRow: DeleteRow::<Identity, OFFSET>,
23788            GetRowData: GetRowData::<Identity, OFFSET>,
23789            SetRowData: SetRowData::<Identity, OFFSET>,
23790            GetRowInfo: GetRowInfo::<Identity, OFFSET>,
23791            SetRowNumber: SetRowNumber::<Identity, OFFSET>,
23792            EnumRows: EnumRows::<Identity, OFFSET>,
23793            Clone: Clone::<Identity, OFFSET>,
23794            BindToObject: BindToObject::<Identity, OFFSET>,
23795        }
23796    }
23797    pub fn matches(iid: &windows_core::GUID) -> bool {
23798        iid == &<IMimeHeaderTable as windows_core::Interface>::IID
23799            || iid == &<windows::Win32::System::Com::IPersist as windows_core::Interface>::IID
23800            || iid == &<windows::Win32::System::Com::IPersistStream as windows_core::Interface>::IID
23801    }
23802}
23803impl windows_core::RuntimeName for IMimeHeaderTable {}
23804windows_core::imp::define_interface!(
23805    IMimeInternational,
23806    IMimeInternational_Vtbl,
23807    0xc5588349_7f86_11d0_8252_00c04fd85ab4
23808);
23809windows_core::imp::interface_hierarchy!(IMimeInternational, windows_core::IUnknown);
23810impl IMimeInternational {
23811    pub unsafe fn SetDefaultCharset(&self, hcharset: *mut HCHARSET__) -> windows_core::Result<()> {
23812        unsafe {
23813            (windows_core::Interface::vtable(self).SetDefaultCharset)(
23814                windows_core::Interface::as_raw(self),
23815                hcharset as _,
23816            )
23817            .ok()
23818        }
23819    }
23820    pub unsafe fn GetDefaultCharset(
23821        &self,
23822        phcharset: *mut *mut HCHARSET__,
23823    ) -> windows_core::Result<()> {
23824        unsafe {
23825            (windows_core::Interface::vtable(self).GetDefaultCharset)(
23826                windows_core::Interface::as_raw(self),
23827                phcharset as _,
23828            )
23829            .ok()
23830        }
23831    }
23832    pub unsafe fn GetCodePageCharset(
23833        &self,
23834        cpicodepage: u32,
23835        ctcsettype: CHARSETTYPE,
23836        phcharset: *mut *mut HCHARSET__,
23837    ) -> windows_core::Result<()> {
23838        unsafe {
23839            (windows_core::Interface::vtable(self).GetCodePageCharset)(
23840                windows_core::Interface::as_raw(self),
23841                cpicodepage,
23842                ctcsettype,
23843                phcharset as _,
23844            )
23845            .ok()
23846        }
23847    }
23848    pub unsafe fn FindCharset<P0>(
23849        &self,
23850        pszcharset: P0,
23851        phcharset: *mut *mut HCHARSET__,
23852    ) -> windows_core::Result<()>
23853    where
23854        P0: windows_core::Param<windows_core::PCSTR>,
23855    {
23856        unsafe {
23857            (windows_core::Interface::vtable(self).FindCharset)(
23858                windows_core::Interface::as_raw(self),
23859                pszcharset.param().abi(),
23860                phcharset as _,
23861            )
23862            .ok()
23863        }
23864    }
23865    pub unsafe fn GetCharsetInfo(
23866        &self,
23867        hcharset: *mut HCHARSET__,
23868        pcsetinfo: *mut INETCSETINFO,
23869    ) -> windows_core::Result<()> {
23870        unsafe {
23871            (windows_core::Interface::vtable(self).GetCharsetInfo)(
23872                windows_core::Interface::as_raw(self),
23873                hcharset as _,
23874                pcsetinfo as _,
23875            )
23876            .ok()
23877        }
23878    }
23879    pub unsafe fn GetCodePageInfo(
23880        &self,
23881        cpicodepage: u32,
23882        pcodepageinfo: *mut CODEPAGEINFO,
23883    ) -> windows_core::Result<()> {
23884        unsafe {
23885            (windows_core::Interface::vtable(self).GetCodePageInfo)(
23886                windows_core::Interface::as_raw(self),
23887                cpicodepage,
23888                pcodepageinfo as _,
23889            )
23890            .ok()
23891        }
23892    }
23893    pub unsafe fn CanConvertCodePages(
23894        &self,
23895        cpisource: u32,
23896        cpidest: u32,
23897    ) -> windows_core::Result<()> {
23898        unsafe {
23899            (windows_core::Interface::vtable(self).CanConvertCodePages)(
23900                windows_core::Interface::as_raw(self),
23901                cpisource,
23902                cpidest,
23903            )
23904            .ok()
23905        }
23906    }
23907    pub unsafe fn DecodeHeader<P1>(
23908        &self,
23909        hcharset: *mut HCHARSET__,
23910        pszdata: P1,
23911        pdecoded: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
23912        prfc1522info: *mut RFC1522INFO,
23913    ) -> windows_core::Result<()>
23914    where
23915        P1: windows_core::Param<windows_core::PCSTR>,
23916    {
23917        unsafe {
23918            (windows_core::Interface::vtable(self).DecodeHeader)(
23919                windows_core::Interface::as_raw(self),
23920                hcharset as _,
23921                pszdata.param().abi(),
23922                core::mem::transmute(pdecoded),
23923                prfc1522info as _,
23924            )
23925            .ok()
23926        }
23927    }
23928    pub unsafe fn EncodeHeader(
23929        &self,
23930        hcharset: *mut HCHARSET__,
23931        pdata: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
23932        ppszencoded: *mut windows_core::PSTR,
23933        prfc1522info: *mut RFC1522INFO,
23934    ) -> windows_core::Result<()> {
23935        unsafe {
23936            (windows_core::Interface::vtable(self).EncodeHeader)(
23937                windows_core::Interface::as_raw(self),
23938                hcharset as _,
23939                core::mem::transmute(pdata),
23940                ppszencoded as _,
23941                prfc1522info as _,
23942            )
23943            .ok()
23944        }
23945    }
23946    pub unsafe fn ConvertBuffer(
23947        &self,
23948        cpisource: u32,
23949        cpidest: u32,
23950        pin: *mut windows::Win32::System::Com::BLOB,
23951        pout: *mut windows::Win32::System::Com::BLOB,
23952        pcbread: *mut u32,
23953    ) -> windows_core::Result<()> {
23954        unsafe {
23955            (windows_core::Interface::vtable(self).ConvertBuffer)(
23956                windows_core::Interface::as_raw(self),
23957                cpisource,
23958                cpidest,
23959                pin as _,
23960                pout as _,
23961                pcbread as _,
23962            )
23963            .ok()
23964        }
23965    }
23966    pub unsafe fn ConvertString(
23967        &self,
23968        cpisource: u32,
23969        cpidest: u32,
23970        pin: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
23971        pout: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
23972    ) -> windows_core::Result<()> {
23973        unsafe {
23974            (windows_core::Interface::vtable(self).ConvertString)(
23975                windows_core::Interface::as_raw(self),
23976                cpisource,
23977                cpidest,
23978                core::mem::transmute(pin),
23979                core::mem::transmute(pout),
23980            )
23981            .ok()
23982        }
23983    }
23984    pub unsafe fn MLANG_ConvertInetReset(&self) -> windows_core::Result<()> {
23985        unsafe {
23986            (windows_core::Interface::vtable(self).MLANG_ConvertInetReset)(
23987                windows_core::Interface::as_raw(self),
23988            )
23989            .ok()
23990        }
23991    }
23992    pub unsafe fn MLANG_ConvertInetString<P2, P4>(
23993        &self,
23994        cpisource: u32,
23995        cpidest: u32,
23996        psource: P2,
23997        pnsizeofsource: *mut i32,
23998        pdestination: P4,
23999        pndstsize: *mut i32,
24000    ) -> windows_core::Result<()>
24001    where
24002        P2: windows_core::Param<windows_core::PCSTR>,
24003        P4: windows_core::Param<windows_core::PCSTR>,
24004    {
24005        unsafe {
24006            (windows_core::Interface::vtable(self).MLANG_ConvertInetString)(
24007                windows_core::Interface::as_raw(self),
24008                cpisource,
24009                cpidest,
24010                psource.param().abi(),
24011                pnsizeofsource as _,
24012                pdestination.param().abi(),
24013                pndstsize as _,
24014            )
24015            .ok()
24016        }
24017    }
24018    pub unsafe fn Rfc1522Decode<P0, P1>(
24019        &self,
24020        pszvalue: P0,
24021        pszcharset: P1,
24022        cchmax: u32,
24023        ppszdecoded: *mut windows_core::PSTR,
24024    ) -> windows_core::Result<()>
24025    where
24026        P0: windows_core::Param<windows_core::PCSTR>,
24027        P1: windows_core::Param<windows_core::PCSTR>,
24028    {
24029        unsafe {
24030            (windows_core::Interface::vtable(self).Rfc1522Decode)(
24031                windows_core::Interface::as_raw(self),
24032                pszvalue.param().abi(),
24033                pszcharset.param().abi(),
24034                cchmax,
24035                ppszdecoded as _,
24036            )
24037            .ok()
24038        }
24039    }
24040    pub unsafe fn Rfc1522Encode<P0>(
24041        &self,
24042        pszvalue: P0,
24043        hcharset: *mut HCHARSET__,
24044        ppszencoded: *mut windows_core::PSTR,
24045    ) -> windows_core::Result<()>
24046    where
24047        P0: windows_core::Param<windows_core::PCSTR>,
24048    {
24049        unsafe {
24050            (windows_core::Interface::vtable(self).Rfc1522Encode)(
24051                windows_core::Interface::as_raw(self),
24052                pszvalue.param().abi(),
24053                hcharset as _,
24054                ppszencoded as _,
24055            )
24056            .ok()
24057        }
24058    }
24059}
24060#[repr(C)]
24061#[doc(hidden)]
24062pub struct IMimeInternational_Vtbl {
24063    pub base__: windows_core::IUnknown_Vtbl,
24064    pub SetDefaultCharset:
24065        unsafe extern "system" fn(*mut core::ffi::c_void, *mut HCHARSET__) -> windows_core::HRESULT,
24066    pub GetDefaultCharset: unsafe extern "system" fn(
24067        *mut core::ffi::c_void,
24068        *mut *mut HCHARSET__,
24069    ) -> windows_core::HRESULT,
24070    pub GetCodePageCharset: unsafe extern "system" fn(
24071        *mut core::ffi::c_void,
24072        u32,
24073        CHARSETTYPE,
24074        *mut *mut HCHARSET__,
24075    ) -> windows_core::HRESULT,
24076    pub FindCharset: unsafe extern "system" fn(
24077        *mut core::ffi::c_void,
24078        windows_core::PCSTR,
24079        *mut *mut HCHARSET__,
24080    ) -> windows_core::HRESULT,
24081    pub GetCharsetInfo: unsafe extern "system" fn(
24082        *mut core::ffi::c_void,
24083        *mut HCHARSET__,
24084        *mut INETCSETINFO,
24085    ) -> windows_core::HRESULT,
24086    pub GetCodePageInfo: unsafe extern "system" fn(
24087        *mut core::ffi::c_void,
24088        u32,
24089        *mut CODEPAGEINFO,
24090    ) -> windows_core::HRESULT,
24091    pub CanConvertCodePages:
24092        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
24093    pub DecodeHeader: unsafe extern "system" fn(
24094        *mut core::ffi::c_void,
24095        *mut HCHARSET__,
24096        windows_core::PCSTR,
24097        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24098        *mut RFC1522INFO,
24099    ) -> windows_core::HRESULT,
24100    pub EncodeHeader: unsafe extern "system" fn(
24101        *mut core::ffi::c_void,
24102        *mut HCHARSET__,
24103        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24104        *mut windows_core::PSTR,
24105        *mut RFC1522INFO,
24106    ) -> windows_core::HRESULT,
24107    pub ConvertBuffer: unsafe extern "system" fn(
24108        *mut core::ffi::c_void,
24109        u32,
24110        u32,
24111        *mut windows::Win32::System::Com::BLOB,
24112        *mut windows::Win32::System::Com::BLOB,
24113        *mut u32,
24114    ) -> windows_core::HRESULT,
24115    pub ConvertString: unsafe extern "system" fn(
24116        *mut core::ffi::c_void,
24117        u32,
24118        u32,
24119        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24120        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24121    ) -> windows_core::HRESULT,
24122    pub MLANG_ConvertInetReset:
24123        unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
24124    pub MLANG_ConvertInetString: unsafe extern "system" fn(
24125        *mut core::ffi::c_void,
24126        u32,
24127        u32,
24128        windows_core::PCSTR,
24129        *mut i32,
24130        windows_core::PCSTR,
24131        *mut i32,
24132    ) -> windows_core::HRESULT,
24133    pub Rfc1522Decode: unsafe extern "system" fn(
24134        *mut core::ffi::c_void,
24135        windows_core::PCSTR,
24136        windows_core::PCSTR,
24137        u32,
24138        *mut windows_core::PSTR,
24139    ) -> windows_core::HRESULT,
24140    pub Rfc1522Encode: unsafe extern "system" fn(
24141        *mut core::ffi::c_void,
24142        windows_core::PCSTR,
24143        *mut HCHARSET__,
24144        *mut windows_core::PSTR,
24145    ) -> windows_core::HRESULT,
24146}
24147pub trait IMimeInternational_Impl: windows_core::IUnknownImpl {
24148    fn SetDefaultCharset(&self, hcharset: *mut HCHARSET__) -> windows_core::Result<()>;
24149    fn GetDefaultCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()>;
24150    fn GetCodePageCharset(
24151        &self,
24152        cpicodepage: u32,
24153        ctcsettype: CHARSETTYPE,
24154        phcharset: *mut *mut HCHARSET__,
24155    ) -> windows_core::Result<()>;
24156    fn FindCharset(
24157        &self,
24158        pszcharset: &windows_core::PCSTR,
24159        phcharset: *mut *mut HCHARSET__,
24160    ) -> windows_core::Result<()>;
24161    fn GetCharsetInfo(
24162        &self,
24163        hcharset: *mut HCHARSET__,
24164        pcsetinfo: *mut INETCSETINFO,
24165    ) -> windows_core::Result<()>;
24166    fn GetCodePageInfo(
24167        &self,
24168        cpicodepage: u32,
24169        pcodepageinfo: *mut CODEPAGEINFO,
24170    ) -> windows_core::Result<()>;
24171    fn CanConvertCodePages(&self, cpisource: u32, cpidest: u32) -> windows_core::Result<()>;
24172    fn DecodeHeader(
24173        &self,
24174        hcharset: *mut HCHARSET__,
24175        pszdata: &windows_core::PCSTR,
24176        pdecoded: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24177        prfc1522info: *mut RFC1522INFO,
24178    ) -> windows_core::Result<()>;
24179    fn EncodeHeader(
24180        &self,
24181        hcharset: *mut HCHARSET__,
24182        pdata: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24183        ppszencoded: *mut windows_core::PSTR,
24184        prfc1522info: *mut RFC1522INFO,
24185    ) -> windows_core::Result<()>;
24186    fn ConvertBuffer(
24187        &self,
24188        cpisource: u32,
24189        cpidest: u32,
24190        pin: *mut windows::Win32::System::Com::BLOB,
24191        pout: *mut windows::Win32::System::Com::BLOB,
24192        pcbread: *mut u32,
24193    ) -> windows_core::Result<()>;
24194    fn ConvertString(
24195        &self,
24196        cpisource: u32,
24197        cpidest: u32,
24198        pin: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24199        pout: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24200    ) -> windows_core::Result<()>;
24201    fn MLANG_ConvertInetReset(&self) -> windows_core::Result<()>;
24202    fn MLANG_ConvertInetString(
24203        &self,
24204        cpisource: u32,
24205        cpidest: u32,
24206        psource: &windows_core::PCSTR,
24207        pnsizeofsource: *mut i32,
24208        pdestination: &windows_core::PCSTR,
24209        pndstsize: *mut i32,
24210    ) -> windows_core::Result<()>;
24211    fn Rfc1522Decode(
24212        &self,
24213        pszvalue: &windows_core::PCSTR,
24214        pszcharset: &windows_core::PCSTR,
24215        cchmax: u32,
24216        ppszdecoded: *mut windows_core::PSTR,
24217    ) -> windows_core::Result<()>;
24218    fn Rfc1522Encode(
24219        &self,
24220        pszvalue: &windows_core::PCSTR,
24221        hcharset: *mut HCHARSET__,
24222        ppszencoded: *mut windows_core::PSTR,
24223    ) -> windows_core::Result<()>;
24224}
24225impl IMimeInternational_Vtbl {
24226    pub const fn new<Identity: IMimeInternational_Impl, const OFFSET: isize>() -> Self {
24227        unsafe extern "system" fn SetDefaultCharset<
24228            Identity: IMimeInternational_Impl,
24229            const OFFSET: isize,
24230        >(
24231            this: *mut core::ffi::c_void,
24232            hcharset: *mut HCHARSET__,
24233        ) -> windows_core::HRESULT {
24234            unsafe {
24235                let this: &Identity =
24236                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24237                IMimeInternational_Impl::SetDefaultCharset(
24238                    this,
24239                    core::mem::transmute_copy(&hcharset),
24240                )
24241                .into()
24242            }
24243        }
24244        unsafe extern "system" fn GetDefaultCharset<
24245            Identity: IMimeInternational_Impl,
24246            const OFFSET: isize,
24247        >(
24248            this: *mut core::ffi::c_void,
24249            phcharset: *mut *mut HCHARSET__,
24250        ) -> windows_core::HRESULT {
24251            unsafe {
24252                let this: &Identity =
24253                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24254                IMimeInternational_Impl::GetDefaultCharset(
24255                    this,
24256                    core::mem::transmute_copy(&phcharset),
24257                )
24258                .into()
24259            }
24260        }
24261        unsafe extern "system" fn GetCodePageCharset<
24262            Identity: IMimeInternational_Impl,
24263            const OFFSET: isize,
24264        >(
24265            this: *mut core::ffi::c_void,
24266            cpicodepage: u32,
24267            ctcsettype: CHARSETTYPE,
24268            phcharset: *mut *mut HCHARSET__,
24269        ) -> windows_core::HRESULT {
24270            unsafe {
24271                let this: &Identity =
24272                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24273                IMimeInternational_Impl::GetCodePageCharset(
24274                    this,
24275                    core::mem::transmute_copy(&cpicodepage),
24276                    core::mem::transmute_copy(&ctcsettype),
24277                    core::mem::transmute_copy(&phcharset),
24278                )
24279                .into()
24280            }
24281        }
24282        unsafe extern "system" fn FindCharset<
24283            Identity: IMimeInternational_Impl,
24284            const OFFSET: isize,
24285        >(
24286            this: *mut core::ffi::c_void,
24287            pszcharset: windows_core::PCSTR,
24288            phcharset: *mut *mut HCHARSET__,
24289        ) -> windows_core::HRESULT {
24290            unsafe {
24291                let this: &Identity =
24292                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24293                IMimeInternational_Impl::FindCharset(
24294                    this,
24295                    core::mem::transmute(&pszcharset),
24296                    core::mem::transmute_copy(&phcharset),
24297                )
24298                .into()
24299            }
24300        }
24301        unsafe extern "system" fn GetCharsetInfo<
24302            Identity: IMimeInternational_Impl,
24303            const OFFSET: isize,
24304        >(
24305            this: *mut core::ffi::c_void,
24306            hcharset: *mut HCHARSET__,
24307            pcsetinfo: *mut INETCSETINFO,
24308        ) -> windows_core::HRESULT {
24309            unsafe {
24310                let this: &Identity =
24311                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24312                IMimeInternational_Impl::GetCharsetInfo(
24313                    this,
24314                    core::mem::transmute_copy(&hcharset),
24315                    core::mem::transmute_copy(&pcsetinfo),
24316                )
24317                .into()
24318            }
24319        }
24320        unsafe extern "system" fn GetCodePageInfo<
24321            Identity: IMimeInternational_Impl,
24322            const OFFSET: isize,
24323        >(
24324            this: *mut core::ffi::c_void,
24325            cpicodepage: u32,
24326            pcodepageinfo: *mut CODEPAGEINFO,
24327        ) -> windows_core::HRESULT {
24328            unsafe {
24329                let this: &Identity =
24330                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24331                IMimeInternational_Impl::GetCodePageInfo(
24332                    this,
24333                    core::mem::transmute_copy(&cpicodepage),
24334                    core::mem::transmute_copy(&pcodepageinfo),
24335                )
24336                .into()
24337            }
24338        }
24339        unsafe extern "system" fn CanConvertCodePages<
24340            Identity: IMimeInternational_Impl,
24341            const OFFSET: isize,
24342        >(
24343            this: *mut core::ffi::c_void,
24344            cpisource: u32,
24345            cpidest: u32,
24346        ) -> windows_core::HRESULT {
24347            unsafe {
24348                let this: &Identity =
24349                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24350                IMimeInternational_Impl::CanConvertCodePages(
24351                    this,
24352                    core::mem::transmute_copy(&cpisource),
24353                    core::mem::transmute_copy(&cpidest),
24354                )
24355                .into()
24356            }
24357        }
24358        unsafe extern "system" fn DecodeHeader<
24359            Identity: IMimeInternational_Impl,
24360            const OFFSET: isize,
24361        >(
24362            this: *mut core::ffi::c_void,
24363            hcharset: *mut HCHARSET__,
24364            pszdata: windows_core::PCSTR,
24365            pdecoded: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24366            prfc1522info: *mut RFC1522INFO,
24367        ) -> windows_core::HRESULT {
24368            unsafe {
24369                let this: &Identity =
24370                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24371                IMimeInternational_Impl::DecodeHeader(
24372                    this,
24373                    core::mem::transmute_copy(&hcharset),
24374                    core::mem::transmute(&pszdata),
24375                    core::mem::transmute_copy(&pdecoded),
24376                    core::mem::transmute_copy(&prfc1522info),
24377                )
24378                .into()
24379            }
24380        }
24381        unsafe extern "system" fn EncodeHeader<
24382            Identity: IMimeInternational_Impl,
24383            const OFFSET: isize,
24384        >(
24385            this: *mut core::ffi::c_void,
24386            hcharset: *mut HCHARSET__,
24387            pdata: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24388            ppszencoded: *mut windows_core::PSTR,
24389            prfc1522info: *mut RFC1522INFO,
24390        ) -> windows_core::HRESULT {
24391            unsafe {
24392                let this: &Identity =
24393                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24394                IMimeInternational_Impl::EncodeHeader(
24395                    this,
24396                    core::mem::transmute_copy(&hcharset),
24397                    core::mem::transmute_copy(&pdata),
24398                    core::mem::transmute_copy(&ppszencoded),
24399                    core::mem::transmute_copy(&prfc1522info),
24400                )
24401                .into()
24402            }
24403        }
24404        unsafe extern "system" fn ConvertBuffer<
24405            Identity: IMimeInternational_Impl,
24406            const OFFSET: isize,
24407        >(
24408            this: *mut core::ffi::c_void,
24409            cpisource: u32,
24410            cpidest: u32,
24411            pin: *mut windows::Win32::System::Com::BLOB,
24412            pout: *mut windows::Win32::System::Com::BLOB,
24413            pcbread: *mut u32,
24414        ) -> windows_core::HRESULT {
24415            unsafe {
24416                let this: &Identity =
24417                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24418                IMimeInternational_Impl::ConvertBuffer(
24419                    this,
24420                    core::mem::transmute_copy(&cpisource),
24421                    core::mem::transmute_copy(&cpidest),
24422                    core::mem::transmute_copy(&pin),
24423                    core::mem::transmute_copy(&pout),
24424                    core::mem::transmute_copy(&pcbread),
24425                )
24426                .into()
24427            }
24428        }
24429        unsafe extern "system" fn ConvertString<
24430            Identity: IMimeInternational_Impl,
24431            const OFFSET: isize,
24432        >(
24433            this: *mut core::ffi::c_void,
24434            cpisource: u32,
24435            cpidest: u32,
24436            pin: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24437            pout: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24438        ) -> windows_core::HRESULT {
24439            unsafe {
24440                let this: &Identity =
24441                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24442                IMimeInternational_Impl::ConvertString(
24443                    this,
24444                    core::mem::transmute_copy(&cpisource),
24445                    core::mem::transmute_copy(&cpidest),
24446                    core::mem::transmute_copy(&pin),
24447                    core::mem::transmute_copy(&pout),
24448                )
24449                .into()
24450            }
24451        }
24452        unsafe extern "system" fn MLANG_ConvertInetReset<
24453            Identity: IMimeInternational_Impl,
24454            const OFFSET: isize,
24455        >(
24456            this: *mut core::ffi::c_void,
24457        ) -> windows_core::HRESULT {
24458            unsafe {
24459                let this: &Identity =
24460                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24461                IMimeInternational_Impl::MLANG_ConvertInetReset(this).into()
24462            }
24463        }
24464        unsafe extern "system" fn MLANG_ConvertInetString<
24465            Identity: IMimeInternational_Impl,
24466            const OFFSET: isize,
24467        >(
24468            this: *mut core::ffi::c_void,
24469            cpisource: u32,
24470            cpidest: u32,
24471            psource: windows_core::PCSTR,
24472            pnsizeofsource: *mut i32,
24473            pdestination: windows_core::PCSTR,
24474            pndstsize: *mut i32,
24475        ) -> windows_core::HRESULT {
24476            unsafe {
24477                let this: &Identity =
24478                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24479                IMimeInternational_Impl::MLANG_ConvertInetString(
24480                    this,
24481                    core::mem::transmute_copy(&cpisource),
24482                    core::mem::transmute_copy(&cpidest),
24483                    core::mem::transmute(&psource),
24484                    core::mem::transmute_copy(&pnsizeofsource),
24485                    core::mem::transmute(&pdestination),
24486                    core::mem::transmute_copy(&pndstsize),
24487                )
24488                .into()
24489            }
24490        }
24491        unsafe extern "system" fn Rfc1522Decode<
24492            Identity: IMimeInternational_Impl,
24493            const OFFSET: isize,
24494        >(
24495            this: *mut core::ffi::c_void,
24496            pszvalue: windows_core::PCSTR,
24497            pszcharset: windows_core::PCSTR,
24498            cchmax: u32,
24499            ppszdecoded: *mut windows_core::PSTR,
24500        ) -> windows_core::HRESULT {
24501            unsafe {
24502                let this: &Identity =
24503                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24504                IMimeInternational_Impl::Rfc1522Decode(
24505                    this,
24506                    core::mem::transmute(&pszvalue),
24507                    core::mem::transmute(&pszcharset),
24508                    core::mem::transmute_copy(&cchmax),
24509                    core::mem::transmute_copy(&ppszdecoded),
24510                )
24511                .into()
24512            }
24513        }
24514        unsafe extern "system" fn Rfc1522Encode<
24515            Identity: IMimeInternational_Impl,
24516            const OFFSET: isize,
24517        >(
24518            this: *mut core::ffi::c_void,
24519            pszvalue: windows_core::PCSTR,
24520            hcharset: *mut HCHARSET__,
24521            ppszencoded: *mut windows_core::PSTR,
24522        ) -> windows_core::HRESULT {
24523            unsafe {
24524                let this: &Identity =
24525                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
24526                IMimeInternational_Impl::Rfc1522Encode(
24527                    this,
24528                    core::mem::transmute(&pszvalue),
24529                    core::mem::transmute_copy(&hcharset),
24530                    core::mem::transmute_copy(&ppszencoded),
24531                )
24532                .into()
24533            }
24534        }
24535        Self {
24536            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
24537            SetDefaultCharset: SetDefaultCharset::<Identity, OFFSET>,
24538            GetDefaultCharset: GetDefaultCharset::<Identity, OFFSET>,
24539            GetCodePageCharset: GetCodePageCharset::<Identity, OFFSET>,
24540            FindCharset: FindCharset::<Identity, OFFSET>,
24541            GetCharsetInfo: GetCharsetInfo::<Identity, OFFSET>,
24542            GetCodePageInfo: GetCodePageInfo::<Identity, OFFSET>,
24543            CanConvertCodePages: CanConvertCodePages::<Identity, OFFSET>,
24544            DecodeHeader: DecodeHeader::<Identity, OFFSET>,
24545            EncodeHeader: EncodeHeader::<Identity, OFFSET>,
24546            ConvertBuffer: ConvertBuffer::<Identity, OFFSET>,
24547            ConvertString: ConvertString::<Identity, OFFSET>,
24548            MLANG_ConvertInetReset: MLANG_ConvertInetReset::<Identity, OFFSET>,
24549            MLANG_ConvertInetString: MLANG_ConvertInetString::<Identity, OFFSET>,
24550            Rfc1522Decode: Rfc1522Decode::<Identity, OFFSET>,
24551            Rfc1522Encode: Rfc1522Encode::<Identity, OFFSET>,
24552        }
24553    }
24554    pub fn matches(iid: &windows_core::GUID) -> bool {
24555        iid == &<IMimeInternational as windows_core::Interface>::IID
24556    }
24557}
24558impl windows_core::RuntimeName for IMimeInternational {}
24559windows_core::imp::define_interface!(
24560    IMimeMessage,
24561    IMimeMessage_Vtbl,
24562    0xfd853cd5_7f86_11d0_8252_00c04fd85ab4
24563);
24564impl core::ops::Deref for IMimeMessage {
24565    type Target = IMimeMessageTree;
24566    fn deref(&self) -> &Self::Target {
24567        unsafe { core::mem::transmute(self) }
24568    }
24569}
24570windows_core::imp::interface_hierarchy!(
24571    IMimeMessage,
24572    windows_core::IUnknown,
24573    windows::Win32::System::Com::IPersist,
24574    windows::Win32::System::Com::IPersistStreamInit,
24575    IMimeMessageTree
24576);
24577impl IMimeMessage {
24578    pub unsafe fn CreateWebPage<P0, P2>(
24579        &self,
24580        prootstm: P0,
24581        poptions: *mut WEBPAGEOPTIONS,
24582        pcallback: P2,
24583        ppmoniker: *mut Option<windows::Win32::System::Com::IMoniker>,
24584    ) -> windows_core::Result<()>
24585    where
24586        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
24587        P2: windows_core::Param<IMimeMessageCallback>,
24588    {
24589        unsafe {
24590            (windows_core::Interface::vtable(self).CreateWebPage)(
24591                windows_core::Interface::as_raw(self),
24592                prootstm.param().abi(),
24593                poptions as _,
24594                pcallback.param().abi(),
24595                core::mem::transmute(ppmoniker),
24596            )
24597            .ok()
24598        }
24599    }
24600    pub unsafe fn GetPropA<P0>(
24601        &self,
24602        pszname: P0,
24603        dwflags: u32,
24604        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24605    ) -> windows_core::Result<()>
24606    where
24607        P0: windows_core::Param<windows_core::PCSTR>,
24608    {
24609        unsafe {
24610            (windows_core::Interface::vtable(self).GetPropA)(
24611                windows_core::Interface::as_raw(self),
24612                pszname.param().abi(),
24613                dwflags,
24614                core::mem::transmute(pvalue),
24615            )
24616            .ok()
24617        }
24618    }
24619    pub unsafe fn SetPropA<P0>(
24620        &self,
24621        pszname: P0,
24622        dwflags: u32,
24623        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24624    ) -> windows_core::Result<()>
24625    where
24626        P0: windows_core::Param<windows_core::PCSTR>,
24627    {
24628        unsafe {
24629            (windows_core::Interface::vtable(self).SetPropA)(
24630                windows_core::Interface::as_raw(self),
24631                pszname.param().abi(),
24632                dwflags,
24633                core::mem::transmute(pvalue),
24634            )
24635            .ok()
24636        }
24637    }
24638    pub unsafe fn DeleteProp<P0>(&self, pszname: P0) -> windows_core::Result<()>
24639    where
24640        P0: windows_core::Param<windows_core::PCSTR>,
24641    {
24642        unsafe {
24643            (windows_core::Interface::vtable(self).DeleteProp)(
24644                windows_core::Interface::as_raw(self),
24645                pszname.param().abi(),
24646            )
24647            .ok()
24648        }
24649    }
24650    pub unsafe fn QueryProp<P0, P1>(
24651        &self,
24652        pszname: P0,
24653        pszcriteria: P1,
24654        fsubstring: u8,
24655        fcasesensitive: u8,
24656    ) -> windows_core::Result<()>
24657    where
24658        P0: windows_core::Param<windows_core::PCSTR>,
24659        P1: windows_core::Param<windows_core::PCSTR>,
24660    {
24661        unsafe {
24662            (windows_core::Interface::vtable(self).QueryProp)(
24663                windows_core::Interface::as_raw(self),
24664                pszname.param().abi(),
24665                pszcriteria.param().abi(),
24666                fsubstring,
24667                fcasesensitive,
24668            )
24669            .ok()
24670        }
24671    }
24672    pub unsafe fn GetTextBody(
24673        &self,
24674        dwtxttype: u32,
24675        ietencoding: ENCODINGTYPE,
24676        ppstream: *mut Option<windows::Win32::System::Com::IStream>,
24677        phbody: *mut *mut HBODY__,
24678    ) -> windows_core::Result<()> {
24679        unsafe {
24680            (windows_core::Interface::vtable(self).GetTextBody)(
24681                windows_core::Interface::as_raw(self),
24682                dwtxttype,
24683                ietencoding,
24684                core::mem::transmute(ppstream),
24685                phbody as _,
24686            )
24687            .ok()
24688        }
24689    }
24690    pub unsafe fn SetTextBody<P3>(
24691        &self,
24692        dwtxttype: u32,
24693        ietencoding: ENCODINGTYPE,
24694        halternative: *mut HBODY__,
24695        pstream: P3,
24696        phbody: *mut *mut HBODY__,
24697    ) -> windows_core::Result<()>
24698    where
24699        P3: windows_core::Param<windows::Win32::System::Com::IStream>,
24700    {
24701        unsafe {
24702            (windows_core::Interface::vtable(self).SetTextBody)(
24703                windows_core::Interface::as_raw(self),
24704                dwtxttype,
24705                ietencoding,
24706                halternative as _,
24707                pstream.param().abi(),
24708                phbody as _,
24709            )
24710            .ok()
24711        }
24712    }
24713    pub unsafe fn AttachObject(
24714        &self,
24715        riid: *const windows_core::GUID,
24716        pvobject: *mut core::ffi::c_void,
24717        phbody: *mut *mut HBODY__,
24718    ) -> windows_core::Result<()> {
24719        unsafe {
24720            (windows_core::Interface::vtable(self).AttachObject)(
24721                windows_core::Interface::as_raw(self),
24722                riid,
24723                pvobject as _,
24724                phbody as _,
24725            )
24726            .ok()
24727        }
24728    }
24729    pub unsafe fn AttachFile<P0, P1>(
24730        &self,
24731        pszfilepath: P0,
24732        pstmfile: P1,
24733        phbody: *mut *mut HBODY__,
24734    ) -> windows_core::Result<()>
24735    where
24736        P0: windows_core::Param<windows_core::PCSTR>,
24737        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
24738    {
24739        unsafe {
24740            (windows_core::Interface::vtable(self).AttachFile)(
24741                windows_core::Interface::as_raw(self),
24742                pszfilepath.param().abi(),
24743                pstmfile.param().abi(),
24744                phbody as _,
24745            )
24746            .ok()
24747        }
24748    }
24749    pub unsafe fn AttachURL<P0, P1, P3>(
24750        &self,
24751        pszbase: P0,
24752        pszurl: P1,
24753        dwflags: u32,
24754        pstmurl: P3,
24755        ppszcidurl: *mut windows_core::PSTR,
24756        phbody: *mut *mut HBODY__,
24757    ) -> windows_core::Result<()>
24758    where
24759        P0: windows_core::Param<windows_core::PCSTR>,
24760        P1: windows_core::Param<windows_core::PCSTR>,
24761        P3: windows_core::Param<windows::Win32::System::Com::IStream>,
24762    {
24763        unsafe {
24764            (windows_core::Interface::vtable(self).AttachURL)(
24765                windows_core::Interface::as_raw(self),
24766                pszbase.param().abi(),
24767                pszurl.param().abi(),
24768                dwflags,
24769                pstmurl.param().abi(),
24770                ppszcidurl as _,
24771                phbody as _,
24772            )
24773            .ok()
24774        }
24775    }
24776    pub unsafe fn GetAttachments(
24777        &self,
24778        pcattach: *mut u32,
24779        pprghattach: *mut *mut *mut HBODY__,
24780    ) -> windows_core::Result<()> {
24781        unsafe {
24782            (windows_core::Interface::vtable(self).GetAttachments)(
24783                windows_core::Interface::as_raw(self),
24784                pcattach as _,
24785                pprghattach as _,
24786            )
24787            .ok()
24788        }
24789    }
24790    pub unsafe fn GetAddressTable(&self) -> windows_core::Result<IMimeAddressTable> {
24791        unsafe {
24792            let mut result__ = core::mem::zeroed();
24793            (windows_core::Interface::vtable(self).GetAddressTable)(
24794                windows_core::Interface::as_raw(self),
24795                &mut result__,
24796            )
24797            .and_then(|| windows_core::Type::from_abi(result__))
24798        }
24799    }
24800    pub unsafe fn GetSender(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()> {
24801        unsafe {
24802            (windows_core::Interface::vtable(self).GetSender)(
24803                windows_core::Interface::as_raw(self),
24804                paddress as _,
24805            )
24806            .ok()
24807        }
24808    }
24809    pub unsafe fn GetAddressTypes(
24810        &self,
24811        dwadrtypes: u32,
24812        dwprops: u32,
24813        plist: *mut ADDRESSLIST,
24814    ) -> windows_core::Result<()> {
24815        unsafe {
24816            (windows_core::Interface::vtable(self).GetAddressTypes)(
24817                windows_core::Interface::as_raw(self),
24818                dwadrtypes,
24819                dwprops,
24820                plist as _,
24821            )
24822            .ok()
24823        }
24824    }
24825    pub unsafe fn GetAddressFormat(
24826        &self,
24827        dwadrtype: u32,
24828        format: ADDRESSFORMAT,
24829        ppszformat: *mut windows_core::PSTR,
24830    ) -> windows_core::Result<()> {
24831        unsafe {
24832            (windows_core::Interface::vtable(self).GetAddressFormat)(
24833                windows_core::Interface::as_raw(self),
24834                dwadrtype,
24835                format,
24836                ppszformat as _,
24837            )
24838            .ok()
24839        }
24840    }
24841    pub unsafe fn EnumAddressTypes(
24842        &self,
24843        dwadrtypes: u32,
24844        dwprops: u32,
24845    ) -> windows_core::Result<IMimeEnumAddressTypes> {
24846        unsafe {
24847            let mut result__ = core::mem::zeroed();
24848            (windows_core::Interface::vtable(self).EnumAddressTypes)(
24849                windows_core::Interface::as_raw(self),
24850                dwadrtypes,
24851                dwprops,
24852                &mut result__,
24853            )
24854            .and_then(|| windows_core::Type::from_abi(result__))
24855        }
24856    }
24857    pub unsafe fn SplitMessage(&self, cbmaxpart: u32) -> windows_core::Result<IMimeMessageParts> {
24858        unsafe {
24859            let mut result__ = core::mem::zeroed();
24860            (windows_core::Interface::vtable(self).SplitMessage)(
24861                windows_core::Interface::as_raw(self),
24862                cbmaxpart,
24863                &mut result__,
24864            )
24865            .and_then(|| windows_core::Type::from_abi(result__))
24866        }
24867    }
24868    pub unsafe fn GetRootMoniker(
24869        &self,
24870    ) -> windows_core::Result<windows::Win32::System::Com::IMoniker> {
24871        unsafe {
24872            let mut result__ = core::mem::zeroed();
24873            (windows_core::Interface::vtable(self).GetRootMoniker)(
24874                windows_core::Interface::as_raw(self),
24875                &mut result__,
24876            )
24877            .and_then(|| windows_core::Type::from_abi(result__))
24878        }
24879    }
24880}
24881#[repr(C)]
24882#[doc(hidden)]
24883pub struct IMimeMessage_Vtbl {
24884    pub base__: IMimeMessageTree_Vtbl,
24885    pub CreateWebPage: unsafe extern "system" fn(
24886        *mut core::ffi::c_void,
24887        *mut core::ffi::c_void,
24888        *mut WEBPAGEOPTIONS,
24889        *mut core::ffi::c_void,
24890        *mut *mut core::ffi::c_void,
24891    ) -> windows_core::HRESULT,
24892    pub GetPropA: unsafe extern "system" fn(
24893        *mut core::ffi::c_void,
24894        windows_core::PCSTR,
24895        u32,
24896        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24897    ) -> windows_core::HRESULT,
24898    pub SetPropA: unsafe extern "system" fn(
24899        *mut core::ffi::c_void,
24900        windows_core::PCSTR,
24901        u32,
24902        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
24903    ) -> windows_core::HRESULT,
24904    pub DeleteProp: unsafe extern "system" fn(
24905        *mut core::ffi::c_void,
24906        windows_core::PCSTR,
24907    ) -> windows_core::HRESULT,
24908    pub QueryProp: unsafe extern "system" fn(
24909        *mut core::ffi::c_void,
24910        windows_core::PCSTR,
24911        windows_core::PCSTR,
24912        u8,
24913        u8,
24914    ) -> windows_core::HRESULT,
24915    pub GetTextBody: unsafe extern "system" fn(
24916        *mut core::ffi::c_void,
24917        u32,
24918        ENCODINGTYPE,
24919        *mut *mut core::ffi::c_void,
24920        *mut *mut HBODY__,
24921    ) -> windows_core::HRESULT,
24922    pub SetTextBody: unsafe extern "system" fn(
24923        *mut core::ffi::c_void,
24924        u32,
24925        ENCODINGTYPE,
24926        *mut HBODY__,
24927        *mut core::ffi::c_void,
24928        *mut *mut HBODY__,
24929    ) -> windows_core::HRESULT,
24930    pub AttachObject: unsafe extern "system" fn(
24931        *mut core::ffi::c_void,
24932        *const windows_core::GUID,
24933        *mut core::ffi::c_void,
24934        *mut *mut HBODY__,
24935    ) -> windows_core::HRESULT,
24936    pub AttachFile: unsafe extern "system" fn(
24937        *mut core::ffi::c_void,
24938        windows_core::PCSTR,
24939        *mut core::ffi::c_void,
24940        *mut *mut HBODY__,
24941    ) -> windows_core::HRESULT,
24942    pub AttachURL: unsafe extern "system" fn(
24943        *mut core::ffi::c_void,
24944        windows_core::PCSTR,
24945        windows_core::PCSTR,
24946        u32,
24947        *mut core::ffi::c_void,
24948        *mut windows_core::PSTR,
24949        *mut *mut HBODY__,
24950    ) -> windows_core::HRESULT,
24951    pub GetAttachments: unsafe extern "system" fn(
24952        *mut core::ffi::c_void,
24953        *mut u32,
24954        *mut *mut *mut HBODY__,
24955    ) -> windows_core::HRESULT,
24956    pub GetAddressTable: unsafe extern "system" fn(
24957        *mut core::ffi::c_void,
24958        *mut *mut core::ffi::c_void,
24959    ) -> windows_core::HRESULT,
24960    pub GetSender: unsafe extern "system" fn(
24961        *mut core::ffi::c_void,
24962        *mut ADDRESSPROPS,
24963    ) -> windows_core::HRESULT,
24964    pub GetAddressTypes: unsafe extern "system" fn(
24965        *mut core::ffi::c_void,
24966        u32,
24967        u32,
24968        *mut ADDRESSLIST,
24969    ) -> windows_core::HRESULT,
24970    pub GetAddressFormat: unsafe extern "system" fn(
24971        *mut core::ffi::c_void,
24972        u32,
24973        ADDRESSFORMAT,
24974        *mut windows_core::PSTR,
24975    ) -> windows_core::HRESULT,
24976    pub EnumAddressTypes: unsafe extern "system" fn(
24977        *mut core::ffi::c_void,
24978        u32,
24979        u32,
24980        *mut *mut core::ffi::c_void,
24981    ) -> windows_core::HRESULT,
24982    pub SplitMessage: unsafe extern "system" fn(
24983        *mut core::ffi::c_void,
24984        u32,
24985        *mut *mut core::ffi::c_void,
24986    ) -> windows_core::HRESULT,
24987    pub GetRootMoniker: unsafe extern "system" fn(
24988        *mut core::ffi::c_void,
24989        *mut *mut core::ffi::c_void,
24990    ) -> windows_core::HRESULT,
24991}
24992pub trait IMimeMessage_Impl: IMimeMessageTree_Impl {
24993    fn CreateWebPage(
24994        &self,
24995        prootstm: windows_core::Ref<windows::Win32::System::Com::IStream>,
24996        poptions: *mut WEBPAGEOPTIONS,
24997        pcallback: windows_core::Ref<IMimeMessageCallback>,
24998        ppmoniker: windows_core::OutRef<windows::Win32::System::Com::IMoniker>,
24999    ) -> windows_core::Result<()>;
25000    fn GetPropA(
25001        &self,
25002        pszname: &windows_core::PCSTR,
25003        dwflags: u32,
25004        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
25005    ) -> windows_core::Result<()>;
25006    fn SetPropA(
25007        &self,
25008        pszname: &windows_core::PCSTR,
25009        dwflags: u32,
25010        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
25011    ) -> windows_core::Result<()>;
25012    fn DeleteProp(&self, pszname: &windows_core::PCSTR) -> windows_core::Result<()>;
25013    fn QueryProp(
25014        &self,
25015        pszname: &windows_core::PCSTR,
25016        pszcriteria: &windows_core::PCSTR,
25017        fsubstring: u8,
25018        fcasesensitive: u8,
25019    ) -> windows_core::Result<()>;
25020    fn GetTextBody(
25021        &self,
25022        dwtxttype: u32,
25023        ietencoding: ENCODINGTYPE,
25024        ppstream: windows_core::OutRef<windows::Win32::System::Com::IStream>,
25025        phbody: *mut *mut HBODY__,
25026    ) -> windows_core::Result<()>;
25027    fn SetTextBody(
25028        &self,
25029        dwtxttype: u32,
25030        ietencoding: ENCODINGTYPE,
25031        halternative: *mut HBODY__,
25032        pstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
25033        phbody: *mut *mut HBODY__,
25034    ) -> windows_core::Result<()>;
25035    fn AttachObject(
25036        &self,
25037        riid: *const windows_core::GUID,
25038        pvobject: *mut core::ffi::c_void,
25039        phbody: *mut *mut HBODY__,
25040    ) -> windows_core::Result<()>;
25041    fn AttachFile(
25042        &self,
25043        pszfilepath: &windows_core::PCSTR,
25044        pstmfile: windows_core::Ref<windows::Win32::System::Com::IStream>,
25045        phbody: *mut *mut HBODY__,
25046    ) -> windows_core::Result<()>;
25047    fn AttachURL(
25048        &self,
25049        pszbase: &windows_core::PCSTR,
25050        pszurl: &windows_core::PCSTR,
25051        dwflags: u32,
25052        pstmurl: windows_core::Ref<windows::Win32::System::Com::IStream>,
25053        ppszcidurl: *mut windows_core::PSTR,
25054        phbody: *mut *mut HBODY__,
25055    ) -> windows_core::Result<()>;
25056    fn GetAttachments(
25057        &self,
25058        pcattach: *mut u32,
25059        pprghattach: *mut *mut *mut HBODY__,
25060    ) -> windows_core::Result<()>;
25061    fn GetAddressTable(&self) -> windows_core::Result<IMimeAddressTable>;
25062    fn GetSender(&self, paddress: *mut ADDRESSPROPS) -> windows_core::Result<()>;
25063    fn GetAddressTypes(
25064        &self,
25065        dwadrtypes: u32,
25066        dwprops: u32,
25067        plist: *mut ADDRESSLIST,
25068    ) -> windows_core::Result<()>;
25069    fn GetAddressFormat(
25070        &self,
25071        dwadrtype: u32,
25072        format: ADDRESSFORMAT,
25073        ppszformat: *mut windows_core::PSTR,
25074    ) -> windows_core::Result<()>;
25075    fn EnumAddressTypes(
25076        &self,
25077        dwadrtypes: u32,
25078        dwprops: u32,
25079    ) -> windows_core::Result<IMimeEnumAddressTypes>;
25080    fn SplitMessage(&self, cbmaxpart: u32) -> windows_core::Result<IMimeMessageParts>;
25081    fn GetRootMoniker(&self) -> windows_core::Result<windows::Win32::System::Com::IMoniker>;
25082}
25083impl IMimeMessage_Vtbl {
25084    pub const fn new<Identity: IMimeMessage_Impl, const OFFSET: isize>() -> Self {
25085        unsafe extern "system" fn CreateWebPage<
25086            Identity: IMimeMessage_Impl,
25087            const OFFSET: isize,
25088        >(
25089            this: *mut core::ffi::c_void,
25090            prootstm: *mut core::ffi::c_void,
25091            poptions: *mut WEBPAGEOPTIONS,
25092            pcallback: *mut core::ffi::c_void,
25093            ppmoniker: *mut *mut core::ffi::c_void,
25094        ) -> windows_core::HRESULT {
25095            unsafe {
25096                let this: &Identity =
25097                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25098                IMimeMessage_Impl::CreateWebPage(
25099                    this,
25100                    core::mem::transmute_copy(&prootstm),
25101                    core::mem::transmute_copy(&poptions),
25102                    core::mem::transmute_copy(&pcallback),
25103                    core::mem::transmute_copy(&ppmoniker),
25104                )
25105                .into()
25106            }
25107        }
25108        unsafe extern "system" fn GetPropA<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25109            this: *mut core::ffi::c_void,
25110            pszname: windows_core::PCSTR,
25111            dwflags: u32,
25112            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
25113        ) -> windows_core::HRESULT {
25114            unsafe {
25115                let this: &Identity =
25116                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25117                IMimeMessage_Impl::GetPropA(
25118                    this,
25119                    core::mem::transmute(&pszname),
25120                    core::mem::transmute_copy(&dwflags),
25121                    core::mem::transmute_copy(&pvalue),
25122                )
25123                .into()
25124            }
25125        }
25126        unsafe extern "system" fn SetPropA<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25127            this: *mut core::ffi::c_void,
25128            pszname: windows_core::PCSTR,
25129            dwflags: u32,
25130            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
25131        ) -> windows_core::HRESULT {
25132            unsafe {
25133                let this: &Identity =
25134                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25135                IMimeMessage_Impl::SetPropA(
25136                    this,
25137                    core::mem::transmute(&pszname),
25138                    core::mem::transmute_copy(&dwflags),
25139                    core::mem::transmute_copy(&pvalue),
25140                )
25141                .into()
25142            }
25143        }
25144        unsafe extern "system" fn DeleteProp<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25145            this: *mut core::ffi::c_void,
25146            pszname: windows_core::PCSTR,
25147        ) -> windows_core::HRESULT {
25148            unsafe {
25149                let this: &Identity =
25150                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25151                IMimeMessage_Impl::DeleteProp(this, core::mem::transmute(&pszname)).into()
25152            }
25153        }
25154        unsafe extern "system" fn QueryProp<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25155            this: *mut core::ffi::c_void,
25156            pszname: windows_core::PCSTR,
25157            pszcriteria: windows_core::PCSTR,
25158            fsubstring: u8,
25159            fcasesensitive: u8,
25160        ) -> windows_core::HRESULT {
25161            unsafe {
25162                let this: &Identity =
25163                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25164                IMimeMessage_Impl::QueryProp(
25165                    this,
25166                    core::mem::transmute(&pszname),
25167                    core::mem::transmute(&pszcriteria),
25168                    core::mem::transmute_copy(&fsubstring),
25169                    core::mem::transmute_copy(&fcasesensitive),
25170                )
25171                .into()
25172            }
25173        }
25174        unsafe extern "system" fn GetTextBody<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25175            this: *mut core::ffi::c_void,
25176            dwtxttype: u32,
25177            ietencoding: ENCODINGTYPE,
25178            ppstream: *mut *mut core::ffi::c_void,
25179            phbody: *mut *mut HBODY__,
25180        ) -> windows_core::HRESULT {
25181            unsafe {
25182                let this: &Identity =
25183                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25184                IMimeMessage_Impl::GetTextBody(
25185                    this,
25186                    core::mem::transmute_copy(&dwtxttype),
25187                    core::mem::transmute_copy(&ietencoding),
25188                    core::mem::transmute_copy(&ppstream),
25189                    core::mem::transmute_copy(&phbody),
25190                )
25191                .into()
25192            }
25193        }
25194        unsafe extern "system" fn SetTextBody<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25195            this: *mut core::ffi::c_void,
25196            dwtxttype: u32,
25197            ietencoding: ENCODINGTYPE,
25198            halternative: *mut HBODY__,
25199            pstream: *mut core::ffi::c_void,
25200            phbody: *mut *mut HBODY__,
25201        ) -> windows_core::HRESULT {
25202            unsafe {
25203                let this: &Identity =
25204                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25205                IMimeMessage_Impl::SetTextBody(
25206                    this,
25207                    core::mem::transmute_copy(&dwtxttype),
25208                    core::mem::transmute_copy(&ietencoding),
25209                    core::mem::transmute_copy(&halternative),
25210                    core::mem::transmute_copy(&pstream),
25211                    core::mem::transmute_copy(&phbody),
25212                )
25213                .into()
25214            }
25215        }
25216        unsafe extern "system" fn AttachObject<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25217            this: *mut core::ffi::c_void,
25218            riid: *const windows_core::GUID,
25219            pvobject: *mut core::ffi::c_void,
25220            phbody: *mut *mut HBODY__,
25221        ) -> windows_core::HRESULT {
25222            unsafe {
25223                let this: &Identity =
25224                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25225                IMimeMessage_Impl::AttachObject(
25226                    this,
25227                    core::mem::transmute_copy(&riid),
25228                    core::mem::transmute_copy(&pvobject),
25229                    core::mem::transmute_copy(&phbody),
25230                )
25231                .into()
25232            }
25233        }
25234        unsafe extern "system" fn AttachFile<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25235            this: *mut core::ffi::c_void,
25236            pszfilepath: windows_core::PCSTR,
25237            pstmfile: *mut core::ffi::c_void,
25238            phbody: *mut *mut HBODY__,
25239        ) -> windows_core::HRESULT {
25240            unsafe {
25241                let this: &Identity =
25242                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25243                IMimeMessage_Impl::AttachFile(
25244                    this,
25245                    core::mem::transmute(&pszfilepath),
25246                    core::mem::transmute_copy(&pstmfile),
25247                    core::mem::transmute_copy(&phbody),
25248                )
25249                .into()
25250            }
25251        }
25252        unsafe extern "system" fn AttachURL<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25253            this: *mut core::ffi::c_void,
25254            pszbase: windows_core::PCSTR,
25255            pszurl: windows_core::PCSTR,
25256            dwflags: u32,
25257            pstmurl: *mut core::ffi::c_void,
25258            ppszcidurl: *mut windows_core::PSTR,
25259            phbody: *mut *mut HBODY__,
25260        ) -> windows_core::HRESULT {
25261            unsafe {
25262                let this: &Identity =
25263                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25264                IMimeMessage_Impl::AttachURL(
25265                    this,
25266                    core::mem::transmute(&pszbase),
25267                    core::mem::transmute(&pszurl),
25268                    core::mem::transmute_copy(&dwflags),
25269                    core::mem::transmute_copy(&pstmurl),
25270                    core::mem::transmute_copy(&ppszcidurl),
25271                    core::mem::transmute_copy(&phbody),
25272                )
25273                .into()
25274            }
25275        }
25276        unsafe extern "system" fn GetAttachments<
25277            Identity: IMimeMessage_Impl,
25278            const OFFSET: isize,
25279        >(
25280            this: *mut core::ffi::c_void,
25281            pcattach: *mut u32,
25282            pprghattach: *mut *mut *mut HBODY__,
25283        ) -> windows_core::HRESULT {
25284            unsafe {
25285                let this: &Identity =
25286                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25287                IMimeMessage_Impl::GetAttachments(
25288                    this,
25289                    core::mem::transmute_copy(&pcattach),
25290                    core::mem::transmute_copy(&pprghattach),
25291                )
25292                .into()
25293            }
25294        }
25295        unsafe extern "system" fn GetAddressTable<
25296            Identity: IMimeMessage_Impl,
25297            const OFFSET: isize,
25298        >(
25299            this: *mut core::ffi::c_void,
25300            pptable: *mut *mut core::ffi::c_void,
25301        ) -> windows_core::HRESULT {
25302            unsafe {
25303                let this: &Identity =
25304                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25305                match IMimeMessage_Impl::GetAddressTable(this) {
25306                    Ok(ok__) => {
25307                        pptable.write(core::mem::transmute(ok__));
25308                        windows_core::HRESULT(0)
25309                    }
25310                    Err(err) => err.into(),
25311                }
25312            }
25313        }
25314        unsafe extern "system" fn GetSender<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25315            this: *mut core::ffi::c_void,
25316            paddress: *mut ADDRESSPROPS,
25317        ) -> windows_core::HRESULT {
25318            unsafe {
25319                let this: &Identity =
25320                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25321                IMimeMessage_Impl::GetSender(this, core::mem::transmute_copy(&paddress)).into()
25322            }
25323        }
25324        unsafe extern "system" fn GetAddressTypes<
25325            Identity: IMimeMessage_Impl,
25326            const OFFSET: isize,
25327        >(
25328            this: *mut core::ffi::c_void,
25329            dwadrtypes: u32,
25330            dwprops: u32,
25331            plist: *mut ADDRESSLIST,
25332        ) -> windows_core::HRESULT {
25333            unsafe {
25334                let this: &Identity =
25335                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25336                IMimeMessage_Impl::GetAddressTypes(
25337                    this,
25338                    core::mem::transmute_copy(&dwadrtypes),
25339                    core::mem::transmute_copy(&dwprops),
25340                    core::mem::transmute_copy(&plist),
25341                )
25342                .into()
25343            }
25344        }
25345        unsafe extern "system" fn GetAddressFormat<
25346            Identity: IMimeMessage_Impl,
25347            const OFFSET: isize,
25348        >(
25349            this: *mut core::ffi::c_void,
25350            dwadrtype: u32,
25351            format: ADDRESSFORMAT,
25352            ppszformat: *mut windows_core::PSTR,
25353        ) -> windows_core::HRESULT {
25354            unsafe {
25355                let this: &Identity =
25356                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25357                IMimeMessage_Impl::GetAddressFormat(
25358                    this,
25359                    core::mem::transmute_copy(&dwadrtype),
25360                    core::mem::transmute_copy(&format),
25361                    core::mem::transmute_copy(&ppszformat),
25362                )
25363                .into()
25364            }
25365        }
25366        unsafe extern "system" fn EnumAddressTypes<
25367            Identity: IMimeMessage_Impl,
25368            const OFFSET: isize,
25369        >(
25370            this: *mut core::ffi::c_void,
25371            dwadrtypes: u32,
25372            dwprops: u32,
25373            ppenum: *mut *mut core::ffi::c_void,
25374        ) -> windows_core::HRESULT {
25375            unsafe {
25376                let this: &Identity =
25377                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25378                match IMimeMessage_Impl::EnumAddressTypes(
25379                    this,
25380                    core::mem::transmute_copy(&dwadrtypes),
25381                    core::mem::transmute_copy(&dwprops),
25382                ) {
25383                    Ok(ok__) => {
25384                        ppenum.write(core::mem::transmute(ok__));
25385                        windows_core::HRESULT(0)
25386                    }
25387                    Err(err) => err.into(),
25388                }
25389            }
25390        }
25391        unsafe extern "system" fn SplitMessage<Identity: IMimeMessage_Impl, const OFFSET: isize>(
25392            this: *mut core::ffi::c_void,
25393            cbmaxpart: u32,
25394            ppparts: *mut *mut core::ffi::c_void,
25395        ) -> windows_core::HRESULT {
25396            unsafe {
25397                let this: &Identity =
25398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25399                match IMimeMessage_Impl::SplitMessage(this, core::mem::transmute_copy(&cbmaxpart)) {
25400                    Ok(ok__) => {
25401                        ppparts.write(core::mem::transmute(ok__));
25402                        windows_core::HRESULT(0)
25403                    }
25404                    Err(err) => err.into(),
25405                }
25406            }
25407        }
25408        unsafe extern "system" fn GetRootMoniker<
25409            Identity: IMimeMessage_Impl,
25410            const OFFSET: isize,
25411        >(
25412            this: *mut core::ffi::c_void,
25413            ppmoniker: *mut *mut core::ffi::c_void,
25414        ) -> windows_core::HRESULT {
25415            unsafe {
25416                let this: &Identity =
25417                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25418                match IMimeMessage_Impl::GetRootMoniker(this) {
25419                    Ok(ok__) => {
25420                        ppmoniker.write(core::mem::transmute(ok__));
25421                        windows_core::HRESULT(0)
25422                    }
25423                    Err(err) => err.into(),
25424                }
25425            }
25426        }
25427        Self {
25428            base__: IMimeMessageTree_Vtbl::new::<Identity, OFFSET>(),
25429            CreateWebPage: CreateWebPage::<Identity, OFFSET>,
25430            GetPropA: GetPropA::<Identity, OFFSET>,
25431            SetPropA: SetPropA::<Identity, OFFSET>,
25432            DeleteProp: DeleteProp::<Identity, OFFSET>,
25433            QueryProp: QueryProp::<Identity, OFFSET>,
25434            GetTextBody: GetTextBody::<Identity, OFFSET>,
25435            SetTextBody: SetTextBody::<Identity, OFFSET>,
25436            AttachObject: AttachObject::<Identity, OFFSET>,
25437            AttachFile: AttachFile::<Identity, OFFSET>,
25438            AttachURL: AttachURL::<Identity, OFFSET>,
25439            GetAttachments: GetAttachments::<Identity, OFFSET>,
25440            GetAddressTable: GetAddressTable::<Identity, OFFSET>,
25441            GetSender: GetSender::<Identity, OFFSET>,
25442            GetAddressTypes: GetAddressTypes::<Identity, OFFSET>,
25443            GetAddressFormat: GetAddressFormat::<Identity, OFFSET>,
25444            EnumAddressTypes: EnumAddressTypes::<Identity, OFFSET>,
25445            SplitMessage: SplitMessage::<Identity, OFFSET>,
25446            GetRootMoniker: GetRootMoniker::<Identity, OFFSET>,
25447        }
25448    }
25449    pub fn matches(iid: &windows_core::GUID) -> bool {
25450        iid == & < IMimeMessage as windows_core::Interface >::IID || iid == & < windows::Win32::System::Com:: IPersist as windows_core::Interface >::IID || iid == & < windows::Win32::System::Com:: IPersistStreamInit as windows_core::Interface >::IID || iid == & < IMimeMessageTree as windows_core::Interface >::IID
25451    }
25452}
25453impl windows_core::RuntimeName for IMimeMessage {}
25454windows_core::imp::define_interface!(
25455    IMimeMessageCallback,
25456    IMimeMessageCallback_Vtbl,
25457    0x761aa641_7bda_11d1_8aa9_00c04fb951f3
25458);
25459windows_core::imp::interface_hierarchy!(IMimeMessageCallback, windows_core::IUnknown);
25460impl IMimeMessageCallback {
25461    pub unsafe fn OnWebPageSplitter<P1>(
25462        &self,
25463        cinlined: u32,
25464        ppstream: P1,
25465    ) -> windows_core::Result<()>
25466    where
25467        P1: windows_core::Param<windows::Win32::System::Com::IStream>,
25468    {
25469        unsafe {
25470            (windows_core::Interface::vtable(self).OnWebPageSplitter)(
25471                windows_core::Interface::as_raw(self),
25472                cinlined,
25473                ppstream.param().abi(),
25474            )
25475            .ok()
25476        }
25477    }
25478}
25479#[repr(C)]
25480#[doc(hidden)]
25481pub struct IMimeMessageCallback_Vtbl {
25482    pub base__: windows_core::IUnknown_Vtbl,
25483    pub OnWebPageSplitter: unsafe extern "system" fn(
25484        *mut core::ffi::c_void,
25485        u32,
25486        *mut core::ffi::c_void,
25487    ) -> windows_core::HRESULT,
25488}
25489pub trait IMimeMessageCallback_Impl: windows_core::IUnknownImpl {
25490    fn OnWebPageSplitter(
25491        &self,
25492        cinlined: u32,
25493        ppstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
25494    ) -> windows_core::Result<()>;
25495}
25496impl IMimeMessageCallback_Vtbl {
25497    pub const fn new<Identity: IMimeMessageCallback_Impl, const OFFSET: isize>() -> Self {
25498        unsafe extern "system" fn OnWebPageSplitter<
25499            Identity: IMimeMessageCallback_Impl,
25500            const OFFSET: isize,
25501        >(
25502            this: *mut core::ffi::c_void,
25503            cinlined: u32,
25504            ppstream: *mut core::ffi::c_void,
25505        ) -> windows_core::HRESULT {
25506            unsafe {
25507                let this: &Identity =
25508                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25509                IMimeMessageCallback_Impl::OnWebPageSplitter(
25510                    this,
25511                    core::mem::transmute_copy(&cinlined),
25512                    core::mem::transmute_copy(&ppstream),
25513                )
25514                .into()
25515            }
25516        }
25517        Self {
25518            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
25519            OnWebPageSplitter: OnWebPageSplitter::<Identity, OFFSET>,
25520        }
25521    }
25522    pub fn matches(iid: &windows_core::GUID) -> bool {
25523        iid == &<IMimeMessageCallback as windows_core::Interface>::IID
25524    }
25525}
25526impl windows_core::RuntimeName for IMimeMessageCallback {}
25527windows_core::imp::define_interface!(
25528    IMimeMessageParts,
25529    IMimeMessageParts_Vtbl,
25530    0xc558834f_7f86_11d0_8252_00c04fd85ab4
25531);
25532windows_core::imp::interface_hierarchy!(IMimeMessageParts, windows_core::IUnknown);
25533impl IMimeMessageParts {
25534    pub unsafe fn CombineParts(&self) -> windows_core::Result<IMimeMessage> {
25535        unsafe {
25536            let mut result__ = core::mem::zeroed();
25537            (windows_core::Interface::vtable(self).CombineParts)(
25538                windows_core::Interface::as_raw(self),
25539                &mut result__,
25540            )
25541            .and_then(|| windows_core::Type::from_abi(result__))
25542        }
25543    }
25544    pub unsafe fn AddPart<P0>(&self, pmessage: P0) -> windows_core::Result<()>
25545    where
25546        P0: windows_core::Param<IMimeMessage>,
25547    {
25548        unsafe {
25549            (windows_core::Interface::vtable(self).AddPart)(
25550                windows_core::Interface::as_raw(self),
25551                pmessage.param().abi(),
25552            )
25553            .ok()
25554        }
25555    }
25556    pub unsafe fn SetMaxParts(&self, cparts: u32) -> windows_core::Result<()> {
25557        unsafe {
25558            (windows_core::Interface::vtable(self).SetMaxParts)(
25559                windows_core::Interface::as_raw(self),
25560                cparts,
25561            )
25562            .ok()
25563        }
25564    }
25565    pub unsafe fn CountParts(&self, pcparts: *mut u32) -> windows_core::Result<()> {
25566        unsafe {
25567            (windows_core::Interface::vtable(self).CountParts)(
25568                windows_core::Interface::as_raw(self),
25569                pcparts as _,
25570            )
25571            .ok()
25572        }
25573    }
25574    pub unsafe fn EnumParts(&self) -> windows_core::Result<IMimeEnumMessageParts> {
25575        unsafe {
25576            let mut result__ = core::mem::zeroed();
25577            (windows_core::Interface::vtable(self).EnumParts)(
25578                windows_core::Interface::as_raw(self),
25579                &mut result__,
25580            )
25581            .and_then(|| windows_core::Type::from_abi(result__))
25582        }
25583    }
25584}
25585#[repr(C)]
25586#[doc(hidden)]
25587pub struct IMimeMessageParts_Vtbl {
25588    pub base__: windows_core::IUnknown_Vtbl,
25589    pub CombineParts: unsafe extern "system" fn(
25590        *mut core::ffi::c_void,
25591        *mut *mut core::ffi::c_void,
25592    ) -> windows_core::HRESULT,
25593    pub AddPart: unsafe extern "system" fn(
25594        *mut core::ffi::c_void,
25595        *mut core::ffi::c_void,
25596    ) -> windows_core::HRESULT,
25597    pub SetMaxParts:
25598        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
25599    pub CountParts:
25600        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
25601    pub EnumParts: unsafe extern "system" fn(
25602        *mut core::ffi::c_void,
25603        *mut *mut core::ffi::c_void,
25604    ) -> windows_core::HRESULT,
25605}
25606pub trait IMimeMessageParts_Impl: windows_core::IUnknownImpl {
25607    fn CombineParts(&self) -> windows_core::Result<IMimeMessage>;
25608    fn AddPart(&self, pmessage: windows_core::Ref<IMimeMessage>) -> windows_core::Result<()>;
25609    fn SetMaxParts(&self, cparts: u32) -> windows_core::Result<()>;
25610    fn CountParts(&self, pcparts: *mut u32) -> windows_core::Result<()>;
25611    fn EnumParts(&self) -> windows_core::Result<IMimeEnumMessageParts>;
25612}
25613impl IMimeMessageParts_Vtbl {
25614    pub const fn new<Identity: IMimeMessageParts_Impl, const OFFSET: isize>() -> Self {
25615        unsafe extern "system" fn CombineParts<
25616            Identity: IMimeMessageParts_Impl,
25617            const OFFSET: isize,
25618        >(
25619            this: *mut core::ffi::c_void,
25620            ppmessage: *mut *mut core::ffi::c_void,
25621        ) -> windows_core::HRESULT {
25622            unsafe {
25623                let this: &Identity =
25624                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25625                match IMimeMessageParts_Impl::CombineParts(this) {
25626                    Ok(ok__) => {
25627                        ppmessage.write(core::mem::transmute(ok__));
25628                        windows_core::HRESULT(0)
25629                    }
25630                    Err(err) => err.into(),
25631                }
25632            }
25633        }
25634        unsafe extern "system" fn AddPart<Identity: IMimeMessageParts_Impl, const OFFSET: isize>(
25635            this: *mut core::ffi::c_void,
25636            pmessage: *mut core::ffi::c_void,
25637        ) -> windows_core::HRESULT {
25638            unsafe {
25639                let this: &Identity =
25640                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25641                IMimeMessageParts_Impl::AddPart(this, core::mem::transmute_copy(&pmessage)).into()
25642            }
25643        }
25644        unsafe extern "system" fn SetMaxParts<
25645            Identity: IMimeMessageParts_Impl,
25646            const OFFSET: isize,
25647        >(
25648            this: *mut core::ffi::c_void,
25649            cparts: u32,
25650        ) -> windows_core::HRESULT {
25651            unsafe {
25652                let this: &Identity =
25653                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25654                IMimeMessageParts_Impl::SetMaxParts(this, core::mem::transmute_copy(&cparts)).into()
25655            }
25656        }
25657        unsafe extern "system" fn CountParts<
25658            Identity: IMimeMessageParts_Impl,
25659            const OFFSET: isize,
25660        >(
25661            this: *mut core::ffi::c_void,
25662            pcparts: *mut u32,
25663        ) -> windows_core::HRESULT {
25664            unsafe {
25665                let this: &Identity =
25666                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25667                IMimeMessageParts_Impl::CountParts(this, core::mem::transmute_copy(&pcparts)).into()
25668            }
25669        }
25670        unsafe extern "system" fn EnumParts<
25671            Identity: IMimeMessageParts_Impl,
25672            const OFFSET: isize,
25673        >(
25674            this: *mut core::ffi::c_void,
25675            ppenum: *mut *mut core::ffi::c_void,
25676        ) -> windows_core::HRESULT {
25677            unsafe {
25678                let this: &Identity =
25679                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
25680                match IMimeMessageParts_Impl::EnumParts(this) {
25681                    Ok(ok__) => {
25682                        ppenum.write(core::mem::transmute(ok__));
25683                        windows_core::HRESULT(0)
25684                    }
25685                    Err(err) => err.into(),
25686                }
25687            }
25688        }
25689        Self {
25690            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
25691            CombineParts: CombineParts::<Identity, OFFSET>,
25692            AddPart: AddPart::<Identity, OFFSET>,
25693            SetMaxParts: SetMaxParts::<Identity, OFFSET>,
25694            CountParts: CountParts::<Identity, OFFSET>,
25695            EnumParts: EnumParts::<Identity, OFFSET>,
25696        }
25697    }
25698    pub fn matches(iid: &windows_core::GUID) -> bool {
25699        iid == &<IMimeMessageParts as windows_core::Interface>::IID
25700    }
25701}
25702impl windows_core::RuntimeName for IMimeMessageParts {}
25703windows_core::imp::define_interface!(
25704    IMimeMessageTree,
25705    IMimeMessageTree_Vtbl,
25706    0xfd853cd4_7f86_11d0_8252_00c04fd85ab4
25707);
25708impl core::ops::Deref for IMimeMessageTree {
25709    type Target = windows::Win32::System::Com::IPersistStreamInit;
25710    fn deref(&self) -> &Self::Target {
25711        unsafe { core::mem::transmute(self) }
25712    }
25713}
25714windows_core::imp::interface_hierarchy!(
25715    IMimeMessageTree,
25716    windows_core::IUnknown,
25717    windows::Win32::System::Com::IPersist,
25718    windows::Win32::System::Com::IPersistStreamInit
25719);
25720impl IMimeMessageTree {
25721    pub unsafe fn Save<P0>(&self, pstm: P0, fcleardirty: bool) -> windows_core::Result<()>
25722    where
25723        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
25724    {
25725        unsafe {
25726            (windows_core::Interface::vtable(self).Save)(
25727                windows_core::Interface::as_raw(self),
25728                pstm.param().abi(),
25729                fcleardirty.into(),
25730            )
25731            .ok()
25732        }
25733    }
25734    pub unsafe fn GetSizeMax(&self) -> windows_core::Result<u64> {
25735        unsafe {
25736            let mut result__ = core::mem::zeroed();
25737            (windows_core::Interface::vtable(self).GetSizeMax)(
25738                windows_core::Interface::as_raw(self),
25739                &mut result__,
25740            )
25741            .map(|| result__)
25742        }
25743    }
25744    pub unsafe fn InitNew(&self) -> windows_core::Result<()> {
25745        unsafe {
25746            (windows_core::Interface::vtable(self).InitNew)(windows_core::Interface::as_raw(self))
25747                .ok()
25748        }
25749    }
25750    pub unsafe fn GetMessageSource(
25751        &self,
25752        ppstream: *mut Option<windows::Win32::System::Com::IStream>,
25753        dwflags: u32,
25754    ) -> windows_core::Result<()> {
25755        unsafe {
25756            (windows_core::Interface::vtable(self).GetMessageSource)(
25757                windows_core::Interface::as_raw(self),
25758                core::mem::transmute(ppstream),
25759                dwflags,
25760            )
25761            .ok()
25762        }
25763    }
25764    pub unsafe fn GetMessageSize(
25765        &self,
25766        pcbsize: *mut u32,
25767        dwflags: u32,
25768    ) -> windows_core::Result<()> {
25769        unsafe {
25770            (windows_core::Interface::vtable(self).GetMessageSize)(
25771                windows_core::Interface::as_raw(self),
25772                pcbsize as _,
25773                dwflags,
25774            )
25775            .ok()
25776        }
25777    }
25778    pub unsafe fn LoadOffsetTable<P0>(&self, pstream: P0) -> windows_core::Result<()>
25779    where
25780        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
25781    {
25782        unsafe {
25783            (windows_core::Interface::vtable(self).LoadOffsetTable)(
25784                windows_core::Interface::as_raw(self),
25785                pstream.param().abi(),
25786            )
25787            .ok()
25788        }
25789    }
25790    pub unsafe fn SaveOffsetTable<P0>(&self, pstream: P0, dwflags: u32) -> windows_core::Result<()>
25791    where
25792        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
25793    {
25794        unsafe {
25795            (windows_core::Interface::vtable(self).SaveOffsetTable)(
25796                windows_core::Interface::as_raw(self),
25797                pstream.param().abi(),
25798                dwflags,
25799            )
25800            .ok()
25801        }
25802    }
25803    pub unsafe fn GetFlags(&self, pdwflags: *mut u32) -> windows_core::Result<()> {
25804        unsafe {
25805            (windows_core::Interface::vtable(self).GetFlags)(
25806                windows_core::Interface::as_raw(self),
25807                pdwflags as _,
25808            )
25809            .ok()
25810        }
25811    }
25812    pub unsafe fn Commit(&self, dwflags: u32) -> windows_core::Result<()> {
25813        unsafe {
25814            (windows_core::Interface::vtable(self).Commit)(
25815                windows_core::Interface::as_raw(self),
25816                dwflags,
25817            )
25818            .ok()
25819        }
25820    }
25821    pub unsafe fn HandsOffStorage(&self) -> windows_core::Result<()> {
25822        unsafe {
25823            (windows_core::Interface::vtable(self).HandsOffStorage)(
25824                windows_core::Interface::as_raw(self),
25825            )
25826            .ok()
25827        }
25828    }
25829    pub unsafe fn BindToObject(
25830        &self,
25831        hbody: *const HBODY__,
25832        riid: *const windows_core::GUID,
25833        ppvobject: *mut *mut core::ffi::c_void,
25834    ) -> windows_core::Result<()> {
25835        unsafe {
25836            (windows_core::Interface::vtable(self).BindToObject)(
25837                windows_core::Interface::as_raw(self),
25838                hbody,
25839                riid,
25840                ppvobject as _,
25841            )
25842            .ok()
25843        }
25844    }
25845    pub unsafe fn SaveBody<P2>(
25846        &self,
25847        hbody: *mut HBODY__,
25848        dwflags: u32,
25849        pstream: P2,
25850    ) -> windows_core::Result<()>
25851    where
25852        P2: windows_core::Param<windows::Win32::System::Com::IStream>,
25853    {
25854        unsafe {
25855            (windows_core::Interface::vtable(self).SaveBody)(
25856                windows_core::Interface::as_raw(self),
25857                hbody as _,
25858                dwflags,
25859                pstream.param().abi(),
25860            )
25861            .ok()
25862        }
25863    }
25864    pub unsafe fn InsertBody(
25865        &self,
25866        location: BODYLOCATION,
25867        hpivot: *mut HBODY__,
25868        phbody: *mut *mut HBODY__,
25869    ) -> windows_core::Result<()> {
25870        unsafe {
25871            (windows_core::Interface::vtable(self).InsertBody)(
25872                windows_core::Interface::as_raw(self),
25873                location,
25874                hpivot as _,
25875                phbody as _,
25876            )
25877            .ok()
25878        }
25879    }
25880    pub unsafe fn GetBody(
25881        &self,
25882        location: BODYLOCATION,
25883        hpivot: *mut HBODY__,
25884        phbody: *mut *mut HBODY__,
25885    ) -> windows_core::Result<()> {
25886        unsafe {
25887            (windows_core::Interface::vtable(self).GetBody)(
25888                windows_core::Interface::as_raw(self),
25889                location,
25890                hpivot as _,
25891                phbody as _,
25892            )
25893            .ok()
25894        }
25895    }
25896    pub unsafe fn DeleteBody(&self, hbody: *mut HBODY__, dwflags: u32) -> windows_core::Result<()> {
25897        unsafe {
25898            (windows_core::Interface::vtable(self).DeleteBody)(
25899                windows_core::Interface::as_raw(self),
25900                hbody as _,
25901                dwflags,
25902            )
25903            .ok()
25904        }
25905    }
25906    pub unsafe fn MoveBody(
25907        &self,
25908        hbody: *mut HBODY__,
25909        location: BODYLOCATION,
25910    ) -> windows_core::Result<()> {
25911        unsafe {
25912            (windows_core::Interface::vtable(self).MoveBody)(
25913                windows_core::Interface::as_raw(self),
25914                hbody as _,
25915                location,
25916            )
25917            .ok()
25918        }
25919    }
25920    pub unsafe fn CountBodies(
25921        &self,
25922        hparent: *mut HBODY__,
25923        frecurse: u8,
25924        pcbodies: *mut u32,
25925    ) -> windows_core::Result<()> {
25926        unsafe {
25927            (windows_core::Interface::vtable(self).CountBodies)(
25928                windows_core::Interface::as_raw(self),
25929                hparent as _,
25930                frecurse,
25931                pcbodies as _,
25932            )
25933            .ok()
25934        }
25935    }
25936    pub unsafe fn FindFirst(
25937        &self,
25938        pfindbody: *mut FINDBODY,
25939        phbody: *mut *mut HBODY__,
25940    ) -> windows_core::Result<()> {
25941        unsafe {
25942            (windows_core::Interface::vtable(self).FindFirst)(
25943                windows_core::Interface::as_raw(self),
25944                pfindbody as _,
25945                phbody as _,
25946            )
25947            .ok()
25948        }
25949    }
25950    pub unsafe fn FindNext(
25951        &self,
25952        pfindbody: *mut FINDBODY,
25953        phbody: *mut *mut HBODY__,
25954    ) -> windows_core::Result<()> {
25955        unsafe {
25956            (windows_core::Interface::vtable(self).FindNext)(
25957                windows_core::Interface::as_raw(self),
25958                pfindbody as _,
25959                phbody as _,
25960            )
25961            .ok()
25962        }
25963    }
25964    pub unsafe fn ResolveURL<P1, P2>(
25965        &self,
25966        hrelated: *mut HBODY__,
25967        pszbase: P1,
25968        pszurl: P2,
25969        dwflags: u32,
25970        phbody: *mut *mut HBODY__,
25971    ) -> windows_core::Result<()>
25972    where
25973        P1: windows_core::Param<windows_core::PCSTR>,
25974        P2: windows_core::Param<windows_core::PCSTR>,
25975    {
25976        unsafe {
25977            (windows_core::Interface::vtable(self).ResolveURL)(
25978                windows_core::Interface::as_raw(self),
25979                hrelated as _,
25980                pszbase.param().abi(),
25981                pszurl.param().abi(),
25982                dwflags,
25983                phbody as _,
25984            )
25985            .ok()
25986        }
25987    }
25988    pub unsafe fn ToMultipart<P1>(
25989        &self,
25990        hbody: *mut HBODY__,
25991        pszsubtype: P1,
25992        phmultipart: *mut *mut HBODY__,
25993    ) -> windows_core::Result<()>
25994    where
25995        P1: windows_core::Param<windows_core::PCSTR>,
25996    {
25997        unsafe {
25998            (windows_core::Interface::vtable(self).ToMultipart)(
25999                windows_core::Interface::as_raw(self),
26000                hbody as _,
26001                pszsubtype.param().abi(),
26002                phmultipart as _,
26003            )
26004            .ok()
26005        }
26006    }
26007    pub unsafe fn GetBodyOffsets(
26008        &self,
26009        hbody: *mut HBODY__,
26010        poffsets: *mut BODYOFFSETS,
26011    ) -> windows_core::Result<()> {
26012        unsafe {
26013            (windows_core::Interface::vtable(self).GetBodyOffsets)(
26014                windows_core::Interface::as_raw(self),
26015                hbody as _,
26016                poffsets as _,
26017            )
26018            .ok()
26019        }
26020    }
26021    pub unsafe fn GetCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()> {
26022        unsafe {
26023            (windows_core::Interface::vtable(self).GetCharset)(
26024                windows_core::Interface::as_raw(self),
26025                phcharset as _,
26026            )
26027            .ok()
26028        }
26029    }
26030    pub unsafe fn SetCharset(
26031        &self,
26032        hcharset: *mut HCHARSET__,
26033        applytype: CSETAPPLYTYPE,
26034    ) -> windows_core::Result<()> {
26035        unsafe {
26036            (windows_core::Interface::vtable(self).SetCharset)(
26037                windows_core::Interface::as_raw(self),
26038                hcharset as _,
26039                applytype,
26040            )
26041            .ok()
26042        }
26043    }
26044    pub unsafe fn IsBodyType(
26045        &self,
26046        hbody: *mut HBODY__,
26047        bodytype: IMSGBODYTYPE,
26048    ) -> windows_core::Result<()> {
26049        unsafe {
26050            (windows_core::Interface::vtable(self).IsBodyType)(
26051                windows_core::Interface::as_raw(self),
26052                hbody as _,
26053                bodytype,
26054            )
26055            .ok()
26056        }
26057    }
26058    pub unsafe fn IsContentType<P1, P2>(
26059        &self,
26060        hbody: *mut HBODY__,
26061        pszpritype: P1,
26062        pszsubtype: P2,
26063    ) -> windows_core::Result<()>
26064    where
26065        P1: windows_core::Param<windows_core::PCSTR>,
26066        P2: windows_core::Param<windows_core::PCSTR>,
26067    {
26068        unsafe {
26069            (windows_core::Interface::vtable(self).IsContentType)(
26070                windows_core::Interface::as_raw(self),
26071                hbody as _,
26072                pszpritype.param().abi(),
26073                pszsubtype.param().abi(),
26074            )
26075            .ok()
26076        }
26077    }
26078    pub unsafe fn QueryBodyProp<P1, P2>(
26079        &self,
26080        hbody: *mut HBODY__,
26081        pszname: P1,
26082        pszcriteria: P2,
26083        fsubstring: u8,
26084        fcasesensitive: u8,
26085    ) -> windows_core::Result<()>
26086    where
26087        P1: windows_core::Param<windows_core::PCSTR>,
26088        P2: windows_core::Param<windows_core::PCSTR>,
26089    {
26090        unsafe {
26091            (windows_core::Interface::vtable(self).QueryBodyProp)(
26092                windows_core::Interface::as_raw(self),
26093                hbody as _,
26094                pszname.param().abi(),
26095                pszcriteria.param().abi(),
26096                fsubstring,
26097                fcasesensitive,
26098            )
26099            .ok()
26100        }
26101    }
26102    pub unsafe fn GetBodyProp<P1>(
26103        &self,
26104        hbody: *mut HBODY__,
26105        pszname: P1,
26106        dwflags: u32,
26107        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26108    ) -> windows_core::Result<()>
26109    where
26110        P1: windows_core::Param<windows_core::PCSTR>,
26111    {
26112        unsafe {
26113            (windows_core::Interface::vtable(self).GetBodyProp)(
26114                windows_core::Interface::as_raw(self),
26115                hbody as _,
26116                pszname.param().abi(),
26117                dwflags,
26118                core::mem::transmute(pvalue),
26119            )
26120            .ok()
26121        }
26122    }
26123    pub unsafe fn SetBodyProp<P1>(
26124        &self,
26125        hbody: *mut HBODY__,
26126        pszname: P1,
26127        dwflags: u32,
26128        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26129    ) -> windows_core::Result<()>
26130    where
26131        P1: windows_core::Param<windows_core::PCSTR>,
26132    {
26133        unsafe {
26134            (windows_core::Interface::vtable(self).SetBodyProp)(
26135                windows_core::Interface::as_raw(self),
26136                hbody as _,
26137                pszname.param().abi(),
26138                dwflags,
26139                core::mem::transmute(pvalue),
26140            )
26141            .ok()
26142        }
26143    }
26144    pub unsafe fn DeleteBodyProp<P1>(
26145        &self,
26146        hbody: *mut HBODY__,
26147        pszname: P1,
26148    ) -> windows_core::Result<()>
26149    where
26150        P1: windows_core::Param<windows_core::PCSTR>,
26151    {
26152        unsafe {
26153            (windows_core::Interface::vtable(self).DeleteBodyProp)(
26154                windows_core::Interface::as_raw(self),
26155                hbody as _,
26156                pszname.param().abi(),
26157            )
26158            .ok()
26159        }
26160    }
26161    pub unsafe fn SetOption(
26162        &self,
26163        oid: u32,
26164        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26165    ) -> windows_core::Result<()> {
26166        unsafe {
26167            (windows_core::Interface::vtable(self).SetOption)(
26168                windows_core::Interface::as_raw(self),
26169                oid,
26170                core::mem::transmute(pvalue),
26171            )
26172            .ok()
26173        }
26174    }
26175    pub unsafe fn GetOption(
26176        &self,
26177        oid: u32,
26178        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26179    ) -> windows_core::Result<()> {
26180        unsafe {
26181            (windows_core::Interface::vtable(self).GetOption)(
26182                windows_core::Interface::as_raw(self),
26183                oid,
26184                core::mem::transmute(pvalue),
26185            )
26186            .ok()
26187        }
26188    }
26189}
26190#[repr(C)]
26191#[doc(hidden)]
26192pub struct IMimeMessageTree_Vtbl {
26193    pub base__: windows::Win32::System::Com::IPersistStreamInit_Vtbl,
26194    pub Save: unsafe extern "system" fn(
26195        *mut core::ffi::c_void,
26196        *mut core::ffi::c_void,
26197        windows_core::BOOL,
26198    ) -> windows_core::HRESULT,
26199    pub GetSizeMax:
26200        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
26201    pub InitNew: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
26202    pub GetMessageSource: unsafe extern "system" fn(
26203        *mut core::ffi::c_void,
26204        *mut *mut core::ffi::c_void,
26205        u32,
26206    ) -> windows_core::HRESULT,
26207    pub GetMessageSize:
26208        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32) -> windows_core::HRESULT,
26209    pub LoadOffsetTable: unsafe extern "system" fn(
26210        *mut core::ffi::c_void,
26211        *mut core::ffi::c_void,
26212    ) -> windows_core::HRESULT,
26213    pub SaveOffsetTable: unsafe extern "system" fn(
26214        *mut core::ffi::c_void,
26215        *mut core::ffi::c_void,
26216        u32,
26217    ) -> windows_core::HRESULT,
26218    pub GetFlags:
26219        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
26220    pub Commit: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
26221    pub HandsOffStorage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
26222    pub BindToObject: unsafe extern "system" fn(
26223        *mut core::ffi::c_void,
26224        *const HBODY__,
26225        *const windows_core::GUID,
26226        *mut *mut core::ffi::c_void,
26227    ) -> windows_core::HRESULT,
26228    pub SaveBody: unsafe extern "system" fn(
26229        *mut core::ffi::c_void,
26230        *mut HBODY__,
26231        u32,
26232        *mut core::ffi::c_void,
26233    ) -> windows_core::HRESULT,
26234    pub InsertBody: unsafe extern "system" fn(
26235        *mut core::ffi::c_void,
26236        BODYLOCATION,
26237        *mut HBODY__,
26238        *mut *mut HBODY__,
26239    ) -> windows_core::HRESULT,
26240    pub GetBody: unsafe extern "system" fn(
26241        *mut core::ffi::c_void,
26242        BODYLOCATION,
26243        *mut HBODY__,
26244        *mut *mut HBODY__,
26245    ) -> windows_core::HRESULT,
26246    pub DeleteBody: unsafe extern "system" fn(
26247        *mut core::ffi::c_void,
26248        *mut HBODY__,
26249        u32,
26250    ) -> windows_core::HRESULT,
26251    pub MoveBody: unsafe extern "system" fn(
26252        *mut core::ffi::c_void,
26253        *mut HBODY__,
26254        BODYLOCATION,
26255    ) -> windows_core::HRESULT,
26256    pub CountBodies: unsafe extern "system" fn(
26257        *mut core::ffi::c_void,
26258        *mut HBODY__,
26259        u8,
26260        *mut u32,
26261    ) -> windows_core::HRESULT,
26262    pub FindFirst: unsafe extern "system" fn(
26263        *mut core::ffi::c_void,
26264        *mut FINDBODY,
26265        *mut *mut HBODY__,
26266    ) -> windows_core::HRESULT,
26267    pub FindNext: unsafe extern "system" fn(
26268        *mut core::ffi::c_void,
26269        *mut FINDBODY,
26270        *mut *mut HBODY__,
26271    ) -> windows_core::HRESULT,
26272    pub ResolveURL: unsafe extern "system" fn(
26273        *mut core::ffi::c_void,
26274        *mut HBODY__,
26275        windows_core::PCSTR,
26276        windows_core::PCSTR,
26277        u32,
26278        *mut *mut HBODY__,
26279    ) -> windows_core::HRESULT,
26280    pub ToMultipart: unsafe extern "system" fn(
26281        *mut core::ffi::c_void,
26282        *mut HBODY__,
26283        windows_core::PCSTR,
26284        *mut *mut HBODY__,
26285    ) -> windows_core::HRESULT,
26286    pub GetBodyOffsets: unsafe extern "system" fn(
26287        *mut core::ffi::c_void,
26288        *mut HBODY__,
26289        *mut BODYOFFSETS,
26290    ) -> windows_core::HRESULT,
26291    pub GetCharset: unsafe extern "system" fn(
26292        *mut core::ffi::c_void,
26293        *mut *mut HCHARSET__,
26294    ) -> windows_core::HRESULT,
26295    pub SetCharset: unsafe extern "system" fn(
26296        *mut core::ffi::c_void,
26297        *mut HCHARSET__,
26298        CSETAPPLYTYPE,
26299    ) -> windows_core::HRESULT,
26300    pub IsBodyType: unsafe extern "system" fn(
26301        *mut core::ffi::c_void,
26302        *mut HBODY__,
26303        IMSGBODYTYPE,
26304    ) -> windows_core::HRESULT,
26305    pub IsContentType: unsafe extern "system" fn(
26306        *mut core::ffi::c_void,
26307        *mut HBODY__,
26308        windows_core::PCSTR,
26309        windows_core::PCSTR,
26310    ) -> windows_core::HRESULT,
26311    pub QueryBodyProp: unsafe extern "system" fn(
26312        *mut core::ffi::c_void,
26313        *mut HBODY__,
26314        windows_core::PCSTR,
26315        windows_core::PCSTR,
26316        u8,
26317        u8,
26318    ) -> windows_core::HRESULT,
26319    pub GetBodyProp: unsafe extern "system" fn(
26320        *mut core::ffi::c_void,
26321        *mut HBODY__,
26322        windows_core::PCSTR,
26323        u32,
26324        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26325    ) -> windows_core::HRESULT,
26326    pub SetBodyProp: unsafe extern "system" fn(
26327        *mut core::ffi::c_void,
26328        *mut HBODY__,
26329        windows_core::PCSTR,
26330        u32,
26331        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26332    ) -> windows_core::HRESULT,
26333    pub DeleteBodyProp: unsafe extern "system" fn(
26334        *mut core::ffi::c_void,
26335        *mut HBODY__,
26336        windows_core::PCSTR,
26337    ) -> windows_core::HRESULT,
26338    pub SetOption: unsafe extern "system" fn(
26339        *mut core::ffi::c_void,
26340        u32,
26341        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26342    ) -> windows_core::HRESULT,
26343    pub GetOption: unsafe extern "system" fn(
26344        *mut core::ffi::c_void,
26345        u32,
26346        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26347    ) -> windows_core::HRESULT,
26348}
26349pub trait IMimeMessageTree_Impl: windows::Win32::System::Com::IPersistStreamInit_Impl {
26350    fn Save(
26351        &self,
26352        pstm: windows_core::Ref<windows::Win32::System::Com::IStream>,
26353        fcleardirty: windows_core::BOOL,
26354    ) -> windows_core::Result<()>;
26355    fn GetSizeMax(&self) -> windows_core::Result<u64>;
26356    fn InitNew(&self) -> windows_core::Result<()>;
26357    fn GetMessageSource(
26358        &self,
26359        ppstream: windows_core::OutRef<windows::Win32::System::Com::IStream>,
26360        dwflags: u32,
26361    ) -> windows_core::Result<()>;
26362    fn GetMessageSize(&self, pcbsize: *mut u32, dwflags: u32) -> windows_core::Result<()>;
26363    fn LoadOffsetTable(
26364        &self,
26365        pstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
26366    ) -> windows_core::Result<()>;
26367    fn SaveOffsetTable(
26368        &self,
26369        pstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
26370        dwflags: u32,
26371    ) -> windows_core::Result<()>;
26372    fn GetFlags(&self, pdwflags: *mut u32) -> windows_core::Result<()>;
26373    fn Commit(&self, dwflags: u32) -> windows_core::Result<()>;
26374    fn HandsOffStorage(&self) -> windows_core::Result<()>;
26375    fn BindToObject(
26376        &self,
26377        hbody: *const HBODY__,
26378        riid: *const windows_core::GUID,
26379        ppvobject: *mut *mut core::ffi::c_void,
26380    ) -> windows_core::Result<()>;
26381    fn SaveBody(
26382        &self,
26383        hbody: *mut HBODY__,
26384        dwflags: u32,
26385        pstream: windows_core::Ref<windows::Win32::System::Com::IStream>,
26386    ) -> windows_core::Result<()>;
26387    fn InsertBody(
26388        &self,
26389        location: BODYLOCATION,
26390        hpivot: *mut HBODY__,
26391        phbody: *mut *mut HBODY__,
26392    ) -> windows_core::Result<()>;
26393    fn GetBody(
26394        &self,
26395        location: BODYLOCATION,
26396        hpivot: *mut HBODY__,
26397        phbody: *mut *mut HBODY__,
26398    ) -> windows_core::Result<()>;
26399    fn DeleteBody(&self, hbody: *mut HBODY__, dwflags: u32) -> windows_core::Result<()>;
26400    fn MoveBody(&self, hbody: *mut HBODY__, location: BODYLOCATION) -> windows_core::Result<()>;
26401    fn CountBodies(
26402        &self,
26403        hparent: *mut HBODY__,
26404        frecurse: u8,
26405        pcbodies: *mut u32,
26406    ) -> windows_core::Result<()>;
26407    fn FindFirst(
26408        &self,
26409        pfindbody: *mut FINDBODY,
26410        phbody: *mut *mut HBODY__,
26411    ) -> windows_core::Result<()>;
26412    fn FindNext(
26413        &self,
26414        pfindbody: *mut FINDBODY,
26415        phbody: *mut *mut HBODY__,
26416    ) -> windows_core::Result<()>;
26417    fn ResolveURL(
26418        &self,
26419        hrelated: *mut HBODY__,
26420        pszbase: &windows_core::PCSTR,
26421        pszurl: &windows_core::PCSTR,
26422        dwflags: u32,
26423        phbody: *mut *mut HBODY__,
26424    ) -> windows_core::Result<()>;
26425    fn ToMultipart(
26426        &self,
26427        hbody: *mut HBODY__,
26428        pszsubtype: &windows_core::PCSTR,
26429        phmultipart: *mut *mut HBODY__,
26430    ) -> windows_core::Result<()>;
26431    fn GetBodyOffsets(
26432        &self,
26433        hbody: *mut HBODY__,
26434        poffsets: *mut BODYOFFSETS,
26435    ) -> windows_core::Result<()>;
26436    fn GetCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()>;
26437    fn SetCharset(
26438        &self,
26439        hcharset: *mut HCHARSET__,
26440        applytype: CSETAPPLYTYPE,
26441    ) -> windows_core::Result<()>;
26442    fn IsBodyType(&self, hbody: *mut HBODY__, bodytype: IMSGBODYTYPE) -> windows_core::Result<()>;
26443    fn IsContentType(
26444        &self,
26445        hbody: *mut HBODY__,
26446        pszpritype: &windows_core::PCSTR,
26447        pszsubtype: &windows_core::PCSTR,
26448    ) -> windows_core::Result<()>;
26449    fn QueryBodyProp(
26450        &self,
26451        hbody: *mut HBODY__,
26452        pszname: &windows_core::PCSTR,
26453        pszcriteria: &windows_core::PCSTR,
26454        fsubstring: u8,
26455        fcasesensitive: u8,
26456    ) -> windows_core::Result<()>;
26457    fn GetBodyProp(
26458        &self,
26459        hbody: *mut HBODY__,
26460        pszname: &windows_core::PCSTR,
26461        dwflags: u32,
26462        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26463    ) -> windows_core::Result<()>;
26464    fn SetBodyProp(
26465        &self,
26466        hbody: *mut HBODY__,
26467        pszname: &windows_core::PCSTR,
26468        dwflags: u32,
26469        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26470    ) -> windows_core::Result<()>;
26471    fn DeleteBodyProp(
26472        &self,
26473        hbody: *mut HBODY__,
26474        pszname: &windows_core::PCSTR,
26475    ) -> windows_core::Result<()>;
26476    fn SetOption(
26477        &self,
26478        oid: u32,
26479        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26480    ) -> windows_core::Result<()>;
26481    fn GetOption(
26482        &self,
26483        oid: u32,
26484        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26485    ) -> windows_core::Result<()>;
26486}
26487impl IMimeMessageTree_Vtbl {
26488    pub const fn new<Identity: IMimeMessageTree_Impl, const OFFSET: isize>() -> Self {
26489        unsafe extern "system" fn Save<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26490            this: *mut core::ffi::c_void,
26491            pstm: *mut core::ffi::c_void,
26492            fcleardirty: windows_core::BOOL,
26493        ) -> windows_core::HRESULT {
26494            unsafe {
26495                let this: &Identity =
26496                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26497                IMimeMessageTree_Impl::Save(
26498                    this,
26499                    core::mem::transmute_copy(&pstm),
26500                    core::mem::transmute_copy(&fcleardirty),
26501                )
26502                .into()
26503            }
26504        }
26505        unsafe extern "system" fn GetSizeMax<
26506            Identity: IMimeMessageTree_Impl,
26507            const OFFSET: isize,
26508        >(
26509            this: *mut core::ffi::c_void,
26510            pcbsize: *mut u64,
26511        ) -> windows_core::HRESULT {
26512            unsafe {
26513                let this: &Identity =
26514                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26515                match IMimeMessageTree_Impl::GetSizeMax(this) {
26516                    Ok(ok__) => {
26517                        pcbsize.write(core::mem::transmute(ok__));
26518                        windows_core::HRESULT(0)
26519                    }
26520                    Err(err) => err.into(),
26521                }
26522            }
26523        }
26524        unsafe extern "system" fn InitNew<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26525            this: *mut core::ffi::c_void,
26526        ) -> windows_core::HRESULT {
26527            unsafe {
26528                let this: &Identity =
26529                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26530                IMimeMessageTree_Impl::InitNew(this).into()
26531            }
26532        }
26533        unsafe extern "system" fn GetMessageSource<
26534            Identity: IMimeMessageTree_Impl,
26535            const OFFSET: isize,
26536        >(
26537            this: *mut core::ffi::c_void,
26538            ppstream: *mut *mut core::ffi::c_void,
26539            dwflags: u32,
26540        ) -> windows_core::HRESULT {
26541            unsafe {
26542                let this: &Identity =
26543                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26544                IMimeMessageTree_Impl::GetMessageSource(
26545                    this,
26546                    core::mem::transmute_copy(&ppstream),
26547                    core::mem::transmute_copy(&dwflags),
26548                )
26549                .into()
26550            }
26551        }
26552        unsafe extern "system" fn GetMessageSize<
26553            Identity: IMimeMessageTree_Impl,
26554            const OFFSET: isize,
26555        >(
26556            this: *mut core::ffi::c_void,
26557            pcbsize: *mut u32,
26558            dwflags: u32,
26559        ) -> windows_core::HRESULT {
26560            unsafe {
26561                let this: &Identity =
26562                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26563                IMimeMessageTree_Impl::GetMessageSize(
26564                    this,
26565                    core::mem::transmute_copy(&pcbsize),
26566                    core::mem::transmute_copy(&dwflags),
26567                )
26568                .into()
26569            }
26570        }
26571        unsafe extern "system" fn LoadOffsetTable<
26572            Identity: IMimeMessageTree_Impl,
26573            const OFFSET: isize,
26574        >(
26575            this: *mut core::ffi::c_void,
26576            pstream: *mut core::ffi::c_void,
26577        ) -> windows_core::HRESULT {
26578            unsafe {
26579                let this: &Identity =
26580                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26581                IMimeMessageTree_Impl::LoadOffsetTable(this, core::mem::transmute_copy(&pstream))
26582                    .into()
26583            }
26584        }
26585        unsafe extern "system" fn SaveOffsetTable<
26586            Identity: IMimeMessageTree_Impl,
26587            const OFFSET: isize,
26588        >(
26589            this: *mut core::ffi::c_void,
26590            pstream: *mut core::ffi::c_void,
26591            dwflags: u32,
26592        ) -> windows_core::HRESULT {
26593            unsafe {
26594                let this: &Identity =
26595                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26596                IMimeMessageTree_Impl::SaveOffsetTable(
26597                    this,
26598                    core::mem::transmute_copy(&pstream),
26599                    core::mem::transmute_copy(&dwflags),
26600                )
26601                .into()
26602            }
26603        }
26604        unsafe extern "system" fn GetFlags<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26605            this: *mut core::ffi::c_void,
26606            pdwflags: *mut u32,
26607        ) -> windows_core::HRESULT {
26608            unsafe {
26609                let this: &Identity =
26610                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26611                IMimeMessageTree_Impl::GetFlags(this, core::mem::transmute_copy(&pdwflags)).into()
26612            }
26613        }
26614        unsafe extern "system" fn Commit<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26615            this: *mut core::ffi::c_void,
26616            dwflags: u32,
26617        ) -> windows_core::HRESULT {
26618            unsafe {
26619                let this: &Identity =
26620                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26621                IMimeMessageTree_Impl::Commit(this, core::mem::transmute_copy(&dwflags)).into()
26622            }
26623        }
26624        unsafe extern "system" fn HandsOffStorage<
26625            Identity: IMimeMessageTree_Impl,
26626            const OFFSET: isize,
26627        >(
26628            this: *mut core::ffi::c_void,
26629        ) -> windows_core::HRESULT {
26630            unsafe {
26631                let this: &Identity =
26632                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26633                IMimeMessageTree_Impl::HandsOffStorage(this).into()
26634            }
26635        }
26636        unsafe extern "system" fn BindToObject<
26637            Identity: IMimeMessageTree_Impl,
26638            const OFFSET: isize,
26639        >(
26640            this: *mut core::ffi::c_void,
26641            hbody: *const HBODY__,
26642            riid: *const windows_core::GUID,
26643            ppvobject: *mut *mut core::ffi::c_void,
26644        ) -> windows_core::HRESULT {
26645            unsafe {
26646                let this: &Identity =
26647                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26648                IMimeMessageTree_Impl::BindToObject(
26649                    this,
26650                    core::mem::transmute_copy(&hbody),
26651                    core::mem::transmute_copy(&riid),
26652                    core::mem::transmute_copy(&ppvobject),
26653                )
26654                .into()
26655            }
26656        }
26657        unsafe extern "system" fn SaveBody<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26658            this: *mut core::ffi::c_void,
26659            hbody: *mut HBODY__,
26660            dwflags: u32,
26661            pstream: *mut core::ffi::c_void,
26662        ) -> windows_core::HRESULT {
26663            unsafe {
26664                let this: &Identity =
26665                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26666                IMimeMessageTree_Impl::SaveBody(
26667                    this,
26668                    core::mem::transmute_copy(&hbody),
26669                    core::mem::transmute_copy(&dwflags),
26670                    core::mem::transmute_copy(&pstream),
26671                )
26672                .into()
26673            }
26674        }
26675        unsafe extern "system" fn InsertBody<
26676            Identity: IMimeMessageTree_Impl,
26677            const OFFSET: isize,
26678        >(
26679            this: *mut core::ffi::c_void,
26680            location: BODYLOCATION,
26681            hpivot: *mut HBODY__,
26682            phbody: *mut *mut HBODY__,
26683        ) -> windows_core::HRESULT {
26684            unsafe {
26685                let this: &Identity =
26686                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26687                IMimeMessageTree_Impl::InsertBody(
26688                    this,
26689                    core::mem::transmute_copy(&location),
26690                    core::mem::transmute_copy(&hpivot),
26691                    core::mem::transmute_copy(&phbody),
26692                )
26693                .into()
26694            }
26695        }
26696        unsafe extern "system" fn GetBody<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26697            this: *mut core::ffi::c_void,
26698            location: BODYLOCATION,
26699            hpivot: *mut HBODY__,
26700            phbody: *mut *mut HBODY__,
26701        ) -> windows_core::HRESULT {
26702            unsafe {
26703                let this: &Identity =
26704                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26705                IMimeMessageTree_Impl::GetBody(
26706                    this,
26707                    core::mem::transmute_copy(&location),
26708                    core::mem::transmute_copy(&hpivot),
26709                    core::mem::transmute_copy(&phbody),
26710                )
26711                .into()
26712            }
26713        }
26714        unsafe extern "system" fn DeleteBody<
26715            Identity: IMimeMessageTree_Impl,
26716            const OFFSET: isize,
26717        >(
26718            this: *mut core::ffi::c_void,
26719            hbody: *mut HBODY__,
26720            dwflags: u32,
26721        ) -> windows_core::HRESULT {
26722            unsafe {
26723                let this: &Identity =
26724                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26725                IMimeMessageTree_Impl::DeleteBody(
26726                    this,
26727                    core::mem::transmute_copy(&hbody),
26728                    core::mem::transmute_copy(&dwflags),
26729                )
26730                .into()
26731            }
26732        }
26733        unsafe extern "system" fn MoveBody<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26734            this: *mut core::ffi::c_void,
26735            hbody: *mut HBODY__,
26736            location: BODYLOCATION,
26737        ) -> windows_core::HRESULT {
26738            unsafe {
26739                let this: &Identity =
26740                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26741                IMimeMessageTree_Impl::MoveBody(
26742                    this,
26743                    core::mem::transmute_copy(&hbody),
26744                    core::mem::transmute_copy(&location),
26745                )
26746                .into()
26747            }
26748        }
26749        unsafe extern "system" fn CountBodies<
26750            Identity: IMimeMessageTree_Impl,
26751            const OFFSET: isize,
26752        >(
26753            this: *mut core::ffi::c_void,
26754            hparent: *mut HBODY__,
26755            frecurse: u8,
26756            pcbodies: *mut u32,
26757        ) -> windows_core::HRESULT {
26758            unsafe {
26759                let this: &Identity =
26760                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26761                IMimeMessageTree_Impl::CountBodies(
26762                    this,
26763                    core::mem::transmute_copy(&hparent),
26764                    core::mem::transmute_copy(&frecurse),
26765                    core::mem::transmute_copy(&pcbodies),
26766                )
26767                .into()
26768            }
26769        }
26770        unsafe extern "system" fn FindFirst<
26771            Identity: IMimeMessageTree_Impl,
26772            const OFFSET: isize,
26773        >(
26774            this: *mut core::ffi::c_void,
26775            pfindbody: *mut FINDBODY,
26776            phbody: *mut *mut HBODY__,
26777        ) -> windows_core::HRESULT {
26778            unsafe {
26779                let this: &Identity =
26780                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26781                IMimeMessageTree_Impl::FindFirst(
26782                    this,
26783                    core::mem::transmute_copy(&pfindbody),
26784                    core::mem::transmute_copy(&phbody),
26785                )
26786                .into()
26787            }
26788        }
26789        unsafe extern "system" fn FindNext<Identity: IMimeMessageTree_Impl, const OFFSET: isize>(
26790            this: *mut core::ffi::c_void,
26791            pfindbody: *mut FINDBODY,
26792            phbody: *mut *mut HBODY__,
26793        ) -> windows_core::HRESULT {
26794            unsafe {
26795                let this: &Identity =
26796                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26797                IMimeMessageTree_Impl::FindNext(
26798                    this,
26799                    core::mem::transmute_copy(&pfindbody),
26800                    core::mem::transmute_copy(&phbody),
26801                )
26802                .into()
26803            }
26804        }
26805        unsafe extern "system" fn ResolveURL<
26806            Identity: IMimeMessageTree_Impl,
26807            const OFFSET: isize,
26808        >(
26809            this: *mut core::ffi::c_void,
26810            hrelated: *mut HBODY__,
26811            pszbase: windows_core::PCSTR,
26812            pszurl: windows_core::PCSTR,
26813            dwflags: u32,
26814            phbody: *mut *mut HBODY__,
26815        ) -> windows_core::HRESULT {
26816            unsafe {
26817                let this: &Identity =
26818                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26819                IMimeMessageTree_Impl::ResolveURL(
26820                    this,
26821                    core::mem::transmute_copy(&hrelated),
26822                    core::mem::transmute(&pszbase),
26823                    core::mem::transmute(&pszurl),
26824                    core::mem::transmute_copy(&dwflags),
26825                    core::mem::transmute_copy(&phbody),
26826                )
26827                .into()
26828            }
26829        }
26830        unsafe extern "system" fn ToMultipart<
26831            Identity: IMimeMessageTree_Impl,
26832            const OFFSET: isize,
26833        >(
26834            this: *mut core::ffi::c_void,
26835            hbody: *mut HBODY__,
26836            pszsubtype: windows_core::PCSTR,
26837            phmultipart: *mut *mut HBODY__,
26838        ) -> windows_core::HRESULT {
26839            unsafe {
26840                let this: &Identity =
26841                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26842                IMimeMessageTree_Impl::ToMultipart(
26843                    this,
26844                    core::mem::transmute_copy(&hbody),
26845                    core::mem::transmute(&pszsubtype),
26846                    core::mem::transmute_copy(&phmultipart),
26847                )
26848                .into()
26849            }
26850        }
26851        unsafe extern "system" fn GetBodyOffsets<
26852            Identity: IMimeMessageTree_Impl,
26853            const OFFSET: isize,
26854        >(
26855            this: *mut core::ffi::c_void,
26856            hbody: *mut HBODY__,
26857            poffsets: *mut BODYOFFSETS,
26858        ) -> windows_core::HRESULT {
26859            unsafe {
26860                let this: &Identity =
26861                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26862                IMimeMessageTree_Impl::GetBodyOffsets(
26863                    this,
26864                    core::mem::transmute_copy(&hbody),
26865                    core::mem::transmute_copy(&poffsets),
26866                )
26867                .into()
26868            }
26869        }
26870        unsafe extern "system" fn GetCharset<
26871            Identity: IMimeMessageTree_Impl,
26872            const OFFSET: isize,
26873        >(
26874            this: *mut core::ffi::c_void,
26875            phcharset: *mut *mut HCHARSET__,
26876        ) -> windows_core::HRESULT {
26877            unsafe {
26878                let this: &Identity =
26879                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26880                IMimeMessageTree_Impl::GetCharset(this, core::mem::transmute_copy(&phcharset))
26881                    .into()
26882            }
26883        }
26884        unsafe extern "system" fn SetCharset<
26885            Identity: IMimeMessageTree_Impl,
26886            const OFFSET: isize,
26887        >(
26888            this: *mut core::ffi::c_void,
26889            hcharset: *mut HCHARSET__,
26890            applytype: CSETAPPLYTYPE,
26891        ) -> windows_core::HRESULT {
26892            unsafe {
26893                let this: &Identity =
26894                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26895                IMimeMessageTree_Impl::SetCharset(
26896                    this,
26897                    core::mem::transmute_copy(&hcharset),
26898                    core::mem::transmute_copy(&applytype),
26899                )
26900                .into()
26901            }
26902        }
26903        unsafe extern "system" fn IsBodyType<
26904            Identity: IMimeMessageTree_Impl,
26905            const OFFSET: isize,
26906        >(
26907            this: *mut core::ffi::c_void,
26908            hbody: *mut HBODY__,
26909            bodytype: IMSGBODYTYPE,
26910        ) -> windows_core::HRESULT {
26911            unsafe {
26912                let this: &Identity =
26913                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26914                IMimeMessageTree_Impl::IsBodyType(
26915                    this,
26916                    core::mem::transmute_copy(&hbody),
26917                    core::mem::transmute_copy(&bodytype),
26918                )
26919                .into()
26920            }
26921        }
26922        unsafe extern "system" fn IsContentType<
26923            Identity: IMimeMessageTree_Impl,
26924            const OFFSET: isize,
26925        >(
26926            this: *mut core::ffi::c_void,
26927            hbody: *mut HBODY__,
26928            pszpritype: windows_core::PCSTR,
26929            pszsubtype: windows_core::PCSTR,
26930        ) -> windows_core::HRESULT {
26931            unsafe {
26932                let this: &Identity =
26933                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26934                IMimeMessageTree_Impl::IsContentType(
26935                    this,
26936                    core::mem::transmute_copy(&hbody),
26937                    core::mem::transmute(&pszpritype),
26938                    core::mem::transmute(&pszsubtype),
26939                )
26940                .into()
26941            }
26942        }
26943        unsafe extern "system" fn QueryBodyProp<
26944            Identity: IMimeMessageTree_Impl,
26945            const OFFSET: isize,
26946        >(
26947            this: *mut core::ffi::c_void,
26948            hbody: *mut HBODY__,
26949            pszname: windows_core::PCSTR,
26950            pszcriteria: windows_core::PCSTR,
26951            fsubstring: u8,
26952            fcasesensitive: u8,
26953        ) -> windows_core::HRESULT {
26954            unsafe {
26955                let this: &Identity =
26956                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26957                IMimeMessageTree_Impl::QueryBodyProp(
26958                    this,
26959                    core::mem::transmute_copy(&hbody),
26960                    core::mem::transmute(&pszname),
26961                    core::mem::transmute(&pszcriteria),
26962                    core::mem::transmute_copy(&fsubstring),
26963                    core::mem::transmute_copy(&fcasesensitive),
26964                )
26965                .into()
26966            }
26967        }
26968        unsafe extern "system" fn GetBodyProp<
26969            Identity: IMimeMessageTree_Impl,
26970            const OFFSET: isize,
26971        >(
26972            this: *mut core::ffi::c_void,
26973            hbody: *mut HBODY__,
26974            pszname: windows_core::PCSTR,
26975            dwflags: u32,
26976            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
26977        ) -> windows_core::HRESULT {
26978            unsafe {
26979                let this: &Identity =
26980                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
26981                IMimeMessageTree_Impl::GetBodyProp(
26982                    this,
26983                    core::mem::transmute_copy(&hbody),
26984                    core::mem::transmute(&pszname),
26985                    core::mem::transmute_copy(&dwflags),
26986                    core::mem::transmute_copy(&pvalue),
26987                )
26988                .into()
26989            }
26990        }
26991        unsafe extern "system" fn SetBodyProp<
26992            Identity: IMimeMessageTree_Impl,
26993            const OFFSET: isize,
26994        >(
26995            this: *mut core::ffi::c_void,
26996            hbody: *mut HBODY__,
26997            pszname: windows_core::PCSTR,
26998            dwflags: u32,
26999            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27000        ) -> windows_core::HRESULT {
27001            unsafe {
27002                let this: &Identity =
27003                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27004                IMimeMessageTree_Impl::SetBodyProp(
27005                    this,
27006                    core::mem::transmute_copy(&hbody),
27007                    core::mem::transmute(&pszname),
27008                    core::mem::transmute_copy(&dwflags),
27009                    core::mem::transmute_copy(&pvalue),
27010                )
27011                .into()
27012            }
27013        }
27014        unsafe extern "system" fn DeleteBodyProp<
27015            Identity: IMimeMessageTree_Impl,
27016            const OFFSET: isize,
27017        >(
27018            this: *mut core::ffi::c_void,
27019            hbody: *mut HBODY__,
27020            pszname: windows_core::PCSTR,
27021        ) -> windows_core::HRESULT {
27022            unsafe {
27023                let this: &Identity =
27024                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27025                IMimeMessageTree_Impl::DeleteBodyProp(
27026                    this,
27027                    core::mem::transmute_copy(&hbody),
27028                    core::mem::transmute(&pszname),
27029                )
27030                .into()
27031            }
27032        }
27033        unsafe extern "system" fn SetOption<
27034            Identity: IMimeMessageTree_Impl,
27035            const OFFSET: isize,
27036        >(
27037            this: *mut core::ffi::c_void,
27038            oid: u32,
27039            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27040        ) -> windows_core::HRESULT {
27041            unsafe {
27042                let this: &Identity =
27043                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27044                IMimeMessageTree_Impl::SetOption(
27045                    this,
27046                    core::mem::transmute_copy(&oid),
27047                    core::mem::transmute_copy(&pvalue),
27048                )
27049                .into()
27050            }
27051        }
27052        unsafe extern "system" fn GetOption<
27053            Identity: IMimeMessageTree_Impl,
27054            const OFFSET: isize,
27055        >(
27056            this: *mut core::ffi::c_void,
27057            oid: u32,
27058            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27059        ) -> windows_core::HRESULT {
27060            unsafe {
27061                let this: &Identity =
27062                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27063                IMimeMessageTree_Impl::GetOption(
27064                    this,
27065                    core::mem::transmute_copy(&oid),
27066                    core::mem::transmute_copy(&pvalue),
27067                )
27068                .into()
27069            }
27070        }
27071        Self {
27072            base__: windows::Win32::System::Com::IPersistStreamInit_Vtbl::new::<Identity, OFFSET>(),
27073            Save: Save::<Identity, OFFSET>,
27074            GetSizeMax: GetSizeMax::<Identity, OFFSET>,
27075            InitNew: InitNew::<Identity, OFFSET>,
27076            GetMessageSource: GetMessageSource::<Identity, OFFSET>,
27077            GetMessageSize: GetMessageSize::<Identity, OFFSET>,
27078            LoadOffsetTable: LoadOffsetTable::<Identity, OFFSET>,
27079            SaveOffsetTable: SaveOffsetTable::<Identity, OFFSET>,
27080            GetFlags: GetFlags::<Identity, OFFSET>,
27081            Commit: Commit::<Identity, OFFSET>,
27082            HandsOffStorage: HandsOffStorage::<Identity, OFFSET>,
27083            BindToObject: BindToObject::<Identity, OFFSET>,
27084            SaveBody: SaveBody::<Identity, OFFSET>,
27085            InsertBody: InsertBody::<Identity, OFFSET>,
27086            GetBody: GetBody::<Identity, OFFSET>,
27087            DeleteBody: DeleteBody::<Identity, OFFSET>,
27088            MoveBody: MoveBody::<Identity, OFFSET>,
27089            CountBodies: CountBodies::<Identity, OFFSET>,
27090            FindFirst: FindFirst::<Identity, OFFSET>,
27091            FindNext: FindNext::<Identity, OFFSET>,
27092            ResolveURL: ResolveURL::<Identity, OFFSET>,
27093            ToMultipart: ToMultipart::<Identity, OFFSET>,
27094            GetBodyOffsets: GetBodyOffsets::<Identity, OFFSET>,
27095            GetCharset: GetCharset::<Identity, OFFSET>,
27096            SetCharset: SetCharset::<Identity, OFFSET>,
27097            IsBodyType: IsBodyType::<Identity, OFFSET>,
27098            IsContentType: IsContentType::<Identity, OFFSET>,
27099            QueryBodyProp: QueryBodyProp::<Identity, OFFSET>,
27100            GetBodyProp: GetBodyProp::<Identity, OFFSET>,
27101            SetBodyProp: SetBodyProp::<Identity, OFFSET>,
27102            DeleteBodyProp: DeleteBodyProp::<Identity, OFFSET>,
27103            SetOption: SetOption::<Identity, OFFSET>,
27104            GetOption: GetOption::<Identity, OFFSET>,
27105        }
27106    }
27107    pub fn matches(iid: &windows_core::GUID) -> bool {
27108        iid == & < IMimeMessageTree as windows_core::Interface >::IID || iid == & < windows::Win32::System::Com:: IPersist as windows_core::Interface >::IID || iid == & < windows::Win32::System::Com:: IPersistStreamInit as windows_core::Interface >::IID
27109    }
27110}
27111impl windows_core::RuntimeName for IMimeMessageTree {}
27112windows_core::imp::define_interface!(
27113    IMimeObjResolver,
27114    IMimeObjResolver_Vtbl,
27115    0xfeceaffd_c441_11d1_960e_00c04fbd7c09
27116);
27117windows_core::imp::interface_hierarchy!(IMimeObjResolver, windows_core::IUnknown);
27118impl IMimeObjResolver {
27119    pub unsafe fn MimeOleObjectFromMoniker<P1, P2>(
27120        &self,
27121        bindf: windows::Win32::System::Com::Urlmon::BINDF,
27122        pmkoriginal: P1,
27123        pbindctx: P2,
27124        riid: *const windows_core::GUID,
27125        ppvobject: *mut *mut core::ffi::c_void,
27126        ppmknew: *mut Option<windows::Win32::System::Com::IMoniker>,
27127    ) -> windows_core::Result<()>
27128    where
27129        P1: windows_core::Param<windows::Win32::System::Com::IMoniker>,
27130        P2: windows_core::Param<windows::Win32::System::Com::IBindCtx>,
27131    {
27132        unsafe {
27133            (windows_core::Interface::vtable(self).MimeOleObjectFromMoniker)(
27134                windows_core::Interface::as_raw(self),
27135                bindf,
27136                pmkoriginal.param().abi(),
27137                pbindctx.param().abi(),
27138                riid,
27139                ppvobject as _,
27140                core::mem::transmute(ppmknew),
27141            )
27142            .ok()
27143        }
27144    }
27145}
27146#[repr(C)]
27147#[doc(hidden)]
27148pub struct IMimeObjResolver_Vtbl {
27149    pub base__: windows_core::IUnknown_Vtbl,
27150    pub MimeOleObjectFromMoniker: unsafe extern "system" fn(
27151        *mut core::ffi::c_void,
27152        windows::Win32::System::Com::Urlmon::BINDF,
27153        *mut core::ffi::c_void,
27154        *mut core::ffi::c_void,
27155        *const windows_core::GUID,
27156        *mut *mut core::ffi::c_void,
27157        *mut *mut core::ffi::c_void,
27158    ) -> windows_core::HRESULT,
27159}
27160pub trait IMimeObjResolver_Impl: windows_core::IUnknownImpl {
27161    fn MimeOleObjectFromMoniker(
27162        &self,
27163        bindf: windows::Win32::System::Com::Urlmon::BINDF,
27164        pmkoriginal: windows_core::Ref<windows::Win32::System::Com::IMoniker>,
27165        pbindctx: windows_core::Ref<windows::Win32::System::Com::IBindCtx>,
27166        riid: *const windows_core::GUID,
27167        ppvobject: *mut *mut core::ffi::c_void,
27168        ppmknew: windows_core::OutRef<windows::Win32::System::Com::IMoniker>,
27169    ) -> windows_core::Result<()>;
27170}
27171impl IMimeObjResolver_Vtbl {
27172    pub const fn new<Identity: IMimeObjResolver_Impl, const OFFSET: isize>() -> Self {
27173        unsafe extern "system" fn MimeOleObjectFromMoniker<
27174            Identity: IMimeObjResolver_Impl,
27175            const OFFSET: isize,
27176        >(
27177            this: *mut core::ffi::c_void,
27178            bindf: windows::Win32::System::Com::Urlmon::BINDF,
27179            pmkoriginal: *mut core::ffi::c_void,
27180            pbindctx: *mut core::ffi::c_void,
27181            riid: *const windows_core::GUID,
27182            ppvobject: *mut *mut core::ffi::c_void,
27183            ppmknew: *mut *mut core::ffi::c_void,
27184        ) -> windows_core::HRESULT {
27185            unsafe {
27186                let this: &Identity =
27187                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27188                IMimeObjResolver_Impl::MimeOleObjectFromMoniker(
27189                    this,
27190                    core::mem::transmute_copy(&bindf),
27191                    core::mem::transmute_copy(&pmkoriginal),
27192                    core::mem::transmute_copy(&pbindctx),
27193                    core::mem::transmute_copy(&riid),
27194                    core::mem::transmute_copy(&ppvobject),
27195                    core::mem::transmute_copy(&ppmknew),
27196                )
27197                .into()
27198            }
27199        }
27200        Self {
27201            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
27202            MimeOleObjectFromMoniker: MimeOleObjectFromMoniker::<Identity, OFFSET>,
27203        }
27204    }
27205    pub fn matches(iid: &windows_core::GUID) -> bool {
27206        iid == &<IMimeObjResolver as windows_core::Interface>::IID
27207    }
27208}
27209impl windows_core::RuntimeName for IMimeObjResolver {}
27210windows_core::imp::define_interface!(
27211    IMimePropertySchema,
27212    IMimePropertySchema_Vtbl,
27213    0xfd853cec_7f86_11d0_8252_00c04fd85ab4
27214);
27215windows_core::imp::interface_hierarchy!(IMimePropertySchema, windows_core::IUnknown);
27216impl IMimePropertySchema {
27217    pub unsafe fn RegisterProperty<P0>(
27218        &self,
27219        pszname: P0,
27220        dwflags: u32,
27221        dwrownumber: u32,
27222        vtdefault: u16,
27223        pdwpropid: *mut u32,
27224    ) -> windows_core::Result<()>
27225    where
27226        P0: windows_core::Param<windows_core::PCSTR>,
27227    {
27228        unsafe {
27229            (windows_core::Interface::vtable(self).RegisterProperty)(
27230                windows_core::Interface::as_raw(self),
27231                pszname.param().abi(),
27232                dwflags,
27233                dwrownumber,
27234                vtdefault,
27235                pdwpropid as _,
27236            )
27237            .ok()
27238        }
27239    }
27240    pub unsafe fn ModifyProperty<P0>(
27241        &self,
27242        pszname: P0,
27243        dwflags: u32,
27244        dwrownumber: u32,
27245        vtdefault: u16,
27246    ) -> windows_core::Result<()>
27247    where
27248        P0: windows_core::Param<windows_core::PCSTR>,
27249    {
27250        unsafe {
27251            (windows_core::Interface::vtable(self).ModifyProperty)(
27252                windows_core::Interface::as_raw(self),
27253                pszname.param().abi(),
27254                dwflags,
27255                dwrownumber,
27256                vtdefault,
27257            )
27258            .ok()
27259        }
27260    }
27261    pub unsafe fn GetPropertyId<P0>(
27262        &self,
27263        pszname: P0,
27264        pdwpropid: *mut u32,
27265    ) -> windows_core::Result<()>
27266    where
27267        P0: windows_core::Param<windows_core::PCSTR>,
27268    {
27269        unsafe {
27270            (windows_core::Interface::vtable(self).GetPropertyId)(
27271                windows_core::Interface::as_raw(self),
27272                pszname.param().abi(),
27273                pdwpropid as _,
27274            )
27275            .ok()
27276        }
27277    }
27278    pub unsafe fn GetPropertyName(
27279        &self,
27280        dwpropid: u32,
27281        ppszname: *mut windows_core::PSTR,
27282    ) -> windows_core::Result<()> {
27283        unsafe {
27284            (windows_core::Interface::vtable(self).GetPropertyName)(
27285                windows_core::Interface::as_raw(self),
27286                dwpropid,
27287                ppszname as _,
27288            )
27289            .ok()
27290        }
27291    }
27292    pub unsafe fn RegisterAddressType<P0>(
27293        &self,
27294        pszname: P0,
27295        pdwadrtype: *mut u32,
27296    ) -> windows_core::Result<()>
27297    where
27298        P0: windows_core::Param<windows_core::PCSTR>,
27299    {
27300        unsafe {
27301            (windows_core::Interface::vtable(self).RegisterAddressType)(
27302                windows_core::Interface::as_raw(self),
27303                pszname.param().abi(),
27304                pdwadrtype as _,
27305            )
27306            .ok()
27307        }
27308    }
27309}
27310#[repr(C)]
27311#[doc(hidden)]
27312pub struct IMimePropertySchema_Vtbl {
27313    pub base__: windows_core::IUnknown_Vtbl,
27314    pub RegisterProperty: unsafe extern "system" fn(
27315        *mut core::ffi::c_void,
27316        windows_core::PCSTR,
27317        u32,
27318        u32,
27319        u16,
27320        *mut u32,
27321    ) -> windows_core::HRESULT,
27322    pub ModifyProperty: unsafe extern "system" fn(
27323        *mut core::ffi::c_void,
27324        windows_core::PCSTR,
27325        u32,
27326        u32,
27327        u16,
27328    ) -> windows_core::HRESULT,
27329    pub GetPropertyId: unsafe extern "system" fn(
27330        *mut core::ffi::c_void,
27331        windows_core::PCSTR,
27332        *mut u32,
27333    ) -> windows_core::HRESULT,
27334    pub GetPropertyName: unsafe extern "system" fn(
27335        *mut core::ffi::c_void,
27336        u32,
27337        *mut windows_core::PSTR,
27338    ) -> windows_core::HRESULT,
27339    pub RegisterAddressType: unsafe extern "system" fn(
27340        *mut core::ffi::c_void,
27341        windows_core::PCSTR,
27342        *mut u32,
27343    ) -> windows_core::HRESULT,
27344}
27345pub trait IMimePropertySchema_Impl: windows_core::IUnknownImpl {
27346    fn RegisterProperty(
27347        &self,
27348        pszname: &windows_core::PCSTR,
27349        dwflags: u32,
27350        dwrownumber: u32,
27351        vtdefault: u16,
27352        pdwpropid: *mut u32,
27353    ) -> windows_core::Result<()>;
27354    fn ModifyProperty(
27355        &self,
27356        pszname: &windows_core::PCSTR,
27357        dwflags: u32,
27358        dwrownumber: u32,
27359        vtdefault: u16,
27360    ) -> windows_core::Result<()>;
27361    fn GetPropertyId(
27362        &self,
27363        pszname: &windows_core::PCSTR,
27364        pdwpropid: *mut u32,
27365    ) -> windows_core::Result<()>;
27366    fn GetPropertyName(
27367        &self,
27368        dwpropid: u32,
27369        ppszname: *mut windows_core::PSTR,
27370    ) -> windows_core::Result<()>;
27371    fn RegisterAddressType(
27372        &self,
27373        pszname: &windows_core::PCSTR,
27374        pdwadrtype: *mut u32,
27375    ) -> windows_core::Result<()>;
27376}
27377impl IMimePropertySchema_Vtbl {
27378    pub const fn new<Identity: IMimePropertySchema_Impl, const OFFSET: isize>() -> Self {
27379        unsafe extern "system" fn RegisterProperty<
27380            Identity: IMimePropertySchema_Impl,
27381            const OFFSET: isize,
27382        >(
27383            this: *mut core::ffi::c_void,
27384            pszname: windows_core::PCSTR,
27385            dwflags: u32,
27386            dwrownumber: u32,
27387            vtdefault: u16,
27388            pdwpropid: *mut u32,
27389        ) -> windows_core::HRESULT {
27390            unsafe {
27391                let this: &Identity =
27392                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27393                IMimePropertySchema_Impl::RegisterProperty(
27394                    this,
27395                    core::mem::transmute(&pszname),
27396                    core::mem::transmute_copy(&dwflags),
27397                    core::mem::transmute_copy(&dwrownumber),
27398                    core::mem::transmute_copy(&vtdefault),
27399                    core::mem::transmute_copy(&pdwpropid),
27400                )
27401                .into()
27402            }
27403        }
27404        unsafe extern "system" fn ModifyProperty<
27405            Identity: IMimePropertySchema_Impl,
27406            const OFFSET: isize,
27407        >(
27408            this: *mut core::ffi::c_void,
27409            pszname: windows_core::PCSTR,
27410            dwflags: u32,
27411            dwrownumber: u32,
27412            vtdefault: u16,
27413        ) -> windows_core::HRESULT {
27414            unsafe {
27415                let this: &Identity =
27416                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27417                IMimePropertySchema_Impl::ModifyProperty(
27418                    this,
27419                    core::mem::transmute(&pszname),
27420                    core::mem::transmute_copy(&dwflags),
27421                    core::mem::transmute_copy(&dwrownumber),
27422                    core::mem::transmute_copy(&vtdefault),
27423                )
27424                .into()
27425            }
27426        }
27427        unsafe extern "system" fn GetPropertyId<
27428            Identity: IMimePropertySchema_Impl,
27429            const OFFSET: isize,
27430        >(
27431            this: *mut core::ffi::c_void,
27432            pszname: windows_core::PCSTR,
27433            pdwpropid: *mut u32,
27434        ) -> windows_core::HRESULT {
27435            unsafe {
27436                let this: &Identity =
27437                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27438                IMimePropertySchema_Impl::GetPropertyId(
27439                    this,
27440                    core::mem::transmute(&pszname),
27441                    core::mem::transmute_copy(&pdwpropid),
27442                )
27443                .into()
27444            }
27445        }
27446        unsafe extern "system" fn GetPropertyName<
27447            Identity: IMimePropertySchema_Impl,
27448            const OFFSET: isize,
27449        >(
27450            this: *mut core::ffi::c_void,
27451            dwpropid: u32,
27452            ppszname: *mut windows_core::PSTR,
27453        ) -> windows_core::HRESULT {
27454            unsafe {
27455                let this: &Identity =
27456                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27457                IMimePropertySchema_Impl::GetPropertyName(
27458                    this,
27459                    core::mem::transmute_copy(&dwpropid),
27460                    core::mem::transmute_copy(&ppszname),
27461                )
27462                .into()
27463            }
27464        }
27465        unsafe extern "system" fn RegisterAddressType<
27466            Identity: IMimePropertySchema_Impl,
27467            const OFFSET: isize,
27468        >(
27469            this: *mut core::ffi::c_void,
27470            pszname: windows_core::PCSTR,
27471            pdwadrtype: *mut u32,
27472        ) -> windows_core::HRESULT {
27473            unsafe {
27474                let this: &Identity =
27475                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
27476                IMimePropertySchema_Impl::RegisterAddressType(
27477                    this,
27478                    core::mem::transmute(&pszname),
27479                    core::mem::transmute_copy(&pdwadrtype),
27480                )
27481                .into()
27482            }
27483        }
27484        Self {
27485            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
27486            RegisterProperty: RegisterProperty::<Identity, OFFSET>,
27487            ModifyProperty: ModifyProperty::<Identity, OFFSET>,
27488            GetPropertyId: GetPropertyId::<Identity, OFFSET>,
27489            GetPropertyName: GetPropertyName::<Identity, OFFSET>,
27490            RegisterAddressType: RegisterAddressType::<Identity, OFFSET>,
27491        }
27492    }
27493    pub fn matches(iid: &windows_core::GUID) -> bool {
27494        iid == &<IMimePropertySchema as windows_core::Interface>::IID
27495    }
27496}
27497impl windows_core::RuntimeName for IMimePropertySchema {}
27498windows_core::imp::define_interface!(
27499    IMimePropertySet,
27500    IMimePropertySet_Vtbl,
27501    0xfd853cd3_7f86_11d0_8252_00c04fd85ab4
27502);
27503impl core::ops::Deref for IMimePropertySet {
27504    type Target = windows::Win32::System::Com::IPersistStreamInit;
27505    fn deref(&self) -> &Self::Target {
27506        unsafe { core::mem::transmute(self) }
27507    }
27508}
27509windows_core::imp::interface_hierarchy!(
27510    IMimePropertySet,
27511    windows_core::IUnknown,
27512    windows::Win32::System::Com::IPersist,
27513    windows::Win32::System::Com::IPersistStreamInit
27514);
27515impl IMimePropertySet {
27516    pub unsafe fn Save<P0>(&self, pstm: P0, fcleardirty: bool) -> windows_core::Result<()>
27517    where
27518        P0: windows_core::Param<windows::Win32::System::Com::IStream>,
27519    {
27520        unsafe {
27521            (windows_core::Interface::vtable(self).Save)(
27522                windows_core::Interface::as_raw(self),
27523                pstm.param().abi(),
27524                fcleardirty.into(),
27525            )
27526            .ok()
27527        }
27528    }
27529    pub unsafe fn GetSizeMax(&self) -> windows_core::Result<u64> {
27530        unsafe {
27531            let mut result__ = core::mem::zeroed();
27532            (windows_core::Interface::vtable(self).GetSizeMax)(
27533                windows_core::Interface::as_raw(self),
27534                &mut result__,
27535            )
27536            .map(|| result__)
27537        }
27538    }
27539    pub unsafe fn InitNew(&self) -> windows_core::Result<()> {
27540        unsafe {
27541            (windows_core::Interface::vtable(self).InitNew)(windows_core::Interface::as_raw(self))
27542                .ok()
27543        }
27544    }
27545    pub unsafe fn GetPropInfo<P0>(
27546        &self,
27547        pszname: P0,
27548        pinfo: *mut MIMEPROPINFO,
27549    ) -> windows_core::Result<()>
27550    where
27551        P0: windows_core::Param<windows_core::PCSTR>,
27552    {
27553        unsafe {
27554            (windows_core::Interface::vtable(self).GetPropInfo)(
27555                windows_core::Interface::as_raw(self),
27556                pszname.param().abi(),
27557                pinfo as _,
27558            )
27559            .ok()
27560        }
27561    }
27562    pub unsafe fn SetPropInfo<P0>(
27563        &self,
27564        pszname: P0,
27565        pinfo: *mut MIMEPROPINFO,
27566    ) -> windows_core::Result<()>
27567    where
27568        P0: windows_core::Param<windows_core::PCSTR>,
27569    {
27570        unsafe {
27571            (windows_core::Interface::vtable(self).SetPropInfo)(
27572                windows_core::Interface::as_raw(self),
27573                pszname.param().abi(),
27574                pinfo as _,
27575            )
27576            .ok()
27577        }
27578    }
27579    pub unsafe fn GetPropA<P0>(
27580        &self,
27581        pszname: P0,
27582        dwflags: u32,
27583        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27584    ) -> windows_core::Result<()>
27585    where
27586        P0: windows_core::Param<windows_core::PCSTR>,
27587    {
27588        unsafe {
27589            (windows_core::Interface::vtable(self).GetPropA)(
27590                windows_core::Interface::as_raw(self),
27591                pszname.param().abi(),
27592                dwflags,
27593                core::mem::transmute(pvalue),
27594            )
27595            .ok()
27596        }
27597    }
27598    pub unsafe fn SetPropA<P0>(
27599        &self,
27600        pszname: P0,
27601        dwflags: u32,
27602        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27603    ) -> windows_core::Result<()>
27604    where
27605        P0: windows_core::Param<windows_core::PCSTR>,
27606    {
27607        unsafe {
27608            (windows_core::Interface::vtable(self).SetPropA)(
27609                windows_core::Interface::as_raw(self),
27610                pszname.param().abi(),
27611                dwflags,
27612                core::mem::transmute(pvalue),
27613            )
27614            .ok()
27615        }
27616    }
27617    pub unsafe fn AppendProp<P0>(
27618        &self,
27619        pszname: P0,
27620        dwflags: u32,
27621        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27622    ) -> windows_core::Result<()>
27623    where
27624        P0: windows_core::Param<windows_core::PCSTR>,
27625    {
27626        unsafe {
27627            (windows_core::Interface::vtable(self).AppendProp)(
27628                windows_core::Interface::as_raw(self),
27629                pszname.param().abi(),
27630                dwflags,
27631                core::mem::transmute(pvalue),
27632            )
27633            .ok()
27634        }
27635    }
27636    pub unsafe fn DeleteProp<P0>(&self, pszname: P0) -> windows_core::Result<()>
27637    where
27638        P0: windows_core::Param<windows_core::PCSTR>,
27639    {
27640        unsafe {
27641            (windows_core::Interface::vtable(self).DeleteProp)(
27642                windows_core::Interface::as_raw(self),
27643                pszname.param().abi(),
27644            )
27645            .ok()
27646        }
27647    }
27648    pub unsafe fn CopyProps<P2>(
27649        &self,
27650        cnames: u32,
27651        prgszname: *const windows_core::PCSTR,
27652        ppropertyset: P2,
27653    ) -> windows_core::Result<()>
27654    where
27655        P2: windows_core::Param<IMimePropertySet>,
27656    {
27657        unsafe {
27658            (windows_core::Interface::vtable(self).CopyProps)(
27659                windows_core::Interface::as_raw(self),
27660                cnames,
27661                prgszname,
27662                ppropertyset.param().abi(),
27663            )
27664            .ok()
27665        }
27666    }
27667    pub unsafe fn MoveProps<P2>(
27668        &self,
27669        cnames: u32,
27670        prgszname: *const windows_core::PCSTR,
27671        ppropertyset: P2,
27672    ) -> windows_core::Result<()>
27673    where
27674        P2: windows_core::Param<IMimePropertySet>,
27675    {
27676        unsafe {
27677            (windows_core::Interface::vtable(self).MoveProps)(
27678                windows_core::Interface::as_raw(self),
27679                cnames,
27680                prgszname,
27681                ppropertyset.param().abi(),
27682            )
27683            .ok()
27684        }
27685    }
27686    pub unsafe fn DeleteExcept(
27687        &self,
27688        cnames: u32,
27689        prgszname: *const windows_core::PCSTR,
27690    ) -> windows_core::Result<()> {
27691        unsafe {
27692            (windows_core::Interface::vtable(self).DeleteExcept)(
27693                windows_core::Interface::as_raw(self),
27694                cnames,
27695                prgszname,
27696            )
27697            .ok()
27698        }
27699    }
27700    pub unsafe fn QueryProp<P0, P1>(
27701        &self,
27702        pszname: P0,
27703        pszcriteria: P1,
27704        fsubstring: u8,
27705        fcasesensitive: u8,
27706    ) -> windows_core::Result<()>
27707    where
27708        P0: windows_core::Param<windows_core::PCSTR>,
27709        P1: windows_core::Param<windows_core::PCSTR>,
27710    {
27711        unsafe {
27712            (windows_core::Interface::vtable(self).QueryProp)(
27713                windows_core::Interface::as_raw(self),
27714                pszname.param().abi(),
27715                pszcriteria.param().abi(),
27716                fsubstring,
27717                fcasesensitive,
27718            )
27719            .ok()
27720        }
27721    }
27722    pub unsafe fn GetCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()> {
27723        unsafe {
27724            (windows_core::Interface::vtable(self).GetCharset)(
27725                windows_core::Interface::as_raw(self),
27726                phcharset as _,
27727            )
27728            .ok()
27729        }
27730    }
27731    pub unsafe fn SetCharset(
27732        &self,
27733        hcharset: *mut HCHARSET__,
27734        applytype: CSETAPPLYTYPE,
27735    ) -> windows_core::Result<()> {
27736        unsafe {
27737            (windows_core::Interface::vtable(self).SetCharset)(
27738                windows_core::Interface::as_raw(self),
27739                hcharset as _,
27740                applytype,
27741            )
27742            .ok()
27743        }
27744    }
27745    pub unsafe fn GetParameters<P0>(
27746        &self,
27747        pszname: P0,
27748        pcparams: *mut u32,
27749        pprgparam: *mut *mut MIMEPARAMINFO,
27750    ) -> windows_core::Result<()>
27751    where
27752        P0: windows_core::Param<windows_core::PCSTR>,
27753    {
27754        unsafe {
27755            (windows_core::Interface::vtable(self).GetParameters)(
27756                windows_core::Interface::as_raw(self),
27757                pszname.param().abi(),
27758                pcparams as _,
27759                pprgparam as _,
27760            )
27761            .ok()
27762        }
27763    }
27764    pub unsafe fn IsContentType<P0, P1>(
27765        &self,
27766        pszpritype: P0,
27767        pszsubtype: P1,
27768    ) -> windows_core::Result<()>
27769    where
27770        P0: windows_core::Param<windows_core::PCSTR>,
27771        P1: windows_core::Param<windows_core::PCSTR>,
27772    {
27773        unsafe {
27774            (windows_core::Interface::vtable(self).IsContentType)(
27775                windows_core::Interface::as_raw(self),
27776                pszpritype.param().abi(),
27777                pszsubtype.param().abi(),
27778            )
27779            .ok()
27780        }
27781    }
27782    pub unsafe fn BindToObject(
27783        &self,
27784        riid: *const windows_core::GUID,
27785        ppvobject: *mut *mut core::ffi::c_void,
27786    ) -> windows_core::Result<()> {
27787        unsafe {
27788            (windows_core::Interface::vtable(self).BindToObject)(
27789                windows_core::Interface::as_raw(self),
27790                riid,
27791                ppvobject as _,
27792            )
27793            .ok()
27794        }
27795    }
27796    pub unsafe fn Clone(&self) -> windows_core::Result<IMimePropertySet> {
27797        unsafe {
27798            let mut result__ = core::mem::zeroed();
27799            (windows_core::Interface::vtable(self).Clone)(
27800                windows_core::Interface::as_raw(self),
27801                &mut result__,
27802            )
27803            .and_then(|| windows_core::Type::from_abi(result__))
27804        }
27805    }
27806    pub unsafe fn SetOption(
27807        &self,
27808        oid: u32,
27809        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27810    ) -> windows_core::Result<()> {
27811        unsafe {
27812            (windows_core::Interface::vtable(self).SetOption)(
27813                windows_core::Interface::as_raw(self),
27814                oid,
27815                core::mem::transmute(pvalue),
27816            )
27817            .ok()
27818        }
27819    }
27820    pub unsafe fn GetOption(
27821        &self,
27822        oid: u32,
27823        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27824    ) -> windows_core::Result<()> {
27825        unsafe {
27826            (windows_core::Interface::vtable(self).GetOption)(
27827                windows_core::Interface::as_raw(self),
27828                oid,
27829                core::mem::transmute(pvalue),
27830            )
27831            .ok()
27832        }
27833    }
27834    pub unsafe fn EnumPropsA(&self, dwflags: u32) -> windows_core::Result<IMimeEnumProperties> {
27835        unsafe {
27836            let mut result__ = core::mem::zeroed();
27837            (windows_core::Interface::vtable(self).EnumPropsA)(
27838                windows_core::Interface::as_raw(self),
27839                dwflags,
27840                &mut result__,
27841            )
27842            .and_then(|| windows_core::Type::from_abi(result__))
27843        }
27844    }
27845}
27846#[repr(C)]
27847#[doc(hidden)]
27848pub struct IMimePropertySet_Vtbl {
27849    pub base__: windows::Win32::System::Com::IPersistStreamInit_Vtbl,
27850    pub Save: unsafe extern "system" fn(
27851        *mut core::ffi::c_void,
27852        *mut core::ffi::c_void,
27853        windows_core::BOOL,
27854    ) -> windows_core::HRESULT,
27855    pub GetSizeMax:
27856        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
27857    pub InitNew: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
27858    pub GetPropInfo: unsafe extern "system" fn(
27859        *mut core::ffi::c_void,
27860        windows_core::PCSTR,
27861        *mut MIMEPROPINFO,
27862    ) -> windows_core::HRESULT,
27863    pub SetPropInfo: unsafe extern "system" fn(
27864        *mut core::ffi::c_void,
27865        windows_core::PCSTR,
27866        *mut MIMEPROPINFO,
27867    ) -> windows_core::HRESULT,
27868    pub GetPropA: unsafe extern "system" fn(
27869        *mut core::ffi::c_void,
27870        windows_core::PCSTR,
27871        u32,
27872        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27873    ) -> windows_core::HRESULT,
27874    pub SetPropA: unsafe extern "system" fn(
27875        *mut core::ffi::c_void,
27876        windows_core::PCSTR,
27877        u32,
27878        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27879    ) -> windows_core::HRESULT,
27880    pub AppendProp: unsafe extern "system" fn(
27881        *mut core::ffi::c_void,
27882        windows_core::PCSTR,
27883        u32,
27884        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27885    ) -> windows_core::HRESULT,
27886    pub DeleteProp: unsafe extern "system" fn(
27887        *mut core::ffi::c_void,
27888        windows_core::PCSTR,
27889    ) -> windows_core::HRESULT,
27890    pub CopyProps: unsafe extern "system" fn(
27891        *mut core::ffi::c_void,
27892        u32,
27893        *const windows_core::PCSTR,
27894        *mut core::ffi::c_void,
27895    ) -> windows_core::HRESULT,
27896    pub MoveProps: unsafe extern "system" fn(
27897        *mut core::ffi::c_void,
27898        u32,
27899        *const windows_core::PCSTR,
27900        *mut core::ffi::c_void,
27901    ) -> windows_core::HRESULT,
27902    pub DeleteExcept: unsafe extern "system" fn(
27903        *mut core::ffi::c_void,
27904        u32,
27905        *const windows_core::PCSTR,
27906    ) -> windows_core::HRESULT,
27907    pub QueryProp: unsafe extern "system" fn(
27908        *mut core::ffi::c_void,
27909        windows_core::PCSTR,
27910        windows_core::PCSTR,
27911        u8,
27912        u8,
27913    ) -> windows_core::HRESULT,
27914    pub GetCharset: unsafe extern "system" fn(
27915        *mut core::ffi::c_void,
27916        *mut *mut HCHARSET__,
27917    ) -> windows_core::HRESULT,
27918    pub SetCharset: unsafe extern "system" fn(
27919        *mut core::ffi::c_void,
27920        *mut HCHARSET__,
27921        CSETAPPLYTYPE,
27922    ) -> windows_core::HRESULT,
27923    pub GetParameters: unsafe extern "system" fn(
27924        *mut core::ffi::c_void,
27925        windows_core::PCSTR,
27926        *mut u32,
27927        *mut *mut MIMEPARAMINFO,
27928    ) -> windows_core::HRESULT,
27929    pub IsContentType: unsafe extern "system" fn(
27930        *mut core::ffi::c_void,
27931        windows_core::PCSTR,
27932        windows_core::PCSTR,
27933    ) -> windows_core::HRESULT,
27934    pub BindToObject: unsafe extern "system" fn(
27935        *mut core::ffi::c_void,
27936        *const windows_core::GUID,
27937        *mut *mut core::ffi::c_void,
27938    ) -> windows_core::HRESULT,
27939    pub Clone: unsafe extern "system" fn(
27940        *mut core::ffi::c_void,
27941        *mut *mut core::ffi::c_void,
27942    ) -> windows_core::HRESULT,
27943    pub SetOption: unsafe extern "system" fn(
27944        *mut core::ffi::c_void,
27945        u32,
27946        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27947    ) -> windows_core::HRESULT,
27948    pub GetOption: unsafe extern "system" fn(
27949        *mut core::ffi::c_void,
27950        u32,
27951        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27952    ) -> windows_core::HRESULT,
27953    pub EnumPropsA: unsafe extern "system" fn(
27954        *mut core::ffi::c_void,
27955        u32,
27956        *mut *mut core::ffi::c_void,
27957    ) -> windows_core::HRESULT,
27958}
27959pub trait IMimePropertySet_Impl: windows::Win32::System::Com::IPersistStreamInit_Impl {
27960    fn Save(
27961        &self,
27962        pstm: windows_core::Ref<windows::Win32::System::Com::IStream>,
27963        fcleardirty: windows_core::BOOL,
27964    ) -> windows_core::Result<()>;
27965    fn GetSizeMax(&self) -> windows_core::Result<u64>;
27966    fn InitNew(&self) -> windows_core::Result<()>;
27967    fn GetPropInfo(
27968        &self,
27969        pszname: &windows_core::PCSTR,
27970        pinfo: *mut MIMEPROPINFO,
27971    ) -> windows_core::Result<()>;
27972    fn SetPropInfo(
27973        &self,
27974        pszname: &windows_core::PCSTR,
27975        pinfo: *mut MIMEPROPINFO,
27976    ) -> windows_core::Result<()>;
27977    fn GetPropA(
27978        &self,
27979        pszname: &windows_core::PCSTR,
27980        dwflags: u32,
27981        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27982    ) -> windows_core::Result<()>;
27983    fn SetPropA(
27984        &self,
27985        pszname: &windows_core::PCSTR,
27986        dwflags: u32,
27987        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27988    ) -> windows_core::Result<()>;
27989    fn AppendProp(
27990        &self,
27991        pszname: &windows_core::PCSTR,
27992        dwflags: u32,
27993        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
27994    ) -> windows_core::Result<()>;
27995    fn DeleteProp(&self, pszname: &windows_core::PCSTR) -> windows_core::Result<()>;
27996    fn CopyProps(
27997        &self,
27998        cnames: u32,
27999        prgszname: *const windows_core::PCSTR,
28000        ppropertyset: windows_core::Ref<IMimePropertySet>,
28001    ) -> windows_core::Result<()>;
28002    fn MoveProps(
28003        &self,
28004        cnames: u32,
28005        prgszname: *const windows_core::PCSTR,
28006        ppropertyset: windows_core::Ref<IMimePropertySet>,
28007    ) -> windows_core::Result<()>;
28008    fn DeleteExcept(
28009        &self,
28010        cnames: u32,
28011        prgszname: *const windows_core::PCSTR,
28012    ) -> windows_core::Result<()>;
28013    fn QueryProp(
28014        &self,
28015        pszname: &windows_core::PCSTR,
28016        pszcriteria: &windows_core::PCSTR,
28017        fsubstring: u8,
28018        fcasesensitive: u8,
28019    ) -> windows_core::Result<()>;
28020    fn GetCharset(&self, phcharset: *mut *mut HCHARSET__) -> windows_core::Result<()>;
28021    fn SetCharset(
28022        &self,
28023        hcharset: *mut HCHARSET__,
28024        applytype: CSETAPPLYTYPE,
28025    ) -> windows_core::Result<()>;
28026    fn GetParameters(
28027        &self,
28028        pszname: &windows_core::PCSTR,
28029        pcparams: *mut u32,
28030        pprgparam: *mut *mut MIMEPARAMINFO,
28031    ) -> windows_core::Result<()>;
28032    fn IsContentType(
28033        &self,
28034        pszpritype: &windows_core::PCSTR,
28035        pszsubtype: &windows_core::PCSTR,
28036    ) -> windows_core::Result<()>;
28037    fn BindToObject(
28038        &self,
28039        riid: *const windows_core::GUID,
28040        ppvobject: *mut *mut core::ffi::c_void,
28041    ) -> windows_core::Result<()>;
28042    fn Clone(&self) -> windows_core::Result<IMimePropertySet>;
28043    fn SetOption(
28044        &self,
28045        oid: u32,
28046        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28047    ) -> windows_core::Result<()>;
28048    fn GetOption(
28049        &self,
28050        oid: u32,
28051        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28052    ) -> windows_core::Result<()>;
28053    fn EnumPropsA(&self, dwflags: u32) -> windows_core::Result<IMimeEnumProperties>;
28054}
28055impl IMimePropertySet_Vtbl {
28056    pub const fn new<Identity: IMimePropertySet_Impl, const OFFSET: isize>() -> Self {
28057        unsafe extern "system" fn Save<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28058            this: *mut core::ffi::c_void,
28059            pstm: *mut core::ffi::c_void,
28060            fcleardirty: windows_core::BOOL,
28061        ) -> windows_core::HRESULT {
28062            unsafe {
28063                let this: &Identity =
28064                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28065                IMimePropertySet_Impl::Save(
28066                    this,
28067                    core::mem::transmute_copy(&pstm),
28068                    core::mem::transmute_copy(&fcleardirty),
28069                )
28070                .into()
28071            }
28072        }
28073        unsafe extern "system" fn GetSizeMax<
28074            Identity: IMimePropertySet_Impl,
28075            const OFFSET: isize,
28076        >(
28077            this: *mut core::ffi::c_void,
28078            pcbsize: *mut u64,
28079        ) -> windows_core::HRESULT {
28080            unsafe {
28081                let this: &Identity =
28082                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28083                match IMimePropertySet_Impl::GetSizeMax(this) {
28084                    Ok(ok__) => {
28085                        pcbsize.write(core::mem::transmute(ok__));
28086                        windows_core::HRESULT(0)
28087                    }
28088                    Err(err) => err.into(),
28089                }
28090            }
28091        }
28092        unsafe extern "system" fn InitNew<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28093            this: *mut core::ffi::c_void,
28094        ) -> windows_core::HRESULT {
28095            unsafe {
28096                let this: &Identity =
28097                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28098                IMimePropertySet_Impl::InitNew(this).into()
28099            }
28100        }
28101        unsafe extern "system" fn GetPropInfo<
28102            Identity: IMimePropertySet_Impl,
28103            const OFFSET: isize,
28104        >(
28105            this: *mut core::ffi::c_void,
28106            pszname: windows_core::PCSTR,
28107            pinfo: *mut MIMEPROPINFO,
28108        ) -> windows_core::HRESULT {
28109            unsafe {
28110                let this: &Identity =
28111                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28112                IMimePropertySet_Impl::GetPropInfo(
28113                    this,
28114                    core::mem::transmute(&pszname),
28115                    core::mem::transmute_copy(&pinfo),
28116                )
28117                .into()
28118            }
28119        }
28120        unsafe extern "system" fn SetPropInfo<
28121            Identity: IMimePropertySet_Impl,
28122            const OFFSET: isize,
28123        >(
28124            this: *mut core::ffi::c_void,
28125            pszname: windows_core::PCSTR,
28126            pinfo: *mut MIMEPROPINFO,
28127        ) -> windows_core::HRESULT {
28128            unsafe {
28129                let this: &Identity =
28130                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28131                IMimePropertySet_Impl::SetPropInfo(
28132                    this,
28133                    core::mem::transmute(&pszname),
28134                    core::mem::transmute_copy(&pinfo),
28135                )
28136                .into()
28137            }
28138        }
28139        unsafe extern "system" fn GetPropA<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28140            this: *mut core::ffi::c_void,
28141            pszname: windows_core::PCSTR,
28142            dwflags: u32,
28143            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28144        ) -> windows_core::HRESULT {
28145            unsafe {
28146                let this: &Identity =
28147                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28148                IMimePropertySet_Impl::GetPropA(
28149                    this,
28150                    core::mem::transmute(&pszname),
28151                    core::mem::transmute_copy(&dwflags),
28152                    core::mem::transmute_copy(&pvalue),
28153                )
28154                .into()
28155            }
28156        }
28157        unsafe extern "system" fn SetPropA<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28158            this: *mut core::ffi::c_void,
28159            pszname: windows_core::PCSTR,
28160            dwflags: u32,
28161            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28162        ) -> windows_core::HRESULT {
28163            unsafe {
28164                let this: &Identity =
28165                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28166                IMimePropertySet_Impl::SetPropA(
28167                    this,
28168                    core::mem::transmute(&pszname),
28169                    core::mem::transmute_copy(&dwflags),
28170                    core::mem::transmute_copy(&pvalue),
28171                )
28172                .into()
28173            }
28174        }
28175        unsafe extern "system" fn AppendProp<
28176            Identity: IMimePropertySet_Impl,
28177            const OFFSET: isize,
28178        >(
28179            this: *mut core::ffi::c_void,
28180            pszname: windows_core::PCSTR,
28181            dwflags: u32,
28182            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28183        ) -> windows_core::HRESULT {
28184            unsafe {
28185                let this: &Identity =
28186                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28187                IMimePropertySet_Impl::AppendProp(
28188                    this,
28189                    core::mem::transmute(&pszname),
28190                    core::mem::transmute_copy(&dwflags),
28191                    core::mem::transmute_copy(&pvalue),
28192                )
28193                .into()
28194            }
28195        }
28196        unsafe extern "system" fn DeleteProp<
28197            Identity: IMimePropertySet_Impl,
28198            const OFFSET: isize,
28199        >(
28200            this: *mut core::ffi::c_void,
28201            pszname: windows_core::PCSTR,
28202        ) -> windows_core::HRESULT {
28203            unsafe {
28204                let this: &Identity =
28205                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28206                IMimePropertySet_Impl::DeleteProp(this, core::mem::transmute(&pszname)).into()
28207            }
28208        }
28209        unsafe extern "system" fn CopyProps<
28210            Identity: IMimePropertySet_Impl,
28211            const OFFSET: isize,
28212        >(
28213            this: *mut core::ffi::c_void,
28214            cnames: u32,
28215            prgszname: *const windows_core::PCSTR,
28216            ppropertyset: *mut core::ffi::c_void,
28217        ) -> windows_core::HRESULT {
28218            unsafe {
28219                let this: &Identity =
28220                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28221                IMimePropertySet_Impl::CopyProps(
28222                    this,
28223                    core::mem::transmute_copy(&cnames),
28224                    core::mem::transmute_copy(&prgszname),
28225                    core::mem::transmute_copy(&ppropertyset),
28226                )
28227                .into()
28228            }
28229        }
28230        unsafe extern "system" fn MoveProps<
28231            Identity: IMimePropertySet_Impl,
28232            const OFFSET: isize,
28233        >(
28234            this: *mut core::ffi::c_void,
28235            cnames: u32,
28236            prgszname: *const windows_core::PCSTR,
28237            ppropertyset: *mut core::ffi::c_void,
28238        ) -> windows_core::HRESULT {
28239            unsafe {
28240                let this: &Identity =
28241                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28242                IMimePropertySet_Impl::MoveProps(
28243                    this,
28244                    core::mem::transmute_copy(&cnames),
28245                    core::mem::transmute_copy(&prgszname),
28246                    core::mem::transmute_copy(&ppropertyset),
28247                )
28248                .into()
28249            }
28250        }
28251        unsafe extern "system" fn DeleteExcept<
28252            Identity: IMimePropertySet_Impl,
28253            const OFFSET: isize,
28254        >(
28255            this: *mut core::ffi::c_void,
28256            cnames: u32,
28257            prgszname: *const windows_core::PCSTR,
28258        ) -> windows_core::HRESULT {
28259            unsafe {
28260                let this: &Identity =
28261                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28262                IMimePropertySet_Impl::DeleteExcept(
28263                    this,
28264                    core::mem::transmute_copy(&cnames),
28265                    core::mem::transmute_copy(&prgszname),
28266                )
28267                .into()
28268            }
28269        }
28270        unsafe extern "system" fn QueryProp<
28271            Identity: IMimePropertySet_Impl,
28272            const OFFSET: isize,
28273        >(
28274            this: *mut core::ffi::c_void,
28275            pszname: windows_core::PCSTR,
28276            pszcriteria: windows_core::PCSTR,
28277            fsubstring: u8,
28278            fcasesensitive: u8,
28279        ) -> windows_core::HRESULT {
28280            unsafe {
28281                let this: &Identity =
28282                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28283                IMimePropertySet_Impl::QueryProp(
28284                    this,
28285                    core::mem::transmute(&pszname),
28286                    core::mem::transmute(&pszcriteria),
28287                    core::mem::transmute_copy(&fsubstring),
28288                    core::mem::transmute_copy(&fcasesensitive),
28289                )
28290                .into()
28291            }
28292        }
28293        unsafe extern "system" fn GetCharset<
28294            Identity: IMimePropertySet_Impl,
28295            const OFFSET: isize,
28296        >(
28297            this: *mut core::ffi::c_void,
28298            phcharset: *mut *mut HCHARSET__,
28299        ) -> windows_core::HRESULT {
28300            unsafe {
28301                let this: &Identity =
28302                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28303                IMimePropertySet_Impl::GetCharset(this, core::mem::transmute_copy(&phcharset))
28304                    .into()
28305            }
28306        }
28307        unsafe extern "system" fn SetCharset<
28308            Identity: IMimePropertySet_Impl,
28309            const OFFSET: isize,
28310        >(
28311            this: *mut core::ffi::c_void,
28312            hcharset: *mut HCHARSET__,
28313            applytype: CSETAPPLYTYPE,
28314        ) -> windows_core::HRESULT {
28315            unsafe {
28316                let this: &Identity =
28317                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28318                IMimePropertySet_Impl::SetCharset(
28319                    this,
28320                    core::mem::transmute_copy(&hcharset),
28321                    core::mem::transmute_copy(&applytype),
28322                )
28323                .into()
28324            }
28325        }
28326        unsafe extern "system" fn GetParameters<
28327            Identity: IMimePropertySet_Impl,
28328            const OFFSET: isize,
28329        >(
28330            this: *mut core::ffi::c_void,
28331            pszname: windows_core::PCSTR,
28332            pcparams: *mut u32,
28333            pprgparam: *mut *mut MIMEPARAMINFO,
28334        ) -> windows_core::HRESULT {
28335            unsafe {
28336                let this: &Identity =
28337                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28338                IMimePropertySet_Impl::GetParameters(
28339                    this,
28340                    core::mem::transmute(&pszname),
28341                    core::mem::transmute_copy(&pcparams),
28342                    core::mem::transmute_copy(&pprgparam),
28343                )
28344                .into()
28345            }
28346        }
28347        unsafe extern "system" fn IsContentType<
28348            Identity: IMimePropertySet_Impl,
28349            const OFFSET: isize,
28350        >(
28351            this: *mut core::ffi::c_void,
28352            pszpritype: windows_core::PCSTR,
28353            pszsubtype: windows_core::PCSTR,
28354        ) -> windows_core::HRESULT {
28355            unsafe {
28356                let this: &Identity =
28357                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28358                IMimePropertySet_Impl::IsContentType(
28359                    this,
28360                    core::mem::transmute(&pszpritype),
28361                    core::mem::transmute(&pszsubtype),
28362                )
28363                .into()
28364            }
28365        }
28366        unsafe extern "system" fn BindToObject<
28367            Identity: IMimePropertySet_Impl,
28368            const OFFSET: isize,
28369        >(
28370            this: *mut core::ffi::c_void,
28371            riid: *const windows_core::GUID,
28372            ppvobject: *mut *mut core::ffi::c_void,
28373        ) -> windows_core::HRESULT {
28374            unsafe {
28375                let this: &Identity =
28376                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28377                IMimePropertySet_Impl::BindToObject(
28378                    this,
28379                    core::mem::transmute_copy(&riid),
28380                    core::mem::transmute_copy(&ppvobject),
28381                )
28382                .into()
28383            }
28384        }
28385        unsafe extern "system" fn Clone<Identity: IMimePropertySet_Impl, const OFFSET: isize>(
28386            this: *mut core::ffi::c_void,
28387            pppropertyset: *mut *mut core::ffi::c_void,
28388        ) -> windows_core::HRESULT {
28389            unsafe {
28390                let this: &Identity =
28391                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28392                match IMimePropertySet_Impl::Clone(this) {
28393                    Ok(ok__) => {
28394                        pppropertyset.write(core::mem::transmute(ok__));
28395                        windows_core::HRESULT(0)
28396                    }
28397                    Err(err) => err.into(),
28398                }
28399            }
28400        }
28401        unsafe extern "system" fn SetOption<
28402            Identity: IMimePropertySet_Impl,
28403            const OFFSET: isize,
28404        >(
28405            this: *mut core::ffi::c_void,
28406            oid: u32,
28407            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28408        ) -> windows_core::HRESULT {
28409            unsafe {
28410                let this: &Identity =
28411                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28412                IMimePropertySet_Impl::SetOption(
28413                    this,
28414                    core::mem::transmute_copy(&oid),
28415                    core::mem::transmute_copy(&pvalue),
28416                )
28417                .into()
28418            }
28419        }
28420        unsafe extern "system" fn GetOption<
28421            Identity: IMimePropertySet_Impl,
28422            const OFFSET: isize,
28423        >(
28424            this: *mut core::ffi::c_void,
28425            oid: u32,
28426            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28427        ) -> windows_core::HRESULT {
28428            unsafe {
28429                let this: &Identity =
28430                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28431                IMimePropertySet_Impl::GetOption(
28432                    this,
28433                    core::mem::transmute_copy(&oid),
28434                    core::mem::transmute_copy(&pvalue),
28435                )
28436                .into()
28437            }
28438        }
28439        unsafe extern "system" fn EnumPropsA<
28440            Identity: IMimePropertySet_Impl,
28441            const OFFSET: isize,
28442        >(
28443            this: *mut core::ffi::c_void,
28444            dwflags: u32,
28445            ppenum: *mut *mut core::ffi::c_void,
28446        ) -> windows_core::HRESULT {
28447            unsafe {
28448                let this: &Identity =
28449                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28450                match IMimePropertySet_Impl::EnumPropsA(this, core::mem::transmute_copy(&dwflags)) {
28451                    Ok(ok__) => {
28452                        ppenum.write(core::mem::transmute(ok__));
28453                        windows_core::HRESULT(0)
28454                    }
28455                    Err(err) => err.into(),
28456                }
28457            }
28458        }
28459        Self {
28460            base__: windows::Win32::System::Com::IPersistStreamInit_Vtbl::new::<Identity, OFFSET>(),
28461            Save: Save::<Identity, OFFSET>,
28462            GetSizeMax: GetSizeMax::<Identity, OFFSET>,
28463            InitNew: InitNew::<Identity, OFFSET>,
28464            GetPropInfo: GetPropInfo::<Identity, OFFSET>,
28465            SetPropInfo: SetPropInfo::<Identity, OFFSET>,
28466            GetPropA: GetPropA::<Identity, OFFSET>,
28467            SetPropA: SetPropA::<Identity, OFFSET>,
28468            AppendProp: AppendProp::<Identity, OFFSET>,
28469            DeleteProp: DeleteProp::<Identity, OFFSET>,
28470            CopyProps: CopyProps::<Identity, OFFSET>,
28471            MoveProps: MoveProps::<Identity, OFFSET>,
28472            DeleteExcept: DeleteExcept::<Identity, OFFSET>,
28473            QueryProp: QueryProp::<Identity, OFFSET>,
28474            GetCharset: GetCharset::<Identity, OFFSET>,
28475            SetCharset: SetCharset::<Identity, OFFSET>,
28476            GetParameters: GetParameters::<Identity, OFFSET>,
28477            IsContentType: IsContentType::<Identity, OFFSET>,
28478            BindToObject: BindToObject::<Identity, OFFSET>,
28479            Clone: Clone::<Identity, OFFSET>,
28480            SetOption: SetOption::<Identity, OFFSET>,
28481            GetOption: GetOption::<Identity, OFFSET>,
28482            EnumPropsA: EnumPropsA::<Identity, OFFSET>,
28483        }
28484    }
28485    pub fn matches(iid: &windows_core::GUID) -> bool {
28486        iid == & < IMimePropertySet as windows_core::Interface >::IID || iid == & < windows::Win32::System::Com:: IPersist as windows_core::Interface >::IID || iid == & < windows::Win32::System::Com:: IPersistStreamInit as windows_core::Interface >::IID
28487    }
28488}
28489impl windows_core::RuntimeName for IMimePropertySet {}
28490windows_core::imp::define_interface!(
28491    IMimeSecurity,
28492    IMimeSecurity_Vtbl,
28493    0xc5588353_7f86_11d0_8252_00c04fd85ab4
28494);
28495windows_core::imp::interface_hierarchy!(IMimeSecurity, windows_core::IUnknown);
28496impl IMimeSecurity {
28497    pub unsafe fn InitNew(&self) -> windows_core::Result<()> {
28498        unsafe {
28499            (windows_core::Interface::vtable(self).InitNew)(windows_core::Interface::as_raw(self))
28500                .ok()
28501        }
28502    }
28503    pub unsafe fn CheckInit(&self) -> windows_core::Result<()> {
28504        unsafe {
28505            (windows_core::Interface::vtable(self).CheckInit)(windows_core::Interface::as_raw(self))
28506                .ok()
28507        }
28508    }
28509    pub unsafe fn EncodeMessage<P0>(&self, ptree: P0, dwflags: u32) -> windows_core::Result<()>
28510    where
28511        P0: windows_core::Param<IMimeMessageTree>,
28512    {
28513        unsafe {
28514            (windows_core::Interface::vtable(self).EncodeMessage)(
28515                windows_core::Interface::as_raw(self),
28516                ptree.param().abi(),
28517                dwflags,
28518            )
28519            .ok()
28520        }
28521    }
28522    pub unsafe fn EncodeBody<P0>(
28523        &self,
28524        ptree: P0,
28525        hencoderoot: *mut HBODY__,
28526        dwflags: u32,
28527    ) -> windows_core::Result<()>
28528    where
28529        P0: windows_core::Param<IMimeMessageTree>,
28530    {
28531        unsafe {
28532            (windows_core::Interface::vtable(self).EncodeBody)(
28533                windows_core::Interface::as_raw(self),
28534                ptree.param().abi(),
28535                hencoderoot as _,
28536                dwflags,
28537            )
28538            .ok()
28539        }
28540    }
28541    pub unsafe fn DecodeMessage<P0>(&self, ptree: P0, dwflags: u32) -> windows_core::Result<()>
28542    where
28543        P0: windows_core::Param<IMimeMessageTree>,
28544    {
28545        unsafe {
28546            (windows_core::Interface::vtable(self).DecodeMessage)(
28547                windows_core::Interface::as_raw(self),
28548                ptree.param().abi(),
28549                dwflags,
28550            )
28551            .ok()
28552        }
28553    }
28554    pub unsafe fn DecodeBody<P0>(
28555        &self,
28556        ptree: P0,
28557        hdecoderoot: *mut HBODY__,
28558        dwflags: u32,
28559    ) -> windows_core::Result<()>
28560    where
28561        P0: windows_core::Param<IMimeMessageTree>,
28562    {
28563        unsafe {
28564            (windows_core::Interface::vtable(self).DecodeBody)(
28565                windows_core::Interface::as_raw(self),
28566                ptree.param().abi(),
28567                hdecoderoot as _,
28568                dwflags,
28569            )
28570            .ok()
28571        }
28572    }
28573    pub unsafe fn EnumCertificates(
28574        &self,
28575        hc: *mut core::ffi::c_void,
28576        dwusage: u32,
28577        pprev: *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28578        ppcert: *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28579    ) -> windows_core::Result<()> {
28580        unsafe {
28581            (windows_core::Interface::vtable(self).EnumCertificates)(
28582                windows_core::Interface::as_raw(self),
28583                hc as _,
28584                dwusage,
28585                pprev as _,
28586                ppcert as _,
28587            )
28588            .ok()
28589        }
28590    }
28591    pub unsafe fn GetCertificateName(
28592        &self,
28593        px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28594        cn: CERTNAMETYPE,
28595        ppszname: *mut windows_core::PSTR,
28596    ) -> windows_core::Result<()> {
28597        unsafe {
28598            (windows_core::Interface::vtable(self).GetCertificateName)(
28599                windows_core::Interface::as_raw(self),
28600                px509cert,
28601                cn,
28602                ppszname as _,
28603            )
28604            .ok()
28605        }
28606    }
28607    pub unsafe fn GetMessageType<P1>(
28608        &self,
28609        hwndparent: windows::Win32::Foundation::HWND,
28610        pbody: P1,
28611        pdwsectype: *mut u32,
28612    ) -> windows_core::Result<()>
28613    where
28614        P1: windows_core::Param<IMimeBody>,
28615    {
28616        unsafe {
28617            (windows_core::Interface::vtable(self).GetMessageType)(
28618                windows_core::Interface::as_raw(self),
28619                hwndparent,
28620                pbody.param().abi(),
28621                pdwsectype as _,
28622            )
28623            .ok()
28624        }
28625    }
28626    pub unsafe fn GetCertData(
28627        &self,
28628        px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28629        dataid: CERTDATAID,
28630        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28631    ) -> windows_core::Result<()> {
28632        unsafe {
28633            (windows_core::Interface::vtable(self).GetCertData)(
28634                windows_core::Interface::as_raw(self),
28635                px509cert,
28636                dataid,
28637                core::mem::transmute(pvalue),
28638            )
28639            .ok()
28640        }
28641    }
28642}
28643#[repr(C)]
28644#[doc(hidden)]
28645pub struct IMimeSecurity_Vtbl {
28646    pub base__: windows_core::IUnknown_Vtbl,
28647    pub InitNew: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
28648    pub CheckInit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
28649    pub EncodeMessage: unsafe extern "system" fn(
28650        *mut core::ffi::c_void,
28651        *mut core::ffi::c_void,
28652        u32,
28653    ) -> windows_core::HRESULT,
28654    pub EncodeBody: unsafe extern "system" fn(
28655        *mut core::ffi::c_void,
28656        *mut core::ffi::c_void,
28657        *mut HBODY__,
28658        u32,
28659    ) -> windows_core::HRESULT,
28660    pub DecodeMessage: unsafe extern "system" fn(
28661        *mut core::ffi::c_void,
28662        *mut core::ffi::c_void,
28663        u32,
28664    ) -> windows_core::HRESULT,
28665    pub DecodeBody: unsafe extern "system" fn(
28666        *mut core::ffi::c_void,
28667        *mut core::ffi::c_void,
28668        *mut HBODY__,
28669        u32,
28670    ) -> windows_core::HRESULT,
28671    pub EnumCertificates: unsafe extern "system" fn(
28672        *mut core::ffi::c_void,
28673        *mut core::ffi::c_void,
28674        u32,
28675        *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28676        *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28677    ) -> windows_core::HRESULT,
28678    pub GetCertificateName: unsafe extern "system" fn(
28679        *mut core::ffi::c_void,
28680        *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28681        CERTNAMETYPE,
28682        *mut windows_core::PSTR,
28683    ) -> windows_core::HRESULT,
28684    pub GetMessageType: unsafe extern "system" fn(
28685        *mut core::ffi::c_void,
28686        windows::Win32::Foundation::HWND,
28687        *mut core::ffi::c_void,
28688        *mut u32,
28689    ) -> windows_core::HRESULT,
28690    pub GetCertData: unsafe extern "system" fn(
28691        *mut core::ffi::c_void,
28692        *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28693        CERTDATAID,
28694        *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28695    ) -> windows_core::HRESULT,
28696}
28697pub trait IMimeSecurity_Impl: windows_core::IUnknownImpl {
28698    fn InitNew(&self) -> windows_core::Result<()>;
28699    fn CheckInit(&self) -> windows_core::Result<()>;
28700    fn EncodeMessage(
28701        &self,
28702        ptree: windows_core::Ref<IMimeMessageTree>,
28703        dwflags: u32,
28704    ) -> windows_core::Result<()>;
28705    fn EncodeBody(
28706        &self,
28707        ptree: windows_core::Ref<IMimeMessageTree>,
28708        hencoderoot: *mut HBODY__,
28709        dwflags: u32,
28710    ) -> windows_core::Result<()>;
28711    fn DecodeMessage(
28712        &self,
28713        ptree: windows_core::Ref<IMimeMessageTree>,
28714        dwflags: u32,
28715    ) -> windows_core::Result<()>;
28716    fn DecodeBody(
28717        &self,
28718        ptree: windows_core::Ref<IMimeMessageTree>,
28719        hdecoderoot: *mut HBODY__,
28720        dwflags: u32,
28721    ) -> windows_core::Result<()>;
28722    fn EnumCertificates(
28723        &self,
28724        hc: *mut core::ffi::c_void,
28725        dwusage: u32,
28726        pprev: *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28727        ppcert: *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28728    ) -> windows_core::Result<()>;
28729    fn GetCertificateName(
28730        &self,
28731        px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28732        cn: CERTNAMETYPE,
28733        ppszname: *mut windows_core::PSTR,
28734    ) -> windows_core::Result<()>;
28735    fn GetMessageType(
28736        &self,
28737        hwndparent: windows::Win32::Foundation::HWND,
28738        pbody: windows_core::Ref<IMimeBody>,
28739        pdwsectype: *mut u32,
28740    ) -> windows_core::Result<()>;
28741    fn GetCertData(
28742        &self,
28743        px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28744        dataid: CERTDATAID,
28745        pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28746    ) -> windows_core::Result<()>;
28747}
28748impl IMimeSecurity_Vtbl {
28749    pub const fn new<Identity: IMimeSecurity_Impl, const OFFSET: isize>() -> Self {
28750        unsafe extern "system" fn InitNew<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28751            this: *mut core::ffi::c_void,
28752        ) -> windows_core::HRESULT {
28753            unsafe {
28754                let this: &Identity =
28755                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28756                IMimeSecurity_Impl::InitNew(this).into()
28757            }
28758        }
28759        unsafe extern "system" fn CheckInit<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28760            this: *mut core::ffi::c_void,
28761        ) -> windows_core::HRESULT {
28762            unsafe {
28763                let this: &Identity =
28764                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28765                IMimeSecurity_Impl::CheckInit(this).into()
28766            }
28767        }
28768        unsafe extern "system" fn EncodeMessage<
28769            Identity: IMimeSecurity_Impl,
28770            const OFFSET: isize,
28771        >(
28772            this: *mut core::ffi::c_void,
28773            ptree: *mut core::ffi::c_void,
28774            dwflags: u32,
28775        ) -> windows_core::HRESULT {
28776            unsafe {
28777                let this: &Identity =
28778                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28779                IMimeSecurity_Impl::EncodeMessage(
28780                    this,
28781                    core::mem::transmute_copy(&ptree),
28782                    core::mem::transmute_copy(&dwflags),
28783                )
28784                .into()
28785            }
28786        }
28787        unsafe extern "system" fn EncodeBody<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28788            this: *mut core::ffi::c_void,
28789            ptree: *mut core::ffi::c_void,
28790            hencoderoot: *mut HBODY__,
28791            dwflags: u32,
28792        ) -> windows_core::HRESULT {
28793            unsafe {
28794                let this: &Identity =
28795                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28796                IMimeSecurity_Impl::EncodeBody(
28797                    this,
28798                    core::mem::transmute_copy(&ptree),
28799                    core::mem::transmute_copy(&hencoderoot),
28800                    core::mem::transmute_copy(&dwflags),
28801                )
28802                .into()
28803            }
28804        }
28805        unsafe extern "system" fn DecodeMessage<
28806            Identity: IMimeSecurity_Impl,
28807            const OFFSET: isize,
28808        >(
28809            this: *mut core::ffi::c_void,
28810            ptree: *mut core::ffi::c_void,
28811            dwflags: u32,
28812        ) -> windows_core::HRESULT {
28813            unsafe {
28814                let this: &Identity =
28815                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28816                IMimeSecurity_Impl::DecodeMessage(
28817                    this,
28818                    core::mem::transmute_copy(&ptree),
28819                    core::mem::transmute_copy(&dwflags),
28820                )
28821                .into()
28822            }
28823        }
28824        unsafe extern "system" fn DecodeBody<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28825            this: *mut core::ffi::c_void,
28826            ptree: *mut core::ffi::c_void,
28827            hdecoderoot: *mut HBODY__,
28828            dwflags: u32,
28829        ) -> windows_core::HRESULT {
28830            unsafe {
28831                let this: &Identity =
28832                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28833                IMimeSecurity_Impl::DecodeBody(
28834                    this,
28835                    core::mem::transmute_copy(&ptree),
28836                    core::mem::transmute_copy(&hdecoderoot),
28837                    core::mem::transmute_copy(&dwflags),
28838                )
28839                .into()
28840            }
28841        }
28842        unsafe extern "system" fn EnumCertificates<
28843            Identity: IMimeSecurity_Impl,
28844            const OFFSET: isize,
28845        >(
28846            this: *mut core::ffi::c_void,
28847            hc: *mut core::ffi::c_void,
28848            dwusage: u32,
28849            pprev: *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28850            ppcert: *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
28851        ) -> windows_core::HRESULT {
28852            unsafe {
28853                let this: &Identity =
28854                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28855                IMimeSecurity_Impl::EnumCertificates(
28856                    this,
28857                    core::mem::transmute_copy(&hc),
28858                    core::mem::transmute_copy(&dwusage),
28859                    core::mem::transmute_copy(&pprev),
28860                    core::mem::transmute_copy(&ppcert),
28861                )
28862                .into()
28863            }
28864        }
28865        unsafe extern "system" fn GetCertificateName<
28866            Identity: IMimeSecurity_Impl,
28867            const OFFSET: isize,
28868        >(
28869            this: *mut core::ffi::c_void,
28870            px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28871            cn: CERTNAMETYPE,
28872            ppszname: *mut windows_core::PSTR,
28873        ) -> windows_core::HRESULT {
28874            unsafe {
28875                let this: &Identity =
28876                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28877                IMimeSecurity_Impl::GetCertificateName(
28878                    this,
28879                    core::mem::transmute_copy(&px509cert),
28880                    core::mem::transmute_copy(&cn),
28881                    core::mem::transmute_copy(&ppszname),
28882                )
28883                .into()
28884            }
28885        }
28886        unsafe extern "system" fn GetMessageType<
28887            Identity: IMimeSecurity_Impl,
28888            const OFFSET: isize,
28889        >(
28890            this: *mut core::ffi::c_void,
28891            hwndparent: windows::Win32::Foundation::HWND,
28892            pbody: *mut core::ffi::c_void,
28893            pdwsectype: *mut u32,
28894        ) -> windows_core::HRESULT {
28895            unsafe {
28896                let this: &Identity =
28897                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28898                IMimeSecurity_Impl::GetMessageType(
28899                    this,
28900                    core::mem::transmute_copy(&hwndparent),
28901                    core::mem::transmute_copy(&pbody),
28902                    core::mem::transmute_copy(&pdwsectype),
28903                )
28904                .into()
28905            }
28906        }
28907        unsafe extern "system" fn GetCertData<Identity: IMimeSecurity_Impl, const OFFSET: isize>(
28908            this: *mut core::ffi::c_void,
28909            px509cert: *const windows::Win32::Security::Cryptography::CERT_CONTEXT,
28910            dataid: CERTDATAID,
28911            pvalue: *mut windows::Win32::System::Com::StructuredStorage::PROPVARIANT,
28912        ) -> windows_core::HRESULT {
28913            unsafe {
28914                let this: &Identity =
28915                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
28916                IMimeSecurity_Impl::GetCertData(
28917                    this,
28918                    core::mem::transmute_copy(&px509cert),
28919                    core::mem::transmute_copy(&dataid),
28920                    core::mem::transmute_copy(&pvalue),
28921                )
28922                .into()
28923            }
28924        }
28925        Self {
28926            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
28927            InitNew: InitNew::<Identity, OFFSET>,
28928            CheckInit: CheckInit::<Identity, OFFSET>,
28929            EncodeMessage: EncodeMessage::<Identity, OFFSET>,
28930            EncodeBody: EncodeBody::<Identity, OFFSET>,
28931            DecodeMessage: DecodeMessage::<Identity, OFFSET>,
28932            DecodeBody: DecodeBody::<Identity, OFFSET>,
28933            EnumCertificates: EnumCertificates::<Identity, OFFSET>,
28934            GetCertificateName: GetCertificateName::<Identity, OFFSET>,
28935            GetMessageType: GetMessageType::<Identity, OFFSET>,
28936            GetCertData: GetCertData::<Identity, OFFSET>,
28937        }
28938    }
28939    pub fn matches(iid: &windows_core::GUID) -> bool {
28940        iid == &<IMimeSecurity as windows_core::Interface>::IID
28941    }
28942}
28943impl windows_core::RuntimeName for IMimeSecurity {}
28944windows_core::imp::define_interface!(
28945    IMimeWebDocument,
28946    IMimeWebDocument_Vtbl,
28947    0xee519f11_851a_11d0_825c_00c04fd85ab4
28948);
28949windows_core::imp::interface_hierarchy!(IMimeWebDocument, windows_core::IUnknown);
28950impl IMimeWebDocument {
28951    pub unsafe fn GetURL(&self, ppszurl: *mut windows_core::PSTR) -> windows_core::Result<()> {
28952        unsafe {
28953            (windows_core::Interface::vtable(self).GetURL)(
28954                windows_core::Interface::as_raw(self),
28955                ppszurl as _,
28956            )
28957            .ok()
28958        }
28959    }
28960    pub unsafe fn BindToStorage(
28961        &self,
28962        riid: *const windows_core::GUID,
28963        ppvobject: *mut *mut core::ffi::c_void,
28964    ) -> windows_core::Result<()> {
28965        unsafe {
28966            (windows_core::Interface::vtable(self).BindToStorage)(
28967                windows_core::Interface::as_raw(self),
28968                riid,
28969                ppvobject as _,
28970            )
28971            .ok()
28972        }
28973    }
28974}
28975#[repr(C)]
28976#[doc(hidden)]
28977pub struct IMimeWebDocument_Vtbl {
28978    pub base__: windows_core::IUnknown_Vtbl,
28979    pub GetURL: unsafe extern "system" fn(
28980        *mut core::ffi::c_void,
28981        *mut windows_core::PSTR,
28982    ) -> windows_core::HRESULT,
28983    pub BindToStorage: unsafe extern "system" fn(
28984        *mut core::ffi::c_void,
28985        *const windows_core::GUID,
28986        *mut *mut core::ffi::c_void,
28987    ) -> windows_core::HRESULT,
28988}
28989pub trait IMimeWebDocument_Impl: windows_core::IUnknownImpl {
28990    fn GetURL(&self, ppszurl: *mut windows_core::PSTR) -> windows_core::Result<()>;
28991    fn BindToStorage(
28992        &self,
28993        riid: *const windows_core::GUID,
28994        ppvobject: *mut *mut core::ffi::c_void,
28995    ) -> windows_core::Result<()>;
28996}
28997impl IMimeWebDocument_Vtbl {
28998    pub const fn new<Identity: IMimeWebDocument_Impl, const OFFSET: isize>() -> Self {
28999        unsafe extern "system" fn GetURL<Identity: IMimeWebDocument_Impl, const OFFSET: isize>(
29000            this: *mut core::ffi::c_void,
29001            ppszurl: *mut windows_core::PSTR,
29002        ) -> windows_core::HRESULT {
29003            unsafe {
29004                let this: &Identity =
29005                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29006                IMimeWebDocument_Impl::GetURL(this, core::mem::transmute_copy(&ppszurl)).into()
29007            }
29008        }
29009        unsafe extern "system" fn BindToStorage<
29010            Identity: IMimeWebDocument_Impl,
29011            const OFFSET: isize,
29012        >(
29013            this: *mut core::ffi::c_void,
29014            riid: *const windows_core::GUID,
29015            ppvobject: *mut *mut core::ffi::c_void,
29016        ) -> windows_core::HRESULT {
29017            unsafe {
29018                let this: &Identity =
29019                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29020                IMimeWebDocument_Impl::BindToStorage(
29021                    this,
29022                    core::mem::transmute_copy(&riid),
29023                    core::mem::transmute_copy(&ppvobject),
29024                )
29025                .into()
29026            }
29027        }
29028        Self {
29029            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29030            GetURL: GetURL::<Identity, OFFSET>,
29031            BindToStorage: BindToStorage::<Identity, OFFSET>,
29032        }
29033    }
29034    pub fn matches(iid: &windows_core::GUID) -> bool {
29035        iid == &<IMimeWebDocument as windows_core::Interface>::IID
29036    }
29037}
29038impl windows_core::RuntimeName for IMimeWebDocument {}
29039windows_core::imp::define_interface!(
29040    IMsgServiceAdmin,
29041    IMsgServiceAdmin_Vtbl,
29042    0x0002031d_0000_0000_c000_000000000046
29043);
29044windows_core::imp::interface_hierarchy!(IMsgServiceAdmin, windows_core::IUnknown);
29045impl IMsgServiceAdmin {
29046    pub unsafe fn GetLastError(
29047        &self,
29048        hresult: windows_core::HRESULT,
29049        ulflags: u32,
29050        lppmapierror: *mut *mut MAPIERROR,
29051    ) -> windows_core::Result<()> {
29052        unsafe {
29053            (windows_core::Interface::vtable(self).GetLastError)(
29054                windows_core::Interface::as_raw(self),
29055                hresult,
29056                ulflags,
29057                lppmapierror as _,
29058            )
29059            .ok()
29060        }
29061    }
29062    pub unsafe fn GetMsgServiceTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
29063        unsafe {
29064            let mut result__ = core::mem::zeroed();
29065            (windows_core::Interface::vtable(self).GetMsgServiceTable)(
29066                windows_core::Interface::as_raw(self),
29067                ulflags,
29068                &mut result__,
29069            )
29070            .and_then(|| windows_core::Type::from_abi(result__))
29071        }
29072    }
29073    pub unsafe fn CreateMsgService(
29074        &self,
29075        lpszservice: *mut i8,
29076        lpszdisplayname: *mut i8,
29077        uluiparam: usize,
29078        ulflags: u32,
29079    ) -> windows_core::Result<()> {
29080        unsafe {
29081            (windows_core::Interface::vtable(self).CreateMsgService)(
29082                windows_core::Interface::as_raw(self),
29083                lpszservice as _,
29084                lpszdisplayname as _,
29085                uluiparam,
29086                ulflags,
29087            )
29088            .ok()
29089        }
29090    }
29091    pub unsafe fn DeleteMsgService(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()> {
29092        unsafe {
29093            (windows_core::Interface::vtable(self).DeleteMsgService)(
29094                windows_core::Interface::as_raw(self),
29095                lpuid as _,
29096            )
29097            .ok()
29098        }
29099    }
29100    pub unsafe fn CopyMsgService(
29101        &self,
29102        lpuid: *mut MAPIUID,
29103        lpszdisplayname: *mut i8,
29104        lpinterfacetocopy: *mut windows_core::GUID,
29105        lpinterfacedst: *mut windows_core::GUID,
29106        lpobjectdst: *mut core::ffi::c_void,
29107        uluiparam: usize,
29108        ulflags: u32,
29109    ) -> windows_core::Result<()> {
29110        unsafe {
29111            (windows_core::Interface::vtable(self).CopyMsgService)(
29112                windows_core::Interface::as_raw(self),
29113                lpuid as _,
29114                lpszdisplayname as _,
29115                lpinterfacetocopy as _,
29116                lpinterfacedst as _,
29117                lpobjectdst as _,
29118                uluiparam,
29119                ulflags,
29120            )
29121            .ok()
29122        }
29123    }
29124    pub unsafe fn RenameMsgService(
29125        &self,
29126        lpuid: *mut MAPIUID,
29127        ulflags: u32,
29128        lpszdisplayname: *mut i8,
29129    ) -> windows_core::Result<()> {
29130        unsafe {
29131            (windows_core::Interface::vtable(self).RenameMsgService)(
29132                windows_core::Interface::as_raw(self),
29133                lpuid as _,
29134                ulflags,
29135                lpszdisplayname as _,
29136            )
29137            .ok()
29138        }
29139    }
29140    pub unsafe fn ConfigureMsgService(
29141        &self,
29142        lpuid: *mut MAPIUID,
29143        uluiparam: usize,
29144        ulflags: u32,
29145        cvalues: u32,
29146        lpprops: *mut SPropValue,
29147    ) -> windows_core::Result<()> {
29148        unsafe {
29149            (windows_core::Interface::vtable(self).ConfigureMsgService)(
29150                windows_core::Interface::as_raw(self),
29151                lpuid as _,
29152                uluiparam,
29153                ulflags,
29154                cvalues,
29155                lpprops as _,
29156            )
29157            .ok()
29158        }
29159    }
29160    pub unsafe fn OpenProfileSection(
29161        &self,
29162        lpuid: *mut MAPIUID,
29163        lpinterface: *mut windows_core::GUID,
29164        ulflags: u32,
29165        lppprofsect: *mut Option<IProfSect>,
29166    ) -> windows_core::Result<()> {
29167        unsafe {
29168            (windows_core::Interface::vtable(self).OpenProfileSection)(
29169                windows_core::Interface::as_raw(self),
29170                lpuid as _,
29171                lpinterface as _,
29172                ulflags,
29173                core::mem::transmute(lppprofsect),
29174            )
29175            .ok()
29176        }
29177    }
29178    pub unsafe fn MsgServiceTransportOrder(
29179        &self,
29180        cuid: u32,
29181        lpuidlist: *mut MAPIUID,
29182        ulflags: u32,
29183    ) -> windows_core::Result<()> {
29184        unsafe {
29185            (windows_core::Interface::vtable(self).MsgServiceTransportOrder)(
29186                windows_core::Interface::as_raw(self),
29187                cuid,
29188                lpuidlist as _,
29189                ulflags,
29190            )
29191            .ok()
29192        }
29193    }
29194    pub unsafe fn AdminProviders(
29195        &self,
29196        lpuid: *mut MAPIUID,
29197        ulflags: u32,
29198        lppprovideradmin: *mut Option<IProviderAdmin>,
29199    ) -> windows_core::Result<()> {
29200        unsafe {
29201            (windows_core::Interface::vtable(self).AdminProviders)(
29202                windows_core::Interface::as_raw(self),
29203                lpuid as _,
29204                ulflags,
29205                core::mem::transmute(lppprovideradmin),
29206            )
29207            .ok()
29208        }
29209    }
29210    pub unsafe fn SetPrimaryIdentity(
29211        &self,
29212        lpuid: *mut MAPIUID,
29213        ulflags: u32,
29214    ) -> windows_core::Result<()> {
29215        unsafe {
29216            (windows_core::Interface::vtable(self).SetPrimaryIdentity)(
29217                windows_core::Interface::as_raw(self),
29218                lpuid as _,
29219                ulflags,
29220            )
29221            .ok()
29222        }
29223    }
29224    pub unsafe fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
29225        unsafe {
29226            let mut result__ = core::mem::zeroed();
29227            (windows_core::Interface::vtable(self).GetProviderTable)(
29228                windows_core::Interface::as_raw(self),
29229                ulflags,
29230                &mut result__,
29231            )
29232            .and_then(|| windows_core::Type::from_abi(result__))
29233        }
29234    }
29235}
29236#[repr(C)]
29237#[doc(hidden)]
29238pub struct IMsgServiceAdmin_Vtbl {
29239    pub base__: windows_core::IUnknown_Vtbl,
29240    pub GetLastError: unsafe extern "system" fn(
29241        *mut core::ffi::c_void,
29242        windows_core::HRESULT,
29243        u32,
29244        *mut *mut MAPIERROR,
29245    ) -> windows_core::HRESULT,
29246    pub GetMsgServiceTable: unsafe extern "system" fn(
29247        *mut core::ffi::c_void,
29248        u32,
29249        *mut *mut core::ffi::c_void,
29250    ) -> windows_core::HRESULT,
29251    pub CreateMsgService: unsafe extern "system" fn(
29252        *mut core::ffi::c_void,
29253        *mut i8,
29254        *mut i8,
29255        usize,
29256        u32,
29257    ) -> windows_core::HRESULT,
29258    pub DeleteMsgService:
29259        unsafe extern "system" fn(*mut core::ffi::c_void, *mut MAPIUID) -> windows_core::HRESULT,
29260    pub CopyMsgService: unsafe extern "system" fn(
29261        *mut core::ffi::c_void,
29262        *mut MAPIUID,
29263        *mut i8,
29264        *mut windows_core::GUID,
29265        *mut windows_core::GUID,
29266        *mut core::ffi::c_void,
29267        usize,
29268        u32,
29269    ) -> windows_core::HRESULT,
29270    pub RenameMsgService: unsafe extern "system" fn(
29271        *mut core::ffi::c_void,
29272        *mut MAPIUID,
29273        u32,
29274        *mut i8,
29275    ) -> windows_core::HRESULT,
29276    pub ConfigureMsgService: unsafe extern "system" fn(
29277        *mut core::ffi::c_void,
29278        *mut MAPIUID,
29279        usize,
29280        u32,
29281        u32,
29282        *mut SPropValue,
29283    ) -> windows_core::HRESULT,
29284    pub OpenProfileSection: unsafe extern "system" fn(
29285        *mut core::ffi::c_void,
29286        *mut MAPIUID,
29287        *mut windows_core::GUID,
29288        u32,
29289        *mut *mut core::ffi::c_void,
29290    ) -> windows_core::HRESULT,
29291    pub MsgServiceTransportOrder: unsafe extern "system" fn(
29292        *mut core::ffi::c_void,
29293        u32,
29294        *mut MAPIUID,
29295        u32,
29296    ) -> windows_core::HRESULT,
29297    pub AdminProviders: unsafe extern "system" fn(
29298        *mut core::ffi::c_void,
29299        *mut MAPIUID,
29300        u32,
29301        *mut *mut core::ffi::c_void,
29302    ) -> windows_core::HRESULT,
29303    pub SetPrimaryIdentity: unsafe extern "system" fn(
29304        *mut core::ffi::c_void,
29305        *mut MAPIUID,
29306        u32,
29307    ) -> windows_core::HRESULT,
29308    pub GetProviderTable: unsafe extern "system" fn(
29309        *mut core::ffi::c_void,
29310        u32,
29311        *mut *mut core::ffi::c_void,
29312    ) -> windows_core::HRESULT,
29313}
29314pub trait IMsgServiceAdmin_Impl: windows_core::IUnknownImpl {
29315    fn GetLastError(
29316        &self,
29317        hresult: windows_core::HRESULT,
29318        ulflags: u32,
29319        lppmapierror: *mut *mut MAPIERROR,
29320    ) -> windows_core::Result<()>;
29321    fn GetMsgServiceTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
29322    fn CreateMsgService(
29323        &self,
29324        lpszservice: *mut i8,
29325        lpszdisplayname: *mut i8,
29326        uluiparam: usize,
29327        ulflags: u32,
29328    ) -> windows_core::Result<()>;
29329    fn DeleteMsgService(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()>;
29330    fn CopyMsgService(
29331        &self,
29332        lpuid: *mut MAPIUID,
29333        lpszdisplayname: *mut i8,
29334        lpinterfacetocopy: *mut windows_core::GUID,
29335        lpinterfacedst: *mut windows_core::GUID,
29336        lpobjectdst: *mut core::ffi::c_void,
29337        uluiparam: usize,
29338        ulflags: u32,
29339    ) -> windows_core::Result<()>;
29340    fn RenameMsgService(
29341        &self,
29342        lpuid: *mut MAPIUID,
29343        ulflags: u32,
29344        lpszdisplayname: *mut i8,
29345    ) -> windows_core::Result<()>;
29346    fn ConfigureMsgService(
29347        &self,
29348        lpuid: *mut MAPIUID,
29349        uluiparam: usize,
29350        ulflags: u32,
29351        cvalues: u32,
29352        lpprops: *mut SPropValue,
29353    ) -> windows_core::Result<()>;
29354    fn OpenProfileSection(
29355        &self,
29356        lpuid: *mut MAPIUID,
29357        lpinterface: *mut windows_core::GUID,
29358        ulflags: u32,
29359        lppprofsect: windows_core::OutRef<IProfSect>,
29360    ) -> windows_core::Result<()>;
29361    fn MsgServiceTransportOrder(
29362        &self,
29363        cuid: u32,
29364        lpuidlist: *mut MAPIUID,
29365        ulflags: u32,
29366    ) -> windows_core::Result<()>;
29367    fn AdminProviders(
29368        &self,
29369        lpuid: *mut MAPIUID,
29370        ulflags: u32,
29371        lppprovideradmin: windows_core::OutRef<IProviderAdmin>,
29372    ) -> windows_core::Result<()>;
29373    fn SetPrimaryIdentity(&self, lpuid: *mut MAPIUID, ulflags: u32) -> windows_core::Result<()>;
29374    fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
29375}
29376impl IMsgServiceAdmin_Vtbl {
29377    pub const fn new<Identity: IMsgServiceAdmin_Impl, const OFFSET: isize>() -> Self {
29378        unsafe extern "system" fn GetLastError<
29379            Identity: IMsgServiceAdmin_Impl,
29380            const OFFSET: isize,
29381        >(
29382            this: *mut core::ffi::c_void,
29383            hresult: windows_core::HRESULT,
29384            ulflags: u32,
29385            lppmapierror: *mut *mut MAPIERROR,
29386        ) -> windows_core::HRESULT {
29387            unsafe {
29388                let this: &Identity =
29389                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29390                IMsgServiceAdmin_Impl::GetLastError(
29391                    this,
29392                    core::mem::transmute_copy(&hresult),
29393                    core::mem::transmute_copy(&ulflags),
29394                    core::mem::transmute_copy(&lppmapierror),
29395                )
29396                .into()
29397            }
29398        }
29399        unsafe extern "system" fn GetMsgServiceTable<
29400            Identity: IMsgServiceAdmin_Impl,
29401            const OFFSET: isize,
29402        >(
29403            this: *mut core::ffi::c_void,
29404            ulflags: u32,
29405            lpptable: *mut *mut core::ffi::c_void,
29406        ) -> windows_core::HRESULT {
29407            unsafe {
29408                let this: &Identity =
29409                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29410                match IMsgServiceAdmin_Impl::GetMsgServiceTable(
29411                    this,
29412                    core::mem::transmute_copy(&ulflags),
29413                ) {
29414                    Ok(ok__) => {
29415                        lpptable.write(core::mem::transmute(ok__));
29416                        windows_core::HRESULT(0)
29417                    }
29418                    Err(err) => err.into(),
29419                }
29420            }
29421        }
29422        unsafe extern "system" fn CreateMsgService<
29423            Identity: IMsgServiceAdmin_Impl,
29424            const OFFSET: isize,
29425        >(
29426            this: *mut core::ffi::c_void,
29427            lpszservice: *mut i8,
29428            lpszdisplayname: *mut i8,
29429            uluiparam: usize,
29430            ulflags: u32,
29431        ) -> windows_core::HRESULT {
29432            unsafe {
29433                let this: &Identity =
29434                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29435                IMsgServiceAdmin_Impl::CreateMsgService(
29436                    this,
29437                    core::mem::transmute_copy(&lpszservice),
29438                    core::mem::transmute_copy(&lpszdisplayname),
29439                    core::mem::transmute_copy(&uluiparam),
29440                    core::mem::transmute_copy(&ulflags),
29441                )
29442                .into()
29443            }
29444        }
29445        unsafe extern "system" fn DeleteMsgService<
29446            Identity: IMsgServiceAdmin_Impl,
29447            const OFFSET: isize,
29448        >(
29449            this: *mut core::ffi::c_void,
29450            lpuid: *mut MAPIUID,
29451        ) -> windows_core::HRESULT {
29452            unsafe {
29453                let this: &Identity =
29454                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29455                IMsgServiceAdmin_Impl::DeleteMsgService(this, core::mem::transmute_copy(&lpuid))
29456                    .into()
29457            }
29458        }
29459        unsafe extern "system" fn CopyMsgService<
29460            Identity: IMsgServiceAdmin_Impl,
29461            const OFFSET: isize,
29462        >(
29463            this: *mut core::ffi::c_void,
29464            lpuid: *mut MAPIUID,
29465            lpszdisplayname: *mut i8,
29466            lpinterfacetocopy: *mut windows_core::GUID,
29467            lpinterfacedst: *mut windows_core::GUID,
29468            lpobjectdst: *mut core::ffi::c_void,
29469            uluiparam: usize,
29470            ulflags: u32,
29471        ) -> windows_core::HRESULT {
29472            unsafe {
29473                let this: &Identity =
29474                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29475                IMsgServiceAdmin_Impl::CopyMsgService(
29476                    this,
29477                    core::mem::transmute_copy(&lpuid),
29478                    core::mem::transmute_copy(&lpszdisplayname),
29479                    core::mem::transmute_copy(&lpinterfacetocopy),
29480                    core::mem::transmute_copy(&lpinterfacedst),
29481                    core::mem::transmute_copy(&lpobjectdst),
29482                    core::mem::transmute_copy(&uluiparam),
29483                    core::mem::transmute_copy(&ulflags),
29484                )
29485                .into()
29486            }
29487        }
29488        unsafe extern "system" fn RenameMsgService<
29489            Identity: IMsgServiceAdmin_Impl,
29490            const OFFSET: isize,
29491        >(
29492            this: *mut core::ffi::c_void,
29493            lpuid: *mut MAPIUID,
29494            ulflags: u32,
29495            lpszdisplayname: *mut i8,
29496        ) -> windows_core::HRESULT {
29497            unsafe {
29498                let this: &Identity =
29499                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29500                IMsgServiceAdmin_Impl::RenameMsgService(
29501                    this,
29502                    core::mem::transmute_copy(&lpuid),
29503                    core::mem::transmute_copy(&ulflags),
29504                    core::mem::transmute_copy(&lpszdisplayname),
29505                )
29506                .into()
29507            }
29508        }
29509        unsafe extern "system" fn ConfigureMsgService<
29510            Identity: IMsgServiceAdmin_Impl,
29511            const OFFSET: isize,
29512        >(
29513            this: *mut core::ffi::c_void,
29514            lpuid: *mut MAPIUID,
29515            uluiparam: usize,
29516            ulflags: u32,
29517            cvalues: u32,
29518            lpprops: *mut SPropValue,
29519        ) -> windows_core::HRESULT {
29520            unsafe {
29521                let this: &Identity =
29522                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29523                IMsgServiceAdmin_Impl::ConfigureMsgService(
29524                    this,
29525                    core::mem::transmute_copy(&lpuid),
29526                    core::mem::transmute_copy(&uluiparam),
29527                    core::mem::transmute_copy(&ulflags),
29528                    core::mem::transmute_copy(&cvalues),
29529                    core::mem::transmute_copy(&lpprops),
29530                )
29531                .into()
29532            }
29533        }
29534        unsafe extern "system" fn OpenProfileSection<
29535            Identity: IMsgServiceAdmin_Impl,
29536            const OFFSET: isize,
29537        >(
29538            this: *mut core::ffi::c_void,
29539            lpuid: *mut MAPIUID,
29540            lpinterface: *mut windows_core::GUID,
29541            ulflags: u32,
29542            lppprofsect: *mut *mut core::ffi::c_void,
29543        ) -> windows_core::HRESULT {
29544            unsafe {
29545                let this: &Identity =
29546                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29547                IMsgServiceAdmin_Impl::OpenProfileSection(
29548                    this,
29549                    core::mem::transmute_copy(&lpuid),
29550                    core::mem::transmute_copy(&lpinterface),
29551                    core::mem::transmute_copy(&ulflags),
29552                    core::mem::transmute_copy(&lppprofsect),
29553                )
29554                .into()
29555            }
29556        }
29557        unsafe extern "system" fn MsgServiceTransportOrder<
29558            Identity: IMsgServiceAdmin_Impl,
29559            const OFFSET: isize,
29560        >(
29561            this: *mut core::ffi::c_void,
29562            cuid: u32,
29563            lpuidlist: *mut MAPIUID,
29564            ulflags: u32,
29565        ) -> windows_core::HRESULT {
29566            unsafe {
29567                let this: &Identity =
29568                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29569                IMsgServiceAdmin_Impl::MsgServiceTransportOrder(
29570                    this,
29571                    core::mem::transmute_copy(&cuid),
29572                    core::mem::transmute_copy(&lpuidlist),
29573                    core::mem::transmute_copy(&ulflags),
29574                )
29575                .into()
29576            }
29577        }
29578        unsafe extern "system" fn AdminProviders<
29579            Identity: IMsgServiceAdmin_Impl,
29580            const OFFSET: isize,
29581        >(
29582            this: *mut core::ffi::c_void,
29583            lpuid: *mut MAPIUID,
29584            ulflags: u32,
29585            lppprovideradmin: *mut *mut core::ffi::c_void,
29586        ) -> windows_core::HRESULT {
29587            unsafe {
29588                let this: &Identity =
29589                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29590                IMsgServiceAdmin_Impl::AdminProviders(
29591                    this,
29592                    core::mem::transmute_copy(&lpuid),
29593                    core::mem::transmute_copy(&ulflags),
29594                    core::mem::transmute_copy(&lppprovideradmin),
29595                )
29596                .into()
29597            }
29598        }
29599        unsafe extern "system" fn SetPrimaryIdentity<
29600            Identity: IMsgServiceAdmin_Impl,
29601            const OFFSET: isize,
29602        >(
29603            this: *mut core::ffi::c_void,
29604            lpuid: *mut MAPIUID,
29605            ulflags: u32,
29606        ) -> windows_core::HRESULT {
29607            unsafe {
29608                let this: &Identity =
29609                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29610                IMsgServiceAdmin_Impl::SetPrimaryIdentity(
29611                    this,
29612                    core::mem::transmute_copy(&lpuid),
29613                    core::mem::transmute_copy(&ulflags),
29614                )
29615                .into()
29616            }
29617        }
29618        unsafe extern "system" fn GetProviderTable<
29619            Identity: IMsgServiceAdmin_Impl,
29620            const OFFSET: isize,
29621        >(
29622            this: *mut core::ffi::c_void,
29623            ulflags: u32,
29624            lpptable: *mut *mut core::ffi::c_void,
29625        ) -> windows_core::HRESULT {
29626            unsafe {
29627                let this: &Identity =
29628                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
29629                match IMsgServiceAdmin_Impl::GetProviderTable(
29630                    this,
29631                    core::mem::transmute_copy(&ulflags),
29632                ) {
29633                    Ok(ok__) => {
29634                        lpptable.write(core::mem::transmute(ok__));
29635                        windows_core::HRESULT(0)
29636                    }
29637                    Err(err) => err.into(),
29638                }
29639            }
29640        }
29641        Self {
29642            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
29643            GetLastError: GetLastError::<Identity, OFFSET>,
29644            GetMsgServiceTable: GetMsgServiceTable::<Identity, OFFSET>,
29645            CreateMsgService: CreateMsgService::<Identity, OFFSET>,
29646            DeleteMsgService: DeleteMsgService::<Identity, OFFSET>,
29647            CopyMsgService: CopyMsgService::<Identity, OFFSET>,
29648            RenameMsgService: RenameMsgService::<Identity, OFFSET>,
29649            ConfigureMsgService: ConfigureMsgService::<Identity, OFFSET>,
29650            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
29651            MsgServiceTransportOrder: MsgServiceTransportOrder::<Identity, OFFSET>,
29652            AdminProviders: AdminProviders::<Identity, OFFSET>,
29653            SetPrimaryIdentity: SetPrimaryIdentity::<Identity, OFFSET>,
29654            GetProviderTable: GetProviderTable::<Identity, OFFSET>,
29655        }
29656    }
29657    pub fn matches(iid: &windows_core::GUID) -> bool {
29658        iid == &<IMsgServiceAdmin as windows_core::Interface>::IID
29659    }
29660}
29661impl windows_core::RuntimeName for IMsgServiceAdmin {}
29662windows_core::imp::define_interface!(
29663    IMsgServiceAdmin2,
29664    IMsgServiceAdmin2_Vtbl,
29665    0x00020387_0000_0000_c000_000000000046
29666);
29667windows_core::imp::interface_hierarchy!(IMsgServiceAdmin2, windows_core::IUnknown);
29668impl IMsgServiceAdmin2 {
29669    pub unsafe fn GetLastError(
29670        &self,
29671        hresult: windows_core::HRESULT,
29672        ulflags: u32,
29673        lppmapierror: *mut *mut MAPIERROR,
29674    ) -> windows_core::Result<()> {
29675        unsafe {
29676            (windows_core::Interface::vtable(self).GetLastError)(
29677                windows_core::Interface::as_raw(self),
29678                hresult,
29679                ulflags,
29680                lppmapierror as _,
29681            )
29682            .ok()
29683        }
29684    }
29685    pub unsafe fn GetMsgServiceTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
29686        unsafe {
29687            let mut result__ = core::mem::zeroed();
29688            (windows_core::Interface::vtable(self).GetMsgServiceTable)(
29689                windows_core::Interface::as_raw(self),
29690                ulflags,
29691                &mut result__,
29692            )
29693            .and_then(|| windows_core::Type::from_abi(result__))
29694        }
29695    }
29696    pub unsafe fn CreateMsgService(
29697        &self,
29698        lpszservice: *mut i8,
29699        lpszdisplayname: *mut i8,
29700        uluiparam: usize,
29701        ulflags: u32,
29702    ) -> windows_core::Result<()> {
29703        unsafe {
29704            (windows_core::Interface::vtable(self).CreateMsgService)(
29705                windows_core::Interface::as_raw(self),
29706                lpszservice as _,
29707                lpszdisplayname as _,
29708                uluiparam,
29709                ulflags,
29710            )
29711            .ok()
29712        }
29713    }
29714    pub unsafe fn DeleteMsgService(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()> {
29715        unsafe {
29716            (windows_core::Interface::vtable(self).DeleteMsgService)(
29717                windows_core::Interface::as_raw(self),
29718                lpuid as _,
29719            )
29720            .ok()
29721        }
29722    }
29723    pub unsafe fn CopyMsgService(
29724        &self,
29725        lpuid: *mut MAPIUID,
29726        lpszdisplayname: *mut i8,
29727        lpinterfacetocopy: *mut windows_core::GUID,
29728        lpinterfacedst: *mut windows_core::GUID,
29729        lpobjectdst: *mut core::ffi::c_void,
29730        uluiparam: usize,
29731        ulflags: u32,
29732    ) -> windows_core::Result<()> {
29733        unsafe {
29734            (windows_core::Interface::vtable(self).CopyMsgService)(
29735                windows_core::Interface::as_raw(self),
29736                lpuid as _,
29737                lpszdisplayname as _,
29738                lpinterfacetocopy as _,
29739                lpinterfacedst as _,
29740                lpobjectdst as _,
29741                uluiparam,
29742                ulflags,
29743            )
29744            .ok()
29745        }
29746    }
29747    pub unsafe fn RenameMsgService(
29748        &self,
29749        lpuid: *mut MAPIUID,
29750        ulflags: u32,
29751        lpszdisplayname: *mut i8,
29752    ) -> windows_core::Result<()> {
29753        unsafe {
29754            (windows_core::Interface::vtable(self).RenameMsgService)(
29755                windows_core::Interface::as_raw(self),
29756                lpuid as _,
29757                ulflags,
29758                lpszdisplayname as _,
29759            )
29760            .ok()
29761        }
29762    }
29763    pub unsafe fn ConfigureMsgService(
29764        &self,
29765        lpuid: *mut MAPIUID,
29766        uluiparam: usize,
29767        ulflags: u32,
29768        cvalues: u32,
29769        lpprops: *mut SPropValue,
29770    ) -> windows_core::Result<()> {
29771        unsafe {
29772            (windows_core::Interface::vtable(self).ConfigureMsgService)(
29773                windows_core::Interface::as_raw(self),
29774                lpuid as _,
29775                uluiparam,
29776                ulflags,
29777                cvalues,
29778                lpprops as _,
29779            )
29780            .ok()
29781        }
29782    }
29783    pub unsafe fn OpenProfileSection(
29784        &self,
29785        lpuid: *mut MAPIUID,
29786        lpinterface: *mut windows_core::GUID,
29787        ulflags: u32,
29788        lppprofsect: *mut Option<IProfSect>,
29789    ) -> windows_core::Result<()> {
29790        unsafe {
29791            (windows_core::Interface::vtable(self).OpenProfileSection)(
29792                windows_core::Interface::as_raw(self),
29793                lpuid as _,
29794                lpinterface as _,
29795                ulflags,
29796                core::mem::transmute(lppprofsect),
29797            )
29798            .ok()
29799        }
29800    }
29801    pub unsafe fn MsgServiceTransportOrder(
29802        &self,
29803        cuid: u32,
29804        lpuidlist: *mut MAPIUID,
29805        ulflags: u32,
29806    ) -> windows_core::Result<()> {
29807        unsafe {
29808            (windows_core::Interface::vtable(self).MsgServiceTransportOrder)(
29809                windows_core::Interface::as_raw(self),
29810                cuid,
29811                lpuidlist as _,
29812                ulflags,
29813            )
29814            .ok()
29815        }
29816    }
29817    pub unsafe fn AdminProviders(
29818        &self,
29819        lpuid: *mut MAPIUID,
29820        ulflags: u32,
29821        lppprovideradmin: *mut Option<IProviderAdmin>,
29822    ) -> windows_core::Result<()> {
29823        unsafe {
29824            (windows_core::Interface::vtable(self).AdminProviders)(
29825                windows_core::Interface::as_raw(self),
29826                lpuid as _,
29827                ulflags,
29828                core::mem::transmute(lppprovideradmin),
29829            )
29830            .ok()
29831        }
29832    }
29833    pub unsafe fn SetPrimaryIdentity(
29834        &self,
29835        lpuid: *mut MAPIUID,
29836        ulflags: u32,
29837    ) -> windows_core::Result<()> {
29838        unsafe {
29839            (windows_core::Interface::vtable(self).SetPrimaryIdentity)(
29840                windows_core::Interface::as_raw(self),
29841                lpuid as _,
29842                ulflags,
29843            )
29844            .ok()
29845        }
29846    }
29847    pub unsafe fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
29848        unsafe {
29849            let mut result__ = core::mem::zeroed();
29850            (windows_core::Interface::vtable(self).GetProviderTable)(
29851                windows_core::Interface::as_raw(self),
29852                ulflags,
29853                &mut result__,
29854            )
29855            .and_then(|| windows_core::Type::from_abi(result__))
29856        }
29857    }
29858    pub unsafe fn CreateMsgServiceEx(
29859        &self,
29860        lpszservice: *mut i8,
29861        lpszdisplayname: *mut i8,
29862        uluiparam: usize,
29863        ulflags: u32,
29864        lpuidservice: *mut MAPIUID,
29865    ) -> windows_core::Result<()> {
29866        unsafe {
29867            (windows_core::Interface::vtable(self).CreateMsgServiceEx)(
29868                windows_core::Interface::as_raw(self),
29869                lpszservice as _,
29870                lpszdisplayname as _,
29871                uluiparam,
29872                ulflags,
29873                lpuidservice as _,
29874            )
29875            .ok()
29876        }
29877    }
29878}
29879#[repr(C)]
29880#[doc(hidden)]
29881pub struct IMsgServiceAdmin2_Vtbl {
29882    pub base__: windows_core::IUnknown_Vtbl,
29883    pub GetLastError: unsafe extern "system" fn(
29884        *mut core::ffi::c_void,
29885        windows_core::HRESULT,
29886        u32,
29887        *mut *mut MAPIERROR,
29888    ) -> windows_core::HRESULT,
29889    pub GetMsgServiceTable: unsafe extern "system" fn(
29890        *mut core::ffi::c_void,
29891        u32,
29892        *mut *mut core::ffi::c_void,
29893    ) -> windows_core::HRESULT,
29894    pub CreateMsgService: unsafe extern "system" fn(
29895        *mut core::ffi::c_void,
29896        *mut i8,
29897        *mut i8,
29898        usize,
29899        u32,
29900    ) -> windows_core::HRESULT,
29901    pub DeleteMsgService:
29902        unsafe extern "system" fn(*mut core::ffi::c_void, *mut MAPIUID) -> windows_core::HRESULT,
29903    pub CopyMsgService: unsafe extern "system" fn(
29904        *mut core::ffi::c_void,
29905        *mut MAPIUID,
29906        *mut i8,
29907        *mut windows_core::GUID,
29908        *mut windows_core::GUID,
29909        *mut core::ffi::c_void,
29910        usize,
29911        u32,
29912    ) -> windows_core::HRESULT,
29913    pub RenameMsgService: unsafe extern "system" fn(
29914        *mut core::ffi::c_void,
29915        *mut MAPIUID,
29916        u32,
29917        *mut i8,
29918    ) -> windows_core::HRESULT,
29919    pub ConfigureMsgService: unsafe extern "system" fn(
29920        *mut core::ffi::c_void,
29921        *mut MAPIUID,
29922        usize,
29923        u32,
29924        u32,
29925        *mut SPropValue,
29926    ) -> windows_core::HRESULT,
29927    pub OpenProfileSection: unsafe extern "system" fn(
29928        *mut core::ffi::c_void,
29929        *mut MAPIUID,
29930        *mut windows_core::GUID,
29931        u32,
29932        *mut *mut core::ffi::c_void,
29933    ) -> windows_core::HRESULT,
29934    pub MsgServiceTransportOrder: unsafe extern "system" fn(
29935        *mut core::ffi::c_void,
29936        u32,
29937        *mut MAPIUID,
29938        u32,
29939    ) -> windows_core::HRESULT,
29940    pub AdminProviders: unsafe extern "system" fn(
29941        *mut core::ffi::c_void,
29942        *mut MAPIUID,
29943        u32,
29944        *mut *mut core::ffi::c_void,
29945    ) -> windows_core::HRESULT,
29946    pub SetPrimaryIdentity: unsafe extern "system" fn(
29947        *mut core::ffi::c_void,
29948        *mut MAPIUID,
29949        u32,
29950    ) -> windows_core::HRESULT,
29951    pub GetProviderTable: unsafe extern "system" fn(
29952        *mut core::ffi::c_void,
29953        u32,
29954        *mut *mut core::ffi::c_void,
29955    ) -> windows_core::HRESULT,
29956    pub CreateMsgServiceEx: unsafe extern "system" fn(
29957        *mut core::ffi::c_void,
29958        *mut i8,
29959        *mut i8,
29960        usize,
29961        u32,
29962        *mut MAPIUID,
29963    ) -> windows_core::HRESULT,
29964}
29965pub trait IMsgServiceAdmin2_Impl: windows_core::IUnknownImpl {
29966    fn GetLastError(
29967        &self,
29968        hresult: windows_core::HRESULT,
29969        ulflags: u32,
29970        lppmapierror: *mut *mut MAPIERROR,
29971    ) -> windows_core::Result<()>;
29972    fn GetMsgServiceTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
29973    fn CreateMsgService(
29974        &self,
29975        lpszservice: *mut i8,
29976        lpszdisplayname: *mut i8,
29977        uluiparam: usize,
29978        ulflags: u32,
29979    ) -> windows_core::Result<()>;
29980    fn DeleteMsgService(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()>;
29981    fn CopyMsgService(
29982        &self,
29983        lpuid: *mut MAPIUID,
29984        lpszdisplayname: *mut i8,
29985        lpinterfacetocopy: *mut windows_core::GUID,
29986        lpinterfacedst: *mut windows_core::GUID,
29987        lpobjectdst: *mut core::ffi::c_void,
29988        uluiparam: usize,
29989        ulflags: u32,
29990    ) -> windows_core::Result<()>;
29991    fn RenameMsgService(
29992        &self,
29993        lpuid: *mut MAPIUID,
29994        ulflags: u32,
29995        lpszdisplayname: *mut i8,
29996    ) -> windows_core::Result<()>;
29997    fn ConfigureMsgService(
29998        &self,
29999        lpuid: *mut MAPIUID,
30000        uluiparam: usize,
30001        ulflags: u32,
30002        cvalues: u32,
30003        lpprops: *mut SPropValue,
30004    ) -> windows_core::Result<()>;
30005    fn OpenProfileSection(
30006        &self,
30007        lpuid: *mut MAPIUID,
30008        lpinterface: *mut windows_core::GUID,
30009        ulflags: u32,
30010        lppprofsect: windows_core::OutRef<IProfSect>,
30011    ) -> windows_core::Result<()>;
30012    fn MsgServiceTransportOrder(
30013        &self,
30014        cuid: u32,
30015        lpuidlist: *mut MAPIUID,
30016        ulflags: u32,
30017    ) -> windows_core::Result<()>;
30018    fn AdminProviders(
30019        &self,
30020        lpuid: *mut MAPIUID,
30021        ulflags: u32,
30022        lppprovideradmin: windows_core::OutRef<IProviderAdmin>,
30023    ) -> windows_core::Result<()>;
30024    fn SetPrimaryIdentity(&self, lpuid: *mut MAPIUID, ulflags: u32) -> windows_core::Result<()>;
30025    fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
30026    fn CreateMsgServiceEx(
30027        &self,
30028        lpszservice: *mut i8,
30029        lpszdisplayname: *mut i8,
30030        uluiparam: usize,
30031        ulflags: u32,
30032        lpuidservice: *mut MAPIUID,
30033    ) -> windows_core::Result<()>;
30034}
30035impl IMsgServiceAdmin2_Vtbl {
30036    pub const fn new<Identity: IMsgServiceAdmin2_Impl, const OFFSET: isize>() -> Self {
30037        unsafe extern "system" fn GetLastError<
30038            Identity: IMsgServiceAdmin2_Impl,
30039            const OFFSET: isize,
30040        >(
30041            this: *mut core::ffi::c_void,
30042            hresult: windows_core::HRESULT,
30043            ulflags: u32,
30044            lppmapierror: *mut *mut MAPIERROR,
30045        ) -> windows_core::HRESULT {
30046            unsafe {
30047                let this: &Identity =
30048                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30049                IMsgServiceAdmin2_Impl::GetLastError(
30050                    this,
30051                    core::mem::transmute_copy(&hresult),
30052                    core::mem::transmute_copy(&ulflags),
30053                    core::mem::transmute_copy(&lppmapierror),
30054                )
30055                .into()
30056            }
30057        }
30058        unsafe extern "system" fn GetMsgServiceTable<
30059            Identity: IMsgServiceAdmin2_Impl,
30060            const OFFSET: isize,
30061        >(
30062            this: *mut core::ffi::c_void,
30063            ulflags: u32,
30064            lpptable: *mut *mut core::ffi::c_void,
30065        ) -> windows_core::HRESULT {
30066            unsafe {
30067                let this: &Identity =
30068                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30069                match IMsgServiceAdmin2_Impl::GetMsgServiceTable(
30070                    this,
30071                    core::mem::transmute_copy(&ulflags),
30072                ) {
30073                    Ok(ok__) => {
30074                        lpptable.write(core::mem::transmute(ok__));
30075                        windows_core::HRESULT(0)
30076                    }
30077                    Err(err) => err.into(),
30078                }
30079            }
30080        }
30081        unsafe extern "system" fn CreateMsgService<
30082            Identity: IMsgServiceAdmin2_Impl,
30083            const OFFSET: isize,
30084        >(
30085            this: *mut core::ffi::c_void,
30086            lpszservice: *mut i8,
30087            lpszdisplayname: *mut i8,
30088            uluiparam: usize,
30089            ulflags: u32,
30090        ) -> windows_core::HRESULT {
30091            unsafe {
30092                let this: &Identity =
30093                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30094                IMsgServiceAdmin2_Impl::CreateMsgService(
30095                    this,
30096                    core::mem::transmute_copy(&lpszservice),
30097                    core::mem::transmute_copy(&lpszdisplayname),
30098                    core::mem::transmute_copy(&uluiparam),
30099                    core::mem::transmute_copy(&ulflags),
30100                )
30101                .into()
30102            }
30103        }
30104        unsafe extern "system" fn DeleteMsgService<
30105            Identity: IMsgServiceAdmin2_Impl,
30106            const OFFSET: isize,
30107        >(
30108            this: *mut core::ffi::c_void,
30109            lpuid: *mut MAPIUID,
30110        ) -> windows_core::HRESULT {
30111            unsafe {
30112                let this: &Identity =
30113                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30114                IMsgServiceAdmin2_Impl::DeleteMsgService(this, core::mem::transmute_copy(&lpuid))
30115                    .into()
30116            }
30117        }
30118        unsafe extern "system" fn CopyMsgService<
30119            Identity: IMsgServiceAdmin2_Impl,
30120            const OFFSET: isize,
30121        >(
30122            this: *mut core::ffi::c_void,
30123            lpuid: *mut MAPIUID,
30124            lpszdisplayname: *mut i8,
30125            lpinterfacetocopy: *mut windows_core::GUID,
30126            lpinterfacedst: *mut windows_core::GUID,
30127            lpobjectdst: *mut core::ffi::c_void,
30128            uluiparam: usize,
30129            ulflags: u32,
30130        ) -> windows_core::HRESULT {
30131            unsafe {
30132                let this: &Identity =
30133                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30134                IMsgServiceAdmin2_Impl::CopyMsgService(
30135                    this,
30136                    core::mem::transmute_copy(&lpuid),
30137                    core::mem::transmute_copy(&lpszdisplayname),
30138                    core::mem::transmute_copy(&lpinterfacetocopy),
30139                    core::mem::transmute_copy(&lpinterfacedst),
30140                    core::mem::transmute_copy(&lpobjectdst),
30141                    core::mem::transmute_copy(&uluiparam),
30142                    core::mem::transmute_copy(&ulflags),
30143                )
30144                .into()
30145            }
30146        }
30147        unsafe extern "system" fn RenameMsgService<
30148            Identity: IMsgServiceAdmin2_Impl,
30149            const OFFSET: isize,
30150        >(
30151            this: *mut core::ffi::c_void,
30152            lpuid: *mut MAPIUID,
30153            ulflags: u32,
30154            lpszdisplayname: *mut i8,
30155        ) -> windows_core::HRESULT {
30156            unsafe {
30157                let this: &Identity =
30158                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30159                IMsgServiceAdmin2_Impl::RenameMsgService(
30160                    this,
30161                    core::mem::transmute_copy(&lpuid),
30162                    core::mem::transmute_copy(&ulflags),
30163                    core::mem::transmute_copy(&lpszdisplayname),
30164                )
30165                .into()
30166            }
30167        }
30168        unsafe extern "system" fn ConfigureMsgService<
30169            Identity: IMsgServiceAdmin2_Impl,
30170            const OFFSET: isize,
30171        >(
30172            this: *mut core::ffi::c_void,
30173            lpuid: *mut MAPIUID,
30174            uluiparam: usize,
30175            ulflags: u32,
30176            cvalues: u32,
30177            lpprops: *mut SPropValue,
30178        ) -> windows_core::HRESULT {
30179            unsafe {
30180                let this: &Identity =
30181                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30182                IMsgServiceAdmin2_Impl::ConfigureMsgService(
30183                    this,
30184                    core::mem::transmute_copy(&lpuid),
30185                    core::mem::transmute_copy(&uluiparam),
30186                    core::mem::transmute_copy(&ulflags),
30187                    core::mem::transmute_copy(&cvalues),
30188                    core::mem::transmute_copy(&lpprops),
30189                )
30190                .into()
30191            }
30192        }
30193        unsafe extern "system" fn OpenProfileSection<
30194            Identity: IMsgServiceAdmin2_Impl,
30195            const OFFSET: isize,
30196        >(
30197            this: *mut core::ffi::c_void,
30198            lpuid: *mut MAPIUID,
30199            lpinterface: *mut windows_core::GUID,
30200            ulflags: u32,
30201            lppprofsect: *mut *mut core::ffi::c_void,
30202        ) -> windows_core::HRESULT {
30203            unsafe {
30204                let this: &Identity =
30205                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30206                IMsgServiceAdmin2_Impl::OpenProfileSection(
30207                    this,
30208                    core::mem::transmute_copy(&lpuid),
30209                    core::mem::transmute_copy(&lpinterface),
30210                    core::mem::transmute_copy(&ulflags),
30211                    core::mem::transmute_copy(&lppprofsect),
30212                )
30213                .into()
30214            }
30215        }
30216        unsafe extern "system" fn MsgServiceTransportOrder<
30217            Identity: IMsgServiceAdmin2_Impl,
30218            const OFFSET: isize,
30219        >(
30220            this: *mut core::ffi::c_void,
30221            cuid: u32,
30222            lpuidlist: *mut MAPIUID,
30223            ulflags: u32,
30224        ) -> windows_core::HRESULT {
30225            unsafe {
30226                let this: &Identity =
30227                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30228                IMsgServiceAdmin2_Impl::MsgServiceTransportOrder(
30229                    this,
30230                    core::mem::transmute_copy(&cuid),
30231                    core::mem::transmute_copy(&lpuidlist),
30232                    core::mem::transmute_copy(&ulflags),
30233                )
30234                .into()
30235            }
30236        }
30237        unsafe extern "system" fn AdminProviders<
30238            Identity: IMsgServiceAdmin2_Impl,
30239            const OFFSET: isize,
30240        >(
30241            this: *mut core::ffi::c_void,
30242            lpuid: *mut MAPIUID,
30243            ulflags: u32,
30244            lppprovideradmin: *mut *mut core::ffi::c_void,
30245        ) -> windows_core::HRESULT {
30246            unsafe {
30247                let this: &Identity =
30248                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30249                IMsgServiceAdmin2_Impl::AdminProviders(
30250                    this,
30251                    core::mem::transmute_copy(&lpuid),
30252                    core::mem::transmute_copy(&ulflags),
30253                    core::mem::transmute_copy(&lppprovideradmin),
30254                )
30255                .into()
30256            }
30257        }
30258        unsafe extern "system" fn SetPrimaryIdentity<
30259            Identity: IMsgServiceAdmin2_Impl,
30260            const OFFSET: isize,
30261        >(
30262            this: *mut core::ffi::c_void,
30263            lpuid: *mut MAPIUID,
30264            ulflags: u32,
30265        ) -> windows_core::HRESULT {
30266            unsafe {
30267                let this: &Identity =
30268                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30269                IMsgServiceAdmin2_Impl::SetPrimaryIdentity(
30270                    this,
30271                    core::mem::transmute_copy(&lpuid),
30272                    core::mem::transmute_copy(&ulflags),
30273                )
30274                .into()
30275            }
30276        }
30277        unsafe extern "system" fn GetProviderTable<
30278            Identity: IMsgServiceAdmin2_Impl,
30279            const OFFSET: isize,
30280        >(
30281            this: *mut core::ffi::c_void,
30282            ulflags: u32,
30283            lpptable: *mut *mut core::ffi::c_void,
30284        ) -> windows_core::HRESULT {
30285            unsafe {
30286                let this: &Identity =
30287                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30288                match IMsgServiceAdmin2_Impl::GetProviderTable(
30289                    this,
30290                    core::mem::transmute_copy(&ulflags),
30291                ) {
30292                    Ok(ok__) => {
30293                        lpptable.write(core::mem::transmute(ok__));
30294                        windows_core::HRESULT(0)
30295                    }
30296                    Err(err) => err.into(),
30297                }
30298            }
30299        }
30300        unsafe extern "system" fn CreateMsgServiceEx<
30301            Identity: IMsgServiceAdmin2_Impl,
30302            const OFFSET: isize,
30303        >(
30304            this: *mut core::ffi::c_void,
30305            lpszservice: *mut i8,
30306            lpszdisplayname: *mut i8,
30307            uluiparam: usize,
30308            ulflags: u32,
30309            lpuidservice: *mut MAPIUID,
30310        ) -> windows_core::HRESULT {
30311            unsafe {
30312                let this: &Identity =
30313                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30314                IMsgServiceAdmin2_Impl::CreateMsgServiceEx(
30315                    this,
30316                    core::mem::transmute_copy(&lpszservice),
30317                    core::mem::transmute_copy(&lpszdisplayname),
30318                    core::mem::transmute_copy(&uluiparam),
30319                    core::mem::transmute_copy(&ulflags),
30320                    core::mem::transmute_copy(&lpuidservice),
30321                )
30322                .into()
30323            }
30324        }
30325        Self {
30326            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
30327            GetLastError: GetLastError::<Identity, OFFSET>,
30328            GetMsgServiceTable: GetMsgServiceTable::<Identity, OFFSET>,
30329            CreateMsgService: CreateMsgService::<Identity, OFFSET>,
30330            DeleteMsgService: DeleteMsgService::<Identity, OFFSET>,
30331            CopyMsgService: CopyMsgService::<Identity, OFFSET>,
30332            RenameMsgService: RenameMsgService::<Identity, OFFSET>,
30333            ConfigureMsgService: ConfigureMsgService::<Identity, OFFSET>,
30334            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
30335            MsgServiceTransportOrder: MsgServiceTransportOrder::<Identity, OFFSET>,
30336            AdminProviders: AdminProviders::<Identity, OFFSET>,
30337            SetPrimaryIdentity: SetPrimaryIdentity::<Identity, OFFSET>,
30338            GetProviderTable: GetProviderTable::<Identity, OFFSET>,
30339            CreateMsgServiceEx: CreateMsgServiceEx::<Identity, OFFSET>,
30340        }
30341    }
30342    pub fn matches(iid: &windows_core::GUID) -> bool {
30343        iid == &<IMsgServiceAdmin2 as windows_core::Interface>::IID
30344    }
30345}
30346impl windows_core::RuntimeName for IMsgServiceAdmin2 {}
30347windows_core::imp::define_interface!(
30348    IMsgStore,
30349    IMsgStore_Vtbl,
30350    0x00020306_0000_0000_c000_000000000046
30351);
30352impl core::ops::Deref for IMsgStore {
30353    type Target = IMAPIProp;
30354    fn deref(&self) -> &Self::Target {
30355        unsafe { core::mem::transmute(self) }
30356    }
30357}
30358windows_core::imp::interface_hierarchy!(IMsgStore, windows_core::IUnknown, IMAPIProp);
30359impl IMsgStore {
30360    pub unsafe fn Advise<P3>(
30361        &self,
30362        cbentryid: u32,
30363        lpentryid: *mut ENTRYID,
30364        uleventmask: u32,
30365        lpadvisesink: P3,
30366        lpulconnection: *mut usize,
30367    ) -> windows_core::Result<()>
30368    where
30369        P3: windows_core::Param<IMAPIAdviseSink>,
30370    {
30371        unsafe {
30372            (windows_core::Interface::vtable(self).Advise)(
30373                windows_core::Interface::as_raw(self),
30374                cbentryid,
30375                lpentryid as _,
30376                uleventmask,
30377                lpadvisesink.param().abi(),
30378                lpulconnection as _,
30379            )
30380            .ok()
30381        }
30382    }
30383    pub unsafe fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()> {
30384        unsafe {
30385            (windows_core::Interface::vtable(self).Unadvise)(
30386                windows_core::Interface::as_raw(self),
30387                ulconnection,
30388            )
30389            .ok()
30390        }
30391    }
30392    pub unsafe fn CompareEntryIDs(
30393        &self,
30394        cbentryid1: u32,
30395        lpentryid1: *mut ENTRYID,
30396        cbentryid2: u32,
30397        lpentryid2: *mut ENTRYID,
30398        ulflags: u32,
30399        lpulresult: *mut u32,
30400    ) -> windows_core::Result<()> {
30401        unsafe {
30402            (windows_core::Interface::vtable(self).CompareEntryIDs)(
30403                windows_core::Interface::as_raw(self),
30404                cbentryid1,
30405                lpentryid1 as _,
30406                cbentryid2,
30407                lpentryid2 as _,
30408                ulflags,
30409                lpulresult as _,
30410            )
30411            .ok()
30412        }
30413    }
30414    pub unsafe fn OpenEntry(
30415        &self,
30416        cbentryid: u32,
30417        lpentryid: *mut ENTRYID,
30418        lpinterface: *mut windows_core::GUID,
30419        ulflags: u32,
30420        lpulobjtype: *mut u32,
30421        lppunk: *mut Option<windows_core::IUnknown>,
30422    ) -> windows_core::Result<()> {
30423        unsafe {
30424            (windows_core::Interface::vtable(self).OpenEntry)(
30425                windows_core::Interface::as_raw(self),
30426                cbentryid,
30427                lpentryid as _,
30428                lpinterface as _,
30429                ulflags,
30430                lpulobjtype as _,
30431                core::mem::transmute(lppunk),
30432            )
30433            .ok()
30434        }
30435    }
30436    pub unsafe fn SetReceiveFolder(
30437        &self,
30438        lpszmessageclass: *mut i8,
30439        ulflags: u32,
30440        cbentryid: u32,
30441        lpentryid: *mut ENTRYID,
30442    ) -> windows_core::Result<()> {
30443        unsafe {
30444            (windows_core::Interface::vtable(self).SetReceiveFolder)(
30445                windows_core::Interface::as_raw(self),
30446                lpszmessageclass as _,
30447                ulflags,
30448                cbentryid,
30449                lpentryid as _,
30450            )
30451            .ok()
30452        }
30453    }
30454    pub unsafe fn GetReceiveFolder(
30455        &self,
30456        lpszmessageclass: *mut i8,
30457        ulflags: u32,
30458        lpcbentryid: *mut u32,
30459        lppentryid: *mut *mut ENTRYID,
30460        lppszexplicitclass: *mut *mut i8,
30461    ) -> windows_core::Result<()> {
30462        unsafe {
30463            (windows_core::Interface::vtable(self).GetReceiveFolder)(
30464                windows_core::Interface::as_raw(self),
30465                lpszmessageclass as _,
30466                ulflags,
30467                lpcbentryid as _,
30468                lppentryid as _,
30469                lppszexplicitclass as _,
30470            )
30471            .ok()
30472        }
30473    }
30474    pub unsafe fn GetReceiveFolderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
30475        unsafe {
30476            let mut result__ = core::mem::zeroed();
30477            (windows_core::Interface::vtable(self).GetReceiveFolderTable)(
30478                windows_core::Interface::as_raw(self),
30479                ulflags,
30480                &mut result__,
30481            )
30482            .and_then(|| windows_core::Type::from_abi(result__))
30483        }
30484    }
30485    pub unsafe fn StoreLogoff(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
30486        unsafe {
30487            (windows_core::Interface::vtable(self).StoreLogoff)(
30488                windows_core::Interface::as_raw(self),
30489                lpulflags as _,
30490            )
30491            .ok()
30492        }
30493    }
30494    pub unsafe fn AbortSubmit(
30495        &self,
30496        cbentryid: u32,
30497        lpentryid: *mut ENTRYID,
30498        ulflags: u32,
30499    ) -> windows_core::Result<()> {
30500        unsafe {
30501            (windows_core::Interface::vtable(self).AbortSubmit)(
30502                windows_core::Interface::as_raw(self),
30503                cbentryid,
30504                lpentryid as _,
30505                ulflags,
30506            )
30507            .ok()
30508        }
30509    }
30510    pub unsafe fn GetOutgoingQueue(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
30511        unsafe {
30512            let mut result__ = core::mem::zeroed();
30513            (windows_core::Interface::vtable(self).GetOutgoingQueue)(
30514                windows_core::Interface::as_raw(self),
30515                ulflags,
30516                &mut result__,
30517            )
30518            .and_then(|| windows_core::Type::from_abi(result__))
30519        }
30520    }
30521    pub unsafe fn SetLockState<P0>(
30522        &self,
30523        lpmessage: P0,
30524        ullockstate: u32,
30525    ) -> windows_core::Result<()>
30526    where
30527        P0: windows_core::Param<IMessage>,
30528    {
30529        unsafe {
30530            (windows_core::Interface::vtable(self).SetLockState)(
30531                windows_core::Interface::as_raw(self),
30532                lpmessage.param().abi(),
30533                ullockstate,
30534            )
30535            .ok()
30536        }
30537    }
30538    pub unsafe fn FinishedMsg(
30539        &self,
30540        ulflags: u32,
30541        cbentryid: u32,
30542        lpentryid: *mut ENTRYID,
30543    ) -> windows_core::Result<()> {
30544        unsafe {
30545            (windows_core::Interface::vtable(self).FinishedMsg)(
30546                windows_core::Interface::as_raw(self),
30547                ulflags,
30548                cbentryid,
30549                lpentryid as _,
30550            )
30551            .ok()
30552        }
30553    }
30554    pub unsafe fn NotifyNewMail(
30555        &self,
30556        lpnotification: *mut NOTIFICATION,
30557    ) -> windows_core::Result<()> {
30558        unsafe {
30559            (windows_core::Interface::vtable(self).NotifyNewMail)(
30560                windows_core::Interface::as_raw(self),
30561                lpnotification as _,
30562            )
30563            .ok()
30564        }
30565    }
30566}
30567#[repr(C)]
30568#[doc(hidden)]
30569pub struct IMsgStore_Vtbl {
30570    pub base__: IMAPIProp_Vtbl,
30571    pub Advise: unsafe extern "system" fn(
30572        *mut core::ffi::c_void,
30573        u32,
30574        *mut ENTRYID,
30575        u32,
30576        *mut core::ffi::c_void,
30577        *mut usize,
30578    ) -> windows_core::HRESULT,
30579    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
30580    pub CompareEntryIDs: unsafe extern "system" fn(
30581        *mut core::ffi::c_void,
30582        u32,
30583        *mut ENTRYID,
30584        u32,
30585        *mut ENTRYID,
30586        u32,
30587        *mut u32,
30588    ) -> windows_core::HRESULT,
30589    pub OpenEntry: unsafe extern "system" fn(
30590        *mut core::ffi::c_void,
30591        u32,
30592        *mut ENTRYID,
30593        *mut windows_core::GUID,
30594        u32,
30595        *mut u32,
30596        *mut *mut core::ffi::c_void,
30597    ) -> windows_core::HRESULT,
30598    pub SetReceiveFolder: unsafe extern "system" fn(
30599        *mut core::ffi::c_void,
30600        *mut i8,
30601        u32,
30602        u32,
30603        *mut ENTRYID,
30604    ) -> windows_core::HRESULT,
30605    pub GetReceiveFolder: unsafe extern "system" fn(
30606        *mut core::ffi::c_void,
30607        *mut i8,
30608        u32,
30609        *mut u32,
30610        *mut *mut ENTRYID,
30611        *mut *mut i8,
30612    ) -> windows_core::HRESULT,
30613    pub GetReceiveFolderTable: unsafe extern "system" fn(
30614        *mut core::ffi::c_void,
30615        u32,
30616        *mut *mut core::ffi::c_void,
30617    ) -> windows_core::HRESULT,
30618    pub StoreLogoff:
30619        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
30620    pub AbortSubmit: unsafe extern "system" fn(
30621        *mut core::ffi::c_void,
30622        u32,
30623        *mut ENTRYID,
30624        u32,
30625    ) -> windows_core::HRESULT,
30626    pub GetOutgoingQueue: unsafe extern "system" fn(
30627        *mut core::ffi::c_void,
30628        u32,
30629        *mut *mut core::ffi::c_void,
30630    ) -> windows_core::HRESULT,
30631    pub SetLockState: unsafe extern "system" fn(
30632        *mut core::ffi::c_void,
30633        *mut core::ffi::c_void,
30634        u32,
30635    ) -> windows_core::HRESULT,
30636    pub FinishedMsg: unsafe extern "system" fn(
30637        *mut core::ffi::c_void,
30638        u32,
30639        u32,
30640        *mut ENTRYID,
30641    ) -> windows_core::HRESULT,
30642    pub NotifyNewMail: unsafe extern "system" fn(
30643        *mut core::ffi::c_void,
30644        *mut NOTIFICATION,
30645    ) -> windows_core::HRESULT,
30646}
30647pub trait IMsgStore_Impl: IMAPIProp_Impl {
30648    fn Advise(
30649        &self,
30650        cbentryid: u32,
30651        lpentryid: *mut ENTRYID,
30652        uleventmask: u32,
30653        lpadvisesink: windows_core::Ref<IMAPIAdviseSink>,
30654        lpulconnection: *mut usize,
30655    ) -> windows_core::Result<()>;
30656    fn Unadvise(&self, ulconnection: usize) -> windows_core::Result<()>;
30657    fn CompareEntryIDs(
30658        &self,
30659        cbentryid1: u32,
30660        lpentryid1: *mut ENTRYID,
30661        cbentryid2: u32,
30662        lpentryid2: *mut ENTRYID,
30663        ulflags: u32,
30664        lpulresult: *mut u32,
30665    ) -> windows_core::Result<()>;
30666    fn OpenEntry(
30667        &self,
30668        cbentryid: u32,
30669        lpentryid: *mut ENTRYID,
30670        lpinterface: *mut windows_core::GUID,
30671        ulflags: u32,
30672        lpulobjtype: *mut u32,
30673        lppunk: windows_core::OutRef<windows_core::IUnknown>,
30674    ) -> windows_core::Result<()>;
30675    fn SetReceiveFolder(
30676        &self,
30677        lpszmessageclass: *mut i8,
30678        ulflags: u32,
30679        cbentryid: u32,
30680        lpentryid: *mut ENTRYID,
30681    ) -> windows_core::Result<()>;
30682    fn GetReceiveFolder(
30683        &self,
30684        lpszmessageclass: *mut i8,
30685        ulflags: u32,
30686        lpcbentryid: *mut u32,
30687        lppentryid: *mut *mut ENTRYID,
30688        lppszexplicitclass: *mut *mut i8,
30689    ) -> windows_core::Result<()>;
30690    fn GetReceiveFolderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
30691    fn StoreLogoff(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
30692    fn AbortSubmit(
30693        &self,
30694        cbentryid: u32,
30695        lpentryid: *mut ENTRYID,
30696        ulflags: u32,
30697    ) -> windows_core::Result<()>;
30698    fn GetOutgoingQueue(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
30699    fn SetLockState(
30700        &self,
30701        lpmessage: windows_core::Ref<IMessage>,
30702        ullockstate: u32,
30703    ) -> windows_core::Result<()>;
30704    fn FinishedMsg(
30705        &self,
30706        ulflags: u32,
30707        cbentryid: u32,
30708        lpentryid: *mut ENTRYID,
30709    ) -> windows_core::Result<()>;
30710    fn NotifyNewMail(&self, lpnotification: *mut NOTIFICATION) -> windows_core::Result<()>;
30711}
30712impl IMsgStore_Vtbl {
30713    pub const fn new<Identity: IMsgStore_Impl, const OFFSET: isize>() -> Self {
30714        unsafe extern "system" fn Advise<Identity: IMsgStore_Impl, const OFFSET: isize>(
30715            this: *mut core::ffi::c_void,
30716            cbentryid: u32,
30717            lpentryid: *mut ENTRYID,
30718            uleventmask: u32,
30719            lpadvisesink: *mut core::ffi::c_void,
30720            lpulconnection: *mut usize,
30721        ) -> windows_core::HRESULT {
30722            unsafe {
30723                let this: &Identity =
30724                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30725                IMsgStore_Impl::Advise(
30726                    this,
30727                    core::mem::transmute_copy(&cbentryid),
30728                    core::mem::transmute_copy(&lpentryid),
30729                    core::mem::transmute_copy(&uleventmask),
30730                    core::mem::transmute_copy(&lpadvisesink),
30731                    core::mem::transmute_copy(&lpulconnection),
30732                )
30733                .into()
30734            }
30735        }
30736        unsafe extern "system" fn Unadvise<Identity: IMsgStore_Impl, const OFFSET: isize>(
30737            this: *mut core::ffi::c_void,
30738            ulconnection: usize,
30739        ) -> windows_core::HRESULT {
30740            unsafe {
30741                let this: &Identity =
30742                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30743                IMsgStore_Impl::Unadvise(this, core::mem::transmute_copy(&ulconnection)).into()
30744            }
30745        }
30746        unsafe extern "system" fn CompareEntryIDs<Identity: IMsgStore_Impl, const OFFSET: isize>(
30747            this: *mut core::ffi::c_void,
30748            cbentryid1: u32,
30749            lpentryid1: *mut ENTRYID,
30750            cbentryid2: u32,
30751            lpentryid2: *mut ENTRYID,
30752            ulflags: u32,
30753            lpulresult: *mut u32,
30754        ) -> windows_core::HRESULT {
30755            unsafe {
30756                let this: &Identity =
30757                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30758                IMsgStore_Impl::CompareEntryIDs(
30759                    this,
30760                    core::mem::transmute_copy(&cbentryid1),
30761                    core::mem::transmute_copy(&lpentryid1),
30762                    core::mem::transmute_copy(&cbentryid2),
30763                    core::mem::transmute_copy(&lpentryid2),
30764                    core::mem::transmute_copy(&ulflags),
30765                    core::mem::transmute_copy(&lpulresult),
30766                )
30767                .into()
30768            }
30769        }
30770        unsafe extern "system" fn OpenEntry<Identity: IMsgStore_Impl, const OFFSET: isize>(
30771            this: *mut core::ffi::c_void,
30772            cbentryid: u32,
30773            lpentryid: *mut ENTRYID,
30774            lpinterface: *mut windows_core::GUID,
30775            ulflags: u32,
30776            lpulobjtype: *mut u32,
30777            lppunk: *mut *mut core::ffi::c_void,
30778        ) -> windows_core::HRESULT {
30779            unsafe {
30780                let this: &Identity =
30781                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30782                IMsgStore_Impl::OpenEntry(
30783                    this,
30784                    core::mem::transmute_copy(&cbentryid),
30785                    core::mem::transmute_copy(&lpentryid),
30786                    core::mem::transmute_copy(&lpinterface),
30787                    core::mem::transmute_copy(&ulflags),
30788                    core::mem::transmute_copy(&lpulobjtype),
30789                    core::mem::transmute_copy(&lppunk),
30790                )
30791                .into()
30792            }
30793        }
30794        unsafe extern "system" fn SetReceiveFolder<
30795            Identity: IMsgStore_Impl,
30796            const OFFSET: isize,
30797        >(
30798            this: *mut core::ffi::c_void,
30799            lpszmessageclass: *mut i8,
30800            ulflags: u32,
30801            cbentryid: u32,
30802            lpentryid: *mut ENTRYID,
30803        ) -> windows_core::HRESULT {
30804            unsafe {
30805                let this: &Identity =
30806                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30807                IMsgStore_Impl::SetReceiveFolder(
30808                    this,
30809                    core::mem::transmute_copy(&lpszmessageclass),
30810                    core::mem::transmute_copy(&ulflags),
30811                    core::mem::transmute_copy(&cbentryid),
30812                    core::mem::transmute_copy(&lpentryid),
30813                )
30814                .into()
30815            }
30816        }
30817        unsafe extern "system" fn GetReceiveFolder<
30818            Identity: IMsgStore_Impl,
30819            const OFFSET: isize,
30820        >(
30821            this: *mut core::ffi::c_void,
30822            lpszmessageclass: *mut i8,
30823            ulflags: u32,
30824            lpcbentryid: *mut u32,
30825            lppentryid: *mut *mut ENTRYID,
30826            lppszexplicitclass: *mut *mut i8,
30827        ) -> windows_core::HRESULT {
30828            unsafe {
30829                let this: &Identity =
30830                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30831                IMsgStore_Impl::GetReceiveFolder(
30832                    this,
30833                    core::mem::transmute_copy(&lpszmessageclass),
30834                    core::mem::transmute_copy(&ulflags),
30835                    core::mem::transmute_copy(&lpcbentryid),
30836                    core::mem::transmute_copy(&lppentryid),
30837                    core::mem::transmute_copy(&lppszexplicitclass),
30838                )
30839                .into()
30840            }
30841        }
30842        unsafe extern "system" fn GetReceiveFolderTable<
30843            Identity: IMsgStore_Impl,
30844            const OFFSET: isize,
30845        >(
30846            this: *mut core::ffi::c_void,
30847            ulflags: u32,
30848            lpptable: *mut *mut core::ffi::c_void,
30849        ) -> windows_core::HRESULT {
30850            unsafe {
30851                let this: &Identity =
30852                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30853                match IMsgStore_Impl::GetReceiveFolderTable(
30854                    this,
30855                    core::mem::transmute_copy(&ulflags),
30856                ) {
30857                    Ok(ok__) => {
30858                        lpptable.write(core::mem::transmute(ok__));
30859                        windows_core::HRESULT(0)
30860                    }
30861                    Err(err) => err.into(),
30862                }
30863            }
30864        }
30865        unsafe extern "system" fn StoreLogoff<Identity: IMsgStore_Impl, const OFFSET: isize>(
30866            this: *mut core::ffi::c_void,
30867            lpulflags: *mut u32,
30868        ) -> windows_core::HRESULT {
30869            unsafe {
30870                let this: &Identity =
30871                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30872                IMsgStore_Impl::StoreLogoff(this, core::mem::transmute_copy(&lpulflags)).into()
30873            }
30874        }
30875        unsafe extern "system" fn AbortSubmit<Identity: IMsgStore_Impl, const OFFSET: isize>(
30876            this: *mut core::ffi::c_void,
30877            cbentryid: u32,
30878            lpentryid: *mut ENTRYID,
30879            ulflags: u32,
30880        ) -> windows_core::HRESULT {
30881            unsafe {
30882                let this: &Identity =
30883                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30884                IMsgStore_Impl::AbortSubmit(
30885                    this,
30886                    core::mem::transmute_copy(&cbentryid),
30887                    core::mem::transmute_copy(&lpentryid),
30888                    core::mem::transmute_copy(&ulflags),
30889                )
30890                .into()
30891            }
30892        }
30893        unsafe extern "system" fn GetOutgoingQueue<
30894            Identity: IMsgStore_Impl,
30895            const OFFSET: isize,
30896        >(
30897            this: *mut core::ffi::c_void,
30898            ulflags: u32,
30899            lpptable: *mut *mut core::ffi::c_void,
30900        ) -> windows_core::HRESULT {
30901            unsafe {
30902                let this: &Identity =
30903                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30904                match IMsgStore_Impl::GetOutgoingQueue(this, core::mem::transmute_copy(&ulflags)) {
30905                    Ok(ok__) => {
30906                        lpptable.write(core::mem::transmute(ok__));
30907                        windows_core::HRESULT(0)
30908                    }
30909                    Err(err) => err.into(),
30910                }
30911            }
30912        }
30913        unsafe extern "system" fn SetLockState<Identity: IMsgStore_Impl, const OFFSET: isize>(
30914            this: *mut core::ffi::c_void,
30915            lpmessage: *mut core::ffi::c_void,
30916            ullockstate: u32,
30917        ) -> windows_core::HRESULT {
30918            unsafe {
30919                let this: &Identity =
30920                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30921                IMsgStore_Impl::SetLockState(
30922                    this,
30923                    core::mem::transmute_copy(&lpmessage),
30924                    core::mem::transmute_copy(&ullockstate),
30925                )
30926                .into()
30927            }
30928        }
30929        unsafe extern "system" fn FinishedMsg<Identity: IMsgStore_Impl, const OFFSET: isize>(
30930            this: *mut core::ffi::c_void,
30931            ulflags: u32,
30932            cbentryid: u32,
30933            lpentryid: *mut ENTRYID,
30934        ) -> windows_core::HRESULT {
30935            unsafe {
30936                let this: &Identity =
30937                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30938                IMsgStore_Impl::FinishedMsg(
30939                    this,
30940                    core::mem::transmute_copy(&ulflags),
30941                    core::mem::transmute_copy(&cbentryid),
30942                    core::mem::transmute_copy(&lpentryid),
30943                )
30944                .into()
30945            }
30946        }
30947        unsafe extern "system" fn NotifyNewMail<Identity: IMsgStore_Impl, const OFFSET: isize>(
30948            this: *mut core::ffi::c_void,
30949            lpnotification: *mut NOTIFICATION,
30950        ) -> windows_core::HRESULT {
30951            unsafe {
30952                let this: &Identity =
30953                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
30954                IMsgStore_Impl::NotifyNewMail(this, core::mem::transmute_copy(&lpnotification))
30955                    .into()
30956            }
30957        }
30958        Self {
30959            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
30960            Advise: Advise::<Identity, OFFSET>,
30961            Unadvise: Unadvise::<Identity, OFFSET>,
30962            CompareEntryIDs: CompareEntryIDs::<Identity, OFFSET>,
30963            OpenEntry: OpenEntry::<Identity, OFFSET>,
30964            SetReceiveFolder: SetReceiveFolder::<Identity, OFFSET>,
30965            GetReceiveFolder: GetReceiveFolder::<Identity, OFFSET>,
30966            GetReceiveFolderTable: GetReceiveFolderTable::<Identity, OFFSET>,
30967            StoreLogoff: StoreLogoff::<Identity, OFFSET>,
30968            AbortSubmit: AbortSubmit::<Identity, OFFSET>,
30969            GetOutgoingQueue: GetOutgoingQueue::<Identity, OFFSET>,
30970            SetLockState: SetLockState::<Identity, OFFSET>,
30971            FinishedMsg: FinishedMsg::<Identity, OFFSET>,
30972            NotifyNewMail: NotifyNewMail::<Identity, OFFSET>,
30973        }
30974    }
30975    pub fn matches(iid: &windows_core::GUID) -> bool {
30976        iid == &<IMsgStore as windows_core::Interface>::IID
30977            || iid == &<IMAPIProp as windows_core::Interface>::IID
30978    }
30979}
30980impl windows_core::RuntimeName for IMsgStore {}
30981pub const IMsgStore_AbortSubmit: METHODS = METHODS(69i32);
30982pub const IMsgStore_Advise: METHODS = METHODS(61i32);
30983pub const IMsgStore_CompareEntryIDs: METHODS = METHODS(63i32);
30984pub const IMsgStore_FinishedMsg: METHODS = METHODS(72i32);
30985pub const IMsgStore_GetOutgoingQueue: METHODS = METHODS(70i32);
30986pub const IMsgStore_GetReceiveFolder: METHODS = METHODS(66i32);
30987pub const IMsgStore_GetReceiveFolderTable: METHODS = METHODS(67i32);
30988pub const IMsgStore_NotifyNewMail: METHODS = METHODS(73i32);
30989pub const IMsgStore_OpenEntry: METHODS = METHODS(64i32);
30990pub const IMsgStore_SetLockState: METHODS = METHODS(71i32);
30991pub const IMsgStore_SetReceiveFolder: METHODS = METHODS(65i32);
30992pub const IMsgStore_StoreLogoff: METHODS = METHODS(68i32);
30993pub const IMsgStore_Unadvise: METHODS = METHODS(62i32);
30994#[repr(C)]
30995#[derive(Clone, Copy, Debug, PartialEq)]
30996pub struct INETCSETINFO {
30997    pub szName: [i8; 128],
30998    pub hCharset: *mut HCHARSET__,
30999    pub cpiWindows: u32,
31000    pub cpiInternet: u32,
31001    pub dwReserved1: u32,
31002}
31003impl Default for INETCSETINFO {
31004    fn default() -> Self {
31005        unsafe { core::mem::zeroed() }
31006    }
31007}
31008#[repr(transparent)]
31009#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
31010pub struct INETLANGMASK(pub i32);
31011#[repr(C)]
31012#[derive(Clone, Copy, Debug, PartialEq)]
31013pub struct INTTRACEENTRY {
31014    pub lAction: i32,
31015    pub ftArrivalTime: windows::Win32::Foundation::FILETIME,
31016    pub ftDeferredTime: windows::Win32::Foundation::FILETIME,
31017    pub rgchADMDName: [i8; 20],
31018    pub rgchCountryName: [i8; 4],
31019    pub rgchPRMDId: [i8; 20],
31020    pub rgchAttADMDName: [i8; 20],
31021    pub rgchAttCountryName: [i8; 4],
31022    pub rgchAttPRMDId: [i8; 20],
31023    pub rgchMTAName: [i8; 36],
31024    pub rgchAttMTAName: [i8; 35],
31025    pub bAdditionalActions: u8,
31026}
31027impl Default for INTTRACEENTRY {
31028    fn default() -> Self {
31029        unsafe { core::mem::zeroed() }
31030    }
31031}
31032#[repr(C)]
31033#[derive(Clone, Copy, Debug, PartialEq)]
31034pub struct INTTRACEINFO {
31035    pub cEntries: u32,
31036    pub rgIntTraceEntry: [INTTRACEENTRY; 1],
31037}
31038impl Default for INTTRACEINFO {
31039    fn default() -> Self {
31040        unsafe { core::mem::zeroed() }
31041    }
31042}
31043windows_core::imp::define_interface!(
31044    IOlkAccount,
31045    IOlkAccount_Vtbl,
31046    0x9240a6d2_af41_11d2_8c3b_00104b2a6676
31047);
31048impl core::ops::Deref for IOlkAccount {
31049    type Target = IOlkErrorUnknown;
31050    fn deref(&self) -> &Self::Target {
31051        unsafe { core::mem::transmute(self) }
31052    }
31053}
31054windows_core::imp::interface_hierarchy!(IOlkAccount, windows_core::IUnknown, IOlkErrorUnknown);
31055impl IOlkAccount {
31056    pub unsafe fn PlaceHolder1(&self) -> windows_core::Result<()> {
31057        unsafe {
31058            (windows_core::Interface::vtable(self).PlaceHolder1)(windows_core::Interface::as_raw(
31059                self,
31060            ))
31061            .ok()
31062        }
31063    }
31064    pub unsafe fn PlaceHolder2(&self) -> windows_core::Result<()> {
31065        unsafe {
31066            (windows_core::Interface::vtable(self).PlaceHolder2)(windows_core::Interface::as_raw(
31067                self,
31068            ))
31069            .ok()
31070        }
31071    }
31072    pub unsafe fn PlaceHolder3(&self) -> windows_core::Result<()> {
31073        unsafe {
31074            (windows_core::Interface::vtable(self).PlaceHolder3)(windows_core::Interface::as_raw(
31075                self,
31076            ))
31077            .ok()
31078        }
31079    }
31080    pub unsafe fn PlaceHolder4(&self) -> windows_core::Result<()> {
31081        unsafe {
31082            (windows_core::Interface::vtable(self).PlaceHolder4)(windows_core::Interface::as_raw(
31083                self,
31084            ))
31085            .ok()
31086        }
31087    }
31088    pub unsafe fn PlaceHolder5(&self) -> windows_core::Result<()> {
31089        unsafe {
31090            (windows_core::Interface::vtable(self).PlaceHolder5)(windows_core::Interface::as_raw(
31091                self,
31092            ))
31093            .ok()
31094        }
31095    }
31096    pub unsafe fn PlaceHolder6(&self) -> windows_core::Result<()> {
31097        unsafe {
31098            (windows_core::Interface::vtable(self).PlaceHolder6)(windows_core::Interface::as_raw(
31099                self,
31100            ))
31101            .ok()
31102        }
31103    }
31104    pub unsafe fn GetAccountInfo(
31105        &self,
31106        pclsidtype: *mut windows_core::GUID,
31107        pccategories: *mut u32,
31108        prgclsidcategory: *mut *mut windows_core::GUID,
31109    ) -> windows_core::Result<()> {
31110        unsafe {
31111            (windows_core::Interface::vtable(self).GetAccountInfo)(
31112                windows_core::Interface::as_raw(self),
31113                pclsidtype as _,
31114                pccategories as _,
31115                prgclsidcategory as _,
31116            )
31117            .ok()
31118        }
31119    }
31120    pub unsafe fn GetPropA(
31121        &self,
31122        dwprop: u32,
31123        pvar: *mut ACCT_VARIANT,
31124    ) -> windows_core::Result<()> {
31125        unsafe {
31126            (windows_core::Interface::vtable(self).GetPropA)(
31127                windows_core::Interface::as_raw(self),
31128                dwprop,
31129                pvar as _,
31130            )
31131            .ok()
31132        }
31133    }
31134    pub unsafe fn SetPropA(
31135        &self,
31136        dwprop: u32,
31137        pvar: *mut ACCT_VARIANT,
31138    ) -> windows_core::Result<()> {
31139        unsafe {
31140            (windows_core::Interface::vtable(self).SetPropA)(
31141                windows_core::Interface::as_raw(self),
31142                dwprop,
31143                pvar as _,
31144            )
31145            .ok()
31146        }
31147    }
31148    pub unsafe fn PlaceHolder7(&self) -> windows_core::Result<()> {
31149        unsafe {
31150            (windows_core::Interface::vtable(self).PlaceHolder7)(windows_core::Interface::as_raw(
31151                self,
31152            ))
31153            .ok()
31154        }
31155    }
31156    pub unsafe fn PlaceHolder8(&self) -> windows_core::Result<()> {
31157        unsafe {
31158            (windows_core::Interface::vtable(self).PlaceHolder8)(windows_core::Interface::as_raw(
31159                self,
31160            ))
31161            .ok()
31162        }
31163    }
31164    pub unsafe fn PlaceHolder9(&self) -> windows_core::Result<()> {
31165        unsafe {
31166            (windows_core::Interface::vtable(self).PlaceHolder9)(windows_core::Interface::as_raw(
31167                self,
31168            ))
31169            .ok()
31170        }
31171    }
31172    pub unsafe fn FreeMemory(&self, pv: *mut u8) -> windows_core::Result<()> {
31173        unsafe {
31174            (windows_core::Interface::vtable(self).FreeMemory)(
31175                windows_core::Interface::as_raw(self),
31176                pv as _,
31177            )
31178            .ok()
31179        }
31180    }
31181    pub unsafe fn PlaceHolder10(&self) -> windows_core::Result<()> {
31182        unsafe {
31183            (windows_core::Interface::vtable(self).PlaceHolder10)(windows_core::Interface::as_raw(
31184                self,
31185            ))
31186            .ok()
31187        }
31188    }
31189    pub unsafe fn SaveChanges(&self, dwflags: u32) -> windows_core::Result<()> {
31190        unsafe {
31191            (windows_core::Interface::vtable(self).SaveChanges)(
31192                windows_core::Interface::as_raw(self),
31193                dwflags,
31194            )
31195            .ok()
31196        }
31197    }
31198}
31199#[repr(C)]
31200#[doc(hidden)]
31201pub struct IOlkAccount_Vtbl {
31202    pub base__: IOlkErrorUnknown_Vtbl,
31203    pub PlaceHolder1: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31204    pub PlaceHolder2: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31205    pub PlaceHolder3: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31206    pub PlaceHolder4: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31207    pub PlaceHolder5: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31208    pub PlaceHolder6: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31209    pub GetAccountInfo: unsafe extern "system" fn(
31210        *mut core::ffi::c_void,
31211        *mut windows_core::GUID,
31212        *mut u32,
31213        *mut *mut windows_core::GUID,
31214    ) -> windows_core::HRESULT,
31215    pub GetPropA: unsafe extern "system" fn(
31216        *mut core::ffi::c_void,
31217        u32,
31218        *mut ACCT_VARIANT,
31219    ) -> windows_core::HRESULT,
31220    pub SetPropA: unsafe extern "system" fn(
31221        *mut core::ffi::c_void,
31222        u32,
31223        *mut ACCT_VARIANT,
31224    ) -> windows_core::HRESULT,
31225    pub PlaceHolder7: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31226    pub PlaceHolder8: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31227    pub PlaceHolder9: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31228    pub FreeMemory:
31229        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
31230    pub PlaceHolder10: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31231    pub SaveChanges:
31232        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
31233}
31234pub trait IOlkAccount_Impl: IOlkErrorUnknown_Impl {
31235    fn PlaceHolder1(&self) -> windows_core::Result<()>;
31236    fn PlaceHolder2(&self) -> windows_core::Result<()>;
31237    fn PlaceHolder3(&self) -> windows_core::Result<()>;
31238    fn PlaceHolder4(&self) -> windows_core::Result<()>;
31239    fn PlaceHolder5(&self) -> windows_core::Result<()>;
31240    fn PlaceHolder6(&self) -> windows_core::Result<()>;
31241    fn GetAccountInfo(
31242        &self,
31243        pclsidtype: *mut windows_core::GUID,
31244        pccategories: *mut u32,
31245        prgclsidcategory: *mut *mut windows_core::GUID,
31246    ) -> windows_core::Result<()>;
31247    fn GetPropA(&self, dwprop: u32, pvar: *mut ACCT_VARIANT) -> windows_core::Result<()>;
31248    fn SetPropA(&self, dwprop: u32, pvar: *mut ACCT_VARIANT) -> windows_core::Result<()>;
31249    fn PlaceHolder7(&self) -> windows_core::Result<()>;
31250    fn PlaceHolder8(&self) -> windows_core::Result<()>;
31251    fn PlaceHolder9(&self) -> windows_core::Result<()>;
31252    fn FreeMemory(&self, pv: *mut u8) -> windows_core::Result<()>;
31253    fn PlaceHolder10(&self) -> windows_core::Result<()>;
31254    fn SaveChanges(&self, dwflags: u32) -> windows_core::Result<()>;
31255}
31256impl IOlkAccount_Vtbl {
31257    pub const fn new<Identity: IOlkAccount_Impl, const OFFSET: isize>() -> Self {
31258        unsafe extern "system" fn PlaceHolder1<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31259            this: *mut core::ffi::c_void,
31260        ) -> windows_core::HRESULT {
31261            unsafe {
31262                let this: &Identity =
31263                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31264                IOlkAccount_Impl::PlaceHolder1(this).into()
31265            }
31266        }
31267        unsafe extern "system" fn PlaceHolder2<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31268            this: *mut core::ffi::c_void,
31269        ) -> windows_core::HRESULT {
31270            unsafe {
31271                let this: &Identity =
31272                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31273                IOlkAccount_Impl::PlaceHolder2(this).into()
31274            }
31275        }
31276        unsafe extern "system" fn PlaceHolder3<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31277            this: *mut core::ffi::c_void,
31278        ) -> windows_core::HRESULT {
31279            unsafe {
31280                let this: &Identity =
31281                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31282                IOlkAccount_Impl::PlaceHolder3(this).into()
31283            }
31284        }
31285        unsafe extern "system" fn PlaceHolder4<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31286            this: *mut core::ffi::c_void,
31287        ) -> windows_core::HRESULT {
31288            unsafe {
31289                let this: &Identity =
31290                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31291                IOlkAccount_Impl::PlaceHolder4(this).into()
31292            }
31293        }
31294        unsafe extern "system" fn PlaceHolder5<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31295            this: *mut core::ffi::c_void,
31296        ) -> windows_core::HRESULT {
31297            unsafe {
31298                let this: &Identity =
31299                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31300                IOlkAccount_Impl::PlaceHolder5(this).into()
31301            }
31302        }
31303        unsafe extern "system" fn PlaceHolder6<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31304            this: *mut core::ffi::c_void,
31305        ) -> windows_core::HRESULT {
31306            unsafe {
31307                let this: &Identity =
31308                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31309                IOlkAccount_Impl::PlaceHolder6(this).into()
31310            }
31311        }
31312        unsafe extern "system" fn GetAccountInfo<
31313            Identity: IOlkAccount_Impl,
31314            const OFFSET: isize,
31315        >(
31316            this: *mut core::ffi::c_void,
31317            pclsidtype: *mut windows_core::GUID,
31318            pccategories: *mut u32,
31319            prgclsidcategory: *mut *mut windows_core::GUID,
31320        ) -> windows_core::HRESULT {
31321            unsafe {
31322                let this: &Identity =
31323                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31324                IOlkAccount_Impl::GetAccountInfo(
31325                    this,
31326                    core::mem::transmute_copy(&pclsidtype),
31327                    core::mem::transmute_copy(&pccategories),
31328                    core::mem::transmute_copy(&prgclsidcategory),
31329                )
31330                .into()
31331            }
31332        }
31333        unsafe extern "system" fn GetPropA<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31334            this: *mut core::ffi::c_void,
31335            dwprop: u32,
31336            pvar: *mut ACCT_VARIANT,
31337        ) -> windows_core::HRESULT {
31338            unsafe {
31339                let this: &Identity =
31340                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31341                IOlkAccount_Impl::GetPropA(
31342                    this,
31343                    core::mem::transmute_copy(&dwprop),
31344                    core::mem::transmute_copy(&pvar),
31345                )
31346                .into()
31347            }
31348        }
31349        unsafe extern "system" fn SetPropA<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31350            this: *mut core::ffi::c_void,
31351            dwprop: u32,
31352            pvar: *mut ACCT_VARIANT,
31353        ) -> windows_core::HRESULT {
31354            unsafe {
31355                let this: &Identity =
31356                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31357                IOlkAccount_Impl::SetPropA(
31358                    this,
31359                    core::mem::transmute_copy(&dwprop),
31360                    core::mem::transmute_copy(&pvar),
31361                )
31362                .into()
31363            }
31364        }
31365        unsafe extern "system" fn PlaceHolder7<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31366            this: *mut core::ffi::c_void,
31367        ) -> windows_core::HRESULT {
31368            unsafe {
31369                let this: &Identity =
31370                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31371                IOlkAccount_Impl::PlaceHolder7(this).into()
31372            }
31373        }
31374        unsafe extern "system" fn PlaceHolder8<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31375            this: *mut core::ffi::c_void,
31376        ) -> windows_core::HRESULT {
31377            unsafe {
31378                let this: &Identity =
31379                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31380                IOlkAccount_Impl::PlaceHolder8(this).into()
31381            }
31382        }
31383        unsafe extern "system" fn PlaceHolder9<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31384            this: *mut core::ffi::c_void,
31385        ) -> windows_core::HRESULT {
31386            unsafe {
31387                let this: &Identity =
31388                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31389                IOlkAccount_Impl::PlaceHolder9(this).into()
31390            }
31391        }
31392        unsafe extern "system" fn FreeMemory<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31393            this: *mut core::ffi::c_void,
31394            pv: *mut u8,
31395        ) -> windows_core::HRESULT {
31396            unsafe {
31397                let this: &Identity =
31398                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31399                IOlkAccount_Impl::FreeMemory(this, core::mem::transmute_copy(&pv)).into()
31400            }
31401        }
31402        unsafe extern "system" fn PlaceHolder10<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31403            this: *mut core::ffi::c_void,
31404        ) -> windows_core::HRESULT {
31405            unsafe {
31406                let this: &Identity =
31407                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31408                IOlkAccount_Impl::PlaceHolder10(this).into()
31409            }
31410        }
31411        unsafe extern "system" fn SaveChanges<Identity: IOlkAccount_Impl, const OFFSET: isize>(
31412            this: *mut core::ffi::c_void,
31413            dwflags: u32,
31414        ) -> windows_core::HRESULT {
31415            unsafe {
31416                let this: &Identity =
31417                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31418                IOlkAccount_Impl::SaveChanges(this, core::mem::transmute_copy(&dwflags)).into()
31419            }
31420        }
31421        Self {
31422            base__: IOlkErrorUnknown_Vtbl::new::<Identity, OFFSET>(),
31423            PlaceHolder1: PlaceHolder1::<Identity, OFFSET>,
31424            PlaceHolder2: PlaceHolder2::<Identity, OFFSET>,
31425            PlaceHolder3: PlaceHolder3::<Identity, OFFSET>,
31426            PlaceHolder4: PlaceHolder4::<Identity, OFFSET>,
31427            PlaceHolder5: PlaceHolder5::<Identity, OFFSET>,
31428            PlaceHolder6: PlaceHolder6::<Identity, OFFSET>,
31429            GetAccountInfo: GetAccountInfo::<Identity, OFFSET>,
31430            GetPropA: GetPropA::<Identity, OFFSET>,
31431            SetPropA: SetPropA::<Identity, OFFSET>,
31432            PlaceHolder7: PlaceHolder7::<Identity, OFFSET>,
31433            PlaceHolder8: PlaceHolder8::<Identity, OFFSET>,
31434            PlaceHolder9: PlaceHolder9::<Identity, OFFSET>,
31435            FreeMemory: FreeMemory::<Identity, OFFSET>,
31436            PlaceHolder10: PlaceHolder10::<Identity, OFFSET>,
31437            SaveChanges: SaveChanges::<Identity, OFFSET>,
31438        }
31439    }
31440    pub fn matches(iid: &windows_core::GUID) -> bool {
31441        iid == &<IOlkAccount as windows_core::Interface>::IID
31442            || iid == &<IOlkErrorUnknown as windows_core::Interface>::IID
31443    }
31444}
31445impl windows_core::RuntimeName for IOlkAccount {}
31446windows_core::imp::define_interface!(
31447    IOlkAccountHelper,
31448    IOlkAccountHelper_Vtbl,
31449    0x9240a6cb_af41_11d2_8c3b_00104b2a6676
31450);
31451windows_core::imp::interface_hierarchy!(IOlkAccountHelper, windows_core::IUnknown);
31452impl IOlkAccountHelper {
31453    pub unsafe fn PlaceHolder1(&self, param0: *mut core::ffi::c_void) -> windows_core::Result<()> {
31454        unsafe {
31455            (windows_core::Interface::vtable(self).PlaceHolder1)(
31456                windows_core::Interface::as_raw(self),
31457                param0 as _,
31458            )
31459            .ok()
31460        }
31461    }
31462    pub unsafe fn GetIdentity<P0>(
31463        &self,
31464        pwszidentity: P0,
31465        pcch: *mut u32,
31466    ) -> windows_core::Result<()>
31467    where
31468        P0: windows_core::Param<windows_core::PCWSTR>,
31469    {
31470        unsafe {
31471            (windows_core::Interface::vtable(self).GetIdentity)(
31472                windows_core::Interface::as_raw(self),
31473                pwszidentity.param().abi(),
31474                pcch as _,
31475            )
31476            .ok()
31477        }
31478    }
31479    pub unsafe fn GetMapiSession(&self) -> windows_core::Result<windows_core::IUnknown> {
31480        unsafe {
31481            let mut result__ = core::mem::zeroed();
31482            (windows_core::Interface::vtable(self).GetMapiSession)(
31483                windows_core::Interface::as_raw(self),
31484                &mut result__,
31485            )
31486            .and_then(|| windows_core::Type::from_abi(result__))
31487        }
31488    }
31489    pub unsafe fn HandsOffSession(&self) -> windows_core::Result<()> {
31490        unsafe {
31491            (windows_core::Interface::vtable(self).HandsOffSession)(
31492                windows_core::Interface::as_raw(self),
31493            )
31494            .ok()
31495        }
31496    }
31497}
31498#[repr(C)]
31499#[doc(hidden)]
31500pub struct IOlkAccountHelper_Vtbl {
31501    pub base__: windows_core::IUnknown_Vtbl,
31502    pub PlaceHolder1: unsafe extern "system" fn(
31503        *mut core::ffi::c_void,
31504        *mut core::ffi::c_void,
31505    ) -> windows_core::HRESULT,
31506    pub GetIdentity: unsafe extern "system" fn(
31507        *mut core::ffi::c_void,
31508        windows_core::PCWSTR,
31509        *mut u32,
31510    ) -> windows_core::HRESULT,
31511    pub GetMapiSession: unsafe extern "system" fn(
31512        *mut core::ffi::c_void,
31513        *mut *mut core::ffi::c_void,
31514    ) -> windows_core::HRESULT,
31515    pub HandsOffSession: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31516}
31517pub trait IOlkAccountHelper_Impl: windows_core::IUnknownImpl {
31518    fn PlaceHolder1(&self, param0: *mut core::ffi::c_void) -> windows_core::Result<()>;
31519    fn GetIdentity(
31520        &self,
31521        pwszidentity: &windows_core::PCWSTR,
31522        pcch: *mut u32,
31523    ) -> windows_core::Result<()>;
31524    fn GetMapiSession(&self) -> windows_core::Result<windows_core::IUnknown>;
31525    fn HandsOffSession(&self) -> windows_core::Result<()>;
31526}
31527impl IOlkAccountHelper_Vtbl {
31528    pub const fn new<Identity: IOlkAccountHelper_Impl, const OFFSET: isize>() -> Self {
31529        unsafe extern "system" fn PlaceHolder1<
31530            Identity: IOlkAccountHelper_Impl,
31531            const OFFSET: isize,
31532        >(
31533            this: *mut core::ffi::c_void,
31534            param0: *mut core::ffi::c_void,
31535        ) -> windows_core::HRESULT {
31536            unsafe {
31537                let this: &Identity =
31538                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31539                IOlkAccountHelper_Impl::PlaceHolder1(this, core::mem::transmute_copy(&param0))
31540                    .into()
31541            }
31542        }
31543        unsafe extern "system" fn GetIdentity<
31544            Identity: IOlkAccountHelper_Impl,
31545            const OFFSET: isize,
31546        >(
31547            this: *mut core::ffi::c_void,
31548            pwszidentity: windows_core::PCWSTR,
31549            pcch: *mut u32,
31550        ) -> windows_core::HRESULT {
31551            unsafe {
31552                let this: &Identity =
31553                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31554                IOlkAccountHelper_Impl::GetIdentity(
31555                    this,
31556                    core::mem::transmute(&pwszidentity),
31557                    core::mem::transmute_copy(&pcch),
31558                )
31559                .into()
31560            }
31561        }
31562        unsafe extern "system" fn GetMapiSession<
31563            Identity: IOlkAccountHelper_Impl,
31564            const OFFSET: isize,
31565        >(
31566            this: *mut core::ffi::c_void,
31567            ppmsess: *mut *mut core::ffi::c_void,
31568        ) -> windows_core::HRESULT {
31569            unsafe {
31570                let this: &Identity =
31571                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31572                match IOlkAccountHelper_Impl::GetMapiSession(this) {
31573                    Ok(ok__) => {
31574                        ppmsess.write(core::mem::transmute(ok__));
31575                        windows_core::HRESULT(0)
31576                    }
31577                    Err(err) => err.into(),
31578                }
31579            }
31580        }
31581        unsafe extern "system" fn HandsOffSession<
31582            Identity: IOlkAccountHelper_Impl,
31583            const OFFSET: isize,
31584        >(
31585            this: *mut core::ffi::c_void,
31586        ) -> windows_core::HRESULT {
31587            unsafe {
31588                let this: &Identity =
31589                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
31590                IOlkAccountHelper_Impl::HandsOffSession(this).into()
31591            }
31592        }
31593        Self {
31594            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
31595            PlaceHolder1: PlaceHolder1::<Identity, OFFSET>,
31596            GetIdentity: GetIdentity::<Identity, OFFSET>,
31597            GetMapiSession: GetMapiSession::<Identity, OFFSET>,
31598            HandsOffSession: HandsOffSession::<Identity, OFFSET>,
31599        }
31600    }
31601    pub fn matches(iid: &windows_core::GUID) -> bool {
31602        iid == &<IOlkAccountHelper as windows_core::Interface>::IID
31603    }
31604}
31605impl windows_core::RuntimeName for IOlkAccountHelper {}
31606windows_core::imp::define_interface!(
31607    IOlkAccountManager,
31608    IOlkAccountManager_Vtbl,
31609    0x9240a6cd_af41_11d2_8c3b_00104b2a6676
31610);
31611impl core::ops::Deref for IOlkAccountManager {
31612    type Target = IOlkErrorUnknown;
31613    fn deref(&self) -> &Self::Target {
31614        unsafe { core::mem::transmute(self) }
31615    }
31616}
31617windows_core::imp::interface_hierarchy!(
31618    IOlkAccountManager,
31619    windows_core::IUnknown,
31620    IOlkErrorUnknown
31621);
31622impl IOlkAccountManager {
31623    pub unsafe fn Init<P0>(&self, paccthelper: P0, dwflags: u32) -> windows_core::Result<()>
31624    where
31625        P0: windows_core::Param<IOlkAccountHelper>,
31626    {
31627        unsafe {
31628            (windows_core::Interface::vtable(self).Init)(
31629                windows_core::Interface::as_raw(self),
31630                paccthelper.param().abi(),
31631                dwflags,
31632            )
31633            .ok()
31634        }
31635    }
31636    pub unsafe fn DisplayAccountList<P2>(
31637        &self,
31638        hwnd: windows::Win32::Foundation::HWND,
31639        dwflags: u32,
31640        wsztitle: P2,
31641        ccategories: u32,
31642        rgclsidcategories: *const windows_core::GUID,
31643        pclsidtype: *const windows_core::GUID,
31644    ) -> windows_core::Result<()>
31645    where
31646        P2: windows_core::Param<windows_core::PCWSTR>,
31647    {
31648        unsafe {
31649            (windows_core::Interface::vtable(self).DisplayAccountList)(
31650                windows_core::Interface::as_raw(self),
31651                hwnd,
31652                dwflags,
31653                wsztitle.param().abi(),
31654                ccategories,
31655                rgclsidcategories,
31656                pclsidtype,
31657            )
31658            .ok()
31659        }
31660    }
31661    pub unsafe fn PlaceHolder1(&self) -> windows_core::Result<()> {
31662        unsafe {
31663            (windows_core::Interface::vtable(self).PlaceHolder1)(windows_core::Interface::as_raw(
31664                self,
31665            ))
31666            .ok()
31667        }
31668    }
31669    pub unsafe fn PlaceHolder2(&self) -> windows_core::Result<()> {
31670        unsafe {
31671            (windows_core::Interface::vtable(self).PlaceHolder2)(windows_core::Interface::as_raw(
31672                self,
31673            ))
31674            .ok()
31675        }
31676    }
31677    pub unsafe fn PlaceHolder3(&self) -> windows_core::Result<()> {
31678        unsafe {
31679            (windows_core::Interface::vtable(self).PlaceHolder3)(windows_core::Interface::as_raw(
31680                self,
31681            ))
31682            .ok()
31683        }
31684    }
31685    pub unsafe fn PlaceHolder4(&self) -> windows_core::Result<()> {
31686        unsafe {
31687            (windows_core::Interface::vtable(self).PlaceHolder4)(windows_core::Interface::as_raw(
31688                self,
31689            ))
31690            .ok()
31691        }
31692    }
31693    pub unsafe fn PlaceHolder5(&self) -> windows_core::Result<()> {
31694        unsafe {
31695            (windows_core::Interface::vtable(self).PlaceHolder5)(windows_core::Interface::as_raw(
31696                self,
31697            ))
31698            .ok()
31699        }
31700    }
31701    pub unsafe fn FindAccount(
31702        &self,
31703        dwprop: u32,
31704        pvar: *mut ACCT_VARIANT,
31705        ppaccount: *mut Option<IOlkAccount>,
31706    ) -> windows_core::Result<()> {
31707        unsafe {
31708            (windows_core::Interface::vtable(self).FindAccount)(
31709                windows_core::Interface::as_raw(self),
31710                dwprop,
31711                pvar as _,
31712                core::mem::transmute(ppaccount),
31713            )
31714            .ok()
31715        }
31716    }
31717    pub unsafe fn PlaceHolder6(&self) -> windows_core::Result<()> {
31718        unsafe {
31719            (windows_core::Interface::vtable(self).PlaceHolder6)(windows_core::Interface::as_raw(
31720                self,
31721            ))
31722            .ok()
31723        }
31724    }
31725    pub unsafe fn PlaceHolder7(&self) -> windows_core::Result<()> {
31726        unsafe {
31727            (windows_core::Interface::vtable(self).PlaceHolder7)(windows_core::Interface::as_raw(
31728                self,
31729            ))
31730            .ok()
31731        }
31732    }
31733    pub unsafe fn PlaceHolder8(&self) -> windows_core::Result<()> {
31734        unsafe {
31735            (windows_core::Interface::vtable(self).PlaceHolder8)(windows_core::Interface::as_raw(
31736                self,
31737            ))
31738            .ok()
31739        }
31740    }
31741    pub unsafe fn DeleteAccount(&self, dwacctid: u32) -> windows_core::Result<()> {
31742        unsafe {
31743            (windows_core::Interface::vtable(self).DeleteAccount)(
31744                windows_core::Interface::as_raw(self),
31745                dwacctid,
31746            )
31747            .ok()
31748        }
31749    }
31750    pub unsafe fn PlaceHolder9(&self) -> windows_core::Result<()> {
31751        unsafe {
31752            (windows_core::Interface::vtable(self).PlaceHolder9)(windows_core::Interface::as_raw(
31753                self,
31754            ))
31755            .ok()
31756        }
31757    }
31758    pub unsafe fn SaveChanges(&self, dwacctid: u32, dwflags: u32) -> windows_core::Result<()> {
31759        unsafe {
31760            (windows_core::Interface::vtable(self).SaveChanges)(
31761                windows_core::Interface::as_raw(self),
31762                dwacctid,
31763                dwflags,
31764            )
31765            .ok()
31766        }
31767    }
31768    pub unsafe fn GetOrder(
31769        &self,
31770        pclsidcategory: *const windows_core::GUID,
31771        pcaccts: *mut u32,
31772        prgaccts: *mut *mut u32,
31773    ) -> windows_core::Result<()> {
31774        unsafe {
31775            (windows_core::Interface::vtable(self).GetOrder)(
31776                windows_core::Interface::as_raw(self),
31777                pclsidcategory,
31778                pcaccts as _,
31779                prgaccts as _,
31780            )
31781            .ok()
31782        }
31783    }
31784    pub unsafe fn SetOrder(
31785        &self,
31786        pclsidcategory: *const windows_core::GUID,
31787        pcaccts: *mut u32,
31788        prgaccts: *mut *mut u32,
31789    ) -> windows_core::Result<()> {
31790        unsafe {
31791            (windows_core::Interface::vtable(self).SetOrder)(
31792                windows_core::Interface::as_raw(self),
31793                pclsidcategory,
31794                pcaccts as _,
31795                prgaccts as _,
31796            )
31797            .ok()
31798        }
31799    }
31800    pub unsafe fn EnumerateAccounts(
31801        &self,
31802        pclsidcategory: *const windows_core::GUID,
31803        pclsidtype: *const windows_core::GUID,
31804        dwflags: u32,
31805    ) -> windows_core::Result<IOlkEnum> {
31806        unsafe {
31807            let mut result__ = core::mem::zeroed();
31808            (windows_core::Interface::vtable(self).EnumerateAccounts)(
31809                windows_core::Interface::as_raw(self),
31810                pclsidcategory,
31811                pclsidtype,
31812                dwflags,
31813                &mut result__,
31814            )
31815            .and_then(|| windows_core::Type::from_abi(result__))
31816        }
31817    }
31818    pub unsafe fn PlaceHolder10(&self) -> windows_core::Result<()> {
31819        unsafe {
31820            (windows_core::Interface::vtable(self).PlaceHolder10)(windows_core::Interface::as_raw(
31821                self,
31822            ))
31823            .ok()
31824        }
31825    }
31826    pub unsafe fn PlaceHolder11(&self) -> windows_core::Result<()> {
31827        unsafe {
31828            (windows_core::Interface::vtable(self).PlaceHolder11)(windows_core::Interface::as_raw(
31829                self,
31830            ))
31831            .ok()
31832        }
31833    }
31834    pub unsafe fn FreeMemory(&self, pv: *mut u8) -> windows_core::Result<()> {
31835        unsafe {
31836            (windows_core::Interface::vtable(self).FreeMemory)(
31837                windows_core::Interface::as_raw(self),
31838                pv as _,
31839            )
31840            .ok()
31841        }
31842    }
31843    pub unsafe fn Advise<P0>(&self, pnotify: P0, pdwcookie: *mut u32) -> windows_core::Result<()>
31844    where
31845        P0: windows_core::Param<IOlkAccountNotify>,
31846    {
31847        unsafe {
31848            (windows_core::Interface::vtable(self).Advise)(
31849                windows_core::Interface::as_raw(self),
31850                pnotify.param().abi(),
31851                pdwcookie as _,
31852            )
31853            .ok()
31854        }
31855    }
31856    pub unsafe fn Unadvise(&self, pdwcookie: *mut u32) -> windows_core::Result<()> {
31857        unsafe {
31858            (windows_core::Interface::vtable(self).Unadvise)(
31859                windows_core::Interface::as_raw(self),
31860                pdwcookie as _,
31861            )
31862            .ok()
31863        }
31864    }
31865    pub unsafe fn PlaceHolder12(&self) -> windows_core::Result<()> {
31866        unsafe {
31867            (windows_core::Interface::vtable(self).PlaceHolder12)(windows_core::Interface::as_raw(
31868                self,
31869            ))
31870            .ok()
31871        }
31872    }
31873    pub unsafe fn PlaceHolder13(&self) -> windows_core::Result<()> {
31874        unsafe {
31875            (windows_core::Interface::vtable(self).PlaceHolder13)(windows_core::Interface::as_raw(
31876                self,
31877            ))
31878            .ok()
31879        }
31880    }
31881    pub unsafe fn PlaceHolder14(&self) -> windows_core::Result<()> {
31882        unsafe {
31883            (windows_core::Interface::vtable(self).PlaceHolder14)(windows_core::Interface::as_raw(
31884                self,
31885            ))
31886            .ok()
31887        }
31888    }
31889}
31890#[repr(C)]
31891#[doc(hidden)]
31892pub struct IOlkAccountManager_Vtbl {
31893    pub base__: IOlkErrorUnknown_Vtbl,
31894    pub Init: unsafe extern "system" fn(
31895        *mut core::ffi::c_void,
31896        *mut core::ffi::c_void,
31897        u32,
31898    ) -> windows_core::HRESULT,
31899    pub DisplayAccountList: unsafe extern "system" fn(
31900        *mut core::ffi::c_void,
31901        windows::Win32::Foundation::HWND,
31902        u32,
31903        windows_core::PCWSTR,
31904        u32,
31905        *const windows_core::GUID,
31906        *const windows_core::GUID,
31907    ) -> windows_core::HRESULT,
31908    pub PlaceHolder1: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31909    pub PlaceHolder2: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31910    pub PlaceHolder3: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31911    pub PlaceHolder4: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31912    pub PlaceHolder5: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31913    pub FindAccount: unsafe extern "system" fn(
31914        *mut core::ffi::c_void,
31915        u32,
31916        *mut ACCT_VARIANT,
31917        *mut *mut core::ffi::c_void,
31918    ) -> windows_core::HRESULT,
31919    pub PlaceHolder6: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31920    pub PlaceHolder7: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31921    pub PlaceHolder8: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31922    pub DeleteAccount:
31923        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
31924    pub PlaceHolder9: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31925    pub SaveChanges:
31926        unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
31927    pub GetOrder: unsafe extern "system" fn(
31928        *mut core::ffi::c_void,
31929        *const windows_core::GUID,
31930        *mut u32,
31931        *mut *mut u32,
31932    ) -> windows_core::HRESULT,
31933    pub SetOrder: unsafe extern "system" fn(
31934        *mut core::ffi::c_void,
31935        *const windows_core::GUID,
31936        *mut u32,
31937        *mut *mut u32,
31938    ) -> windows_core::HRESULT,
31939    pub EnumerateAccounts: unsafe extern "system" fn(
31940        *mut core::ffi::c_void,
31941        *const windows_core::GUID,
31942        *const windows_core::GUID,
31943        u32,
31944        *mut *mut core::ffi::c_void,
31945    ) -> windows_core::HRESULT,
31946    pub PlaceHolder10: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31947    pub PlaceHolder11: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31948    pub FreeMemory:
31949        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
31950    pub Advise: unsafe extern "system" fn(
31951        *mut core::ffi::c_void,
31952        *mut core::ffi::c_void,
31953        *mut u32,
31954    ) -> windows_core::HRESULT,
31955    pub Unadvise:
31956        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
31957    pub PlaceHolder12: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31958    pub PlaceHolder13: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31959    pub PlaceHolder14: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
31960}
31961pub trait IOlkAccountManager_Impl: IOlkErrorUnknown_Impl {
31962    fn Init(
31963        &self,
31964        paccthelper: windows_core::Ref<IOlkAccountHelper>,
31965        dwflags: u32,
31966    ) -> windows_core::Result<()>;
31967    fn DisplayAccountList(
31968        &self,
31969        hwnd: windows::Win32::Foundation::HWND,
31970        dwflags: u32,
31971        wsztitle: &windows_core::PCWSTR,
31972        ccategories: u32,
31973        rgclsidcategories: *const windows_core::GUID,
31974        pclsidtype: *const windows_core::GUID,
31975    ) -> windows_core::Result<()>;
31976    fn PlaceHolder1(&self) -> windows_core::Result<()>;
31977    fn PlaceHolder2(&self) -> windows_core::Result<()>;
31978    fn PlaceHolder3(&self) -> windows_core::Result<()>;
31979    fn PlaceHolder4(&self) -> windows_core::Result<()>;
31980    fn PlaceHolder5(&self) -> windows_core::Result<()>;
31981    fn FindAccount(
31982        &self,
31983        dwprop: u32,
31984        pvar: *mut ACCT_VARIANT,
31985        ppaccount: windows_core::OutRef<IOlkAccount>,
31986    ) -> windows_core::Result<()>;
31987    fn PlaceHolder6(&self) -> windows_core::Result<()>;
31988    fn PlaceHolder7(&self) -> windows_core::Result<()>;
31989    fn PlaceHolder8(&self) -> windows_core::Result<()>;
31990    fn DeleteAccount(&self, dwacctid: u32) -> windows_core::Result<()>;
31991    fn PlaceHolder9(&self) -> windows_core::Result<()>;
31992    fn SaveChanges(&self, dwacctid: u32, dwflags: u32) -> windows_core::Result<()>;
31993    fn GetOrder(
31994        &self,
31995        pclsidcategory: *const windows_core::GUID,
31996        pcaccts: *mut u32,
31997        prgaccts: *mut *mut u32,
31998    ) -> windows_core::Result<()>;
31999    fn SetOrder(
32000        &self,
32001        pclsidcategory: *const windows_core::GUID,
32002        pcaccts: *mut u32,
32003        prgaccts: *mut *mut u32,
32004    ) -> windows_core::Result<()>;
32005    fn EnumerateAccounts(
32006        &self,
32007        pclsidcategory: *const windows_core::GUID,
32008        pclsidtype: *const windows_core::GUID,
32009        dwflags: u32,
32010    ) -> windows_core::Result<IOlkEnum>;
32011    fn PlaceHolder10(&self) -> windows_core::Result<()>;
32012    fn PlaceHolder11(&self) -> windows_core::Result<()>;
32013    fn FreeMemory(&self, pv: *mut u8) -> windows_core::Result<()>;
32014    fn Advise(
32015        &self,
32016        pnotify: windows_core::Ref<IOlkAccountNotify>,
32017        pdwcookie: *mut u32,
32018    ) -> windows_core::Result<()>;
32019    fn Unadvise(&self, pdwcookie: *mut u32) -> windows_core::Result<()>;
32020    fn PlaceHolder12(&self) -> windows_core::Result<()>;
32021    fn PlaceHolder13(&self) -> windows_core::Result<()>;
32022    fn PlaceHolder14(&self) -> windows_core::Result<()>;
32023}
32024impl IOlkAccountManager_Vtbl {
32025    pub const fn new<Identity: IOlkAccountManager_Impl, const OFFSET: isize>() -> Self {
32026        unsafe extern "system" fn Init<Identity: IOlkAccountManager_Impl, const OFFSET: isize>(
32027            this: *mut core::ffi::c_void,
32028            paccthelper: *mut core::ffi::c_void,
32029            dwflags: u32,
32030        ) -> windows_core::HRESULT {
32031            unsafe {
32032                let this: &Identity =
32033                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32034                IOlkAccountManager_Impl::Init(
32035                    this,
32036                    core::mem::transmute_copy(&paccthelper),
32037                    core::mem::transmute_copy(&dwflags),
32038                )
32039                .into()
32040            }
32041        }
32042        unsafe extern "system" fn DisplayAccountList<
32043            Identity: IOlkAccountManager_Impl,
32044            const OFFSET: isize,
32045        >(
32046            this: *mut core::ffi::c_void,
32047            hwnd: windows::Win32::Foundation::HWND,
32048            dwflags: u32,
32049            wsztitle: windows_core::PCWSTR,
32050            ccategories: u32,
32051            rgclsidcategories: *const windows_core::GUID,
32052            pclsidtype: *const windows_core::GUID,
32053        ) -> windows_core::HRESULT {
32054            unsafe {
32055                let this: &Identity =
32056                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32057                IOlkAccountManager_Impl::DisplayAccountList(
32058                    this,
32059                    core::mem::transmute_copy(&hwnd),
32060                    core::mem::transmute_copy(&dwflags),
32061                    core::mem::transmute(&wsztitle),
32062                    core::mem::transmute_copy(&ccategories),
32063                    core::mem::transmute_copy(&rgclsidcategories),
32064                    core::mem::transmute_copy(&pclsidtype),
32065                )
32066                .into()
32067            }
32068        }
32069        unsafe extern "system" fn PlaceHolder1<
32070            Identity: IOlkAccountManager_Impl,
32071            const OFFSET: isize,
32072        >(
32073            this: *mut core::ffi::c_void,
32074        ) -> windows_core::HRESULT {
32075            unsafe {
32076                let this: &Identity =
32077                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32078                IOlkAccountManager_Impl::PlaceHolder1(this).into()
32079            }
32080        }
32081        unsafe extern "system" fn PlaceHolder2<
32082            Identity: IOlkAccountManager_Impl,
32083            const OFFSET: isize,
32084        >(
32085            this: *mut core::ffi::c_void,
32086        ) -> windows_core::HRESULT {
32087            unsafe {
32088                let this: &Identity =
32089                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32090                IOlkAccountManager_Impl::PlaceHolder2(this).into()
32091            }
32092        }
32093        unsafe extern "system" fn PlaceHolder3<
32094            Identity: IOlkAccountManager_Impl,
32095            const OFFSET: isize,
32096        >(
32097            this: *mut core::ffi::c_void,
32098        ) -> windows_core::HRESULT {
32099            unsafe {
32100                let this: &Identity =
32101                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32102                IOlkAccountManager_Impl::PlaceHolder3(this).into()
32103            }
32104        }
32105        unsafe extern "system" fn PlaceHolder4<
32106            Identity: IOlkAccountManager_Impl,
32107            const OFFSET: isize,
32108        >(
32109            this: *mut core::ffi::c_void,
32110        ) -> windows_core::HRESULT {
32111            unsafe {
32112                let this: &Identity =
32113                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32114                IOlkAccountManager_Impl::PlaceHolder4(this).into()
32115            }
32116        }
32117        unsafe extern "system" fn PlaceHolder5<
32118            Identity: IOlkAccountManager_Impl,
32119            const OFFSET: isize,
32120        >(
32121            this: *mut core::ffi::c_void,
32122        ) -> windows_core::HRESULT {
32123            unsafe {
32124                let this: &Identity =
32125                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32126                IOlkAccountManager_Impl::PlaceHolder5(this).into()
32127            }
32128        }
32129        unsafe extern "system" fn FindAccount<
32130            Identity: IOlkAccountManager_Impl,
32131            const OFFSET: isize,
32132        >(
32133            this: *mut core::ffi::c_void,
32134            dwprop: u32,
32135            pvar: *mut ACCT_VARIANT,
32136            ppaccount: *mut *mut core::ffi::c_void,
32137        ) -> windows_core::HRESULT {
32138            unsafe {
32139                let this: &Identity =
32140                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32141                IOlkAccountManager_Impl::FindAccount(
32142                    this,
32143                    core::mem::transmute_copy(&dwprop),
32144                    core::mem::transmute_copy(&pvar),
32145                    core::mem::transmute_copy(&ppaccount),
32146                )
32147                .into()
32148            }
32149        }
32150        unsafe extern "system" fn PlaceHolder6<
32151            Identity: IOlkAccountManager_Impl,
32152            const OFFSET: isize,
32153        >(
32154            this: *mut core::ffi::c_void,
32155        ) -> windows_core::HRESULT {
32156            unsafe {
32157                let this: &Identity =
32158                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32159                IOlkAccountManager_Impl::PlaceHolder6(this).into()
32160            }
32161        }
32162        unsafe extern "system" fn PlaceHolder7<
32163            Identity: IOlkAccountManager_Impl,
32164            const OFFSET: isize,
32165        >(
32166            this: *mut core::ffi::c_void,
32167        ) -> windows_core::HRESULT {
32168            unsafe {
32169                let this: &Identity =
32170                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32171                IOlkAccountManager_Impl::PlaceHolder7(this).into()
32172            }
32173        }
32174        unsafe extern "system" fn PlaceHolder8<
32175            Identity: IOlkAccountManager_Impl,
32176            const OFFSET: isize,
32177        >(
32178            this: *mut core::ffi::c_void,
32179        ) -> windows_core::HRESULT {
32180            unsafe {
32181                let this: &Identity =
32182                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32183                IOlkAccountManager_Impl::PlaceHolder8(this).into()
32184            }
32185        }
32186        unsafe extern "system" fn DeleteAccount<
32187            Identity: IOlkAccountManager_Impl,
32188            const OFFSET: isize,
32189        >(
32190            this: *mut core::ffi::c_void,
32191            dwacctid: u32,
32192        ) -> windows_core::HRESULT {
32193            unsafe {
32194                let this: &Identity =
32195                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32196                IOlkAccountManager_Impl::DeleteAccount(this, core::mem::transmute_copy(&dwacctid))
32197                    .into()
32198            }
32199        }
32200        unsafe extern "system" fn PlaceHolder9<
32201            Identity: IOlkAccountManager_Impl,
32202            const OFFSET: isize,
32203        >(
32204            this: *mut core::ffi::c_void,
32205        ) -> windows_core::HRESULT {
32206            unsafe {
32207                let this: &Identity =
32208                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32209                IOlkAccountManager_Impl::PlaceHolder9(this).into()
32210            }
32211        }
32212        unsafe extern "system" fn SaveChanges<
32213            Identity: IOlkAccountManager_Impl,
32214            const OFFSET: isize,
32215        >(
32216            this: *mut core::ffi::c_void,
32217            dwacctid: u32,
32218            dwflags: u32,
32219        ) -> windows_core::HRESULT {
32220            unsafe {
32221                let this: &Identity =
32222                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32223                IOlkAccountManager_Impl::SaveChanges(
32224                    this,
32225                    core::mem::transmute_copy(&dwacctid),
32226                    core::mem::transmute_copy(&dwflags),
32227                )
32228                .into()
32229            }
32230        }
32231        unsafe extern "system" fn GetOrder<
32232            Identity: IOlkAccountManager_Impl,
32233            const OFFSET: isize,
32234        >(
32235            this: *mut core::ffi::c_void,
32236            pclsidcategory: *const windows_core::GUID,
32237            pcaccts: *mut u32,
32238            prgaccts: *mut *mut u32,
32239        ) -> windows_core::HRESULT {
32240            unsafe {
32241                let this: &Identity =
32242                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32243                IOlkAccountManager_Impl::GetOrder(
32244                    this,
32245                    core::mem::transmute_copy(&pclsidcategory),
32246                    core::mem::transmute_copy(&pcaccts),
32247                    core::mem::transmute_copy(&prgaccts),
32248                )
32249                .into()
32250            }
32251        }
32252        unsafe extern "system" fn SetOrder<
32253            Identity: IOlkAccountManager_Impl,
32254            const OFFSET: isize,
32255        >(
32256            this: *mut core::ffi::c_void,
32257            pclsidcategory: *const windows_core::GUID,
32258            pcaccts: *mut u32,
32259            prgaccts: *mut *mut u32,
32260        ) -> windows_core::HRESULT {
32261            unsafe {
32262                let this: &Identity =
32263                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32264                IOlkAccountManager_Impl::SetOrder(
32265                    this,
32266                    core::mem::transmute_copy(&pclsidcategory),
32267                    core::mem::transmute_copy(&pcaccts),
32268                    core::mem::transmute_copy(&prgaccts),
32269                )
32270                .into()
32271            }
32272        }
32273        unsafe extern "system" fn EnumerateAccounts<
32274            Identity: IOlkAccountManager_Impl,
32275            const OFFSET: isize,
32276        >(
32277            this: *mut core::ffi::c_void,
32278            pclsidcategory: *const windows_core::GUID,
32279            pclsidtype: *const windows_core::GUID,
32280            dwflags: u32,
32281            ppenum: *mut *mut core::ffi::c_void,
32282        ) -> windows_core::HRESULT {
32283            unsafe {
32284                let this: &Identity =
32285                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32286                match IOlkAccountManager_Impl::EnumerateAccounts(
32287                    this,
32288                    core::mem::transmute_copy(&pclsidcategory),
32289                    core::mem::transmute_copy(&pclsidtype),
32290                    core::mem::transmute_copy(&dwflags),
32291                ) {
32292                    Ok(ok__) => {
32293                        ppenum.write(core::mem::transmute(ok__));
32294                        windows_core::HRESULT(0)
32295                    }
32296                    Err(err) => err.into(),
32297                }
32298            }
32299        }
32300        unsafe extern "system" fn PlaceHolder10<
32301            Identity: IOlkAccountManager_Impl,
32302            const OFFSET: isize,
32303        >(
32304            this: *mut core::ffi::c_void,
32305        ) -> windows_core::HRESULT {
32306            unsafe {
32307                let this: &Identity =
32308                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32309                IOlkAccountManager_Impl::PlaceHolder10(this).into()
32310            }
32311        }
32312        unsafe extern "system" fn PlaceHolder11<
32313            Identity: IOlkAccountManager_Impl,
32314            const OFFSET: isize,
32315        >(
32316            this: *mut core::ffi::c_void,
32317        ) -> windows_core::HRESULT {
32318            unsafe {
32319                let this: &Identity =
32320                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32321                IOlkAccountManager_Impl::PlaceHolder11(this).into()
32322            }
32323        }
32324        unsafe extern "system" fn FreeMemory<
32325            Identity: IOlkAccountManager_Impl,
32326            const OFFSET: isize,
32327        >(
32328            this: *mut core::ffi::c_void,
32329            pv: *mut u8,
32330        ) -> windows_core::HRESULT {
32331            unsafe {
32332                let this: &Identity =
32333                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32334                IOlkAccountManager_Impl::FreeMemory(this, core::mem::transmute_copy(&pv)).into()
32335            }
32336        }
32337        unsafe extern "system" fn Advise<Identity: IOlkAccountManager_Impl, const OFFSET: isize>(
32338            this: *mut core::ffi::c_void,
32339            pnotify: *mut core::ffi::c_void,
32340            pdwcookie: *mut u32,
32341        ) -> windows_core::HRESULT {
32342            unsafe {
32343                let this: &Identity =
32344                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32345                IOlkAccountManager_Impl::Advise(
32346                    this,
32347                    core::mem::transmute_copy(&pnotify),
32348                    core::mem::transmute_copy(&pdwcookie),
32349                )
32350                .into()
32351            }
32352        }
32353        unsafe extern "system" fn Unadvise<
32354            Identity: IOlkAccountManager_Impl,
32355            const OFFSET: isize,
32356        >(
32357            this: *mut core::ffi::c_void,
32358            pdwcookie: *mut u32,
32359        ) -> windows_core::HRESULT {
32360            unsafe {
32361                let this: &Identity =
32362                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32363                IOlkAccountManager_Impl::Unadvise(this, core::mem::transmute_copy(&pdwcookie))
32364                    .into()
32365            }
32366        }
32367        unsafe extern "system" fn PlaceHolder12<
32368            Identity: IOlkAccountManager_Impl,
32369            const OFFSET: isize,
32370        >(
32371            this: *mut core::ffi::c_void,
32372        ) -> windows_core::HRESULT {
32373            unsafe {
32374                let this: &Identity =
32375                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32376                IOlkAccountManager_Impl::PlaceHolder12(this).into()
32377            }
32378        }
32379        unsafe extern "system" fn PlaceHolder13<
32380            Identity: IOlkAccountManager_Impl,
32381            const OFFSET: isize,
32382        >(
32383            this: *mut core::ffi::c_void,
32384        ) -> windows_core::HRESULT {
32385            unsafe {
32386                let this: &Identity =
32387                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32388                IOlkAccountManager_Impl::PlaceHolder13(this).into()
32389            }
32390        }
32391        unsafe extern "system" fn PlaceHolder14<
32392            Identity: IOlkAccountManager_Impl,
32393            const OFFSET: isize,
32394        >(
32395            this: *mut core::ffi::c_void,
32396        ) -> windows_core::HRESULT {
32397            unsafe {
32398                let this: &Identity =
32399                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32400                IOlkAccountManager_Impl::PlaceHolder14(this).into()
32401            }
32402        }
32403        Self {
32404            base__: IOlkErrorUnknown_Vtbl::new::<Identity, OFFSET>(),
32405            Init: Init::<Identity, OFFSET>,
32406            DisplayAccountList: DisplayAccountList::<Identity, OFFSET>,
32407            PlaceHolder1: PlaceHolder1::<Identity, OFFSET>,
32408            PlaceHolder2: PlaceHolder2::<Identity, OFFSET>,
32409            PlaceHolder3: PlaceHolder3::<Identity, OFFSET>,
32410            PlaceHolder4: PlaceHolder4::<Identity, OFFSET>,
32411            PlaceHolder5: PlaceHolder5::<Identity, OFFSET>,
32412            FindAccount: FindAccount::<Identity, OFFSET>,
32413            PlaceHolder6: PlaceHolder6::<Identity, OFFSET>,
32414            PlaceHolder7: PlaceHolder7::<Identity, OFFSET>,
32415            PlaceHolder8: PlaceHolder8::<Identity, OFFSET>,
32416            DeleteAccount: DeleteAccount::<Identity, OFFSET>,
32417            PlaceHolder9: PlaceHolder9::<Identity, OFFSET>,
32418            SaveChanges: SaveChanges::<Identity, OFFSET>,
32419            GetOrder: GetOrder::<Identity, OFFSET>,
32420            SetOrder: SetOrder::<Identity, OFFSET>,
32421            EnumerateAccounts: EnumerateAccounts::<Identity, OFFSET>,
32422            PlaceHolder10: PlaceHolder10::<Identity, OFFSET>,
32423            PlaceHolder11: PlaceHolder11::<Identity, OFFSET>,
32424            FreeMemory: FreeMemory::<Identity, OFFSET>,
32425            Advise: Advise::<Identity, OFFSET>,
32426            Unadvise: Unadvise::<Identity, OFFSET>,
32427            PlaceHolder12: PlaceHolder12::<Identity, OFFSET>,
32428            PlaceHolder13: PlaceHolder13::<Identity, OFFSET>,
32429            PlaceHolder14: PlaceHolder14::<Identity, OFFSET>,
32430        }
32431    }
32432    pub fn matches(iid: &windows_core::GUID) -> bool {
32433        iid == &<IOlkAccountManager as windows_core::Interface>::IID
32434            || iid == &<IOlkErrorUnknown as windows_core::Interface>::IID
32435    }
32436}
32437impl windows_core::RuntimeName for IOlkAccountManager {}
32438windows_core::imp::define_interface!(
32439    IOlkAccountNotify,
32440    IOlkAccountNotify_Vtbl,
32441    0x9240a6c3_af41_11d2_8c3b_00104b2a6676
32442);
32443impl core::ops::Deref for IOlkAccountNotify {
32444    type Target = IOlkErrorUnknown;
32445    fn deref(&self) -> &Self::Target {
32446        unsafe { core::mem::transmute(self) }
32447    }
32448}
32449windows_core::imp::interface_hierarchy!(
32450    IOlkAccountNotify,
32451    windows_core::IUnknown,
32452    IOlkErrorUnknown
32453);
32454#[repr(C)]
32455#[doc(hidden)]
32456pub struct IOlkAccountNotify_Vtbl {
32457    pub base__: IOlkErrorUnknown_Vtbl,
32458}
32459pub trait IOlkAccountNotify_Impl: IOlkErrorUnknown_Impl {}
32460impl IOlkAccountNotify_Vtbl {
32461    pub const fn new<Identity: IOlkAccountNotify_Impl, const OFFSET: isize>() -> Self {
32462        Self {
32463            base__: IOlkErrorUnknown_Vtbl::new::<Identity, OFFSET>(),
32464        }
32465    }
32466    pub fn matches(iid: &windows_core::GUID) -> bool {
32467        iid == &<IOlkAccountNotify as windows_core::Interface>::IID
32468            || iid == &<IOlkErrorUnknown as windows_core::Interface>::IID
32469    }
32470}
32471impl windows_core::RuntimeName for IOlkAccountNotify {}
32472windows_core::imp::define_interface!(
32473    IOlkEnum,
32474    IOlkEnum_Vtbl,
32475    0x9240a6c0_af41_11d2_8c3b_00104b2a6676
32476);
32477windows_core::imp::interface_hierarchy!(IOlkEnum, windows_core::IUnknown);
32478impl IOlkEnum {
32479    pub unsafe fn GetCount(&self, pulcount: *mut u32) -> windows_core::Result<()> {
32480        unsafe {
32481            (windows_core::Interface::vtable(self).GetCount)(
32482                windows_core::Interface::as_raw(self),
32483                pulcount as _,
32484            )
32485            .ok()
32486        }
32487    }
32488    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
32489        unsafe {
32490            (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
32491                .ok()
32492        }
32493    }
32494    pub unsafe fn GetNext(&self) -> windows_core::Result<windows_core::IUnknown> {
32495        unsafe {
32496            let mut result__ = core::mem::zeroed();
32497            (windows_core::Interface::vtable(self).GetNext)(
32498                windows_core::Interface::as_raw(self),
32499                &mut result__,
32500            )
32501            .and_then(|| windows_core::Type::from_abi(result__))
32502        }
32503    }
32504    pub unsafe fn Skip(&self, cskip: u32) -> windows_core::Result<()> {
32505        unsafe {
32506            (windows_core::Interface::vtable(self).Skip)(
32507                windows_core::Interface::as_raw(self),
32508                cskip,
32509            )
32510            .ok()
32511        }
32512    }
32513}
32514#[repr(C)]
32515#[doc(hidden)]
32516pub struct IOlkEnum_Vtbl {
32517    pub base__: windows_core::IUnknown_Vtbl,
32518    pub GetCount:
32519        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
32520    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
32521    pub GetNext: unsafe extern "system" fn(
32522        *mut core::ffi::c_void,
32523        *mut *mut core::ffi::c_void,
32524    ) -> windows_core::HRESULT,
32525    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
32526}
32527pub trait IOlkEnum_Impl: windows_core::IUnknownImpl {
32528    fn GetCount(&self, pulcount: *mut u32) -> windows_core::Result<()>;
32529    fn Reset(&self) -> windows_core::Result<()>;
32530    fn GetNext(&self) -> windows_core::Result<windows_core::IUnknown>;
32531    fn Skip(&self, cskip: u32) -> windows_core::Result<()>;
32532}
32533impl IOlkEnum_Vtbl {
32534    pub const fn new<Identity: IOlkEnum_Impl, const OFFSET: isize>() -> Self {
32535        unsafe extern "system" fn GetCount<Identity: IOlkEnum_Impl, const OFFSET: isize>(
32536            this: *mut core::ffi::c_void,
32537            pulcount: *mut u32,
32538        ) -> windows_core::HRESULT {
32539            unsafe {
32540                let this: &Identity =
32541                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32542                IOlkEnum_Impl::GetCount(this, core::mem::transmute_copy(&pulcount)).into()
32543            }
32544        }
32545        unsafe extern "system" fn Reset<Identity: IOlkEnum_Impl, const OFFSET: isize>(
32546            this: *mut core::ffi::c_void,
32547        ) -> windows_core::HRESULT {
32548            unsafe {
32549                let this: &Identity =
32550                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32551                IOlkEnum_Impl::Reset(this).into()
32552            }
32553        }
32554        unsafe extern "system" fn GetNext<Identity: IOlkEnum_Impl, const OFFSET: isize>(
32555            this: *mut core::ffi::c_void,
32556            ppunk: *mut *mut core::ffi::c_void,
32557        ) -> windows_core::HRESULT {
32558            unsafe {
32559                let this: &Identity =
32560                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32561                match IOlkEnum_Impl::GetNext(this) {
32562                    Ok(ok__) => {
32563                        ppunk.write(core::mem::transmute(ok__));
32564                        windows_core::HRESULT(0)
32565                    }
32566                    Err(err) => err.into(),
32567                }
32568            }
32569        }
32570        unsafe extern "system" fn Skip<Identity: IOlkEnum_Impl, const OFFSET: isize>(
32571            this: *mut core::ffi::c_void,
32572            cskip: u32,
32573        ) -> windows_core::HRESULT {
32574            unsafe {
32575                let this: &Identity =
32576                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32577                IOlkEnum_Impl::Skip(this, core::mem::transmute_copy(&cskip)).into()
32578            }
32579        }
32580        Self {
32581            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32582            GetCount: GetCount::<Identity, OFFSET>,
32583            Reset: Reset::<Identity, OFFSET>,
32584            GetNext: GetNext::<Identity, OFFSET>,
32585            Skip: Skip::<Identity, OFFSET>,
32586        }
32587    }
32588    pub fn matches(iid: &windows_core::GUID) -> bool {
32589        iid == &<IOlkEnum as windows_core::Interface>::IID
32590    }
32591}
32592impl windows_core::RuntimeName for IOlkEnum {}
32593windows_core::imp::define_interface!(
32594    IOlkErrorUnknown,
32595    IOlkErrorUnknown_Vtbl,
32596    0x9240a6c0_af41_11d2_8c3b_00104b2a6676
32597);
32598windows_core::imp::interface_hierarchy!(IOlkErrorUnknown, windows_core::IUnknown);
32599impl IOlkErrorUnknown {
32600    pub unsafe fn GetLastError(
32601        &self,
32602        hr: windows_core::HRESULT,
32603        ppwszerror: *mut windows_core::PWSTR,
32604    ) -> windows_core::Result<()> {
32605        unsafe {
32606            (windows_core::Interface::vtable(self).GetLastError)(
32607                windows_core::Interface::as_raw(self),
32608                hr,
32609                ppwszerror as _,
32610            )
32611            .ok()
32612        }
32613    }
32614}
32615#[repr(C)]
32616#[doc(hidden)]
32617pub struct IOlkErrorUnknown_Vtbl {
32618    pub base__: windows_core::IUnknown_Vtbl,
32619    pub GetLastError: unsafe extern "system" fn(
32620        *mut core::ffi::c_void,
32621        windows_core::HRESULT,
32622        *mut windows_core::PWSTR,
32623    ) -> windows_core::HRESULT,
32624}
32625pub trait IOlkErrorUnknown_Impl: windows_core::IUnknownImpl {
32626    fn GetLastError(
32627        &self,
32628        hr: windows_core::HRESULT,
32629        ppwszerror: *mut windows_core::PWSTR,
32630    ) -> windows_core::Result<()>;
32631}
32632impl IOlkErrorUnknown_Vtbl {
32633    pub const fn new<Identity: IOlkErrorUnknown_Impl, const OFFSET: isize>() -> Self {
32634        unsafe extern "system" fn GetLastError<
32635            Identity: IOlkErrorUnknown_Impl,
32636            const OFFSET: isize,
32637        >(
32638            this: *mut core::ffi::c_void,
32639            hr: windows_core::HRESULT,
32640            ppwszerror: *mut windows_core::PWSTR,
32641        ) -> windows_core::HRESULT {
32642            unsafe {
32643                let this: &Identity =
32644                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32645                IOlkErrorUnknown_Impl::GetLastError(
32646                    this,
32647                    core::mem::transmute_copy(&hr),
32648                    core::mem::transmute_copy(&ppwszerror),
32649                )
32650                .into()
32651            }
32652        }
32653        Self {
32654            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32655            GetLastError: GetLastError::<Identity, OFFSET>,
32656        }
32657    }
32658    pub fn matches(iid: &windows_core::GUID) -> bool {
32659        iid == &<IOlkErrorUnknown as windows_core::Interface>::IID
32660    }
32661}
32662impl windows_core::RuntimeName for IOlkErrorUnknown {}
32663pub const IPROP_CLEAN: u32 = 65536u32;
32664pub const IPROP_DIRTY: u32 = 131072u32;
32665pub const IPROP_READONLY: u32 = 1u32;
32666pub const IPROP_READWRITE: u32 = 2u32;
32667windows_core::imp::define_interface!(
32668    IPersistMessage,
32669    IPersistMessage_Vtbl,
32670    0x0002032a_0000_0000_c000_000000000046
32671);
32672windows_core::imp::interface_hierarchy!(IPersistMessage, windows_core::IUnknown);
32673impl IPersistMessage {
32674    pub unsafe fn GetLastError(
32675        &self,
32676        hresult: windows_core::HRESULT,
32677        ulflags: u32,
32678        lppmapierror: *mut *mut MAPIERROR,
32679    ) -> windows_core::Result<()> {
32680        unsafe {
32681            (windows_core::Interface::vtable(self).GetLastError)(
32682                windows_core::Interface::as_raw(self),
32683                hresult,
32684                ulflags,
32685                lppmapierror as _,
32686            )
32687            .ok()
32688        }
32689    }
32690    pub unsafe fn GetClassID(
32691        &self,
32692        lpclassid: *mut windows_core::GUID,
32693    ) -> windows_core::Result<()> {
32694        unsafe {
32695            (windows_core::Interface::vtable(self).GetClassID)(
32696                windows_core::Interface::as_raw(self),
32697                lpclassid as _,
32698            )
32699            .ok()
32700        }
32701    }
32702    pub unsafe fn IsDirty(&self) -> windows_core::Result<()> {
32703        unsafe {
32704            (windows_core::Interface::vtable(self).IsDirty)(windows_core::Interface::as_raw(self))
32705                .ok()
32706        }
32707    }
32708    pub unsafe fn InitNew<P0, P1>(&self, pmessagesite: P0, pmessage: P1) -> windows_core::Result<()>
32709    where
32710        P0: windows_core::Param<IMAPIMessageSite>,
32711        P1: windows_core::Param<IMessage>,
32712    {
32713        unsafe {
32714            (windows_core::Interface::vtable(self).InitNew)(
32715                windows_core::Interface::as_raw(self),
32716                pmessagesite.param().abi(),
32717                pmessage.param().abi(),
32718            )
32719            .ok()
32720        }
32721    }
32722    pub unsafe fn Load<P0, P1>(
32723        &self,
32724        pmessagesite: P0,
32725        pmessage: P1,
32726        ulmessagestatus: u32,
32727        ulmessageflags: u32,
32728    ) -> windows_core::Result<()>
32729    where
32730        P0: windows_core::Param<IMAPIMessageSite>,
32731        P1: windows_core::Param<IMessage>,
32732    {
32733        unsafe {
32734            (windows_core::Interface::vtable(self).Load)(
32735                windows_core::Interface::as_raw(self),
32736                pmessagesite.param().abi(),
32737                pmessage.param().abi(),
32738                ulmessagestatus,
32739                ulmessageflags,
32740            )
32741            .ok()
32742        }
32743    }
32744    pub unsafe fn Save<P0>(&self, pmessage: P0, fsameasload: u32) -> windows_core::Result<()>
32745    where
32746        P0: windows_core::Param<IMessage>,
32747    {
32748        unsafe {
32749            (windows_core::Interface::vtable(self).Save)(
32750                windows_core::Interface::as_raw(self),
32751                pmessage.param().abi(),
32752                fsameasload,
32753            )
32754            .ok()
32755        }
32756    }
32757    pub unsafe fn SaveCompleted<P0>(&self, pmessage: P0) -> windows_core::Result<()>
32758    where
32759        P0: windows_core::Param<IMessage>,
32760    {
32761        unsafe {
32762            (windows_core::Interface::vtable(self).SaveCompleted)(
32763                windows_core::Interface::as_raw(self),
32764                pmessage.param().abi(),
32765            )
32766            .ok()
32767        }
32768    }
32769    pub unsafe fn HandsOffMessage(&self) -> windows_core::Result<()> {
32770        unsafe {
32771            (windows_core::Interface::vtable(self).HandsOffMessage)(
32772                windows_core::Interface::as_raw(self),
32773            )
32774            .ok()
32775        }
32776    }
32777}
32778#[repr(C)]
32779#[doc(hidden)]
32780pub struct IPersistMessage_Vtbl {
32781    pub base__: windows_core::IUnknown_Vtbl,
32782    pub GetLastError: unsafe extern "system" fn(
32783        *mut core::ffi::c_void,
32784        windows_core::HRESULT,
32785        u32,
32786        *mut *mut MAPIERROR,
32787    ) -> windows_core::HRESULT,
32788    pub GetClassID: unsafe extern "system" fn(
32789        *mut core::ffi::c_void,
32790        *mut windows_core::GUID,
32791    ) -> windows_core::HRESULT,
32792    pub IsDirty: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
32793    pub InitNew: unsafe extern "system" fn(
32794        *mut core::ffi::c_void,
32795        *mut core::ffi::c_void,
32796        *mut core::ffi::c_void,
32797    ) -> windows_core::HRESULT,
32798    pub Load: unsafe extern "system" fn(
32799        *mut core::ffi::c_void,
32800        *mut core::ffi::c_void,
32801        *mut core::ffi::c_void,
32802        u32,
32803        u32,
32804    ) -> windows_core::HRESULT,
32805    pub Save: unsafe extern "system" fn(
32806        *mut core::ffi::c_void,
32807        *mut core::ffi::c_void,
32808        u32,
32809    ) -> windows_core::HRESULT,
32810    pub SaveCompleted: unsafe extern "system" fn(
32811        *mut core::ffi::c_void,
32812        *mut core::ffi::c_void,
32813    ) -> windows_core::HRESULT,
32814    pub HandsOffMessage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
32815}
32816pub trait IPersistMessage_Impl: windows_core::IUnknownImpl {
32817    fn GetLastError(
32818        &self,
32819        hresult: windows_core::HRESULT,
32820        ulflags: u32,
32821        lppmapierror: *mut *mut MAPIERROR,
32822    ) -> windows_core::Result<()>;
32823    fn GetClassID(&self, lpclassid: *mut windows_core::GUID) -> windows_core::Result<()>;
32824    fn IsDirty(&self) -> windows_core::Result<()>;
32825    fn InitNew(
32826        &self,
32827        pmessagesite: windows_core::Ref<IMAPIMessageSite>,
32828        pmessage: windows_core::Ref<IMessage>,
32829    ) -> windows_core::Result<()>;
32830    fn Load(
32831        &self,
32832        pmessagesite: windows_core::Ref<IMAPIMessageSite>,
32833        pmessage: windows_core::Ref<IMessage>,
32834        ulmessagestatus: u32,
32835        ulmessageflags: u32,
32836    ) -> windows_core::Result<()>;
32837    fn Save(
32838        &self,
32839        pmessage: windows_core::Ref<IMessage>,
32840        fsameasload: u32,
32841    ) -> windows_core::Result<()>;
32842    fn SaveCompleted(&self, pmessage: windows_core::Ref<IMessage>) -> windows_core::Result<()>;
32843    fn HandsOffMessage(&self) -> windows_core::Result<()>;
32844}
32845impl IPersistMessage_Vtbl {
32846    pub const fn new<Identity: IPersistMessage_Impl, const OFFSET: isize>() -> Self {
32847        unsafe extern "system" fn GetLastError<
32848            Identity: IPersistMessage_Impl,
32849            const OFFSET: isize,
32850        >(
32851            this: *mut core::ffi::c_void,
32852            hresult: windows_core::HRESULT,
32853            ulflags: u32,
32854            lppmapierror: *mut *mut MAPIERROR,
32855        ) -> windows_core::HRESULT {
32856            unsafe {
32857                let this: &Identity =
32858                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32859                IPersistMessage_Impl::GetLastError(
32860                    this,
32861                    core::mem::transmute_copy(&hresult),
32862                    core::mem::transmute_copy(&ulflags),
32863                    core::mem::transmute_copy(&lppmapierror),
32864                )
32865                .into()
32866            }
32867        }
32868        unsafe extern "system" fn GetClassID<
32869            Identity: IPersistMessage_Impl,
32870            const OFFSET: isize,
32871        >(
32872            this: *mut core::ffi::c_void,
32873            lpclassid: *mut windows_core::GUID,
32874        ) -> windows_core::HRESULT {
32875            unsafe {
32876                let this: &Identity =
32877                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32878                IPersistMessage_Impl::GetClassID(this, core::mem::transmute_copy(&lpclassid)).into()
32879            }
32880        }
32881        unsafe extern "system" fn IsDirty<Identity: IPersistMessage_Impl, const OFFSET: isize>(
32882            this: *mut core::ffi::c_void,
32883        ) -> windows_core::HRESULT {
32884            unsafe {
32885                let this: &Identity =
32886                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32887                IPersistMessage_Impl::IsDirty(this).into()
32888            }
32889        }
32890        unsafe extern "system" fn InitNew<Identity: IPersistMessage_Impl, const OFFSET: isize>(
32891            this: *mut core::ffi::c_void,
32892            pmessagesite: *mut core::ffi::c_void,
32893            pmessage: *mut core::ffi::c_void,
32894        ) -> windows_core::HRESULT {
32895            unsafe {
32896                let this: &Identity =
32897                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32898                IPersistMessage_Impl::InitNew(
32899                    this,
32900                    core::mem::transmute_copy(&pmessagesite),
32901                    core::mem::transmute_copy(&pmessage),
32902                )
32903                .into()
32904            }
32905        }
32906        unsafe extern "system" fn Load<Identity: IPersistMessage_Impl, const OFFSET: isize>(
32907            this: *mut core::ffi::c_void,
32908            pmessagesite: *mut core::ffi::c_void,
32909            pmessage: *mut core::ffi::c_void,
32910            ulmessagestatus: u32,
32911            ulmessageflags: u32,
32912        ) -> windows_core::HRESULT {
32913            unsafe {
32914                let this: &Identity =
32915                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32916                IPersistMessage_Impl::Load(
32917                    this,
32918                    core::mem::transmute_copy(&pmessagesite),
32919                    core::mem::transmute_copy(&pmessage),
32920                    core::mem::transmute_copy(&ulmessagestatus),
32921                    core::mem::transmute_copy(&ulmessageflags),
32922                )
32923                .into()
32924            }
32925        }
32926        unsafe extern "system" fn Save<Identity: IPersistMessage_Impl, const OFFSET: isize>(
32927            this: *mut core::ffi::c_void,
32928            pmessage: *mut core::ffi::c_void,
32929            fsameasload: u32,
32930        ) -> windows_core::HRESULT {
32931            unsafe {
32932                let this: &Identity =
32933                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32934                IPersistMessage_Impl::Save(
32935                    this,
32936                    core::mem::transmute_copy(&pmessage),
32937                    core::mem::transmute_copy(&fsameasload),
32938                )
32939                .into()
32940            }
32941        }
32942        unsafe extern "system" fn SaveCompleted<
32943            Identity: IPersistMessage_Impl,
32944            const OFFSET: isize,
32945        >(
32946            this: *mut core::ffi::c_void,
32947            pmessage: *mut core::ffi::c_void,
32948        ) -> windows_core::HRESULT {
32949            unsafe {
32950                let this: &Identity =
32951                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32952                IPersistMessage_Impl::SaveCompleted(this, core::mem::transmute_copy(&pmessage))
32953                    .into()
32954            }
32955        }
32956        unsafe extern "system" fn HandsOffMessage<
32957            Identity: IPersistMessage_Impl,
32958            const OFFSET: isize,
32959        >(
32960            this: *mut core::ffi::c_void,
32961        ) -> windows_core::HRESULT {
32962            unsafe {
32963                let this: &Identity =
32964                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
32965                IPersistMessage_Impl::HandsOffMessage(this).into()
32966            }
32967        }
32968        Self {
32969            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
32970            GetLastError: GetLastError::<Identity, OFFSET>,
32971            GetClassID: GetClassID::<Identity, OFFSET>,
32972            IsDirty: IsDirty::<Identity, OFFSET>,
32973            InitNew: InitNew::<Identity, OFFSET>,
32974            Load: Load::<Identity, OFFSET>,
32975            Save: Save::<Identity, OFFSET>,
32976            SaveCompleted: SaveCompleted::<Identity, OFFSET>,
32977            HandsOffMessage: HandsOffMessage::<Identity, OFFSET>,
32978        }
32979    }
32980    pub fn matches(iid: &windows_core::GUID) -> bool {
32981        iid == &<IPersistMessage as windows_core::Interface>::IID
32982    }
32983}
32984impl windows_core::RuntimeName for IPersistMessage {}
32985windows_core::imp::define_interface!(
32986    IPersistMime,
32987    IPersistMime_Vtbl,
32988    0xde4ad8da_555f_11d1_8dd0_00c04fb951f9
32989);
32990impl core::ops::Deref for IPersistMime {
32991    type Target = windows::Win32::System::Com::IPersist;
32992    fn deref(&self) -> &Self::Target {
32993        unsafe { core::mem::transmute(self) }
32994    }
32995}
32996windows_core::imp::interface_hierarchy!(
32997    IPersistMime,
32998    windows_core::IUnknown,
32999    windows::Win32::System::Com::IPersist
33000);
33001impl IPersistMime {
33002    pub unsafe fn Load<P0>(&self, pmsg: P0) -> windows_core::Result<()>
33003    where
33004        P0: windows_core::Param<IMimeMessage>,
33005    {
33006        unsafe {
33007            (windows_core::Interface::vtable(self).Load)(
33008                windows_core::Interface::as_raw(self),
33009                pmsg.param().abi(),
33010            )
33011            .ok()
33012        }
33013    }
33014    pub unsafe fn Save<P0>(&self, pmsg: P0, dwflags: u32) -> windows_core::Result<()>
33015    where
33016        P0: windows_core::Param<IMimeMessage>,
33017    {
33018        unsafe {
33019            (windows_core::Interface::vtable(self).Save)(
33020                windows_core::Interface::as_raw(self),
33021                pmsg.param().abi(),
33022                dwflags,
33023            )
33024            .ok()
33025        }
33026    }
33027}
33028#[repr(C)]
33029#[doc(hidden)]
33030pub struct IPersistMime_Vtbl {
33031    pub base__: windows::Win32::System::Com::IPersist_Vtbl,
33032    pub Load: unsafe extern "system" fn(
33033        *mut core::ffi::c_void,
33034        *mut core::ffi::c_void,
33035    ) -> windows_core::HRESULT,
33036    pub Save: unsafe extern "system" fn(
33037        *mut core::ffi::c_void,
33038        *mut core::ffi::c_void,
33039        u32,
33040    ) -> windows_core::HRESULT,
33041}
33042pub trait IPersistMime_Impl: windows::Win32::System::Com::IPersist_Impl {
33043    fn Load(&self, pmsg: windows_core::Ref<IMimeMessage>) -> windows_core::Result<()>;
33044    fn Save(&self, pmsg: windows_core::Ref<IMimeMessage>, dwflags: u32)
33045        -> windows_core::Result<()>;
33046}
33047impl IPersistMime_Vtbl {
33048    pub const fn new<Identity: IPersistMime_Impl, const OFFSET: isize>() -> Self {
33049        unsafe extern "system" fn Load<Identity: IPersistMime_Impl, const OFFSET: isize>(
33050            this: *mut core::ffi::c_void,
33051            pmsg: *mut core::ffi::c_void,
33052        ) -> windows_core::HRESULT {
33053            unsafe {
33054                let this: &Identity =
33055                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33056                IPersistMime_Impl::Load(this, core::mem::transmute_copy(&pmsg)).into()
33057            }
33058        }
33059        unsafe extern "system" fn Save<Identity: IPersistMime_Impl, const OFFSET: isize>(
33060            this: *mut core::ffi::c_void,
33061            pmsg: *mut core::ffi::c_void,
33062            dwflags: u32,
33063        ) -> windows_core::HRESULT {
33064            unsafe {
33065                let this: &Identity =
33066                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33067                IPersistMime_Impl::Save(
33068                    this,
33069                    core::mem::transmute_copy(&pmsg),
33070                    core::mem::transmute_copy(&dwflags),
33071                )
33072                .into()
33073            }
33074        }
33075        Self {
33076            base__: windows::Win32::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(),
33077            Load: Load::<Identity, OFFSET>,
33078            Save: Save::<Identity, OFFSET>,
33079        }
33080    }
33081    pub fn matches(iid: &windows_core::GUID) -> bool {
33082        iid == &<IPersistMime as windows_core::Interface>::IID
33083            || iid == &<windows::Win32::System::Com::IPersist as windows_core::Interface>::IID
33084    }
33085}
33086impl windows_core::RuntimeName for IPersistMime {}
33087windows_core::imp::define_interface!(
33088    IProfAdmin,
33089    IProfAdmin_Vtbl,
33090    0x0002031c_0000_0000_c000_000000000046
33091);
33092windows_core::imp::interface_hierarchy!(IProfAdmin, windows_core::IUnknown);
33093impl IProfAdmin {
33094    pub unsafe fn GetLastError(
33095        &self,
33096        hresult: windows_core::HRESULT,
33097        ulflags: u32,
33098        lppmapierror: *mut *mut MAPIERROR,
33099    ) -> windows_core::Result<()> {
33100        unsafe {
33101            (windows_core::Interface::vtable(self).GetLastError)(
33102                windows_core::Interface::as_raw(self),
33103                hresult,
33104                ulflags,
33105                lppmapierror as _,
33106            )
33107            .ok()
33108        }
33109    }
33110    pub unsafe fn GetProfileTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
33111        unsafe {
33112            let mut result__ = core::mem::zeroed();
33113            (windows_core::Interface::vtable(self).GetProfileTable)(
33114                windows_core::Interface::as_raw(self),
33115                ulflags,
33116                &mut result__,
33117            )
33118            .and_then(|| windows_core::Type::from_abi(result__))
33119        }
33120    }
33121    pub unsafe fn CreateProfile(
33122        &self,
33123        lpszprofilename: *mut i8,
33124        lpszpassword: *mut i8,
33125        uluiparam: usize,
33126        ulflags: u32,
33127    ) -> windows_core::Result<()> {
33128        unsafe {
33129            (windows_core::Interface::vtable(self).CreateProfile)(
33130                windows_core::Interface::as_raw(self),
33131                lpszprofilename as _,
33132                lpszpassword as _,
33133                uluiparam,
33134                ulflags,
33135            )
33136            .ok()
33137        }
33138    }
33139    pub unsafe fn DeleteProfile(
33140        &self,
33141        lpszprofilename: *mut i8,
33142        ulflags: u32,
33143    ) -> windows_core::Result<()> {
33144        unsafe {
33145            (windows_core::Interface::vtable(self).DeleteProfile)(
33146                windows_core::Interface::as_raw(self),
33147                lpszprofilename as _,
33148                ulflags,
33149            )
33150            .ok()
33151        }
33152    }
33153    pub unsafe fn ChangeProfilePassword(
33154        &self,
33155        lpszprofilename: *mut i8,
33156        lpszoldpassword: *mut i8,
33157        lpsznewpassword: *mut i8,
33158        ulflags: u32,
33159    ) -> windows_core::Result<()> {
33160        unsafe {
33161            (windows_core::Interface::vtable(self).ChangeProfilePassword)(
33162                windows_core::Interface::as_raw(self),
33163                lpszprofilename as _,
33164                lpszoldpassword as _,
33165                lpsznewpassword as _,
33166                ulflags,
33167            )
33168            .ok()
33169        }
33170    }
33171    pub unsafe fn CopyProfile(
33172        &self,
33173        lpszoldprofilename: *mut i8,
33174        lpszoldpassword: *mut i8,
33175        lpsznewprofilename: *mut i8,
33176        uluiparam: usize,
33177        ulflags: u32,
33178    ) -> windows_core::Result<()> {
33179        unsafe {
33180            (windows_core::Interface::vtable(self).CopyProfile)(
33181                windows_core::Interface::as_raw(self),
33182                lpszoldprofilename as _,
33183                lpszoldpassword as _,
33184                lpsznewprofilename as _,
33185                uluiparam,
33186                ulflags,
33187            )
33188            .ok()
33189        }
33190    }
33191    pub unsafe fn RenameProfile(
33192        &self,
33193        lpszoldprofilename: *mut i8,
33194        lpszoldpassword: *mut i8,
33195        lpsznewprofilename: *mut i8,
33196        uluiparam: usize,
33197        ulflags: u32,
33198    ) -> windows_core::Result<()> {
33199        unsafe {
33200            (windows_core::Interface::vtable(self).RenameProfile)(
33201                windows_core::Interface::as_raw(self),
33202                lpszoldprofilename as _,
33203                lpszoldpassword as _,
33204                lpsznewprofilename as _,
33205                uluiparam,
33206                ulflags,
33207            )
33208            .ok()
33209        }
33210    }
33211    pub unsafe fn SetDefaultProfile(
33212        &self,
33213        lpszprofilename: *mut i8,
33214        ulflags: u32,
33215    ) -> windows_core::Result<()> {
33216        unsafe {
33217            (windows_core::Interface::vtable(self).SetDefaultProfile)(
33218                windows_core::Interface::as_raw(self),
33219                lpszprofilename as _,
33220                ulflags,
33221            )
33222            .ok()
33223        }
33224    }
33225    pub unsafe fn AdminServices(
33226        &self,
33227        lpszprofilename: *mut i8,
33228        lpszpassword: *mut i8,
33229        uluiparam: usize,
33230        ulflags: u32,
33231        lppserviceadmin: *mut Option<IMsgServiceAdmin>,
33232    ) -> windows_core::Result<()> {
33233        unsafe {
33234            (windows_core::Interface::vtable(self).AdminServices)(
33235                windows_core::Interface::as_raw(self),
33236                lpszprofilename as _,
33237                lpszpassword as _,
33238                uluiparam,
33239                ulflags,
33240                core::mem::transmute(lppserviceadmin),
33241            )
33242            .ok()
33243        }
33244    }
33245}
33246#[repr(C)]
33247#[doc(hidden)]
33248pub struct IProfAdmin_Vtbl {
33249    pub base__: windows_core::IUnknown_Vtbl,
33250    pub GetLastError: unsafe extern "system" fn(
33251        *mut core::ffi::c_void,
33252        windows_core::HRESULT,
33253        u32,
33254        *mut *mut MAPIERROR,
33255    ) -> windows_core::HRESULT,
33256    pub GetProfileTable: unsafe extern "system" fn(
33257        *mut core::ffi::c_void,
33258        u32,
33259        *mut *mut core::ffi::c_void,
33260    ) -> windows_core::HRESULT,
33261    pub CreateProfile: unsafe extern "system" fn(
33262        *mut core::ffi::c_void,
33263        *mut i8,
33264        *mut i8,
33265        usize,
33266        u32,
33267    ) -> windows_core::HRESULT,
33268    pub DeleteProfile:
33269        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i8, u32) -> windows_core::HRESULT,
33270    pub ChangeProfilePassword: unsafe extern "system" fn(
33271        *mut core::ffi::c_void,
33272        *mut i8,
33273        *mut i8,
33274        *mut i8,
33275        u32,
33276    ) -> windows_core::HRESULT,
33277    pub CopyProfile: unsafe extern "system" fn(
33278        *mut core::ffi::c_void,
33279        *mut i8,
33280        *mut i8,
33281        *mut i8,
33282        usize,
33283        u32,
33284    ) -> windows_core::HRESULT,
33285    pub RenameProfile: unsafe extern "system" fn(
33286        *mut core::ffi::c_void,
33287        *mut i8,
33288        *mut i8,
33289        *mut i8,
33290        usize,
33291        u32,
33292    ) -> windows_core::HRESULT,
33293    pub SetDefaultProfile:
33294        unsafe extern "system" fn(*mut core::ffi::c_void, *mut i8, u32) -> windows_core::HRESULT,
33295    pub AdminServices: unsafe extern "system" fn(
33296        *mut core::ffi::c_void,
33297        *mut i8,
33298        *mut i8,
33299        usize,
33300        u32,
33301        *mut *mut core::ffi::c_void,
33302    ) -> windows_core::HRESULT,
33303}
33304pub trait IProfAdmin_Impl: windows_core::IUnknownImpl {
33305    fn GetLastError(
33306        &self,
33307        hresult: windows_core::HRESULT,
33308        ulflags: u32,
33309        lppmapierror: *mut *mut MAPIERROR,
33310    ) -> windows_core::Result<()>;
33311    fn GetProfileTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
33312    fn CreateProfile(
33313        &self,
33314        lpszprofilename: *mut i8,
33315        lpszpassword: *mut i8,
33316        uluiparam: usize,
33317        ulflags: u32,
33318    ) -> windows_core::Result<()>;
33319    fn DeleteProfile(&self, lpszprofilename: *mut i8, ulflags: u32) -> windows_core::Result<()>;
33320    fn ChangeProfilePassword(
33321        &self,
33322        lpszprofilename: *mut i8,
33323        lpszoldpassword: *mut i8,
33324        lpsznewpassword: *mut i8,
33325        ulflags: u32,
33326    ) -> windows_core::Result<()>;
33327    fn CopyProfile(
33328        &self,
33329        lpszoldprofilename: *mut i8,
33330        lpszoldpassword: *mut i8,
33331        lpsznewprofilename: *mut i8,
33332        uluiparam: usize,
33333        ulflags: u32,
33334    ) -> windows_core::Result<()>;
33335    fn RenameProfile(
33336        &self,
33337        lpszoldprofilename: *mut i8,
33338        lpszoldpassword: *mut i8,
33339        lpsznewprofilename: *mut i8,
33340        uluiparam: usize,
33341        ulflags: u32,
33342    ) -> windows_core::Result<()>;
33343    fn SetDefaultProfile(&self, lpszprofilename: *mut i8, ulflags: u32)
33344        -> windows_core::Result<()>;
33345    fn AdminServices(
33346        &self,
33347        lpszprofilename: *mut i8,
33348        lpszpassword: *mut i8,
33349        uluiparam: usize,
33350        ulflags: u32,
33351        lppserviceadmin: windows_core::OutRef<IMsgServiceAdmin>,
33352    ) -> windows_core::Result<()>;
33353}
33354impl IProfAdmin_Vtbl {
33355    pub const fn new<Identity: IProfAdmin_Impl, const OFFSET: isize>() -> Self {
33356        unsafe extern "system" fn GetLastError<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33357            this: *mut core::ffi::c_void,
33358            hresult: windows_core::HRESULT,
33359            ulflags: u32,
33360            lppmapierror: *mut *mut MAPIERROR,
33361        ) -> windows_core::HRESULT {
33362            unsafe {
33363                let this: &Identity =
33364                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33365                IProfAdmin_Impl::GetLastError(
33366                    this,
33367                    core::mem::transmute_copy(&hresult),
33368                    core::mem::transmute_copy(&ulflags),
33369                    core::mem::transmute_copy(&lppmapierror),
33370                )
33371                .into()
33372            }
33373        }
33374        unsafe extern "system" fn GetProfileTable<
33375            Identity: IProfAdmin_Impl,
33376            const OFFSET: isize,
33377        >(
33378            this: *mut core::ffi::c_void,
33379            ulflags: u32,
33380            lpptable: *mut *mut core::ffi::c_void,
33381        ) -> windows_core::HRESULT {
33382            unsafe {
33383                let this: &Identity =
33384                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33385                match IProfAdmin_Impl::GetProfileTable(this, core::mem::transmute_copy(&ulflags)) {
33386                    Ok(ok__) => {
33387                        lpptable.write(core::mem::transmute(ok__));
33388                        windows_core::HRESULT(0)
33389                    }
33390                    Err(err) => err.into(),
33391                }
33392            }
33393        }
33394        unsafe extern "system" fn CreateProfile<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33395            this: *mut core::ffi::c_void,
33396            lpszprofilename: *mut i8,
33397            lpszpassword: *mut i8,
33398            uluiparam: usize,
33399            ulflags: u32,
33400        ) -> windows_core::HRESULT {
33401            unsafe {
33402                let this: &Identity =
33403                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33404                IProfAdmin_Impl::CreateProfile(
33405                    this,
33406                    core::mem::transmute_copy(&lpszprofilename),
33407                    core::mem::transmute_copy(&lpszpassword),
33408                    core::mem::transmute_copy(&uluiparam),
33409                    core::mem::transmute_copy(&ulflags),
33410                )
33411                .into()
33412            }
33413        }
33414        unsafe extern "system" fn DeleteProfile<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33415            this: *mut core::ffi::c_void,
33416            lpszprofilename: *mut i8,
33417            ulflags: u32,
33418        ) -> windows_core::HRESULT {
33419            unsafe {
33420                let this: &Identity =
33421                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33422                IProfAdmin_Impl::DeleteProfile(
33423                    this,
33424                    core::mem::transmute_copy(&lpszprofilename),
33425                    core::mem::transmute_copy(&ulflags),
33426                )
33427                .into()
33428            }
33429        }
33430        unsafe extern "system" fn ChangeProfilePassword<
33431            Identity: IProfAdmin_Impl,
33432            const OFFSET: isize,
33433        >(
33434            this: *mut core::ffi::c_void,
33435            lpszprofilename: *mut i8,
33436            lpszoldpassword: *mut i8,
33437            lpsznewpassword: *mut i8,
33438            ulflags: u32,
33439        ) -> windows_core::HRESULT {
33440            unsafe {
33441                let this: &Identity =
33442                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33443                IProfAdmin_Impl::ChangeProfilePassword(
33444                    this,
33445                    core::mem::transmute_copy(&lpszprofilename),
33446                    core::mem::transmute_copy(&lpszoldpassword),
33447                    core::mem::transmute_copy(&lpsznewpassword),
33448                    core::mem::transmute_copy(&ulflags),
33449                )
33450                .into()
33451            }
33452        }
33453        unsafe extern "system" fn CopyProfile<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33454            this: *mut core::ffi::c_void,
33455            lpszoldprofilename: *mut i8,
33456            lpszoldpassword: *mut i8,
33457            lpsznewprofilename: *mut i8,
33458            uluiparam: usize,
33459            ulflags: u32,
33460        ) -> windows_core::HRESULT {
33461            unsafe {
33462                let this: &Identity =
33463                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33464                IProfAdmin_Impl::CopyProfile(
33465                    this,
33466                    core::mem::transmute_copy(&lpszoldprofilename),
33467                    core::mem::transmute_copy(&lpszoldpassword),
33468                    core::mem::transmute_copy(&lpsznewprofilename),
33469                    core::mem::transmute_copy(&uluiparam),
33470                    core::mem::transmute_copy(&ulflags),
33471                )
33472                .into()
33473            }
33474        }
33475        unsafe extern "system" fn RenameProfile<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33476            this: *mut core::ffi::c_void,
33477            lpszoldprofilename: *mut i8,
33478            lpszoldpassword: *mut i8,
33479            lpsznewprofilename: *mut i8,
33480            uluiparam: usize,
33481            ulflags: u32,
33482        ) -> windows_core::HRESULT {
33483            unsafe {
33484                let this: &Identity =
33485                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33486                IProfAdmin_Impl::RenameProfile(
33487                    this,
33488                    core::mem::transmute_copy(&lpszoldprofilename),
33489                    core::mem::transmute_copy(&lpszoldpassword),
33490                    core::mem::transmute_copy(&lpsznewprofilename),
33491                    core::mem::transmute_copy(&uluiparam),
33492                    core::mem::transmute_copy(&ulflags),
33493                )
33494                .into()
33495            }
33496        }
33497        unsafe extern "system" fn SetDefaultProfile<
33498            Identity: IProfAdmin_Impl,
33499            const OFFSET: isize,
33500        >(
33501            this: *mut core::ffi::c_void,
33502            lpszprofilename: *mut i8,
33503            ulflags: u32,
33504        ) -> windows_core::HRESULT {
33505            unsafe {
33506                let this: &Identity =
33507                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33508                IProfAdmin_Impl::SetDefaultProfile(
33509                    this,
33510                    core::mem::transmute_copy(&lpszprofilename),
33511                    core::mem::transmute_copy(&ulflags),
33512                )
33513                .into()
33514            }
33515        }
33516        unsafe extern "system" fn AdminServices<Identity: IProfAdmin_Impl, const OFFSET: isize>(
33517            this: *mut core::ffi::c_void,
33518            lpszprofilename: *mut i8,
33519            lpszpassword: *mut i8,
33520            uluiparam: usize,
33521            ulflags: u32,
33522            lppserviceadmin: *mut *mut core::ffi::c_void,
33523        ) -> windows_core::HRESULT {
33524            unsafe {
33525                let this: &Identity =
33526                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33527                IProfAdmin_Impl::AdminServices(
33528                    this,
33529                    core::mem::transmute_copy(&lpszprofilename),
33530                    core::mem::transmute_copy(&lpszpassword),
33531                    core::mem::transmute_copy(&uluiparam),
33532                    core::mem::transmute_copy(&ulflags),
33533                    core::mem::transmute_copy(&lppserviceadmin),
33534                )
33535                .into()
33536            }
33537        }
33538        Self {
33539            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
33540            GetLastError: GetLastError::<Identity, OFFSET>,
33541            GetProfileTable: GetProfileTable::<Identity, OFFSET>,
33542            CreateProfile: CreateProfile::<Identity, OFFSET>,
33543            DeleteProfile: DeleteProfile::<Identity, OFFSET>,
33544            ChangeProfilePassword: ChangeProfilePassword::<Identity, OFFSET>,
33545            CopyProfile: CopyProfile::<Identity, OFFSET>,
33546            RenameProfile: RenameProfile::<Identity, OFFSET>,
33547            SetDefaultProfile: SetDefaultProfile::<Identity, OFFSET>,
33548            AdminServices: AdminServices::<Identity, OFFSET>,
33549        }
33550    }
33551    pub fn matches(iid: &windows_core::GUID) -> bool {
33552        iid == &<IProfAdmin as windows_core::Interface>::IID
33553    }
33554}
33555impl windows_core::RuntimeName for IProfAdmin {}
33556windows_core::imp::define_interface!(
33557    IProfSect,
33558    IProfSect_Vtbl,
33559    0x00020304_0000_0000_c000_000000000046
33560);
33561impl core::ops::Deref for IProfSect {
33562    type Target = IMAPIProp;
33563    fn deref(&self) -> &Self::Target {
33564        unsafe { core::mem::transmute(self) }
33565    }
33566}
33567windows_core::imp::interface_hierarchy!(IProfSect, windows_core::IUnknown, IMAPIProp);
33568#[repr(C)]
33569#[doc(hidden)]
33570pub struct IProfSect_Vtbl {
33571    pub base__: IMAPIProp_Vtbl,
33572}
33573pub trait IProfSect_Impl: IMAPIProp_Impl {}
33574impl IProfSect_Vtbl {
33575    pub const fn new<Identity: IProfSect_Impl, const OFFSET: isize>() -> Self {
33576        Self {
33577            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
33578        }
33579    }
33580    pub fn matches(iid: &windows_core::GUID) -> bool {
33581        iid == &<IProfSect as windows_core::Interface>::IID
33582            || iid == &<IMAPIProp as windows_core::Interface>::IID
33583    }
33584}
33585impl windows_core::RuntimeName for IProfSect {}
33586windows_core::imp::define_interface!(IPropData, IPropData_Vtbl, 0);
33587impl core::ops::Deref for IPropData {
33588    type Target = IMAPIProp;
33589    fn deref(&self) -> &Self::Target {
33590        unsafe { core::mem::transmute(self) }
33591    }
33592}
33593windows_core::imp::interface_hierarchy!(IPropData, windows_core::IUnknown, IMAPIProp);
33594impl IPropData {
33595    pub unsafe fn HrSetObjAccess(&self, ulaccess: u32) -> windows_core::Result<()> {
33596        unsafe {
33597            (windows_core::Interface::vtable(self).HrSetObjAccess)(
33598                windows_core::Interface::as_raw(self),
33599                ulaccess,
33600            )
33601            .ok()
33602        }
33603    }
33604    pub unsafe fn HrSetPropAccess(
33605        &self,
33606        lpproptagarray: *mut SPropTagArray,
33607        rgulaccess: *mut u32,
33608    ) -> windows_core::Result<()> {
33609        unsafe {
33610            (windows_core::Interface::vtable(self).HrSetPropAccess)(
33611                windows_core::Interface::as_raw(self),
33612                lpproptagarray as _,
33613                rgulaccess as _,
33614            )
33615            .ok()
33616        }
33617    }
33618    pub unsafe fn HrGetPropAccess(
33619        &self,
33620        lppproptagarray: *mut *mut SPropTagArray,
33621        lprgulaccess: *mut *mut u32,
33622    ) -> windows_core::Result<()> {
33623        unsafe {
33624            (windows_core::Interface::vtable(self).HrGetPropAccess)(
33625                windows_core::Interface::as_raw(self),
33626                lppproptagarray as _,
33627                lprgulaccess as _,
33628            )
33629            .ok()
33630        }
33631    }
33632    pub unsafe fn HrAddObjProps(
33633        &self,
33634        lppproptagarray: *mut SPropTagArray,
33635        lprgulaccess: *mut *mut SPropProblemArray,
33636    ) -> windows_core::Result<()> {
33637        unsafe {
33638            (windows_core::Interface::vtable(self).HrAddObjProps)(
33639                windows_core::Interface::as_raw(self),
33640                lppproptagarray as _,
33641                lprgulaccess as _,
33642            )
33643            .ok()
33644        }
33645    }
33646}
33647#[repr(C)]
33648#[doc(hidden)]
33649pub struct IPropData_Vtbl {
33650    pub base__: IMAPIProp_Vtbl,
33651    pub HrSetObjAccess:
33652        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
33653    pub HrSetPropAccess: unsafe extern "system" fn(
33654        *mut core::ffi::c_void,
33655        *mut SPropTagArray,
33656        *mut u32,
33657    ) -> windows_core::HRESULT,
33658    pub HrGetPropAccess: unsafe extern "system" fn(
33659        *mut core::ffi::c_void,
33660        *mut *mut SPropTagArray,
33661        *mut *mut u32,
33662    ) -> windows_core::HRESULT,
33663    pub HrAddObjProps: unsafe extern "system" fn(
33664        *mut core::ffi::c_void,
33665        *mut SPropTagArray,
33666        *mut *mut SPropProblemArray,
33667    ) -> windows_core::HRESULT,
33668}
33669pub trait IPropData_Impl: IMAPIProp_Impl {
33670    fn HrSetObjAccess(&self, ulaccess: u32) -> windows_core::Result<()>;
33671    fn HrSetPropAccess(
33672        &self,
33673        lpproptagarray: *mut SPropTagArray,
33674        rgulaccess: *mut u32,
33675    ) -> windows_core::Result<()>;
33676    fn HrGetPropAccess(
33677        &self,
33678        lppproptagarray: *mut *mut SPropTagArray,
33679        lprgulaccess: *mut *mut u32,
33680    ) -> windows_core::Result<()>;
33681    fn HrAddObjProps(
33682        &self,
33683        lppproptagarray: *mut SPropTagArray,
33684        lprgulaccess: *mut *mut SPropProblemArray,
33685    ) -> windows_core::Result<()>;
33686}
33687impl IPropData_Vtbl {
33688    pub const fn new<Identity: IPropData_Impl, const OFFSET: isize>() -> Self {
33689        unsafe extern "system" fn HrSetObjAccess<Identity: IPropData_Impl, const OFFSET: isize>(
33690            this: *mut core::ffi::c_void,
33691            ulaccess: u32,
33692        ) -> windows_core::HRESULT {
33693            unsafe {
33694                let this: &Identity =
33695                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33696                IPropData_Impl::HrSetObjAccess(this, core::mem::transmute_copy(&ulaccess)).into()
33697            }
33698        }
33699        unsafe extern "system" fn HrSetPropAccess<Identity: IPropData_Impl, const OFFSET: isize>(
33700            this: *mut core::ffi::c_void,
33701            lpproptagarray: *mut SPropTagArray,
33702            rgulaccess: *mut u32,
33703        ) -> windows_core::HRESULT {
33704            unsafe {
33705                let this: &Identity =
33706                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33707                IPropData_Impl::HrSetPropAccess(
33708                    this,
33709                    core::mem::transmute_copy(&lpproptagarray),
33710                    core::mem::transmute_copy(&rgulaccess),
33711                )
33712                .into()
33713            }
33714        }
33715        unsafe extern "system" fn HrGetPropAccess<Identity: IPropData_Impl, const OFFSET: isize>(
33716            this: *mut core::ffi::c_void,
33717            lppproptagarray: *mut *mut SPropTagArray,
33718            lprgulaccess: *mut *mut u32,
33719        ) -> windows_core::HRESULT {
33720            unsafe {
33721                let this: &Identity =
33722                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33723                IPropData_Impl::HrGetPropAccess(
33724                    this,
33725                    core::mem::transmute_copy(&lppproptagarray),
33726                    core::mem::transmute_copy(&lprgulaccess),
33727                )
33728                .into()
33729            }
33730        }
33731        unsafe extern "system" fn HrAddObjProps<Identity: IPropData_Impl, const OFFSET: isize>(
33732            this: *mut core::ffi::c_void,
33733            lppproptagarray: *mut SPropTagArray,
33734            lprgulaccess: *mut *mut SPropProblemArray,
33735        ) -> windows_core::HRESULT {
33736            unsafe {
33737                let this: &Identity =
33738                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33739                IPropData_Impl::HrAddObjProps(
33740                    this,
33741                    core::mem::transmute_copy(&lppproptagarray),
33742                    core::mem::transmute_copy(&lprgulaccess),
33743                )
33744                .into()
33745            }
33746        }
33747        Self {
33748            base__: IMAPIProp_Vtbl::new::<Identity, OFFSET>(),
33749            HrSetObjAccess: HrSetObjAccess::<Identity, OFFSET>,
33750            HrSetPropAccess: HrSetPropAccess::<Identity, OFFSET>,
33751            HrGetPropAccess: HrGetPropAccess::<Identity, OFFSET>,
33752            HrAddObjProps: HrAddObjProps::<Identity, OFFSET>,
33753        }
33754    }
33755    pub fn matches(iid: &windows_core::GUID) -> bool {
33756        iid == &<IPropData as windows_core::Interface>::IID
33757            || iid == &<IMAPIProp as windows_core::Interface>::IID
33758    }
33759}
33760impl windows_core::RuntimeName for IPropData {}
33761windows_core::imp::define_interface!(
33762    IProviderAdmin,
33763    IProviderAdmin_Vtbl,
33764    0x00020325_0000_0000_c000_000000000046
33765);
33766windows_core::imp::interface_hierarchy!(IProviderAdmin, windows_core::IUnknown);
33767impl IProviderAdmin {
33768    pub unsafe fn GetLastError(
33769        &self,
33770        hresult: windows_core::HRESULT,
33771        ulflags: u32,
33772        lppmapierror: *mut *mut MAPIERROR,
33773    ) -> windows_core::Result<()> {
33774        unsafe {
33775            (windows_core::Interface::vtable(self).GetLastError)(
33776                windows_core::Interface::as_raw(self),
33777                hresult,
33778                ulflags,
33779                lppmapierror as _,
33780            )
33781            .ok()
33782        }
33783    }
33784    pub unsafe fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable> {
33785        unsafe {
33786            let mut result__ = core::mem::zeroed();
33787            (windows_core::Interface::vtable(self).GetProviderTable)(
33788                windows_core::Interface::as_raw(self),
33789                ulflags,
33790                &mut result__,
33791            )
33792            .and_then(|| windows_core::Type::from_abi(result__))
33793        }
33794    }
33795    pub unsafe fn CreateProvider(
33796        &self,
33797        lpszprovider: *mut i8,
33798        cvalues: u32,
33799        lpprops: *mut SPropValue,
33800        uluiparam: usize,
33801        ulflags: u32,
33802        lpuid: *mut MAPIUID,
33803    ) -> windows_core::Result<()> {
33804        unsafe {
33805            (windows_core::Interface::vtable(self).CreateProvider)(
33806                windows_core::Interface::as_raw(self),
33807                lpszprovider as _,
33808                cvalues,
33809                lpprops as _,
33810                uluiparam,
33811                ulflags,
33812                lpuid as _,
33813            )
33814            .ok()
33815        }
33816    }
33817    pub unsafe fn DeleteProvider(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()> {
33818        unsafe {
33819            (windows_core::Interface::vtable(self).DeleteProvider)(
33820                windows_core::Interface::as_raw(self),
33821                lpuid as _,
33822            )
33823            .ok()
33824        }
33825    }
33826    pub unsafe fn OpenProfileSection(
33827        &self,
33828        lpuid: *mut MAPIUID,
33829        lpinterface: *mut windows_core::GUID,
33830        ulflags: u32,
33831        lppprofsect: *mut Option<IProfSect>,
33832    ) -> windows_core::Result<()> {
33833        unsafe {
33834            (windows_core::Interface::vtable(self).OpenProfileSection)(
33835                windows_core::Interface::as_raw(self),
33836                lpuid as _,
33837                lpinterface as _,
33838                ulflags,
33839                core::mem::transmute(lppprofsect),
33840            )
33841            .ok()
33842        }
33843    }
33844}
33845#[repr(C)]
33846#[doc(hidden)]
33847pub struct IProviderAdmin_Vtbl {
33848    pub base__: windows_core::IUnknown_Vtbl,
33849    pub GetLastError: unsafe extern "system" fn(
33850        *mut core::ffi::c_void,
33851        windows_core::HRESULT,
33852        u32,
33853        *mut *mut MAPIERROR,
33854    ) -> windows_core::HRESULT,
33855    pub GetProviderTable: unsafe extern "system" fn(
33856        *mut core::ffi::c_void,
33857        u32,
33858        *mut *mut core::ffi::c_void,
33859    ) -> windows_core::HRESULT,
33860    pub CreateProvider: unsafe extern "system" fn(
33861        *mut core::ffi::c_void,
33862        *mut i8,
33863        u32,
33864        *mut SPropValue,
33865        usize,
33866        u32,
33867        *mut MAPIUID,
33868    ) -> windows_core::HRESULT,
33869    pub DeleteProvider:
33870        unsafe extern "system" fn(*mut core::ffi::c_void, *mut MAPIUID) -> windows_core::HRESULT,
33871    pub OpenProfileSection: unsafe extern "system" fn(
33872        *mut core::ffi::c_void,
33873        *mut MAPIUID,
33874        *mut windows_core::GUID,
33875        u32,
33876        *mut *mut core::ffi::c_void,
33877    ) -> windows_core::HRESULT,
33878}
33879pub trait IProviderAdmin_Impl: windows_core::IUnknownImpl {
33880    fn GetLastError(
33881        &self,
33882        hresult: windows_core::HRESULT,
33883        ulflags: u32,
33884        lppmapierror: *mut *mut MAPIERROR,
33885    ) -> windows_core::Result<()>;
33886    fn GetProviderTable(&self, ulflags: u32) -> windows_core::Result<IMAPITable>;
33887    fn CreateProvider(
33888        &self,
33889        lpszprovider: *mut i8,
33890        cvalues: u32,
33891        lpprops: *mut SPropValue,
33892        uluiparam: usize,
33893        ulflags: u32,
33894        lpuid: *mut MAPIUID,
33895    ) -> windows_core::Result<()>;
33896    fn DeleteProvider(&self, lpuid: *mut MAPIUID) -> windows_core::Result<()>;
33897    fn OpenProfileSection(
33898        &self,
33899        lpuid: *mut MAPIUID,
33900        lpinterface: *mut windows_core::GUID,
33901        ulflags: u32,
33902        lppprofsect: windows_core::OutRef<IProfSect>,
33903    ) -> windows_core::Result<()>;
33904}
33905impl IProviderAdmin_Vtbl {
33906    pub const fn new<Identity: IProviderAdmin_Impl, const OFFSET: isize>() -> Self {
33907        unsafe extern "system" fn GetLastError<
33908            Identity: IProviderAdmin_Impl,
33909            const OFFSET: isize,
33910        >(
33911            this: *mut core::ffi::c_void,
33912            hresult: windows_core::HRESULT,
33913            ulflags: u32,
33914            lppmapierror: *mut *mut MAPIERROR,
33915        ) -> windows_core::HRESULT {
33916            unsafe {
33917                let this: &Identity =
33918                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33919                IProviderAdmin_Impl::GetLastError(
33920                    this,
33921                    core::mem::transmute_copy(&hresult),
33922                    core::mem::transmute_copy(&ulflags),
33923                    core::mem::transmute_copy(&lppmapierror),
33924                )
33925                .into()
33926            }
33927        }
33928        unsafe extern "system" fn GetProviderTable<
33929            Identity: IProviderAdmin_Impl,
33930            const OFFSET: isize,
33931        >(
33932            this: *mut core::ffi::c_void,
33933            ulflags: u32,
33934            lpptable: *mut *mut core::ffi::c_void,
33935        ) -> windows_core::HRESULT {
33936            unsafe {
33937                let this: &Identity =
33938                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33939                match IProviderAdmin_Impl::GetProviderTable(
33940                    this,
33941                    core::mem::transmute_copy(&ulflags),
33942                ) {
33943                    Ok(ok__) => {
33944                        lpptable.write(core::mem::transmute(ok__));
33945                        windows_core::HRESULT(0)
33946                    }
33947                    Err(err) => err.into(),
33948                }
33949            }
33950        }
33951        unsafe extern "system" fn CreateProvider<
33952            Identity: IProviderAdmin_Impl,
33953            const OFFSET: isize,
33954        >(
33955            this: *mut core::ffi::c_void,
33956            lpszprovider: *mut i8,
33957            cvalues: u32,
33958            lpprops: *mut SPropValue,
33959            uluiparam: usize,
33960            ulflags: u32,
33961            lpuid: *mut MAPIUID,
33962        ) -> windows_core::HRESULT {
33963            unsafe {
33964                let this: &Identity =
33965                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33966                IProviderAdmin_Impl::CreateProvider(
33967                    this,
33968                    core::mem::transmute_copy(&lpszprovider),
33969                    core::mem::transmute_copy(&cvalues),
33970                    core::mem::transmute_copy(&lpprops),
33971                    core::mem::transmute_copy(&uluiparam),
33972                    core::mem::transmute_copy(&ulflags),
33973                    core::mem::transmute_copy(&lpuid),
33974                )
33975                .into()
33976            }
33977        }
33978        unsafe extern "system" fn DeleteProvider<
33979            Identity: IProviderAdmin_Impl,
33980            const OFFSET: isize,
33981        >(
33982            this: *mut core::ffi::c_void,
33983            lpuid: *mut MAPIUID,
33984        ) -> windows_core::HRESULT {
33985            unsafe {
33986                let this: &Identity =
33987                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
33988                IProviderAdmin_Impl::DeleteProvider(this, core::mem::transmute_copy(&lpuid)).into()
33989            }
33990        }
33991        unsafe extern "system" fn OpenProfileSection<
33992            Identity: IProviderAdmin_Impl,
33993            const OFFSET: isize,
33994        >(
33995            this: *mut core::ffi::c_void,
33996            lpuid: *mut MAPIUID,
33997            lpinterface: *mut windows_core::GUID,
33998            ulflags: u32,
33999            lppprofsect: *mut *mut core::ffi::c_void,
34000        ) -> windows_core::HRESULT {
34001            unsafe {
34002                let this: &Identity =
34003                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34004                IProviderAdmin_Impl::OpenProfileSection(
34005                    this,
34006                    core::mem::transmute_copy(&lpuid),
34007                    core::mem::transmute_copy(&lpinterface),
34008                    core::mem::transmute_copy(&ulflags),
34009                    core::mem::transmute_copy(&lppprofsect),
34010                )
34011                .into()
34012            }
34013        }
34014        Self {
34015            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
34016            GetLastError: GetLastError::<Identity, OFFSET>,
34017            GetProviderTable: GetProviderTable::<Identity, OFFSET>,
34018            CreateProvider: CreateProvider::<Identity, OFFSET>,
34019            DeleteProvider: DeleteProvider::<Identity, OFFSET>,
34020            OpenProfileSection: OpenProfileSection::<Identity, OFFSET>,
34021        }
34022    }
34023    pub fn matches(iid: &windows_core::GUID) -> bool {
34024        iid == &<IProviderAdmin as windows_core::Interface>::IID
34025    }
34026}
34027impl windows_core::RuntimeName for IProviderAdmin {}
34028windows_core::imp::define_interface!(
34029    ISpoolerHook,
34030    ISpoolerHook_Vtbl,
34031    0x00020320_0000_0000_c000_000000000046
34032);
34033windows_core::imp::interface_hierarchy!(ISpoolerHook, windows_core::IUnknown);
34034impl ISpoolerHook {
34035    pub unsafe fn InboundMsgHook<P0, P1, P2>(
34036        &self,
34037        lpmessage: P0,
34038        lpfolder: P1,
34039        lpmdb: P2,
34040        lpulflags: *mut u32,
34041        lpcbentryid: *mut u32,
34042        lppentryid: *mut *mut u8,
34043    ) -> windows_core::Result<()>
34044    where
34045        P0: windows_core::Param<IMessage>,
34046        P1: windows_core::Param<IMAPIFolder>,
34047        P2: windows_core::Param<IMsgStore>,
34048    {
34049        unsafe {
34050            (windows_core::Interface::vtable(self).InboundMsgHook)(
34051                windows_core::Interface::as_raw(self),
34052                lpmessage.param().abi(),
34053                lpfolder.param().abi(),
34054                lpmdb.param().abi(),
34055                lpulflags as _,
34056                lpcbentryid as _,
34057                lppentryid as _,
34058            )
34059            .ok()
34060        }
34061    }
34062    pub unsafe fn OutboundMsgHook<P0, P1, P2>(
34063        &self,
34064        lpmessage: P0,
34065        lpfolder: P1,
34066        lpmdb: P2,
34067        lpulflags: *mut u32,
34068        lpcbentryid: *mut u32,
34069        lppentryid: *mut *mut u8,
34070    ) -> windows_core::Result<()>
34071    where
34072        P0: windows_core::Param<IMessage>,
34073        P1: windows_core::Param<IMAPIFolder>,
34074        P2: windows_core::Param<IMsgStore>,
34075    {
34076        unsafe {
34077            (windows_core::Interface::vtable(self).OutboundMsgHook)(
34078                windows_core::Interface::as_raw(self),
34079                lpmessage.param().abi(),
34080                lpfolder.param().abi(),
34081                lpmdb.param().abi(),
34082                lpulflags as _,
34083                lpcbentryid as _,
34084                lppentryid as _,
34085            )
34086            .ok()
34087        }
34088    }
34089}
34090#[repr(C)]
34091#[doc(hidden)]
34092pub struct ISpoolerHook_Vtbl {
34093    pub base__: windows_core::IUnknown_Vtbl,
34094    pub InboundMsgHook: unsafe extern "system" fn(
34095        *mut core::ffi::c_void,
34096        *mut core::ffi::c_void,
34097        *mut core::ffi::c_void,
34098        *mut core::ffi::c_void,
34099        *mut u32,
34100        *mut u32,
34101        *mut *mut u8,
34102    ) -> windows_core::HRESULT,
34103    pub OutboundMsgHook: unsafe extern "system" fn(
34104        *mut core::ffi::c_void,
34105        *mut core::ffi::c_void,
34106        *mut core::ffi::c_void,
34107        *mut core::ffi::c_void,
34108        *mut u32,
34109        *mut u32,
34110        *mut *mut u8,
34111    ) -> windows_core::HRESULT,
34112}
34113pub trait ISpoolerHook_Impl: windows_core::IUnknownImpl {
34114    fn InboundMsgHook(
34115        &self,
34116        lpmessage: windows_core::Ref<IMessage>,
34117        lpfolder: windows_core::Ref<IMAPIFolder>,
34118        lpmdb: windows_core::Ref<IMsgStore>,
34119        lpulflags: *mut u32,
34120        lpcbentryid: *mut u32,
34121        lppentryid: *mut *mut u8,
34122    ) -> windows_core::Result<()>;
34123    fn OutboundMsgHook(
34124        &self,
34125        lpmessage: windows_core::Ref<IMessage>,
34126        lpfolder: windows_core::Ref<IMAPIFolder>,
34127        lpmdb: windows_core::Ref<IMsgStore>,
34128        lpulflags: *mut u32,
34129        lpcbentryid: *mut u32,
34130        lppentryid: *mut *mut u8,
34131    ) -> windows_core::Result<()>;
34132}
34133impl ISpoolerHook_Vtbl {
34134    pub const fn new<Identity: ISpoolerHook_Impl, const OFFSET: isize>() -> Self {
34135        unsafe extern "system" fn InboundMsgHook<
34136            Identity: ISpoolerHook_Impl,
34137            const OFFSET: isize,
34138        >(
34139            this: *mut core::ffi::c_void,
34140            lpmessage: *mut core::ffi::c_void,
34141            lpfolder: *mut core::ffi::c_void,
34142            lpmdb: *mut core::ffi::c_void,
34143            lpulflags: *mut u32,
34144            lpcbentryid: *mut u32,
34145            lppentryid: *mut *mut u8,
34146        ) -> windows_core::HRESULT {
34147            unsafe {
34148                let this: &Identity =
34149                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34150                ISpoolerHook_Impl::InboundMsgHook(
34151                    this,
34152                    core::mem::transmute_copy(&lpmessage),
34153                    core::mem::transmute_copy(&lpfolder),
34154                    core::mem::transmute_copy(&lpmdb),
34155                    core::mem::transmute_copy(&lpulflags),
34156                    core::mem::transmute_copy(&lpcbentryid),
34157                    core::mem::transmute_copy(&lppentryid),
34158                )
34159                .into()
34160            }
34161        }
34162        unsafe extern "system" fn OutboundMsgHook<
34163            Identity: ISpoolerHook_Impl,
34164            const OFFSET: isize,
34165        >(
34166            this: *mut core::ffi::c_void,
34167            lpmessage: *mut core::ffi::c_void,
34168            lpfolder: *mut core::ffi::c_void,
34169            lpmdb: *mut core::ffi::c_void,
34170            lpulflags: *mut u32,
34171            lpcbentryid: *mut u32,
34172            lppentryid: *mut *mut u8,
34173        ) -> windows_core::HRESULT {
34174            unsafe {
34175                let this: &Identity =
34176                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34177                ISpoolerHook_Impl::OutboundMsgHook(
34178                    this,
34179                    core::mem::transmute_copy(&lpmessage),
34180                    core::mem::transmute_copy(&lpfolder),
34181                    core::mem::transmute_copy(&lpmdb),
34182                    core::mem::transmute_copy(&lpulflags),
34183                    core::mem::transmute_copy(&lpcbentryid),
34184                    core::mem::transmute_copy(&lppentryid),
34185                )
34186                .into()
34187            }
34188        }
34189        Self {
34190            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
34191            InboundMsgHook: InboundMsgHook::<Identity, OFFSET>,
34192            OutboundMsgHook: OutboundMsgHook::<Identity, OFFSET>,
34193        }
34194    }
34195    pub fn matches(iid: &windows_core::GUID) -> bool {
34196        iid == &<ISpoolerHook as windows_core::Interface>::IID
34197    }
34198}
34199impl windows_core::RuntimeName for ISpoolerHook {}
34200pub const IStream_Clone: METHODS = METHODS(136i32);
34201pub const IStream_Commit: METHODS = METHODS(131i32);
34202pub const IStream_CopyTo: METHODS = METHODS(130i32);
34203pub const IStream_LockRegion: METHODS = METHODS(133i32);
34204pub const IStream_Revert: METHODS = METHODS(132i32);
34205pub const IStream_Seek: METHODS = METHODS(128i32);
34206pub const IStream_SetSize: METHODS = METHODS(129i32);
34207pub const IStream_Stat: METHODS = METHODS(135i32);
34208pub const IStream_UnlockRegion: METHODS = METHODS(134i32);
34209pub const IStream__Read: METHODS = METHODS(126i32);
34210pub const IStream__Write: METHODS = METHODS(127i32);
34211pub const ITEMPROC_FORCE: u32 = 2048u32;
34212pub const ITT_ENCRYPTION: u32 = 2u32;
34213pub const ITT_SIGNING: u32 = 1u32;
34214windows_core::imp::define_interface!(ITableData, ITableData_Vtbl, 0);
34215windows_core::imp::interface_hierarchy!(ITableData, windows_core::IUnknown);
34216impl ITableData {
34217    pub unsafe fn HrGetView(
34218        &self,
34219        lpssortorderset: *mut SSortOrderSet,
34220        lpfcallerrelease: *mut windows::Win32::System::AddressBook::CALLERRELEASE,
34221        ulcallerdata: usize,
34222        lppmapitable: *mut Option<IMAPITable>,
34223    ) -> windows_core::Result<()> {
34224        unsafe {
34225            (windows_core::Interface::vtable(self).HrGetView)(
34226                windows_core::Interface::as_raw(self),
34227                lpssortorderset as _,
34228                lpfcallerrelease as _,
34229                ulcallerdata,
34230                core::mem::transmute(lppmapitable),
34231            )
34232            .ok()
34233        }
34234    }
34235    pub unsafe fn HrModifyRow(&self, param0: *mut SRow) -> windows_core::Result<()> {
34236        unsafe {
34237            (windows_core::Interface::vtable(self).HrModifyRow)(
34238                windows_core::Interface::as_raw(self),
34239                param0 as _,
34240            )
34241            .ok()
34242        }
34243    }
34244    pub unsafe fn HrDeleteRow(&self, lpspropvalue: *mut SPropValue) -> windows_core::Result<()> {
34245        unsafe {
34246            (windows_core::Interface::vtable(self).HrDeleteRow)(
34247                windows_core::Interface::as_raw(self),
34248                lpspropvalue as _,
34249            )
34250            .ok()
34251        }
34252    }
34253    pub unsafe fn HrQueryRow(
34254        &self,
34255        lpspropvalue: *mut SPropValue,
34256        lppsrow: *mut *mut SRow,
34257        lpulirow: *mut u32,
34258    ) -> windows_core::Result<()> {
34259        unsafe {
34260            (windows_core::Interface::vtable(self).HrQueryRow)(
34261                windows_core::Interface::as_raw(self),
34262                lpspropvalue as _,
34263                lppsrow as _,
34264                lpulirow as _,
34265            )
34266            .ok()
34267        }
34268    }
34269    pub unsafe fn HrEnumRow(
34270        &self,
34271        ulrownumber: u32,
34272        lppsrow: *mut *mut SRow,
34273    ) -> windows_core::Result<()> {
34274        unsafe {
34275            (windows_core::Interface::vtable(self).HrEnumRow)(
34276                windows_core::Interface::as_raw(self),
34277                ulrownumber,
34278                lppsrow as _,
34279            )
34280            .ok()
34281        }
34282    }
34283    pub unsafe fn HrNotify(
34284        &self,
34285        ulflags: u32,
34286        cvalues: u32,
34287        lpspropvalue: *mut SPropValue,
34288    ) -> windows_core::Result<()> {
34289        unsafe {
34290            (windows_core::Interface::vtable(self).HrNotify)(
34291                windows_core::Interface::as_raw(self),
34292                ulflags,
34293                cvalues,
34294                lpspropvalue as _,
34295            )
34296            .ok()
34297        }
34298    }
34299    pub unsafe fn HrInsertRow(&self, ulirow: u32, lpsrow: *mut SRow) -> windows_core::Result<()> {
34300        unsafe {
34301            (windows_core::Interface::vtable(self).HrInsertRow)(
34302                windows_core::Interface::as_raw(self),
34303                ulirow,
34304                lpsrow as _,
34305            )
34306            .ok()
34307        }
34308    }
34309    pub unsafe fn HrModifyRows(
34310        &self,
34311        ulflags: u32,
34312        lpsrowset: *mut SRowSet,
34313    ) -> windows_core::Result<()> {
34314        unsafe {
34315            (windows_core::Interface::vtable(self).HrModifyRows)(
34316                windows_core::Interface::as_raw(self),
34317                ulflags,
34318                lpsrowset as _,
34319            )
34320            .ok()
34321        }
34322    }
34323    pub unsafe fn HrDeleteRows(
34324        &self,
34325        ulflags: u32,
34326        lprowsettodelete: *mut SRowSet,
34327        crowsdeleted: *mut u32,
34328    ) -> windows_core::Result<()> {
34329        unsafe {
34330            (windows_core::Interface::vtable(self).HrDeleteRows)(
34331                windows_core::Interface::as_raw(self),
34332                ulflags,
34333                lprowsettodelete as _,
34334                crowsdeleted as _,
34335            )
34336            .ok()
34337        }
34338    }
34339}
34340#[repr(C)]
34341#[doc(hidden)]
34342pub struct ITableData_Vtbl {
34343    pub base__: windows_core::IUnknown_Vtbl,
34344    pub HrGetView: unsafe extern "system" fn(
34345        *mut core::ffi::c_void,
34346        *mut SSortOrderSet,
34347        *mut windows::Win32::System::AddressBook::CALLERRELEASE,
34348        usize,
34349        *mut *mut core::ffi::c_void,
34350    ) -> windows_core::HRESULT,
34351    pub HrModifyRow:
34352        unsafe extern "system" fn(*mut core::ffi::c_void, *mut SRow) -> windows_core::HRESULT,
34353    pub HrDeleteRow:
34354        unsafe extern "system" fn(*mut core::ffi::c_void, *mut SPropValue) -> windows_core::HRESULT,
34355    pub HrQueryRow: unsafe extern "system" fn(
34356        *mut core::ffi::c_void,
34357        *mut SPropValue,
34358        *mut *mut SRow,
34359        *mut u32,
34360    ) -> windows_core::HRESULT,
34361    pub HrEnumRow: unsafe extern "system" fn(
34362        *mut core::ffi::c_void,
34363        u32,
34364        *mut *mut SRow,
34365    ) -> windows_core::HRESULT,
34366    pub HrNotify: unsafe extern "system" fn(
34367        *mut core::ffi::c_void,
34368        u32,
34369        u32,
34370        *mut SPropValue,
34371    ) -> windows_core::HRESULT,
34372    pub HrInsertRow:
34373        unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SRow) -> windows_core::HRESULT,
34374    pub HrModifyRows: unsafe extern "system" fn(
34375        *mut core::ffi::c_void,
34376        u32,
34377        *mut SRowSet,
34378    ) -> windows_core::HRESULT,
34379    pub HrDeleteRows: unsafe extern "system" fn(
34380        *mut core::ffi::c_void,
34381        u32,
34382        *mut SRowSet,
34383        *mut u32,
34384    ) -> windows_core::HRESULT,
34385}
34386pub trait ITableData_Impl: windows_core::IUnknownImpl {
34387    fn HrGetView(
34388        &self,
34389        lpssortorderset: *mut SSortOrderSet,
34390        lpfcallerrelease: *mut windows::Win32::System::AddressBook::CALLERRELEASE,
34391        ulcallerdata: usize,
34392        lppmapitable: windows_core::OutRef<IMAPITable>,
34393    ) -> windows_core::Result<()>;
34394    fn HrModifyRow(&self, param0: *mut SRow) -> windows_core::Result<()>;
34395    fn HrDeleteRow(&self, lpspropvalue: *mut SPropValue) -> windows_core::Result<()>;
34396    fn HrQueryRow(
34397        &self,
34398        lpspropvalue: *mut SPropValue,
34399        lppsrow: *mut *mut SRow,
34400        lpulirow: *mut u32,
34401    ) -> windows_core::Result<()>;
34402    fn HrEnumRow(&self, ulrownumber: u32, lppsrow: *mut *mut SRow) -> windows_core::Result<()>;
34403    fn HrNotify(
34404        &self,
34405        ulflags: u32,
34406        cvalues: u32,
34407        lpspropvalue: *mut SPropValue,
34408    ) -> windows_core::Result<()>;
34409    fn HrInsertRow(&self, ulirow: u32, lpsrow: *mut SRow) -> windows_core::Result<()>;
34410    fn HrModifyRows(&self, ulflags: u32, lpsrowset: *mut SRowSet) -> windows_core::Result<()>;
34411    fn HrDeleteRows(
34412        &self,
34413        ulflags: u32,
34414        lprowsettodelete: *mut SRowSet,
34415        crowsdeleted: *mut u32,
34416    ) -> windows_core::Result<()>;
34417}
34418impl ITableData_Vtbl {
34419    pub const fn new<Identity: ITableData_Impl, const OFFSET: isize>() -> Self {
34420        unsafe extern "system" fn HrGetView<Identity: ITableData_Impl, const OFFSET: isize>(
34421            this: *mut core::ffi::c_void,
34422            lpssortorderset: *mut SSortOrderSet,
34423            lpfcallerrelease: *mut windows::Win32::System::AddressBook::CALLERRELEASE,
34424            ulcallerdata: usize,
34425            lppmapitable: *mut *mut core::ffi::c_void,
34426        ) -> windows_core::HRESULT {
34427            unsafe {
34428                let this: &Identity =
34429                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34430                ITableData_Impl::HrGetView(
34431                    this,
34432                    core::mem::transmute_copy(&lpssortorderset),
34433                    core::mem::transmute_copy(&lpfcallerrelease),
34434                    core::mem::transmute_copy(&ulcallerdata),
34435                    core::mem::transmute_copy(&lppmapitable),
34436                )
34437                .into()
34438            }
34439        }
34440        unsafe extern "system" fn HrModifyRow<Identity: ITableData_Impl, const OFFSET: isize>(
34441            this: *mut core::ffi::c_void,
34442            param0: *mut SRow,
34443        ) -> windows_core::HRESULT {
34444            unsafe {
34445                let this: &Identity =
34446                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34447                ITableData_Impl::HrModifyRow(this, core::mem::transmute_copy(&param0)).into()
34448            }
34449        }
34450        unsafe extern "system" fn HrDeleteRow<Identity: ITableData_Impl, const OFFSET: isize>(
34451            this: *mut core::ffi::c_void,
34452            lpspropvalue: *mut SPropValue,
34453        ) -> windows_core::HRESULT {
34454            unsafe {
34455                let this: &Identity =
34456                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34457                ITableData_Impl::HrDeleteRow(this, core::mem::transmute_copy(&lpspropvalue)).into()
34458            }
34459        }
34460        unsafe extern "system" fn HrQueryRow<Identity: ITableData_Impl, const OFFSET: isize>(
34461            this: *mut core::ffi::c_void,
34462            lpspropvalue: *mut SPropValue,
34463            lppsrow: *mut *mut SRow,
34464            lpulirow: *mut u32,
34465        ) -> windows_core::HRESULT {
34466            unsafe {
34467                let this: &Identity =
34468                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34469                ITableData_Impl::HrQueryRow(
34470                    this,
34471                    core::mem::transmute_copy(&lpspropvalue),
34472                    core::mem::transmute_copy(&lppsrow),
34473                    core::mem::transmute_copy(&lpulirow),
34474                )
34475                .into()
34476            }
34477        }
34478        unsafe extern "system" fn HrEnumRow<Identity: ITableData_Impl, const OFFSET: isize>(
34479            this: *mut core::ffi::c_void,
34480            ulrownumber: u32,
34481            lppsrow: *mut *mut SRow,
34482        ) -> windows_core::HRESULT {
34483            unsafe {
34484                let this: &Identity =
34485                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34486                ITableData_Impl::HrEnumRow(
34487                    this,
34488                    core::mem::transmute_copy(&ulrownumber),
34489                    core::mem::transmute_copy(&lppsrow),
34490                )
34491                .into()
34492            }
34493        }
34494        unsafe extern "system" fn HrNotify<Identity: ITableData_Impl, const OFFSET: isize>(
34495            this: *mut core::ffi::c_void,
34496            ulflags: u32,
34497            cvalues: u32,
34498            lpspropvalue: *mut SPropValue,
34499        ) -> windows_core::HRESULT {
34500            unsafe {
34501                let this: &Identity =
34502                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34503                ITableData_Impl::HrNotify(
34504                    this,
34505                    core::mem::transmute_copy(&ulflags),
34506                    core::mem::transmute_copy(&cvalues),
34507                    core::mem::transmute_copy(&lpspropvalue),
34508                )
34509                .into()
34510            }
34511        }
34512        unsafe extern "system" fn HrInsertRow<Identity: ITableData_Impl, const OFFSET: isize>(
34513            this: *mut core::ffi::c_void,
34514            ulirow: u32,
34515            lpsrow: *mut SRow,
34516        ) -> windows_core::HRESULT {
34517            unsafe {
34518                let this: &Identity =
34519                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34520                ITableData_Impl::HrInsertRow(
34521                    this,
34522                    core::mem::transmute_copy(&ulirow),
34523                    core::mem::transmute_copy(&lpsrow),
34524                )
34525                .into()
34526            }
34527        }
34528        unsafe extern "system" fn HrModifyRows<Identity: ITableData_Impl, const OFFSET: isize>(
34529            this: *mut core::ffi::c_void,
34530            ulflags: u32,
34531            lpsrowset: *mut SRowSet,
34532        ) -> windows_core::HRESULT {
34533            unsafe {
34534                let this: &Identity =
34535                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34536                ITableData_Impl::HrModifyRows(
34537                    this,
34538                    core::mem::transmute_copy(&ulflags),
34539                    core::mem::transmute_copy(&lpsrowset),
34540                )
34541                .into()
34542            }
34543        }
34544        unsafe extern "system" fn HrDeleteRows<Identity: ITableData_Impl, const OFFSET: isize>(
34545            this: *mut core::ffi::c_void,
34546            ulflags: u32,
34547            lprowsettodelete: *mut SRowSet,
34548            crowsdeleted: *mut u32,
34549        ) -> windows_core::HRESULT {
34550            unsafe {
34551                let this: &Identity =
34552                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34553                ITableData_Impl::HrDeleteRows(
34554                    this,
34555                    core::mem::transmute_copy(&ulflags),
34556                    core::mem::transmute_copy(&lprowsettodelete),
34557                    core::mem::transmute_copy(&crowsdeleted),
34558                )
34559                .into()
34560            }
34561        }
34562        Self {
34563            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
34564            HrGetView: HrGetView::<Identity, OFFSET>,
34565            HrModifyRow: HrModifyRow::<Identity, OFFSET>,
34566            HrDeleteRow: HrDeleteRow::<Identity, OFFSET>,
34567            HrQueryRow: HrQueryRow::<Identity, OFFSET>,
34568            HrEnumRow: HrEnumRow::<Identity, OFFSET>,
34569            HrNotify: HrNotify::<Identity, OFFSET>,
34570            HrInsertRow: HrInsertRow::<Identity, OFFSET>,
34571            HrModifyRows: HrModifyRows::<Identity, OFFSET>,
34572            HrDeleteRows: HrDeleteRows::<Identity, OFFSET>,
34573        }
34574    }
34575    pub fn matches(iid: &windows_core::GUID) -> bool {
34576        iid == &<ITableData as windows_core::Interface>::IID
34577    }
34578}
34579impl windows_core::RuntimeName for ITableData {}
34580pub const IUnknown_AddRef: METHODS = METHODS(1i32);
34581pub const IUnknown_QueryInterface: METHODS = METHODS(0i32);
34582pub const IUnknown_Release: METHODS = METHODS(2i32);
34583windows_core::imp::define_interface!(
34584    IXPLogon,
34585    IXPLogon_Vtbl,
34586    0x00020315_0000_0000_c000_000000000046
34587);
34588windows_core::imp::interface_hierarchy!(IXPLogon, windows_core::IUnknown);
34589impl IXPLogon {
34590    pub unsafe fn AddressTypes(
34591        &self,
34592        lpulflags: *mut u32,
34593        lpcadrtype: *mut u32,
34594        lpppadrtypearray: *mut *mut *mut i8,
34595        lpcmapiuid: *mut u32,
34596        lpppuidarray: *mut *mut *mut MAPIUID,
34597    ) -> windows_core::Result<()> {
34598        unsafe {
34599            (windows_core::Interface::vtable(self).AddressTypes)(
34600                windows_core::Interface::as_raw(self),
34601                lpulflags as _,
34602                lpcadrtype as _,
34603                lpppadrtypearray as _,
34604                lpcmapiuid as _,
34605                lpppuidarray as _,
34606            )
34607            .ok()
34608        }
34609    }
34610    pub unsafe fn RegisterOptions(
34611        &self,
34612        lpulflags: *mut u32,
34613        lpcoptions: *mut u32,
34614        lppoptions: *mut *mut OPTIONDATA,
34615    ) -> windows_core::Result<()> {
34616        unsafe {
34617            (windows_core::Interface::vtable(self).RegisterOptions)(
34618                windows_core::Interface::as_raw(self),
34619                lpulflags as _,
34620                lpcoptions as _,
34621                lppoptions as _,
34622            )
34623            .ok()
34624        }
34625    }
34626    pub unsafe fn TransportNotify(
34627        &self,
34628        lpulflags: *mut u32,
34629        lppvdata: *mut *mut core::ffi::c_void,
34630    ) -> windows_core::Result<()> {
34631        unsafe {
34632            (windows_core::Interface::vtable(self).TransportNotify)(
34633                windows_core::Interface::as_raw(self),
34634                lpulflags as _,
34635                lppvdata as _,
34636            )
34637            .ok()
34638        }
34639    }
34640    pub unsafe fn Idle(&self, ulflags: u32) -> windows_core::Result<()> {
34641        unsafe {
34642            (windows_core::Interface::vtable(self).Idle)(
34643                windows_core::Interface::as_raw(self),
34644                ulflags,
34645            )
34646            .ok()
34647        }
34648    }
34649    pub unsafe fn TransportLogoff(&self, ulflags: u32) -> windows_core::Result<()> {
34650        unsafe {
34651            (windows_core::Interface::vtable(self).TransportLogoff)(
34652                windows_core::Interface::as_raw(self),
34653                ulflags,
34654            )
34655            .ok()
34656        }
34657    }
34658    pub unsafe fn SubmitMessage<P1>(
34659        &self,
34660        ulflags: u32,
34661        lpmessage: P1,
34662        lpulmsgref: *mut usize,
34663        lpulreturnparm: *mut usize,
34664    ) -> windows_core::Result<()>
34665    where
34666        P1: windows_core::Param<IMessage>,
34667    {
34668        unsafe {
34669            (windows_core::Interface::vtable(self).SubmitMessage)(
34670                windows_core::Interface::as_raw(self),
34671                ulflags,
34672                lpmessage.param().abi(),
34673                lpulmsgref as _,
34674                lpulreturnparm as _,
34675            )
34676            .ok()
34677        }
34678    }
34679    pub unsafe fn EndMessage(
34680        &self,
34681        ulmsgref: usize,
34682        lpulflags: *mut u32,
34683    ) -> windows_core::Result<()> {
34684        unsafe {
34685            (windows_core::Interface::vtable(self).EndMessage)(
34686                windows_core::Interface::as_raw(self),
34687                ulmsgref,
34688                lpulflags as _,
34689            )
34690            .ok()
34691        }
34692    }
34693    pub unsafe fn Poll(&self, lpulincoming: *mut u32) -> windows_core::Result<()> {
34694        unsafe {
34695            (windows_core::Interface::vtable(self).Poll)(
34696                windows_core::Interface::as_raw(self),
34697                lpulincoming as _,
34698            )
34699            .ok()
34700        }
34701    }
34702    pub unsafe fn StartMessage<P1>(
34703        &self,
34704        ulflags: u32,
34705        lpmessage: P1,
34706        lpulmsgref: *mut usize,
34707    ) -> windows_core::Result<()>
34708    where
34709        P1: windows_core::Param<IMessage>,
34710    {
34711        unsafe {
34712            (windows_core::Interface::vtable(self).StartMessage)(
34713                windows_core::Interface::as_raw(self),
34714                ulflags,
34715                lpmessage.param().abi(),
34716                lpulmsgref as _,
34717            )
34718            .ok()
34719        }
34720    }
34721    pub unsafe fn OpenStatusEntry(
34722        &self,
34723        lpinterface: *mut windows_core::GUID,
34724        ulflags: u32,
34725        lpulobjtype: *mut u32,
34726        lppentry: *mut Option<IMAPIStatus>,
34727    ) -> windows_core::Result<()> {
34728        unsafe {
34729            (windows_core::Interface::vtable(self).OpenStatusEntry)(
34730                windows_core::Interface::as_raw(self),
34731                lpinterface as _,
34732                ulflags,
34733                lpulobjtype as _,
34734                core::mem::transmute(lppentry),
34735            )
34736            .ok()
34737        }
34738    }
34739    pub unsafe fn ValidateState(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()> {
34740        unsafe {
34741            (windows_core::Interface::vtable(self).ValidateState)(
34742                windows_core::Interface::as_raw(self),
34743                uluiparam,
34744                ulflags,
34745            )
34746            .ok()
34747        }
34748    }
34749    pub unsafe fn FlushQueues(
34750        &self,
34751        uluiparam: usize,
34752        cbtargettransport: u32,
34753        lptargettransport: *mut ENTRYID,
34754        ulflags: u32,
34755    ) -> windows_core::Result<()> {
34756        unsafe {
34757            (windows_core::Interface::vtable(self).FlushQueues)(
34758                windows_core::Interface::as_raw(self),
34759                uluiparam,
34760                cbtargettransport,
34761                lptargettransport as _,
34762                ulflags,
34763            )
34764            .ok()
34765        }
34766    }
34767}
34768#[repr(C)]
34769#[doc(hidden)]
34770pub struct IXPLogon_Vtbl {
34771    pub base__: windows_core::IUnknown_Vtbl,
34772    pub AddressTypes: unsafe extern "system" fn(
34773        *mut core::ffi::c_void,
34774        *mut u32,
34775        *mut u32,
34776        *mut *mut *mut i8,
34777        *mut u32,
34778        *mut *mut *mut MAPIUID,
34779    ) -> windows_core::HRESULT,
34780    pub RegisterOptions: unsafe extern "system" fn(
34781        *mut core::ffi::c_void,
34782        *mut u32,
34783        *mut u32,
34784        *mut *mut OPTIONDATA,
34785    ) -> windows_core::HRESULT,
34786    pub TransportNotify: unsafe extern "system" fn(
34787        *mut core::ffi::c_void,
34788        *mut u32,
34789        *mut *mut core::ffi::c_void,
34790    ) -> windows_core::HRESULT,
34791    pub Idle: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
34792    pub TransportLogoff:
34793        unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
34794    pub SubmitMessage: unsafe extern "system" fn(
34795        *mut core::ffi::c_void,
34796        u32,
34797        *mut core::ffi::c_void,
34798        *mut usize,
34799        *mut usize,
34800    ) -> windows_core::HRESULT,
34801    pub EndMessage:
34802        unsafe extern "system" fn(*mut core::ffi::c_void, usize, *mut u32) -> windows_core::HRESULT,
34803    pub Poll: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
34804    pub StartMessage: unsafe extern "system" fn(
34805        *mut core::ffi::c_void,
34806        u32,
34807        *mut core::ffi::c_void,
34808        *mut usize,
34809    ) -> windows_core::HRESULT,
34810    pub OpenStatusEntry: unsafe extern "system" fn(
34811        *mut core::ffi::c_void,
34812        *mut windows_core::GUID,
34813        u32,
34814        *mut u32,
34815        *mut *mut core::ffi::c_void,
34816    ) -> windows_core::HRESULT,
34817    pub ValidateState:
34818        unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32) -> windows_core::HRESULT,
34819    pub FlushQueues: unsafe extern "system" fn(
34820        *mut core::ffi::c_void,
34821        usize,
34822        u32,
34823        *mut ENTRYID,
34824        u32,
34825    ) -> windows_core::HRESULT,
34826}
34827pub trait IXPLogon_Impl: windows_core::IUnknownImpl {
34828    fn AddressTypes(
34829        &self,
34830        lpulflags: *mut u32,
34831        lpcadrtype: *mut u32,
34832        lpppadrtypearray: *mut *mut *mut i8,
34833        lpcmapiuid: *mut u32,
34834        lpppuidarray: *mut *mut *mut MAPIUID,
34835    ) -> windows_core::Result<()>;
34836    fn RegisterOptions(
34837        &self,
34838        lpulflags: *mut u32,
34839        lpcoptions: *mut u32,
34840        lppoptions: *mut *mut OPTIONDATA,
34841    ) -> windows_core::Result<()>;
34842    fn TransportNotify(
34843        &self,
34844        lpulflags: *mut u32,
34845        lppvdata: *mut *mut core::ffi::c_void,
34846    ) -> windows_core::Result<()>;
34847    fn Idle(&self, ulflags: u32) -> windows_core::Result<()>;
34848    fn TransportLogoff(&self, ulflags: u32) -> windows_core::Result<()>;
34849    fn SubmitMessage(
34850        &self,
34851        ulflags: u32,
34852        lpmessage: windows_core::Ref<IMessage>,
34853        lpulmsgref: *mut usize,
34854        lpulreturnparm: *mut usize,
34855    ) -> windows_core::Result<()>;
34856    fn EndMessage(&self, ulmsgref: usize, lpulflags: *mut u32) -> windows_core::Result<()>;
34857    fn Poll(&self, lpulincoming: *mut u32) -> windows_core::Result<()>;
34858    fn StartMessage(
34859        &self,
34860        ulflags: u32,
34861        lpmessage: windows_core::Ref<IMessage>,
34862        lpulmsgref: *mut usize,
34863    ) -> windows_core::Result<()>;
34864    fn OpenStatusEntry(
34865        &self,
34866        lpinterface: *mut windows_core::GUID,
34867        ulflags: u32,
34868        lpulobjtype: *mut u32,
34869        lppentry: windows_core::OutRef<IMAPIStatus>,
34870    ) -> windows_core::Result<()>;
34871    fn ValidateState(&self, uluiparam: usize, ulflags: u32) -> windows_core::Result<()>;
34872    fn FlushQueues(
34873        &self,
34874        uluiparam: usize,
34875        cbtargettransport: u32,
34876        lptargettransport: *mut ENTRYID,
34877        ulflags: u32,
34878    ) -> windows_core::Result<()>;
34879}
34880impl IXPLogon_Vtbl {
34881    pub const fn new<Identity: IXPLogon_Impl, const OFFSET: isize>() -> Self {
34882        unsafe extern "system" fn AddressTypes<Identity: IXPLogon_Impl, const OFFSET: isize>(
34883            this: *mut core::ffi::c_void,
34884            lpulflags: *mut u32,
34885            lpcadrtype: *mut u32,
34886            lpppadrtypearray: *mut *mut *mut i8,
34887            lpcmapiuid: *mut u32,
34888            lpppuidarray: *mut *mut *mut MAPIUID,
34889        ) -> windows_core::HRESULT {
34890            unsafe {
34891                let this: &Identity =
34892                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34893                IXPLogon_Impl::AddressTypes(
34894                    this,
34895                    core::mem::transmute_copy(&lpulflags),
34896                    core::mem::transmute_copy(&lpcadrtype),
34897                    core::mem::transmute_copy(&lpppadrtypearray),
34898                    core::mem::transmute_copy(&lpcmapiuid),
34899                    core::mem::transmute_copy(&lpppuidarray),
34900                )
34901                .into()
34902            }
34903        }
34904        unsafe extern "system" fn RegisterOptions<Identity: IXPLogon_Impl, const OFFSET: isize>(
34905            this: *mut core::ffi::c_void,
34906            lpulflags: *mut u32,
34907            lpcoptions: *mut u32,
34908            lppoptions: *mut *mut OPTIONDATA,
34909        ) -> windows_core::HRESULT {
34910            unsafe {
34911                let this: &Identity =
34912                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34913                IXPLogon_Impl::RegisterOptions(
34914                    this,
34915                    core::mem::transmute_copy(&lpulflags),
34916                    core::mem::transmute_copy(&lpcoptions),
34917                    core::mem::transmute_copy(&lppoptions),
34918                )
34919                .into()
34920            }
34921        }
34922        unsafe extern "system" fn TransportNotify<Identity: IXPLogon_Impl, const OFFSET: isize>(
34923            this: *mut core::ffi::c_void,
34924            lpulflags: *mut u32,
34925            lppvdata: *mut *mut core::ffi::c_void,
34926        ) -> windows_core::HRESULT {
34927            unsafe {
34928                let this: &Identity =
34929                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34930                IXPLogon_Impl::TransportNotify(
34931                    this,
34932                    core::mem::transmute_copy(&lpulflags),
34933                    core::mem::transmute_copy(&lppvdata),
34934                )
34935                .into()
34936            }
34937        }
34938        unsafe extern "system" fn Idle<Identity: IXPLogon_Impl, const OFFSET: isize>(
34939            this: *mut core::ffi::c_void,
34940            ulflags: u32,
34941        ) -> windows_core::HRESULT {
34942            unsafe {
34943                let this: &Identity =
34944                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34945                IXPLogon_Impl::Idle(this, core::mem::transmute_copy(&ulflags)).into()
34946            }
34947        }
34948        unsafe extern "system" fn TransportLogoff<Identity: IXPLogon_Impl, const OFFSET: isize>(
34949            this: *mut core::ffi::c_void,
34950            ulflags: u32,
34951        ) -> windows_core::HRESULT {
34952            unsafe {
34953                let this: &Identity =
34954                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34955                IXPLogon_Impl::TransportLogoff(this, core::mem::transmute_copy(&ulflags)).into()
34956            }
34957        }
34958        unsafe extern "system" fn SubmitMessage<Identity: IXPLogon_Impl, const OFFSET: isize>(
34959            this: *mut core::ffi::c_void,
34960            ulflags: u32,
34961            lpmessage: *mut core::ffi::c_void,
34962            lpulmsgref: *mut usize,
34963            lpulreturnparm: *mut usize,
34964        ) -> windows_core::HRESULT {
34965            unsafe {
34966                let this: &Identity =
34967                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34968                IXPLogon_Impl::SubmitMessage(
34969                    this,
34970                    core::mem::transmute_copy(&ulflags),
34971                    core::mem::transmute_copy(&lpmessage),
34972                    core::mem::transmute_copy(&lpulmsgref),
34973                    core::mem::transmute_copy(&lpulreturnparm),
34974                )
34975                .into()
34976            }
34977        }
34978        unsafe extern "system" fn EndMessage<Identity: IXPLogon_Impl, const OFFSET: isize>(
34979            this: *mut core::ffi::c_void,
34980            ulmsgref: usize,
34981            lpulflags: *mut u32,
34982        ) -> windows_core::HRESULT {
34983            unsafe {
34984                let this: &Identity =
34985                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
34986                IXPLogon_Impl::EndMessage(
34987                    this,
34988                    core::mem::transmute_copy(&ulmsgref),
34989                    core::mem::transmute_copy(&lpulflags),
34990                )
34991                .into()
34992            }
34993        }
34994        unsafe extern "system" fn Poll<Identity: IXPLogon_Impl, const OFFSET: isize>(
34995            this: *mut core::ffi::c_void,
34996            lpulincoming: *mut u32,
34997        ) -> windows_core::HRESULT {
34998            unsafe {
34999                let this: &Identity =
35000                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35001                IXPLogon_Impl::Poll(this, core::mem::transmute_copy(&lpulincoming)).into()
35002            }
35003        }
35004        unsafe extern "system" fn StartMessage<Identity: IXPLogon_Impl, const OFFSET: isize>(
35005            this: *mut core::ffi::c_void,
35006            ulflags: u32,
35007            lpmessage: *mut core::ffi::c_void,
35008            lpulmsgref: *mut usize,
35009        ) -> windows_core::HRESULT {
35010            unsafe {
35011                let this: &Identity =
35012                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35013                IXPLogon_Impl::StartMessage(
35014                    this,
35015                    core::mem::transmute_copy(&ulflags),
35016                    core::mem::transmute_copy(&lpmessage),
35017                    core::mem::transmute_copy(&lpulmsgref),
35018                )
35019                .into()
35020            }
35021        }
35022        unsafe extern "system" fn OpenStatusEntry<Identity: IXPLogon_Impl, const OFFSET: isize>(
35023            this: *mut core::ffi::c_void,
35024            lpinterface: *mut windows_core::GUID,
35025            ulflags: u32,
35026            lpulobjtype: *mut u32,
35027            lppentry: *mut *mut core::ffi::c_void,
35028        ) -> windows_core::HRESULT {
35029            unsafe {
35030                let this: &Identity =
35031                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35032                IXPLogon_Impl::OpenStatusEntry(
35033                    this,
35034                    core::mem::transmute_copy(&lpinterface),
35035                    core::mem::transmute_copy(&ulflags),
35036                    core::mem::transmute_copy(&lpulobjtype),
35037                    core::mem::transmute_copy(&lppentry),
35038                )
35039                .into()
35040            }
35041        }
35042        unsafe extern "system" fn ValidateState<Identity: IXPLogon_Impl, const OFFSET: isize>(
35043            this: *mut core::ffi::c_void,
35044            uluiparam: usize,
35045            ulflags: u32,
35046        ) -> windows_core::HRESULT {
35047            unsafe {
35048                let this: &Identity =
35049                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35050                IXPLogon_Impl::ValidateState(
35051                    this,
35052                    core::mem::transmute_copy(&uluiparam),
35053                    core::mem::transmute_copy(&ulflags),
35054                )
35055                .into()
35056            }
35057        }
35058        unsafe extern "system" fn FlushQueues<Identity: IXPLogon_Impl, const OFFSET: isize>(
35059            this: *mut core::ffi::c_void,
35060            uluiparam: usize,
35061            cbtargettransport: u32,
35062            lptargettransport: *mut ENTRYID,
35063            ulflags: u32,
35064        ) -> windows_core::HRESULT {
35065            unsafe {
35066                let this: &Identity =
35067                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35068                IXPLogon_Impl::FlushQueues(
35069                    this,
35070                    core::mem::transmute_copy(&uluiparam),
35071                    core::mem::transmute_copy(&cbtargettransport),
35072                    core::mem::transmute_copy(&lptargettransport),
35073                    core::mem::transmute_copy(&ulflags),
35074                )
35075                .into()
35076            }
35077        }
35078        Self {
35079            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35080            AddressTypes: AddressTypes::<Identity, OFFSET>,
35081            RegisterOptions: RegisterOptions::<Identity, OFFSET>,
35082            TransportNotify: TransportNotify::<Identity, OFFSET>,
35083            Idle: Idle::<Identity, OFFSET>,
35084            TransportLogoff: TransportLogoff::<Identity, OFFSET>,
35085            SubmitMessage: SubmitMessage::<Identity, OFFSET>,
35086            EndMessage: EndMessage::<Identity, OFFSET>,
35087            Poll: Poll::<Identity, OFFSET>,
35088            StartMessage: StartMessage::<Identity, OFFSET>,
35089            OpenStatusEntry: OpenStatusEntry::<Identity, OFFSET>,
35090            ValidateState: ValidateState::<Identity, OFFSET>,
35091            FlushQueues: FlushQueues::<Identity, OFFSET>,
35092        }
35093    }
35094    pub fn matches(iid: &windows_core::GUID) -> bool {
35095        iid == &<IXPLogon as windows_core::Interface>::IID
35096    }
35097}
35098impl windows_core::RuntimeName for IXPLogon {}
35099pub const IXPLogon_AddressTypes: METHODS = METHODS(96i32);
35100pub const IXPLogon_EndMessage: METHODS = METHODS(102i32);
35101pub const IXPLogon_FlushQueues: METHODS = METHODS(107i32);
35102pub const IXPLogon_Idle: METHODS = METHODS(99i32);
35103pub const IXPLogon_OpenStatusEntry: METHODS = METHODS(105i32);
35104pub const IXPLogon_Poll: METHODS = METHODS(103i32);
35105pub const IXPLogon_RegisterOptions: METHODS = METHODS(97i32);
35106pub const IXPLogon_StartMessage: METHODS = METHODS(104i32);
35107pub const IXPLogon_SubmitMessage: METHODS = METHODS(101i32);
35108pub const IXPLogon_TransportLogoff: METHODS = METHODS(100i32);
35109pub const IXPLogon_TransportNotify: METHODS = METHODS(98i32);
35110pub const IXPLogon_ValidateState: METHODS = METHODS(106i32);
35111windows_core::imp::define_interface!(
35112    IXPProvider,
35113    IXPProvider_Vtbl,
35114    0x00020312_0000_0000_c000_000000000046
35115);
35116windows_core::imp::interface_hierarchy!(IXPProvider, windows_core::IUnknown);
35117impl IXPProvider {
35118    pub unsafe fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()> {
35119        unsafe {
35120            (windows_core::Interface::vtable(self).Shutdown)(
35121                windows_core::Interface::as_raw(self),
35122                lpulflags as _,
35123            )
35124            .ok()
35125        }
35126    }
35127    pub unsafe fn TransportLogon<P0>(
35128        &self,
35129        lpmapisup: P0,
35130        uluiparam: usize,
35131        lpszprofilename: *const i8,
35132        lpulflags: *mut u32,
35133        lppmapierror: *mut *mut MAPIERROR,
35134        lppxplogon: *mut Option<IXPLogon>,
35135    ) -> windows_core::Result<()>
35136    where
35137        P0: windows_core::Param<IMAPISupport>,
35138    {
35139        unsafe {
35140            (windows_core::Interface::vtable(self).TransportLogon)(
35141                windows_core::Interface::as_raw(self),
35142                lpmapisup.param().abi(),
35143                uluiparam,
35144                lpszprofilename,
35145                lpulflags as _,
35146                lppmapierror as _,
35147                core::mem::transmute(lppxplogon),
35148            )
35149            .ok()
35150        }
35151    }
35152}
35153#[repr(C)]
35154#[doc(hidden)]
35155pub struct IXPProvider_Vtbl {
35156    pub base__: windows_core::IUnknown_Vtbl,
35157    pub Shutdown:
35158        unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
35159    pub TransportLogon: unsafe extern "system" fn(
35160        *mut core::ffi::c_void,
35161        *mut core::ffi::c_void,
35162        usize,
35163        *const i8,
35164        *mut u32,
35165        *mut *mut MAPIERROR,
35166        *mut *mut core::ffi::c_void,
35167    ) -> windows_core::HRESULT,
35168}
35169pub trait IXPProvider_Impl: windows_core::IUnknownImpl {
35170    fn Shutdown(&self, lpulflags: *mut u32) -> windows_core::Result<()>;
35171    fn TransportLogon(
35172        &self,
35173        lpmapisup: windows_core::Ref<IMAPISupport>,
35174        uluiparam: usize,
35175        lpszprofilename: *const i8,
35176        lpulflags: *mut u32,
35177        lppmapierror: *mut *mut MAPIERROR,
35178        lppxplogon: windows_core::OutRef<IXPLogon>,
35179    ) -> windows_core::Result<()>;
35180}
35181impl IXPProvider_Vtbl {
35182    pub const fn new<Identity: IXPProvider_Impl, const OFFSET: isize>() -> Self {
35183        unsafe extern "system" fn Shutdown<Identity: IXPProvider_Impl, const OFFSET: isize>(
35184            this: *mut core::ffi::c_void,
35185            lpulflags: *mut u32,
35186        ) -> windows_core::HRESULT {
35187            unsafe {
35188                let this: &Identity =
35189                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35190                IXPProvider_Impl::Shutdown(this, core::mem::transmute_copy(&lpulflags)).into()
35191            }
35192        }
35193        unsafe extern "system" fn TransportLogon<
35194            Identity: IXPProvider_Impl,
35195            const OFFSET: isize,
35196        >(
35197            this: *mut core::ffi::c_void,
35198            lpmapisup: *mut core::ffi::c_void,
35199            uluiparam: usize,
35200            lpszprofilename: *const i8,
35201            lpulflags: *mut u32,
35202            lppmapierror: *mut *mut MAPIERROR,
35203            lppxplogon: *mut *mut core::ffi::c_void,
35204        ) -> windows_core::HRESULT {
35205            unsafe {
35206                let this: &Identity =
35207                    &*((this as *const *const ()).offset(OFFSET) as *const Identity);
35208                IXPProvider_Impl::TransportLogon(
35209                    this,
35210                    core::mem::transmute_copy(&lpmapisup),
35211                    core::mem::transmute_copy(&uluiparam),
35212                    core::mem::transmute_copy(&lpszprofilename),
35213                    core::mem::transmute_copy(&lpulflags),
35214                    core::mem::transmute_copy(&lppmapierror),
35215                    core::mem::transmute_copy(&lppxplogon),
35216                )
35217                .into()
35218            }
35219        }
35220        Self {
35221            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
35222            Shutdown: Shutdown::<Identity, OFFSET>,
35223            TransportLogon: TransportLogon::<Identity, OFFSET>,
35224        }
35225    }
35226    pub fn matches(iid: &windows_core::GUID) -> bool {
35227        iid == &<IXPProvider as windows_core::Interface>::IID
35228    }
35229}
35230impl windows_core::RuntimeName for IXPProvider {}
35231pub const IXPProvider_Shutdown: METHODS = METHODS(94i32);
35232pub const IXPProvider_TransportLogon: METHODS = METHODS(95i32);
35233pub const KEEP_OPEN_READONLY: u32 = 1u32;
35234pub const KEEP_OPEN_READWRITE: u32 = 2u32;
35235pub type LAUNCHWIZARDENTRY = Option<
35236    unsafe extern "system" fn(
35237        hparentwnd: windows::Win32::Foundation::HWND,
35238        ulflags: u32,
35239        lppszservicenametoadd: *mut *mut i8,
35240        cbbuffermax: u32,
35241        lpsznewprofilename: *mut i8,
35242    ) -> windows_core::HRESULT,
35243>;
35244pub const LAUNCHWIZARDENTRYNAME: windows_core::PCSTR = windows_core::s!("LAUNCHWIZARD");
35245pub const LIBID_MIMEOLE: windows_core::GUID =
35246    windows_core::GUID::from_u128(0xe4b28371_83b0_11d0_8259_00c04fd85ab4);
35247pub const LOCK_BLOCKING_MID_LOCK: u32 = 2u32;
35248pub const LOCK_NON_PERSISTENT: u32 = 1u32;
35249pub const LOCK_NULL_RESOURCE: u32 = 4u32;
35250pub const LOCK_READ_ACCESS_CHECK_ONLY: u32 = 8u32;
35251pub const LOCK_RESERVED: u32 = 2147483648u32;
35252pub const LOCK_WRITE_THROUGH_GOP: u32 = 65536u32;
35253pub const LOGOFF_ABORT: u32 = 8u32;
35254pub const LOGOFF_COMPLETE: u32 = 65536u32;
35255pub const LOGOFF_HURRY: u32 = 2147483648u32;
35256pub const LOGOFF_INBOUND: u32 = 131072u32;
35257pub const LOGOFF_NORMAL: u32 = 1u32;
35258pub const LOGOFF_NO_WAIT: u32 = 1u32;
35259pub const LOGOFF_ORDERLY: u32 = 2u32;
35260pub const LOGOFF_OUTBOUND: u32 = 262144u32;
35261pub const LOGOFF_OUTBOUND_QUEUE: u32 = 524288u32;
35262pub const LOGOFF_PURGE: u32 = 4u32;
35263pub const LOGOFF_QUIET: u32 = 16u32;
35264pub const LOGON_CHANGED: u32 = 8u32;
35265pub const LOGON_NO_CONNECT: u32 = 4u32;
35266pub const LOGON_NO_DIALOG: u32 = 1u32;
35267pub const LOGON_NO_INBOUND: u32 = 8u32;
35268pub const LOGON_NO_OUTBOUND: u32 = 16u32;
35269pub const LOGON_SP_IDLE: u32 = 65536u32;
35270pub const LOGON_SP_NEWPW: u32 = 4u32;
35271pub const LOGON_SP_POLL: u32 = 131072u32;
35272pub const LOGON_SP_PROMPT: u32 = 2u32;
35273pub const LOGON_SP_RESOLVE: u32 = 262144u32;
35274pub const LOGON_SP_TRANSPORT: u32 = 1u32;
35275pub type LPALLOCATEBUFFER =
35276    Option<unsafe extern "system" fn(cbsize: u32, lppbuffer: *mut *mut core::ffi::c_void) -> i32>;
35277pub type LPALLOCATEMORE = Option<
35278    unsafe extern "system" fn(
35279        cbsize: u32,
35280        lpobject: *mut core::ffi::c_void,
35281        lppbuffer: *mut *mut core::ffi::c_void,
35282    ) -> i32,
35283>;
35284pub type LPCREATECONVERSATIONINDEX = Option<
35285    unsafe extern "system" fn(
35286        cbparent: u32,
35287        lpbparent: *mut u8,
35288        lpcbconvindex: *mut u32,
35289        lppbconvindex: *mut *mut u8,
35290    ) -> i32,
35291>;
35292pub type LPDISPATCHNOTIFICATIONS =
35293    Option<unsafe extern "system" fn(ulflags: u32) -> windows_core::HRESULT>;
35294pub type LPFGETCOMPONENTPATH = Option<unsafe extern "system" fn() -> windows_core::BOOL>;
35295pub type LPFNABSDI = Option<
35296    unsafe extern "system" fn(
35297        uluiparam: usize,
35298        lpvmsg: *mut core::ffi::c_void,
35299    ) -> windows_core::BOOL,
35300>;
35301pub type LPFNBUTTON = Option<
35302    unsafe extern "system" fn(
35303        uluiparam: usize,
35304        lpvcontext: *mut core::ffi::c_void,
35305        cbentryid: u32,
35306        lpselection: *mut ENTRYID,
35307        ulflags: u32,
35308    ) -> i32,
35309>;
35310pub type LPFNDISMISS =
35311    Option<unsafe extern "system" fn(uluiparam: usize, lpvcontext: *mut core::ffi::c_void)>;
35312pub type LPFREEBUFFER = Option<unsafe extern "system" fn(lpbuffer: *mut core::ffi::c_void) -> u32>;
35313pub type LPLAUNCHWIZARDENTRY = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35314pub type LPMAPIADDRESS = Option<
35315    unsafe extern "system" fn(
35316        lhsession: usize,
35317        uluiparam: usize,
35318        lpszcaption: windows_core::PCSTR,
35319        neditfields: u32,
35320        lpszlabels: windows_core::PCSTR,
35321        nrecips: u32,
35322        lprecips: *mut MapiRecipDesc,
35323        flflags: u32,
35324        ulreserved: u32,
35325        lpnnewrecips: *mut u32,
35326        lppnewrecips: *mut *mut MapiRecipDesc,
35327    ) -> u32,
35328>;
35329pub type LPMAPIADMINPROFILES = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35330pub type LPMAPIALLOCATEBUFFER = Option<unsafe extern "system" fn() -> i32>;
35331pub type LPMAPIALLOCATEMORE = Option<unsafe extern "system" fn() -> i32>;
35332pub type LPMAPIDELETEMAIL = Option<
35333    unsafe extern "system" fn(
35334        lhsession: usize,
35335        uluiparam: usize,
35336        lpszmessageid: windows_core::PCSTR,
35337        flflags: u32,
35338        ulreserved: u32,
35339    ) -> u32,
35340>;
35341pub type LPMAPIDETAILS = Option<
35342    unsafe extern "system" fn(
35343        lhsession: usize,
35344        uluiparam: usize,
35345        lprecip: *mut MapiRecipDesc,
35346        flflags: u32,
35347        ulreserved: u32,
35348    ) -> u32,
35349>;
35350pub type LPMAPIFINDNEXT = Option<
35351    unsafe extern "system" fn(
35352        lhsession: usize,
35353        uluiparam: usize,
35354        lpszmessagetype: windows_core::PCSTR,
35355        lpszseedmessageid: windows_core::PCSTR,
35356        flflags: u32,
35357        ulreserved: u32,
35358        lpszmessageid: windows_core::PCSTR,
35359    ) -> u32,
35360>;
35361pub type LPMAPIFREEBUFFER = Option<unsafe extern "system" fn() -> u32>;
35362pub type LPMAPIINITIALIZE = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35363pub type LPMAPILOGOFF = Option<
35364    unsafe extern "system" fn(
35365        lhsession: usize,
35366        uluiparam: usize,
35367        flflags: u32,
35368        ulreserved: u32,
35369    ) -> u32,
35370>;
35371pub type LPMAPILOGON = Option<
35372    unsafe extern "system" fn(
35373        uluiparam: usize,
35374        lpszprofilename: windows_core::PCSTR,
35375        lpszpassword: windows_core::PCSTR,
35376        flflags: u32,
35377        ulreserved: u32,
35378        lplhsession: *mut usize,
35379    ) -> u32,
35380>;
35381pub type LPMAPILOGONEX = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35382pub type LPMAPIREADMAIL = Option<
35383    unsafe extern "system" fn(
35384        lhsession: usize,
35385        uluiparam: usize,
35386        lpszmessageid: windows_core::PCSTR,
35387        flflags: u32,
35388        ulreserved: u32,
35389        lppmessage: *mut *mut MapiMessage,
35390    ) -> u32,
35391>;
35392pub type LPMAPIRESOLVENAME = Option<
35393    unsafe extern "system" fn(
35394        lhsession: usize,
35395        uluiparam: usize,
35396        lpszname: windows_core::PCSTR,
35397        flflags: u32,
35398        ulreserved: u32,
35399        lpprecip: *mut *mut MapiRecipDesc,
35400    ) -> u32,
35401>;
35402pub type LPMAPISAVEMAIL = Option<
35403    unsafe extern "system" fn(
35404        lhsession: usize,
35405        uluiparam: usize,
35406        lpmessage: *mut MapiMessage,
35407        flflags: u32,
35408        ulreserved: u32,
35409        lpszmessageid: windows_core::PCSTR,
35410    ) -> u32,
35411>;
35412pub type LPMAPISENDDOCUMENTS = Option<
35413    unsafe extern "system" fn(
35414        uluiparam: usize,
35415        lpszdelimchar: windows_core::PCSTR,
35416        lpszfilepaths: windows_core::PCSTR,
35417        lpszfilenames: windows_core::PCSTR,
35418        ulreserved: u32,
35419    ) -> u32,
35420>;
35421pub type LPMAPISENDMAIL = Option<
35422    unsafe extern "system" fn(
35423        lhsession: usize,
35424        uluiparam: usize,
35425        lpmessage: *mut MapiMessage,
35426        flflags: u32,
35427        ulreserved: u32,
35428    ) -> u32,
35429>;
35430pub type LPMAPIUNINITIALIZE = Option<unsafe extern "system" fn()>;
35431pub type LPMSGSERVICEENTRY = Option<unsafe extern "system" fn() -> windows_core::HRESULT>;
35432pub type LPNOTIFCALLBACK = Option<
35433    unsafe extern "system" fn(
35434        lpvcontext: *mut core::ffi::c_void,
35435        cnotification: u32,
35436        lpnotifications: *mut NOTIFICATION,
35437    ) -> i32,
35438>;
35439pub type LPOPENSTREAMONFILE = Option<
35440    unsafe extern "system" fn(
35441        lpallocatebuffer: LPALLOCATEBUFFER,
35442        lpfreebuffer: LPFREEBUFFER,
35443        ulflags: u32,
35444        lpszfilename: *const i8,
35445        lpszprefix: *const i8,
35446        lppstream: windows_core::OutRef<windows::Win32::System::Com::IStream>,
35447    ) -> windows_core::HRESULT,
35448>;
35449pub type LPSERVICEWIZARDDLGPROC = Option<unsafe extern "system" fn() -> windows_core::BOOL>;
35450pub type LPWIZARDENTRY = Option<unsafe extern "system" fn() -> u32>;
35451pub type MAPIADMINPROFILES = Option<
35452    unsafe extern "system" fn(
35453        ulflags: u32,
35454        lppprofadmin: windows_core::OutRef<IProfAdmin>,
35455    ) -> windows_core::HRESULT,
35456>;
35457pub type MAPIALLOCATEBUFFER =
35458    Option<unsafe extern "system" fn(cbsize: u32, lppbuffer: *mut *mut core::ffi::c_void) -> i32>;
35459pub type MAPIALLOCATEMORE = Option<
35460    unsafe extern "system" fn(
35461        cbsize: u32,
35462        lpobject: *mut core::ffi::c_void,
35463        lppbuffer: *mut *mut core::ffi::c_void,
35464    ) -> i32,
35465>;
35466#[repr(C)]
35467#[derive(Clone, Copy, Debug, PartialEq)]
35468pub struct MAPIERROR {
35469    pub ulVersion: u32,
35470    pub lpszError: *mut i8,
35471    pub lpszComponent: *mut i8,
35472    pub ulLowLevelError: u32,
35473    pub ulContext: u32,
35474}
35475impl Default for MAPIERROR {
35476    fn default() -> Self {
35477        unsafe { core::mem::zeroed() }
35478    }
35479}
35480pub const MAPIFORM_CPU_AXP: u32 = 3u32;
35481pub const MAPIFORM_CPU_M68: u32 = 5u32;
35482pub const MAPIFORM_CPU_MIP: u32 = 2u32;
35483pub const MAPIFORM_CPU_PPC: u32 = 4u32;
35484pub const MAPIFORM_CPU_X64: u32 = 6u32;
35485pub const MAPIFORM_CPU_X86: u32 = 1u32;
35486pub const MAPIFORM_EXACTMATCH: u32 = 32u32;
35487pub const MAPIFORM_INSTALL_DIALOG: u32 = 8u32;
35488pub const MAPIFORM_INSTALL_OVERWRITEONCONFLICT: u32 = 16u32;
35489pub const MAPIFORM_OS_MAC_7x: u32 = 4u32;
35490pub const MAPIFORM_OS_WINNT_35: u32 = 2u32;
35491pub const MAPIFORM_OS_WINNT_40: u32 = 5u32;
35492pub const MAPIFORM_OS_WINNT_50: u32 = 6u32;
35493pub const MAPIFORM_OS_WINNT_60: u32 = 7u32;
35494pub const MAPIFORM_OS_WIN_31: u32 = 1u32;
35495pub const MAPIFORM_OS_WIN_95: u32 = 3u32;
35496pub const MAPIFORM_SELECT_ALL_REGISTRIES: u32 = 0u32;
35497pub const MAPIFORM_SELECT_FOLDER_REGISTRY_ONLY: u32 = 1u32;
35498pub const MAPIFORM_SELECT_NON_FOLDER_REGISTRY_ONLY: u32 = 2u32;
35499pub type MAPIFREEBUFFER =
35500    Option<unsafe extern "system" fn(lpbuffer: *mut core::ffi::c_void) -> u32>;
35501#[repr(C)]
35502#[derive(Clone, Copy, Debug, Default, PartialEq)]
35503pub struct MAPIINIT {
35504    pub ulVersion: u32,
35505    pub ulFlags: u32,
35506}
35507pub type MAPIINITIALIZE =
35508    Option<unsafe extern "system" fn(lpmapiinit: *mut core::ffi::c_void) -> windows_core::HRESULT>;
35509pub type MAPILOGONEX = Option<
35510    unsafe extern "system" fn(
35511        uluiparam: usize,
35512        lpszprofilename: *const i8,
35513        lpszpassword: *const i8,
35514        ulflags: u32,
35515        lppsession: windows_core::OutRef<IMAPISession>,
35516    ) -> windows_core::HRESULT,
35517>;
35518#[repr(C)]
35519#[derive(Clone, Copy)]
35520pub struct MAPINAMEID {
35521    pub lpguid: *mut windows_core::GUID,
35522    pub ulKind: u32,
35523    pub Kind: MAPINAMEID_0,
35524}
35525impl Default for MAPINAMEID {
35526    fn default() -> Self {
35527        unsafe { core::mem::zeroed() }
35528    }
35529}
35530#[repr(C)]
35531#[derive(Clone, Copy)]
35532pub union MAPINAMEID_0 {
35533    pub lID_Reserved: isize,
35534    pub lID: i32,
35535    pub lpwstrName: windows_core::PWSTR,
35536}
35537impl Default for MAPINAMEID_0 {
35538    fn default() -> Self {
35539        unsafe { core::mem::zeroed() }
35540    }
35541}
35542#[repr(C)]
35543#[derive(Clone, Copy, Debug, PartialEq)]
35544pub struct MAPIUID {
35545    pub ab: [u8; 16],
35546}
35547impl Default for MAPIUID {
35548    fn default() -> Self {
35549        unsafe { core::mem::zeroed() }
35550    }
35551}
35552pub type MAPIUNINITIALIZE = Option<unsafe extern "system" fn()>;
35553pub const MAPI_AB: u32 = 34u32;
35554pub const MAPI_ABCONT: u32 = 4u32;
35555pub const MAPI_AB_NOMODIFY: u32 = 1024u32;
35556pub const MAPI_AB_PROVIDER: u32 = 35u32;
35557pub const MAPI_ACCESS_CREATE_ASSOCIATED: u32 = 32u32;
35558pub const MAPI_ACCESS_CREATE_CONTENTS: u32 = 16u32;
35559pub const MAPI_ACCESS_CREATE_HIERARCHY: u32 = 8u32;
35560pub const MAPI_ACCESS_DELETE: u32 = 4u32;
35561pub const MAPI_ACCESS_MODIFY: u32 = 1u32;
35562pub const MAPI_ACCESS_READ: u32 = 2u32;
35563pub const MAPI_ADDRBOOK: u32 = 2u32;
35564pub const MAPI_ALLOW_OTHERS: u32 = 8u32;
35565pub const MAPI_AMBIGUOUS: u32 = 1u32;
35566pub const MAPI_APP_PROFILE: u32 = 4u32;
35567pub const MAPI_ASSOCIATED: u32 = 64u32;
35568pub const MAPI_ATTACH: u32 = 7u32;
35569pub const MAPI_BCC: u32 = 3u32;
35570pub const MAPI_BEST_ACCESS: u32 = 16u32;
35571pub const MAPI_BG_SESSION: u32 = 2097152u32;
35572pub const MAPI_BODY_AS_FILE: u32 = 512u32;
35573pub const MAPI_CACHE_ONLY: u32 = 16384u32;
35574pub const MAPI_CC: u32 = 2u32;
35575pub const MAPI_COMPOUND: u32 = 128u32;
35576pub const MAPI_CREATE: u32 = 2u32;
35577pub const MAPI_DECLINE_OK: u32 = 4u32;
35578pub const MAPI_DEFAULT_SERVICES: u32 = 1u32;
35579pub const MAPI_DEFAULT_STORE: u32 = 1u32;
35580pub const MAPI_DEFERRED_ERRORS: u32 = 8u32;
35581pub const MAPI_DIALOG: u32 = 8u32;
35582pub const MAPI_DIM: u32 = 1u32;
35583pub const MAPI_DISABLED: u32 = 1u32;
35584pub const MAPI_DISTLIST: u32 = 8u32;
35585pub const MAPI_ENABLED: u32 = 0u32;
35586pub const MAPI_ENVELOPE_ONLY: u32 = 64u32;
35587pub const MAPI_ERROR_VERSION: i32 = 0i32;
35588pub const MAPI_EXPLICIT_PROFILE: u32 = 16u32;
35589pub const MAPI_EXTENDED: u32 = 32u32;
35590pub const MAPI_EXTENDEDCALLBACKS: u32 = 1024u32;
35591pub const MAPI_E_ACCESS_DENIED: u32 = 6u32;
35592pub const MAPI_E_ACCOUNT_DISABLED: windows_core::HRESULT =
35593    windows_core::HRESULT(0x80040124_u32 as _);
35594pub const MAPI_E_AMBIGUOUS_RECIP: windows_core::HRESULT =
35595    windows_core::HRESULT(0x80040700_u32 as _);
35596pub const MAPI_E_AMBIGUOUS_RECIPIENT: u32 = 21u32;
35597pub const MAPI_E_AMBIG_RECIP: u32 = 21u32;
35598pub const MAPI_E_ATTACHMENT_NOT_FOUND: u32 = 11u32;
35599pub const MAPI_E_ATTACHMENT_OPEN_FAILURE: u32 = 12u32;
35600pub const MAPI_E_ATTACHMENT_WRITE_FAILURE: u32 = 13u32;
35601pub const MAPI_E_BAD_CHARWIDTH: windows_core::HRESULT = windows_core::HRESULT(0x80040103_u32 as _);
35602pub const MAPI_E_BAD_COLUMN: windows_core::HRESULT = windows_core::HRESULT(0x80040118_u32 as _);
35603pub const MAPI_E_BAD_RECIPTYPE: u32 = 15u32;
35604pub const MAPI_E_BAD_VALUE: windows_core::HRESULT = windows_core::HRESULT(0x80040301_u32 as _);
35605pub const MAPI_E_BUSY: windows_core::HRESULT = windows_core::HRESULT(0x8004010B_u32 as _);
35606pub const MAPI_E_CALL_FAILED: windows_core::HRESULT = windows_core::HRESULT(0x80004005_u32 as _);
35607pub const MAPI_E_CANCEL: windows_core::HRESULT = windows_core::HRESULT(0x80040501_u32 as _);
35608pub const MAPI_E_COLLISION: windows_core::HRESULT = windows_core::HRESULT(0x80040604_u32 as _);
35609pub const MAPI_E_COMPUTED: windows_core::HRESULT = windows_core::HRESULT(0x8004011A_u32 as _);
35610pub const MAPI_E_CORRUPT_DATA: windows_core::HRESULT = windows_core::HRESULT(0x8004011B_u32 as _);
35611pub const MAPI_E_CORRUPT_STORE: windows_core::HRESULT = windows_core::HRESULT(0x80040600_u32 as _);
35612pub const MAPI_E_DECLINE_COPY: windows_core::HRESULT = windows_core::HRESULT(0x80040306_u32 as _);
35613pub const MAPI_E_DISK_ERROR: windows_core::HRESULT = windows_core::HRESULT(0x80040116_u32 as _);
35614pub const MAPI_E_DISK_FULL: u32 = 4u32;
35615pub const MAPI_E_END_OF_SESSION: windows_core::HRESULT = windows_core::HRESULT(0x80040200_u32 as _);
35616pub const MAPI_E_EXTENDED_ERROR: windows_core::HRESULT = windows_core::HRESULT(0x80040119_u32 as _);
35617pub const MAPI_E_FAILONEPROVIDER: windows_core::HRESULT =
35618    windows_core::HRESULT(0x8004011D_u32 as _);
35619pub const MAPI_E_FAILURE: u32 = 2u32;
35620pub const MAPI_E_FOLDER_CYCLE: windows_core::HRESULT = windows_core::HRESULT(0x8004060B_u32 as _);
35621pub const MAPI_E_HAS_FOLDERS: windows_core::HRESULT = windows_core::HRESULT(0x80040609_u32 as _);
35622pub const MAPI_E_HAS_MESSAGES: windows_core::HRESULT = windows_core::HRESULT(0x8004060A_u32 as _);
35623pub const MAPI_E_INSUFFICIENT_MEMORY: u32 = 5u32;
35624pub const MAPI_E_INTERFACE_NOT_SUPPORTED: windows_core::HRESULT =
35625    windows_core::HRESULT(0x80004002_u32 as _);
35626pub const MAPI_E_INVALID_ACCESS_TIME: windows_core::HRESULT =
35627    windows_core::HRESULT(0x80040123_u32 as _);
35628pub const MAPI_E_INVALID_BOOKMARK: windows_core::HRESULT =
35629    windows_core::HRESULT(0x80040405_u32 as _);
35630pub const MAPI_E_INVALID_EDITFIELDS: u32 = 24u32;
35631pub const MAPI_E_INVALID_ENTRYID: windows_core::HRESULT =
35632    windows_core::HRESULT(0x80040107_u32 as _);
35633pub const MAPI_E_INVALID_MESSAGE: u32 = 17u32;
35634pub const MAPI_E_INVALID_OBJECT: windows_core::HRESULT = windows_core::HRESULT(0x80040108_u32 as _);
35635pub const MAPI_E_INVALID_PARAMETER: windows_core::HRESULT =
35636    windows_core::HRESULT(0x80070057_u32 as _);
35637pub const MAPI_E_INVALID_RECIPS: u32 = 25u32;
35638pub const MAPI_E_INVALID_SESSION: u32 = 19u32;
35639pub const MAPI_E_INVALID_TYPE: windows_core::HRESULT = windows_core::HRESULT(0x80040302_u32 as _);
35640pub const MAPI_E_INVALID_WORKSTATION_ACCOUNT: windows_core::HRESULT =
35641    windows_core::HRESULT(0x80040122_u32 as _);
35642pub const MAPI_E_LOGIN_FAILURE: u32 = 3u32;
35643pub const MAPI_E_LOGON_FAILED: windows_core::HRESULT = windows_core::HRESULT(0x80040111_u32 as _);
35644pub const MAPI_E_LOGON_FAILURE: u32 = 3u32;
35645pub const MAPI_E_MESSAGE_IN_USE: u32 = 22u32;
35646pub const MAPI_E_MISSING_REQUIRED_COLUMN: windows_core::HRESULT =
35647    windows_core::HRESULT(0x80040202_u32 as _);
35648pub const MAPI_E_NETWORK_ERROR: windows_core::HRESULT = windows_core::HRESULT(0x80040115_u32 as _);
35649pub const MAPI_E_NETWORK_FAILURE: u32 = 23u32;
35650pub const MAPI_E_NON_STANDARD: windows_core::HRESULT = windows_core::HRESULT(0x80040606_u32 as _);
35651pub const MAPI_E_NOT_ENOUGH_DISK: windows_core::HRESULT =
35652    windows_core::HRESULT(0x8004010D_u32 as _);
35653pub const MAPI_E_NOT_ENOUGH_MEMORY: windows_core::HRESULT =
35654    windows_core::HRESULT(0x8007000E_u32 as _);
35655pub const MAPI_E_NOT_ENOUGH_RESOURCES: windows_core::HRESULT =
35656    windows_core::HRESULT(0x8004010E_u32 as _);
35657pub const MAPI_E_NOT_FOUND: windows_core::HRESULT = windows_core::HRESULT(0x8004010F_u32 as _);
35658pub const MAPI_E_NOT_INITIALIZED: windows_core::HRESULT =
35659    windows_core::HRESULT(0x80040605_u32 as _);
35660pub const MAPI_E_NOT_IN_QUEUE: windows_core::HRESULT = windows_core::HRESULT(0x80040601_u32 as _);
35661pub const MAPI_E_NOT_ME: windows_core::HRESULT = windows_core::HRESULT(0x80040502_u32 as _);
35662pub const MAPI_E_NOT_SUPPORTED: u32 = 26u32;
35663pub const MAPI_E_NO_ACCESS: windows_core::HRESULT = windows_core::HRESULT(0x80070005_u32 as _);
35664pub const MAPI_E_NO_MESSAGES: u32 = 16u32;
35665pub const MAPI_E_NO_RECIPIENTS: windows_core::HRESULT = windows_core::HRESULT(0x80040607_u32 as _);
35666pub const MAPI_E_NO_SUPPORT: windows_core::HRESULT = windows_core::HRESULT(0x80040102_u32 as _);
35667pub const MAPI_E_NO_SUPPRESS: windows_core::HRESULT = windows_core::HRESULT(0x80040602_u32 as _);
35668pub const MAPI_E_OBJECT_CHANGED: windows_core::HRESULT = windows_core::HRESULT(0x80040109_u32 as _);
35669pub const MAPI_E_OBJECT_DELETED: windows_core::HRESULT = windows_core::HRESULT(0x8004010A_u32 as _);
35670pub const MAPI_E_PASSWORD_CHANGE_REQUIRED: windows_core::HRESULT =
35671    windows_core::HRESULT(0x80040120_u32 as _);
35672pub const MAPI_E_PASSWORD_EXPIRED: windows_core::HRESULT =
35673    windows_core::HRESULT(0x80040121_u32 as _);
35674pub const MAPI_E_SESSION_LIMIT: windows_core::HRESULT = windows_core::HRESULT(0x80040112_u32 as _);
35675pub const MAPI_E_STRING_TOO_LONG: windows_core::HRESULT =
35676    windows_core::HRESULT(0x80040105_u32 as _);
35677pub const MAPI_E_SUBMITTED: windows_core::HRESULT = windows_core::HRESULT(0x80040608_u32 as _);
35678pub const MAPI_E_TABLE_EMPTY: windows_core::HRESULT = windows_core::HRESULT(0x80040402_u32 as _);
35679pub const MAPI_E_TABLE_TOO_BIG: windows_core::HRESULT = windows_core::HRESULT(0x80040403_u32 as _);
35680pub const MAPI_E_TEXT_TOO_LARGE: u32 = 18u32;
35681pub const MAPI_E_TIMEOUT: windows_core::HRESULT = windows_core::HRESULT(0x80040401_u32 as _);
35682pub const MAPI_E_TOO_BIG: windows_core::HRESULT = windows_core::HRESULT(0x80040305_u32 as _);
35683pub const MAPI_E_TOO_COMPLEX: windows_core::HRESULT = windows_core::HRESULT(0x80040117_u32 as _);
35684pub const MAPI_E_TOO_MANY_FILES: u32 = 9u32;
35685pub const MAPI_E_TOO_MANY_RECIPIENTS: u32 = 10u32;
35686pub const MAPI_E_TOO_MANY_SESSIONS: u32 = 8u32;
35687pub const MAPI_E_TYPE_NOT_SUPPORTED: u32 = 20u32;
35688pub const MAPI_E_TYPE_NO_SUPPORT: windows_core::HRESULT =
35689    windows_core::HRESULT(0x80040303_u32 as _);
35690pub const MAPI_E_UNABLE_TO_ABORT: windows_core::HRESULT =
35691    windows_core::HRESULT(0x80040114_u32 as _);
35692pub const MAPI_E_UNABLE_TO_COMPLETE: windows_core::HRESULT =
35693    windows_core::HRESULT(0x80040400_u32 as _);
35694pub const MAPI_E_UNCONFIGURED: windows_core::HRESULT = windows_core::HRESULT(0x8004011C_u32 as _);
35695pub const MAPI_E_UNEXPECTED_ID: windows_core::HRESULT = windows_core::HRESULT(0x80040307_u32 as _);
35696pub const MAPI_E_UNEXPECTED_TYPE: windows_core::HRESULT =
35697    windows_core::HRESULT(0x80040304_u32 as _);
35698pub const MAPI_E_UNKNOWN_CPID: windows_core::HRESULT = windows_core::HRESULT(0x8004011E_u32 as _);
35699pub const MAPI_E_UNKNOWN_ENTRYID: windows_core::HRESULT =
35700    windows_core::HRESULT(0x80040201_u32 as _);
35701pub const MAPI_E_UNKNOWN_FLAGS: windows_core::HRESULT = windows_core::HRESULT(0x80040106_u32 as _);
35702pub const MAPI_E_UNKNOWN_LCID: windows_core::HRESULT = windows_core::HRESULT(0x8004011F_u32 as _);
35703pub const MAPI_E_UNKNOWN_RECIPIENT: u32 = 14u32;
35704pub const MAPI_E_USER_ABORT: u32 = 1u32;
35705pub const MAPI_E_USER_CANCEL: windows_core::HRESULT = windows_core::HRESULT(0x80040113_u32 as _);
35706pub const MAPI_E_VERSION: windows_core::HRESULT = windows_core::HRESULT(0x80040110_u32 as _);
35707pub const MAPI_E_WAIT: windows_core::HRESULT = windows_core::HRESULT(0x80040500_u32 as _);
35708pub const MAPI_FOLDER: u32 = 3u32;
35709pub const MAPI_FORCE_CREATE: u32 = 1u32;
35710pub const MAPI_FORCE_DOWNLOAD: u32 = 4096u32;
35711pub const MAPI_FORMINFO: u32 = 12u32;
35712pub const MAPI_FULL_IPM_TREE: u32 = 2u32;
35713pub const MAPI_GUARANTEE_FIFO: u32 = 256u32;
35714pub const MAPI_HOOK_PROVIDER: u32 = 40u32;
35715pub const MAPI_INIT_VERSION: u32 = 0u32;
35716pub const MAPI_LOGOFF_SHARED: u32 = 1u32;
35717pub const MAPI_LOGOFF_UI: u32 = 2u32;
35718pub const MAPI_LOGON_UI: u32 = 1u32;
35719pub const MAPI_LONG_MSGID: u32 = 16384u32;
35720pub const MAPI_MAILUSER: u32 = 6u32;
35721pub const MAPI_MESSAGE: u32 = 5u32;
35722pub const MAPI_MESSAGE_BEHAVIOR_FOLDER: u32 = 1u32;
35723pub const MAPI_MESSAGE_BEHAVIOR_IPM: u32 = 0u32;
35724pub const MAPI_MH_DP_ML: u32 = 3u32;
35725pub const MAPI_MH_DP_MS: u32 = 2u32;
35726pub const MAPI_MH_DP_OTHER_AU: u32 = 6u32;
35727pub const MAPI_MH_DP_PDAU: u32 = 4u32;
35728pub const MAPI_MH_DP_PDS_PATRON: u32 = 5u32;
35729pub const MAPI_MH_DP_PRIVATE_UA: u32 = 1u32;
35730pub const MAPI_MH_DP_PUBLIC_UA: u32 = 0u32;
35731pub const MAPI_MODIFY: u32 = 1u32;
35732pub const MAPI_MOVE: u32 = 1u32;
35733pub const MAPI_MULTITHREAD_NOTIFICATIONS: u32 = 1u32;
35734pub const MAPI_NATIVE_BODY: u32 = 65536u32;
35735pub const MAPI_NATIVE_BODY_TYPE_HTML: u32 = 2u32;
35736pub const MAPI_NATIVE_BODY_TYPE_PLAINTEXT: u32 = 4u32;
35737pub const MAPI_NATIVE_BODY_TYPE_RTF: u32 = 1u32;
35738pub const MAPI_NEW_MESSAGE: u32 = 2u32;
35739pub const MAPI_NEW_SESSION: u32 = 2u32;
35740pub const MAPI_NON_READ: u32 = 1u32;
35741pub const MAPI_NOREPLACE: u32 = 2u32;
35742pub const MAPI_NOTRECIP: u32 = 64u32;
35743pub const MAPI_NOTRESERVED: u32 = 8u32;
35744pub const MAPI_NOW: u32 = 16u32;
35745pub const MAPI_NO_CACHE: u32 = 512u32;
35746pub const MAPI_NO_COINIT: u32 = 8u32;
35747pub const MAPI_NO_HBAR: u32 = 1u32;
35748pub const MAPI_NO_IDS: u32 = 2u32;
35749pub const MAPI_NO_MAIL: u32 = 32768u32;
35750pub const MAPI_NO_STRINGS: u32 = 1u32;
35751pub const MAPI_NO_VBAR: u32 = 2u32;
35752pub const MAPI_NT_SERVICE: u32 = 65536u32;
35753pub const MAPI_OLE: u32 = 1u32;
35754pub const MAPI_OLE_STATIC: u32 = 2u32;
35755pub const MAPI_ONE_OFF_NO_RICH_INFO: u32 = 1u32;
35756pub const MAPI_ONE_OFF_UNICODE: u32 = 32768u32;
35757pub const MAPI_ORIG: u32 = 0u32;
35758pub const MAPI_P1: u32 = 268435456u32;
35759pub const MAPI_PASSWORD_UI: u32 = 131072u32;
35760pub const MAPI_PEEK: u32 = 128u32;
35761pub const MAPI_POST_MESSAGE: u32 = 1u32;
35762pub const MAPI_PRIMARY_STORE: u32 = 4u32;
35763pub const MAPI_PROFILE_PROVIDER: u32 = 38u32;
35764pub const MAPI_PROFSECT: u32 = 9u32;
35765pub const MAPI_PW_ADD_SERVICE_ONLY: u32 = 4u32;
35766pub const MAPI_PW_FIRST_PROFILE: u32 = 1u32;
35767pub const MAPI_PW_HIDE_SERVICES_LIST: u32 = 16u32;
35768pub const MAPI_PW_LAUNCHED_BY_CONFIG: u32 = 2u32;
35769pub const MAPI_PW_PROVIDER_UI_ONLY: u32 = 8u32;
35770pub const MAPI_RECEIPT_REQUESTED: u32 = 2u32;
35771pub const MAPI_RESERVED1: u32 = 65536u32;
35772pub const MAPI_RESOLVED: u32 = 2u32;
35773pub const MAPI_SECONDARY_STORE: u32 = 5u32;
35774pub const MAPI_SEND_NO_RICH_INFO: u32 = 65536u32;
35775pub const MAPI_SENT: u32 = 4u32;
35776pub const MAPI_SERVICE_UI_ALWAYS: u32 = 8192u32;
35777pub const MAPI_SESSION: u32 = 11u32;
35778pub const MAPI_SHORTTERM: u32 = 128u32;
35779pub const MAPI_SIMPLE_STORE_PERMANENT: u32 = 3u32;
35780pub const MAPI_SIMPLE_STORE_TEMPORARY: u32 = 2u32;
35781pub const MAPI_SPOOLER: u32 = 37u32;
35782pub const MAPI_STATUS: u32 = 10u32;
35783pub const MAPI_STORE: u32 = 1u32;
35784pub const MAPI_STORE_PROVIDER: u32 = 33u32;
35785pub const MAPI_SUBMITTED: u32 = 2147483648u32;
35786pub const MAPI_SUBSYSTEM: u32 = 39u32;
35787pub const MAPI_SUPPRESS_ATTACH: u32 = 2048u32;
35788pub const MAPI_THISSESSION: u32 = 32u32;
35789pub const MAPI_TIMEOUT_SHORT: u32 = 1048576u32;
35790pub const MAPI_TO: u32 = 1u32;
35791pub const MAPI_TOP_LEVEL: u32 = 1u32;
35792pub const MAPI_TRANSPORT_PROVIDER: u32 = 36u32;
35793pub const MAPI_UNICODE: u32 = 2147483648u32;
35794pub const MAPI_UNREAD: u32 = 1u32;
35795pub const MAPI_UNREAD_ONLY: u32 = 32u32;
35796pub const MAPI_UNRESOLVED: u32 = 0u32;
35797pub const MAPI_USER_ABORT: u32 = 1u32;
35798pub const MAPI_USE_DEFAULT: u32 = 64u32;
35799pub const MAPI_W_APPROX_COUNT: windows_core::HRESULT = windows_core::HRESULT(0x40482_u32 as _);
35800pub const MAPI_W_CANCEL_MESSAGE: windows_core::HRESULT = windows_core::HRESULT(0x40580_u32 as _);
35801pub const MAPI_W_ERRORS_RETURNED: windows_core::HRESULT = windows_core::HRESULT(0x40380_u32 as _);
35802pub const MAPI_W_NO_SERVICE: windows_core::HRESULT = windows_core::HRESULT(0x40203_u32 as _);
35803pub const MAPI_W_PARTIAL_COMPLETION: windows_core::HRESULT =
35804    windows_core::HRESULT(0x40680_u32 as _);
35805pub const MAPI_W_POSITION_CHANGED: windows_core::HRESULT = windows_core::HRESULT(0x40481_u32 as _);
35806pub const MAX_ADMD_NAME_SIZ: u32 = 17u32;
35807pub const MAX_CBMAX_BODY_LINE: u32 = 4294967295u32;
35808pub const MAX_CBMAX_HEADER_LINE: u32 = 4294967295u32;
35809pub const MAX_COUNTRY_NAME_SIZ: u32 = 4u32;
35810pub const MAX_MTA_NAME_SIZ: u32 = 33u32;
35811pub const MAX_PATH: u32 = 260u32;
35812pub const MAX_PRMD_NAME_SIZ: u32 = 17u32;
35813pub const MDB_FOLDER_IPM: u32 = 1u32;
35814pub const MDB_FOLDER_NORMAL: u32 = 4u32;
35815pub const MDB_FOLDER_RULES: u32 = 8u32;
35816pub const MDB_FOLDER_SEARCH: u32 = 2u32;
35817pub const MDB_IPM: u32 = 32u32;
35818pub const MDB_LIMIT_BELOW: u32 = 1u32;
35819pub const MDB_LIMIT_DISABLED: u32 = 16u32;
35820pub const MDB_LIMIT_ISSUE_WARNING: u32 = 2u32;
35821pub const MDB_LIMIT_NO_CHECK: u32 = 8u32;
35822pub const MDB_LIMIT_PROHIBIT_SEND: u32 = 4u32;
35823pub const MDB_NON_IPM: u32 = 16u32;
35824pub const MDB_NO_DIALOG: u32 = 1u32;
35825pub const MDB_NO_MAIL: u32 = 128u32;
35826pub const MDB_ONLINE: u32 = 256u32;
35827pub const MDB_OPEN_MSG_NO_BLOCK: u32 = 32u32;
35828pub const MDB_QUOTA_NOQUOTA: u32 = 4294967295u32;
35829pub const MDB_SAVE_MSG_UNLOCK: u32 = 64u32;
35830pub const MDB_TEMPORARY: u32 = 32u32;
35831pub const MDB_WRITE: u32 = 4u32;
35832pub const MEBF_FORMATBARSEP: u32 = 4u32;
35833pub const MEBF_INNERCLIENTEDGE: u32 = 2u32;
35834pub const MEBF_NOSCROLL: u32 = 8u32;
35835pub const MEBF_OUTERCLIENTEDGE: u32 = 1u32;
35836pub const MECD_ENCODEFILEURLSONLY: u32 = 8u32;
35837pub const MECD_ENCODEIMAGES: u32 = 4u32;
35838pub const MECD_ENCODEPLUGINS: u32 = 64u32;
35839pub const MECD_ENCODESOUNDS: u32 = 16u32;
35840pub const MECD_ENCODEVIDEO: u32 = 32u32;
35841pub const MECD_HTML: u32 = 1u32;
35842pub const MECD_PLAINTEXT: u32 = 2u32;
35843pub const MECMDID_APPLYDOCUMENT: u32 = 19u32;
35844pub const MECMDID_BACKGROUNDCOLOR: u32 = 18u32;
35845pub const MECMDID_BACKGROUNDIMAGE: u32 = 15u32;
35846pub const MECMDID_BACKGROUNDSOUND: u32 = 21u32;
35847pub const MECMDID_CHARSET: u32 = 13u32;
35848pub const MECMDID_DIRTY: u32 = 1u32;
35849pub const MECMDID_DOWNGRADEPLAINTEXT: u32 = 5u32;
35850pub const MECMDID_EDITHTML: u32 = 4u32;
35851pub const MECMDID_EDITMODE: u32 = 12u32;
35852pub const MECMDID_EMPTY: u32 = 2u32;
35853pub const MECMDID_FORMATFONT: u32 = 10u32;
35854pub const MECMDID_FORMATPARAGRAPH: u32 = 26u32;
35855pub const MECMDID_INSERTBGSOUND: u32 = 22u32;
35856pub const MECMDID_INSERTHTML: u32 = 17u32;
35857pub const MECMDID_INSERTTEXT: u32 = 16u32;
35858pub const MECMDID_INSERTTEXTFILE: u32 = 8u32;
35859pub const MECMDID_PREVIEWFORMAT: u32 = 11u32;
35860pub const MECMDID_ROT13: u32 = 7u32;
35861pub const MECMDID_SAVEASSTATIONERY: u32 = 14u32;
35862pub const MECMDID_SAVEATTACHMENTS: u32 = 20u32;
35863pub const MECMDID_SETSOURCETAB: u32 = 24u32;
35864pub const MECMDID_SETTEXT: u32 = 6u32;
35865pub const MECMDID_SHOWSOURCETABS: u32 = 23u32;
35866pub const MECMDID_STYLE: u32 = 3u32;
35867pub const MECMDID_TABLINKS: u32 = 25u32;
35868pub const MECMDID_VIEWSOURCE: u32 = 9u32;
35869pub const MECMD_VS_HTML: u32 = 1u32;
35870pub const MECMD_VS_MESSAGE: u32 = 2u32;
35871pub const MEHEADER_FORCE_ENGLISH: u32 = 4u32;
35872pub const MEHEADER_MAIL: u32 = 2u32;
35873pub const MEHEADER_NEWS: u32 = 1u32;
35874pub const MEHEADER_NONE: u32 = 0u32;
35875pub const MEHOSTCMDID_ADD_TO_ADDRESSBOOK: u32 = 10u32;
35876pub const MEHOSTCMDID_ADD_TO_FAVORITES: u32 = 11u32;
35877pub const MEHOSTCMDID_BORDERFLAGS: u32 = 14u32;
35878pub const MEHOSTCMDID_COMPOSE_FONT: u32 = 9u32;
35879pub const MEHOSTCMDID_FLAGS: u32 = 6u32;
35880pub const MEHOSTCMDID_FONTCACHE: u32 = 13u32;
35881pub const MEHOSTCMDID_HEADER_TYPE: u32 = 4u32;
35882pub const MEHOSTCMDID_ONPARSECOMPLETE: u32 = 5u32;
35883pub const MEHOSTCMDID_QUOTE_CHAR: u32 = 7u32;
35884pub const MEHOSTCMDID_REPLY_TICK_COLOR: u32 = 8u32;
35885pub const MEHOSTCMDID_SAVEATTACH_PATH: u32 = 17u32;
35886pub const MEHOSTCMDID_SECURITY_ZONE: u32 = 15u32;
35887pub const MEHOSTCMDID_SIGNATURE: u32 = 3u32;
35888pub const MEHOSTCMDID_SIGNATURE_ENABLED: u32 = 1u32;
35889pub const MEHOSTCMDID_SIGNATURE_OPTIONS: u32 = 2u32;
35890pub const MEHOSTCMDID_SLIDESHOW_DELAY: u32 = 12u32;
35891pub const MEHOSTCMDID_SOURCEEDIT_FLAGS: u32 = 18u32;
35892pub const MEHOSTCMDID_SPELL_LANGUAGE: u32 = 19u32;
35893pub const MEHOSTCMDID_SPELL_OPTIONS: u32 = 16u32;
35894pub const MEO_FLAGS_AUTOINLINE: u32 = 4u32;
35895pub const MEO_FLAGS_AUTOTEXT: u32 = 16u32;
35896pub const MEO_FLAGS_BLOCKQUOTE: u32 = 32u32;
35897pub const MEO_FLAGS_DONTSPELLCHECKQUOTED: u32 = 128u32;
35898pub const MEO_FLAGS_HTML: u32 = 2u32;
35899pub const MEO_FLAGS_INCLUDEMSG: u32 = 1u32;
35900pub const MEO_FLAGS_SENDEXTERNALIMGSRC: u32 = 256u32;
35901pub const MEO_FLAGS_SENDIMAGES: u32 = 64u32;
35902pub const MEO_FLAGS_SLIDESHOW: u32 = 8u32;
35903pub const MESIGOPT_BOTTOM: u32 = 8u32;
35904pub const MESIGOPT_HTML: u32 = 16u32;
35905pub const MESIGOPT_PLAIN: u32 = 1u32;
35906pub const MESIGOPT_PREFIX: u32 = 4u32;
35907pub const MESIGOPT_TOP: u32 = 2u32;
35908pub const MESIG_AUTO: u32 = 1u32;
35909pub const MESIG_MANUAL: u32 = 2u32;
35910pub const MESPELLOPT_ALWAYSSUGGEST: u32 = 32u32;
35911pub const MESPELLOPT_CHECKONSEND: u32 = 64u32;
35912pub const MESPELLOPT_CHECKONTYPE: u32 = 128u32;
35913pub const MESPELLOPT_IGNOREDBCS: u32 = 4u32;
35914pub const MESPELLOPT_IGNORENUMBER: u32 = 1u32;
35915pub const MESPELLOPT_IGNOREPROTECT: u32 = 8u32;
35916pub const MESPELLOPT_IGNOREUPPER: u32 = 2u32;
35917pub const MESPELLOPT_IGNOREURL: u32 = 16u32;
35918pub const MESRCFLAGS_COLOR: u32 = 1u32;
35919pub const MESSAGE_BEST_BODY: u32 = 16u32;
35920pub const MESSAGE_DIALOG: u32 = 2u32;
35921pub const MESSAGE_MOVE: u32 = 1u32;
35922pub const MESSAGE_SEND_ENTRYID: u32 = 32u32;
35923pub const MESTYLE_FORMATBAR: u32 = 2u32;
35924pub const MESTYLE_MINIHEADER: u32 = 3u32;
35925pub const MESTYLE_NOHEADER: u32 = 0u32;
35926pub const MESTYLE_PREVIEW: u32 = 1u32;
35927pub const MEST_EDIT: u32 = 0u32;
35928pub const MEST_NEXT: u32 = 3u32;
35929pub const MEST_PREVIEW: u32 = 2u32;
35930pub const MEST_PREVIOUS: u32 = 4u32;
35931pub const MEST_SOURCE: u32 = 1u32;
35932#[repr(transparent)]
35933#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35934pub struct METHODS(pub i32);
35935pub const MIMEOLE_COMPAT_MLANG2: u32 = 2u32;
35936pub const MIMEOLE_COMPAT_OE5: u32 = 1u32;
35937#[repr(C)]
35938#[derive(Clone, Copy, Debug, Default, PartialEq)]
35939pub struct MIMEPARAMINFO {
35940    pub pszName: windows_core::PSTR,
35941    pub pszData: windows_core::PSTR,
35942}
35943#[repr(transparent)]
35944#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35945pub struct MIMEPROPFLAGS(pub i32);
35946#[repr(transparent)]
35947#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35948pub struct MIMEPROPID(pub i32);
35949#[repr(C)]
35950#[derive(Clone, Copy, Debug, PartialEq)]
35951pub struct MIMEPROPINFO {
35952    pub dwMask: u32,
35953    pub hCharset: *mut HCHARSET__,
35954    pub ietEncoding: ENCODINGTYPE,
35955    pub dwRowNumber: u32,
35956    pub dwFlags: u32,
35957    pub dwPropId: u32,
35958    pub cValues: u32,
35959    pub vtDefault: u16,
35960    pub vtCurrent: u16,
35961}
35962impl Default for MIMEPROPINFO {
35963    fn default() -> Self {
35964        unsafe { core::mem::zeroed() }
35965    }
35966}
35967#[repr(transparent)]
35968#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35969pub struct MIMESAVETYPE(pub i32);
35970pub const MIN_CBMAX_BODY_LINE: u32 = 30u32;
35971pub const MIN_CBMAX_HEADER_LINE: u32 = 76u32;
35972pub const MIN_EMS_AB_CONSTRUCTED_PROP_ID: u32 = 65528u32;
35973pub const MNID_ID: u32 = 0u32;
35974pub const MNID_STRING: u32 = 1u32;
35975pub const MODRECIP_ADD: u32 = 2u32;
35976pub const MODRECIP_MODIFY: u32 = 4u32;
35977pub const MODRECIP_REMOVE: u32 = 8u32;
35978pub const MPF_ADDRESS: MIMEPROPFLAGS = MIMEPROPFLAGS(4i32);
35979pub const MPF_HASPARAMS: MIMEPROPFLAGS = MIMEPROPFLAGS(8i32);
35980pub const MPF_INETCSET: MIMEPROPFLAGS = MIMEPROPFLAGS(1i32);
35981pub const MPF_MIME: MIMEPROPFLAGS = MIMEPROPFLAGS(16i32);
35982pub const MPF_READONLY: MIMEPROPFLAGS = MIMEPROPFLAGS(32i32);
35983pub const MPF_RFC1522: MIMEPROPFLAGS = MIMEPROPFLAGS(2i32);
35984pub const MSCAP_RES_ANNOTATION: u32 = 1u32;
35985pub const MSCAP_SECURE_FOLDER_HOMEPAGES: u32 = 1u32;
35986#[repr(transparent)]
35987#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
35988pub struct MSCAP_SELECTOR(pub i32);
35989pub const MSCAP_SEL_FOLDER: MSCAP_SELECTOR = MSCAP_SELECTOR(2i32);
35990pub const MSCAP_SEL_RESERVED1: MSCAP_SELECTOR = MSCAP_SELECTOR(0i32);
35991pub const MSCAP_SEL_RESERVED2: MSCAP_SELECTOR = MSCAP_SELECTOR(1i32);
35992pub const MSCAP_SEL_RESERVED3: MSCAP_SELECTOR = MSCAP_SELECTOR(3i32);
35993pub const MSCAP_SEL_RESTRICTION: MSCAP_SELECTOR = MSCAP_SELECTOR(4i32);
35994pub type MSGCALLRELEASE =
35995    Option<unsafe extern "system" fn(ulcallerdata: u32, lpmessage: windows_core::Ref<IMessage>)>;
35996pub const MSGFLAG_ASSOCIATED: u32 = 64u32;
35997pub const MSGFLAG_FROMME: u32 = 32u32;
35998pub const MSGFLAG_HASATTACH: u32 = 16u32;
35999pub const MSGFLAG_NRN_PENDING: u32 = 512u32;
36000pub const MSGFLAG_READ: u32 = 1u32;
36001pub const MSGFLAG_RESEND: u32 = 128u32;
36002pub const MSGFLAG_RN_PENDING: u32 = 256u32;
36003pub const MSGFLAG_SUBMIT: u32 = 4u32;
36004pub const MSGFLAG_UNMODIFIED: u32 = 2u32;
36005pub const MSGFLAG_UNSENT: u32 = 8u32;
36006pub type MSGSERVICEENTRY = Option<
36007    unsafe extern "system" fn(
36008        hinstance: windows::Win32::Foundation::HINSTANCE,
36009        lpmalloc: windows_core::Ref<windows::Win32::System::Com::IMalloc>,
36010        lpmapisup: windows_core::Ref<IMAPISupport>,
36011        uluiparam: usize,
36012        ulflags: u32,
36013        ulcontext: u32,
36014        cvalues: u32,
36015        lpprops: *mut SPropValue,
36016        lpprovideradmin: windows_core::Ref<IProviderAdmin>,
36017        lppmapierror: *mut *mut MAPIERROR,
36018    ) -> windows_core::HRESULT,
36019>;
36020pub const MSGSTATUS_DELMARKED: u32 = 8u32;
36021pub const MSGSTATUS_HIDDEN: u32 = 4u32;
36022pub const MSGSTATUS_HIGHLIGHTED: u32 = 1u32;
36023pub const MSGSTATUS_IN_CONFLICT: u32 = 2048u32;
36024pub const MSGSTATUS_MDNSENT: u32 = 16384u32;
36025pub const MSGSTATUS_REMOTE_DELETE: u32 = 8192u32;
36026pub const MSGSTATUS_REMOTE_DOWNLOAD: u32 = 4096u32;
36027pub const MSGSTATUS_TAGGED: u32 = 2u32;
36028pub const MSG_LOCKED: u32 = 1u32;
36029pub const MSG_SERVICE_CONFIGURE: u32 = 3u32;
36030pub const MSG_SERVICE_CREATE: u32 = 2u32;
36031pub const MSG_SERVICE_DELETE: u32 = 4u32;
36032pub const MSG_SERVICE_INSTALL: u32 = 1u32;
36033pub const MSG_SERVICE_PROVIDER_CREATE: u32 = 6u32;
36034pub const MSG_SERVICE_PROVIDER_DELETE: u32 = 7u32;
36035pub const MSG_SERVICE_UI_READ_ONLY: u32 = 8u32;
36036pub const MSG_SERVICE_UNINSTALL: u32 = 5u32;
36037pub const MSG_UNLOCKED: u32 = 0u32;
36038pub type MSPROVIDERINIT = Option<
36039    unsafe extern "system" fn(
36040        hinstance: windows::Win32::Foundation::HINSTANCE,
36041        lpmalloc: windows_core::Ref<windows::Win32::System::Com::IMalloc>,
36042        lpallocatebuffer: LPALLOCATEBUFFER,
36043        lpallocatemore: LPALLOCATEMORE,
36044        lpfreebuffer: LPFREEBUFFER,
36045        ulflags: u32,
36046        ulmapiver: u32,
36047        lpulproviderver: *mut u32,
36048        lppmsprovider: windows_core::OutRef<IMSProvider>,
36049    ) -> windows_core::HRESULT,
36050>;
36051pub const MST_BLOB_FLAG: u32 = 4u32;
36052pub const MST_CHILD_ENCRYPT: u32 = 512u32;
36053pub const MST_CHILD_MASK: u32 = 3840u32;
36054pub const MST_CHILD_SIGN: u32 = 256u32;
36055pub const MST_CLASS_MASK: u32 = 4278190080u32;
36056pub const MST_CLASS_PGP: u32 = 16777216u32;
36057pub const MST_CLASS_SMIME_V1: u32 = 0u32;
36058pub const MST_DESCENDENT_MASK: u32 = 65280u32;
36059pub const MST_ENCRYPT_MASK: u32 = 8706u32;
36060pub const MST_NONE: u32 = 0u32;
36061pub const MST_RECEIPT_REQUEST: u32 = 65536u32;
36062pub const MST_SIGN_MASK: u32 = 4353u32;
36063pub const MST_SUBMSG_ENCRYPT: u32 = 8192u32;
36064pub const MST_SUBMSG_MASK: u32 = 61440u32;
36065pub const MST_SUBMSG_SIGN: u32 = 4096u32;
36066pub const MST_THIS_BLOBSIGN: u32 = 5u32;
36067pub const MST_THIS_ENCRYPT: u32 = 2u32;
36068pub const MST_THIS_MASK: u32 = 255u32;
36069pub const MST_THIS_SIGN: u32 = 1u32;
36070pub const MST_TYPE_MASK: u32 = 65535u32;
36071pub const MSV_BADSIGNATURE: u32 = 1u32;
36072pub const MSV_CANTDECRYPT: u32 = 4096u32;
36073pub const MSV_ENCRYPT_MASK: u32 = 1044480u32;
36074pub const MSV_ENC_FOR_EXPIREDCERT: u32 = 8192u32;
36075pub const MSV_EXPIRED_SIGNINGCERT: u32 = 256u32;
36076pub const MSV_INVALID: u32 = 16777216u32;
36077pub const MSV_MALFORMEDSIG: u32 = 128u32;
36078pub const MSV_MSG_MASK: u32 = 251658240u32;
36079pub const MSV_OK: u32 = 0u32;
36080pub const MSV_SIGNATURE_MASK: u32 = 255u32;
36081pub const MSV_SIGNING_MASK: u32 = 3840u32;
36082pub const MSV_UNKHASH: u32 = 4u32;
36083pub const MSV_UNVERIFIABLE: u32 = 2u32;
36084pub const MTA_PAD: u32 = 3u32;
36085pub const MTA_PAD_FOR_ACTIONS: u32 = 2u32;
36086#[repr(C)]
36087#[derive(Clone, Copy, Debug, PartialEq)]
36088pub struct MTSID {
36089    pub cb: u32,
36090    pub ab: [u8; 1],
36091}
36092impl Default for MTSID {
36093    fn default() -> Self {
36094        unsafe { core::mem::zeroed() }
36095    }
36096}
36097pub const MUID_PROFILE_INSTANCE: windows_core::GUID =
36098    windows_core::GUID::from_u128(0x00020385_0000_0000_c000_000000000046);
36099pub const MV_FLAG: u32 = 4096u32;
36100pub const MV_INSTANCE: u32 = 8192u32;
36101#[repr(C)]
36102#[derive(Clone, Copy, Debug, PartialEq)]
36103pub struct MapiFileDesc {
36104    pub ulReserved: u32,
36105    pub flFlags: u32,
36106    pub nPosition: u32,
36107    pub lpszPathName: windows_core::PSTR,
36108    pub lpszFileName: windows_core::PSTR,
36109    pub lpFileType: *mut core::ffi::c_void,
36110}
36111impl Default for MapiFileDesc {
36112    fn default() -> Self {
36113        unsafe { core::mem::zeroed() }
36114    }
36115}
36116#[repr(C)]
36117#[derive(Clone, Copy, Debug, PartialEq)]
36118pub struct MapiFileTagExt {
36119    pub ulReserved: u32,
36120    pub cbTag: u32,
36121    pub lpTag: *mut u8,
36122    pub cbEncoding: u32,
36123    pub lpEncoding: *mut u8,
36124}
36125impl Default for MapiFileTagExt {
36126    fn default() -> Self {
36127        unsafe { core::mem::zeroed() }
36128    }
36129}
36130#[repr(C)]
36131#[derive(Clone, Copy, Debug, PartialEq)]
36132pub struct MapiMessage {
36133    pub ulReserved: u32,
36134    pub lpszSubject: windows_core::PSTR,
36135    pub lpszNoteText: windows_core::PSTR,
36136    pub lpszMessageType: windows_core::PSTR,
36137    pub lpszDateReceived: windows_core::PSTR,
36138    pub lpszConversationID: windows_core::PSTR,
36139    pub flFlags: u32,
36140    pub lpOriginator: *mut MapiRecipDesc,
36141    pub nRecipCount: u32,
36142    pub lpRecips: *mut MapiRecipDesc,
36143    pub nFileCount: u32,
36144    pub lpFiles: *mut MapiFileDesc,
36145}
36146impl Default for MapiMessage {
36147    fn default() -> Self {
36148        unsafe { core::mem::zeroed() }
36149    }
36150}
36151#[repr(C)]
36152#[derive(Clone, Copy, Debug, PartialEq)]
36153pub struct MapiRecipDesc {
36154    pub ulReserved: u32,
36155    pub ulRecipClass: u32,
36156    pub lpszName: windows_core::PSTR,
36157    pub lpszAddress: windows_core::PSTR,
36158    pub ulEIDSize: u32,
36159    pub lpEntryID: *mut core::ffi::c_void,
36160}
36161impl Default for MapiRecipDesc {
36162    fn default() -> Self {
36163        unsafe { core::mem::zeroed() }
36164    }
36165}
36166pub const NEEDS_PREPROCESSING: u32 = 1u32;
36167pub const NEEDS_SPOOLER: u32 = 2u32;
36168#[repr(C)]
36169#[derive(Clone, Copy, Debug, PartialEq)]
36170pub struct NEWMAIL_NOTIFICATION {
36171    pub cbEntryID: u32,
36172    pub lpEntryID: *mut ENTRYID,
36173    pub cbParentID: u32,
36174    pub lpParentID: *mut ENTRYID,
36175    pub ulFlags: u32,
36176    pub lpszMessageClass: *mut i8,
36177    pub ulMessageFlags: u32,
36178}
36179impl Default for NEWMAIL_NOTIFICATION {
36180    fn default() -> Self {
36181        unsafe { core::mem::zeroed() }
36182    }
36183}
36184pub const NOFLAGS: u32 = 0u32;
36185pub const NON_EMS_XP_SAVE: u32 = 4096u32;
36186pub const NON_STANDARD: u32 = 65536u32;
36187pub const NORM_IGNORECASE: u32 = 1u32;
36188pub const NORM_IGNOREKANATYPE: u32 = 65536u32;
36189pub const NORM_IGNORENONSPACE: u32 = 2u32;
36190pub const NORM_IGNORESYMBOLS: u32 = 4u32;
36191pub const NORM_IGNOREWIDTH: u32 = 131072u32;
36192#[repr(C)]
36193#[derive(Clone, Copy)]
36194pub struct NOTIFICATION {
36195    pub ulEventType: u32,
36196    pub ulAlignPad: u32,
36197    pub info: NOTIFICATION_0,
36198}
36199impl Default for NOTIFICATION {
36200    fn default() -> Self {
36201        unsafe { core::mem::zeroed() }
36202    }
36203}
36204#[repr(C)]
36205#[derive(Clone, Copy)]
36206pub union NOTIFICATION_0 {
36207    pub err: ERROR_NOTIFICATION,
36208    pub newmail: NEWMAIL_NOTIFICATION,
36209    pub obj: OBJECT_NOTIFICATION,
36210    pub tab: TABLE_NOTIFICATION,
36211    pub ext: EXTENDED_NOTIFICATION,
36212    pub statobj: STATUS_OBJECT_NOTIFICATION,
36213}
36214impl Default for NOTIFICATION_0 {
36215    fn default() -> Self {
36216        unsafe { core::mem::zeroed() }
36217    }
36218}
36219#[repr(C)]
36220#[derive(Clone, Copy, Debug, PartialEq)]
36221pub struct NOTIFKEY {
36222    pub cb: u32,
36223    pub ab: [u8; 1],
36224}
36225impl Default for NOTIFKEY {
36226    fn default() -> Self {
36227        unsafe { core::mem::zeroed() }
36228    }
36229}
36230pub const NOTIFY_ABORT_DEFERRED: u32 = 1073741824u32;
36231pub const NOTIFY_ACCT_CHANGED: u32 = 1u32;
36232pub const NOTIFY_ACCT_CREATED: u32 = 2u32;
36233pub const NOTIFY_ACCT_DELETED: u32 = 3u32;
36234pub const NOTIFY_ACCT_ORDER_CHANGED: u32 = 4u32;
36235pub const NOTIFY_ACCT_PREDELETED: u32 = 5u32;
36236pub const NOTIFY_BEGIN_INBOUND: u32 = 1u32;
36237pub const NOTIFY_BEGIN_INBOUND_FLUSH: u32 = 4u32;
36238pub const NOTIFY_BEGIN_OUTBOUND: u32 = 2u32;
36239pub const NOTIFY_BEGIN_OUTBOUND_FLUSH: u32 = 8u32;
36240pub const NOTIFY_CANCELED: u32 = 2147483648u32;
36241pub const NOTIFY_CANCEL_MESSAGE: u32 = 2147483648u32;
36242pub const NOTIFY_CONFIG_CHANGE: u32 = 16384u32;
36243pub const NOTIFY_CRITICAL_ERROR: u32 = 268435456u32;
36244pub const NOTIFY_CRITSEC: u32 = 4096u32;
36245pub const NOTIFY_END_INBOUND: u32 = 65536u32;
36246pub const NOTIFY_END_INBOUND_FLUSH: u32 = 262144u32;
36247pub const NOTIFY_END_OUTBOUND: u32 = 131072u32;
36248pub const NOTIFY_END_OUTBOUND_FLUSH: u32 = 524288u32;
36249pub const NOTIFY_NEWMAIL: u32 = 1u32;
36250pub const NOTIFY_NEWMAIL_RECEIVED: u32 = 536870912u32;
36251pub const NOTIFY_NONCRIT: u32 = 8192u32;
36252pub const NOTIFY_READYTOSEND: u32 = 2u32;
36253pub const NOTIFY_SENTDEFERRED: u32 = 4u32;
36254pub const NOTIFY_SYNC: u32 = 1073741824u32;
36255pub const NO_ATTACHMENT: u32 = 0u32;
36256pub const NO_OST_DEFAULT: u32 = 0u32;
36257pub const NO_OST_FLAG_ALLOWED: u32 = 0u32;
36258pub const NO_OST_FLAG_CACHE_ONLY: u32 = 1u32;
36259pub const NO_OST_FLAG_NOT_ALLOWED: u32 = 2u32;
36260pub const NO_OST_FLAG_NO_CACHE: u32 = 3u32;
36261pub const NULL_RESTRICTION: u32 = 255u32;
36262pub const NUM_AG_TYPES: u32 = 3u32;
36263#[repr(C)]
36264#[derive(Clone, Copy, Debug, PartialEq)]
36265pub struct OBJECT_NOTIFICATION {
36266    pub cbEntryID: u32,
36267    pub lpEntryID: *mut ENTRYID,
36268    pub ulObjType: u32,
36269    pub cbParentID: u32,
36270    pub lpParentID: *mut ENTRYID,
36271    pub cbOldID: u32,
36272    pub lpOldID: *mut ENTRYID,
36273    pub cbOldParentID: u32,
36274    pub lpOldParentID: *mut ENTRYID,
36275    pub lpPropTagArray: *mut SPropTagArray,
36276}
36277impl Default for OBJECT_NOTIFICATION {
36278    fn default() -> Self {
36279        unsafe { core::mem::zeroed() }
36280    }
36281}
36282pub const OF_AVAILABLE_OFFLINE: u32 = 1u32;
36283pub const OF_FORCE: u32 = 2147483648u32;
36284pub const OID: CERTNAMETYPE = CERTNAMETYPE(1i32);
36285pub const OID_ENCODING: u32 = 11u32;
36286pub const OID_TAG: u32 = 10u32;
36287pub const OLK_ACCOUNT_NO_FLAGS: u32 = 0u32;
36288pub const OPENSTORE_ALTERNATE_SERVER: u32 = 256u32;
36289pub const OPENSTORE_CACHE_EXCHANGE: u32 = 32768u32;
36290pub const OPENSTORE_CALLBACK_LOGON: u32 = 4096u32;
36291pub const OPENSTORE_CLI_WITH_NAMEDPROP_FIX: u32 = 65536u32;
36292pub const OPENSTORE_CLI_WITH_REPLID_GUID_MAPPING_FIX: u32 = 262144u32;
36293pub const OPENSTORE_ENABLE_LAZY_LOGGING: u32 = 131072u32;
36294pub const OPENSTORE_FAIL_IF_NO_MAILBOX: u32 = 16384u32;
36295pub const OPENSTORE_HOME_LOGON: u32 = 4u32;
36296pub const OPENSTORE_IGNORE_HOME_MDB: u32 = 512u32;
36297pub const OPENSTORE_INTERNET_ANONYMOUS: u32 = 128u32;
36298pub const OPENSTORE_LOCAL: u32 = 8192u32;
36299pub const OPENSTORE_NO_LOCALIZATION: u32 = 524288u32;
36300pub const OPENSTORE_NO_MAIL: u32 = 1024u32;
36301pub const OPENSTORE_OVERRIDE_HOME_MDB: u32 = 16u32;
36302pub const OPENSTORE_OVERRIDE_LAST_MODIFIER: u32 = 2048u32;
36303pub const OPENSTORE_PUBLIC: u32 = 2u32;
36304pub const OPENSTORE_REMOTE_TRANSPORT: u32 = 64u32;
36305pub const OPENSTORE_RESTORE_DATABASE: u32 = 1048576u32;
36306pub const OPENSTORE_TAKE_OWNERSHIP: u32 = 8u32;
36307pub const OPENSTORE_TRANSPORT: u32 = 32u32;
36308pub const OPENSTORE_USE_ADMIN_PRIVILEGE: u32 = 1u32;
36309pub const OPENSTORE_XFOREST_MOVE: u32 = 2097152u32;
36310pub const OPENSTREAMONFILE: windows_core::PCSTR = windows_core::s!("OpenStreamOnFile");
36311pub const OPEN_ALWAYS: u32 = 4u32;
36312pub const OPEN_EXISTING: u32 = 3u32;
36313pub const OPEN_IF_EXISTS: u32 = 1u32;
36314pub type OPTIONCALLBACK = Option<
36315    unsafe extern "system" fn(
36316        hinst: windows::Win32::Foundation::HINSTANCE,
36317        lpmalloc: windows_core::Ref<windows::Win32::System::Com::IMalloc>,
36318        ulflags: u32,
36319        cboptiondata: u32,
36320        lpboptiondata: *mut u8,
36321        lpmapisup: windows_core::Ref<IMAPISupport>,
36322        lpdatasource: windows_core::Ref<IMAPIProp>,
36323        lppwrappedsource: windows_core::OutRef<IMAPIProp>,
36324        lppmapierror: *mut *mut MAPIERROR,
36325    ) -> i32,
36326>;
36327#[repr(C)]
36328#[derive(Clone, Copy, Debug, PartialEq)]
36329pub struct OPTIONDATA {
36330    pub ulFlags: u32,
36331    pub lpRecipGUID: *mut windows_core::GUID,
36332    pub lpszAdrType: *mut i8,
36333    pub lpszDLLName: *mut i8,
36334    pub ulOrdinal: u32,
36335    pub cbOptionsData: u32,
36336    pub lpbOptionsData: *mut u8,
36337    pub cOptionsProps: u32,
36338    pub lpOptionsProps: *mut SPropValue,
36339}
36340impl Default for OPTIONDATA {
36341    fn default() -> Self {
36342        unsafe { core::mem::zeroed() }
36343    }
36344}
36345pub const OPTION_TYPE_MESSAGE: u32 = 2u32;
36346pub const OPTION_TYPE_RECIPIENT: u32 = 1u32;
36347pub const OP_BOUNCE: ACTTYPE = ACTTYPE(6i32);
36348pub const OP_COPY: ACTTYPE = ACTTYPE(2i32);
36349pub const OP_DEFER_ACTION: ACTTYPE = ACTTYPE(5i32);
36350pub const OP_DELEGATE: ACTTYPE = ACTTYPE(8i32);
36351pub const OP_DELETE: ACTTYPE = ACTTYPE(10i32);
36352pub const OP_FORWARD: ACTTYPE = ACTTYPE(7i32);
36353pub const OP_MARK_AS_READ: ACTTYPE = ACTTYPE(11i32);
36354pub const OP_MOVE: ACTTYPE = ACTTYPE(1i32);
36355pub const OP_OOF_REPLY: ACTTYPE = ACTTYPE(4i32);
36356pub const OP_REPLY: ACTTYPE = ACTTYPE(3i32);
36357pub const OP_TAG: ACTTYPE = ACTTYPE(9i32);
36358pub const OSTF_BEST_ENCRYPTION: u32 = 536870912u32;
36359pub const OSTF_COMPRESSABLE_ENCRYPTION: u32 = 1073741824u32;
36360pub const OSTF_NO_ENCRYPTION: u32 = 2147483648u32;
36361pub const PDF_ENCODED: u32 = 1u32;
36362pub const PDF_NAMEINDATA: u32 = 2u32;
36363pub const PDF_NOCOMMENTS: u32 = 8u32;
36364pub const PDF_SAVENOENCODE: u32 = 16u32;
36365pub const PDF_VECTOR: u32 = 32u32;
36366pub const PDK1_SPI_VERSION: i32 = 65536i32;
36367pub const PDK2_SPI_VERSION: i32 = 65544i32;
36368pub const PDK3_SPI_VERSION: i32 = 65552i32;
36369pub type PFNIDLE =
36370    Option<unsafe extern "system" fn(param0: *mut core::ffi::c_void) -> windows_core::BOOL>;
36371pub const PID_ATT_ACCOUNT: MIMEPROPID = MIMEPROPID(63i32);
36372pub const PID_ATT_AUTOINLINED: MIMEPROPID = MIMEPROPID(72i32);
36373pub const PID_ATT_COMBINED: MIMEPROPID = MIMEPROPID(71i32);
36374pub const PID_ATT_FILENAME: MIMEPROPID = MIMEPROPID(45i32);
36375pub const PID_ATT_FORWARDTO: MIMEPROPID = MIMEPROPID(67i32);
36376pub const PID_ATT_GENFNAME: MIMEPROPID = MIMEPROPID(46i32);
36377pub const PID_ATT_GHOSTED: MIMEPROPID = MIMEPROPID(69i32);
36378pub const PID_ATT_ILLEGAL: MIMEPROPID = MIMEPROPID(50i32);
36379pub const PID_ATT_NORMSUBJ: MIMEPROPID = MIMEPROPID(49i32);
36380pub const PID_ATT_PRIORITY: MIMEPROPID = MIMEPROPID(54i32);
36381pub const PID_ATT_PRITYPE: MIMEPROPID = MIMEPROPID(47i32);
36382pub const PID_ATT_RECVTIME: MIMEPROPID = MIMEPROPID(53i32);
36383pub const PID_ATT_RENDERED: MIMEPROPID = MIMEPROPID(51i32);
36384pub const PID_ATT_SENTTIME: MIMEPROPID = MIMEPROPID(52i32);
36385pub const PID_ATT_SERVER: MIMEPROPID = MIMEPROPID(62i32);
36386pub const PID_ATT_STOREFOLDERID: MIMEPROPID = MIMEPROPID(68i32);
36387pub const PID_ATT_STOREMSGID: MIMEPROPID = MIMEPROPID(65i32);
36388pub const PID_ATT_SUBTYPE: MIMEPROPID = MIMEPROPID(48i32);
36389pub const PID_ATT_UIDL: MIMEPROPID = MIMEPROPID(64i32);
36390pub const PID_ATT_UNCACHEDSIZE: MIMEPROPID = MIMEPROPID(70i32);
36391pub const PID_ATT_USERNAME: MIMEPROPID = MIMEPROPID(66i32);
36392pub const PID_BASE: u32 = 2u32;
36393pub const PID_HDR_APPARTO: MIMEPROPID = MIMEPROPID(11i32);
36394pub const PID_HDR_APPROVED: MIMEPROPID = MIMEPROPID(34i32);
36395pub const PID_HDR_ARTICLEID: MIMEPROPID = MIMEPROPID(60i32);
36396pub const PID_HDR_BCC: MIMEPROPID = MIMEPROPID(16i32);
36397pub const PID_HDR_CC: MIMEPROPID = MIMEPROPID(29i32);
36398pub const PID_HDR_CNTBASE: MIMEPROPID = MIMEPROPID(23i32);
36399pub const PID_HDR_CNTDESC: MIMEPROPID = MIMEPROPID(21i32);
36400pub const PID_HDR_CNTDISP: MIMEPROPID = MIMEPROPID(22i32);
36401pub const PID_HDR_CNTID: MIMEPROPID = MIMEPROPID(20i32);
36402pub const PID_HDR_CNTLOC: MIMEPROPID = MIMEPROPID(24i32);
36403pub const PID_HDR_CNTTYPE: MIMEPROPID = MIMEPROPID(18i32);
36404pub const PID_HDR_CNTXFER: MIMEPROPID = MIMEPROPID(19i32);
36405pub const PID_HDR_COMMENT: MIMEPROPID = MIMEPROPID(55i32);
36406pub const PID_HDR_CONTROL: MIMEPROPID = MIMEPROPID(30i32);
36407pub const PID_HDR_DATE: MIMEPROPID = MIMEPROPID(12i32);
36408pub const PID_HDR_DISTRIB: MIMEPROPID = MIMEPROPID(31i32);
36409pub const PID_HDR_ENCODING: MIMEPROPID = MIMEPROPID(56i32);
36410pub const PID_HDR_ENCRYPTED: MIMEPROPID = MIMEPROPID(57i32);
36411pub const PID_HDR_EXPIRES: MIMEPROPID = MIMEPROPID(28i32);
36412pub const PID_HDR_FOLLOWUPTO: MIMEPROPID = MIMEPROPID(27i32);
36413pub const PID_HDR_FROM: MIMEPROPID = MIMEPROPID(6i32);
36414pub const PID_HDR_KEYWORDS: MIMEPROPID = MIMEPROPID(32i32);
36415pub const PID_HDR_LINES: MIMEPROPID = MIMEPROPID(35i32);
36416pub const PID_HDR_MESSAGEID: MIMEPROPID = MIMEPROPID(7i32);
36417pub const PID_HDR_MIMEVER: MIMEPROPID = MIMEPROPID(17i32);
36418pub const PID_HDR_NEWSGROUP: MIMEPROPID = MIMEPROPID(2i32);
36419pub const PID_HDR_NEWSGROUPS: MIMEPROPID = MIMEPROPID(3i32);
36420pub const PID_HDR_OFFSETS: MIMEPROPID = MIMEPROPID(58i32);
36421pub const PID_HDR_ORG: MIMEPROPID = MIMEPROPID(37i32);
36422pub const PID_HDR_PATH: MIMEPROPID = MIMEPROPID(26i32);
36423pub const PID_HDR_RECEIVED: MIMEPROPID = MIMEPROPID(13i32);
36424pub const PID_HDR_REFS: MIMEPROPID = MIMEPROPID(4i32);
36425pub const PID_HDR_REPLYTO: MIMEPROPID = MIMEPROPID(14i32);
36426pub const PID_HDR_RETRCPTTO: MIMEPROPID = MIMEPROPID(10i32);
36427pub const PID_HDR_RETURNPATH: MIMEPROPID = MIMEPROPID(8i32);
36428pub const PID_HDR_RR: MIMEPROPID = MIMEPROPID(9i32);
36429pub const PID_HDR_SENDER: MIMEPROPID = MIMEPROPID(61i32);
36430pub const PID_HDR_SUBJECT: MIMEPROPID = MIMEPROPID(5i32);
36431pub const PID_HDR_SUMMARY: MIMEPROPID = MIMEPROPID(33i32);
36432pub const PID_HDR_TO: MIMEPROPID = MIMEPROPID(25i32);
36433pub const PID_HDR_XMAILER: MIMEPROPID = MIMEPROPID(15i32);
36434pub const PID_HDR_XMSPRI: MIMEPROPID = MIMEPROPID(40i32);
36435pub const PID_HDR_XNEWSRDR: MIMEPROPID = MIMEPROPID(38i32);
36436pub const PID_HDR_XPRI: MIMEPROPID = MIMEPROPID(39i32);
36437pub const PID_HDR_XREF: MIMEPROPID = MIMEPROPID(36i32);
36438pub const PID_HDR_XUNSENT: MIMEPROPID = MIMEPROPID(59i32);
36439pub const PID_LAST: MIMEPROPID = MIMEPROPID(73i32);
36440pub const PID_PAR_BOUNDARY: MIMEPROPID = MIMEPROPID(42i32);
36441pub const PID_PAR_CHARSET: MIMEPROPID = MIMEPROPID(43i32);
36442pub const PID_PAR_FILENAME: MIMEPROPID = MIMEPROPID(41i32);
36443pub const PID_PAR_NAME: MIMEPROPID = MIMEPROPID(44i32);
36444pub const PIM_CHARSET: PROPINFOMASK = PROPINFOMASK(1i32);
36445pub const PIM_ENCODINGTYPE: PROPINFOMASK = PROPINFOMASK(2i32);
36446pub const PIM_FLAGS: PROPINFOMASK = PROPINFOMASK(8i32);
36447pub const PIM_PROPID: PROPINFOMASK = PROPINFOMASK(16i32);
36448pub const PIM_ROWNUMBER: PROPINFOMASK = PROPINFOMASK(4i32);
36449pub const PIM_VALUES: PROPINFOMASK = PROPINFOMASK(32i32);
36450pub const PIM_VTCURRENT: PROPINFOMASK = PROPINFOMASK(128i32);
36451pub const PIM_VTDEFAULT: PROPINFOMASK = PROPINFOMASK(64i32);
36452pub const PMS_HTML: u32 = 1u32;
36453pub const PMS_TEXT: u32 = 2u32;
36454pub type PREPROCESSMESSAGE = Option<
36455    unsafe extern "system" fn(
36456        lpvsession: *mut core::ffi::c_void,
36457        lpmessage: windows_core::Ref<IMessage>,
36458        lpadrbook: windows_core::Ref<IAddrBook>,
36459        lpfolder: windows_core::Ref<IMAPIFolder>,
36460        allocatebuffer: LPALLOCATEBUFFER,
36461        allocatemore: LPALLOCATEMORE,
36462        freebuffer: LPFREEBUFFER,
36463        lpcoutbound: *mut u32,
36464        lpppmessage: *mut *mut Option<IMessage>,
36465        lppreciplist: *mut *mut ADRLIST,
36466    ) -> windows_core::HRESULT,
36467>;
36468pub const PRIHIGHEST: u32 = 32767u32;
36469pub const PRILOWEST: i32 = -32768i32;
36470pub const PRIO_NONURGENT: u32 = 4294967295u32;
36471pub const PRIO_NORMAL: u32 = 0u32;
36472pub const PRIO_URGENT: u32 = 1u32;
36473pub const PRIUSER: u32 = 0u32;
36474pub const PRIV_DL_ALLOW_OOF: u32 = 8u32;
36475pub const PRIV_DL_HIDE_MEMBERS: u32 = 1u32;
36476pub const PRIV_DL_REPORT_TO_ORIG: u32 = 2u32;
36477pub const PRIV_DL_REPORT_TO_OWNER: u32 = 4u32;
36478pub const PRMD_PAD: u32 = 3u32;
36479pub const PRMD_PAD_FOR_ACTIONS: u32 = 2u32;
36480pub const PROCESS_XP_HEADER_CACHE: u32 = 131072u32;
36481pub const PROFILE_DELEGATE: u32 = 2u32;
36482pub const PROFILE_PRIMARY_USER: u32 = 1u32;
36483pub const PROFILE_PUBLIC_STORE: u32 = 3u32;
36484pub const PROFILE_SUBSCRIPTION: u32 = 4u32;
36485pub const PROFILE_VERSION: u32 = 1281u32;
36486pub const PROPATTR_MANDATORY: u32 = 1u32;
36487pub const PROPATTR_NOT_PRESENT: u32 = 8u32;
36488pub const PROPATTR_READABLE: u32 = 2u32;
36489pub const PROPATTR_WRITEABLE: u32 = 4u32;
36490#[repr(transparent)]
36491#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
36492pub struct PROPINFOMASK(pub i32);
36493pub const PROP_ACCT_DELIVERY_FOLDER: u32 = 1638658u32;
36494pub const PROP_ACCT_DELIVERY_STORE: u32 = 1573122u32;
36495pub const PROP_ACCT_ID: u32 = 65539u32;
36496pub const PROP_ACCT_IS_EXCH: u32 = 1310723u32;
36497pub const PROP_ACCT_MINI_UID: u32 = 196611u32;
36498pub const PROP_ACCT_NAME: u32 = 131103u32;
36499pub const PROP_ACCT_PREFERENCES_UID: u32 = 2228482u32;
36500pub const PROP_ACCT_SEND_STAMP: u32 = 917535u32;
36501pub const PROP_ACCT_SENTITEMS_EID: u32 = 2097410u32;
36502pub const PROP_ACCT_STAMP: u32 = 851999u32;
36503pub const PROP_ACCT_USER_DISPLAY_NAME: u32 = 720927u32;
36504pub const PROP_ACCT_USER_EMAIL_ADDR: u32 = 786463u32;
36505pub const PROP_ID_INVALID: u32 = 65535u32;
36506pub const PROP_ID_NULL: u32 = 0u32;
36507pub const PROP_ID_SECURE_MAX: u32 = 26623u32;
36508pub const PROP_ID_SECURE_MIN: u32 = 26608u32;
36509pub const PROP_INET_PASSWORD: u32 = 16908319u32;
36510pub const PROP_INET_PORT: u32 = 17039363u32;
36511pub const PROP_INET_SERVER: u32 = 16777247u32;
36512pub const PROP_INET_SSL: u32 = 17104899u32;
36513pub const PROP_INET_USER: u32 = 16842783u32;
36514pub const PROP_INET_USE_SPA: u32 = 17301507u32;
36515pub const PROP_MAPI_EMSMDB_UID: u32 = 537460994u32;
36516pub const PROP_MAPI_IDENTITY_ENTRYID: u32 = 537002242u32;
36517pub const PROP_MAPI_TRANSPORT_FLAGS: u32 = 537919746u32;
36518pub const PROP_POP_LEAVE_ON_SERVER: u32 = 268435459u32;
36519pub const PROP_SMTP_AUTH_METHOD: u32 = 34078723u32;
36520pub const PROP_SMTP_PASSWORD: u32 = 33882143u32;
36521pub const PROP_SMTP_PORT: u32 = 33619971u32;
36522pub const PROP_SMTP_SECURE_CONNECTION: u32 = 34209795u32;
36523pub const PROP_SMTP_SERVER: u32 = 33554463u32;
36524pub const PROP_SMTP_SSL: u32 = 33685507u32;
36525pub const PROP_SMTP_USER: u32 = 33816607u32;
36526pub const PROP_SMTP_USE_AUTH: u32 = 33751043u32;
36527pub const PROP_SMTP_USE_SPA: u32 = 34013187u32;
36528pub const PROP_TYPE_MASK: u32 = 65535u32;
36529pub const PR_7BIT_DISPLAY_NAME: u32 = 973013022u32;
36530pub const PR_ABSTRACT: u32 = 1071251486u32;
36531pub const PR_ABSTRACT_A: u32 = 1071251486u32;
36532pub const PR_ABSTRACT_W: u32 = 1071251487u32;
36533pub const PR_AB_DEFAULT_DIR: u32 = 1023803650u32;
36534pub const PR_AB_DEFAULT_PAB: u32 = 1023869186u32;
36535pub const PR_AB_PROVIDERS: u32 = 1023475970u32;
36536pub const PR_AB_PROVIDER_ID: u32 = 907346178u32;
36537pub const PR_AB_SEARCH_PATH: u32 = 1023742210u32;
36538pub const PR_AB_SEARCH_PATH_UPDATE: u32 = 1024524546u32;
36539pub const PR_ACCESS: u32 = 267649027u32;
36540pub const PR_ACCESS_LEVEL: u32 = 267845635u32;
36541pub const PR_ACCOUNT: u32 = 973078558u32;
36542pub const PR_ACCOUNT_A: u32 = 973078558u32;
36543pub const PR_ACCOUNT_W: u32 = 973078559u32;
36544pub const PR_ACKNOWLEDGEMENT_MODE: u32 = 65539u32;
36545pub const PR_ACL_DATA: u32 = 1071644930u32;
36546pub const PR_ACL_TABLE: u32 = 1071644685u32;
36547pub const PR_ACTIVE_USER_ENTRYID: u32 = 1716650242u32;
36548pub const PR_ADDRBOOK_FOR_LOCAL_SITE_ENTRYID: u32 = 1713766658u32;
36549pub const PR_ADDRESS_BOOK_DISPLAY_NAME: u32 = 1072168990u32;
36550pub const PR_ADDRESS_BOOK_ENTRYID: u32 = 1715142914u32;
36551pub const PR_ADDRTYPE: u32 = 805437470u32;
36552pub const PR_ADDRTYPE_A: u32 = 805437470u32;
36553pub const PR_ADDRTYPE_W: u32 = 805437471u32;
36554pub const PR_ADDR_CC: u32 = 244842526u32;
36555pub const PR_ADDR_CC_A: u32 = 244842526u32;
36556pub const PR_ADDR_CC_W: u32 = 244842527u32;
36557pub const PR_ADDR_TO: u32 = 244776990u32;
36558pub const PR_ADMIN_SECURITY_DESCRIPTOR: u32 = 1025573122u32;
36559pub const PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML: u32 = 241893406u32;
36560pub const PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML_A: u32 = 241893406u32;
36561pub const PR_ADMIN_SECURITY_DESCRIPTOR_AS_XML_W: u32 = 241893407u32;
36562pub const PR_ALTERNATE_RECIPIENT: u32 = 973144322u32;
36563pub const PR_ALTERNATE_RECIPIENT_ALLOWED: u32 = 131083u32;
36564pub const PR_ANR: u32 = 906756126u32;
36565pub const PR_ANR_A: u32 = 906756126u32;
36566pub const PR_ANR_W: u32 = 906756127u32;
36567pub const PR_ANTIVIRUS_SCAN_INFO: u32 = 243793950u32;
36568pub const PR_ANTIVIRUS_SCAN_STATUS: u32 = 243728387u32;
36569pub const PR_ANTIVIRUS_VENDOR: u32 = 243597342u32;
36570pub const PR_ANTIVIRUS_VERSION: u32 = 243662851u32;
36571pub const PR_ARCHIVE_DATE: u32 = 807338048u32;
36572pub const PR_ARCHIVE_PERIOD: u32 = 807272451u32;
36573pub const PR_ARCHIVE_TAG: u32 = 806879490u32;
36574pub const PR_ARRIVAL_TIME: u32 = 1717502016u32;
36575pub const PR_ASSISTANT: u32 = 976224286u32;
36576pub const PR_ASSISTANT_A: u32 = 976224286u32;
36577pub const PR_ASSISTANT_TELEPHONE_NUMBER: u32 = 976093214u32;
36578pub const PR_ASSISTANT_TELEPHONE_NUMBER_A: u32 = 976093214u32;
36579pub const PR_ASSISTANT_TELEPHONE_NUMBER_W: u32 = 976093215u32;
36580pub const PR_ASSISTANT_W: u32 = 976224287u32;
36581pub const PR_ASSOC_CONTENT_COUNT: u32 = 907476995u32;
36582pub const PR_ASSOC_MESSAGE_SIZE: u32 = 1723072515u32;
36583pub const PR_ASSOC_MESSAGE_SIZE_EXTENDED: u32 = 1723072532u32;
36584pub const PR_ASSOC_MSG_W_ATTACH_COUNT: u32 = 1722679299u32;
36585pub const PR_ATTACHMENT_X400_PARAMETERS: u32 = 922747138u32;
36586pub const PR_ATTACH_ADDITIONAL_INFO: u32 = 923730178u32;
36587pub const PR_ATTACH_CONTENT_ID: u32 = 923926558u32;
36588pub const PR_ATTACH_CONTENT_ID_A: u32 = 923926558u32;
36589pub const PR_ATTACH_CONTENT_ID_W: u32 = 923926559u32;
36590pub const PR_ATTACH_DATA_BIN: u32 = 922812674u32;
36591pub const PR_ATTACH_DATA_OBJ: u32 = 922812429u32;
36592pub const PR_ATTACH_ENCODING: u32 = 922878210u32;
36593pub const PR_ATTACH_EXTENSION: u32 = 922943518u32;
36594pub const PR_ATTACH_EXTENSION_A: u32 = 922943518u32;
36595pub const PR_ATTACH_EXTENSION_W: u32 = 922943519u32;
36596pub const PR_ATTACH_FILENAME: u32 = 923009054u32;
36597pub const PR_ATTACH_FILENAME_A: u32 = 923009054u32;
36598pub const PR_ATTACH_FILENAME_W: u32 = 923009055u32;
36599pub const PR_ATTACH_LONG_FILENAME: u32 = 923205662u32;
36600pub const PR_ATTACH_LONG_FILENAME_A: u32 = 923205662u32;
36601pub const PR_ATTACH_LONG_FILENAME_W: u32 = 923205663u32;
36602pub const PR_ATTACH_LONG_PATHNAME: u32 = 923598878u32;
36603pub const PR_ATTACH_LONG_PATHNAME_A: u32 = 923598878u32;
36604pub const PR_ATTACH_LONG_PATHNAME_W: u32 = 923598879u32;
36605pub const PR_ATTACH_METHOD: u32 = 923074563u32;
36606pub const PR_ATTACH_MIME_TAG: u32 = 923664414u32;
36607pub const PR_ATTACH_MIME_TAG_A: u32 = 923664414u32;
36608pub const PR_ATTACH_MIME_TAG_W: u32 = 923664415u32;
36609pub const PR_ATTACH_NUM: u32 = 237043715u32;
36610pub const PR_ATTACH_ON_ASSOC_MSG_COUNT: u32 = 1722941443u32;
36611pub const PR_ATTACH_ON_NORMAL_MSG_COUNT: u32 = 1722875907u32;
36612pub const PR_ATTACH_PATHNAME: u32 = 923271198u32;
36613pub const PR_ATTACH_PATHNAME_A: u32 = 923271198u32;
36614pub const PR_ATTACH_PATHNAME_W: u32 = 923271199u32;
36615pub const PR_ATTACH_RENDERING: u32 = 923336962u32;
36616pub const PR_ATTACH_SIZE: u32 = 236978179u32;
36617pub const PR_ATTACH_TAG: u32 = 923402498u32;
36618pub const PR_ATTACH_TRANSPORT_NAME: u32 = 923533342u32;
36619pub const PR_ATTACH_TRANSPORT_NAME_A: u32 = 923533342u32;
36620pub const PR_ATTACH_TRANSPORT_NAME_W: u32 = 923533343u32;
36621pub const PR_ATTR_HIDDEN: u32 = 284426251u32;
36622pub const PR_ATTR_READONLY: u32 = 284557323u32;
36623pub const PR_ATTR_SYSTEM: u32 = 284491787u32;
36624pub const PR_AUTHORIZING_USERS: u32 = 196866u32;
36625pub const PR_AUTO_ADD_NEW_SUBS: u32 = 1709506571u32;
36626pub const PR_AUTO_FORWARDED: u32 = 327691u32;
36627pub const PR_AUTO_FORWARD_COMMENT: u32 = 262174u32;
36628pub const PR_AUTO_FORWARD_COMMENT_A: u32 = 262174u32;
36629pub const PR_AUTO_FORWARD_COMMENT_W: u32 = 262175u32;
36630pub const PR_AUTO_RESET: u32 = 1728843848u32;
36631pub const PR_AUTO_RESPONSE_SUPPRESS: u32 = 1071579139u32;
36632pub const PR_BEEPER_TELEPHONE_NUMBER: u32 = 975241246u32;
36633pub const PR_BEEPER_TELEPHONE_NUMBER_A: u32 = 975241246u32;
36634pub const PR_BEEPER_TELEPHONE_NUMBER_W: u32 = 975241247u32;
36635pub const PR_BILATERAL_INFO: u32 = 1071382786u32;
36636pub const PR_BIRTHDAY: u32 = 977403968u32;
36637pub const PR_BLOCK_STATUS: u32 = 278265859u32;
36638pub const PR_BODY: u32 = 268435486u32;
36639pub const PR_BODY_A: u32 = 268435486u32;
36640pub const PR_BODY_CRC: u32 = 236716035u32;
36641pub const PR_BODY_W: u32 = 268435487u32;
36642pub const PR_BUSINESS2_TELEPHONE_NUMBER: u32 = 974848030u32;
36643pub const PR_BUSINESS2_TELEPHONE_NUMBER_A: u32 = 974848030u32;
36644pub const PR_BUSINESS2_TELEPHONE_NUMBER_W: u32 = 974848031u32;
36645pub const PR_BUSINESS_ADDRESS_CITY: u32 = 975634462u32;
36646pub const PR_BUSINESS_ADDRESS_CITY_A: u32 = 975634462u32;
36647pub const PR_BUSINESS_ADDRESS_CITY_W: u32 = 975634463u32;
36648pub const PR_BUSINESS_ADDRESS_COUNTRY: u32 = 975568926u32;
36649pub const PR_BUSINESS_ADDRESS_COUNTRY_A: u32 = 975568926u32;
36650pub const PR_BUSINESS_ADDRESS_COUNTRY_W: u32 = 975568927u32;
36651pub const PR_BUSINESS_ADDRESS_POSTAL_CODE: u32 = 975831070u32;
36652pub const PR_BUSINESS_ADDRESS_POSTAL_CODE_A: u32 = 975831070u32;
36653pub const PR_BUSINESS_ADDRESS_POSTAL_CODE_W: u32 = 975831071u32;
36654pub const PR_BUSINESS_ADDRESS_POST_OFFICE_BOX: u32 = 975896606u32;
36655pub const PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_A: u32 = 975896606u32;
36656pub const PR_BUSINESS_ADDRESS_POST_OFFICE_BOX_W: u32 = 975896607u32;
36657pub const PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE: u32 = 975699998u32;
36658pub const PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_A: u32 = 975699998u32;
36659pub const PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE_W: u32 = 975699999u32;
36660pub const PR_BUSINESS_ADDRESS_STREET: u32 = 975765534u32;
36661pub const PR_BUSINESS_ADDRESS_STREET_A: u32 = 975765534u32;
36662pub const PR_BUSINESS_ADDRESS_STREET_W: u32 = 975765535u32;
36663pub const PR_BUSINESS_FAX_NUMBER: u32 = 975437854u32;
36664pub const PR_BUSINESS_FAX_NUMBER_A: u32 = 975437854u32;
36665pub const PR_BUSINESS_FAX_NUMBER_W: u32 = 975437855u32;
36666pub const PR_BUSINESS_HOME_PAGE: u32 = 978386974u32;
36667pub const PR_BUSINESS_HOME_PAGE_A: u32 = 978386974u32;
36668pub const PR_BUSINESS_HOME_PAGE_W: u32 = 978386975u32;
36669pub const PR_BUSINESS_TELEPHONE_NUMBER: u32 = 973602846u32;
36670pub const PR_BUSINESS_TELEPHONE_NUMBER_A: u32 = 973602846u32;
36671pub const PR_BUSINESS_TELEPHONE_NUMBER_W: u32 = 973602847u32;
36672pub const PR_CACHED_COLUMN_COUNT: u32 = 1722548227u32;
36673pub const PR_CALLBACK_TELEPHONE_NUMBER: u32 = 973209630u32;
36674pub const PR_CALLBACK_TELEPHONE_NUMBER_A: u32 = 973209630u32;
36675pub const PR_CALLBACK_TELEPHONE_NUMBER_W: u32 = 973209631u32;
36676pub const PR_CAR_TELEPHONE_NUMBER: u32 = 975044638u32;
36677pub const PR_CAR_TELEPHONE_NUMBER_A: u32 = 975044638u32;
36678pub const PR_CAR_TELEPHONE_NUMBER_W: u32 = 975044639u32;
36679pub const PR_CATALOG: u32 = 240845058u32;
36680pub const PR_CATEG_COUNT: u32 = 1722482691u32;
36681pub const PR_CELLULAR_TELEPHONE_NUMBER: u32 = 974913566u32;
36682pub const PR_CELLULAR_TELEPHONE_NUMBER_A: u32 = 974913566u32;
36683pub const PR_CELLULAR_TELEPHONE_NUMBER_W: u32 = 974913567u32;
36684pub const PR_CHANGE_ADVISOR: u32 = 1714683917u32;
36685pub const PR_CHANGE_KEY: u32 = 1709310210u32;
36686pub const PR_CHANGE_NOTIFICATION_GUID: u32 = 1714880584u32;
36687pub const PR_CHILDRENS_NAMES: u32 = 978849822u32;
36688pub const PR_CHILDRENS_NAMES_A: u32 = 978849822u32;
36689pub const PR_CHILDRENS_NAMES_W: u32 = 978849823u32;
36690pub const PR_CI_NOTIFICATION_ENABLED: u32 = 240975883u32;
36691pub const PR_CI_SEARCH_ENABLED: u32 = 240910347u32;
36692pub const PR_CLIENT_ACTIONS: u32 = 1715798274u32;
36693pub const PR_CLIENT_SUBMIT_TIME: u32 = 3735616u32;
36694pub const PR_CODE_PAGE_ID: u32 = 1724055555u32;
36695pub const PR_COLLECTOR: u32 = 1714290701u32;
36696pub const PR_COMMENT: u32 = 805568542u32;
36697pub const PR_COMMENT_A: u32 = 805568542u32;
36698pub const PR_COMMENT_W: u32 = 805568543u32;
36699pub const PR_COMMON_VIEWS_ENTRYID: u32 = 904265986u32;
36700pub const PR_COMPANY_MAIN_PHONE_NUMBER: u32 = 978780190u32;
36701pub const PR_COMPANY_MAIN_PHONE_NUMBER_A: u32 = 978780190u32;
36702pub const PR_COMPANY_MAIN_PHONE_NUMBER_W: u32 = 978780191u32;
36703pub const PR_COMPANY_NAME: u32 = 974520350u32;
36704pub const PR_COMPANY_NAME_A: u32 = 974520350u32;
36705pub const PR_COMPANY_NAME_W: u32 = 974520351u32;
36706pub const PR_COMPUTER_NETWORK_NAME: u32 = 977862686u32;
36707pub const PR_COMPUTER_NETWORK_NAME_A: u32 = 977862686u32;
36708pub const PR_COMPUTER_NETWORK_NAME_W: u32 = 977862687u32;
36709pub const PR_CONFLICT_ENTRYID: u32 = 1072693506u32;
36710pub const PR_CONTACT_ADDRTYPES: u32 = 978587678u32;
36711pub const PR_CONTACT_ADDRTYPES_A: u32 = 978587678u32;
36712pub const PR_CONTACT_ADDRTYPES_W: u32 = 978587679u32;
36713pub const PR_CONTACT_COUNT: u32 = 1723269123u32;
36714pub const PR_CONTACT_DEFAULT_ADDRESS_INDEX: u32 = 978649091u32;
36715pub const PR_CONTACT_EMAIL_ADDRESSES: u32 = 978718750u32;
36716pub const PR_CONTACT_EMAIL_ADDRESSES_A: u32 = 978718750u32;
36717pub const PR_CONTACT_EMAIL_ADDRESSES_W: u32 = 978718751u32;
36718pub const PR_CONTACT_ENTRYIDS: u32 = 978522370u32;
36719pub const PR_CONTACT_VERSION: u32 = 978452552u32;
36720pub const PR_CONTAINER_CLASS: u32 = 907214878u32;
36721pub const PR_CONTAINER_CLASS_A: u32 = 907214878u32;
36722pub const PR_CONTAINER_CLASS_W: u32 = 907214879u32;
36723pub const PR_CONTAINER_CONTENTS: u32 = 906952717u32;
36724pub const PR_CONTAINER_FLAGS: u32 = 905969667u32;
36725pub const PR_CONTAINER_HIERARCHY: u32 = 906887181u32;
36726pub const PR_CONTAINER_MODIFY_VERSION: u32 = 907280404u32;
36727pub const PR_CONTENTS_SORT_ORDER: u32 = 906825731u32;
36728pub const PR_CONTENTS_SYNCHRONIZER: u32 = 1714225165u32;
36729pub const PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID: u32 = 393474u32;
36730pub const PR_CONTENT_CORRELATOR: u32 = 459010u32;
36731pub const PR_CONTENT_COUNT: u32 = 906100739u32;
36732pub const PR_CONTENT_IDENTIFIER: u32 = 524318u32;
36733pub const PR_CONTENT_IDENTIFIER_A: u32 = 524318u32;
36734pub const PR_CONTENT_IDENTIFIER_W: u32 = 524319u32;
36735pub const PR_CONTENT_INTEGRITY_CHECK: u32 = 201326850u32;
36736pub const PR_CONTENT_LENGTH: u32 = 589827u32;
36737pub const PR_CONTENT_RETURN_REQUESTED: u32 = 655371u32;
36738pub const PR_CONTENT_SEARCH_KEY: u32 = 1717960962u32;
36739pub const PR_CONTENT_UNREAD: u32 = 906166275u32;
36740pub const PR_CONTROL_FLAGS: u32 = 1056964611u32;
36741pub const PR_CONTROL_ID: u32 = 1057423618u32;
36742pub const PR_CONTROL_STRUCTURE: u32 = 1057030402u32;
36743pub const PR_CONTROL_TYPE: u32 = 1057095683u32;
36744pub const PR_CONVERSATION_ID: u32 = 806551810u32;
36745pub const PR_CONVERSATION_INDEX: u32 = 7405826u32;
36746pub const PR_CONVERSATION_KEY: u32 = 721154u32;
36747pub const PR_CONVERSATION_TOPIC: u32 = 7340062u32;
36748pub const PR_CONVERSATION_TOPIC_A: u32 = 7340062u32;
36749pub const PR_CONVERSATION_TOPIC_W: u32 = 7340063u32;
36750pub const PR_CONVERSION_EITS: u32 = 786690u32;
36751pub const PR_CONVERSION_PROHIBITED: u32 = 973275147u32;
36752pub const PR_CONVERSION_WITH_LOSS_PROHIBITED: u32 = 851979u32;
36753pub const PR_CONVERTED_EITS: u32 = 917762u32;
36754pub const PR_CORRELATE: u32 = 235667467u32;
36755pub const PR_CORRELATE_MTSID: u32 = 235733250u32;
36756pub const PR_COUNTRY: u32 = 975568926u32;
36757pub const PR_COUNTRY_A: u32 = 975568926u32;
36758pub const PR_COUNTRY_W: u32 = 975568927u32;
36759pub const PR_CREATE_TEMPLATES: u32 = 906231821u32;
36760pub const PR_CREATION_TIME: u32 = 805765184u32;
36761pub const PR_CREATION_VERSION: u32 = 236519444u32;
36762pub const PR_CREATOR_ENTRYID: u32 = 1073283330u32;
36763pub const PR_CREATOR_NAME: u32 = 1073217566u32;
36764pub const PR_CREATOR_SID: u32 = 240648450u32;
36765pub const PR_CREATOR_SID_AS_XML: u32 = 241958942u32;
36766pub const PR_CURRENT_VERSION: u32 = 234881044u32;
36767pub const PR_CUSTOMER_ID: u32 = 977928222u32;
36768pub const PR_CUSTOMER_ID_A: u32 = 977928222u32;
36769pub const PR_CUSTOMER_ID_W: u32 = 977928223u32;
36770pub const PR_DAM_BACK_PATCHED: u32 = 1715929099u32;
36771pub const PR_DAM_ORIGINAL_ENTRYID: u32 = 1715863810u32;
36772pub const PR_DAV_TRANSFER_SECURITY_DESCRIPTOR: u32 = 243532034u32;
36773pub const PR_DEFAULT_PROFILE: u32 = 1023672331u32;
36774pub const PR_DEFAULT_STORE: u32 = 872415243u32;
36775pub const PR_DEFAULT_VIEW_ENTRYID: u32 = 907411714u32;
36776pub const PR_DEFERRED_DELIVERY_TIME: u32 = 983104u32;
36777pub const PR_DEFERRED_SEND_NUMBER: u32 = 1072365571u32;
36778pub const PR_DEFERRED_SEND_TIME: u32 = 1072627776u32;
36779pub const PR_DEFERRED_SEND_UNITS: u32 = 1072431107u32;
36780pub const PR_DEF_CREATE_DL: u32 = 907084034u32;
36781pub const PR_DEF_CREATE_MAILUSER: u32 = 907149570u32;
36782pub const PR_DELEGATED_BY_RULE: u32 = 1071841291u32;
36783pub const PR_DELEGATION: u32 = 8257794u32;
36784pub const PR_DELETED_ASSOC_MESSAGE_SIZE_EXTENDED: u32 = 1721565204u32;
36785pub const PR_DELETED_ASSOC_MSG_COUNT: u32 = 1715666947u32;
36786pub const PR_DELETED_COUNT_TOTAL: u32 = 1728774147u32;
36787pub const PR_DELETED_FOLDER_COUNT: u32 = 1715535875u32;
36788pub const PR_DELETED_MESSAGE_SIZE_EXTENDED: u32 = 1721434132u32;
36789pub const PR_DELETED_MSG_COUNT: u32 = 1715470339u32;
36790pub const PR_DELETED_NORMAL_MESSAGE_SIZE_EXTENDED: u32 = 1721499668u32;
36791pub const PR_DELETED_ON: u32 = 1720647744u32;
36792pub const PR_DELETE_AFTER_SUBMIT: u32 = 234946571u32;
36793pub const PR_DELIVERY_POINT: u32 = 201785347u32;
36794pub const PR_DELIVER_TIME: u32 = 1048640u32;
36795pub const PR_DELTAX: u32 = 1057161219u32;
36796pub const PR_DELTAY: u32 = 1057226755u32;
36797pub const PR_DEPARTMENT_NAME: u32 = 974651422u32;
36798pub const PR_DEPARTMENT_NAME_A: u32 = 974651422u32;
36799pub const PR_DEPARTMENT_NAME_W: u32 = 974651423u32;
36800pub const PR_DEPTH: u32 = 805634051u32;
36801pub const PR_DESIGN_IN_PROGRESS: u32 = 1071906827u32;
36802pub const PR_DETAILS_TABLE: u32 = 906297357u32;
36803pub const PR_DISABLE_FULL_FIDELITY: u32 = 284295179u32;
36804pub const PR_DISABLE_PERUSER_READ: u32 = 1724186635u32;
36805pub const PR_DISABLE_WINSOCK: u32 = 1712848899u32;
36806pub const PR_DISCARD_REASON: u32 = 1114115u32;
36807pub const PR_DISCLOSE_RECIPIENTS: u32 = 973340683u32;
36808pub const PR_DISCLOSURE_OF_RECIPIENTS: u32 = 1179659u32;
36809pub const PR_DISCRETE_VALUES: u32 = 235798539u32;
36810pub const PR_DISC_VAL: u32 = 4849675u32;
36811pub const PR_DISPLAY_BCC: u32 = 235012126u32;
36812pub const PR_DISPLAY_BCC_A: u32 = 235012126u32;
36813pub const PR_DISPLAY_BCC_W: u32 = 235012127u32;
36814pub const PR_DISPLAY_CC: u32 = 235077662u32;
36815pub const PR_DISPLAY_CC_A: u32 = 235077662u32;
36816pub const PR_DISPLAY_CC_W: u32 = 235077663u32;
36817pub const PR_DISPLAY_NAME: u32 = 805371934u32;
36818pub const PR_DISPLAY_NAME_A: u32 = 805371934u32;
36819pub const PR_DISPLAY_NAME_PREFIX: u32 = 977600542u32;
36820pub const PR_DISPLAY_NAME_PREFIX_A: u32 = 977600542u32;
36821pub const PR_DISPLAY_NAME_PREFIX_W: u32 = 977600543u32;
36822pub const PR_DISPLAY_NAME_W: u32 = 805371935u32;
36823pub const PR_DISPLAY_TO: u32 = 235143198u32;
36824pub const PR_DISPLAY_TO_A: u32 = 235143198u32;
36825pub const PR_DISPLAY_TO_W: u32 = 235143199u32;
36826pub const PR_DISPLAY_TYPE: u32 = 956301315u32;
36827pub const PR_DISPLAY_TYPE_EX: u32 = 956628995u32;
36828pub const PR_DL_EXPANSION_HISTORY: u32 = 1245442u32;
36829pub const PR_DL_EXPANSION_PROHIBITED: u32 = 1310731u32;
36830pub const PR_DL_REPORT_FLAGS: u32 = 1071316995u32;
36831pub const PR_EFORMS_FOR_LOCALE_ENTRYID: u32 = 1713635586u32;
36832pub const PR_EFORMS_LOCALE_ID: u32 = 1072234499u32;
36833pub const PR_EFORMS_REGISTRY_ENTRYID: u32 = 1713438978u32;
36834pub const PR_EMAIL_ADDRESS: u32 = 805503006u32;
36835pub const PR_EMAIL_ADDRESS_A: u32 = 805503006u32;
36836pub const PR_EMAIL_ADDRESS_W: u32 = 805503007u32;
36837pub const PR_EMS_AB_ACCESS_CATEGORY: u32 = 2151940099u32;
36838pub const PR_EMS_AB_ACTIVATION_SCHEDULE: u32 = 2152005890u32;
36839pub const PR_EMS_AB_ACTIVATION_STYLE: u32 = 2152071171u32;
36840pub const PR_EMS_AB_ADC_GLOBAL_NAMES: u32 = 2356154398u32;
36841pub const PR_EMS_AB_ADC_GLOBAL_NAMES_A: u32 = 2356154398u32;
36842pub const PR_EMS_AB_ADC_GLOBAL_NAMES_W: u32 = 2356154399u32;
36843pub const PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE: u32 = 2148991234u32;
36844pub const PR_EMS_AB_ADDRESS_ENTRY_DISPLAY_TABLE_MSDOS: u32 = 2152136962u32;
36845pub const PR_EMS_AB_ADDRESS_SYNTAX: u32 = 2149056770u32;
36846pub const PR_EMS_AB_ADDRESS_TYPE: u32 = 2152202270u32;
36847pub const PR_EMS_AB_ADDRESS_TYPE_A: u32 = 2152202270u32;
36848pub const PR_EMS_AB_ADDRESS_TYPE_W: u32 = 2152202271u32;
36849pub const PR_EMS_AB_ADMD: u32 = 2152267806u32;
36850pub const PR_EMS_AB_ADMD_A: u32 = 2152267806u32;
36851pub const PR_EMS_AB_ADMD_W: u32 = 2152267807u32;
36852pub const PR_EMS_AB_ADMIN_DESCRIPTION: u32 = 2152333342u32;
36853pub const PR_EMS_AB_ADMIN_DESCRIPTION_A: u32 = 2152333342u32;
36854pub const PR_EMS_AB_ADMIN_DESCRIPTION_W: u32 = 2152333343u32;
36855pub const PR_EMS_AB_ADMIN_DISPLAY_NAME: u32 = 2152398878u32;
36856pub const PR_EMS_AB_ADMIN_DISPLAY_NAME_A: u32 = 2152398878u32;
36857pub const PR_EMS_AB_ADMIN_DISPLAY_NAME_W: u32 = 2152398879u32;
36858pub const PR_EMS_AB_ADMIN_EXTENSION_DLL: u32 = 2152464414u32;
36859pub const PR_EMS_AB_ADMIN_EXTENSION_DLL_A: u32 = 2152464414u32;
36860pub const PR_EMS_AB_ADMIN_EXTENSION_DLL_W: u32 = 2152464415u32;
36861pub const PR_EMS_AB_ALIASED_OBJECT_NAME: u32 = 2152529950u32;
36862pub const PR_EMS_AB_ALIASED_OBJECT_NAME_A: u32 = 2152529950u32;
36863pub const PR_EMS_AB_ALIASED_OBJECT_NAME_O: u32 = 2152529933u32;
36864pub const PR_EMS_AB_ALIASED_OBJECT_NAME_T: u32 = 2152529950u32;
36865pub const PR_EMS_AB_ALIASED_OBJECT_NAME_W: u32 = 2152529951u32;
36866pub const PR_EMS_AB_ALT_RECIPIENT: u32 = 2152595486u32;
36867pub const PR_EMS_AB_ALT_RECIPIENT_A: u32 = 2152595486u32;
36868pub const PR_EMS_AB_ALT_RECIPIENT_BL: u32 = 2152665118u32;
36869pub const PR_EMS_AB_ALT_RECIPIENT_BL_A: u32 = 2152665118u32;
36870pub const PR_EMS_AB_ALT_RECIPIENT_BL_O: u32 = 2152661005u32;
36871pub const PR_EMS_AB_ALT_RECIPIENT_BL_T: u32 = 2152665118u32;
36872pub const PR_EMS_AB_ALT_RECIPIENT_BL_W: u32 = 2152665119u32;
36873pub const PR_EMS_AB_ALT_RECIPIENT_O: u32 = 2152595469u32;
36874pub const PR_EMS_AB_ALT_RECIPIENT_T: u32 = 2152595486u32;
36875pub const PR_EMS_AB_ALT_RECIPIENT_W: u32 = 2152595487u32;
36876pub const PR_EMS_AB_ANCESTOR_ID: u32 = 2152726786u32;
36877pub const PR_EMS_AB_ANONYMOUS_ACCESS: u32 = 2173108235u32;
36878pub const PR_EMS_AB_ANONYMOUS_ACCOUNT: u32 = 2351300638u32;
36879pub const PR_EMS_AB_ANONYMOUS_ACCOUNT_A: u32 = 2351300638u32;
36880pub const PR_EMS_AB_ANONYMOUS_ACCOUNT_W: u32 = 2351300639u32;
36881pub const PR_EMS_AB_ASSOCIATION_LIFETIME: u32 = 2152857603u32;
36882pub const PR_EMS_AB_ASSOC_NT_ACCOUNT: u32 = 2150039810u32;
36883pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP: u32 = 2175074334u32;
36884pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_A: u32 = 2175074334u32;
36885pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_O: u32 = 2175074317u32;
36886pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_T: u32 = 2175074334u32;
36887pub const PR_EMS_AB_ASSOC_PROTOCOL_CFG_NNTP_W: u32 = 2175074335u32;
36888pub const PR_EMS_AB_ASSOC_REMOTE_DXA: u32 = 2152796190u32;
36889pub const PR_EMS_AB_ASSOC_REMOTE_DXA_A: u32 = 2152796190u32;
36890pub const PR_EMS_AB_ASSOC_REMOTE_DXA_O: u32 = 2152792077u32;
36891pub const PR_EMS_AB_ASSOC_REMOTE_DXA_T: u32 = 2152796190u32;
36892pub const PR_EMS_AB_ASSOC_REMOTE_DXA_W: u32 = 2152796191u32;
36893pub const PR_EMS_AB_ATTRIBUTE_CERTIFICATE: u32 = 2353336578u32;
36894pub const PR_EMS_AB_AUTHENTICATION_TO_USE: u32 = 2174353438u32;
36895pub const PR_EMS_AB_AUTHENTICATION_TO_USE_A: u32 = 2174353438u32;
36896pub const PR_EMS_AB_AUTHENTICATION_TO_USE_W: u32 = 2174353439u32;
36897pub const PR_EMS_AB_AUTHORITY_REVOCATION_LIST: u32 = 2149978370u32;
36898pub const PR_EMS_AB_AUTHORIZED_DOMAIN: u32 = 2152988702u32;
36899pub const PR_EMS_AB_AUTHORIZED_DOMAIN_A: u32 = 2152988702u32;
36900pub const PR_EMS_AB_AUTHORIZED_DOMAIN_W: u32 = 2152988703u32;
36901pub const PR_EMS_AB_AUTHORIZED_PASSWORD: u32 = 2153054466u32;
36902pub const PR_EMS_AB_AUTHORIZED_PASSWORD_CONFIRM: u32 = 2173829378u32;
36903pub const PR_EMS_AB_AUTHORIZED_USER: u32 = 2153119774u32;
36904pub const PR_EMS_AB_AUTHORIZED_USER_A: u32 = 2153119774u32;
36905pub const PR_EMS_AB_AUTHORIZED_USER_W: u32 = 2153119775u32;
36906pub const PR_EMS_AB_AUTH_ORIG_BL: u32 = 2152927262u32;
36907pub const PR_EMS_AB_AUTH_ORIG_BL_A: u32 = 2152927262u32;
36908pub const PR_EMS_AB_AUTH_ORIG_BL_O: u32 = 2152923149u32;
36909pub const PR_EMS_AB_AUTH_ORIG_BL_T: u32 = 2152927262u32;
36910pub const PR_EMS_AB_AUTH_ORIG_BL_W: u32 = 2152927263u32;
36911pub const PR_EMS_AB_AUTOREPLY: u32 = 2148204555u32;
36912pub const PR_EMS_AB_AUTOREPLY_MESSAGE: u32 = 2148139038u32;
36913pub const PR_EMS_AB_AUTOREPLY_MESSAGE_A: u32 = 2148139038u32;
36914pub const PR_EMS_AB_AUTOREPLY_MESSAGE_W: u32 = 2148139039u32;
36915pub const PR_EMS_AB_AUTOREPLY_SUBJECT: u32 = 2151546910u32;
36916pub const PR_EMS_AB_AUTOREPLY_SUBJECT_A: u32 = 2151546910u32;
36917pub const PR_EMS_AB_AUTOREPLY_SUBJECT_W: u32 = 2151546911u32;
36918pub const PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES: u32 = 2172719134u32;
36919pub const PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES_A: u32 = 2172719134u32;
36920pub const PR_EMS_AB_AVAILABLE_AUTHORIZATION_PACKAGES_W: u32 = 2172719135u32;
36921pub const PR_EMS_AB_AVAILABLE_DISTRIBUTIONS: u32 = 2173370398u32;
36922pub const PR_EMS_AB_AVAILABLE_DISTRIBUTIONS_A: u32 = 2173370398u32;
36923pub const PR_EMS_AB_AVAILABLE_DISTRIBUTIONS_W: u32 = 2173370399u32;
36924pub const PR_EMS_AB_BRIDGEHEAD_SERVERS: u32 = 2171867166u32;
36925pub const PR_EMS_AB_BRIDGEHEAD_SERVERS_A: u32 = 2171867166u32;
36926pub const PR_EMS_AB_BRIDGEHEAD_SERVERS_O: u32 = 2171863053u32;
36927pub const PR_EMS_AB_BRIDGEHEAD_SERVERS_T: u32 = 2171867166u32;
36928pub const PR_EMS_AB_BRIDGEHEAD_SERVERS_W: u32 = 2171867167u32;
36929pub const PR_EMS_AB_BUSINESS_CATEGORY: u32 = 2153189406u32;
36930pub const PR_EMS_AB_BUSINESS_CATEGORY_A: u32 = 2153189406u32;
36931pub const PR_EMS_AB_BUSINESS_CATEGORY_W: u32 = 2153189407u32;
36932pub const PR_EMS_AB_BUSINESS_ROLES: u32 = 2149777666u32;
36933pub const PR_EMS_AB_CAN_CREATE_PF: u32 = 2153254942u32;
36934pub const PR_EMS_AB_CAN_CREATE_PF_A: u32 = 2153254942u32;
36935pub const PR_EMS_AB_CAN_CREATE_PF_BL: u32 = 2153320478u32;
36936pub const PR_EMS_AB_CAN_CREATE_PF_BL_A: u32 = 2153320478u32;
36937pub const PR_EMS_AB_CAN_CREATE_PF_BL_O: u32 = 2153316365u32;
36938pub const PR_EMS_AB_CAN_CREATE_PF_BL_T: u32 = 2153320478u32;
36939pub const PR_EMS_AB_CAN_CREATE_PF_BL_W: u32 = 2153320479u32;
36940pub const PR_EMS_AB_CAN_CREATE_PF_DL: u32 = 2153386014u32;
36941pub const PR_EMS_AB_CAN_CREATE_PF_DL_A: u32 = 2153386014u32;
36942pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL: u32 = 2153451550u32;
36943pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL_A: u32 = 2153451550u32;
36944pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL_O: u32 = 2153447437u32;
36945pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL_T: u32 = 2153451550u32;
36946pub const PR_EMS_AB_CAN_CREATE_PF_DL_BL_W: u32 = 2153451551u32;
36947pub const PR_EMS_AB_CAN_CREATE_PF_DL_O: u32 = 2153381901u32;
36948pub const PR_EMS_AB_CAN_CREATE_PF_DL_T: u32 = 2153386014u32;
36949pub const PR_EMS_AB_CAN_CREATE_PF_DL_W: u32 = 2153386015u32;
36950pub const PR_EMS_AB_CAN_CREATE_PF_O: u32 = 2153250829u32;
36951pub const PR_EMS_AB_CAN_CREATE_PF_T: u32 = 2153254942u32;
36952pub const PR_EMS_AB_CAN_CREATE_PF_W: u32 = 2153254943u32;
36953pub const PR_EMS_AB_CAN_NOT_CREATE_PF: u32 = 2153517086u32;
36954pub const PR_EMS_AB_CAN_NOT_CREATE_PF_A: u32 = 2153517086u32;
36955pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL: u32 = 2153582622u32;
36956pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL_A: u32 = 2153582622u32;
36957pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL_O: u32 = 2153578509u32;
36958pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL_T: u32 = 2153582622u32;
36959pub const PR_EMS_AB_CAN_NOT_CREATE_PF_BL_W: u32 = 2153582623u32;
36960pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL: u32 = 2153648158u32;
36961pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_A: u32 = 2153648158u32;
36962pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL: u32 = 2153713694u32;
36963pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_A: u32 = 2153713694u32;
36964pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_O: u32 = 2153709581u32;
36965pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_T: u32 = 2153713694u32;
36966pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_BL_W: u32 = 2153713695u32;
36967pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_O: u32 = 2153644045u32;
36968pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_T: u32 = 2153648158u32;
36969pub const PR_EMS_AB_CAN_NOT_CREATE_PF_DL_W: u32 = 2153648159u32;
36970pub const PR_EMS_AB_CAN_NOT_CREATE_PF_O: u32 = 2153512973u32;
36971pub const PR_EMS_AB_CAN_NOT_CREATE_PF_T: u32 = 2153517086u32;
36972pub const PR_EMS_AB_CAN_NOT_CREATE_PF_W: u32 = 2153517087u32;
36973pub const PR_EMS_AB_CAN_PRESERVE_DNS: u32 = 2153775115u32;
36974pub const PR_EMS_AB_CA_CERTIFICATE: u32 = 2147684610u32;
36975pub const PR_EMS_AB_CERTIFICATE_CHAIN_V3: u32 = 2351366402u32;
36976pub const PR_EMS_AB_CERTIFICATE_REVOCATION_LIST: u32 = 2148925698u32;
36977pub const PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V1: u32 = 2351497474u32;
36978pub const PR_EMS_AB_CERTIFICATE_REVOCATION_LIST_V3: u32 = 2351431938u32;
36979pub const PR_EMS_AB_CHARACTER_SET: u32 = 2172977182u32;
36980pub const PR_EMS_AB_CHARACTER_SET_A: u32 = 2172977182u32;
36981pub const PR_EMS_AB_CHARACTER_SET_LIST: u32 = 2172784670u32;
36982pub const PR_EMS_AB_CHARACTER_SET_LIST_A: u32 = 2172784670u32;
36983pub const PR_EMS_AB_CHARACTER_SET_LIST_W: u32 = 2172784671u32;
36984pub const PR_EMS_AB_CHARACTER_SET_W: u32 = 2172977183u32;
36985pub const PR_EMS_AB_CHILD_RDNS: u32 = 4294447134u32;
36986pub const PR_EMS_AB_CLIENT_ACCESS_ENABLED: u32 = 2351169547u32;
36987pub const PR_EMS_AB_CLOCK_ALERT_OFFSET: u32 = 2153840643u32;
36988pub const PR_EMS_AB_CLOCK_ALERT_REPAIR: u32 = 2153906187u32;
36989pub const PR_EMS_AB_CLOCK_WARNING_OFFSET: u32 = 2153971715u32;
36990pub const PR_EMS_AB_CLOCK_WARNING_REPAIR: u32 = 2154037259u32;
36991pub const PR_EMS_AB_COMPROMISED_KEY_LIST: u32 = 2177106178u32;
36992pub const PR_EMS_AB_COMPUTER_NAME: u32 = 2154102814u32;
36993pub const PR_EMS_AB_COMPUTER_NAME_A: u32 = 2154102814u32;
36994pub const PR_EMS_AB_COMPUTER_NAME_W: u32 = 2154102815u32;
36995pub const PR_EMS_AB_CONNECTED_DOMAINS: u32 = 2154172446u32;
36996pub const PR_EMS_AB_CONNECTED_DOMAINS_A: u32 = 2154172446u32;
36997pub const PR_EMS_AB_CONNECTED_DOMAINS_W: u32 = 2154172447u32;
36998pub const PR_EMS_AB_CONNECTION_LIST_FILTER: u32 = 2172649730u32;
36999pub const PR_EMS_AB_CONNECTION_LIST_FILTER_TYPE: u32 = 2176057347u32;
37000pub const PR_EMS_AB_CONNECTION_TYPE: u32 = 2175991819u32;
37001pub const PR_EMS_AB_CONTAINERID: u32 = 4294770691u32;
37002pub const PR_EMS_AB_CONTAINER_INFO: u32 = 2154233859u32;
37003pub const PR_EMS_AB_CONTENT_TYPE: u32 = 2173042691u32;
37004pub const PR_EMS_AB_CONTROL_MSG_FOLDER_ID: u32 = 2173174018u32;
37005pub const PR_EMS_AB_CONTROL_MSG_RULES: u32 = 2173305090u32;
37006pub const PR_EMS_AB_COST: u32 = 2154299395u32;
37007pub const PR_EMS_AB_COUNTRY_NAME: u32 = 2154364958u32;
37008pub const PR_EMS_AB_COUNTRY_NAME_A: u32 = 2154364958u32;
37009pub const PR_EMS_AB_COUNTRY_NAME_W: u32 = 2154364959u32;
37010pub const PR_EMS_AB_CROSS_CERTIFICATE_CRL: u32 = 2351960322u32;
37011pub const PR_EMS_AB_CROSS_CERTIFICATE_PAIR: u32 = 2149912834u32;
37012pub const PR_EMS_AB_DEFAULT_MESSAGE_FORMAT: u32 = 2352414731u32;
37013pub const PR_EMS_AB_DELEGATE_USER: u32 = 2353594379u32;
37014pub const PR_EMS_AB_DELIVERY_MECHANISM: u32 = 2154692611u32;
37015pub const PR_EMS_AB_DELIVER_AND_REDIRECT: u32 = 2154627083u32;
37016pub const PR_EMS_AB_DELIV_CONT_LENGTH: u32 = 2154430467u32;
37017pub const PR_EMS_AB_DELIV_EITS: u32 = 2154500354u32;
37018pub const PR_EMS_AB_DELIV_EXT_CONT_TYPES: u32 = 2154565890u32;
37019pub const PR_EMS_AB_DELTA_REVOCATION_LIST: u32 = 2353402114u32;
37020pub const PR_EMS_AB_DESCRIPTION: u32 = 2154762270u32;
37021pub const PR_EMS_AB_DESCRIPTION_A: u32 = 2154762270u32;
37022pub const PR_EMS_AB_DESCRIPTION_W: u32 = 2154762271u32;
37023pub const PR_EMS_AB_DESTINATION_INDICATOR: u32 = 2154827806u32;
37024pub const PR_EMS_AB_DESTINATION_INDICATOR_A: u32 = 2154827806u32;
37025pub const PR_EMS_AB_DESTINATION_INDICATOR_W: u32 = 2154827807u32;
37026pub const PR_EMS_AB_DIAGNOSTIC_REG_KEY: u32 = 2154889246u32;
37027pub const PR_EMS_AB_DIAGNOSTIC_REG_KEY_A: u32 = 2154889246u32;
37028pub const PR_EMS_AB_DIAGNOSTIC_REG_KEY_W: u32 = 2154889247u32;
37029pub const PR_EMS_AB_DISABLED_GATEWAY_PROXY: u32 = 2177044510u32;
37030pub const PR_EMS_AB_DISABLED_GATEWAY_PROXY_A: u32 = 2177044510u32;
37031pub const PR_EMS_AB_DISABLED_GATEWAY_PROXY_W: u32 = 2177044511u32;
37032pub const PR_EMS_AB_DISABLE_DEFERRED_COMMIT: u32 = 2351104011u32;
37033pub const PR_EMS_AB_DISPLAY_NAME_OVERRIDE: u32 = 2147549195u32;
37034pub const PR_EMS_AB_DISPLAY_NAME_PRINTABLE: u32 = 973013022u32;
37035pub const PR_EMS_AB_DISPLAY_NAME_PRINTABLE_A: u32 = 973013022u32;
37036pub const PR_EMS_AB_DISPLAY_NAME_PRINTABLE_W: u32 = 973013023u32;
37037pub const PR_EMS_AB_DISPLAY_NAME_SUFFIX: u32 = 2353266718u32;
37038pub const PR_EMS_AB_DISPLAY_NAME_SUFFIX_A: u32 = 2353266718u32;
37039pub const PR_EMS_AB_DISPLAY_NAME_SUFFIX_W: u32 = 2353266719u32;
37040pub const PR_EMS_AB_DL_EXTERNAL_MEMBER_COUNT: u32 = 2363686915u32;
37041pub const PR_EMS_AB_DL_MEMBER_RULE: u32 = 2155090178u32;
37042pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL: u32 = 2154958878u32;
37043pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_A: u32 = 2154958878u32;
37044pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_O: u32 = 2154954765u32;
37045pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_T: u32 = 2154958878u32;
37046pub const PR_EMS_AB_DL_MEM_REJECT_PERMS_BL_W: u32 = 2154958879u32;
37047pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL: u32 = 2155024414u32;
37048pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_A: u32 = 2155024414u32;
37049pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_O: u32 = 2155020301u32;
37050pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_T: u32 = 2155024414u32;
37051pub const PR_EMS_AB_DL_MEM_SUBMIT_PERMS_BL_W: u32 = 2155024415u32;
37052pub const PR_EMS_AB_DMD_NAME: u32 = 2354446366u32;
37053pub const PR_EMS_AB_DMD_NAME_A: u32 = 2354446366u32;
37054pub const PR_EMS_AB_DMD_NAME_W: u32 = 2354446367u32;
37055pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP: u32 = 2155151390u32;
37056pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_A: u32 = 2155151390u32;
37057pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_O: u32 = 2155151373u32;
37058pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_T: u32 = 2155151390u32;
37059pub const PR_EMS_AB_DOMAIN_DEF_ALT_RECIP_W: u32 = 2155151391u32;
37060pub const PR_EMS_AB_DOMAIN_NAME: u32 = 2155216926u32;
37061pub const PR_EMS_AB_DOMAIN_NAME_A: u32 = 2155216926u32;
37062pub const PR_EMS_AB_DOMAIN_NAME_W: u32 = 2155216927u32;
37063pub const PR_EMS_AB_DO_OAB_VERSION: u32 = 2352611331u32;
37064pub const PR_EMS_AB_DSA_SIGNATURE: u32 = 2155282690u32;
37065pub const PR_EMS_AB_DXA_ADMIN_COPY: u32 = 2155347979u32;
37066pub const PR_EMS_AB_DXA_ADMIN_FORWARD: u32 = 2155413515u32;
37067pub const PR_EMS_AB_DXA_ADMIN_UPDATE: u32 = 2155479043u32;
37068pub const PR_EMS_AB_DXA_APPEND_REQCN: u32 = 2155544587u32;
37069pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST: u32 = 2155614238u32;
37070pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_A: u32 = 2155614238u32;
37071pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL: u32 = 2356547614u32;
37072pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL_A: u32 = 2356547614u32;
37073pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL_O: u32 = 2356543501u32;
37074pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL_T: u32 = 2356547614u32;
37075pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_BL_W: u32 = 2356547615u32;
37076pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED: u32 = 2356219934u32;
37077pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED_A: u32 = 2356219934u32;
37078pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED_O: u32 = 2356215821u32;
37079pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED_T: u32 = 2356219934u32;
37080pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_LINKED_W: u32 = 2356219935u32;
37081pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_O: u32 = 2155610125u32;
37082pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_T: u32 = 2155614238u32;
37083pub const PR_EMS_AB_DXA_CONF_CONTAINER_LIST_W: u32 = 2155614239u32;
37084pub const PR_EMS_AB_DXA_CONF_REQ_TIME: u32 = 2155675712u32;
37085pub const PR_EMS_AB_DXA_CONF_SEQ: u32 = 2155741214u32;
37086pub const PR_EMS_AB_DXA_CONF_SEQ_A: u32 = 2155741214u32;
37087pub const PR_EMS_AB_DXA_CONF_SEQ_USN: u32 = 2155806723u32;
37088pub const PR_EMS_AB_DXA_CONF_SEQ_W: u32 = 2155741215u32;
37089pub const PR_EMS_AB_DXA_EXCHANGE_OPTIONS: u32 = 2155872259u32;
37090pub const PR_EMS_AB_DXA_EXPORT_NOW: u32 = 2155937803u32;
37091pub const PR_EMS_AB_DXA_FLAGS: u32 = 2156003331u32;
37092pub const PR_EMS_AB_DXA_IMPORT_NOW: u32 = 2156265483u32;
37093pub const PR_EMS_AB_DXA_IMP_SEQ: u32 = 2156068894u32;
37094pub const PR_EMS_AB_DXA_IMP_SEQ_A: u32 = 2156068894u32;
37095pub const PR_EMS_AB_DXA_IMP_SEQ_TIME: u32 = 2156134464u32;
37096pub const PR_EMS_AB_DXA_IMP_SEQ_USN: u32 = 2156199939u32;
37097pub const PR_EMS_AB_DXA_IMP_SEQ_W: u32 = 2156068895u32;
37098pub const PR_EMS_AB_DXA_IN_TEMPLATE_MAP: u32 = 2156335134u32;
37099pub const PR_EMS_AB_DXA_IN_TEMPLATE_MAP_A: u32 = 2156335134u32;
37100pub const PR_EMS_AB_DXA_IN_TEMPLATE_MAP_W: u32 = 2156335135u32;
37101pub const PR_EMS_AB_DXA_LOCAL_ADMIN: u32 = 2156396574u32;
37102pub const PR_EMS_AB_DXA_LOCAL_ADMIN_A: u32 = 2156396574u32;
37103pub const PR_EMS_AB_DXA_LOCAL_ADMIN_O: u32 = 2156396557u32;
37104pub const PR_EMS_AB_DXA_LOCAL_ADMIN_T: u32 = 2156396574u32;
37105pub const PR_EMS_AB_DXA_LOCAL_ADMIN_W: u32 = 2156396575u32;
37106pub const PR_EMS_AB_DXA_LOGGING_LEVEL: u32 = 2156462083u32;
37107pub const PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE: u32 = 2156527646u32;
37108pub const PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE_A: u32 = 2156527646u32;
37109pub const PR_EMS_AB_DXA_NATIVE_ADDRESS_TYPE_W: u32 = 2156527647u32;
37110pub const PR_EMS_AB_DXA_OUT_TEMPLATE_MAP: u32 = 2156597278u32;
37111pub const PR_EMS_AB_DXA_OUT_TEMPLATE_MAP_A: u32 = 2156597278u32;
37112pub const PR_EMS_AB_DXA_OUT_TEMPLATE_MAP_W: u32 = 2156597279u32;
37113pub const PR_EMS_AB_DXA_PASSWORD: u32 = 2156658718u32;
37114pub const PR_EMS_AB_DXA_PASSWORD_A: u32 = 2156658718u32;
37115pub const PR_EMS_AB_DXA_PASSWORD_W: u32 = 2156658719u32;
37116pub const PR_EMS_AB_DXA_PREV_EXCHANGE_OPTIONS: u32 = 2156724227u32;
37117pub const PR_EMS_AB_DXA_PREV_EXPORT_NATIVE_ONLY: u32 = 2156789771u32;
37118pub const PR_EMS_AB_DXA_PREV_IN_EXCHANGE_SENSITIVITY: u32 = 2156855299u32;
37119pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES: u32 = 2156920862u32;
37120pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_A: u32 = 2156920862u32;
37121pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_O: u32 = 2156920845u32;
37122pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_T: u32 = 2156920862u32;
37123pub const PR_EMS_AB_DXA_PREV_REMOTE_ENTRIES_W: u32 = 2156920863u32;
37124pub const PR_EMS_AB_DXA_PREV_REPLICATION_SENSITIVITY: u32 = 2156986371u32;
37125pub const PR_EMS_AB_DXA_PREV_TEMPLATE_OPTIONS: u32 = 2157051907u32;
37126pub const PR_EMS_AB_DXA_PREV_TYPES: u32 = 2157117443u32;
37127pub const PR_EMS_AB_DXA_RECIPIENT_CP: u32 = 2157183006u32;
37128pub const PR_EMS_AB_DXA_RECIPIENT_CP_A: u32 = 2157183006u32;
37129pub const PR_EMS_AB_DXA_RECIPIENT_CP_W: u32 = 2157183007u32;
37130pub const PR_EMS_AB_DXA_REMOTE_CLIENT: u32 = 2157248542u32;
37131pub const PR_EMS_AB_DXA_REMOTE_CLIENT_A: u32 = 2157248542u32;
37132pub const PR_EMS_AB_DXA_REMOTE_CLIENT_O: u32 = 2157248525u32;
37133pub const PR_EMS_AB_DXA_REMOTE_CLIENT_T: u32 = 2157248542u32;
37134pub const PR_EMS_AB_DXA_REMOTE_CLIENT_W: u32 = 2157248543u32;
37135pub const PR_EMS_AB_DXA_REQNAME: u32 = 2157510686u32;
37136pub const PR_EMS_AB_DXA_REQNAME_A: u32 = 2157510686u32;
37137pub const PR_EMS_AB_DXA_REQNAME_W: u32 = 2157510687u32;
37138pub const PR_EMS_AB_DXA_REQ_SEQ: u32 = 2157314078u32;
37139pub const PR_EMS_AB_DXA_REQ_SEQ_A: u32 = 2157314078u32;
37140pub const PR_EMS_AB_DXA_REQ_SEQ_TIME: u32 = 2157379648u32;
37141pub const PR_EMS_AB_DXA_REQ_SEQ_USN: u32 = 2157445123u32;
37142pub const PR_EMS_AB_DXA_REQ_SEQ_W: u32 = 2157314079u32;
37143pub const PR_EMS_AB_DXA_SVR_SEQ: u32 = 2157576222u32;
37144pub const PR_EMS_AB_DXA_SVR_SEQ_A: u32 = 2157576222u32;
37145pub const PR_EMS_AB_DXA_SVR_SEQ_TIME: u32 = 2157641792u32;
37146pub const PR_EMS_AB_DXA_SVR_SEQ_USN: u32 = 2157707267u32;
37147pub const PR_EMS_AB_DXA_SVR_SEQ_W: u32 = 2157576223u32;
37148pub const PR_EMS_AB_DXA_TASK: u32 = 2157772803u32;
37149pub const PR_EMS_AB_DXA_TEMPLATE_OPTIONS: u32 = 2157838339u32;
37150pub const PR_EMS_AB_DXA_TEMPLATE_TIMESTAMP: u32 = 2157903936u32;
37151pub const PR_EMS_AB_DXA_TYPES: u32 = 2157969411u32;
37152pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST: u32 = 2158039070u32;
37153pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_A: u32 = 2158039070u32;
37154pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL: u32 = 2356613150u32;
37155pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL_A: u32 = 2356613150u32;
37156pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL_O: u32 = 2356609037u32;
37157pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL_T: u32 = 2356613150u32;
37158pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_BL_W: u32 = 2356613151u32;
37159pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED: u32 = 2356285470u32;
37160pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED_A: u32 = 2356285470u32;
37161pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED_O: u32 = 2356281357u32;
37162pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED_T: u32 = 2356285470u32;
37163pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_LINKED_W: u32 = 2356285471u32;
37164pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_O: u32 = 2158034957u32;
37165pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_T: u32 = 2158039070u32;
37166pub const PR_EMS_AB_DXA_UNCONF_CONTAINER_LIST_W: u32 = 2158039071u32;
37167pub const PR_EMS_AB_EMPLOYEE_NUMBER: u32 = 2355560478u32;
37168pub const PR_EMS_AB_EMPLOYEE_NUMBER_A: u32 = 2355560478u32;
37169pub const PR_EMS_AB_EMPLOYEE_NUMBER_W: u32 = 2355560479u32;
37170pub const PR_EMS_AB_EMPLOYEE_TYPE: u32 = 2355691550u32;
37171pub const PR_EMS_AB_EMPLOYEE_TYPE_A: u32 = 2355691550u32;
37172pub const PR_EMS_AB_EMPLOYEE_TYPE_W: u32 = 2355691551u32;
37173pub const PR_EMS_AB_ENABLED: u32 = 2350972939u32;
37174pub const PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES: u32 = 2172915742u32;
37175pub const PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES_A: u32 = 2172915742u32;
37176pub const PR_EMS_AB_ENABLED_AUTHORIZATION_PACKAGES_W: u32 = 2172915743u32;
37177pub const PR_EMS_AB_ENABLED_PROTOCOLS: u32 = 2172583939u32;
37178pub const PR_EMS_AB_ENABLED_PROTOCOL_CFG: u32 = 2175270923u32;
37179pub const PR_EMS_AB_ENABLE_COMPATIBILITY: u32 = 2352087051u32;
37180pub const PR_EMS_AB_ENCAPSULATION_METHOD: u32 = 2158100483u32;
37181pub const PR_EMS_AB_ENCRYPT: u32 = 2158166027u32;
37182pub const PR_EMS_AB_ENCRYPT_ALG_LIST_NA: u32 = 2151682078u32;
37183pub const PR_EMS_AB_ENCRYPT_ALG_LIST_NA_A: u32 = 2151682078u32;
37184pub const PR_EMS_AB_ENCRYPT_ALG_LIST_NA_W: u32 = 2151682079u32;
37185pub const PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER: u32 = 2151747614u32;
37186pub const PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER_A: u32 = 2151747614u32;
37187pub const PR_EMS_AB_ENCRYPT_ALG_LIST_OTHER_W: u32 = 2151747615u32;
37188pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA: u32 = 2151874590u32;
37189pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA_A: u32 = 2151874590u32;
37190pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_NA_W: u32 = 2151874591u32;
37191pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER: u32 = 2151481374u32;
37192pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER_A: u32 = 2151481374u32;
37193pub const PR_EMS_AB_ENCRYPT_ALG_SELECTED_OTHER_W: u32 = 2151481375u32;
37194pub const PR_EMS_AB_EXPAND_DLS_LOCALLY: u32 = 2158231563u32;
37195pub const PR_EMS_AB_EXPIRATION_TIME: u32 = 2150105152u32;
37196pub const PR_EMS_AB_EXPORT_CONTAINERS: u32 = 2158301214u32;
37197pub const PR_EMS_AB_EXPORT_CONTAINERS_A: u32 = 2158301214u32;
37198pub const PR_EMS_AB_EXPORT_CONTAINERS_O: u32 = 2158297101u32;
37199pub const PR_EMS_AB_EXPORT_CONTAINERS_T: u32 = 2158301214u32;
37200pub const PR_EMS_AB_EXPORT_CONTAINERS_W: u32 = 2158301215u32;
37201pub const PR_EMS_AB_EXPORT_CUSTOM_RECIPIENTS: u32 = 2158362635u32;
37202pub const PR_EMS_AB_EXTENDED_CHARS_ALLOWED: u32 = 2158428171u32;
37203pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_1: u32 = 2150432798u32;
37204pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_10: u32 = 2151022622u32;
37205pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_10_A: u32 = 2151022622u32;
37206pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_10_W: u32 = 2151022623u32;
37207pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_11: u32 = 2354511902u32;
37208pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_11_A: u32 = 2354511902u32;
37209pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_11_W: u32 = 2354511903u32;
37210pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_12: u32 = 2354577438u32;
37211pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_12_A: u32 = 2354577438u32;
37212pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_12_W: u32 = 2354577439u32;
37213pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_13: u32 = 2354642974u32;
37214pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_13_A: u32 = 2354642974u32;
37215pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_13_W: u32 = 2354642975u32;
37216pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_14: u32 = 2355101726u32;
37217pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_14_A: u32 = 2355101726u32;
37218pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_14_W: u32 = 2355101727u32;
37219pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_15: u32 = 2355167262u32;
37220pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_15_A: u32 = 2355167262u32;
37221pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_15_W: u32 = 2355167263u32;
37222pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_1_A: u32 = 2150432798u32;
37223pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_1_W: u32 = 2150432799u32;
37224pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_2: u32 = 2150498334u32;
37225pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_2_A: u32 = 2150498334u32;
37226pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_2_W: u32 = 2150498335u32;
37227pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_3: u32 = 2150563870u32;
37228pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_3_A: u32 = 2150563870u32;
37229pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_3_W: u32 = 2150563871u32;
37230pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_4: u32 = 2150629406u32;
37231pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_4_A: u32 = 2150629406u32;
37232pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_4_W: u32 = 2150629407u32;
37233pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_5: u32 = 2150694942u32;
37234pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_5_A: u32 = 2150694942u32;
37235pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_5_W: u32 = 2150694943u32;
37236pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_6: u32 = 2150760478u32;
37237pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_6_A: u32 = 2150760478u32;
37238pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_6_W: u32 = 2150760479u32;
37239pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_7: u32 = 2150826014u32;
37240pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_7_A: u32 = 2150826014u32;
37241pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_7_W: u32 = 2150826015u32;
37242pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_8: u32 = 2150891550u32;
37243pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_8_A: u32 = 2150891550u32;
37244pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_8_W: u32 = 2150891551u32;
37245pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_9: u32 = 2150957086u32;
37246pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_9_A: u32 = 2150957086u32;
37247pub const PR_EMS_AB_EXTENSION_ATTRIBUTE_9_W: u32 = 2150957087u32;
37248pub const PR_EMS_AB_EXTENSION_DATA: u32 = 2158498050u32;
37249pub const PR_EMS_AB_EXTENSION_NAME: u32 = 2158563358u32;
37250pub const PR_EMS_AB_EXTENSION_NAME_A: u32 = 2158563358u32;
37251pub const PR_EMS_AB_EXTENSION_NAME_INHERITED: u32 = 2158628894u32;
37252pub const PR_EMS_AB_EXTENSION_NAME_INHERITED_A: u32 = 2158628894u32;
37253pub const PR_EMS_AB_EXTENSION_NAME_INHERITED_W: u32 = 2158628895u32;
37254pub const PR_EMS_AB_EXTENSION_NAME_W: u32 = 2158563359u32;
37255pub const PR_EMS_AB_FACSIMILE_TELEPHONE_NUMBER: u32 = 2158694658u32;
37256pub const PR_EMS_AB_FILE_VERSION: u32 = 2158756098u32;
37257pub const PR_EMS_AB_FILTER_LOCAL_ADDRESSES: u32 = 2158821387u32;
37258pub const PR_EMS_AB_FOLDERS_CONTAINER: u32 = 2158886942u32;
37259pub const PR_EMS_AB_FOLDERS_CONTAINER_A: u32 = 2158886942u32;
37260pub const PR_EMS_AB_FOLDERS_CONTAINER_O: u32 = 2158886925u32;
37261pub const PR_EMS_AB_FOLDERS_CONTAINER_T: u32 = 2158886942u32;
37262pub const PR_EMS_AB_FOLDERS_CONTAINER_W: u32 = 2158886943u32;
37263pub const PR_EMS_AB_FOLDER_PATHNAME: u32 = 2147745822u32;
37264pub const PR_EMS_AB_FOLDER_PATHNAME_A: u32 = 2147745822u32;
37265pub const PR_EMS_AB_FOLDER_PATHNAME_W: u32 = 2147745823u32;
37266pub const PR_EMS_AB_FORM_DATA: u32 = 2355429634u32;
37267pub const PR_EMS_AB_FORWARDING_ADDRESS: u32 = 2355363870u32;
37268pub const PR_EMS_AB_FORWARDING_ADDRESS_A: u32 = 2355363870u32;
37269pub const PR_EMS_AB_FORWARDING_ADDRESS_W: u32 = 2355363871u32;
37270pub const PR_EMS_AB_GARBAGE_COLL_PERIOD: u32 = 2158952451u32;
37271pub const PR_EMS_AB_GATEWAY_LOCAL_CRED: u32 = 2159018014u32;
37272pub const PR_EMS_AB_GATEWAY_LOCAL_CRED_A: u32 = 2159018014u32;
37273pub const PR_EMS_AB_GATEWAY_LOCAL_CRED_W: u32 = 2159018015u32;
37274pub const PR_EMS_AB_GATEWAY_LOCAL_DESIG: u32 = 2159083550u32;
37275pub const PR_EMS_AB_GATEWAY_LOCAL_DESIG_A: u32 = 2159083550u32;
37276pub const PR_EMS_AB_GATEWAY_LOCAL_DESIG_W: u32 = 2159083551u32;
37277pub const PR_EMS_AB_GATEWAY_PROXY: u32 = 2159153182u32;
37278pub const PR_EMS_AB_GATEWAY_PROXY_A: u32 = 2159153182u32;
37279pub const PR_EMS_AB_GATEWAY_PROXY_W: u32 = 2159153183u32;
37280pub const PR_EMS_AB_GATEWAY_ROUTING_TREE: u32 = 2159214850u32;
37281pub const PR_EMS_AB_GENERATION_QUALIFIER: u32 = 2354249758u32;
37282pub const PR_EMS_AB_GENERATION_QUALIFIER_A: u32 = 2354249758u32;
37283pub const PR_EMS_AB_GENERATION_QUALIFIER_W: u32 = 2354249759u32;
37284pub const PR_EMS_AB_GROUP_BY_ATTR_1: u32 = 2176253982u32;
37285pub const PR_EMS_AB_GROUP_BY_ATTR_1_A: u32 = 2176253982u32;
37286pub const PR_EMS_AB_GROUP_BY_ATTR_1_W: u32 = 2176253983u32;
37287pub const PR_EMS_AB_GROUP_BY_ATTR_2: u32 = 2176319518u32;
37288pub const PR_EMS_AB_GROUP_BY_ATTR_2_A: u32 = 2176319518u32;
37289pub const PR_EMS_AB_GROUP_BY_ATTR_2_W: u32 = 2176319519u32;
37290pub const PR_EMS_AB_GROUP_BY_ATTR_3: u32 = 2176385054u32;
37291pub const PR_EMS_AB_GROUP_BY_ATTR_3_A: u32 = 2176385054u32;
37292pub const PR_EMS_AB_GROUP_BY_ATTR_3_W: u32 = 2176385055u32;
37293pub const PR_EMS_AB_GROUP_BY_ATTR_4: u32 = 2176450590u32;
37294pub const PR_EMS_AB_GROUP_BY_ATTR_4_A: u32 = 2176450590u32;
37295pub const PR_EMS_AB_GROUP_BY_ATTR_4_W: u32 = 2176450591u32;
37296pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN: u32 = 2350514206u32;
37297pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_A: u32 = 2350514206u32;
37298pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_O: u32 = 2350514189u32;
37299pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_T: u32 = 2350514206u32;
37300pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_DN_W: u32 = 2350514207u32;
37301pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR: u32 = 2350448670u32;
37302pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR_A: u32 = 2350448670u32;
37303pub const PR_EMS_AB_GROUP_BY_ATTR_VALUE_STR_W: u32 = 2350448671u32;
37304pub const PR_EMS_AB_GWART_LAST_MODIFIED: u32 = 2159280192u32;
37305pub const PR_EMS_AB_HAB_CHILD_DEPARTMENTS: u32 = 2358902797u32;
37306pub const PR_EMS_AB_HAB_DEPARTMENT_MEMBERS: u32 = 2358706189u32;
37307pub const PR_EMS_AB_HAB_IS_HIERARCHICAL_GROUP: u32 = 2363293707u32;
37308pub const PR_EMS_AB_HAB_PARENT_DEPARTMENT: u32 = 2358837261u32;
37309pub const PR_EMS_AB_HAB_ROOT_DEPARTMENT: u32 = 2358771725u32;
37310pub const PR_EMS_AB_HAB_SHOW_IN_DEPARTMENTS: u32 = 2358509581u32;
37311pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS: u32 = 2159349790u32;
37312pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS_A: u32 = 2159349790u32;
37313pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS_O: u32 = 2159345677u32;
37314pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS_T: u32 = 2159349790u32;
37315pub const PR_EMS_AB_HAS_FULL_REPLICA_NCS_W: u32 = 2159349791u32;
37316pub const PR_EMS_AB_HAS_MASTER_NCS: u32 = 2159415326u32;
37317pub const PR_EMS_AB_HAS_MASTER_NCS_A: u32 = 2159415326u32;
37318pub const PR_EMS_AB_HAS_MASTER_NCS_O: u32 = 2159411213u32;
37319pub const PR_EMS_AB_HAS_MASTER_NCS_T: u32 = 2159415326u32;
37320pub const PR_EMS_AB_HAS_MASTER_NCS_W: u32 = 2159415327u32;
37321pub const PR_EMS_AB_HELP_DATA16: u32 = 2151284994u32;
37322pub const PR_EMS_AB_HELP_DATA32: u32 = 2148532482u32;
37323pub const PR_EMS_AB_HELP_FILE_NAME: u32 = 2151350302u32;
37324pub const PR_EMS_AB_HELP_FILE_NAME_A: u32 = 2151350302u32;
37325pub const PR_EMS_AB_HELP_FILE_NAME_W: u32 = 2151350303u32;
37326pub const PR_EMS_AB_HEURISTICS: u32 = 2159476739u32;
37327pub const PR_EMS_AB_HIDE_DL_MEMBERSHIP: u32 = 2159542283u32;
37328pub const PR_EMS_AB_HIDE_FROM_ADDRESS_BOOK: u32 = 2159607819u32;
37329pub const PR_EMS_AB_HIERARCHY_PATH: u32 = 4294508574u32;
37330pub const PR_EMS_AB_HIERARCHY_PATH_A: u32 = 4294508574u32;
37331pub const PR_EMS_AB_HIERARCHY_PATH_W: u32 = 4294508575u32;
37332pub const PR_EMS_AB_HOME_MDB: u32 = 2147876894u32;
37333pub const PR_EMS_AB_HOME_MDB_A: u32 = 2147876894u32;
37334pub const PR_EMS_AB_HOME_MDB_BL: u32 = 2148798494u32;
37335pub const PR_EMS_AB_HOME_MDB_BL_A: u32 = 2148798494u32;
37336pub const PR_EMS_AB_HOME_MDB_BL_O: u32 = 2148794381u32;
37337pub const PR_EMS_AB_HOME_MDB_BL_T: u32 = 2148798494u32;
37338pub const PR_EMS_AB_HOME_MDB_BL_W: u32 = 2148798495u32;
37339pub const PR_EMS_AB_HOME_MDB_O: u32 = 2147876877u32;
37340pub const PR_EMS_AB_HOME_MDB_T: u32 = 2147876894u32;
37341pub const PR_EMS_AB_HOME_MDB_W: u32 = 2147876895u32;
37342pub const PR_EMS_AB_HOME_MTA: u32 = 2147942430u32;
37343pub const PR_EMS_AB_HOME_MTA_A: u32 = 2147942430u32;
37344pub const PR_EMS_AB_HOME_MTA_O: u32 = 2147942413u32;
37345pub const PR_EMS_AB_HOME_MTA_T: u32 = 2147942430u32;
37346pub const PR_EMS_AB_HOME_MTA_W: u32 = 2147942431u32;
37347pub const PR_EMS_AB_HOME_PUBLIC_SERVER: u32 = 2151612446u32;
37348pub const PR_EMS_AB_HOME_PUBLIC_SERVER_A: u32 = 2151612446u32;
37349pub const PR_EMS_AB_HOME_PUBLIC_SERVER_O: u32 = 2151612429u32;
37350pub const PR_EMS_AB_HOME_PUBLIC_SERVER_T: u32 = 2151612446u32;
37351pub const PR_EMS_AB_HOME_PUBLIC_SERVER_W: u32 = 2151612447u32;
37352pub const PR_EMS_AB_HOUSE_IDENTIFIER: u32 = 2354315294u32;
37353pub const PR_EMS_AB_HOUSE_IDENTIFIER_A: u32 = 2354315294u32;
37354pub const PR_EMS_AB_HOUSE_IDENTIFIER_W: u32 = 2354315295u32;
37355pub const PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES: u32 = 2175340574u32;
37356pub const PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES_A: u32 = 2175340574u32;
37357pub const PR_EMS_AB_HTTP_PUB_AB_ATTRIBUTES_W: u32 = 2175340575u32;
37358pub const PR_EMS_AB_HTTP_PUB_GAL: u32 = 2174418955u32;
37359pub const PR_EMS_AB_HTTP_PUB_GAL_LIMIT: u32 = 2174484483u32;
37360pub const PR_EMS_AB_HTTP_PUB_PF: u32 = 2174619906u32;
37361pub const PR_EMS_AB_HTTP_SERVERS: u32 = 2175471646u32;
37362pub const PR_EMS_AB_HTTP_SERVERS_A: u32 = 2175471646u32;
37363pub const PR_EMS_AB_HTTP_SERVERS_W: u32 = 2175471647u32;
37364pub const PR_EMS_AB_IMPORTED_FROM: u32 = 2151809054u32;
37365pub const PR_EMS_AB_IMPORTED_FROM_A: u32 = 2151809054u32;
37366pub const PR_EMS_AB_IMPORTED_FROM_W: u32 = 2151809055u32;
37367pub const PR_EMS_AB_IMPORT_CONTAINER: u32 = 2159673374u32;
37368pub const PR_EMS_AB_IMPORT_CONTAINER_A: u32 = 2159673374u32;
37369pub const PR_EMS_AB_IMPORT_CONTAINER_O: u32 = 2159673357u32;
37370pub const PR_EMS_AB_IMPORT_CONTAINER_T: u32 = 2159673374u32;
37371pub const PR_EMS_AB_IMPORT_CONTAINER_W: u32 = 2159673375u32;
37372pub const PR_EMS_AB_IMPORT_SENSITIVITY: u32 = 2159738883u32;
37373pub const PR_EMS_AB_INBOUND_ACCEPT_ALL: u32 = 2350907403u32;
37374pub const PR_EMS_AB_INBOUND_DN: u32 = 2350776350u32;
37375pub const PR_EMS_AB_INBOUND_DN_A: u32 = 2350776350u32;
37376pub const PR_EMS_AB_INBOUND_DN_O: u32 = 2350776333u32;
37377pub const PR_EMS_AB_INBOUND_DN_T: u32 = 2350776350u32;
37378pub const PR_EMS_AB_INBOUND_DN_W: u32 = 2350776351u32;
37379pub const PR_EMS_AB_INBOUND_HOST: u32 = 2173571102u32;
37380pub const PR_EMS_AB_INBOUND_HOST_A: u32 = 2173571102u32;
37381pub const PR_EMS_AB_INBOUND_HOST_W: u32 = 2173571103u32;
37382pub const PR_EMS_AB_INBOUND_NEWSFEED: u32 = 2173894686u32;
37383pub const PR_EMS_AB_INBOUND_NEWSFEED_A: u32 = 2173894686u32;
37384pub const PR_EMS_AB_INBOUND_NEWSFEED_TYPE: u32 = 2350841867u32;
37385pub const PR_EMS_AB_INBOUND_NEWSFEED_W: u32 = 2173894687u32;
37386pub const PR_EMS_AB_INBOUND_SITES: u32 = 2159808542u32;
37387pub const PR_EMS_AB_INBOUND_SITES_A: u32 = 2159808542u32;
37388pub const PR_EMS_AB_INBOUND_SITES_O: u32 = 2159804429u32;
37389pub const PR_EMS_AB_INBOUND_SITES_T: u32 = 2159808542u32;
37390pub const PR_EMS_AB_INBOUND_SITES_W: u32 = 2159808543u32;
37391pub const PR_EMS_AB_INCOMING_MSG_SIZE_LIMIT: u32 = 2173698051u32;
37392pub const PR_EMS_AB_INCOMING_PASSWORD: u32 = 2175729922u32;
37393pub const PR_EMS_AB_INSADMIN: u32 = 2177171486u32;
37394pub const PR_EMS_AB_INSADMIN_A: u32 = 2177171486u32;
37395pub const PR_EMS_AB_INSADMIN_O: u32 = 2177171469u32;
37396pub const PR_EMS_AB_INSADMIN_T: u32 = 2177171486u32;
37397pub const PR_EMS_AB_INSADMIN_W: u32 = 2177171487u32;
37398pub const PR_EMS_AB_INSTANCE_TYPE: u32 = 2159869955u32;
37399pub const PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER: u32 = 2159939614u32;
37400pub const PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER_A: u32 = 2159939614u32;
37401pub const PR_EMS_AB_INTERNATIONAL_ISDN_NUMBER_W: u32 = 2159939615u32;
37402pub const PR_EMS_AB_INVOCATION_ID: u32 = 2160001282u32;
37403pub const PR_EMS_AB_IS_DELETED: u32 = 2160066571u32;
37404pub const PR_EMS_AB_IS_MASTER: u32 = 4294639627u32;
37405pub const PR_EMS_AB_IS_MEMBER_OF_DL: u32 = 2148007949u32;
37406pub const PR_EMS_AB_IS_MEMBER_OF_DL_A: u32 = 2148012062u32;
37407pub const PR_EMS_AB_IS_MEMBER_OF_DL_O: u32 = 2148007949u32;
37408pub const PR_EMS_AB_IS_MEMBER_OF_DL_T: u32 = 2148012062u32;
37409pub const PR_EMS_AB_IS_MEMBER_OF_DL_W: u32 = 2148012063u32;
37410pub const PR_EMS_AB_IS_SINGLE_VALUED: u32 = 2160132107u32;
37411pub const PR_EMS_AB_KCC_STATUS: u32 = 2160201986u32;
37412pub const PR_EMS_AB_KM_SERVER: u32 = 2148335646u32;
37413pub const PR_EMS_AB_KM_SERVER_A: u32 = 2148335646u32;
37414pub const PR_EMS_AB_KM_SERVER_O: u32 = 2148335629u32;
37415pub const PR_EMS_AB_KM_SERVER_T: u32 = 2148335646u32;
37416pub const PR_EMS_AB_KM_SERVER_W: u32 = 2148335647u32;
37417pub const PR_EMS_AB_KNOWLEDGE_INFORMATION: u32 = 2160267294u32;
37418pub const PR_EMS_AB_KNOWLEDGE_INFORMATION_A: u32 = 2160267294u32;
37419pub const PR_EMS_AB_KNOWLEDGE_INFORMATION_W: u32 = 2160267295u32;
37420pub const PR_EMS_AB_LABELEDURI: u32 = 2354118686u32;
37421pub const PR_EMS_AB_LABELEDURI_A: u32 = 2354118686u32;
37422pub const PR_EMS_AB_LABELEDURI_W: u32 = 2354118687u32;
37423pub const PR_EMS_AB_LANGUAGE: u32 = 2172125187u32;
37424pub const PR_EMS_AB_LANGUAGE_ISO639: u32 = 2355888158u32;
37425pub const PR_EMS_AB_LANGUAGE_ISO639_A: u32 = 2355888158u32;
37426pub const PR_EMS_AB_LANGUAGE_ISO639_W: u32 = 2355888159u32;
37427pub const PR_EMS_AB_LDAP_DISPLAY_NAME: u32 = 2171670558u32;
37428pub const PR_EMS_AB_LDAP_DISPLAY_NAME_A: u32 = 2171670558u32;
37429pub const PR_EMS_AB_LDAP_DISPLAY_NAME_W: u32 = 2171670559u32;
37430pub const PR_EMS_AB_LDAP_SEARCH_CFG: u32 = 2350710787u32;
37431pub const PR_EMS_AB_LINE_WRAP: u32 = 2160328707u32;
37432pub const PR_EMS_AB_LINK_ID: u32 = 2160394243u32;
37433pub const PR_EMS_AB_LIST_PUBLIC_FOLDERS: u32 = 2354053131u32;
37434pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD: u32 = 2160459806u32;
37435pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_A: u32 = 2160459806u32;
37436pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS: u32 = 2160525342u32;
37437pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS_A: u32 = 2160525342u32;
37438pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_ADDRESS_W: u32 = 2160525343u32;
37439pub const PR_EMS_AB_LOCAL_BRIDGE_HEAD_W: u32 = 2160459807u32;
37440pub const PR_EMS_AB_LOCAL_INITIAL_TURN: u32 = 2160590859u32;
37441pub const PR_EMS_AB_LOCAL_SCOPE: u32 = 2160660510u32;
37442pub const PR_EMS_AB_LOCAL_SCOPE_A: u32 = 2160660510u32;
37443pub const PR_EMS_AB_LOCAL_SCOPE_O: u32 = 2160656397u32;
37444pub const PR_EMS_AB_LOCAL_SCOPE_T: u32 = 2160660510u32;
37445pub const PR_EMS_AB_LOCAL_SCOPE_W: u32 = 2160660511u32;
37446pub const PR_EMS_AB_LOG_FILENAME: u32 = 2160721950u32;
37447pub const PR_EMS_AB_LOG_FILENAME_A: u32 = 2160721950u32;
37448pub const PR_EMS_AB_LOG_FILENAME_W: u32 = 2160721951u32;
37449pub const PR_EMS_AB_LOG_ROLLOVER_INTERVAL: u32 = 2160787459u32;
37450pub const PR_EMS_AB_MAIL_DROP: u32 = 2355298334u32;
37451pub const PR_EMS_AB_MAIL_DROP_A: u32 = 2355298334u32;
37452pub const PR_EMS_AB_MAIL_DROP_W: u32 = 2355298335u32;
37453pub const PR_EMS_AB_MAINTAIN_AUTOREPLY_HISTORY: u32 = 2160853003u32;
37454pub const PR_EMS_AB_MANAGER: u32 = 2147811341u32;
37455pub const PR_EMS_AB_MANAGER_A: u32 = 2147811358u32;
37456pub const PR_EMS_AB_MANAGER_O: u32 = 2147811341u32;
37457pub const PR_EMS_AB_MANAGER_T: u32 = 2147811358u32;
37458pub const PR_EMS_AB_MANAGER_W: u32 = 2147811359u32;
37459pub const PR_EMS_AB_MAPI_DISPLAY_TYPE: u32 = 2160918531u32;
37460pub const PR_EMS_AB_MAPI_ID: u32 = 2160984067u32;
37461pub const PR_EMS_AB_MAXIMUM_OBJECT_ID: u32 = 2171142402u32;
37462pub const PR_EMS_AB_MDB_BACKOFF_INTERVAL: u32 = 2161049603u32;
37463pub const PR_EMS_AB_MDB_MSG_TIME_OUT_PERIOD: u32 = 2161115139u32;
37464pub const PR_EMS_AB_MDB_OVER_QUOTA_LIMIT: u32 = 2161180675u32;
37465pub const PR_EMS_AB_MDB_STORAGE_QUOTA: u32 = 2161246211u32;
37466pub const PR_EMS_AB_MDB_UNREAD_LIMIT: u32 = 2161311747u32;
37467pub const PR_EMS_AB_MDB_USE_DEFAULTS: u32 = 2161377291u32;
37468pub const PR_EMS_AB_MEMBER: u32 = 2148073485u32;
37469pub const PR_EMS_AB_MEMBER_A: u32 = 2148077598u32;
37470pub const PR_EMS_AB_MEMBER_O: u32 = 2148073485u32;
37471pub const PR_EMS_AB_MEMBER_T: u32 = 2148077598u32;
37472pub const PR_EMS_AB_MEMBER_W: u32 = 2148077599u32;
37473pub const PR_EMS_AB_MESSAGE_TRACKING_ENABLED: u32 = 2161442827u32;
37474pub const PR_EMS_AB_MIME_TYPES: u32 = 2350645506u32;
37475pub const PR_EMS_AB_MODERATED: u32 = 2175533067u32;
37476pub const PR_EMS_AB_MODERATOR: u32 = 2174287902u32;
37477pub const PR_EMS_AB_MODERATOR_A: u32 = 2174287902u32;
37478pub const PR_EMS_AB_MODERATOR_W: u32 = 2174287903u32;
37479pub const PR_EMS_AB_MONITORED_CONFIGURATIONS: u32 = 2161709086u32;
37480pub const PR_EMS_AB_MONITORED_CONFIGURATIONS_A: u32 = 2161709086u32;
37481pub const PR_EMS_AB_MONITORED_CONFIGURATIONS_O: u32 = 2161704973u32;
37482pub const PR_EMS_AB_MONITORED_CONFIGURATIONS_T: u32 = 2161709086u32;
37483pub const PR_EMS_AB_MONITORED_CONFIGURATIONS_W: u32 = 2161709087u32;
37484pub const PR_EMS_AB_MONITORED_SERVERS: u32 = 2161774622u32;
37485pub const PR_EMS_AB_MONITORED_SERVERS_A: u32 = 2161774622u32;
37486pub const PR_EMS_AB_MONITORED_SERVERS_O: u32 = 2161770509u32;
37487pub const PR_EMS_AB_MONITORED_SERVERS_T: u32 = 2161774622u32;
37488pub const PR_EMS_AB_MONITORED_SERVERS_W: u32 = 2161774623u32;
37489pub const PR_EMS_AB_MONITORED_SERVICES: u32 = 2161840158u32;
37490pub const PR_EMS_AB_MONITORED_SERVICES_A: u32 = 2161840158u32;
37491pub const PR_EMS_AB_MONITORED_SERVICES_W: u32 = 2161840159u32;
37492pub const PR_EMS_AB_MONITORING_ALERT_DELAY: u32 = 2161901571u32;
37493pub const PR_EMS_AB_MONITORING_ALERT_UNITS: u32 = 2161967107u32;
37494pub const PR_EMS_AB_MONITORING_AVAILABILITY_STYLE: u32 = 2162032643u32;
37495pub const PR_EMS_AB_MONITORING_AVAILABILITY_WINDOW: u32 = 2162098434u32;
37496pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL: u32 = 2162167838u32;
37497pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_A: u32 = 2162167838u32;
37498pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_O: u32 = 2162163725u32;
37499pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_T: u32 = 2162167838u32;
37500pub const PR_EMS_AB_MONITORING_CACHED_VIA_MAIL_W: u32 = 2162167839u32;
37501pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC: u32 = 2162233374u32;
37502pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC_A: u32 = 2162233374u32;
37503pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC_O: u32 = 2162229261u32;
37504pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC_T: u32 = 2162233374u32;
37505pub const PR_EMS_AB_MONITORING_CACHED_VIA_RPC_W: u32 = 2162233375u32;
37506pub const PR_EMS_AB_MONITORING_ESCALATION_PROCEDURE: u32 = 2162299138u32;
37507pub const PR_EMS_AB_MONITORING_HOTSITE_POLL_INTERVAL: u32 = 2162360323u32;
37508pub const PR_EMS_AB_MONITORING_HOTSITE_POLL_UNITS: u32 = 2162425859u32;
37509pub const PR_EMS_AB_MONITORING_MAIL_UPDATE_INTERVAL: u32 = 2162491395u32;
37510pub const PR_EMS_AB_MONITORING_MAIL_UPDATE_UNITS: u32 = 2162556931u32;
37511pub const PR_EMS_AB_MONITORING_NORMAL_POLL_INTERVAL: u32 = 2162622467u32;
37512pub const PR_EMS_AB_MONITORING_NORMAL_POLL_UNITS: u32 = 2162688003u32;
37513pub const PR_EMS_AB_MONITORING_RECIPIENTS: u32 = 2162757662u32;
37514pub const PR_EMS_AB_MONITORING_RECIPIENTS_A: u32 = 2162757662u32;
37515pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR: u32 = 2162823198u32;
37516pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR_A: u32 = 2162823198u32;
37517pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR_O: u32 = 2162819085u32;
37518pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR_T: u32 = 2162823198u32;
37519pub const PR_EMS_AB_MONITORING_RECIPIENTS_NDR_W: u32 = 2162823199u32;
37520pub const PR_EMS_AB_MONITORING_RECIPIENTS_O: u32 = 2162753549u32;
37521pub const PR_EMS_AB_MONITORING_RECIPIENTS_T: u32 = 2162757662u32;
37522pub const PR_EMS_AB_MONITORING_RECIPIENTS_W: u32 = 2162757663u32;
37523pub const PR_EMS_AB_MONITORING_RPC_UPDATE_INTERVAL: u32 = 2162884611u32;
37524pub const PR_EMS_AB_MONITORING_RPC_UPDATE_UNITS: u32 = 2162950147u32;
37525pub const PR_EMS_AB_MONITORING_WARNING_DELAY: u32 = 2163015683u32;
37526pub const PR_EMS_AB_MONITORING_WARNING_UNITS: u32 = 2163081219u32;
37527pub const PR_EMS_AB_MONITOR_CLOCK: u32 = 2161508363u32;
37528pub const PR_EMS_AB_MONITOR_SERVERS: u32 = 2161573899u32;
37529pub const PR_EMS_AB_MONITOR_SERVICES: u32 = 2161639435u32;
37530pub const PR_EMS_AB_MTA_LOCAL_CRED: u32 = 2163146782u32;
37531pub const PR_EMS_AB_MTA_LOCAL_CRED_A: u32 = 2163146782u32;
37532pub const PR_EMS_AB_MTA_LOCAL_CRED_W: u32 = 2163146783u32;
37533pub const PR_EMS_AB_MTA_LOCAL_DESIG: u32 = 2163212318u32;
37534pub const PR_EMS_AB_MTA_LOCAL_DESIG_A: u32 = 2163212318u32;
37535pub const PR_EMS_AB_MTA_LOCAL_DESIG_W: u32 = 2163212319u32;
37536pub const PR_EMS_AB_NETWORK_ADDRESS: u32 = 2171605022u32;
37537pub const PR_EMS_AB_NETWORK_ADDRESS_A: u32 = 2171605022u32;
37538pub const PR_EMS_AB_NETWORK_ADDRESS_W: u32 = 2171605023u32;
37539pub const PR_EMS_AB_NEWSFEED_TYPE: u32 = 2173960195u32;
37540pub const PR_EMS_AB_NEWSGROUP: u32 = 2174222366u32;
37541pub const PR_EMS_AB_NEWSGROUP_A: u32 = 2174222366u32;
37542pub const PR_EMS_AB_NEWSGROUP_LIST: u32 = 2174091522u32;
37543pub const PR_EMS_AB_NEWSGROUP_W: u32 = 2174222367u32;
37544pub const PR_EMS_AB_NNTP_CHARACTER_SET: u32 = 2172452894u32;
37545pub const PR_EMS_AB_NNTP_CHARACTER_SET_A: u32 = 2172452894u32;
37546pub const PR_EMS_AB_NNTP_CHARACTER_SET_W: u32 = 2172452895u32;
37547pub const PR_EMS_AB_NNTP_CONTENT_FORMAT: u32 = 2171994142u32;
37548pub const PR_EMS_AB_NNTP_CONTENT_FORMAT_A: u32 = 2171994142u32;
37549pub const PR_EMS_AB_NNTP_CONTENT_FORMAT_W: u32 = 2171994143u32;
37550pub const PR_EMS_AB_NNTP_DISTRIBUTIONS: u32 = 2174160926u32;
37551pub const PR_EMS_AB_NNTP_DISTRIBUTIONS_A: u32 = 2174160926u32;
37552pub const PR_EMS_AB_NNTP_DISTRIBUTIONS_FLAG: u32 = 2175008779u32;
37553pub const PR_EMS_AB_NNTP_DISTRIBUTIONS_W: u32 = 2174160927u32;
37554pub const PR_EMS_AB_NNTP_NEWSFEEDS: u32 = 2175143966u32;
37555pub const PR_EMS_AB_NNTP_NEWSFEEDS_A: u32 = 2175143966u32;
37556pub const PR_EMS_AB_NNTP_NEWSFEEDS_O: u32 = 2175139853u32;
37557pub const PR_EMS_AB_NNTP_NEWSFEEDS_T: u32 = 2175143966u32;
37558pub const PR_EMS_AB_NNTP_NEWSFEEDS_W: u32 = 2175143967u32;
37559pub const PR_EMS_AB_NT_MACHINE_NAME: u32 = 2163408926u32;
37560pub const PR_EMS_AB_NT_MACHINE_NAME_A: u32 = 2163408926u32;
37561pub const PR_EMS_AB_NT_MACHINE_NAME_W: u32 = 2163408927u32;
37562pub const PR_EMS_AB_NT_SECURITY_DESCRIPTOR: u32 = 2148729090u32;
37563pub const PR_EMS_AB_NUM_OF_OPEN_RETRIES: u32 = 2163474435u32;
37564pub const PR_EMS_AB_NUM_OF_TRANSFER_RETRIES: u32 = 2163539971u32;
37565pub const PR_EMS_AB_N_ADDRESS: u32 = 2163278082u32;
37566pub const PR_EMS_AB_N_ADDRESS_TYPE: u32 = 2163343363u32;
37567pub const PR_EMS_AB_OBJECT_CLASS_CATEGORY: u32 = 2163605507u32;
37568pub const PR_EMS_AB_OBJECT_GUID: u32 = 2355953922u32;
37569pub const PR_EMS_AB_OBJECT_OID: u32 = 4294574338u32;
37570pub const PR_EMS_AB_OBJECT_VERSION: u32 = 2163671043u32;
37571pub const PR_EMS_AB_OBJ_DIST_NAME: u32 = 2151415838u32;
37572pub const PR_EMS_AB_OBJ_DIST_NAME_A: u32 = 2151415838u32;
37573pub const PR_EMS_AB_OBJ_DIST_NAME_O: u32 = 2151415821u32;
37574pub const PR_EMS_AB_OBJ_DIST_NAME_T: u32 = 2151415838u32;
37575pub const PR_EMS_AB_OBJ_DIST_NAME_W: u32 = 2151415839u32;
37576pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS: u32 = 2177306654u32;
37577pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS_A: u32 = 2177306654u32;
37578pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS_O: u32 = 2177302541u32;
37579pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS_T: u32 = 2177306654u32;
37580pub const PR_EMS_AB_OBJ_VIEW_CONTAINERS_W: u32 = 2177306655u32;
37581pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS: u32 = 2163740702u32;
37582pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS_A: u32 = 2163740702u32;
37583pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS_O: u32 = 2163736589u32;
37584pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS_T: u32 = 2163740702u32;
37585pub const PR_EMS_AB_OFF_LINE_AB_CONTAINERS_W: u32 = 2163740703u32;
37586pub const PR_EMS_AB_OFF_LINE_AB_SCHEDULE: u32 = 2163802370u32;
37587pub const PR_EMS_AB_OFF_LINE_AB_SERVER: u32 = 2163867678u32;
37588pub const PR_EMS_AB_OFF_LINE_AB_SERVER_A: u32 = 2163867678u32;
37589pub const PR_EMS_AB_OFF_LINE_AB_SERVER_O: u32 = 2163867661u32;
37590pub const PR_EMS_AB_OFF_LINE_AB_SERVER_T: u32 = 2163867678u32;
37591pub const PR_EMS_AB_OFF_LINE_AB_SERVER_W: u32 = 2163867679u32;
37592pub const PR_EMS_AB_OFF_LINE_AB_STYLE: u32 = 2163933187u32;
37593pub const PR_EMS_AB_OID_TYPE: u32 = 2163998723u32;
37594pub const PR_EMS_AB_OM_OBJECT_CLASS: u32 = 2164064514u32;
37595pub const PR_EMS_AB_OM_SYNTAX: u32 = 2164129795u32;
37596pub const PR_EMS_AB_OOF_REPLY_TO_ORIGINATOR: u32 = 2164195339u32;
37597pub const PR_EMS_AB_OPEN_RETRY_INTERVAL: u32 = 2164260867u32;
37598pub const PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME: u32 = 2164396062u32;
37599pub const PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME_A: u32 = 2164396062u32;
37600pub const PR_EMS_AB_ORGANIZATIONAL_UNIT_NAME_W: u32 = 2164396063u32;
37601pub const PR_EMS_AB_ORGANIZATION_NAME: u32 = 2164330526u32;
37602pub const PR_EMS_AB_ORGANIZATION_NAME_A: u32 = 2164330526u32;
37603pub const PR_EMS_AB_ORGANIZATION_NAME_W: u32 = 2164330527u32;
37604pub const PR_EMS_AB_ORG_UNIT_ROOT_DN: u32 = 2359820318u32;
37605pub const PR_EMS_AB_ORIGINAL_DISPLAY_TABLE: u32 = 2164457730u32;
37606pub const PR_EMS_AB_ORIGINAL_DISPLAY_TABLE_MSDOS: u32 = 2164523266u32;
37607pub const PR_EMS_AB_OTHER_RECIPS: u32 = 4026531853u32;
37608pub const PR_EMS_AB_OUTBOUND_HOST: u32 = 2173501698u32;
37609pub const PR_EMS_AB_OUTBOUND_HOST_TYPE: u32 = 2175795211u32;
37610pub const PR_EMS_AB_OUTBOUND_NEWSFEED: u32 = 2174025758u32;
37611pub const PR_EMS_AB_OUTBOUND_NEWSFEED_A: u32 = 2174025758u32;
37612pub const PR_EMS_AB_OUTBOUND_NEWSFEED_W: u32 = 2174025759u32;
37613pub const PR_EMS_AB_OUTBOUND_SITES: u32 = 2164592670u32;
37614pub const PR_EMS_AB_OUTBOUND_SITES_A: u32 = 2164592670u32;
37615pub const PR_EMS_AB_OUTBOUND_SITES_O: u32 = 2164588557u32;
37616pub const PR_EMS_AB_OUTBOUND_SITES_T: u32 = 2164592670u32;
37617pub const PR_EMS_AB_OUTBOUND_SITES_W: u32 = 2164592671u32;
37618pub const PR_EMS_AB_OUTGOING_MSG_SIZE_LIMIT: u32 = 2173632515u32;
37619pub const PR_EMS_AB_OVERRIDE_NNTP_CONTENT_FORMAT: u32 = 2177237003u32;
37620pub const PR_EMS_AB_OWA_SERVER: u32 = 2355494942u32;
37621pub const PR_EMS_AB_OWA_SERVER_A: u32 = 2355494942u32;
37622pub const PR_EMS_AB_OWA_SERVER_W: u32 = 2355494943u32;
37623pub const PR_EMS_AB_OWNER: u32 = 2148270110u32;
37624pub const PR_EMS_AB_OWNER_A: u32 = 2148270110u32;
37625pub const PR_EMS_AB_OWNER_BL: u32 = 2149847070u32;
37626pub const PR_EMS_AB_OWNER_BL_A: u32 = 2149847070u32;
37627pub const PR_EMS_AB_OWNER_BL_O: u32 = 2149842957u32;
37628pub const PR_EMS_AB_OWNER_BL_T: u32 = 2149847070u32;
37629pub const PR_EMS_AB_OWNER_BL_W: u32 = 2149847071u32;
37630pub const PR_EMS_AB_OWNER_O: u32 = 2148270093u32;
37631pub const PR_EMS_AB_OWNER_T: u32 = 2148270110u32;
37632pub const PR_EMS_AB_OWNER_W: u32 = 2148270111u32;
37633pub const PR_EMS_AB_PARENT_ENTRYID: u32 = 4294705410u32;
37634pub const PR_EMS_AB_PERIOD_REPL_STAGGER: u32 = 2164981763u32;
37635pub const PR_EMS_AB_PERIOD_REP_SYNC_TIMES: u32 = 2164916482u32;
37636pub const PR_EMS_AB_PERSONAL_TITLE: u32 = 2355822622u32;
37637pub const PR_EMS_AB_PERSONAL_TITLE_A: u32 = 2355822622u32;
37638pub const PR_EMS_AB_PERSONAL_TITLE_W: u32 = 2355822623u32;
37639pub const PR_EMS_AB_PER_MSG_DIALOG_DISPLAY_TABLE: u32 = 2164785410u32;
37640pub const PR_EMS_AB_PER_RECIP_DIALOG_DISPLAY_TABLE: u32 = 2164850946u32;
37641pub const PR_EMS_AB_PF_CONTACTS: u32 = 2151157790u32;
37642pub const PR_EMS_AB_PF_CONTACTS_A: u32 = 2151157790u32;
37643pub const PR_EMS_AB_PF_CONTACTS_O: u32 = 2151153677u32;
37644pub const PR_EMS_AB_PF_CONTACTS_T: u32 = 2151157790u32;
37645pub const PR_EMS_AB_PF_CONTACTS_W: u32 = 2151157791u32;
37646pub const PR_EMS_AB_PHONETIC_COMPANY_NAME: u32 = 2358312990u32;
37647pub const PR_EMS_AB_PHONETIC_COMPANY_NAME_A: u32 = 2358312990u32;
37648pub const PR_EMS_AB_PHONETIC_COMPANY_NAME_W: u32 = 2358312991u32;
37649pub const PR_EMS_AB_PHONETIC_DEPARTMENT_NAME: u32 = 2358247454u32;
37650pub const PR_EMS_AB_PHONETIC_DEPARTMENT_NAME_A: u32 = 2358247454u32;
37651pub const PR_EMS_AB_PHONETIC_DEPARTMENT_NAME_W: u32 = 2358247455u32;
37652pub const PR_EMS_AB_PHONETIC_DISPLAY_NAME: u32 = 2358378526u32;
37653pub const PR_EMS_AB_PHONETIC_DISPLAY_NAME_A: u32 = 2358378526u32;
37654pub const PR_EMS_AB_PHONETIC_DISPLAY_NAME_W: u32 = 2358378527u32;
37655pub const PR_EMS_AB_PHONETIC_GIVEN_NAME: u32 = 2358116382u32;
37656pub const PR_EMS_AB_PHONETIC_GIVEN_NAME_A: u32 = 2358116382u32;
37657pub const PR_EMS_AB_PHONETIC_GIVEN_NAME_W: u32 = 2358116383u32;
37658pub const PR_EMS_AB_PHONETIC_SURNAME: u32 = 2358181918u32;
37659pub const PR_EMS_AB_PHONETIC_SURNAME_A: u32 = 2358181918u32;
37660pub const PR_EMS_AB_PHONETIC_SURNAME_W: u32 = 2358181919u32;
37661pub const PR_EMS_AB_POP_CHARACTER_SET: u32 = 2172190750u32;
37662pub const PR_EMS_AB_POP_CHARACTER_SET_A: u32 = 2172190750u32;
37663pub const PR_EMS_AB_POP_CHARACTER_SET_W: u32 = 2172190751u32;
37664pub const PR_EMS_AB_POP_CONTENT_FORMAT: u32 = 2172059678u32;
37665pub const PR_EMS_AB_POP_CONTENT_FORMAT_A: u32 = 2172059678u32;
37666pub const PR_EMS_AB_POP_CONTENT_FORMAT_W: u32 = 2172059679u32;
37667pub const PR_EMS_AB_PORT_NUMBER: u32 = 2176122883u32;
37668pub const PR_EMS_AB_POSTAL_ADDRESS: u32 = 2165051650u32;
37669pub const PR_EMS_AB_PREFERRED_DELIVERY_METHOD: u32 = 2165116931u32;
37670pub const PR_EMS_AB_PRESERVE_INTERNET_CONTENT: u32 = 2351038475u32;
37671pub const PR_EMS_AB_PRMD: u32 = 2165178398u32;
37672pub const PR_EMS_AB_PRMD_A: u32 = 2165178398u32;
37673pub const PR_EMS_AB_PRMD_W: u32 = 2165178399u32;
37674pub const PR_EMS_AB_PROMO_EXPIRATION: u32 = 2176974912u32;
37675pub const PR_EMS_AB_PROTOCOL_SETTINGS: u32 = 2176192542u32;
37676pub const PR_EMS_AB_PROTOCOL_SETTINGS_A: u32 = 2176192542u32;
37677pub const PR_EMS_AB_PROTOCOL_SETTINGS_W: u32 = 2176192543u32;
37678pub const PR_EMS_AB_PROXY_ADDRESSES: u32 = 2148470814u32;
37679pub const PR_EMS_AB_PROXY_ADDRESSES_A: u32 = 2148470814u32;
37680pub const PR_EMS_AB_PROXY_ADDRESSES_W: u32 = 2148470815u32;
37681pub const PR_EMS_AB_PROXY_GENERATION_ENABLED: u32 = 2175860747u32;
37682pub const PR_EMS_AB_PROXY_GENERATOR_DLL: u32 = 2165243934u32;
37683pub const PR_EMS_AB_PROXY_GENERATOR_DLL_A: u32 = 2165243934u32;
37684pub const PR_EMS_AB_PROXY_GENERATOR_DLL_W: u32 = 2165243935u32;
37685pub const PR_EMS_AB_PUBLIC_DELEGATES: u32 = 2148859917u32;
37686pub const PR_EMS_AB_PUBLIC_DELEGATES_A: u32 = 2148864030u32;
37687pub const PR_EMS_AB_PUBLIC_DELEGATES_BL: u32 = 2165313566u32;
37688pub const PR_EMS_AB_PUBLIC_DELEGATES_BL_A: u32 = 2165313566u32;
37689pub const PR_EMS_AB_PUBLIC_DELEGATES_BL_O: u32 = 2165309453u32;
37690pub const PR_EMS_AB_PUBLIC_DELEGATES_BL_T: u32 = 2165313566u32;
37691pub const PR_EMS_AB_PUBLIC_DELEGATES_BL_W: u32 = 2165313567u32;
37692pub const PR_EMS_AB_PUBLIC_DELEGATES_O: u32 = 2148859917u32;
37693pub const PR_EMS_AB_PUBLIC_DELEGATES_T: u32 = 2148864030u32;
37694pub const PR_EMS_AB_PUBLIC_DELEGATES_W: u32 = 2148864031u32;
37695pub const PR_EMS_AB_P_SELECTOR: u32 = 2164654338u32;
37696pub const PR_EMS_AB_P_SELECTOR_INBOUND: u32 = 2164719874u32;
37697pub const PR_EMS_AB_QUOTA_NOTIFICATION_SCHEDULE: u32 = 2165375234u32;
37698pub const PR_EMS_AB_QUOTA_NOTIFICATION_STYLE: u32 = 2165440515u32;
37699pub const PR_EMS_AB_RANGE_LOWER: u32 = 2165506051u32;
37700pub const PR_EMS_AB_RANGE_UPPER: u32 = 2165571587u32;
37701pub const PR_EMS_AB_RAS_ACCOUNT: u32 = 2175598622u32;
37702pub const PR_EMS_AB_RAS_ACCOUNT_A: u32 = 2175598622u32;
37703pub const PR_EMS_AB_RAS_ACCOUNT_W: u32 = 2175598623u32;
37704pub const PR_EMS_AB_RAS_CALLBACK_NUMBER: u32 = 2165637150u32;
37705pub const PR_EMS_AB_RAS_CALLBACK_NUMBER_A: u32 = 2165637150u32;
37706pub const PR_EMS_AB_RAS_CALLBACK_NUMBER_W: u32 = 2165637151u32;
37707pub const PR_EMS_AB_RAS_PASSWORD: u32 = 2175664386u32;
37708pub const PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME: u32 = 2165768222u32;
37709pub const PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME_A: u32 = 2165768222u32;
37710pub const PR_EMS_AB_RAS_PHONEBOOK_ENTRY_NAME_W: u32 = 2165768223u32;
37711pub const PR_EMS_AB_RAS_PHONE_NUMBER: u32 = 2165702686u32;
37712pub const PR_EMS_AB_RAS_PHONE_NUMBER_A: u32 = 2165702686u32;
37713pub const PR_EMS_AB_RAS_PHONE_NUMBER_W: u32 = 2165702687u32;
37714pub const PR_EMS_AB_RAS_REMOTE_SRVR_NAME: u32 = 2165833758u32;
37715pub const PR_EMS_AB_RAS_REMOTE_SRVR_NAME_A: u32 = 2165833758u32;
37716pub const PR_EMS_AB_RAS_REMOTE_SRVR_NAME_W: u32 = 2165833759u32;
37717pub const PR_EMS_AB_REFERRAL_LIST: u32 = 2174947358u32;
37718pub const PR_EMS_AB_REFERRAL_LIST_A: u32 = 2174947358u32;
37719pub const PR_EMS_AB_REFERRAL_LIST_W: u32 = 2174947359u32;
37720pub const PR_EMS_AB_REGISTERED_ADDRESS: u32 = 2165903618u32;
37721pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD: u32 = 2165964830u32;
37722pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_A: u32 = 2165964830u32;
37723pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS: u32 = 2166030366u32;
37724pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS_A: u32 = 2166030366u32;
37725pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_ADDRESS_W: u32 = 2166030367u32;
37726pub const PR_EMS_AB_REMOTE_BRIDGE_HEAD_W: u32 = 2165964831u32;
37727pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER: u32 = 2166095902u32;
37728pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER_A: u32 = 2166095902u32;
37729pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER_O: u32 = 2166095885u32;
37730pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER_T: u32 = 2166095902u32;
37731pub const PR_EMS_AB_REMOTE_OUT_BH_SERVER_W: u32 = 2166095903u32;
37732pub const PR_EMS_AB_REMOTE_SITE: u32 = 2166161438u32;
37733pub const PR_EMS_AB_REMOTE_SITE_A: u32 = 2166161438u32;
37734pub const PR_EMS_AB_REMOTE_SITE_O: u32 = 2166161421u32;
37735pub const PR_EMS_AB_REMOTE_SITE_T: u32 = 2166161438u32;
37736pub const PR_EMS_AB_REMOTE_SITE_W: u32 = 2166161439u32;
37737pub const PR_EMS_AB_REPLICATED_OBJECT_VERSION: u32 = 2355232771u32;
37738pub const PR_EMS_AB_REPLICATION_MAIL_MSG_SIZE: u32 = 2171076611u32;
37739pub const PR_EMS_AB_REPLICATION_SENSITIVITY: u32 = 2166226947u32;
37740pub const PR_EMS_AB_REPLICATION_SIGNATURE: u32 = 2356019458u32;
37741pub const PR_EMS_AB_REPLICATION_STAGGER: u32 = 2166292483u32;
37742pub const PR_EMS_AB_REPORTS: u32 = 2148401165u32;
37743pub const PR_EMS_AB_REPORTS_A: u32 = 2148405278u32;
37744pub const PR_EMS_AB_REPORTS_O: u32 = 2148401165u32;
37745pub const PR_EMS_AB_REPORTS_T: u32 = 2148405278u32;
37746pub const PR_EMS_AB_REPORTS_W: u32 = 2148405279u32;
37747pub const PR_EMS_AB_REPORT_TO_ORIGINATOR: u32 = 2166358027u32;
37748pub const PR_EMS_AB_REPORT_TO_OWNER: u32 = 2166423563u32;
37749pub const PR_EMS_AB_REQUIRE_SSL: u32 = 2351235083u32;
37750pub const PR_EMS_AB_REQ_SEQ: u32 = 2166489091u32;
37751pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA: u32 = 2166554654u32;
37752pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_A: u32 = 2166554654u32;
37753pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_O: u32 = 2166554637u32;
37754pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_T: u32 = 2166554654u32;
37755pub const PR_EMS_AB_RESPONSIBLE_LOCAL_DXA_W: u32 = 2166554655u32;
37756pub const PR_EMS_AB_RETURN_EXACT_MSG_SIZE: u32 = 2354184203u32;
37757pub const PR_EMS_AB_RID_SERVER: u32 = 2166620190u32;
37758pub const PR_EMS_AB_RID_SERVER_A: u32 = 2166620190u32;
37759pub const PR_EMS_AB_RID_SERVER_O: u32 = 2166620173u32;
37760pub const PR_EMS_AB_RID_SERVER_T: u32 = 2166620190u32;
37761pub const PR_EMS_AB_RID_SERVER_W: u32 = 2166620191u32;
37762pub const PR_EMS_AB_ROLE_OCCUPANT: u32 = 2166689822u32;
37763pub const PR_EMS_AB_ROLE_OCCUPANT_A: u32 = 2166689822u32;
37764pub const PR_EMS_AB_ROLE_OCCUPANT_O: u32 = 2166685709u32;
37765pub const PR_EMS_AB_ROLE_OCCUPANT_T: u32 = 2166689822u32;
37766pub const PR_EMS_AB_ROLE_OCCUPANT_W: u32 = 2166689823u32;
37767pub const PR_EMS_AB_ROOM_CAPACITY: u32 = 134676483u32;
37768pub const PR_EMS_AB_ROOM_CONTAINERS: u32 = 2358644766u32;
37769pub const PR_EMS_AB_ROOM_CONTAINERS_A: u32 = 2358644766u32;
37770pub const PR_EMS_AB_ROOM_CONTAINERS_W: u32 = 2358644767u32;
37771pub const PR_EMS_AB_ROOM_DESCRIPTION: u32 = 134807582u32;
37772pub const PR_EMS_AB_ROOM_DESCRIPTION_A: u32 = 134807582u32;
37773pub const PR_EMS_AB_ROOM_DESCRIPTION_W: u32 = 134807583u32;
37774pub const PR_EMS_AB_ROOT_NEWSGROUPS_FOLDER_ID: u32 = 2175926530u32;
37775pub const PR_EMS_AB_ROUTING_LIST: u32 = 2166755358u32;
37776pub const PR_EMS_AB_ROUTING_LIST_A: u32 = 2166755358u32;
37777pub const PR_EMS_AB_ROUTING_LIST_W: u32 = 2166755359u32;
37778pub const PR_EMS_AB_RTS_CHECKPOINT_SIZE: u32 = 2166816771u32;
37779pub const PR_EMS_AB_RTS_RECOVERY_TIMEOUT: u32 = 2166882307u32;
37780pub const PR_EMS_AB_RTS_WINDOW_SIZE: u32 = 2166947843u32;
37781pub const PR_EMS_AB_RUNS_ON: u32 = 2167017502u32;
37782pub const PR_EMS_AB_RUNS_ON_A: u32 = 2167017502u32;
37783pub const PR_EMS_AB_RUNS_ON_O: u32 = 2167013389u32;
37784pub const PR_EMS_AB_RUNS_ON_T: u32 = 2167017502u32;
37785pub const PR_EMS_AB_RUNS_ON_W: u32 = 2167017503u32;
37786pub const PR_EMS_AB_SCHEMA_FLAGS: u32 = 2171797507u32;
37787pub const PR_EMS_AB_SCHEMA_VERSION: u32 = 2172391427u32;
37788pub const PR_EMS_AB_SEARCH_FLAGS: u32 = 2167209987u32;
37789pub const PR_EMS_AB_SEARCH_GUIDE: u32 = 2167279874u32;
37790pub const PR_EMS_AB_SECURITY_POLICY: u32 = 2353467650u32;
37791pub const PR_EMS_AB_SECURITY_PROTOCOL: u32 = 2151092482u32;
37792pub const PR_EMS_AB_SEE_ALSO: u32 = 2167345182u32;
37793pub const PR_EMS_AB_SEE_ALSO_A: u32 = 2167345182u32;
37794pub const PR_EMS_AB_SEE_ALSO_O: u32 = 2167341069u32;
37795pub const PR_EMS_AB_SEE_ALSO_T: u32 = 2167345182u32;
37796pub const PR_EMS_AB_SEE_ALSO_W: u32 = 2167345183u32;
37797pub const PR_EMS_AB_SEND_EMAIL_MESSAGE: u32 = 2352021515u32;
37798pub const PR_EMS_AB_SEND_TNEF: u32 = 2173763595u32;
37799pub const PR_EMS_AB_SENIORITY_INDEX: u32 = 2359296003u32;
37800pub const PR_EMS_AB_SERIAL_NUMBER: u32 = 2167410718u32;
37801pub const PR_EMS_AB_SERIAL_NUMBER_A: u32 = 2167410718u32;
37802pub const PR_EMS_AB_SERIAL_NUMBER_W: u32 = 2167410719u32;
37803pub const PR_EMS_AB_SERVER: u32 = 4294836254u32;
37804pub const PR_EMS_AB_SERVER_A: u32 = 4294836254u32;
37805pub const PR_EMS_AB_SERVER_W: u32 = 4294836255u32;
37806pub const PR_EMS_AB_SERVICE_ACTION_FIRST: u32 = 2167472131u32;
37807pub const PR_EMS_AB_SERVICE_ACTION_OTHER: u32 = 2167537667u32;
37808pub const PR_EMS_AB_SERVICE_ACTION_SECOND: u32 = 2167603203u32;
37809pub const PR_EMS_AB_SERVICE_RESTART_DELAY: u32 = 2167668739u32;
37810pub const PR_EMS_AB_SERVICE_RESTART_MESSAGE: u32 = 2167734302u32;
37811pub const PR_EMS_AB_SERVICE_RESTART_MESSAGE_A: u32 = 2167734302u32;
37812pub const PR_EMS_AB_SERVICE_RESTART_MESSAGE_W: u32 = 2167734303u32;
37813pub const PR_EMS_AB_SESSION_DISCONNECT_TIMER: u32 = 2167799811u32;
37814pub const PR_EMS_AB_SITE_AFFINITY: u32 = 2167869470u32;
37815pub const PR_EMS_AB_SITE_AFFINITY_A: u32 = 2167869470u32;
37816pub const PR_EMS_AB_SITE_AFFINITY_W: u32 = 2167869471u32;
37817pub const PR_EMS_AB_SITE_FOLDER_GUID: u32 = 2170945794u32;
37818pub const PR_EMS_AB_SITE_FOLDER_SERVER: u32 = 2171011102u32;
37819pub const PR_EMS_AB_SITE_FOLDER_SERVER_A: u32 = 2171011102u32;
37820pub const PR_EMS_AB_SITE_FOLDER_SERVER_O: u32 = 2171011085u32;
37821pub const PR_EMS_AB_SITE_FOLDER_SERVER_T: u32 = 2171011102u32;
37822pub const PR_EMS_AB_SITE_FOLDER_SERVER_W: u32 = 2171011103u32;
37823pub const PR_EMS_AB_SITE_PROXY_SPACE: u32 = 2167935006u32;
37824pub const PR_EMS_AB_SITE_PROXY_SPACE_A: u32 = 2167935006u32;
37825pub const PR_EMS_AB_SITE_PROXY_SPACE_W: u32 = 2167935007u32;
37826pub const PR_EMS_AB_SMIME_ALG_LIST_NA: u32 = 2352156702u32;
37827pub const PR_EMS_AB_SMIME_ALG_LIST_NA_A: u32 = 2352156702u32;
37828pub const PR_EMS_AB_SMIME_ALG_LIST_NA_W: u32 = 2352156703u32;
37829pub const PR_EMS_AB_SMIME_ALG_LIST_OTHER: u32 = 2352222238u32;
37830pub const PR_EMS_AB_SMIME_ALG_LIST_OTHER_A: u32 = 2352222238u32;
37831pub const PR_EMS_AB_SMIME_ALG_LIST_OTHER_W: u32 = 2352222239u32;
37832pub const PR_EMS_AB_SMIME_ALG_SELECTED_NA: u32 = 2352283678u32;
37833pub const PR_EMS_AB_SMIME_ALG_SELECTED_NA_A: u32 = 2352283678u32;
37834pub const PR_EMS_AB_SMIME_ALG_SELECTED_NA_W: u32 = 2352283679u32;
37835pub const PR_EMS_AB_SMIME_ALG_SELECTED_OTHER: u32 = 2352349214u32;
37836pub const PR_EMS_AB_SMIME_ALG_SELECTED_OTHER_A: u32 = 2352349214u32;
37837pub const PR_EMS_AB_SMIME_ALG_SELECTED_OTHER_W: u32 = 2352349215u32;
37838pub const PR_EMS_AB_SPACE_LAST_COMPUTED: u32 = 2167996480u32;
37839pub const PR_EMS_AB_STREET_ADDRESS: u32 = 2168061982u32;
37840pub const PR_EMS_AB_STREET_ADDRESS_A: u32 = 2168061982u32;
37841pub const PR_EMS_AB_STREET_ADDRESS_W: u32 = 2168061983u32;
37842pub const PR_EMS_AB_SUBMISSION_CONT_LENGTH: u32 = 2168193027u32;
37843pub const PR_EMS_AB_SUB_REFS: u32 = 2168131614u32;
37844pub const PR_EMS_AB_SUB_REFS_A: u32 = 2168131614u32;
37845pub const PR_EMS_AB_SUB_REFS_O: u32 = 2168127501u32;
37846pub const PR_EMS_AB_SUB_REFS_T: u32 = 2168131614u32;
37847pub const PR_EMS_AB_SUB_REFS_W: u32 = 2168131615u32;
37848pub const PR_EMS_AB_SUB_SITE: u32 = 2172321822u32;
37849pub const PR_EMS_AB_SUB_SITE_A: u32 = 2172321822u32;
37850pub const PR_EMS_AB_SUB_SITE_W: u32 = 2172321823u32;
37851pub const PR_EMS_AB_SUPPORTED_ALGORITHMS: u32 = 2354381058u32;
37852pub const PR_EMS_AB_SUPPORTED_APPLICATION_CONTEXT: u32 = 2168262914u32;
37853pub const PR_EMS_AB_SUPPORTING_STACK: u32 = 2168328222u32;
37854pub const PR_EMS_AB_SUPPORTING_STACK_A: u32 = 2168328222u32;
37855pub const PR_EMS_AB_SUPPORTING_STACK_BL: u32 = 2168393758u32;
37856pub const PR_EMS_AB_SUPPORTING_STACK_BL_A: u32 = 2168393758u32;
37857pub const PR_EMS_AB_SUPPORTING_STACK_BL_O: u32 = 2168389645u32;
37858pub const PR_EMS_AB_SUPPORTING_STACK_BL_T: u32 = 2168393758u32;
37859pub const PR_EMS_AB_SUPPORTING_STACK_BL_W: u32 = 2168393759u32;
37860pub const PR_EMS_AB_SUPPORTING_STACK_O: u32 = 2168324109u32;
37861pub const PR_EMS_AB_SUPPORTING_STACK_T: u32 = 2168328222u32;
37862pub const PR_EMS_AB_SUPPORTING_STACK_W: u32 = 2168328223u32;
37863pub const PR_EMS_AB_SUPPORT_SMIME_SIGNATURES: u32 = 2353528843u32;
37864pub const PR_EMS_AB_S_SELECTOR: u32 = 2167079170u32;
37865pub const PR_EMS_AB_S_SELECTOR_INBOUND: u32 = 2167144706u32;
37866pub const PR_EMS_AB_TARGET_ADDRESS: u32 = 2148597790u32;
37867pub const PR_EMS_AB_TARGET_ADDRESS_A: u32 = 2148597790u32;
37868pub const PR_EMS_AB_TARGET_ADDRESS_W: u32 = 2148597791u32;
37869pub const PR_EMS_AB_TARGET_MTAS: u32 = 2168590366u32;
37870pub const PR_EMS_AB_TARGET_MTAS_A: u32 = 2168590366u32;
37871pub const PR_EMS_AB_TARGET_MTAS_W: u32 = 2168590367u32;
37872pub const PR_EMS_AB_TELEPHONE_NUMBER: u32 = 2148667422u32;
37873pub const PR_EMS_AB_TELEPHONE_NUMBER_A: u32 = 2148667422u32;
37874pub const PR_EMS_AB_TELEPHONE_NUMBER_W: u32 = 2148667423u32;
37875pub const PR_EMS_AB_TELEPHONE_PERSONAL_PAGER: u32 = 2355626014u32;
37876pub const PR_EMS_AB_TELEPHONE_PERSONAL_PAGER_A: u32 = 2355626014u32;
37877pub const PR_EMS_AB_TELEPHONE_PERSONAL_PAGER_W: u32 = 2355626015u32;
37878pub const PR_EMS_AB_TELETEX_TERMINAL_IDENTIFIER: u32 = 2168656130u32;
37879pub const PR_EMS_AB_TEMP_ASSOC_THRESHOLD: u32 = 2168717315u32;
37880pub const PR_EMS_AB_TOMBSTONE_LIFETIME: u32 = 2168782851u32;
37881pub const PR_EMS_AB_TRACKING_LOG_PATH_NAME: u32 = 2168848414u32;
37882pub const PR_EMS_AB_TRACKING_LOG_PATH_NAME_A: u32 = 2168848414u32;
37883pub const PR_EMS_AB_TRACKING_LOG_PATH_NAME_W: u32 = 2168848415u32;
37884pub const PR_EMS_AB_TRANSFER_RETRY_INTERVAL: u32 = 2169044995u32;
37885pub const PR_EMS_AB_TRANSFER_TIMEOUT_NON_URGENT: u32 = 2169110531u32;
37886pub const PR_EMS_AB_TRANSFER_TIMEOUT_NORMAL: u32 = 2169176067u32;
37887pub const PR_EMS_AB_TRANSFER_TIMEOUT_URGENT: u32 = 2169241603u32;
37888pub const PR_EMS_AB_TRANSLATION_TABLE_USED: u32 = 2169307139u32;
37889pub const PR_EMS_AB_TRANSPORT_EXPEDITED_DATA: u32 = 2169372683u32;
37890pub const PR_EMS_AB_TRANS_RETRY_MINS: u32 = 2168913923u32;
37891pub const PR_EMS_AB_TRANS_TIMEOUT_MINS: u32 = 2168979459u32;
37892pub const PR_EMS_AB_TRUST_LEVEL: u32 = 2169438211u32;
37893pub const PR_EMS_AB_TURN_REQUEST_THRESHOLD: u32 = 2169503747u32;
37894pub const PR_EMS_AB_TWO_WAY_ALTERNATE_FACILITY: u32 = 2169569291u32;
37895pub const PR_EMS_AB_TYPE: u32 = 2352480286u32;
37896pub const PR_EMS_AB_TYPE_A: u32 = 2352480286u32;
37897pub const PR_EMS_AB_TYPE_W: u32 = 2352480287u32;
37898pub const PR_EMS_AB_T_SELECTOR: u32 = 2168455426u32;
37899pub const PR_EMS_AB_T_SELECTOR_INBOUND: u32 = 2168520962u32;
37900pub const PR_EMS_AB_UNAUTH_ORIG_BL: u32 = 2169638942u32;
37901pub const PR_EMS_AB_UNAUTH_ORIG_BL_A: u32 = 2169638942u32;
37902pub const PR_EMS_AB_UNAUTH_ORIG_BL_O: u32 = 2169634829u32;
37903pub const PR_EMS_AB_UNAUTH_ORIG_BL_T: u32 = 2169638942u32;
37904pub const PR_EMS_AB_UNAUTH_ORIG_BL_W: u32 = 2169638943u32;
37905pub const PR_EMS_AB_UNMERGED_ATTRIBUTES: u32 = 2356089090u32;
37906pub const PR_EMS_AB_USENET_SITE_NAME: u32 = 2173239326u32;
37907pub const PR_EMS_AB_USENET_SITE_NAME_A: u32 = 2173239326u32;
37908pub const PR_EMS_AB_USENET_SITE_NAME_W: u32 = 2173239327u32;
37909pub const PR_EMS_AB_USER_PASSWORD: u32 = 2169704706u32;
37910pub const PR_EMS_AB_USE_SERVER_VALUES: u32 = 2172518411u32;
37911pub const PR_EMS_AB_USE_SITE_VALUES: u32 = 2172846091u32;
37912pub const PR_EMS_AB_USN_CHANGED: u32 = 2150170627u32;
37913pub const PR_EMS_AB_USN_CREATED: u32 = 2169765891u32;
37914pub const PR_EMS_AB_USN_DSA_LAST_OBJ_REMOVED: u32 = 2169831427u32;
37915pub const PR_EMS_AB_USN_INTERSITE: u32 = 2172256259u32;
37916pub const PR_EMS_AB_USN_LAST_OBJ_REM: u32 = 2169896963u32;
37917pub const PR_EMS_AB_USN_SOURCE: u32 = 2169962499u32;
37918pub const PR_EMS_AB_VIEW_CONTAINER_1: u32 = 2176778270u32;
37919pub const PR_EMS_AB_VIEW_CONTAINER_1_A: u32 = 2176778270u32;
37920pub const PR_EMS_AB_VIEW_CONTAINER_1_W: u32 = 2176778271u32;
37921pub const PR_EMS_AB_VIEW_CONTAINER_2: u32 = 2176843806u32;
37922pub const PR_EMS_AB_VIEW_CONTAINER_2_A: u32 = 2176843806u32;
37923pub const PR_EMS_AB_VIEW_CONTAINER_2_W: u32 = 2176843807u32;
37924pub const PR_EMS_AB_VIEW_CONTAINER_3: u32 = 2176909342u32;
37925pub const PR_EMS_AB_VIEW_CONTAINER_3_A: u32 = 2176909342u32;
37926pub const PR_EMS_AB_VIEW_CONTAINER_3_W: u32 = 2176909343u32;
37927pub const PR_EMS_AB_VIEW_DEFINITION: u32 = 2350584066u32;
37928pub const PR_EMS_AB_VIEW_FLAGS: u32 = 2350383107u32;
37929pub const PR_EMS_AB_VIEW_SITE: u32 = 2176712734u32;
37930pub const PR_EMS_AB_VIEW_SITE_A: u32 = 2176712734u32;
37931pub const PR_EMS_AB_VIEW_SITE_W: u32 = 2176712735u32;
37932pub const PR_EMS_AB_VOICE_MAIL_FLAGS: u32 = 2353008898u32;
37933pub const PR_EMS_AB_VOICE_MAIL_GREETINGS: u32 = 2352943134u32;
37934pub const PR_EMS_AB_VOICE_MAIL_GREETINGS_A: u32 = 2352943134u32;
37935pub const PR_EMS_AB_VOICE_MAIL_GREETINGS_W: u32 = 2352943135u32;
37936pub const PR_EMS_AB_VOICE_MAIL_PASSWORD: u32 = 2352807966u32;
37937pub const PR_EMS_AB_VOICE_MAIL_PASSWORD_A: u32 = 2352807966u32;
37938pub const PR_EMS_AB_VOICE_MAIL_PASSWORD_W: u32 = 2352807967u32;
37939pub const PR_EMS_AB_VOICE_MAIL_RECORDED_NAME: u32 = 2352873730u32;
37940pub const PR_EMS_AB_VOICE_MAIL_RECORDING_LENGTH: u32 = 2353205251u32;
37941pub const PR_EMS_AB_VOICE_MAIL_SPEED: u32 = 2353135619u32;
37942pub const PR_EMS_AB_VOICE_MAIL_SYSTEM_GUID: u32 = 2352677122u32;
37943pub const PR_EMS_AB_VOICE_MAIL_USER_ID: u32 = 2352742430u32;
37944pub const PR_EMS_AB_VOICE_MAIL_USER_ID_A: u32 = 2352742430u32;
37945pub const PR_EMS_AB_VOICE_MAIL_USER_ID_W: u32 = 2352742431u32;
37946pub const PR_EMS_AB_VOICE_MAIL_VOLUME: u32 = 2353070083u32;
37947pub const PR_EMS_AB_WWW_HOME_PAGE: u32 = 2171928606u32;
37948pub const PR_EMS_AB_WWW_HOME_PAGE_A: u32 = 2171928606u32;
37949pub const PR_EMS_AB_WWW_HOME_PAGE_W: u32 = 2171928607u32;
37950pub const PR_EMS_AB_X121_ADDRESS: u32 = 2170032158u32;
37951pub const PR_EMS_AB_X121_ADDRESS_A: u32 = 2170032158u32;
37952pub const PR_EMS_AB_X121_ADDRESS_W: u32 = 2170032159u32;
37953pub const PR_EMS_AB_X25_CALL_USER_DATA_INCOMING: u32 = 2170093826u32;
37954pub const PR_EMS_AB_X25_CALL_USER_DATA_OUTGOING: u32 = 2170159362u32;
37955pub const PR_EMS_AB_X25_FACILITIES_DATA_INCOMING: u32 = 2170224898u32;
37956pub const PR_EMS_AB_X25_FACILITIES_DATA_OUTGOING: u32 = 2170290434u32;
37957pub const PR_EMS_AB_X25_LEASED_LINE_PORT: u32 = 2170355970u32;
37958pub const PR_EMS_AB_X25_LEASED_OR_SWITCHED: u32 = 2170421259u32;
37959pub const PR_EMS_AB_X25_REMOTE_MTA_PHONE: u32 = 2170486814u32;
37960pub const PR_EMS_AB_X25_REMOTE_MTA_PHONE_A: u32 = 2170486814u32;
37961pub const PR_EMS_AB_X25_REMOTE_MTA_PHONE_W: u32 = 2170486815u32;
37962pub const PR_EMS_AB_X400_ATTACHMENT_TYPE: u32 = 2170552578u32;
37963pub const PR_EMS_AB_X400_SELECTOR_SYNTAX: u32 = 2170617859u32;
37964pub const PR_EMS_AB_X500_ACCESS_CONTROL_LIST: u32 = 2170683650u32;
37965pub const PR_EMS_AB_X500_NC: u32 = 2174877726u32;
37966pub const PR_EMS_AB_X500_NC_A: u32 = 2174877726u32;
37967pub const PR_EMS_AB_X500_NC_W: u32 = 2174877727u32;
37968pub const PR_EMS_AB_X500_RDN: u32 = 2174812190u32;
37969pub const PR_EMS_AB_X500_RDN_A: u32 = 2174812190u32;
37970pub const PR_EMS_AB_X500_RDN_W: u32 = 2174812191u32;
37971pub const PR_EMS_AB_X509_CERT: u32 = 2355761410u32;
37972pub const PR_EMS_AB_XMIT_TIMEOUT_NON_URGENT: u32 = 2170748931u32;
37973pub const PR_EMS_AB_XMIT_TIMEOUT_NORMAL: u32 = 2170814467u32;
37974pub const PR_EMS_AB_XMIT_TIMEOUT_URGENT: u32 = 2170880003u32;
37975pub const PR_END_DATE: u32 = 6357056u32;
37976pub const PR_ENTRYID: u32 = 268370178u32;
37977pub const PR_EVENTS_ROOT_FOLDER_ENTRYID: u32 = 1719271682u32;
37978pub const PR_EXCESS_STORAGE_USED: u32 = 1073086467u32;
37979pub const PR_EXPIRY_NUMBER: u32 = 1072496643u32;
37980pub const PR_EXPIRY_TIME: u32 = 1376320u32;
37981pub const PR_EXPIRY_UNITS: u32 = 1072562179u32;
37982pub const PR_EXPLICIT_CONVERSION: u32 = 201392131u32;
37983pub const PR_EXTENDED_ACL_DATA: u32 = 1073611010u32;
37984pub const PR_EXTENDED_RULE_ACTIONS: u32 = 244908290u32;
37985pub const PR_EXTENDED_RULE_CONDITION: u32 = 244973826u32;
37986pub const PR_EXTENDED_RULE_MSG_ACTIONS: u32 = 244908290u32;
37987pub const PR_EXTENDED_RULE_MSG_CONDITION: u32 = 244973826u32;
37988pub const PR_EXTENDED_RULE_SIZE_LIMIT: u32 = 245039107u32;
37989pub const PR_FAST_TRANSFER: u32 = 1714356237u32;
37990pub const PR_FAVORITES_DEFAULT_NAME: u32 = 1714749470u32;
37991pub const PR_FAVORITES_DEFAULT_NAME_W: u32 = 1714749471u32;
37992pub const PR_FID_VID: u32 = 1716257026u32;
37993pub const PR_FILE_SIZE: u32 = 1732706307u32;
37994pub const PR_FILE_SIZE_EXTENDED: u32 = 1732706324u32;
37995pub const PR_FILTERING_HOOKS: u32 = 1023934722u32;
37996pub const PR_FINDER_ENTRYID: u32 = 904331522u32;
37997pub const PR_FLAG_STATUS: u32 = 277872643u32;
37998pub const PR_FLAT_URL_NAME: u32 = 1728970782u32;
37999pub const PR_FLAT_URL_NAME_A: u32 = 1728970782u32;
38000pub const PR_FLAT_URL_NAME_W: u32 = 1728970783u32;
38001pub const PR_FOLDER_ASSOCIATED_CONTENTS: u32 = 907018253u32;
38002pub const PR_FOLDER_CHILD_COUNT: u32 = 1714946051u32;
38003pub const PR_FOLDER_DESIGN_FLAGS: u32 = 1071775747u32;
38004pub const PR_FOLDER_FLAGS: u32 = 1722286083u32;
38005pub const PR_FOLDER_PATHNAME: u32 = 1723138078u32;
38006pub const PR_FOLDER_PATHNAME_A: u32 = 1723138078u32;
38007pub const PR_FOLDER_PATHNAME_W: u32 = 1723138079u32;
38008pub const PR_FOLDER_TYPE: u32 = 906035203u32;
38009pub const PR_FORCE_CLIENT_REFRESH: u32 = 1705050123u32;
38010pub const PR_FOREIGN_ID: u32 = 1718026498u32;
38011pub const PR_FOREIGN_REPORT_ID: u32 = 1718092034u32;
38012pub const PR_FOREIGN_SUBJECT_ID: u32 = 1718157570u32;
38013pub const PR_FORM_CATEGORY: u32 = 855900190u32;
38014pub const PR_FORM_CATEGORY_A: u32 = 855900190u32;
38015pub const PR_FORM_CATEGORY_SUB: u32 = 855965726u32;
38016pub const PR_FORM_CATEGORY_SUB_A: u32 = 855965726u32;
38017pub const PR_FORM_CATEGORY_SUB_W: u32 = 855965727u32;
38018pub const PR_FORM_CATEGORY_W: u32 = 855900191u32;
38019pub const PR_FORM_CLSID: u32 = 855769160u32;
38020pub const PR_FORM_CONTACT_NAME: u32 = 855834654u32;
38021pub const PR_FORM_CONTACT_NAME_A: u32 = 855834654u32;
38022pub const PR_FORM_CONTACT_NAME_W: u32 = 855834655u32;
38023pub const PR_FORM_DESIGNER_GUID: u32 = 856227912u32;
38024pub const PR_FORM_DESIGNER_NAME: u32 = 856162334u32;
38025pub const PR_FORM_DESIGNER_NAME_A: u32 = 856162334u32;
38026pub const PR_FORM_DESIGNER_NAME_W: u32 = 856162335u32;
38027pub const PR_FORM_HIDDEN: u32 = 856096779u32;
38028pub const PR_FORM_HOST_MAP: u32 = 856035331u32;
38029pub const PR_FORM_MESSAGE_BEHAVIOR: u32 = 856293379u32;
38030pub const PR_FORM_VERSION: u32 = 855703582u32;
38031pub const PR_FORM_VERSION_A: u32 = 855703582u32;
38032pub const PR_FORM_VERSION_W: u32 = 855703583u32;
38033pub const PR_FREE_BUSY_FOR_LOCAL_SITE_ENTRYID: u32 = 1713701122u32;
38034pub const PR_FTP_SITE: u32 = 978059294u32;
38035pub const PR_FTP_SITE_A: u32 = 978059294u32;
38036pub const PR_FTP_SITE_W: u32 = 978059295u32;
38037pub const PR_GENDER: u32 = 978124802u32;
38038pub const PR_GENERATION: u32 = 973406238u32;
38039pub const PR_GENERATION_A: u32 = 973406238u32;
38040pub const PR_GENERATION_W: u32 = 973406239u32;
38041pub const PR_GET_PROPS_EXCLUDE_PROP_ID_LIST: u32 = 1719533826u32;
38042pub const PR_GIVEN_NAME: u32 = 973471774u32;
38043pub const PR_GIVEN_NAME_A: u32 = 973471774u32;
38044pub const PR_GIVEN_NAME_W: u32 = 973471775u32;
38045pub const PR_GOVERNMENT_ID_NUMBER: u32 = 973537310u32;
38046pub const PR_GOVERNMENT_ID_NUMBER_A: u32 = 973537310u32;
38047pub const PR_GOVERNMENT_ID_NUMBER_W: u32 = 973537311u32;
38048pub const PR_GW_ADMIN_OPERATIONS: u32 = 1717043203u32;
38049pub const PR_GW_MTSIN_ENTRYID: u32 = 1713897730u32;
38050pub const PR_GW_MTSOUT_ENTRYID: u32 = 1713963266u32;
38051pub const PR_HASATTACH: u32 = 236650507u32;
38052pub const PR_HAS_DAMS: u32 = 1072300043u32;
38053pub const PR_HAS_MODERATOR_RULES: u32 = 1715404811u32;
38054pub const PR_HAS_NAMED_PROPERTIES: u32 = 1716125707u32;
38055pub const PR_HAS_RULES: u32 = 1715077131u32;
38056pub const PR_HEADER_FOLDER_ENTRYID: u32 = 1040843010u32;
38057pub const PR_HIERARCHY_CHANGE_NUM: u32 = 1715339267u32;
38058pub const PR_HIERARCHY_SERVER: u32 = 1714618398u32;
38059pub const PR_HIERARCHY_SYNCHRONIZER: u32 = 1714159629u32;
38060pub const PR_HOBBIES: u32 = 977469470u32;
38061pub const PR_HOBBIES_A: u32 = 977469470u32;
38062pub const PR_HOBBIES_W: u32 = 977469471u32;
38063pub const PR_HOME2_TELEPHONE_NUMBER: u32 = 976158750u32;
38064pub const PR_HOME2_TELEPHONE_NUMBER_A: u32 = 976158750u32;
38065pub const PR_HOME2_TELEPHONE_NUMBER_W: u32 = 976158751u32;
38066pub const PR_HOME_ADDRESS_CITY: u32 = 978911262u32;
38067pub const PR_HOME_ADDRESS_CITY_A: u32 = 978911262u32;
38068pub const PR_HOME_ADDRESS_CITY_W: u32 = 978911263u32;
38069pub const PR_HOME_ADDRESS_COUNTRY: u32 = 978976798u32;
38070pub const PR_HOME_ADDRESS_COUNTRY_A: u32 = 978976798u32;
38071pub const PR_HOME_ADDRESS_COUNTRY_W: u32 = 978976799u32;
38072pub const PR_HOME_ADDRESS_POSTAL_CODE: u32 = 979042334u32;
38073pub const PR_HOME_ADDRESS_POSTAL_CODE_A: u32 = 979042334u32;
38074pub const PR_HOME_ADDRESS_POSTAL_CODE_W: u32 = 979042335u32;
38075pub const PR_HOME_ADDRESS_POST_OFFICE_BOX: u32 = 979238942u32;
38076pub const PR_HOME_ADDRESS_POST_OFFICE_BOX_A: u32 = 979238942u32;
38077pub const PR_HOME_ADDRESS_POST_OFFICE_BOX_W: u32 = 979238943u32;
38078pub const PR_HOME_ADDRESS_STATE_OR_PROVINCE: u32 = 979107870u32;
38079pub const PR_HOME_ADDRESS_STATE_OR_PROVINCE_A: u32 = 979107870u32;
38080pub const PR_HOME_ADDRESS_STATE_OR_PROVINCE_W: u32 = 979107871u32;
38081pub const PR_HOME_ADDRESS_STREET: u32 = 979173406u32;
38082pub const PR_HOME_ADDRESS_STREET_A: u32 = 979173406u32;
38083pub const PR_HOME_ADDRESS_STREET_W: u32 = 979173407u32;
38084pub const PR_HOME_FAX_NUMBER: u32 = 975503390u32;
38085pub const PR_HOME_FAX_NUMBER_A: u32 = 975503390u32;
38086pub const PR_HOME_FAX_NUMBER_W: u32 = 975503391u32;
38087pub const PR_HOME_TELEPHONE_NUMBER: u32 = 973668382u32;
38088pub const PR_HOME_TELEPHONE_NUMBER_A: u32 = 973668382u32;
38089pub const PR_HOME_TELEPHONE_NUMBER_W: u32 = 973668383u32;
38090pub const PR_HTML: u32 = 269680898u32;
38091pub const PR_ICON: u32 = 268239106u32;
38092pub const PR_ICON_INDEX: u32 = 276824067u32;
38093pub const PR_ICS_CHANGE_KEY: u32 = 1716846850u32;
38094pub const PR_IDENTITY_DISPLAY: u32 = 1040187422u32;
38095pub const PR_IDENTITY_DISPLAY_A: u32 = 1040187422u32;
38096pub const PR_IDENTITY_DISPLAY_W: u32 = 1040187423u32;
38097pub const PR_IDENTITY_ENTRYID: u32 = 1040253186u32;
38098pub const PR_IDENTITY_SEARCH_KEY: u32 = 1040515330u32;
38099pub const PR_IMAP_INTERNAL_DATE: u32 = 1710555200u32;
38100pub const PR_IMPLICIT_CONVERSION_PROHIBITED: u32 = 1441803u32;
38101pub const PR_IMPLIED_RESTRICTIONS: u32 = 1719603458u32;
38102pub const PR_IMPORTANCE: u32 = 1507331u32;
38103pub const PR_INBOUND_NEWSFEED_DN: u32 = 1720516638u32;
38104pub const PR_INCOMPLETE_COPY: u32 = 3473419u32;
38105pub const PR_INITIALS: u32 = 973733918u32;
38106pub const PR_INITIALS_A: u32 = 973733918u32;
38107pub const PR_INITIALS_W: u32 = 973733919u32;
38108pub const PR_INITIAL_DETAILS_PANE: u32 = 1057488899u32;
38109pub const PR_INSTANCE_KEY: u32 = 267780354u32;
38110pub const PR_INTERNAL_TRACE_INFO: u32 = 1718223106u32;
38111pub const PR_INTERNET_CHARSET: u32 = 1721368606u32;
38112pub const PR_INTERNET_CONTENT: u32 = 1717108994u32;
38113pub const PR_INTERNET_CONTENT_EA: u32 = 1717108996u32;
38114pub const PR_INTERNET_CONTENT_HANDLE: u32 = 1717108995u32;
38115pub const PR_INTERNET_CPID: u32 = 1071513603u32;
38116pub const PR_INTERNET_MDNS: u32 = 1722089483u32;
38117pub const PR_INTERNET_MESSAGE_ID: u32 = 271908894u32;
38118pub const PR_INTERNET_MESSAGE_ID_A: u32 = 271908894u32;
38119pub const PR_INTERNET_MESSAGE_ID_W: u32 = 271908895u32;
38120pub const PR_INTERNET_NEWSGROUP_NAME: u32 = 1722220574u32;
38121pub const PR_INTERNET_NEWSGROUP_NAME_A: u32 = 1722220574u32;
38122pub const PR_INTERNET_NEWSGROUP_NAME_W: u32 = 1722220575u32;
38123pub const PR_INTERNET_REFERENCES: u32 = 272171038u32;
38124pub const PR_INTERNET_REFERENCES_A: u32 = 272171038u32;
38125pub const PR_INTERNET_REFERENCES_W: u32 = 272171039u32;
38126pub const PR_IN_CONFLICT: u32 = 1718353931u32;
38127pub const PR_IN_REPLY_TO: u32 = 272760862u32;
38128pub const PR_IN_REPLY_TO_A: u32 = 272760862u32;
38129pub const PR_IN_REPLY_TO_W: u32 = 272760863u32;
38130pub const PR_IN_TRANSIT: u32 = 1712848907u32;
38131pub const PR_IPM_APPOINTMENT_ENTRYID: u32 = 919601410u32;
38132pub const PR_IPM_ARCHIVE_ENTRYID: u32 = 905904386u32;
38133pub const PR_IPM_CONTACT_ENTRYID: u32 = 919666946u32;
38134pub const PR_IPM_DAF_ENTRYID: u32 = 1713307906u32;
38135pub const PR_IPM_DRAFTS_ENTRYID: u32 = 920060162u32;
38136pub const PR_IPM_FAVORITES_ENTRYID: u32 = 1714422018u32;
38137pub const PR_IPM_ID: u32 = 1573122u32;
38138pub const PR_IPM_OUTBOX_ENTRYID: u32 = 904003842u32;
38139pub const PR_IPM_OUTBOX_SEARCH_KEY: u32 = 873529602u32;
38140pub const PR_IPM_PUBLIC_FOLDERS_ENTRYID: u32 = 1714487554u32;
38141pub const PR_IPM_RETURN_REQUESTED: u32 = 201457675u32;
38142pub const PR_IPM_SENTMAIL_ENTRYID: u32 = 904134914u32;
38143pub const PR_IPM_SENTMAIL_SEARCH_KEY: u32 = 873660674u32;
38144pub const PR_IPM_SUBTREE_ENTRYID: u32 = 903872770u32;
38145pub const PR_IPM_SUBTREE_SEARCH_KEY: u32 = 873464066u32;
38146pub const PR_IPM_TASK_ENTRYID: u32 = 919863554u32;
38147pub const PR_IPM_WASTEBASKET_ENTRYID: u32 = 904069378u32;
38148pub const PR_IPM_WASTEBASKET_SEARCH_KEY: u32 = 873595138u32;
38149pub const PR_ISDN_NUMBER: u32 = 976027678u32;
38150pub const PR_ISDN_NUMBER_A: u32 = 976027678u32;
38151pub const PR_ISDN_NUMBER_W: u32 = 976027679u32;
38152pub const PR_IS_NEWSGROUP: u32 = 1721171979u32;
38153pub const PR_IS_NEWSGROUP_ANCHOR: u32 = 1721106443u32;
38154pub const PR_ITEM_LEVEL_ACL: u32 = 1025769483u32;
38155pub const PR_KEYWORD: u32 = 973799454u32;
38156pub const PR_KEYWORD_A: u32 = 973799454u32;
38157pub const PR_KEYWORD_W: u32 = 973799455u32;
38158pub const PR_LANGUAGE: u32 = 973864990u32;
38159pub const PR_LANGUAGES: u32 = 3080222u32;
38160pub const PR_LANGUAGES_A: u32 = 3080222u32;
38161pub const PR_LANGUAGES_W: u32 = 3080223u32;
38162pub const PR_LANGUAGE_A: u32 = 973864990u32;
38163pub const PR_LANGUAGE_W: u32 = 973864991u32;
38164pub const PR_LAST_ACCESS_TIME: u32 = 1722351680u32;
38165pub const PR_LAST_FULL_BACKUP: u32 = 1719992384u32;
38166pub const PR_LAST_LOGOFF_TIME: u32 = 1721958464u32;
38167pub const PR_LAST_LOGON_TIME: u32 = 1721892928u32;
38168pub const PR_LAST_MODIFICATION_TIME: u32 = 805830720u32;
38169pub const PR_LAST_MODIFIER_ENTRYID: u32 = 1073414402u32;
38170pub const PR_LAST_MODIFIER_NAME: u32 = 1073348638u32;
38171pub const PR_LAST_MODIFIER_NAME_A: u32 = 1073348638u32;
38172pub const PR_LAST_MODIFIER_NAME_W: u32 = 1073348639u32;
38173pub const PR_LAST_MODIFIER_SID: u32 = 240713986u32;
38174pub const PR_LAST_MODIFIER_SID_AS_XML: u32 = 242024478u32;
38175pub const PR_LATEST_DELIVERY_TIME: u32 = 1638464u32;
38176pub const PR_LOCALE_ID: u32 = 1721827331u32;
38177pub const PR_LOCALITY: u32 = 975634462u32;
38178pub const PR_LOCALITY_A: u32 = 975634462u32;
38179pub const PR_LOCALITY_W: u32 = 975634463u32;
38180pub const PR_LOCAL_COMMIT_TIME: u32 = 1728643136u32;
38181pub const PR_LOCAL_COMMIT_TIME_MAX: u32 = 1728708672u32;
38182pub const PR_LOCATION: u32 = 973930526u32;
38183pub const PR_LOCATION_A: u32 = 973930526u32;
38184pub const PR_LOCATION_W: u32 = 973930527u32;
38185pub const PR_LOCK_BRANCH_ID: u32 = 939524116u32;
38186pub const PR_LOCK_DEPTH: u32 = 940048387u32;
38187pub const PR_LOCK_ENLISTMENT_CONTEXT: u32 = 939786498u32;
38188pub const PR_LOCK_EXPIRY_TIME: u32 = 940179520u32;
38189pub const PR_LOCK_GLID: u32 = 940245250u32;
38190pub const PR_LOCK_NULL_URL_W: u32 = 940310559u32;
38191pub const PR_LOCK_RESOURCE_DID: u32 = 939655188u32;
38192pub const PR_LOCK_RESOURCE_FID: u32 = 939589652u32;
38193pub const PR_LOCK_RESOURCE_VID: u32 = 939720724u32;
38194pub const PR_LOCK_SCOPE: u32 = 939917314u32;
38195pub const PR_LOCK_TIMEOUT: u32 = 940113923u32;
38196pub const PR_LOCK_TRANSIENT_ID: u32 = 939983106u32;
38197pub const PR_LOCK_TYPE: u32 = 939851778u32;
38198pub const PR_LONGTERM_ENTRYID_FROM_TABLE: u32 = 1718616322u32;
38199pub const PR_MAILBOX_OWNER_ENTRYID: u32 = 1713045762u32;
38200pub const PR_MAILBOX_OWNER_NAME: u32 = 1713111070u32;
38201pub const PR_MAILBOX_OWNER_NAME_A: u32 = 1713111070u32;
38202pub const PR_MAILBOX_OWNER_NAME_W: u32 = 1713111071u32;
38203pub const PR_MAIL_PERMISSION: u32 = 973996043u32;
38204pub const PR_MANAGER_NAME: u32 = 978190366u32;
38205pub const PR_MANAGER_NAME_A: u32 = 978190366u32;
38206pub const PR_MANAGER_NAME_W: u32 = 978190367u32;
38207pub const PR_MAPPING_SIGNATURE: u32 = 267911426u32;
38208pub const PR_MAX_CACHED_VIEWS: u32 = 241696771u32;
38209pub const PR_MAX_INDICES: u32 = 241041411u32;
38210pub const PR_MAX_SUBMIT_MESSAGE_SIZE: u32 = 1718419459u32;
38211pub const PR_MDB_PROVIDER: u32 = 873726210u32;
38212pub const PR_MEMBER_ID: u32 = 1718681620u32;
38213pub const PR_MEMBER_NAME: u32 = 1718747166u32;
38214pub const PR_MEMBER_NAME_A: u32 = 1718747166u32;
38215pub const PR_MEMBER_NAME_W: u32 = 1718747167u32;
38216pub const PR_MEMBER_RIGHTS: u32 = 1718812675u32;
38217pub const PR_MERGE_MIDSET_DELETED: u32 = 242876674u32;
38218pub const PR_MESSAGE_ATTACHMENTS: u32 = 236126221u32;
38219pub const PR_MESSAGE_CC_ME: u32 = 5767179u32;
38220pub const PR_MESSAGE_CLASS: u32 = 1703966u32;
38221pub const PR_MESSAGE_CLASS_A: u32 = 1703966u32;
38222pub const PR_MESSAGE_CLASS_W: u32 = 1703967u32;
38223pub const PR_MESSAGE_CODEPAGE: u32 = 1073545219u32;
38224pub const PR_MESSAGE_DELIVERY_ID: u32 = 1769730u32;
38225pub const PR_MESSAGE_DELIVERY_TIME: u32 = 235274304u32;
38226pub const PR_MESSAGE_DOWNLOAD_TIME: u32 = 236453891u32;
38227pub const PR_MESSAGE_FLAGS: u32 = 235339779u32;
38228pub const PR_MESSAGE_LOCALE_ID: u32 = 1072758787u32;
38229pub const PR_MESSAGE_PROCESSED: u32 = 1709703179u32;
38230pub const PR_MESSAGE_RECIPIENTS: u32 = 236060685u32;
38231pub const PR_MESSAGE_RECIP_ME: u32 = 5832715u32;
38232pub const PR_MESSAGE_SECURITY_LABEL: u32 = 1966338u32;
38233pub const PR_MESSAGE_SITE_NAME: u32 = 1709637662u32;
38234pub const PR_MESSAGE_SITE_NAME_A: u32 = 1709637662u32;
38235pub const PR_MESSAGE_SITE_NAME_W: u32 = 1709637663u32;
38236pub const PR_MESSAGE_SIZE: u32 = 235405315u32;
38237pub const PR_MESSAGE_SIZE_EXTENDED: u32 = 235405332u32;
38238pub const PR_MESSAGE_SUBMISSION_ID: u32 = 4653314u32;
38239pub const PR_MESSAGE_TOKEN: u32 = 201523458u32;
38240pub const PR_MESSAGE_TO_ME: u32 = 5701643u32;
38241pub const PR_MHS_COMMON_NAME: u32 = 974061598u32;
38242pub const PR_MHS_COMMON_NAME_A: u32 = 974061598u32;
38243pub const PR_MHS_COMMON_NAME_W: u32 = 974061599u32;
38244pub const PR_MIDDLE_NAME: u32 = 977535006u32;
38245pub const PR_MIDDLE_NAME_A: u32 = 977535006u32;
38246pub const PR_MIDDLE_NAME_W: u32 = 977535007u32;
38247pub const PR_MIME_SIZE: u32 = 1732640771u32;
38248pub const PR_MIME_SIZE_EXTENDED: u32 = 1732640788u32;
38249pub const PR_MINI_ICON: u32 = 268173570u32;
38250pub const PR_MOBILE_TELEPHONE_NUMBER: u32 = 974913566u32;
38251pub const PR_MOBILE_TELEPHONE_NUMBER_A: u32 = 974913566u32;
38252pub const PR_MOBILE_TELEPHONE_NUMBER_W: u32 = 974913567u32;
38253pub const PR_MODIFY_VERSION: u32 = 236584980u32;
38254pub const PR_MOVE_TO_FOLDER_ENTRYID: u32 = 1072955650u32;
38255pub const PR_MOVE_TO_STORE_ENTRYID: u32 = 1072890114u32;
38256pub const PR_MSG_BODY_ID: u32 = 1071448067u32;
38257pub const PR_MSG_EDITOR_FORMAT: u32 = 1493762051u32;
38258pub const PR_MSG_FOLD_TIME: u32 = 1716781120u32;
38259pub const PR_MSG_STATUS: u32 = 236388355u32;
38260pub const PR_MTS_SUBJECT_ID: u32 = 1717764354u32;
38261pub const PR_NATIVE_BODY_INFO: u32 = 269877251u32;
38262pub const PR_NDR_DIAG_CODE: u32 = 201654275u32;
38263pub const PR_NDR_REASON_CODE: u32 = 201588739u32;
38264pub const PR_NEWSFEED_INFO: u32 = 1722155266u32;
38265pub const PR_NEWSGROUP_COMPONENT: u32 = 1722089502u32;
38266pub const PR_NEWSGROUP_ROOT_FOLDER_ENTRYID: u32 = 1720451330u32;
38267pub const PR_NEW_SUBS_GET_AUTO_ADD: u32 = 1709572107u32;
38268pub const PR_NEXT_SEND_ACCT: u32 = 237568031u32;
38269pub const PR_NICKNAME: u32 = 978255902u32;
38270pub const PR_NICKNAME_A: u32 = 978255902u32;
38271pub const PR_NICKNAME_W: u32 = 978255903u32;
38272pub const PR_NNTP_ARTICLE_FOLDER_ENTRYID: u32 = 1720320258u32;
38273pub const PR_NNTP_CONTROL_FOLDER_ENTRYID: u32 = 1720385794u32;
38274pub const PR_NON_IPM_SUBTREE_ENTRYID: u32 = 1713373442u32;
38275pub const PR_NON_RECEIPT_NOTIFICATION_REQUESTED: u32 = 201719819u32;
38276pub const PR_NON_RECEIPT_REASON: u32 = 4063235u32;
38277pub const PR_NON_WIN32_ACL: u32 = 1025703947u32;
38278pub const PR_NON_XMT_SECURITY_ROLE_1: u32 = 243007746u32;
38279pub const PR_NON_XMT_SECURITY_ROLE_1_AS_XML: u32 = 243007518u32;
38280pub const PR_NON_XMT_SECURITY_ROLE_2: u32 = 243073282u32;
38281pub const PR_NON_XMT_SECURITY_ROLE_2_AS_XML: u32 = 243073054u32;
38282pub const PR_NON_XMT_SECURITY_ROLE_3: u32 = 243138818u32;
38283pub const PR_NON_XMT_SECURITY_ROLE_3_AS_XML: u32 = 243138590u32;
38284pub const PR_NON_XMT_SECURITY_ROLE_4: u32 = 243204354u32;
38285pub const PR_NON_XMT_SECURITY_ROLE_4_AS_XML: u32 = 243204126u32;
38286pub const PR_NON_XMT_SECURITY_ROLE_5: u32 = 243269890u32;
38287pub const PR_NON_XMT_SECURITY_ROLE_5_AS_XML: u32 = 243269662u32;
38288pub const PR_NON_XMT_SECURITY_ROLE_6: u32 = 243335426u32;
38289pub const PR_NON_XMT_SECURITY_ROLE_6_AS_XML: u32 = 243335198u32;
38290pub const PR_NON_XMT_SECURITY_ROLE_7: u32 = 243400962u32;
38291pub const PR_NON_XMT_SECURITY_ROLE_7_AS_XML: u32 = 243400734u32;
38292pub const PR_NON_XMT_SECURITY_ROLE_8: u32 = 243466498u32;
38293pub const PR_NON_XMT_SECURITY_ROLE_8_AS_XML: u32 = 243466270u32;
38294pub const PR_NORMALIZED_SUBJECT: u32 = 236781598u32;
38295pub const PR_NORMALIZED_SUBJECT_A: u32 = 236781598u32;
38296pub const PR_NORMALIZED_SUBJECT_W: u32 = 236781599u32;
38297pub const PR_NORMAL_MESSAGE_SIZE: u32 = 1723006979u32;
38298pub const PR_NORMAL_MESSAGE_SIZE_EXTENDED: u32 = 1723006996u32;
38299pub const PR_NORMAL_MSG_W_ATTACH_COUNT: u32 = 1722613763u32;
38300pub const PR_NT_SECURITY_DESCRIPTOR_AS_XML: u32 = 241827870u32;
38301pub const PR_NT_SECURITY_DESCRIPTOR_AS_XML_A: u32 = 241827870u32;
38302pub const PR_NT_SECURITY_DESCRIPTOR_AS_XML_W: u32 = 241827871u32;
38303pub const PR_NT_USER_NAME: u32 = 1721761822u32;
38304pub const PR_NULL: u32 = 1u32;
38305pub const PR_OBJECT_TYPE: u32 = 268304387u32;
38306pub const PR_OBSOLETED_IPMS: u32 = 2031874u32;
38307pub const PR_OFFICE2_TELEPHONE_NUMBER: u32 = 974848030u32;
38308pub const PR_OFFICE2_TELEPHONE_NUMBER_A: u32 = 974848030u32;
38309pub const PR_OFFICE2_TELEPHONE_NUMBER_W: u32 = 974848031u32;
38310pub const PR_OFFICE_LOCATION: u32 = 974716958u32;
38311pub const PR_OFFICE_LOCATION_A: u32 = 974716958u32;
38312pub const PR_OFFICE_LOCATION_W: u32 = 974716959u32;
38313pub const PR_OFFICE_TELEPHONE_NUMBER: u32 = 973602846u32;
38314pub const PR_OFFICE_TELEPHONE_NUMBER_A: u32 = 973602846u32;
38315pub const PR_OFFICE_TELEPHONE_NUMBER_W: u32 = 973602847u32;
38316pub const PR_OFFLINE_ADDRBOOK_ENTRYID: u32 = 1713570050u32;
38317pub const PR_OFFLINE_FLAGS: u32 = 1715273731u32;
38318pub const PR_OFFLINE_MESSAGE_ENTRYID: u32 = 1713832194u32;
38319pub const PR_OLDEST_DELETED_ON: u32 = 1715601472u32;
38320pub const PR_OOF_STATE: u32 = 1713176587u32;
38321pub const PR_ORGANIZATIONAL_ID_NUMBER: u32 = 974127134u32;
38322pub const PR_ORGANIZATIONAL_ID_NUMBER_A: u32 = 974127134u32;
38323pub const PR_ORGANIZATIONAL_ID_NUMBER_W: u32 = 974127135u32;
38324pub const PR_ORIGINALLY_INTENDED_RECIPIENT_NAME: u32 = 2097410u32;
38325pub const PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE: u32 = 8060958u32;
38326pub const PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_A: u32 = 8060958u32;
38327pub const PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE_W: u32 = 8060959u32;
38328pub const PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS: u32 = 8126494u32;
38329pub const PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_A: u32 = 8126494u32;
38330pub const PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS_W: u32 = 8126495u32;
38331pub const PR_ORIGINALLY_INTENDED_RECIP_ENTRYID: u32 = 269615362u32;
38332pub const PR_ORIGINAL_AUTHOR_ADDRTYPE: u32 = 7929886u32;
38333pub const PR_ORIGINAL_AUTHOR_ADDRTYPE_A: u32 = 7929886u32;
38334pub const PR_ORIGINAL_AUTHOR_ADDRTYPE_W: u32 = 7929887u32;
38335pub const PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS: u32 = 7995422u32;
38336pub const PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_A: u32 = 7995422u32;
38337pub const PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS_W: u32 = 7995423u32;
38338pub const PR_ORIGINAL_AUTHOR_ENTRYID: u32 = 4980994u32;
38339pub const PR_ORIGINAL_AUTHOR_NAME: u32 = 5046302u32;
38340pub const PR_ORIGINAL_AUTHOR_NAME_A: u32 = 5046302u32;
38341pub const PR_ORIGINAL_AUTHOR_NAME_W: u32 = 5046303u32;
38342pub const PR_ORIGINAL_AUTHOR_SEARCH_KEY: u32 = 5636354u32;
38343pub const PR_ORIGINAL_AUTHOR_SID: u32 = 240451842u32;
38344pub const PR_ORIGINAL_AUTHOR_SID_AS_XML: u32 = 242614302u32;
38345pub const PR_ORIGINAL_DELIVERY_TIME: u32 = 5570624u32;
38346pub const PR_ORIGINAL_DISPLAY_BCC: u32 = 7471134u32;
38347pub const PR_ORIGINAL_DISPLAY_BCC_A: u32 = 7471134u32;
38348pub const PR_ORIGINAL_DISPLAY_BCC_W: u32 = 7471135u32;
38349pub const PR_ORIGINAL_DISPLAY_CC: u32 = 7536670u32;
38350pub const PR_ORIGINAL_DISPLAY_CC_A: u32 = 7536670u32;
38351pub const PR_ORIGINAL_DISPLAY_CC_W: u32 = 7536671u32;
38352pub const PR_ORIGINAL_DISPLAY_NAME: u32 = 974323742u32;
38353pub const PR_ORIGINAL_DISPLAY_NAME_A: u32 = 974323742u32;
38354pub const PR_ORIGINAL_DISPLAY_NAME_W: u32 = 974323743u32;
38355pub const PR_ORIGINAL_DISPLAY_TO: u32 = 7602206u32;
38356pub const PR_ORIGINAL_DISPLAY_TO_A: u32 = 7602206u32;
38357pub const PR_ORIGINAL_DISPLAY_TO_W: u32 = 7602207u32;
38358pub const PR_ORIGINAL_EITS: u32 = 2162946u32;
38359pub const PR_ORIGINAL_ENTRYID: u32 = 974258434u32;
38360pub const PR_ORIGINAL_SEARCH_KEY: u32 = 974389506u32;
38361pub const PR_ORIGINAL_SENDER_ADDRTYPE: u32 = 6684702u32;
38362pub const PR_ORIGINAL_SENDER_ADDRTYPE_A: u32 = 6684702u32;
38363pub const PR_ORIGINAL_SENDER_ADDRTYPE_W: u32 = 6684703u32;
38364pub const PR_ORIGINAL_SENDER_EMAIL_ADDRESS: u32 = 6750238u32;
38365pub const PR_ORIGINAL_SENDER_EMAIL_ADDRESS_A: u32 = 6750238u32;
38366pub const PR_ORIGINAL_SENDER_EMAIL_ADDRESS_W: u32 = 6750239u32;
38367pub const PR_ORIGINAL_SENDER_ENTRYID: u32 = 5964034u32;
38368pub const PR_ORIGINAL_SENDER_NAME: u32 = 5898270u32;
38369pub const PR_ORIGINAL_SENDER_NAME_A: u32 = 5898270u32;
38370pub const PR_ORIGINAL_SENDER_NAME_W: u32 = 5898271u32;
38371pub const PR_ORIGINAL_SENDER_SEARCH_KEY: u32 = 6029570u32;
38372pub const PR_ORIGINAL_SENDER_SID: u32 = 240058626u32;
38373pub const PR_ORIGINAL_SENDER_SID_AS_XML: u32 = 242221086u32;
38374pub const PR_ORIGINAL_SENSITIVITY: u32 = 3014659u32;
38375pub const PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE: u32 = 6815774u32;
38376pub const PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_A: u32 = 6815774u32;
38377pub const PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE_W: u32 = 6815775u32;
38378pub const PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS: u32 = 6881310u32;
38379pub const PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_A: u32 = 6881310u32;
38380pub const PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS_W: u32 = 6881311u32;
38381pub const PR_ORIGINAL_SENT_REPRESENTING_ENTRYID: u32 = 6160642u32;
38382pub const PR_ORIGINAL_SENT_REPRESENTING_NAME: u32 = 6094878u32;
38383pub const PR_ORIGINAL_SENT_REPRESENTING_NAME_A: u32 = 6094878u32;
38384pub const PR_ORIGINAL_SENT_REPRESENTING_NAME_W: u32 = 6094879u32;
38385pub const PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY: u32 = 6226178u32;
38386pub const PR_ORIGINAL_SENT_REPRESENTING_SID: u32 = 240124162u32;
38387pub const PR_ORIGINAL_SENT_REPRESENTING_SID_AS_XML: u32 = 242286622u32;
38388pub const PR_ORIGINAL_SUBJECT: u32 = 4784158u32;
38389pub const PR_ORIGINAL_SUBJECT_A: u32 = 4784158u32;
38390pub const PR_ORIGINAL_SUBJECT_W: u32 = 4784159u32;
38391pub const PR_ORIGINAL_SUBMIT_TIME: u32 = 5111872u32;
38392pub const PR_ORIGINATING_MTA_CERTIFICATE: u32 = 237306114u32;
38393pub const PR_ORIGINATOR_ADDR: u32 = 1717305374u32;
38394pub const PR_ORIGINATOR_ADDRTYPE: u32 = 1717370910u32;
38395pub const PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY: u32 = 268566786u32;
38396pub const PR_ORIGINATOR_CERTIFICATE: u32 = 2228482u32;
38397pub const PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED: u32 = 2293771u32;
38398pub const PR_ORIGINATOR_ENTRYID: u32 = 1717436674u32;
38399pub const PR_ORIGINATOR_NAME: u32 = 1717239838u32;
38400pub const PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED: u32 = 201850891u32;
38401pub const PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT: u32 = 201916674u32;
38402pub const PR_ORIGINATOR_RETURN_ADDRESS: u32 = 2359554u32;
38403pub const PR_ORIGINATOR_SID: u32 = 240320770u32;
38404pub const PR_ORIGINATOR_SID_AS_XML: u32 = 242483230u32;
38405pub const PR_ORIGIN_CHECK: u32 = 2556162u32;
38406pub const PR_ORIGIN_ID: u32 = 1716322562u32;
38407pub const PR_ORIG_MESSAGE_CLASS: u32 = 4915230u32;
38408pub const PR_ORIG_MESSAGE_CLASS_A: u32 = 4915230u32;
38409pub const PR_ORIG_MESSAGE_CLASS_W: u32 = 4915231u32;
38410pub const PR_OST_ENCRYPTION: u32 = 1728184323u32;
38411pub const PR_OTHER_ADDRESS_CITY: u32 = 979304478u32;
38412pub const PR_OTHER_ADDRESS_CITY_A: u32 = 979304478u32;
38413pub const PR_OTHER_ADDRESS_CITY_W: u32 = 979304479u32;
38414pub const PR_OTHER_ADDRESS_COUNTRY: u32 = 979370014u32;
38415pub const PR_OTHER_ADDRESS_COUNTRY_A: u32 = 979370014u32;
38416pub const PR_OTHER_ADDRESS_COUNTRY_W: u32 = 979370015u32;
38417pub const PR_OTHER_ADDRESS_POSTAL_CODE: u32 = 979435550u32;
38418pub const PR_OTHER_ADDRESS_POSTAL_CODE_A: u32 = 979435550u32;
38419pub const PR_OTHER_ADDRESS_POSTAL_CODE_W: u32 = 979435551u32;
38420pub const PR_OTHER_ADDRESS_POST_OFFICE_BOX: u32 = 979632158u32;
38421pub const PR_OTHER_ADDRESS_POST_OFFICE_BOX_A: u32 = 979632158u32;
38422pub const PR_OTHER_ADDRESS_POST_OFFICE_BOX_W: u32 = 979632159u32;
38423pub const PR_OTHER_ADDRESS_STATE_OR_PROVINCE: u32 = 979501086u32;
38424pub const PR_OTHER_ADDRESS_STATE_OR_PROVINCE_A: u32 = 979501086u32;
38425pub const PR_OTHER_ADDRESS_STATE_OR_PROVINCE_W: u32 = 979501087u32;
38426pub const PR_OTHER_ADDRESS_STREET: u32 = 979566622u32;
38427pub const PR_OTHER_ADDRESS_STREET_A: u32 = 979566622u32;
38428pub const PR_OTHER_ADDRESS_STREET_W: u32 = 979566623u32;
38429pub const PR_OTHER_TELEPHONE_NUMBER: u32 = 975110174u32;
38430pub const PR_OTHER_TELEPHONE_NUMBER_A: u32 = 975110174u32;
38431pub const PR_OTHER_TELEPHONE_NUMBER_W: u32 = 975110175u32;
38432pub const PR_OUTBOUND_NEWSFEED_DN: u32 = 1720582174u32;
38433pub const PR_OVERALL_AGE_LIMIT: u32 = 1721303043u32;
38434pub const PR_OVERALL_MSG_AGE_LIMIT: u32 = 1720909827u32;
38435pub const PR_OWNER_APPT_ID: u32 = 6422531u32;
38436pub const PR_OWNER_COUNT: u32 = 1723203587u32;
38437pub const PR_OWN_STORE_ENTRYID: u32 = 1040580866u32;
38438pub const PR_P1_CONTENT: u32 = 285212930u32;
38439pub const PR_P1_CONTENT_TYPE: u32 = 285278466u32;
38440pub const PR_PAGER_TELEPHONE_NUMBER: u32 = 975241246u32;
38441pub const PR_PAGER_TELEPHONE_NUMBER_A: u32 = 975241246u32;
38442pub const PR_PAGER_TELEPHONE_NUMBER_W: u32 = 975241247u32;
38443pub const PR_PARENT_DISPLAY: u32 = 235208734u32;
38444pub const PR_PARENT_DISPLAY_A: u32 = 235208734u32;
38445pub const PR_PARENT_DISPLAY_W: u32 = 235208735u32;
38446pub const PR_PARENT_ENTRYID: u32 = 235471106u32;
38447pub const PR_PARENT_KEY: u32 = 2425090u32;
38448pub const PR_PARENT_SOURCE_KEY: u32 = 1709244674u32;
38449pub const PR_PARENT_URL_NAME: u32 = 1728905246u32;
38450pub const PR_PARENT_URL_NAME_A: u32 = 1728905246u32;
38451pub const PR_PARENT_URL_NAME_W: u32 = 1728905247u32;
38452pub const PR_PERSONAL_HOME_PAGE: u32 = 978321438u32;
38453pub const PR_PERSONAL_HOME_PAGE_A: u32 = 978321438u32;
38454pub const PR_PERSONAL_HOME_PAGE_W: u32 = 978321439u32;
38455pub const PR_PF_DISALLOW_MDB_WIDE_EXPIRY: u32 = 1730347019u32;
38456pub const PR_PF_MSG_SIZE_LIMIT: u32 = 1730281492u32;
38457pub const PR_PF_OVER_HARD_QUOTA_LIMIT: u32 = 1730215956u32;
38458pub const PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY: u32 = 201981963u32;
38459pub const PR_PHYSICAL_DELIVERY_MODE: u32 = 202047491u32;
38460pub const PR_PHYSICAL_DELIVERY_REPORT_REQUEST: u32 = 202113027u32;
38461pub const PR_PHYSICAL_FORWARDING_ADDRESS: u32 = 202178818u32;
38462pub const PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED: u32 = 202244107u32;
38463pub const PR_PHYSICAL_FORWARDING_PROHIBITED: u32 = 202309643u32;
38464pub const PR_PHYSICAL_RENDITION_ATTRIBUTES: u32 = 202375426u32;
38465pub const PR_POLICY_TAG: u32 = 806945026u32;
38466pub const PR_POSTAL_ADDRESS: u32 = 974454814u32;
38467pub const PR_POSTAL_ADDRESS_A: u32 = 974454814u32;
38468pub const PR_POSTAL_ADDRESS_W: u32 = 974454815u32;
38469pub const PR_POSTAL_CODE: u32 = 975831070u32;
38470pub const PR_POSTAL_CODE_A: u32 = 975831070u32;
38471pub const PR_POSTAL_CODE_W: u32 = 975831071u32;
38472pub const PR_POST_OFFICE_BOX: u32 = 975896606u32;
38473pub const PR_POST_OFFICE_BOX_A: u32 = 975896606u32;
38474pub const PR_POST_OFFICE_BOX_W: u32 = 975896607u32;
38475pub const PR_PREDECESSOR_CHANGE_LIST: u32 = 1709375746u32;
38476pub const PR_PREFERRED_BY_NAME: u32 = 977731614u32;
38477pub const PR_PREFERRED_BY_NAME_A: u32 = 977731614u32;
38478pub const PR_PREFERRED_BY_NAME_W: u32 = 977731615u32;
38479pub const PR_PREPROCESS: u32 = 237109259u32;
38480pub const PR_PREVENT_MSG_CREATE: u32 = 1710489611u32;
38481pub const PR_PREVIEW: u32 = 1071185950u32;
38482pub const PR_PREVIEW_A: u32 = 1071185950u32;
38483pub const PR_PREVIEW_UNREAD: u32 = 1071120414u32;
38484pub const PR_PREVIEW_UNREAD_A: u32 = 1071120414u32;
38485pub const PR_PREVIEW_UNREAD_W: u32 = 1071120415u32;
38486pub const PR_PREVIEW_W: u32 = 1071185951u32;
38487pub const PR_PRIMARY_CAPABILITY: u32 = 956563714u32;
38488pub const PR_PRIMARY_FAX_NUMBER: u32 = 975372318u32;
38489pub const PR_PRIMARY_FAX_NUMBER_A: u32 = 975372318u32;
38490pub const PR_PRIMARY_FAX_NUMBER_W: u32 = 975372319u32;
38491pub const PR_PRIMARY_SEND_ACCT: u32 = 237502495u32;
38492pub const PR_PRIMARY_TELEPHONE_NUMBER: u32 = 974782494u32;
38493pub const PR_PRIMARY_TELEPHONE_NUMBER_A: u32 = 974782494u32;
38494pub const PR_PRIMARY_TELEPHONE_NUMBER_W: u32 = 974782495u32;
38495pub const PR_PRIORITY: u32 = 2490371u32;
38496pub const PR_PROFESSION: u32 = 977666078u32;
38497pub const PR_PROFESSION_A: u32 = 977666078u32;
38498pub const PR_PROFESSION_W: u32 = 977666079u32;
38499pub const PR_PROFILE_ABP_ALLOW_RECONNECT: u32 = 1715011587u32;
38500pub const PR_PROFILE_ABP_MTHREAD_TIMEOUT_SECS: u32 = 1715077123u32;
38501pub const PR_PROFILE_AB_FILES_PATH: u32 = 1712193566u32;
38502pub const PR_PROFILE_AB_FILES_PATH_W: u32 = 1712193567u32;
38503pub const PR_PROFILE_ADDR_INFO: u32 = 1720123650u32;
38504pub const PR_PROFILE_ALLPUB_COMMENT: u32 = 1712783390u32;
38505pub const PR_PROFILE_ALLPUB_COMMENT_W: u32 = 1712783391u32;
38506pub const PR_PROFILE_ALLPUB_DISPLAY_NAME: u32 = 1712717854u32;
38507pub const PR_PROFILE_ALLPUB_DISPLAY_NAME_W: u32 = 1712717855u32;
38508pub const PR_PROFILE_ALTERNATE_STORE_TYPE_W: u32 = 1708130335u32;
38509pub const PR_PROFILE_AUTH_PACKAGE: u32 = 1712914435u32;
38510pub const PR_PROFILE_BINDING_ORDER: u32 = 1711865886u32;
38511pub const PR_PROFILE_CONFIG_FLAGS: u32 = 1711341571u32;
38512pub const PR_PROFILE_CONNECT_FLAGS: u32 = 1711538179u32;
38513pub const PR_PROFILE_FAVFLD_COMMENT: u32 = 1712652318u32;
38514pub const PR_PROFILE_FAVFLD_COMMENT_W: u32 = 1712652319u32;
38515pub const PR_PROFILE_FAVFLD_DISPLAY_NAME: u32 = 1712259102u32;
38516pub const PR_PROFILE_FAVFLD_DISPLAY_NAME_W: u32 = 1712259103u32;
38517pub const PR_PROFILE_HOME_SERVER: u32 = 1711407134u32;
38518pub const PR_PROFILE_HOME_SERVER_ADDRS: u32 = 1712525342u32;
38519pub const PR_PROFILE_HOME_SERVER_DN: u32 = 1712455710u32;
38520pub const PR_PROFILE_MAILBOX: u32 = 1711996958u32;
38521pub const PR_PROFILE_MAX_RESTRICT: u32 = 1712128003u32;
38522pub const PR_PROFILE_MOAB: u32 = 1719336990u32;
38523pub const PR_PROFILE_MOAB_GUID: u32 = 1719402526u32;
38524pub const PR_PROFILE_MOAB_SEQ: u32 = 1719468035u32;
38525pub const PR_PROFILE_MOAB_W: u32 = 1719336991u32;
38526pub const PR_PROFILE_NAME: u32 = 1024589854u32;
38527pub const PR_PROFILE_NAME_A: u32 = 1024589854u32;
38528pub const PR_PROFILE_NAME_W: u32 = 1024589855u32;
38529pub const PR_PROFILE_OFFLINE_INFO: u32 = 1712390402u32;
38530pub const PR_PROFILE_OFFLINE_STORE_PATH: u32 = 1712324638u32;
38531pub const PR_PROFILE_OFFLINE_STORE_PATH_W: u32 = 1712324639u32;
38532pub const PR_PROFILE_OPEN_FLAGS: u32 = 1711865859u32;
38533pub const PR_PROFILE_OPTIONS_DATA: u32 = 1720254722u32;
38534pub const PR_PROFILE_RECONNECT_INTERVAL: u32 = 1712979971u32;
38535pub const PR_PROFILE_SECURE_MAILBOX: u32 = 1743782146u32;
38536pub const PR_PROFILE_SERVER: u32 = 1712062494u32;
38537pub const PR_PROFILE_SERVER_DN: u32 = 1712586782u32;
38538pub const PR_PROFILE_SERVER_FULL_VERSION: u32 = 1715142914u32;
38539pub const PR_PROFILE_SERVER_VERSION: u32 = 1713045507u32;
38540pub const PR_PROFILE_TRANSPORT_FLAGS: u32 = 1711603715u32;
38541pub const PR_PROFILE_TYPE: u32 = 1711931395u32;
38542pub const PR_PROFILE_UI_STATE: u32 = 1711669251u32;
38543pub const PR_PROFILE_UNRESOLVED_NAME: u32 = 1711734814u32;
38544pub const PR_PROFILE_UNRESOLVED_NAME_A: u32 = 1711734814u32;
38545pub const PR_PROFILE_UNRESOLVED_NAME_W: u32 = 1711734815u32;
38546pub const PR_PROFILE_UNRESOLVED_SERVER: u32 = 1711800350u32;
38547pub const PR_PROFILE_USER: u32 = 1711472670u32;
38548pub const PR_PROFILE_USER_SMTP_EMAIL_ADDRESS: u32 = 1715535902u32;
38549pub const PR_PROFILE_USER_SMTP_EMAIL_ADDRESS_A: u32 = 1715535902u32;
38550pub const PR_PROFILE_USER_SMTP_EMAIL_ADDRESS_W: u32 = 1715535903u32;
38551pub const PR_PROFILE_VERSION: u32 = 1711276035u32;
38552pub const PR_PROHIBIT_RECEIVE_QUOTA: u32 = 1718222851u32;
38553pub const PR_PROHIBIT_SEND_QUOTA: u32 = 1718484995u32;
38554pub const PR_PROMOTE_PROP_ID_LIST: u32 = 1718288642u32;
38555pub const PR_PROOF_OF_DELIVERY: u32 = 202440962u32;
38556pub const PR_PROOF_OF_DELIVERY_REQUESTED: u32 = 202506251u32;
38557pub const PR_PROOF_OF_SUBMISSION: u32 = 237371650u32;
38558pub const PR_PROOF_OF_SUBMISSION_REQUESTED: u32 = 2621451u32;
38559pub const PR_PROVIDER_DISPLAY: u32 = 805699614u32;
38560pub const PR_PROVIDER_DISPLAY_A: u32 = 805699614u32;
38561pub const PR_PROVIDER_DISPLAY_W: u32 = 805699615u32;
38562pub const PR_PROVIDER_DLL_NAME: u32 = 805961758u32;
38563pub const PR_PROVIDER_DLL_NAME_A: u32 = 805961758u32;
38564pub const PR_PROVIDER_DLL_NAME_W: u32 = 805961759u32;
38565pub const PR_PROVIDER_ORDINAL: u32 = 806158339u32;
38566pub const PR_PROVIDER_SUBMIT_TIME: u32 = 4718656u32;
38567pub const PR_PROVIDER_UID: u32 = 806093058u32;
38568pub const PR_PST_ENCRYPTION: u32 = 1728184323u32;
38569pub const PR_PST_PATH: u32 = 1728053278u32;
38570pub const PR_PST_PW_SZ_NEW: u32 = 1728315422u32;
38571pub const PR_PST_PW_SZ_OLD: u32 = 1728249886u32;
38572pub const PR_PST_REMEMBER_PW: u32 = 1728118795u32;
38573pub const PR_PUBLIC_FOLDER_ENTRYID: u32 = 1715208450u32;
38574pub const PR_PUBLISH_IN_ADDRESS_BOOK: u32 = 1072037899u32;
38575pub const PR_QUOTA_RECEIVE_THRESHOLD: u32 = 1730347011u32;
38576pub const PR_QUOTA_SEND_THRESHOLD: u32 = 1730281475u32;
38577pub const PR_QUOTA_WARNING_THRESHOLD: u32 = 1730215939u32;
38578pub const PR_RADIO_TELEPHONE_NUMBER: u32 = 974979102u32;
38579pub const PR_RADIO_TELEPHONE_NUMBER_A: u32 = 974979102u32;
38580pub const PR_RADIO_TELEPHONE_NUMBER_W: u32 = 974979103u32;
38581pub const PR_RANK: u32 = 1729232899u32;
38582pub const PR_RCVD_REPRESENTING_ADDRTYPE: u32 = 7798814u32;
38583pub const PR_RCVD_REPRESENTING_ADDRTYPE_A: u32 = 7798814u32;
38584pub const PR_RCVD_REPRESENTING_ADDRTYPE_W: u32 = 7798815u32;
38585pub const PR_RCVD_REPRESENTING_EMAIL_ADDRESS: u32 = 7864350u32;
38586pub const PR_RCVD_REPRESENTING_EMAIL_ADDRESS_A: u32 = 7864350u32;
38587pub const PR_RCVD_REPRESENTING_EMAIL_ADDRESS_W: u32 = 7864351u32;
38588pub const PR_RCVD_REPRESENTING_ENTRYID: u32 = 4391170u32;
38589pub const PR_RCVD_REPRESENTING_NAME: u32 = 4456478u32;
38590pub const PR_RCVD_REPRESENTING_NAME_A: u32 = 4456478u32;
38591pub const PR_RCVD_REPRESENTING_NAME_W: u32 = 4456479u32;
38592pub const PR_RCVD_REPRESENTING_SEARCH_KEY: u32 = 5374210u32;
38593pub const PR_RCVD_REPRESENTING_SID: u32 = 240582914u32;
38594pub const PR_RCVD_REPRESENTING_SID_AS_XML: u32 = 242745374u32;
38595pub const PR_RCVD_REPRESENTING_SMTP_ADDRESS: u32 = 1560805406u32;
38596pub const PR_RCVD_REPRESENTING_SMTP_ADDRESS_A: u32 = 1560805406u32;
38597pub const PR_RCVD_REPRESENTING_SMTP_ADDRESS_W: u32 = 1560805407u32;
38598pub const PR_READ: u32 = 241762315u32;
38599pub const PR_READ_RECEIPT_ENTRYID: u32 = 4587778u32;
38600pub const PR_READ_RECEIPT_REQUESTED: u32 = 2686987u32;
38601pub const PR_READ_RECEIPT_SEARCH_KEY: u32 = 5439746u32;
38602pub const PR_READ_RECEIPT_SID: u32 = 240189698u32;
38603pub const PR_READ_RECEIPT_SID_AS_XML: u32 = 242352158u32;
38604pub const PR_RECEIPT_TIME: u32 = 2752576u32;
38605pub const PR_RECEIVED_BY_ADDRTYPE: u32 = 7667742u32;
38606pub const PR_RECEIVED_BY_ADDRTYPE_A: u32 = 7667742u32;
38607pub const PR_RECEIVED_BY_ADDRTYPE_W: u32 = 7667743u32;
38608pub const PR_RECEIVED_BY_EMAIL_ADDRESS: u32 = 7733278u32;
38609pub const PR_RECEIVED_BY_EMAIL_ADDRESS_A: u32 = 7733278u32;
38610pub const PR_RECEIVED_BY_EMAIL_ADDRESS_W: u32 = 7733279u32;
38611pub const PR_RECEIVED_BY_ENTRYID: u32 = 4129026u32;
38612pub const PR_RECEIVED_BY_NAME: u32 = 4194334u32;
38613pub const PR_RECEIVED_BY_NAME_A: u32 = 4194334u32;
38614pub const PR_RECEIVED_BY_NAME_W: u32 = 4194335u32;
38615pub const PR_RECEIVED_BY_SEARCH_KEY: u32 = 5308674u32;
38616pub const PR_RECEIVED_BY_SID: u32 = 240517378u32;
38617pub const PR_RECEIVED_BY_SID_AS_XML: u32 = 242679838u32;
38618pub const PR_RECEIVED_BY_SMTP_ADDRESS: u32 = 1560739870u32;
38619pub const PR_RECEIVED_BY_SMTP_ADDRESS_A: u32 = 1560739870u32;
38620pub const PR_RECEIVED_BY_SMTP_ADDRESS_W: u32 = 1560739871u32;
38621pub const PR_RECEIVE_FOLDER_SETTINGS: u32 = 873791501u32;
38622pub const PR_RECIPIENT_CERTIFICATE: u32 = 202572034u32;
38623pub const PR_RECIPIENT_NUMBER: u32 = 1717698563u32;
38624pub const PR_RECIPIENT_NUMBER_FOR_ADVICE: u32 = 202637342u32;
38625pub const PR_RECIPIENT_NUMBER_FOR_ADVICE_A: u32 = 202637342u32;
38626pub const PR_RECIPIENT_NUMBER_FOR_ADVICE_W: u32 = 202637343u32;
38627pub const PR_RECIPIENT_ON_ASSOC_MSG_COUNT: u32 = 1722810371u32;
38628pub const PR_RECIPIENT_ON_NORMAL_MSG_COUNT: u32 = 1722744835u32;
38629pub const PR_RECIPIENT_REASSIGNMENT_PROHIBITED: u32 = 2818059u32;
38630pub const PR_RECIPIENT_STATUS: u32 = 236257283u32;
38631pub const PR_RECIPIENT_TYPE: u32 = 202702851u32;
38632pub const PR_RECORD_KEY: u32 = 267976962u32;
38633pub const PR_REDIRECTION_HISTORY: u32 = 2883842u32;
38634pub const PR_REGISTERED_MAIL_TYPE: u32 = 202768387u32;
38635pub const PR_RELATED_IPMS: u32 = 2949378u32;
38636pub const PR_REMOTE_PROGRESS: u32 = 1040908291u32;
38637pub const PR_REMOTE_PROGRESS_TEXT: u32 = 1040973854u32;
38638pub const PR_REMOTE_PROGRESS_TEXT_A: u32 = 1040973854u32;
38639pub const PR_REMOTE_PROGRESS_TEXT_W: u32 = 1040973855u32;
38640pub const PR_REMOTE_VALIDATE_OK: u32 = 1041039371u32;
38641pub const PR_RENDERING_POSITION: u32 = 923467779u32;
38642pub const PR_REPLICATION_ALWAYS_INTERVAL: u32 = 1720975363u32;
38643pub const PR_REPLICATION_MESSAGE_PRIORITY: u32 = 1720844291u32;
38644pub const PR_REPLICATION_MSG_SIZE: u32 = 1721040899u32;
38645pub const PR_REPLICATION_SCHEDULE: u32 = 1720779010u32;
38646pub const PR_REPLICATION_STYLE: u32 = 1720713219u32;
38647pub const PR_REPLICA_LIST: u32 = 1721237762u32;
38648pub const PR_REPLICA_SERVER: u32 = 1715732510u32;
38649pub const PR_REPLICA_SERVER_W: u32 = 1715732511u32;
38650pub const PR_REPLICA_VERSION: u32 = 1716191252u32;
38651pub const PR_REPLY_RECIPIENT_ENTRIES: u32 = 5177602u32;
38652pub const PR_REPLY_RECIPIENT_NAMES: u32 = 5242910u32;
38653pub const PR_REPLY_RECIPIENT_NAMES_A: u32 = 5242910u32;
38654pub const PR_REPLY_RECIPIENT_NAMES_W: u32 = 5242911u32;
38655pub const PR_REPLY_RECIPIENT_SMTP_PROXIES: u32 = 1073479710u32;
38656pub const PR_REPLY_REQUESTED: u32 = 202833931u32;
38657pub const PR_REPLY_TIME: u32 = 3145792u32;
38658pub const PR_REPORTING_DL_NAME: u32 = 268632322u32;
38659pub const PR_REPORTING_MTA_CERTIFICATE: u32 = 268697858u32;
38660pub const PR_REPORT_DESTINATION_ENTRYID: u32 = 1717895426u32;
38661pub const PR_REPORT_DESTINATION_NAME: u32 = 1717829662u32;
38662pub const PR_REPORT_DESTINATION_SID: u32 = 240386306u32;
38663pub const PR_REPORT_DESTINATION_SID_AS_XML: u32 = 242548766u32;
38664pub const PR_REPORT_ENTRYID: u32 = 4522242u32;
38665pub const PR_REPORT_NAME: u32 = 3801118u32;
38666pub const PR_REPORT_NAME_A: u32 = 3801118u32;
38667pub const PR_REPORT_NAME_W: u32 = 3801119u32;
38668pub const PR_REPORT_SEARCH_KEY: u32 = 5505282u32;
38669pub const PR_REPORT_SID: u32 = 240255234u32;
38670pub const PR_REPORT_SID_AS_XML: u32 = 242417694u32;
38671pub const PR_REPORT_TAG: u32 = 3211522u32;
38672pub const PR_REPORT_TEXT: u32 = 268501022u32;
38673pub const PR_REPORT_TEXT_A: u32 = 268501022u32;
38674pub const PR_REPORT_TEXT_W: u32 = 268501023u32;
38675pub const PR_REPORT_TIME: u32 = 3276864u32;
38676pub const PR_REQUESTED_DELIVERY_METHOD: u32 = 202899459u32;
38677pub const PR_RESERVE_RANGE_OF_IDS: u32 = 242942210u32;
38678pub const PR_RESOLVE_METHOD: u32 = 1072103427u32;
38679pub const PR_RESOURCE_FLAGS: u32 = 805896195u32;
38680pub const PR_RESOURCE_METHODS: u32 = 1040318467u32;
38681pub const PR_RESOURCE_PATH: u32 = 1040646174u32;
38682pub const PR_RESOURCE_PATH_A: u32 = 1040646174u32;
38683pub const PR_RESOURCE_PATH_W: u32 = 1040646175u32;
38684pub const PR_RESOURCE_TYPE: u32 = 1040384003u32;
38685pub const PR_RESPONSE_REQUESTED: u32 = 6488075u32;
38686pub const PR_RESPONSIBILITY: u32 = 235864075u32;
38687pub const PR_RESTRICTION_COUNT: u32 = 1722417155u32;
38688pub const PR_RETENTION_AGE_LIMIT: u32 = 1724121091u32;
38689pub const PR_RETENTION_DATE: u32 = 807141440u32;
38690pub const PR_RETENTION_FLAGS: u32 = 807206915u32;
38691pub const PR_RETENTION_PERIOD: u32 = 807010307u32;
38692pub const PR_RETURNED_IPM: u32 = 3342347u32;
38693pub const PR_RIGHTS: u32 = 1715011587u32;
38694pub const PR_ROH_FLAGS: u32 = 1713569795u32;
38695pub const PR_ROH_PROXY_AUTH_SCHEME: u32 = 1713831939u32;
38696pub const PR_ROWID: u32 = 805306371u32;
38697pub const PR_ROW_TYPE: u32 = 267714563u32;
38698pub const PR_RTF_COMPRESSED: u32 = 269025538u32;
38699pub const PR_RTF_IN_SYNC: u32 = 236912651u32;
38700pub const PR_RTF_SYNC_BODY_COUNT: u32 = 268894211u32;
38701pub const PR_RTF_SYNC_BODY_CRC: u32 = 268828675u32;
38702pub const PR_RTF_SYNC_BODY_TAG: u32 = 268959774u32;
38703pub const PR_RTF_SYNC_BODY_TAG_A: u32 = 268959774u32;
38704pub const PR_RTF_SYNC_BODY_TAG_W: u32 = 268959775u32;
38705pub const PR_RTF_SYNC_PREFIX_COUNT: u32 = 269484035u32;
38706pub const PR_RTF_SYNC_TRAILING_COUNT: u32 = 269549571u32;
38707pub const PR_RULES_DATA: u32 = 1071710466u32;
38708pub const PR_RULES_TABLE: u32 = 1071710221u32;
38709pub const PR_RULE_ACTIONS: u32 = 1719664894u32;
38710pub const PR_RULE_ACTION_NUMBER: u32 = 1716518915u32;
38711pub const PR_RULE_ACTION_TYPE: u32 = 1716060163u32;
38712pub const PR_RULE_CONDITION: u32 = 1719206141u32;
38713pub const PR_RULE_ERROR: u32 = 1715994627u32;
38714pub const PR_RULE_FOLDER_ENTRYID: u32 = 1716584706u32;
38715pub const PR_RULE_ID: u32 = 1718878228u32;
38716pub const PR_RULE_IDS: u32 = 1718944002u32;
38717pub const PR_RULE_LEVEL: u32 = 1719861251u32;
38718pub const PR_RULE_MSG_LEVEL: u32 = 1710030851u32;
38719pub const PR_RULE_MSG_NAME_W: u32 = 1709965343u32;
38720pub const PR_RULE_MSG_PROVIDER_DATA: u32 = 1710096642u32;
38721pub const PR_RULE_MSG_PROVIDER_W: u32 = 1709899807u32;
38722pub const PR_RULE_MSG_SEQUENCE: u32 = 1710424067u32;
38723pub const PR_RULE_MSG_STATE: u32 = 1709768707u32;
38724pub const PR_RULE_MSG_USER_FLAGS: u32 = 1709834243u32;
38725pub const PR_RULE_NAME: u32 = 1719795742u32;
38726pub const PR_RULE_PROVIDER: u32 = 1719730206u32;
38727pub const PR_RULE_PROVIDER_DATA: u32 = 1719927042u32;
38728pub const PR_RULE_SEQUENCE: u32 = 1719009283u32;
38729pub const PR_RULE_SERVER_RULE_ID: u32 = 1704984596u32;
38730pub const PR_RULE_STATE: u32 = 1719074819u32;
38731pub const PR_RULE_TRIGGER_HISTORY: u32 = 1072824578u32;
38732pub const PR_RULE_USER_FLAGS: u32 = 1719140355u32;
38733pub const PR_SCHEDULE_FOLDER_ENTRYID: u32 = 1713242370u32;
38734pub const PR_SEARCH: u32 = 906428429u32;
38735pub const PR_SEARCH_KEY: u32 = 806027522u32;
38736pub const PR_SECURE_IN_SITE: u32 = 1721630731u32;
38737pub const PR_SECURE_ORIGINATION: u32 = 1071972363u32;
38738pub const PR_SECURITY: u32 = 3407875u32;
38739pub const PR_SELECTABLE: u32 = 906559499u32;
38740pub const PR_SENDER_ADDRTYPE: u32 = 203292702u32;
38741pub const PR_SENDER_ADDRTYPE_A: u32 = 203292702u32;
38742pub const PR_SENDER_ADDRTYPE_W: u32 = 203292703u32;
38743pub const PR_SENDER_EMAIL_ADDRESS: u32 = 203358238u32;
38744pub const PR_SENDER_EMAIL_ADDRESS_A: u32 = 203358238u32;
38745pub const PR_SENDER_EMAIL_ADDRESS_W: u32 = 203358239u32;
38746pub const PR_SENDER_ENTRYID: u32 = 202965250u32;
38747pub const PR_SENDER_NAME: u32 = 203030558u32;
38748pub const PR_SENDER_NAME_A: u32 = 203030558u32;
38749pub const PR_SENDER_NAME_W: u32 = 203030559u32;
38750pub const PR_SENDER_SEARCH_KEY: u32 = 203227394u32;
38751pub const PR_SENDER_SID: u32 = 239927554u32;
38752pub const PR_SENDER_SID_AS_XML: u32 = 242090014u32;
38753pub const PR_SENDER_SMTP_ADDRESS: u32 = 1560346654u32;
38754pub const PR_SENDER_SMTP_ADDRESS_A: u32 = 1560346654u32;
38755pub const PR_SENDER_SMTP_ADDRESS_W: u32 = 1560346655u32;
38756pub const PR_SEND_RICH_INFO: u32 = 977272843u32;
38757pub const PR_SENSITIVITY: u32 = 3538947u32;
38758pub const PR_SENTMAIL_ENTRYID: u32 = 235536642u32;
38759pub const PR_SENT_REPRESENTING_ADDRTYPE: u32 = 6553630u32;
38760pub const PR_SENT_REPRESENTING_ADDRTYPE_A: u32 = 6553630u32;
38761pub const PR_SENT_REPRESENTING_ADDRTYPE_W: u32 = 6553631u32;
38762pub const PR_SENT_REPRESENTING_EMAIL_ADDRESS: u32 = 6619166u32;
38763pub const PR_SENT_REPRESENTING_EMAIL_ADDRESS_A: u32 = 6619166u32;
38764pub const PR_SENT_REPRESENTING_EMAIL_ADDRESS_W: u32 = 6619167u32;
38765pub const PR_SENT_REPRESENTING_ENTRYID: u32 = 4260098u32;
38766pub const PR_SENT_REPRESENTING_NAME: u32 = 4325406u32;
38767pub const PR_SENT_REPRESENTING_NAME_A: u32 = 4325406u32;
38768pub const PR_SENT_REPRESENTING_NAME_W: u32 = 4325407u32;
38769pub const PR_SENT_REPRESENTING_SEARCH_KEY: u32 = 3866882u32;
38770pub const PR_SENT_REPRESENTING_SID: u32 = 239993090u32;
38771pub const PR_SENT_REPRESENTING_SID_AS_XML: u32 = 242155550u32;
38772pub const PR_SENT_REPRESENTING_SMTP_ADDRESS: u32 = 1560412190u32;
38773pub const PR_SENT_REPRESENTING_SMTP_ADDRESS_A: u32 = 1560412190u32;
38774pub const PR_SENT_REPRESENTING_SMTP_ADDRESS_W: u32 = 1560412191u32;
38775pub const PR_SERVICES: u32 = 1024327938u32;
38776pub const PR_SERVICE_DELETE_FILES: u32 = 1024462878u32;
38777pub const PR_SERVICE_DELETE_FILES_A: u32 = 1024462878u32;
38778pub const PR_SERVICE_DELETE_FILES_W: u32 = 1024462879u32;
38779pub const PR_SERVICE_DLL_NAME: u32 = 1024065566u32;
38780pub const PR_SERVICE_DLL_NAME_A: u32 = 1024065566u32;
38781pub const PR_SERVICE_DLL_NAME_W: u32 = 1024065567u32;
38782pub const PR_SERVICE_ENTRY_NAME: u32 = 1024131102u32;
38783pub const PR_SERVICE_EXTRA_UIDS: u32 = 1024262402u32;
38784pub const PR_SERVICE_NAME: u32 = 1024000030u32;
38785pub const PR_SERVICE_NAME_A: u32 = 1024000030u32;
38786pub const PR_SERVICE_NAME_W: u32 = 1024000031u32;
38787pub const PR_SERVICE_SUPPORT_FILES: u32 = 1024397342u32;
38788pub const PR_SERVICE_SUPPORT_FILES_A: u32 = 1024397342u32;
38789pub const PR_SERVICE_SUPPORT_FILES_W: u32 = 1024397343u32;
38790pub const PR_SERVICE_UID: u32 = 1024196866u32;
38791pub const PR_SHORTTERM_ENTRYID_FROM_OBJECT: u32 = 1718747394u32;
38792pub const PR_SHORTTERM_PARENT_ENTRYID_FROM_OBJECT: u32 = 1718681858u32;
38793pub const PR_SMTP_ADDRESS: u32 = 972947486u32;
38794pub const PR_SMTP_ADDRESS_A: u32 = 972947486u32;
38795pub const PR_SMTP_ADDRESS_W: u32 = 972947487u32;
38796pub const PR_SORT_LOCALE_ID: u32 = 1728380931u32;
38797pub const PR_SORT_PARENTID: u32 = 807469314u32;
38798pub const PR_SORT_POSITION: u32 = 807403778u32;
38799pub const PR_SOURCE_FID: u32 = 241106964u32;
38800pub const PR_SOURCE_KEY: u32 = 1709179138u32;
38801pub const PR_SPLUS_FREE_BUSY_ENTRYID: u32 = 1713504514u32;
38802pub const PR_SPOOLER_STATUS: u32 = 235929603u32;
38803pub const PR_SPOUSE_NAME: u32 = 977797150u32;
38804pub const PR_SPOUSE_NAME_A: u32 = 977797150u32;
38805pub const PR_SPOUSE_NAME_W: u32 = 977797151u32;
38806pub const PR_SRC_URL_NAME: u32 = 1729036318u32;
38807pub const PR_SRC_URL_NAME_A: u32 = 1729036318u32;
38808pub const PR_SRC_URL_NAME_W: u32 = 1729036319u32;
38809pub const PR_START_DATE: u32 = 6291520u32;
38810pub const PR_START_DATE_ETC: u32 = 807076098u32;
38811pub const PR_STATE_OR_PROVINCE: u32 = 975699998u32;
38812pub const PR_STATE_OR_PROVINCE_A: u32 = 975699998u32;
38813pub const PR_STATE_OR_PROVINCE_W: u32 = 975699999u32;
38814pub const PR_STATUS: u32 = 906690563u32;
38815pub const PR_STATUS_CODE: u32 = 1040449539u32;
38816pub const PR_STATUS_STRING: u32 = 1040711710u32;
38817pub const PR_STATUS_STRING_A: u32 = 1040711710u32;
38818pub const PR_STATUS_STRING_W: u32 = 1040711711u32;
38819pub const PR_STORAGE_LIMIT_INFORMATION: u32 = 1722023939u32;
38820pub const PR_STORAGE_QUOTA_LIMIT: u32 = 1073020931u32;
38821pub const PR_STORE_ENTRYID: u32 = 268108034u32;
38822pub const PR_STORE_OFFLINE: u32 = 1714552843u32;
38823pub const PR_STORE_PROVIDERS: u32 = 1023410434u32;
38824pub const PR_STORE_RECORD_KEY: u32 = 268042498u32;
38825pub const PR_STORE_SLOWLINK: u32 = 2081030155u32;
38826pub const PR_STORE_STATE: u32 = 873332739u32;
38827pub const PR_STORE_SUPPORT_MASK: u32 = 873267203u32;
38828pub const PR_STREET_ADDRESS: u32 = 975765534u32;
38829pub const PR_STREET_ADDRESS_A: u32 = 975765534u32;
38830pub const PR_STREET_ADDRESS_W: u32 = 975765535u32;
38831pub const PR_SUBFOLDER: u32 = 1728577547u32;
38832pub const PR_SUBFOLDERS: u32 = 906625035u32;
38833pub const PR_SUBJECT: u32 = 3604510u32;
38834pub const PR_SUBJECT_A: u32 = 3604510u32;
38835pub const PR_SUBJECT_IPM: u32 = 3670274u32;
38836pub const PR_SUBJECT_PREFIX: u32 = 3997726u32;
38837pub const PR_SUBJECT_PREFIX_A: u32 = 3997726u32;
38838pub const PR_SUBJECT_PREFIX_W: u32 = 3997727u32;
38839pub const PR_SUBJECT_TRACE_INFO: u32 = 1717633282u32;
38840pub const PR_SUBJECT_W: u32 = 3604511u32;
38841pub const PR_SUBMIT_FLAGS: u32 = 236191747u32;
38842pub const PR_SUPPLEMENTARY_INFO: u32 = 203096094u32;
38843pub const PR_SUPPLEMENTARY_INFO_A: u32 = 203096094u32;
38844pub const PR_SUPPLEMENTARY_INFO_W: u32 = 203096095u32;
38845pub const PR_SURNAME: u32 = 974192670u32;
38846pub const PR_SURNAME_A: u32 = 974192670u32;
38847pub const PR_SURNAME_W: u32 = 974192671u32;
38848pub const PR_SVR_GENERATING_QUOTA_MSG: u32 = 1073152030u32;
38849pub const PR_SYNCEVENT_FIRED: u32 = 1716453387u32;
38850pub const PR_SYNCEVENT_SUPPRESS_GUID: u32 = 947912962u32;
38851pub const PR_SYNCHRONIZE_FLAGS: u32 = 1709441027u32;
38852pub const PR_SYS_CONFIG_FOLDER_ENTRYID: u32 = 1714815234u32;
38853pub const PR_TELEX_NUMBER: u32 = 975962142u32;
38854pub const PR_TELEX_NUMBER_A: u32 = 975962142u32;
38855pub const PR_TELEX_NUMBER_W: u32 = 975962143u32;
38856pub const PR_TEMPLATEID: u32 = 956432642u32;
38857pub const PR_TEST_LINE_SPEED: u32 = 1714094338u32;
38858pub const PR_TITLE: u32 = 974585886u32;
38859pub const PR_TITLE_A: u32 = 974585886u32;
38860pub const PR_TITLE_W: u32 = 974585887u32;
38861pub const PR_TNEF_CORRELATION_KEY: u32 = 8323330u32;
38862pub const PR_TNEF_UNPROCESSED_PROPS: u32 = 245104898u32;
38863pub const PR_TRACE_INFO: u32 = 1717567746u32;
38864pub const PR_TRANSFER_ENABLED: u32 = 1714028555u32;
38865pub const PR_TRANSMITABLE_DISPLAY_NAME: u32 = 975175710u32;
38866pub const PR_TRANSMITABLE_DISPLAY_NAME_A: u32 = 975175710u32;
38867pub const PR_TRANSMITABLE_DISPLAY_NAME_W: u32 = 975175711u32;
38868pub const PR_TRANSPORT_KEY: u32 = 236322819u32;
38869pub const PR_TRANSPORT_MESSAGE_HEADERS: u32 = 8192030u32;
38870pub const PR_TRANSPORT_MESSAGE_HEADERS_A: u32 = 8192030u32;
38871pub const PR_TRANSPORT_MESSAGE_HEADERS_W: u32 = 8192031u32;
38872pub const PR_TRANSPORT_PROVIDERS: u32 = 1023541506u32;
38873pub const PR_TRANSPORT_STATUS: u32 = 235995139u32;
38874pub const PR_TRUST_SENDER: u32 = 242810883u32;
38875pub const PR_TRUST_SENDER_NO: i32 = 0i32;
38876pub const PR_TRUST_SENDER_YES: i32 = 1i32;
38877pub const PR_TTYTDD_PHONE_NUMBER: u32 = 977993758u32;
38878pub const PR_TTYTDD_PHONE_NUMBER_A: u32 = 977993758u32;
38879pub const PR_TTYTDD_PHONE_NUMBER_W: u32 = 977993759u32;
38880pub const PR_TYPE_OF_MTS_USER: u32 = 203161603u32;
38881pub const PR_URL_COMP_NAME: u32 = 284360734u32;
38882pub const PR_URL_COMP_NAME_A: u32 = 284360734u32;
38883pub const PR_URL_COMP_NAME_W: u32 = 284360735u32;
38884pub const PR_URL_NAME: u32 = 1728512030u32;
38885pub const PR_URL_NAME_A: u32 = 1728512030u32;
38886pub const PR_URL_NAME_W: u32 = 1728512031u32;
38887pub const PR_USER_CERTIFICATE: u32 = 975307010u32;
38888pub const PR_USER_ENTRYID: u32 = 1712914690u32;
38889pub const PR_USER_NAME: u32 = 1712979998u32;
38890pub const PR_VALID_FOLDER_MASK: u32 = 903806979u32;
38891pub const PR_VIEWS_ENTRYID: u32 = 904200450u32;
38892pub const PR_WEDDING_ANNIVERSARY: u32 = 977338432u32;
38893pub const PR_WIN32_SECURITY_DESCRIPTOR: u32 = 1025638658u32;
38894pub const PR_WIZARD_NO_PAB_PAGE: u32 = 1728118795u32;
38895pub const PR_WIZARD_NO_PST_PAGE: u32 = 1728053259u32;
38896pub const PR_X400_CONTENT_TYPE: u32 = 3932418u32;
38897pub const PR_X400_DEFERRED_DELIVERY_CANCEL: u32 = 1040777227u32;
38898pub const PR_X400_ENVELOPE_TYPE: u32 = 1716715523u32;
38899pub const PR_XMT_SECURITY_ROLE_1: u32 = 1025835266u32;
38900pub const PR_XMT_SECURITY_ROLE_1_AS_XML: u32 = 1025835038u32;
38901pub const PR_XMT_SECURITY_ROLE_2: u32 = 1025900802u32;
38902pub const PR_XMT_SECURITY_ROLE_2_AS_XML: u32 = 1025900574u32;
38903pub const PR_XMT_SECURITY_ROLE_3: u32 = 1025966338u32;
38904pub const PR_XMT_SECURITY_ROLE_3_AS_XML: u32 = 1025966110u32;
38905pub const PR_XMT_SECURITY_ROLE_4: u32 = 1026031874u32;
38906pub const PR_XMT_SECURITY_ROLE_4_AS_XML: u32 = 1026031646u32;
38907pub const PR_XMT_SECURITY_ROLE_5: u32 = 1026097410u32;
38908pub const PR_XMT_SECURITY_ROLE_5_AS_XML: u32 = 1026097182u32;
38909pub const PR_XMT_SECURITY_ROLE_6: u32 = 1026162946u32;
38910pub const PR_XMT_SECURITY_ROLE_6_AS_XML: u32 = 1026162718u32;
38911pub const PR_XMT_SECURITY_ROLE_7: u32 = 1026228482u32;
38912pub const PR_XMT_SECURITY_ROLE_7_AS_XML: u32 = 1026228254u32;
38913pub const PR_XMT_SECURITY_ROLE_8: u32 = 1026294018u32;
38914pub const PR_XMT_SECURITY_ROLE_8_AS_XML: u32 = 1026293790u32;
38915pub const PR_XPOS: u32 = 1057292291u32;
38916pub const PR_YPOS: u32 = 1057357827u32;
38917pub const PSETID_Address: windows_core::GUID =
38918    windows_core::GUID::from_u128(0x00062004_0000_0000_c000_000000000046);
38919pub const PSETID_Appointment: windows_core::GUID =
38920    windows_core::GUID::from_u128(0x00062002_0000_0000_c000_000000000046);
38921pub const PSETID_Attachment: windows_core::GUID =
38922    windows_core::GUID::from_u128(0x96357f7f_59e1_47d0_99a7_46515c183b54);
38923pub const PSETID_Common: windows_core::GUID =
38924    windows_core::GUID::from_u128(0x00062008_0000_0000_c000_000000000046);
38925pub const PSETID_Log: windows_core::GUID =
38926    windows_core::GUID::from_u128(0x0006200a_0000_0000_c000_000000000046);
38927pub const PSETID_Meeting: windows_core::GUID =
38928    windows_core::GUID::from_u128(0x6ed8da90_450b_101b_98da_00aa003f1305);
38929pub const PSETID_Messaging: windows_core::GUID =
38930    windows_core::GUID::from_u128(0x41f28f13_83f4_4114_a584_eedb5a6b0bff);
38931pub const PSETID_Note: windows_core::GUID =
38932    windows_core::GUID::from_u128(0x0006200e_0000_0000_c000_000000000046);
38933pub const PSETID_PostRss: windows_core::GUID =
38934    windows_core::GUID::from_u128(0x00062041_0000_0000_c000_000000000046);
38935pub const PSETID_Remote: windows_core::GUID =
38936    windows_core::GUID::from_u128(0x00062014_0000_0000_c000_000000000046);
38937pub const PSETID_Report: windows_core::GUID =
38938    windows_core::GUID::from_u128(0x00062013_0000_0000_c000_000000000046);
38939pub const PSETID_Sharing: windows_core::GUID =
38940    windows_core::GUID::from_u128(0x00062040_0000_0000_c000_000000000046);
38941pub const PSETID_Task: windows_core::GUID =
38942    windows_core::GUID::from_u128(0x00062003_0000_0000_c000_000000000046);
38943pub const PSETID_UnifiedMessaging: windows_core::GUID =
38944    windows_core::GUID::from_u128(0x4442858e_a9e3_4e80_b900_317a210cc15b);
38945pub const PSETID_XmlExtractedEntities: windows_core::GUID =
38946    windows_core::GUID::from_u128(0x23239608_685d_4732_9c55_4c95cb4e8e33);
38947pub const PSTF_BEST_ENCRYPTION: u32 = 536870912u32;
38948pub const PSTF_COMPRESSABLE_ENCRYPTION: u32 = 1073741824u32;
38949pub const PSTF_NO_ENCRYPTION: u32 = 2147483648u32;
38950pub const PST_EXTERN_PROPID_BASE: u32 = 26368u32;
38951pub const PS_INTERNET_HEADERS: windows_core::GUID =
38952    windows_core::GUID::from_u128(0x00020386_0000_0000_c000_000000000046);
38953pub const PS_MAPI: windows_core::GUID =
38954    windows_core::GUID::from_u128(0x00020328_0000_0000_c000_000000000046);
38955pub const PS_PUBLIC_STRINGS: windows_core::GUID =
38956    windows_core::GUID::from_u128(0x00020329_0000_0000_c000_000000000046);
38957pub const PS_ROUTING_ADDRTYPE: windows_core::GUID =
38958    windows_core::GUID::from_u128(0x00020381_0000_0000_c000_000000000046);
38959pub const PS_ROUTING_DISPLAY_NAME: windows_core::GUID =
38960    windows_core::GUID::from_u128(0x00020382_0000_0000_c000_000000000046);
38961pub const PS_ROUTING_EMAIL_ADDRESSES: windows_core::GUID =
38962    windows_core::GUID::from_u128(0x00020380_0000_0000_c000_000000000046);
38963pub const PS_ROUTING_ENTRYID: windows_core::GUID =
38964    windows_core::GUID::from_u128(0x00020383_0000_0000_c000_000000000046);
38965pub const PS_ROUTING_SEARCH_KEY: windows_core::GUID =
38966    windows_core::GUID::from_u128(0x00020384_0000_0000_c000_000000000046);
38967pub const PT_ACTIONS: u32 = 254u32;
38968pub const PT_APPTIME: u32 = 7u32;
38969pub const PT_BINARY: u32 = 258u32;
38970pub const PT_BOOLEAN: u32 = 11u32;
38971pub const PT_CLSID: u32 = 72u32;
38972pub const PT_CURRENCY: u32 = 6u32;
38973pub const PT_DOUBLE: u32 = 5u32;
38974pub const PT_ERROR: u32 = 10u32;
38975pub const PT_FILE_EA: u32 = 260u32;
38976pub const PT_FILE_HANDLE: u32 = 259u32;
38977pub const PT_FLOAT: u32 = 4u32;
38978pub const PT_I2: u32 = 2u32;
38979pub const PT_I4: u32 = 3u32;
38980pub const PT_I8: u32 = 20u32;
38981pub const PT_LONG: u32 = 3u32;
38982pub const PT_LONGLONG: u32 = 20u32;
38983pub const PT_MV_APPTIME: u32 = 4103u32;
38984pub const PT_MV_BINARY: u32 = 4354u32;
38985pub const PT_MV_CLSID: u32 = 4168u32;
38986pub const PT_MV_CURRENCY: u32 = 4102u32;
38987pub const PT_MV_DOUBLE: u32 = 4101u32;
38988pub const PT_MV_FLOAT: u32 = 4100u32;
38989pub const PT_MV_I2: u32 = 4098u32;
38990pub const PT_MV_I4: u32 = 4099u32;
38991pub const PT_MV_I8: u32 = 4116u32;
38992pub const PT_MV_LONG: u32 = 4099u32;
38993pub const PT_MV_LONGLONG: u32 = 4116u32;
38994pub const PT_MV_R4: u32 = 4100u32;
38995pub const PT_MV_R8: u32 = 4101u32;
38996pub const PT_MV_SHORT: u32 = 4098u32;
38997pub const PT_MV_STRING8: u32 = 4126u32;
38998pub const PT_MV_SYSTIME: u32 = 4160u32;
38999pub const PT_MV_TSTRING: u32 = 4126u32;
39000pub const PT_MV_UNICODE: u32 = 4127u32;
39001pub const PT_NULL: u32 = 1u32;
39002pub const PT_OBJECT: u32 = 13u32;
39003pub const PT_PTR: u32 = 259u32;
39004pub const PT_R4: u32 = 4u32;
39005pub const PT_R8: u32 = 5u32;
39006pub const PT_SHORT: u32 = 2u32;
39007pub const PT_SRESTRICTION: u32 = 253u32;
39008pub const PT_STRING8: u32 = 30u32;
39009pub const PT_SYSTIME: u32 = 64u32;
39010pub const PT_TSTRING: u32 = 31u32;
39011pub const PT_UNICODE: u32 = 31u32;
39012pub const PT_UNSPECIFIED: u32 = 0u32;
39013pub const PT_VIRTUAL: u32 = 261u32;
39014#[repr(C)]
39015#[derive(Clone, Copy, Debug, PartialEq)]
39016pub struct READSTATE {
39017    pub cbSourceKey: u32,
39018    pub pbSourceKey: *mut u8,
39019    pub ulFlags: u32,
39020}
39021impl Default for READSTATE {
39022    fn default() -> Self {
39023        unsafe { core::mem::zeroed() }
39024    }
39025}
39026pub const RECURSIVE_SEARCH: u32 = 4u32;
39027pub const RECURSIVE_SORT: u32 = 2u32;
39028pub const REFRESH_XP_HEADER_CACHE: u32 = 65536u32;
39029#[repr(transparent)]
39030#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
39031pub struct RELOADTYPE(pub i32);
39032pub const RELOAD_HEADER_APPEND: RELOADTYPE = RELOADTYPE(2i32);
39033pub const RELOAD_HEADER_NONE: RELOADTYPE = RELOADTYPE(0i32);
39034pub const RELOAD_HEADER_REPLACE: RELOADTYPE = RELOADTYPE(3i32);
39035pub const RELOAD_HEADER_RESET: RELOADTYPE = RELOADTYPE(1i32);
39036pub const RELOP_EQ: u32 = 4u32;
39037pub const RELOP_GE: u32 = 3u32;
39038pub const RELOP_GT: u32 = 2u32;
39039pub const RELOP_LE: u32 = 1u32;
39040pub const RELOP_LT: u32 = 0u32;
39041pub const RELOP_MEMBER_OF_DL: u32 = 100u32;
39042pub const RELOP_NE: u32 = 5u32;
39043pub const RELOP_RE: u32 = 6u32;
39044pub type REMOVEPREPROCESSINFO = Option<
39045    unsafe extern "system" fn(lpmessage: windows_core::Ref<IMessage>) -> windows_core::HRESULT,
39046>;
39047pub const RESOLVE_METHOD_DEFAULT: u32 = 0u32;
39048pub const RESOLVE_METHOD_LAST_WRITER_WINS: u32 = 1u32;
39049pub const RESOLVE_METHOD_NO_CONFLICT_NOTIFICATION: u32 = 2u32;
39050pub const RESTART_SEARCH: u32 = 2u32;
39051pub const RES_AND: u32 = 0u32;
39052pub const RES_ANNOTATION: u32 = 12u32;
39053pub const RES_BITMASK: u32 = 6u32;
39054pub const RES_COMMENT: u32 = 10u32;
39055pub const RES_COMPAREPROPS: u32 = 5u32;
39056pub const RES_CONTENT: u32 = 3u32;
39057pub const RES_COUNT: u32 = 11u32;
39058pub const RES_EXIST: u32 = 8u32;
39059pub const RES_NOT: u32 = 2u32;
39060pub const RES_OR: u32 = 1u32;
39061pub const RES_PROPERTY: u32 = 4u32;
39062pub const RES_SIZE: u32 = 7u32;
39063pub const RES_SUBRESTRICTION: u32 = 9u32;
39064pub const RETENTION_FLAGS_AUTOTAG: u32 = 4u32;
39065pub const RETENTION_FLAGS_EXPLICIT: u32 = 1u32;
39066pub const RETENTION_FLAGS_EXPLICIT_ARCHIVE: u32 = 16u32;
39067pub const RETENTION_FLAGS_PERSONAL: u32 = 8u32;
39068pub const RETENTION_FLAGS_TAG_CHANGED: u32 = 2u32;
39069#[repr(C)]
39070#[derive(Clone, Copy, Debug, PartialEq)]
39071pub struct RFC1522INFO {
39072    pub fRfc1522Allowed: windows_core::BOOL,
39073    pub fRfc1522Used: windows_core::BOOL,
39074    pub fAllow8bit: windows_core::BOOL,
39075    pub hRfc1522Cset: *mut HCHARSET__,
39076}
39077impl Default for RFC1522INFO {
39078    fn default() -> Self {
39079        unsafe { core::mem::zeroed() }
39080    }
39081}
39082pub const ROHAUTH_BASIC: u32 = 1u32;
39083pub const ROHAUTH_NTLM: u32 = 2u32;
39084pub const ROHFLAGS_HTTP_FIRST_ON_FAST: u32 = 8u32;
39085pub const ROHFLAGS_HTTP_FIRST_ON_SLOW: u32 = 32u32;
39086pub const ROHFLAGS_MUTUAL_AUTH: u32 = 4u32;
39087pub const ROHFLAGS_SSL_ONLY: u32 = 2u32;
39088pub const ROHFLAGS_USE_ROH: u32 = 1u32;
39089pub const ROLESCOPE_FOLDER: u32 = 1u32;
39090pub const ROLESCOPE_MAX: u32 = 1u32;
39091pub const ROLESCOPE_OBJECT: u32 = 0u32;
39092#[repr(C)]
39093#[derive(Clone, Copy, Debug, PartialEq)]
39094pub struct ROWENTRY {
39095    pub ulRowFlags: u32,
39096    pub cValues: u32,
39097    pub rgPropVals: *mut SPropValue,
39098}
39099impl Default for ROWENTRY {
39100    fn default() -> Self {
39101        unsafe { core::mem::zeroed() }
39102    }
39103}
39104#[repr(C)]
39105#[derive(Clone, Copy, Debug, PartialEq)]
39106pub struct ROWLIST {
39107    pub cEntries: u32,
39108    pub aEntries: [ROWENTRY; 1],
39109}
39110impl Default for ROWLIST {
39111    fn default() -> Self {
39112        unsafe { core::mem::zeroed() }
39113    }
39114}
39115pub const ROWLIST_REPLACE: u32 = 1u32;
39116pub const ROW_ADD: u32 = 1u32;
39117pub const ROW_MODIFY: u32 = 2u32;
39118pub const ROW_REMOVE: u32 = 4u32;
39119pub const RTF_SYNC_BODY_CHANGED: u32 = 2u32;
39120pub const RTF_SYNC_RTF_CHANGED: u32 = 1u32;
39121#[repr(C)]
39122#[derive(Clone, Copy, Debug, Default, PartialEq)]
39123pub struct RTF_WCSINFO {
39124    pub size: u32,
39125    pub ulFlags: u32,
39126    pub ulInCodePage: u32,
39127    pub ulOutCodePage: u32,
39128}
39129#[repr(C)]
39130#[derive(Clone, Copy, Debug, Default, PartialEq)]
39131pub struct RTF_WCSRETINFO {
39132    pub size: u32,
39133    pub ulStreamFlags: u32,
39134}
39135pub const RULE_ERR_CREATE_DAE: u32 = 5u32;
39136pub const RULE_ERR_CREATE_DAM: u32 = 8u32;
39137pub const RULE_ERR_DELIVERY: u32 = 3u32;
39138pub const RULE_ERR_EXECUTION: u32 = 11u32;
39139pub const RULE_ERR_FIRST: u32 = 1u32;
39140pub const RULE_ERR_LAST: u32 = 13u32;
39141pub const RULE_ERR_LOAD: u32 = 2u32;
39142pub const RULE_ERR_NO_FOLDER: u32 = 6u32;
39143pub const RULE_ERR_NO_RIGHTS: u32 = 7u32;
39144pub const RULE_ERR_NO_SENDAS: u32 = 9u32;
39145pub const RULE_ERR_NO_TEMPLATE: u32 = 10u32;
39146pub const RULE_ERR_PARSING: u32 = 4u32;
39147pub const RULE_ERR_QUOTA_EXCEEDED: u32 = 12u32;
39148pub const RULE_ERR_TOO_MANY_RECIPS: u32 = 13u32;
39149pub const RULE_ERR_UNKNOWN: u32 = 1u32;
39150pub const SAVEBODY_KEEPBOUNDARY: u32 = 1u32;
39151#[repr(transparent)]
39152#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
39153pub struct SAVEOPTS(pub i32);
39154pub const SAVEOPTS_NOSAVE: SAVEOPTS = SAVEOPTS(1i32);
39155pub const SAVEOPTS_PROMPTSAVE: SAVEOPTS = SAVEOPTS(2i32);
39156pub const SAVEOPTS_SAVEIFDIRTY: SAVEOPTS = SAVEOPTS(0i32);
39157pub const SAVE_FORMAT_RICHTEXT: u32 = 2u32;
39158pub const SAVE_FORMAT_TEXT: u32 = 1u32;
39159pub const SAVE_RFC1521: MIMESAVETYPE = MIMESAVETYPE(1i32);
39160pub const SAVE_RFC822: MIMESAVETYPE = MIMESAVETYPE(0i32);
39161#[repr(C)]
39162#[derive(Clone, Copy, Debug, PartialEq)]
39163pub struct SAndRestriction {
39164    pub cRes: u32,
39165    pub lpRes: *mut SRestriction,
39166}
39167impl Default for SAndRestriction {
39168    fn default() -> Self {
39169        unsafe { core::mem::zeroed() }
39170    }
39171}
39172#[repr(C)]
39173#[derive(Clone, Copy, Debug, PartialEq)]
39174pub struct SAnnotationRestriction {
39175    pub cValues: u32,
39176    pub lpRes: *mut SRestriction,
39177    pub lpProp: *mut SPropValue,
39178}
39179impl Default for SAnnotationRestriction {
39180    fn default() -> Self {
39181        unsafe { core::mem::zeroed() }
39182    }
39183}
39184#[repr(C)]
39185#[derive(Clone, Copy, Debug, PartialEq)]
39186pub struct SAppTimeArray {
39187    pub cValues: u32,
39188    pub lpat: *mut f64,
39189}
39190impl Default for SAppTimeArray {
39191    fn default() -> Self {
39192        unsafe { core::mem::zeroed() }
39193    }
39194}
39195#[repr(C)]
39196#[derive(Clone, Copy, Debug, PartialEq)]
39197pub struct SBinary {
39198    pub cb: u32,
39199    pub lpb: *mut u8,
39200}
39201impl Default for SBinary {
39202    fn default() -> Self {
39203        unsafe { core::mem::zeroed() }
39204    }
39205}
39206#[repr(C)]
39207#[derive(Clone, Copy, Debug, PartialEq)]
39208pub struct SBinaryArray {
39209    pub cValues: u32,
39210    pub lpbin: *mut SBinary,
39211}
39212impl Default for SBinaryArray {
39213    fn default() -> Self {
39214        unsafe { core::mem::zeroed() }
39215    }
39216}
39217#[repr(C)]
39218#[derive(Clone, Copy, Debug, Default, PartialEq)]
39219pub struct SBitMaskRestriction {
39220    pub relBMR: u32,
39221    pub ulPropTag: u32,
39222    pub ulMask: u32,
39223}
39224#[repr(C)]
39225#[derive(Clone, Copy, Debug, PartialEq)]
39226pub struct SCommentRestriction {
39227    pub cValues: u32,
39228    pub lpRes: *mut SRestriction,
39229    pub lpProp: *mut SPropValue,
39230}
39231impl Default for SCommentRestriction {
39232    fn default() -> Self {
39233        unsafe { core::mem::zeroed() }
39234    }
39235}
39236#[repr(C)]
39237#[derive(Clone, Copy, Debug, Default, PartialEq)]
39238pub struct SComparePropsRestriction {
39239    pub relop: u32,
39240    pub ulPropTag1: u32,
39241    pub ulPropTag2: u32,
39242}
39243#[repr(C)]
39244#[derive(Clone, Copy, Debug, PartialEq)]
39245pub struct SContentRestriction {
39246    pub ulFuzzyLevel: u32,
39247    pub ulPropTag: u32,
39248    pub lpProp: *mut SPropValue,
39249}
39250impl Default for SContentRestriction {
39251    fn default() -> Self {
39252        unsafe { core::mem::zeroed() }
39253    }
39254}
39255#[repr(C)]
39256#[derive(Clone, Copy, Debug, PartialEq)]
39257pub struct SCountRestriction {
39258    pub ulCount: u32,
39259    pub lpRes: *mut SRestriction,
39260}
39261impl Default for SCountRestriction {
39262    fn default() -> Self {
39263        unsafe { core::mem::zeroed() }
39264    }
39265}
39266#[repr(C)]
39267#[derive(Clone, Copy, Debug, PartialEq)]
39268pub struct SCurrencyArray {
39269    pub cValues: u32,
39270    pub lpcur: *mut windows::Win32::System::Com::CY,
39271}
39272impl Default for SCurrencyArray {
39273    fn default() -> Self {
39274        unsafe { core::mem::zeroed() }
39275    }
39276}
39277#[repr(C)]
39278#[derive(Clone, Copy, Debug, PartialEq)]
39279pub struct SDateTimeArray {
39280    pub cValues: u32,
39281    pub lpft: *mut windows::Win32::Foundation::FILETIME,
39282}
39283impl Default for SDateTimeArray {
39284    fn default() -> Self {
39285        unsafe { core::mem::zeroed() }
39286    }
39287}
39288#[repr(C)]
39289#[derive(Clone, Copy, Debug, PartialEq)]
39290pub struct SDoubleArray {
39291    pub cValues: u32,
39292    pub lpdbl: *mut f64,
39293}
39294impl Default for SDoubleArray {
39295    fn default() -> Self {
39296        unsafe { core::mem::zeroed() }
39297    }
39298}
39299pub const SEARCH_FOREGROUND: u32 = 8u32;
39300pub const SEARCH_REBUILD: u32 = 2u32;
39301pub const SEARCH_RECURSIVE: u32 = 4u32;
39302pub const SEARCH_RUNNING: u32 = 1u32;
39303pub const SECURITY_DESCRIPTOR_TRANSFER_VERSION: u32 = 3u32;
39304pub const SECURITY_ENCRYPTED: u32 = 2u32;
39305pub const SECURITY_SIGNED: u32 = 1u32;
39306pub const SEF_ENCRYPTWITHNOSENDERCERT: u32 = 1u32;
39307pub const SEF_MASK: u32 = 65535u32;
39308pub const SEF_SENDERSCERTPROVIDED: u32 = 2u32;
39309pub const SENSITIVITY_COMPANY_CONFIDENTIAL: u32 = 3u32;
39310pub const SENSITIVITY_NONE: u32 = 0u32;
39311pub const SENSITIVITY_PERSONAL: u32 = 1u32;
39312pub const SENSITIVITY_PRIVATE: u32 = 2u32;
39313pub type SERVICEWIZARDDLGPROC = Option<
39314    unsafe extern "system" fn(
39315        hdlg: windows::Win32::Foundation::HWND,
39316        wmsgid: u32,
39317        wparam: windows::Win32::Foundation::WPARAM,
39318        lparam: windows::Win32::Foundation::LPARAM,
39319    ) -> windows_core::BOOL,
39320>;
39321pub const SERVICE_CREATE_WITH_STORE: u32 = 4u32;
39322pub const SERVICE_DEFAULT_STORE: u32 = 1u32;
39323pub const SERVICE_LOGON_FAILED: u32 = 32u32;
39324pub const SERVICE_NO_PRIMARY_IDENTITY: u32 = 32u32;
39325pub const SERVICE_PRIMARY_IDENTITY: u32 = 8u32;
39326pub const SERVICE_SINGLE_COPY: u32 = 2u32;
39327pub const SERVICE_UI_ALLOWED: u32 = 16u32;
39328pub const SERVICE_UI_ALWAYS: u32 = 2u32;
39329pub const SETID_AirSync: windows_core::GUID =
39330    windows_core::GUID::from_u128(0x71035549_0739_4dcb_9163_00f0580dbbdf);
39331#[repr(C)]
39332#[derive(Clone, Copy, Debug, Default, PartialEq)]
39333pub struct SExistRestriction {
39334    pub ulReserved1: u32,
39335    pub ulPropTag: u32,
39336    pub ulReserved2: u32,
39337}
39338pub const SF_DISABLE_STARTUP_SYNC: u32 = 1u32;
39339#[repr(C)]
39340#[derive(Clone, Copy, Debug, PartialEq)]
39341pub struct SGuidArray {
39342    pub cValues: u32,
39343    pub lpguid: *mut windows_core::GUID,
39344}
39345impl Default for SGuidArray {
39346    fn default() -> Self {
39347        unsafe { core::mem::zeroed() }
39348    }
39349}
39350pub const SHALLOW_SEARCH: u32 = 8u32;
39351pub const SHOW_SOFT_DELETES: u32 = 2u32;
39352pub const SHOW_SUBFOLDERS: u32 = 4u32;
39353pub const SHOW_XP_SESSION_UI: u32 = 4194304u32;
39354pub const SIMPLE: CERTNAMETYPE = CERTNAMETYPE(0i32);
39355#[repr(C)]
39356#[derive(Clone, Copy, Debug, PartialEq)]
39357pub struct SLPSTRArray {
39358    pub cValues: u32,
39359    pub lppszA: *mut windows_core::PSTR,
39360}
39361impl Default for SLPSTRArray {
39362    fn default() -> Self {
39363        unsafe { core::mem::zeroed() }
39364    }
39365}
39366#[repr(C)]
39367#[derive(Clone, Copy, Debug, PartialEq)]
39368pub struct SLargeIntegerArray {
39369    pub cValues: u32,
39370    pub lpli: *mut i64,
39371}
39372impl Default for SLargeIntegerArray {
39373    fn default() -> Self {
39374        unsafe { core::mem::zeroed() }
39375    }
39376}
39377#[repr(C)]
39378#[derive(Clone, Copy, Debug, PartialEq)]
39379pub struct SLongArray {
39380    pub cValues: u32,
39381    pub lpl: *mut i32,
39382}
39383impl Default for SLongArray {
39384    fn default() -> Self {
39385        unsafe { core::mem::zeroed() }
39386    }
39387}
39388#[repr(C)]
39389#[derive(Clone, Debug, PartialEq)]
39390pub struct SMAPIFormInfoArray {
39391    pub cForms: u32,
39392    pub aFormInfo: [core::mem::ManuallyDrop<Option<IMAPIFormInfo>>; 1],
39393}
39394impl Default for SMAPIFormInfoArray {
39395    fn default() -> Self {
39396        unsafe { core::mem::zeroed() }
39397    }
39398}
39399#[repr(C)]
39400#[derive(Clone, Copy)]
39401pub struct SMAPIFormProp {
39402    pub ulFlags: u32,
39403    pub nPropType: u32,
39404    pub nmid: MAPINAMEID,
39405    pub pszDisplayName: *mut i8,
39406    pub nSpecialType: u32,
39407    pub u: SMAPIFormProp_0,
39408}
39409impl Default for SMAPIFormProp {
39410    fn default() -> Self {
39411        unsafe { core::mem::zeroed() }
39412    }
39413}
39414#[repr(C)]
39415#[derive(Clone, Copy)]
39416pub union SMAPIFormProp_0 {
39417    pub s1: SMAPIFormProp_0_0,
39418}
39419impl Default for SMAPIFormProp_0 {
39420    fn default() -> Self {
39421        unsafe { core::mem::zeroed() }
39422    }
39423}
39424#[repr(C)]
39425#[derive(Clone, Copy)]
39426pub struct SMAPIFormProp_0_0 {
39427    pub nmidIdx: MAPINAMEID,
39428    pub cfpevAvailable: u32,
39429    pub pfpevAvailable: *mut SMAPIFormPropEnumVal,
39430}
39431impl Default for SMAPIFormProp_0_0 {
39432    fn default() -> Self {
39433        unsafe { core::mem::zeroed() }
39434    }
39435}
39436#[repr(C)]
39437#[derive(Clone, Copy)]
39438pub struct SMAPIFormPropArray {
39439    pub cProps: u32,
39440    pub ulPad: u32,
39441    pub aFormProp: [SMAPIFormProp; 1],
39442}
39443impl Default for SMAPIFormPropArray {
39444    fn default() -> Self {
39445        unsafe { core::mem::zeroed() }
39446    }
39447}
39448#[repr(C)]
39449#[derive(Clone, Copy, Debug, PartialEq)]
39450pub struct SMAPIFormPropEnumVal {
39451    pub pszDisplayName: *mut i8,
39452    pub nVal: u32,
39453}
39454impl Default for SMAPIFormPropEnumVal {
39455    fn default() -> Self {
39456        unsafe { core::mem::zeroed() }
39457    }
39458}
39459#[repr(C)]
39460#[derive(Clone, Copy, Debug, PartialEq)]
39461pub struct SMAPIVerb {
39462    pub lVerb: i32,
39463    pub szVerbname: *mut i8,
39464    pub fuFlags: u32,
39465    pub grfAttribs: u32,
39466    pub ulFlags: u32,
39467}
39468impl Default for SMAPIVerb {
39469    fn default() -> Self {
39470        unsafe { core::mem::zeroed() }
39471    }
39472}
39473#[repr(C)]
39474#[derive(Clone, Copy, Debug, PartialEq)]
39475pub struct SMAPIVerbArray {
39476    pub cMAPIVerb: u32,
39477    pub aMAPIVerb: [SMAPIVerb; 1],
39478}
39479impl Default for SMAPIVerbArray {
39480    fn default() -> Self {
39481        unsafe { core::mem::zeroed() }
39482    }
39483}
39484#[repr(C)]
39485#[derive(Clone, Copy, Debug, PartialEq)]
39486pub struct SMessageClassArray {
39487    pub cValues: u32,
39488    pub aMessageClass: [windows_core::PSTR; 1],
39489}
39490impl Default for SMessageClassArray {
39491    fn default() -> Self {
39492        unsafe { core::mem::zeroed() }
39493    }
39494}
39495#[repr(C)]
39496#[derive(Clone, Copy, Debug, PartialEq)]
39497pub struct SNotRestriction {
39498    pub ulReserved: u32,
39499    pub lpRes: *mut SRestriction,
39500}
39501impl Default for SNotRestriction {
39502    fn default() -> Self {
39503        unsafe { core::mem::zeroed() }
39504    }
39505}
39506pub const SOF_UNIQUEFILENAME: u32 = 2147483648u32;
39507#[repr(C)]
39508#[derive(Clone, Copy, Debug, PartialEq)]
39509pub struct SOrRestriction {
39510    pub cRes: u32,
39511    pub lpRes: *mut SRestriction,
39512}
39513impl Default for SOrRestriction {
39514    fn default() -> Self {
39515        unsafe { core::mem::zeroed() }
39516    }
39517}
39518pub const SPAMFILTER_ONSAVE: u32 = 128u32;
39519#[repr(C)]
39520#[derive(Clone, Copy, Debug, PartialEq)]
39521pub struct SPropAttrArray {
39522    pub cValues: u32,
39523    pub aPropAttr: [u32; 1],
39524}
39525impl Default for SPropAttrArray {
39526    fn default() -> Self {
39527        unsafe { core::mem::zeroed() }
39528    }
39529}
39530#[repr(C)]
39531#[derive(Clone, Copy, Debug, Default, PartialEq)]
39532pub struct SPropProblem {
39533    pub ulIndex: u32,
39534    pub ulPropTag: u32,
39535    pub scode: i32,
39536}
39537#[repr(C)]
39538#[derive(Clone, Copy, Debug, PartialEq)]
39539pub struct SPropProblemArray {
39540    pub cProblem: u32,
39541    pub aProblem: [SPropProblem; 1],
39542}
39543impl Default for SPropProblemArray {
39544    fn default() -> Self {
39545        unsafe { core::mem::zeroed() }
39546    }
39547}
39548#[repr(C)]
39549#[derive(Clone, Copy, Debug, PartialEq)]
39550pub struct SPropTagArray {
39551    pub cValues: u32,
39552    pub aulPropTag: [u32; 1],
39553}
39554impl Default for SPropTagArray {
39555    fn default() -> Self {
39556        unsafe { core::mem::zeroed() }
39557    }
39558}
39559#[repr(C)]
39560#[derive(Clone, Copy)]
39561pub struct SPropValue {
39562    pub ulPropTag: u32,
39563    pub dwAlignPad: u32,
39564    pub Value: __UPV,
39565}
39566impl Default for SPropValue {
39567    fn default() -> Self {
39568        unsafe { core::mem::zeroed() }
39569    }
39570}
39571#[repr(C)]
39572#[derive(Clone, Copy, Debug, PartialEq)]
39573pub struct SPropertyRestriction {
39574    pub relop: u32,
39575    pub ulPropTag: u32,
39576    pub lpProp: *mut SPropValue,
39577}
39578impl Default for SPropertyRestriction {
39579    fn default() -> Self {
39580        unsafe { core::mem::zeroed() }
39581    }
39582}
39583#[repr(C)]
39584#[derive(Clone, Copy, Debug, PartialEq)]
39585pub struct SRealArray {
39586    pub cValues: u32,
39587    pub lpflt: *mut f32,
39588}
39589impl Default for SRealArray {
39590    fn default() -> Self {
39591        unsafe { core::mem::zeroed() }
39592    }
39593}
39594#[repr(C)]
39595#[derive(Clone, Copy)]
39596pub struct SRestriction {
39597    pub rt: u32,
39598    pub res: SRestriction_0,
39599}
39600impl Default for SRestriction {
39601    fn default() -> Self {
39602        unsafe { core::mem::zeroed() }
39603    }
39604}
39605#[repr(C)]
39606#[derive(Clone, Copy)]
39607pub union SRestriction_0 {
39608    pub resCompareProps: SComparePropsRestriction,
39609    pub resAnd: SAndRestriction,
39610    pub resOr: SOrRestriction,
39611    pub resNot: SNotRestriction,
39612    pub resContent: SContentRestriction,
39613    pub resProperty: SPropertyRestriction,
39614    pub resBitMask: SBitMaskRestriction,
39615    pub resSize: SSizeRestriction,
39616    pub resExist: SExistRestriction,
39617    pub resSub: SSubRestriction,
39618    pub resComment: SCommentRestriction,
39619    pub resAnnotation: SAnnotationRestriction,
39620    pub resCount: SCountRestriction,
39621}
39622impl Default for SRestriction_0 {
39623    fn default() -> Self {
39624        unsafe { core::mem::zeroed() }
39625    }
39626}
39627#[repr(C)]
39628#[derive(Clone, Copy, Debug, PartialEq)]
39629pub struct SRow {
39630    pub ulAdrEntryPad: u32,
39631    pub cValues: u32,
39632    pub lpProps: *mut SPropValue,
39633}
39634impl Default for SRow {
39635    fn default() -> Self {
39636        unsafe { core::mem::zeroed() }
39637    }
39638}
39639#[repr(C)]
39640#[derive(Clone, Copy, Debug, PartialEq)]
39641pub struct SRowSet {
39642    pub cRows: u32,
39643    pub aRow: [SRow; 1],
39644}
39645impl Default for SRowSet {
39646    fn default() -> Self {
39647        unsafe { core::mem::zeroed() }
39648    }
39649}
39650#[repr(C)]
39651#[derive(Clone, Copy, Debug, PartialEq)]
39652pub struct SShortArray {
39653    pub cValues: u32,
39654    pub lpi: *mut i16,
39655}
39656impl Default for SShortArray {
39657    fn default() -> Self {
39658        unsafe { core::mem::zeroed() }
39659    }
39660}
39661#[repr(C)]
39662#[derive(Clone, Copy, Debug, Default, PartialEq)]
39663pub struct SSizeRestriction {
39664    pub relop: u32,
39665    pub ulPropTag: u32,
39666    pub cb: u32,
39667}
39668#[repr(C)]
39669#[derive(Clone, Copy, Debug, Default, PartialEq)]
39670pub struct SSortOrder {
39671    pub ulPropTag: u32,
39672    pub ulOrder: u32,
39673}
39674#[repr(C)]
39675#[derive(Clone, Copy, Debug, PartialEq)]
39676pub struct SSortOrderSet {
39677    pub cSorts: u32,
39678    pub cCategories: u32,
39679    pub cExpanded: u32,
39680    pub aSort: [SSortOrder; 1],
39681}
39682impl Default for SSortOrderSet {
39683    fn default() -> Self {
39684        unsafe { core::mem::zeroed() }
39685    }
39686}
39687#[repr(C)]
39688#[derive(Clone, Copy, Debug, PartialEq)]
39689pub struct SSubRestriction {
39690    pub ulSubObject: u32,
39691    pub lpRes: *mut SRestriction,
39692}
39693impl Default for SSubRestriction {
39694    fn default() -> Self {
39695        unsafe { core::mem::zeroed() }
39696    }
39697}
39698pub const STATUSROW_UPDATE: u32 = 268435456u32;
39699pub const STATUS_AVAILABLE: u32 = 1u32;
39700pub const STATUS_CHANGE_PASSWORD: u32 = 4u32;
39701pub const STATUS_DEFAULT_OUTBOUND: u32 = 1u32;
39702pub const STATUS_DEFAULT_STORE: u32 = 2u32;
39703pub const STATUS_FAILURE: u32 = 4u32;
39704pub const STATUS_FLUSH_QUEUES: u32 = 8u32;
39705pub const STATUS_INBOUND_ACTIVE: u32 = 131072u32;
39706pub const STATUS_INBOUND_ENABLED: u32 = 65536u32;
39707pub const STATUS_INBOUND_FLUSH: u32 = 262144u32;
39708pub const STATUS_NEED_IPM_TREE: u32 = 2048u32;
39709pub const STATUS_NO_DEFAULT_STORE: u32 = 64u32;
39710pub const STATUS_NO_PRIMARY_IDENTITY: u32 = 32u32;
39711#[repr(C)]
39712#[derive(Clone, Copy, Debug, PartialEq)]
39713pub struct STATUS_OBJECT_NOTIFICATION {
39714    pub cbEntryID: u32,
39715    pub lpEntryID: *mut ENTRYID,
39716    pub cValues: u32,
39717    pub lpPropVals: *mut SPropValue,
39718}
39719impl Default for STATUS_OBJECT_NOTIFICATION {
39720    fn default() -> Self {
39721        unsafe { core::mem::zeroed() }
39722    }
39723}
39724pub const STATUS_OFFLINE: u32 = 2u32;
39725pub const STATUS_OUTBOUND_ACTIVE: u32 = 2097152u32;
39726pub const STATUS_OUTBOUND_ENABLED: u32 = 1048576u32;
39727pub const STATUS_OUTBOUND_FLUSH: u32 = 4194304u32;
39728pub const STATUS_OWN_STORE: u32 = 256u32;
39729pub const STATUS_PRIMARY_IDENTITY: u32 = 4u32;
39730pub const STATUS_PRIMARY_STORE: u32 = 4096u32;
39731pub const STATUS_REMOTE_ACCESS: u32 = 8388608u32;
39732pub const STATUS_SECONDARY_STORE: u32 = 8192u32;
39733pub const STATUS_SETTINGS_DIALOG: u32 = 2u32;
39734pub const STATUS_SIMPLE_STORE: u32 = 8u32;
39735pub const STATUS_TEMP_SECTION: u32 = 128u32;
39736pub const STATUS_VALIDATE_STATE: u32 = 1u32;
39737pub const STATUS_XP_PREFER_LAST: u32 = 16u32;
39738pub const STGSTRM_CREATE: u32 = 4096u32;
39739pub const STGSTRM_CURRENT: u32 = 268435456u32;
39740pub const STGSTRM_MODIFY: u32 = 2u32;
39741pub const STGSTRM_RESET: u32 = 0u32;
39742pub const STOCK_REPLY_TEMPLATE: u32 = 2u32;
39743pub const STOP_SEARCH: u32 = 1u32;
39744pub const STORE_ATTACH_OK: u32 = 32u32;
39745pub const STORE_CATEGORIZE_OK: u32 = 1024u32;
39746pub const STORE_CREATE_OK: u32 = 16u32;
39747pub const STORE_ENTRYID_UNIQUE: u32 = 1u32;
39748pub const STORE_HAS_SEARCHES: u32 = 16777216u32;
39749pub const STORE_ITEMPROC: u32 = 2097152u32;
39750pub const STORE_MODIFY_OK: u32 = 8u32;
39751pub const STORE_MV_PROPS_OK: u32 = 512u32;
39752pub const STORE_NOTIFY_OK: u32 = 256u32;
39753pub const STORE_OLE_OK: u32 = 64u32;
39754pub const STORE_PUBLIC_FOLDERS: u32 = 16384u32;
39755pub const STORE_READONLY: u32 = 2u32;
39756pub const STORE_RESTRICTION_OK: u32 = 4096u32;
39757pub const STORE_RTF_OK: u32 = 2048u32;
39758pub const STORE_SEARCH_OK: u32 = 4u32;
39759pub const STORE_SORT_OK: u32 = 8192u32;
39760pub const STORE_SUBMIT_OK: u32 = 128u32;
39761pub const STORE_UNCOMPRESSED_RTF: u32 = 32768u32;
39762pub const STORE_UNICODE_OK: u32 = 262144u32;
39763pub const STREAM_APPEND: u32 = 4u32;
39764pub const ST_CLEAR_OOF_HIST: u32 = 2147483648u32;
39765pub const ST_DISABLED: u32 = 0u32;
39766pub const ST_ENABLED: u32 = 1u32;
39767pub const ST_ERROR: u32 = 2u32;
39768pub const ST_EXIT_LEVEL: u32 = 16u32;
39769pub const ST_KEEP_OOF_HIST: u32 = 8u32;
39770pub const ST_ONLY_WHEN_OOF: u32 = 4u32;
39771pub const ST_RULE_PARSE_ERROR: u32 = 64u32;
39772pub const ST_SKIP_IF_SCL_IS_SAFE: u32 = 32u32;
39773pub const SUBMITFLAG_LOCKED: u32 = 1u32;
39774pub const SUBMITFLAG_PREPROCESS: u32 = 2u32;
39775pub const SUCCESS_SUCCESS: u32 = 0u32;
39776pub const SUPPRESS_RECEIPT: u32 = 1u32;
39777pub const SUPPRESS_UI: u32 = 1u32;
39778pub const SUPRESS_NOTIFICATIONS_ON_MY_ACTIONS: u32 = 4096u32;
39779#[repr(C)]
39780#[derive(Clone, Copy, Debug, PartialEq)]
39781pub struct SWStringArray {
39782    pub cValues: u32,
39783    pub lppszW: *mut windows_core::PWSTR,
39784}
39785impl Default for SWStringArray {
39786    fn default() -> Self {
39787        unsafe { core::mem::zeroed() }
39788    }
39789}
39790pub const SYNC_ASSOCIATED: u32 = 16u32;
39791pub const SYNC_BEST_BODY: u32 = 8192u32;
39792pub const SYNC_CATCHUP: u32 = 1024u32;
39793pub const SYNC_DEFER_CONFIG: u32 = 262144u32;
39794pub const SYNC_EXPIRY: u32 = 2u32;
39795pub const SYNC_FORCE_UNICODE: u32 = 262144u32;
39796pub const SYNC_FXRECOVERMODE: u32 = 65536u32;
39797pub const SYNC_IGNORE_SPECIFIED_ON_ASSOCIATED: u32 = 16384u32;
39798pub const SYNC_LIMITED_IMESSAGE: u32 = 512u32;
39799pub const SYNC_MSG_SELECTIVE: u32 = 4096u32;
39800pub const SYNC_NEW_MESSAGE: u32 = 2048u32;
39801pub const SYNC_NORMAL: u32 = 32u32;
39802pub const SYNC_NO_CONFLICTS: u32 = 64u32;
39803pub const SYNC_NO_DELETIONS: u32 = 2u32;
39804pub const SYNC_NO_FOREIGN_KEYS: u32 = 256u32;
39805pub const SYNC_NO_SOFT_DELETIONS: u32 = 4u32;
39806pub const SYNC_ONLY_SPECIFIED_PROPS: u32 = 128u32;
39807pub const SYNC_PROGRESS_MODE: u32 = 32768u32;
39808pub const SYNC_READ: u32 = 1u32;
39809pub const SYNC_READ_STATE: u32 = 8u32;
39810pub const SYNC_SOFT_DELETE: u32 = 1u32;
39811pub const SYNC_UNICODE: u32 = 1u32;
39812pub const SZ_HPC_V1: windows_core::PCSTR = windows_core::s!("Software\\Microsoft\\Pegasus");
39813pub const SZ_HPC_V1_0: windows_core::PCSTR = windows_core::s!("InstalledDir");
39814pub const SZ_HPC_V1_MAJOR: windows_core::PCSTR = windows_core::s!("MajorVersion");
39815pub const SZ_HPC_V1_MINOR: windows_core::PCSTR = windows_core::s!("MinorVersion");
39816pub const SZ_HPC_V2: windows_core::PCSTR =
39817    windows_core::s!("Software\\Microsoft\\Windows CE Services");
39818pub const SZ_HPC_V2_MAJOR: windows_core::PCSTR = windows_core::s!("MajorVersion");
39819pub const SZ_HPC_V2_MINOR: windows_core::PCSTR = windows_core::s!("MinorVersion");
39820pub const SZ_NO_OST: windows_core::PCSTR = windows_core::s!("NoOST");
39821pub const SZ_OUTL_OST_OPTIONS: windows_core::PCSTR =
39822    windows_core::s!("Software\\Microsoft\\Office\\8.0\\Outlook\\OST");
39823pub const TABLE_CHANGED: u32 = 1u32;
39824pub const TABLE_ERROR: u32 = 2u32;
39825#[repr(C)]
39826#[derive(Clone, Copy)]
39827pub struct TABLE_NOTIFICATION {
39828    pub ulTableEvent: u32,
39829    pub hResult: windows_core::HRESULT,
39830    pub propIndex: SPropValue,
39831    pub propPrior: SPropValue,
39832    pub row: SRow,
39833    pub ulPad: u32,
39834}
39835impl Default for TABLE_NOTIFICATION {
39836    fn default() -> Self {
39837        unsafe { core::mem::zeroed() }
39838    }
39839}
39840pub const TABLE_RELOAD: u32 = 9u32;
39841pub const TABLE_RESTRICT_DONE: u32 = 7u32;
39842pub const TABLE_ROW_ADDED: u32 = 3u32;
39843pub const TABLE_ROW_DELETED: u32 = 4u32;
39844pub const TABLE_ROW_MODIFIED: u32 = 5u32;
39845pub const TABLE_SETCOL_DONE: u32 = 8u32;
39846pub const TABLE_SORT_ASCEND: u32 = 0u32;
39847pub const TABLE_SORT_CATEG_MAX: u32 = 4u32;
39848pub const TABLE_SORT_CATEG_MIN: u32 = 8u32;
39849pub const TABLE_SORT_COMBINE: u32 = 2u32;
39850pub const TABLE_SORT_DESCEND: u32 = 1u32;
39851pub const TABLE_SORT_DONE: u32 = 6u32;
39852pub const TAD_ALL_ROWS: u32 = 1u32;
39853pub const TBLSTAT_COMPLETE: u32 = 0u32;
39854pub const TBLSTAT_QCHANGED: u32 = 7u32;
39855pub const TBLSTAT_RESTRICTING: u32 = 14u32;
39856pub const TBLSTAT_RESTRICT_ERROR: u32 = 15u32;
39857pub const TBLSTAT_SETCOL_ERROR: u32 = 13u32;
39858pub const TBLSTAT_SETTING_COLS: u32 = 11u32;
39859pub const TBLSTAT_SORTING: u32 = 9u32;
39860pub const TBLSTAT_SORT_ERROR: u32 = 10u32;
39861pub const TBLTYPE_DYNAMIC: u32 = 2u32;
39862pub const TBLTYPE_KEYSET: u32 = 1u32;
39863pub const TBLTYPE_SNAPSHOT: u32 = 0u32;
39864pub const TBL_ALL_COLUMNS: u32 = 1u32;
39865pub const TBL_ASYNC: u32 = 1u32;
39866pub const TBL_BATCH: u32 = 2u32;
39867pub const TBL_COLLAPSED_CATEGORY: u32 = 4u32;
39868pub const TBL_EMPTY_CATEGORY: u32 = 2u32;
39869pub const TBL_EXPANDED_CATEGORY: u32 = 3u32;
39870pub const TBL_LEAF_ROW: u32 = 1u32;
39871pub const TBL_NOADVANCE: u32 = 1u32;
39872pub const TBL_NOWAIT: u32 = 1u32;
39873pub const TIME_ZONE_ID_DAYLIGHT: u32 = 2u32;
39874pub const TIME_ZONE_ID_STANDARD: u32 = 1u32;
39875pub const TIME_ZONE_ID_UNKNOWN: u32 = 0u32;
39876#[repr(C)]
39877#[derive(Clone, Copy, Debug, PartialEq)]
39878pub struct TRACEENTRY {
39879    pub lAction: i32,
39880    pub ftArrivalTime: windows::Win32::Foundation::FILETIME,
39881    pub ftDeferredTime: windows::Win32::Foundation::FILETIME,
39882    pub rgchADMDName: [i8; 20],
39883    pub rgchCountryName: [i8; 4],
39884    pub rgchPRMDId: [i8; 20],
39885    pub rgchAttADMDName: [i8; 20],
39886    pub rgchAttCountryName: [i8; 4],
39887    pub rgchAttPRMDId: [i8; 19],
39888    pub bAdditionalActions: u8,
39889}
39890impl Default for TRACEENTRY {
39891    fn default() -> Self {
39892        unsafe { core::mem::zeroed() }
39893    }
39894}
39895#[repr(C)]
39896#[derive(Clone, Copy, Debug, PartialEq)]
39897pub struct TRACEINFO {
39898    pub cEntries: u32,
39899    pub rgtraceentry: [TRACEENTRY; 1],
39900}
39901impl Default for TRACEINFO {
39902    fn default() -> Self {
39903        unsafe { core::mem::zeroed() }
39904    }
39905}
39906pub const TRANSFER_COPYFOLDER: u32 = 4u32;
39907pub const TRANSFER_COPYMESSAGES: u32 = 3u32;
39908pub const TRANSFER_COPYPROPS: u32 = 2u32;
39909pub const TRANSFER_COPYTO: u32 = 1u32;
39910#[repr(C)]
39911#[derive(Clone, Copy, Debug, Default, PartialEq)]
39912pub struct TRANSMITINFO {
39913    pub ietCurrent: ENCODINGTYPE,
39914    pub ietXmitMime: ENCODINGTYPE,
39915    pub ietXmit822: ENCODINGTYPE,
39916    pub cbLongestLine: u32,
39917    pub cExtended: u32,
39918    pub ulPercentExt: u32,
39919    pub cbSize: u32,
39920    pub cLines: u32,
39921}
39922pub const TRANSPORT_DOWNLOAD: u32 = 1u32;
39923pub const TRANSPORT_UPLOAD: u32 = 2u32;
39924pub const TRUNCATE_EXISTING: u32 = 5u32;
39925pub const TXT_HTML: u32 = 2u32;
39926pub const TXT_PLAIN: u32 = 1u32;
39927pub const TYPEDID_MASK: u32 = 65535u32;
39928pub const UI_CURRENT_PROVIDER_FIRST: u32 = 4u32;
39929pub const UI_READONLY: u32 = 1u32;
39930pub const UI_SERVICE: u32 = 2u32;
39931pub const UNLOCK_BLOCKING_MID_LOCK_ALL: u32 = 4u32;
39932pub const UNLOCK_BLOCKING_MID_LOCK_LOGON_ONLY: u32 = 8u32;
39933pub const UNLOCK_CHECKIN_ABORT: u32 = 1u32;
39934pub const UNLOCK_CHECKIN_KEEP_LOCKED: u32 = 2u32;
39935pub const UNLOCK_NULL_RESOURCE: u32 = 16u32;
39936pub const UNLOCK_WRITE_THROUGH_GOP: u32 = 65536u32;
39937pub const URL_ATTACH_GENERATE_CID: u32 = 2u32;
39938pub const URL_ATTACH_INTO_MIXED: u32 = 1u32;
39939pub const URL_ATTACH_SET_CNTTYPE: u32 = 4u32;
39940pub const URL_RESOLVE_RENDERED: u32 = 1u32;
39941pub const URL_RESULVE_NO_BASE: u32 = 2u32;
39942pub const VCDIR_DELETE: u32 = 65536u32;
39943pub const VCDIR_MOVE: u32 = 262144u32;
39944pub const VCDIR_NEXT: u32 = 1u32;
39945pub const VCDIR_PREV: u32 = 2u32;
39946pub const VCSTATUS_COPY: u32 = 131072u32;
39947pub const VCSTATUS_DELETE: u32 = 65536u32;
39948pub const VCSTATUS_DELETE_IS_MOVE: u32 = 1048576u32;
39949pub const VCSTATUS_INTERACTIVE: u32 = 8u32;
39950pub const VCSTATUS_MODAL: u32 = 4u32;
39951pub const VCSTATUS_MOVE: u32 = 262144u32;
39952pub const VCSTATUS_NEW_MESSAGE: u32 = 4194304u32;
39953pub const VCSTATUS_NEXT: u32 = 1u32;
39954pub const VCSTATUS_PREV: u32 = 2u32;
39955pub const VCSTATUS_READONLY: u32 = 16u32;
39956pub const VCSTATUS_SAVE: u32 = 2097152u32;
39957pub const VCSTATUS_SUBMIT: u32 = 524288u32;
39958#[repr(C)]
39959#[derive(Clone, Copy, Debug, Default, PartialEq)]
39960pub struct WEBPAGEOPTIONS {
39961    pub cbSize: u32,
39962    pub dwFlags: u32,
39963    pub dwDelay: u32,
39964    pub wchQuote: u16,
39965}
39966pub type WIZARDENTRY = Option<
39967    unsafe extern "system" fn(
39968        hproviderdllinstance: windows::Win32::Foundation::HINSTANCE,
39969        lppcsresourcename: *mut *mut i8,
39970        lppdlgproc: *mut windows::Win32::UI::WindowsAndMessaging::DLGPROC,
39971        lpmapiprop: windows_core::Ref<IMAPIProp>,
39972        lpmapisupportobject: *mut core::ffi::c_void,
39973    ) -> u32,
39974>;
39975pub const WIZ_NEXT: u32 = 1035u32;
39976pub const WIZ_PREV: u32 = 1036u32;
39977pub const WIZ_QUERYNUMPAGES: u32 = 1034u32;
39978pub const WPF_ATTACHLINKS: u32 = 8u32;
39979pub const WPF_AUTOINLINE: u32 = 2u32;
39980pub const WPF_HTML: u32 = 1u32;
39981pub const WPF_IMAGESONLY: u32 = 16u32;
39982pub const WPF_NOMETACHARSET: u32 = 32u32;
39983pub const WPF_SLIDESHOW: u32 = 4u32;
39984pub const WSZ_URL_FLAT_FOLDER_SPACE: windows_core::PCWSTR = windows_core::w!("/-FlatUrlSpace-/");
39985pub const X500: CERTNAMETYPE = CERTNAMETYPE(2i32);
39986#[repr(C)]
39987#[derive(Clone, Copy, Debug, PartialEq)]
39988pub struct X509CERTRESULT {
39989    pub cEntries: u32,
39990    pub rgcs: *mut CERTSTATE,
39991    pub rgpCert: *mut *mut windows::Win32::Security::Cryptography::CERT_CONTEXT,
39992}
39993impl Default for X509CERTRESULT {
39994    fn default() -> Self {
39995        unsafe { core::mem::zeroed() }
39996    }
39997}
39998pub type XPPROVIDERINIT = Option<
39999    unsafe extern "system" fn(
40000        hinstance: windows::Win32::Foundation::HINSTANCE,
40001        lpmalloc: windows_core::Ref<windows::Win32::System::Com::IMalloc>,
40002        lpallocatebuffer: LPALLOCATEBUFFER,
40003        lpallocatemore: LPALLOCATEMORE,
40004        lpfreebuffer: LPFREEBUFFER,
40005        ulflags: u32,
40006        ulmapiver: u32,
40007        lpulproviderver: *mut u32,
40008        lppxpprovider: windows_core::OutRef<IXPProvider>,
40009    ) -> windows_core::HRESULT,
40010>;
40011#[repr(C)]
40012#[derive(Clone, Copy)]
40013pub union __UPV {
40014    pub i: i16,
40015    pub l: i32,
40016    pub ul: u32,
40017    pub lpv: *mut core::ffi::c_void,
40018    pub flt: f32,
40019    pub dbl: f64,
40020    pub b: u16,
40021    pub cur: windows::Win32::System::Com::CY,
40022    pub at: f64,
40023    pub ft: windows::Win32::Foundation::FILETIME,
40024    pub lpszA: windows_core::PSTR,
40025    pub bin: SBinary,
40026    pub lpszW: windows_core::PWSTR,
40027    pub lpguid: *mut windows_core::GUID,
40028    pub li: i64,
40029    pub MVi: SShortArray,
40030    pub MVl: SLongArray,
40031    pub MVflt: SRealArray,
40032    pub MVdbl: SDoubleArray,
40033    pub MVcur: SCurrencyArray,
40034    pub MVat: SAppTimeArray,
40035    pub MVft: SDateTimeArray,
40036    pub MVbin: SBinaryArray,
40037    pub MVszA: SLPSTRArray,
40038    pub MVszW: SWStringArray,
40039    pub MVguid: SGuidArray,
40040    pub MVli: SLargeIntegerArray,
40041    pub err: i32,
40042    pub x: i32,
40043}
40044impl Default for __UPV {
40045    fn default() -> Self {
40046        unsafe { core::mem::zeroed() }
40047    }
40048}
40049pub const cchProfileNameMax: u32 = 64u32;
40050pub const cchProfilePassMax: u32 = 64u32;
40051pub const cwchUrlFlatFolderSpace: u32 = 16u32;
40052pub const fMapiUnicode: u32 = 2147483648u32;
40053pub const fVersionedDelete: u32 = 1u32;
40054pub const fVersionedMoveIn: u32 = 16u32;
40055pub const fVersionedMoveOut: u32 = 32u32;
40056pub const fVersionedPin: u32 = 4u32;
40057pub const fVersionedUnDelete: u32 = 2u32;
40058pub const fVersionedUnPin: u32 = 8u32;
40059pub const fnevCriticalError: u32 = 1u32;
40060pub const fnevExtended: u32 = 2147483648u32;
40061pub const fnevNewMail: u32 = 2u32;
40062pub const fnevObjectCopied: u32 = 64u32;
40063pub const fnevObjectCreated: u32 = 4u32;
40064pub const fnevObjectDeleted: u32 = 8u32;
40065pub const fnevObjectModified: u32 = 16u32;
40066pub const fnevObjectMoved: u32 = 32u32;
40067pub const fnevReservedForMapi: u32 = 1073741824u32;
40068pub const fnevSearchComplete: u32 = 128u32;
40069pub const fnevStatusObjectModified: u32 = 512u32;
40070pub const fnevTableModified: u32 = 256u32;
40071pub const frightsContact: i32 = 512i32;
40072pub const frightsCreate: i32 = 2i32;
40073pub const frightsCreateSubfolder: i32 = 128i32;
40074pub const frightsDeleteAny: i32 = 64i32;
40075pub const frightsDeleteOwned: i32 = 16i32;
40076pub const frightsEditAny: i32 = 32i32;
40077pub const frightsEditOwned: i32 = 8i32;
40078pub const frightsFreeBusyDetailed: i32 = 4096i32;
40079pub const frightsFreeBusySimple: i32 = 2048i32;
40080pub const frightsOwner: i32 = 256i32;
40081pub const frightsReadAny: i32 = 1i32;
40082pub const frightsVisible: i32 = 1024i32;
40083pub const fsdpermUserMailboxOwner: u32 = 1u32;
40084pub const fsdpermUserPrimaryUser: u32 = 4u32;
40085pub const fsdpermUserSendAs: u32 = 2u32;
40086pub const fsdrightAppendMsg: u32 = 4u32;
40087pub const fsdrightContact: u32 = 32768u32;
40088pub const fsdrightCreateContainer: u32 = 4u32;
40089pub const fsdrightCreateItem: u32 = 2u32;
40090pub const fsdrightDeleteOwnItem: u32 = 1024u32;
40091pub const fsdrightExecute: u32 = 32u32;
40092pub const fsdrightFreeBusyDetailed: u32 = 2u32;
40093pub const fsdrightFreeBusySimple: u32 = 1u32;
40094pub const fsdrightListContents: u32 = 1u32;
40095pub const fsdrightOwner: u32 = 16384u32;
40096pub const fsdrightReadAttributes: u32 = 128u32;
40097pub const fsdrightReadBody: u32 = 1u32;
40098pub const fsdrightReadProperty: u32 = 8u32;
40099pub const fsdrightReserved1: u32 = 64u32;
40100pub const fsdrightViewItem: u32 = 2048u32;
40101pub const fsdrightWriteAttributes: u32 = 256u32;
40102pub const fsdrightWriteBody: u32 = 2u32;
40103pub const fsdrightWriteOwnProperty: u32 = 512u32;
40104pub const fsdrightWriteProperty: u32 = 16u32;
40105pub const hrSuccess: u32 = 0u32;
40106pub const ichOpMapForward: u32 = 4u32;
40107pub const ichOpMapOpen: u32 = 1u32;
40108pub const ichOpMapPrint: u32 = 5u32;
40109pub const ichOpMapReplyToAll: u32 = 3u32;
40110pub const ichOpMapReplyToFolder: u32 = 8u32;
40111pub const ichOpMapReplyToSender: u32 = 2u32;
40112pub const ichOpMapReservedCompose: u32 = 0u32;
40113pub const ichOpMapReservedDelivery: u32 = 7u32;
40114pub const ichOpMapSaveAs: u32 = 6u32;
40115pub const lidOpMap: u32 = 1u32;
40116pub const pbExchangeProviderDelegateGuid: windows_core::PCSTR =
40117    windows_core::s!("\u{9e}\u{b4}w\u{0}t\u{e4}\u{11}\u{ce}\u{8c}^\u{0}\u{aa}\u{0}BT\u{e2}");
40118pub const pbExchangeProviderLocalStoreGuid: windows_core::PCSTR =
40119    windows_core::s!("-\u{e5}k\u{a1}dn\u{11}\u{d2}\u{8d}N\u{0}\u{c0}O\u{ae}#q");
40120pub const pbExchangeProviderPersistStoreGuid: windows_core::PCSTR =
40121    windows_core::s!("\u{98}\u{a2}=gb\u{cf}M4\u{82}y\u{db}\u{fa}jP\u{8b}1");
40122pub const pbExchangeProviderPrimaryUserGuid: windows_core::PCSTR =
40123    windows_core::s!("T\u{94}\u{a1}\u{c0})\u{7f}\u{10}\u{1b}\u{a5}\u{87}\u{8}\u{0}+*%\u{17}");
40124pub const pbExchangeProviderPublicGuid: windows_core::PCSTR =
40125    windows_core::s!("x\u{b2}\u{fa}p\u{af}\u{f7}\u{11}\u{cd}\u{9b}\u{c8}\u{0}\u{aa}\u{0}/\u{c4}Z");
40126pub const pbExchangeProviderXportGuid: windows_core::PCSTR = windows_core::s!(
40127    "\u{a9}\u{6}@\u{e0}\u{d6}\u{93}\u{11}\u{cd}\u{af}\u{95}\u{0}\u{aa}\u{0}J5\u{c3}"
40128);
40129pub const pbGlobalProfileSectionGuid: windows_core::PCSTR = windows_core::s!(
40130    "\u{13}\u{db}\u{b0}\u{c8}\u{aa}\u{5}\u{10}\u{1a}\u{9b}\u{b0}\u{0}\u{aa}\u{0}/\u{c4}Z"
40131);
40132pub const pidAdminMin: u32 = 26256u32;
40133pub const pidAttachReadOnlyMin: u32 = 26220u32;
40134pub const pidExchangeNonXmitReservedMin: u32 = 26080u32;
40135pub const pidExchangeXmitReservedMin: u32 = 16352u32;
40136pub const pidFolderMin: u32 = 26168u32;
40137pub const pidLISErrorCodeMax: u32 = 26032u32;
40138pub const pidLISErrorCodeMin: u32 = 26026u32;
40139pub const pidLISInterfacePropMax: u32 = 26080u32;
40140pub const pidLISInterfacePropMin: u32 = 26064u32;
40141pub const pidLISMsgFolderPropMax: u32 = 26048u32;
40142pub const pidLISMsgFolderPropMin: u32 = 26016u32;
40143pub const pidLocalStoreInternalMax: u32 = 26048u32;
40144pub const pidLocalStoreInternalMin: u32 = 25856u32;
40145pub const pidMAPIMin: u32 = 12288u32;
40146pub const pidMessageReadOnlyMin: u32 = 26176u32;
40147pub const pidMessageWriteableMin: u32 = 26200u32;
40148pub const pidProfileMin: u32 = 26112u32;
40149pub const pidRenMsgFldMin: u32 = 4224u32;
40150pub const pidSpecialMin: u32 = 26224u32;
40151pub const pidStoreMin: u32 = 26136u32;
40152pub const pidStoreNonTransMin: u32 = 3648u32;
40153pub const ptagLISErrorCode: u32 = 1705639939u32;
40154pub const ptagLISErrorItemType: u32 = 1705705475u32;
40155pub const ptagLISErrorItemUrl: u32 = 1705836575u32;
40156pub const ptagLISErrorLogUrl: u32 = 1701838879u32;
40157pub const ptagLISErrorOperation: u32 = 1705771011u32;
40158pub const ptagLISErrorSourceUrl: u32 = 1705902111u32;
40159pub const ptagLISExtendedErrorinfo: u32 = 1706033155u32;
40160pub const ptagLISModifiedPropertyList: u32 = 1705967647u32;
40161pub const ptagLISNewMail: u32 = 1707409419u32;
40162pub const ptagLISSubfolders: u32 = 1694498827u32;
40163pub const ptagLISUnreadCount: u32 = 1694564355u32;
40164pub const ptagSql: u32 = 1708130335u32;
40165pub const ptagSqlFrom: u32 = 1708261407u32;
40166pub const ptagSqlGroup: u32 = 1708458015u32;
40167pub const ptagSqlOrder: u32 = 1708392479u32;
40168pub const ptagSqlSelect: u32 = 1708195871u32;
40169pub const ptagSqlWhere: u32 = 1708326943u32;
40170pub const rightsAll: i32 = 1531i32;
40171pub const rightsNone: u32 = 0u32;
40172pub const rightsReadOnly: i32 = 1i32;
40173pub const sdrightsNone: u32 = 0u32;
40174pub const szDamMsgClass: windows_core::PCSTR =
40175    windows_core::s!("IPC.Microsoft Exchange 4.0.Deferred Action");
40176pub const szDemMsgClass: windows_core::PCSTR =
40177    windows_core::s!("IPC.Microsoft Exchange 4.0.Deferred Error");
40178pub const szExRuleMsgClass: windows_core::PCSTR = windows_core::s!("IPM.ExtendedRule.Message");
40179pub const szHrDispatchNotifications: windows_core::PCSTR =
40180    windows_core::s!("HrDispatchNotifications");
40181pub const szMAPIDLLSuffix: windows_core::PCSTR = windows_core::s!("32");
40182pub const szMAPINotificationMsg: windows_core::PCSTR =
40183    windows_core::s!("MAPI Notify window message");
40184pub const szOID_Microsoft_Encryption_Cert: windows_core::PCSTR =
40185    windows_core::s!("1.3.6.1.4.1.311.16.4");
40186pub const szOofTemplateMsgClassPrefix: windows_core::PCSTR =
40187    windows_core::s!("IPM.Note.Rules.OofTemplate.");
40188pub const szProviderModeratorRule: windows_core::PCSTR = windows_core::s!("MSFT:MR");
40189pub const szReplyTemplateMsgClassPrefix: windows_core::PCSTR =
40190    windows_core::s!("IPM.Note.Rules.ReplyTemplate.");
40191pub const szScCreateConversationIndex: windows_core::PCSTR =
40192    windows_core::s!("ScCreateConversationIndex");
40193pub const ulHierChanged: u32 = 1u32;
40194pub const wszExRuleMsgClass: windows_core::PCWSTR = windows_core::w!("IPM.ExtendedRule.Message");
40195pub const wszProviderModeratorRule: windows_core::PCWSTR = windows_core::w!("MSFT:MR");